right up left contents index
Précédent: "Exemples d'appels"
Suivant: "Deuxième exemple"
Haut: "Exemples d'appels"

Premier exemple

        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
right up left contents index
Précédent: "Exemples d'appels"
Suivant: "Deuxième exemple"
Haut: "Exemples d'appels"