Subroutines modifiables

Toutes les subroutines suivantes sont obligatoires, même si vous ne vous en servez pas, sinon le programme ne compilera pas. Pour les subroutines que vous n'utilisez pas, il suffit de mettre une commande error, qui s'affichera si vous cherchez à y accéder sur VisIt.

Les autres subroutines doivent être adaptées à votre code afin d'associer les bons tableaux aux bonnes variables.

 visitgetmesh

Cette subroutine permet de donner à VisIt le maillage, elle est donc particulièrement importante.

Pour un maillage 2D rectangulaire il suffit de donner le  nombre et  les vecteurs positions des noeuds suivant les différentes directions. Dans notre cas ces variables sont respectivement nx1 et ny1 pour les nombre et pnx et pny  pour les vecteurs position. Nous les avons placé dans le module m_type pour éviter de les appeler dans la subroutine.

integer function visitgetmesh(domain, name, lname)
     
      use m_type
      implicit none
      character*8 name
      integer     domain, lname
      include "visitfortransimV2interface.inc"

      integer h, x, y, err

      h = VISIT_INVALID_HANDLE
      if(visitstrcmp(name, lname, "mesh", 4).eq.0) then          
c Create a rect mesh here
        if(visitrectmeshalloc(h).eq.VISIT_OKAY) then
              err = visitvardataalloc(x)
              err = visitvardataalloc(y)
              err = visitvardatasetf(x,VISIT_OWNER_COPY, 1,
nx1, pnx)
              err = visitvardatasetf(y,VISIT_OWNER_COPY, 1,
ny1, pny)
              err = visitrectmeshsetcoordsxy(h, x, y)
          end if
      end if
      
      visitgetmesh = h

      
      end

 

visitgetvariable

Ici on associe la variable au tableau correspondant et à son nom. Pour nous le tableau est Temp et le nom de la variable est "Température". Comme pour la subroutine précédente les tableaux sont dans le module.

 

 integer function visitgetvariable(domain, name, lname)
      use m_type
      implicit none
      character*8 name
      integer     domain, lname, err
      include "visitfortransimV2interface.inc"
     
      integer h

      if(visitvardataalloc(h).eq.VISIT_OKAY) then
        if(visitstrcmp(name, lname, "
temperature", 11).eq.0) then
        err = visitvardatasetd(h, VISIT_OWNER_SIM, 1,
     .                         
nx1*ny1, Temp)
        endif
      endif

      visitgetvariable = h
      end

Le reste des subroutines n'a pas été utilisé dans notre programme, elles sont néanmoins obligatoires.  Les codes suivants permettent de faire tourner le programme. Toutefois si vous voulez utiliser une option supplémentaire, tel que l'ajout d'un matériau par exemple, vous devez modifier  la subroutine associée.

 

c---------------------------------------------------------------------------
c visitgetmixedvariable
c---------------------------------------------------------------------------
      integer function visitgetmixedvariable(domain, name, lname)
      implicit none
      character*8 name
      integer     domain, lname
      include "visitfortransimV2interface.inc"
      visitgetmixedvariable = VISIT_INVALID_HANDLE
      end

c---------------------------------------------------------------------------
c visitgetcurve
c---------------------------------------------------------------------------
      integer function visitgetcurve(name, lname)
      implicit none
      character*8 name
      integer     lname
      include "visitfortransimV2interface.inc"
      visitgetcurve = VISIT_INVALID_HANDLE
      end

c---------------------------------------------------------------------------
c visitgetdomainlist
c---------------------------------------------------------------------------
      integer function visitgetdomainlist(name, lname)
      implicit none
      character*8 name
      integer     lname
      include "visitfortransimV2interface.inc"
      visitgetdomainlist = VISIT_INVALID_HANDLE
      end

c---------------------------------------------------------------------------
c visitgetdomainbounds
c---------------------------------------------------------------------------
      integer function visitgetdomainbounds(name, lname)
      implicit none
      character*8 name
      integer     lname
      include "visitfortransimV2interface.inc"
      visitgetdomainbounds = VISIT_INVALID_HANDLE
      end

c---------------------------------------------------------------------------
c visitgetdomainnesting
c---------------------------------------------------------------------------
      integer function visitgetdomainnesting(name, lname)
      implicit none
      character*8 name
      integer     lname
      include "visitfortransimV2interface.inc"
      visitgetdomainnesting = VISIT_INVALID_HANDLE
      end

c---------------------------------------------------------------------------
c visitgetmaterial
c---------------------------------------------------------------------------
      integer function visitgetmaterial(domain, name, lname)
      implicit none
      character*8 name
      integer     domain, lname
      include "visitfortransimV2interface.inc"
      visitgetmaterial = VISIT_INVALID_HANDLE
      end