Précédent: "Exemples d'appels"
Suivant: "Deuxième exemple"
Haut: "Exemples d'appels"
program essai
c -----------------------------
character*80 sccsid
data sccsid/" %W% %G% P. Brochard"/
c -----------------------------
c exemple de trace de courbes + configuration pour Narcisse
c declarations
integer taille,nt
integer spxia
integer spxopen
parameter(nc=10)
parameter(nt=1000)
parameter(taille=100)
real x(nt)
real y(nt)
integer nx(nc)
integer i,j,k
integer pas
integer spx_file
integer spx_arg(taille)
integer n
integer taireelle
i = 0
j = 0
k = 0
n = 0
pas = 2*nt/nc/(nc+1)
spx_file = 0
c init tableau de configuration
taireelle = spxia(spx_arg,taille)
print*,'taireelle ',taireelle
c on remplit le tableau de configuration
if(n.lt.taireelle) then
call spxsai(spx_arg,n,'option_3d',127)
n = n + 1
endif
c le mot cle "calcul_socket" debranche (0) ou rebranche (1)
c le trace automatique effectue par Narcisse lors des appels
c SpxSetValues, SpxMonoCourbe, SpxMulCourbe, SpxNonStruc4d,
c SpxRect3d, SpxRect4d, SpxTetra3d, SpxTetra4d
if(n.lt.taireelle) then
call spxsai(spx_arg,n,'calcul_socket',0)
n = n + 1
endif
if(n.lt.taireelle) then
call spxsac(spx_arg,n,'titre_valeur_gauche','yyy')
n = n + 1
endif
c les tableaux sont remplis indices par indices ; les
c arguments sont :
c 1-> tableau dans lequel spxsa* range les elements
c de configuration
c 2-> indice du tableau ou spxsa* range les elements
c de configuration
c 3-> mot cle auquel on veut affecter une valeur
c 4-> valeur a mettre dans l'indice du tableau donne
c par le 4ieme argument
c 5-> indice
if(n.lt.taireelle) then
call spxsati(spx_arg,n,'texte_couleur',6,2)
endif
if(n.lt.taireelle) then
call spxsati(spx_arg,n,'texte_couleur',3,0)
endif
if(n.lt.taireelle) then
call spxsati(spx_arg,n,'texte_couleur',34,3)
n = n+1
endif
if(n.lt.taireelle) then
call spxsatr(spx_arg,n,'texte_pos_x',0.01,2)
n = n+1
endif
if(n.lt.taireelle) then
call spxsatc(spx_arg,n,'texte_valeur','essai texte',5)
endif
if(n.lt.taireelle) then
call spxsatc(spx_arg,n,'texte_valeur','essai texte2',3)
n = n+1
endif
c on ouvre un fichier (ici socket)
spx_file = spxopen(' ')
c on envoit la configuration dans le fichier ouvert (ici socket)
call spxsv(spx_file,spx_arg,n)
print*,'configuration envoyee'
c on genere nc courbes
do i=1,nc
nx(i) = pas*i
enddo
k = 1
do i=1,nc
do j=1,nx(i)
x(k) = (j-1)*(j-1) + 100*(i-1)
y(k) = j-1
k = k+1
enddo
enddo
c on envoit 1 courbe dans le fichier ouvert (ici socket)
call spx2moc(x,y,nx(1),spx_file)
c on nettoie le tableau de configuration
call spxpa(spx_arg,taille)
n = 0
c on le remplit a nouveau pour declencher le trace avec Narcisse
if(n.lt.taireelle) then
call spxsai(spx_arg,n,'calcul_socket',1)
n = n + 1
endif
c on envoit la configuration dans le fichier ouvert (ici socket)
call spxsv(spx_file,spx_arg,n)
c on envoit toutes les courbes dans le fichier ouvert (ici socket)
call spx2muc(x,y,nx,nc,spx_file)
c on synchronise (on attend que Narcisse ait fini pour garantir l'ordre
c de traitement par Narcisse)
call spxsync(spx_file)
c on ferme le fichier
call spxclose(spx_file)
c on nettoie le tableau de configuration
call spxpa(spx_arg,taille)
c on cherche une coordonnee de la courbe
call coord
c on rouvre un fichier (ici socket)
spx_file = spxopen(' ')
c on envoit 1 courbe dans le fichier ouvert (ici socket)
call spx2moc(x,y,nx(1),spx_file)
c on synchronise et on ferme le fichier
call spxsync(spx_file)
call spxclose(spx_file)
end
c ***********************************************************************
c coordonnees
c ***********************************************************************
subroutine coord
integer i
real x,y
integer spx_file
integer spcopen
i = 0
x = 0
y = 0
spx_file = spcopen(' ')
call spx2gc(x,y,spx_file)
print*,'coordonnees 2d',x,y
call spxgc(x,y,spx_file)
print*,'coordonnees',x,y
call spxsync(spx_file)
call spxclose(spx_file)
return
end
Précédent: "Exemples d'appels"
Suivant: "Deuxième exemple"
Haut: "Exemples d'appels"