* fichier : trainee_2d.dgibi 'OPTION' 'ECHO' 0 ; *BEGINPROCEDUR calcul ************************************************************************ * NOM : CALCUL * DESCRIPTION : * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 10/10/2006, version initiale * HISTORIQUE : v1, 10/10/2006, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' CALCUL ; 'ARGUMENT' tymesh*'ENTIER' ; 'ARGUMENT' irig*'ENTIER' ; 'ARGUMENT' iden*'FLOTTANT' ; 'ARGUMENT' debug/'LOGIQUE' ; * 'SI' ('NON' ('EXISTE' debug)) ; debug = FAUX ; 'FINSI' ; * 'DENS' iden ; * tabgeo = CMAIL Ar Az discg tymesh ; _mt = tabgeo . 'mt' . 'QUAF' ; 'SI' debug ; 'TRACER' _mt 'TITRE' titgeo ; 'FINSI' ; * * Solution exacte * mvit = tabgeo . 'mt' . discv ; mvitq = tabgeo . 'mt' . 'QUAF' ; cmvit = 'CONTOUR' (tabgeo . 'mt' . 'QUAI') ; solx = SOLEX mvit ; *'TRACER' vsolx mvit ; * * Conditions aux limites * mur = (tabgeo . 'cmt' . discv) ; muz = (tabgeo . 'sph' . discv) 'ET' (tabgeo . 'bot' . discv) 'ET' (tabgeo . 'inf' . discv) 'ET' (tabgeo . 'top' . discv) ; 'PROC' (('*' Ar 0.5) ('*' Az -1.)) ; *lpres = 'ELEM' mvclim 'APPUYE' 'LARGEMENT' ppres ; *mvclim = 'DIFF' mvclim lpres ; lpres = 'MANUEL' 'POI1' ppres ; 'SI' debug ; 'TRACER' muz 'TITR' 'Maillage clim' ; 'FINSI' ; mblo = 'ET' ('BLOQUE' 'UR' mur) ('BLOQUE' 'UZ' muz) ; fblo = 'DEPIMPOSE' mblo cclim ; * * Matrice de rigidité * mrig = GRIG _mt discg discv lvip lvid 1. ; 'SI' ('EGA' irig 1) ; mrigt = mrig ; 'FINSI' ; 'SI' ('EGA' irig 2) ; mrig2 = GRIG2 _mt discg discv lvip lvid 1. ; mrigt = mrig 'ET' mrig2 ; 'FINSI' ; 'SI' ('EGA' irig 3) ; mrig3 = GRIG3 _mt discg discv lvip lvid 1. ; mrigt = mrig 'ET' mrig3 ; 'FINSI' ; * * Matrice de contrainte div u = 0 * mbbt = GBBT2 _mt discg discv lvip lvid discp lpip lpid 1. ; * mtot = ('*' mrigt -1.) 'ET' mblo 'ET' ('*' mbbt -1.) ; ftot = fblo ; * * Post-traitement * 'SI' debug ; 'TRACER' (vsolx 'ET' vsola) mvitq ; 'FINSI' ; *'TRACER' vdsol mvitq ; * * Erreur L2 avec poids entre vitesse approchée * et interpolé de la vitesse exacte * mmass = GMASS _mt discg 'SCAL' discv 'SCAL' discv 1. ; mmasr = 'CHANGER' 'INCO' mmass ms mur ms mfr ; mmasz = 'CHANGER' 'INCO' mmass ms muz ms mfz ; mmas = mmasr 'ET' mmasz ; errli = 'MAXIMUM' dsol 'ABS' ; * * Force de traînée de Stokes * rft = 'RESULT' fts ; fstox = '*' PI 6.D0 ; errfst = '/' ('ABS' ('-' fstox fstoa)) fstox ; * 'SI' debug ; 'MESSAGE' ('CHAINE' 'Résultante de la force de trainee =' fstoa) ; * 'LISTE' rft ; 'MESSAGE' ('CHAINE' 'Force de Stokes = ' fstox) ; 'MESSAGE' ('CHAINE' 'Err rel. trainee = ' errfst) ; 'MESSAGE' ('CHAINE' 'Erreur L2 = ' errl2) ; 'FINSI' ; * 'RESPRO' errl2 errli errfst ; * * End of procedure file CALCUL * 'FINPROC' ; *ENDPROCEDUR calcul *BEGINPROCEDUR cmail ************************************************************************ * NOM : CMAIL * DESCRIPTION : Maillages pour le cas-test Stokes * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 11/04/2006, version initiale * HISTORIQUE : v1, 11/04/2006, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' CMAIL ; 'ARGUMENT' Ar*'FLOTTANT' ; 'ARGUMENT' Az*'FLOTTANT' ; 'ARGUMENT' tymesh*'ENTIER' ; * 'SI' ('EGA' tymesh 1) ; ell = 'TRI3' ; elq = 'TRI6' ; 'FINSI' ; 'SI' ('OU' ('EGA' tymesh 2) ('EGA' tymesh 3)) ; ell = 'QUA4' ; elq = 'QUA8' ; 'FINSI' ; disq = 'OU' ('EGA' discg 'QUAF') ('EGA' discg 'QUAD') ; 'OPTION' 'ELEM' elq ; * * Points * pA = 0. ('*' Az -1.) ; pB = Ar ('*' Az -1.) ; pC = Ar Az ; pD = 0. Az ; pE = 0. 1. ; pF = 1. 0. ; pG = 0. -1. ; p0 = 0. 0. ; * Lignes 'SI' ('OU' ('EGA' tymesh 1) ('EGA' tymesh 3)) ; bot = 'DROIT' pA pB ; inf = 'DROIT' pB pC ; top = 'DROIT' pC pD ; axt = 'DROIT' pD pE ; 'SI' ('NON' disq) ; 'OPTION' 'ELEM' ell ; sph = 'CHANGER' sph 'QUADRATIQUE' ; 'OPTION' 'ELEM' elq ; 'SINON' ; 'FINSI' ; axb = 'DROIT' pG pA ; axe = axt 'ET' axb ; cmt = bot 'ET' inf 'ET' top 'ET' axt 'ET' sph 'ET' axb ; * Surface mt = 'SURFACE' cmt ; 'FINSI' ; 'SI' ('EGA' tymesh 2) ; 'SI' ('NON' disq) ; 'OPTION' 'ELEM' ell ; bot = 'DROIT' pA pB ; inf = 'DROIT' pB pC ; top = 'DROIT' pC pD ; ext = bot 'ET' inf 'ET' top ; * 'TRACER' sph 'TITRE' 'Lineaire' 'NOEU' ; sph = 'CHANGER' sph 'QUADRATIQUE' ; bot = 'CHANGER' bot 'QUADRATIQUE' ; top = 'CHANGER' top 'QUADRATIQUE' ; inf = 'CHANGER' inf 'QUADRATIQUE' ; ext = bot 'ET' inf 'ET' top ; * 'TRACER' sph 'TITRE' 'Quadratique' 'NOEU' ; 'OPTION' 'ELEM' elq ; 'SINON' ; bot = 'DROIT' pA pB ; inf = 'DROIT' pB pC ; top = 'DROIT' pC pD ; ext = bot 'ET' inf 'ET' top ; 'FINSI' ; * Surface 'OPTION' 'ELEM' elq ; mt = 'REGLER' sph ext ; sph = 'INVERSE' sph ; cmt = 'CONTOUR' mt ; 'FINSI' ; _mt = 'CHANGER' mt 'QUAF' ; * tabgeo = 'TABLE' ; tabgeo . 'mt' = 'TABLE' ; tabgeo . 'mt' . 'QUAF' = _mt ; 'SI' ('ET' q9 t6) ; 'SINON' ; 'SI' t6 ; tabgeo . 'mt' . 'QUAD' = mt ; 'FINSI' ; 'SI' q9 ; tabgeo . 'mt' . 'QUAD' = _mt ; 'FINSI' ; 'FINSI' ; tabgeo . 'mt' . 'QUAI' = mt ; tabgeo . 'mt' . 'LINM' = 'DOMA' ('MODELISER' _mt 'NAVIER_STOKES' 'QUAF') 'CENTRE' ; tabgeo . 'mt' . 'LINE' = 'CHANGER' mt 'LINEAIRE' ; tabgeo . 'mt' . 'LINC' = 'DOMA' tabgeo . 'mt' . 'CSTE' = tabgeo . 'mt' . 'LINM' ; tabgeo . 'bot' = 'TABLE' ; tabgeo . 'bot' . 'QUAF' = bot ; tabgeo . 'bot' . 'QUAD' = bot ; tabgeo . 'bot' . 'QUAI' = bot ; tabgeo . 'bot' . 'LINE' = 'CHANGER' bot 'LINEAIRE' ; tabgeo . 'bot' . 'LINC' = 'DOMA' ('MODELISER' bot 'NAVIER_STOKES' 'QUAF') 'CENTRE' ; tabgeo . 'inf' = 'TABLE' ; tabgeo . 'inf' . 'QUAF' = inf ; tabgeo . 'inf' . 'QUAD' = inf ; tabgeo . 'inf' . 'QUAI' = inf ; tabgeo . 'inf' . 'LINE' = 'CHANGER' inf 'LINEAIRE' ; tabgeo . 'inf' . 'LINC' = 'DOMA' ('MODELISER' inf 'NAVIER_STOKES' 'QUAF') 'CENTRE' ; tabgeo . 'top' = 'TABLE' ; tabgeo . 'top' . 'QUAF' = top ; tabgeo . 'top' . 'QUAD' = top ; tabgeo . 'top' . 'QUAI' = top ; tabgeo . 'top' . 'LINE' = 'CHANGER' top 'LINEAIRE' ; tabgeo . 'top' . 'LINC' = 'DOMA' ('MODELISER' top 'NAVIER_STOKES' 'QUAF') 'CENTRE' ; tabgeo . 'axe' = 'TABLE' ; tabgeo . 'axe' . 'QUAF' = axe ; tabgeo . 'axe' . 'QUAD' = axe ; tabgeo . 'axe' . 'QUAI' = axe ; tabgeo . 'axe' . 'LINE' = 'CHANGER' axe 'LINEAIRE' ; tabgeo . 'axe' . 'LINC' = 'DOMA' ('MODELISER' axe 'NAVIER_STOKES' 'QUAF') 'CENTRE' ; tabgeo . 'sph' = 'TABLE' ; tabgeo . 'sph' . 'QUAF' = sph ; tabgeo . 'sph' . 'QUAD' = sph ; tabgeo . 'sph' . 'QUAI' = sph ; tabgeo . 'sph' . 'LINE' = 'CHANGER' sph 'LINEAIRE' ; tabgeo . 'sph' . 'LINC' = 'DOMA' ('MODELISER' sph 'NAVIER_STOKES' 'QUAF') 'CENTRE' ; tabgeo . 'cmt' = 'TABLE' ; tabgeo . 'cmt' . 'QUAF' = cmt ; tabgeo . 'cmt' . 'QUAD' = cmt ; tabgeo . 'cmt' . 'QUAI' = cmt ; tabgeo . 'cmt' . 'LINE' = 'CHANGER' cmt 'LINEAIRE' ; tabgeo . 'cmt' . 'LINC' = 'DOMA' ('MODELISER' cmt 'NAVIER_STOKES' 'QUAF') 'CENTRE' ; 'RESPRO' tabgeo ; * * End of procedure file CMAIL * 'FINPROC' ; *ENDPROCEDUR cmail *BEGINPROCEDUR solex ************************************************************************ * NOM : SOLEX * DESCRIPTION : Solution exacte de l'équation de Stokes * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 04/10/2006, version initiale * HISTORIQUE : v1, 04/10/2006, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' SOLEX ; 'ARGUMENT' mail*'MAILLAGE' ; 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ; rho z = 'COORDONNEE' mail ; r = '**' ('+' ('**' rho 2) ('**' z 2)) 0.5 ; cphi = '/' z r ; sphi = '/' rho r ; unsr = 'INVERSE' r ; unsr3 = '**' unsr 3 ; vrho = cphi '*' sphi '*' ('-' ('*' unsr 0.75) ('*' unsr3 0.75)) ; vz = '+' ('*' ('**' cphi 2) ('-' ('*' unsr 1.5) ('*' unsr3 0.5))) ('*' ('**' sphi 2) ('+' ('*' unsr 0.75) ('*' unsr3 0.25))) ; 'FINSI' ; 'SI' ('EGA' vdim 3) ; x y z = 'COORDONNEE' mail ; r2 = ('**' x 2) '+' ('**' y 2) '+' ('**' z 2) ; rho2 = ('**' x 2) '+' ('**' y 2) ; r = '**' r2 0.5 ; unsr = 'INVERSE' r ; unsr2 = 'INVERSE' r2 ; unsr3 = '**' unsr 3 ; alpha = '-' ('*' unsr 1.5) ('*' unsr3 0.5) ; beta = '+' ('*' unsr 0.75) ('*' unsr3 0.25) ; amb = '-' alpha beta ; vx = amb '*' x '*' z '*' unsr2 ; vy = amb '*' y '*' z '*' unsr2 ; vz = ('+' (alpha '*' z '*' z) (beta '*' rho2)) '*' unsr2 ; 'FINSI' ; 'RESPRO' solv ; * * End of procedure file SOLEX * 'FINPROC' ; *ENDPROCEDUR solex *BEGINPROCEDUR gmass ************************************************************************ * NOM : GMASS * DESCRIPTION : Une matrice de masse * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v2, 14/03/2006, mise à jour NLIN évolué * VERSION : v1, 13/05/2004, version initiale * HISTORIQUE : v1, 13/05/2004, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' GMASS ; 'ARGUMENT' _mt*'MAILLAGE' ; 'ARGUMENT' _smt/'MAILLAGE' ; 'ARGUMENT' coef/'FLOTTANT' ; 'SI' ('NON' ('EXISTE' coef)) ; 'ARGUMENT' coef2/'CHPOINT ' ; 'SI' ('NON' ('EXISTE' coef2)) ; 'ERREUR' 'Il faut donner un coef FLOTTANT ou CHPOINT' ; 'SINON' ; coef = coef2 ; 'FINSI' ; 'SINON' ; discc = 'CSTE' ; 'FINSI' ; 'SI' ('NON' ('EXISTE' methgau)) ; methgau = 'GAU7' ; 'FINSI' ; 'ARGUMENT' chpop/'CHPOINT' ; 'ARGUMENT' chpod/'CHPOINT' ; * idim = 0 ; 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ; idim = 2 ; iaxi = FAUX ; 'FINSI' ; 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ; idim = 2 ; iaxi = VRAI ; 'FINSI' ; 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ; idim = 3 ; iaxi = FAUX ; 'FINSI' ; 'SI' ('EGA' vdim 1) ; idim = 1 ; iaxi = FAUX ; 'FINSI' ; 'SI' ('EGA' idim 0) ; 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ; 'FINSI' ; 'SI' iaxi ; dprmt = '*' ('COORDONNEE' 1 _mt) ('*' PI 2.D0) ; 'FINSI' ; numop = 1 ; numder = idim ; numvar = 1 ; numdat = 1 ; numcof = 1 ; * A . 'VAR' . 1 . 'NOMDDL' = mmt ; A . 'VAR' . 1 . 'DISC' = disct ; 'SI' ('EXISTE' chpop) ; A . 'VAR' . 1 . 'VALEUR' = chpop ; 'FINSI' ; A . 'DAT' . 1 . 'DISC' = discc ; A . 'DAT' . 1 . 'VALEUR' = coef ; A . 'COF' . 1 . 'COMPOR' = 'IDEN' ; * * 'SI' iaxi ; numdat = 1 ; numcof = 1 ; 'SINON' ; numdat = 0 ; numcof = 0 ; 'FINSI' ; B . 'VAR' . 1 . 'NOMDDL' = mmq ; B . 'VAR' . 1 . 'DISC' = discq ; 'SI' ('EXISTE' chpod) ; B . 'VAR' . 1 . 'VALEUR' = chpod ; 'FINSI' ; * 'SI' iaxi ; B . 'DAT' . 1 . 'DISC' = gdisc ; B . 'DAT' . 1 . 'VALEUR' = dprmt ; B . 'COF' . 1 . 'COMPOR' = 'IDEN' ; 'FINSI' ; 'SI' iaxi ; 'SINON' ; 'FINSI' ; * 'SI' ('EXISTE' _smt) ; 'SINON' ; 'FINSI' ; * 'RESPRO' mgmass ; 'FINPROC' ; * * End of procedure file GMASS * *ENDPROCEDUR gmass *BEGINPROCEDUR grig ************************************************************************ * NOM : GRIG * DESCRIPTION : Matrice de rigidité axisymétrique * sous forme (gradu . gradv) * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 13/05/2004, version initiale * HISTORIQUE : v1, 13/05/2004, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' GRIG ; 'ARGUMENT' _mt*'MAILLAGE' ; 'ARGUMENT' lvp*'LISTMOTS' ; 'ARGUMENT' lvd*'LISTMOTS' ; 'ARGUMENT' coef/'FLOTTANT' ; 'SI' ('NON' ('EXISTE' coef)) ; 'ARGUMENT' coef2/'CHPOINT ' ; 'SI' ('NON' ('EXISTE' coef2)) ; 'ERREUR' 'Il faut donner un coef FLOTTANT ou CHPOINT' ; 'SINON' ; coef = coef2 ; 'FINSI' ; 'SINON' ; discc = 'CSTE' ; 'FINSI' ; 'SI' ('NON' ('EXISTE' methgau)) ; methgau = 'GAU7' ; 'FINSI' ; 'ARGUMENT' chpop/'CHPOINT' ; 'ARGUMENT' chpod/'CHPOINT' ; * idim = 0 ; 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ; idim = 2 ; iaxi = FAUX ; 'FINSI' ; 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ; idim = 2 ; iaxi = VRAI ; 'FINSI' ; 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ; idim = 3 ; iaxi = FAUX ; 'FINSI' ; 'SI' ('EGA' vdim 1) ; idim = 1 ; iaxi = FAUX ; 'FINSI' ; 'SI' ('EGA' idim 0) ; 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ; 'FINSI' ; 'SI' iaxi ; rmt = 'COORDONNEE' 1 _mt ; deupi = ('*' PI 2.D0) ; 'FINSI' ; * Test bête... mincoef = 'MINIMUM' coef ; 'SINON' ; mincoef = coef ; 'FINSI' ; 'SI' ('<' mincoef 0.D0) ; 'ERREUR' 'Le coef (une viscosité) doit etre positive' ; 'FINSI' ; * 'SI' iaxi ; numop = 5 ; numder = idim ; numvar = 2 ; numdat = 2 ; numcof = 2 ; * 'REPETER' iidim idim ; lnom = 'EXTRAIRE' lvp &iidim ; A . 'VAR' . &iidim . 'DISC' = discv ; 'SI' ('EXISTE' chpop) ; 'FINSI' ; 'FIN' iidim ; * A . 'DAT' . 1 . 'DISC' = gdisc ; A . 'DAT' . 1 . 'VALEUR' = rmt ; A . 'DAT' . 2 . 'DISC' = discc ; A . 'DAT' . 2 . 'VALEUR' = coef ; A . 'COF' . 1 . 'COMPOR' = 'IDEN' ; A . 'COF' . 2 . 'COMPOR' = 'IDEN' ; * * numdat = 2 ; numcof = 2 ; * 'REPETER' iidim idim ; lnom = 'EXTRAIRE' lvd &iidim ; B . 'VAR' . &iidim . 'DISC' = discv ; 'SI' ('EXISTE' chpod) ; 'FINSI' ; 'FIN' iidim ; * B . 'DAT' . 1 . 'DISC' = gdisc ; B . 'DAT' . 1 . 'VALEUR' = rmt ; B . 'DAT' . 2 . 'DISC' = 'CSTE' ; B . 'DAT' . 2 . 'VALEUR' = deupi ; B . 'COF' . 1 . 'COMPOR' = 'IDEN' ; B . 'COF' . 2 . 'COMPOR' = 'IDEN' ; * 'SINON' ; numop = '**' idim 2 ; *! numop = idim ; numder = idim ; numvar = idim ; numdat = 1 ; numcof = 1 ; * 'REPETER' iidim idim ; lnom = 'EXTRAIRE' lvp &iidim ; A . 'VAR' . &iidim . 'DISC' = discv ; 'SI' ('EXISTE' chpop) ; 'FINSI' ; 'FIN' iidim ; * A . 'DAT' . 1 . 'DISC' = discc ; A . 'DAT' . 1 . 'VALEUR' = coef ; * A . 'COF' . 1 . 'COMPOR' = 'IDEN' ; * iop = 0 ; 'REPETER' iidim idim ; * 'REPETER' iidim 1 ; 'REPETER' jidim idim ; iop = '+' iop 1 ; 'FIN' jidim ; 'FIN' iidim ; * numdat = 0 ; numcof = 0 ; * 'REPETER' iidim idim ; lnom = 'EXTRAIRE' lvd &iidim ; B . 'VAR' . &iidim . 'DISC' = discv ; 'SI' ('EXISTE' chpod) ; 'FINSI' ; 'FIN' iidim ; * iop = 0 ; 'REPETER' iidim idim ; *! 'REPETER' iidim 1 ; 'REPETER' jidim idim ; iop = '+' iop 1 ; 'FIN' jidim ; 'FIN' iidim ; 'FINSI' ; * * Integration par parties mgrig = '*' mgrig -1.D0 ; * 'RESPRO' mgrig ; 'FINPROC' ; * * End of procedure file GRIG * *ENDPROCEDUR grig *BEGINPROCEDUR grig2 ************************************************************************ * NOM : GRIG2 * DESCRIPTION : Additif à la matrice de rigidité axisymétrique * de forme (tgradu . gradv) * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 13/05/2004, version initiale * HISTORIQUE : v1, 13/05/2004, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' GRIG2 ; 'ARGUMENT' _mt*'MAILLAGE' ; 'ARGUMENT' lvp*'LISTMOTS' ; 'ARGUMENT' lvd*'LISTMOTS' ; 'SI' ('NON' ('EXISTE' methgau)) ; methgau = 'GAU7' ; 'FINSI' ; * idim = 0 ; * 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ; * idim = 2 ; * iaxi = FAUX ; * 'FINSI' ; 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ; idim = 2 ; iaxi = VRAI ; 'FINSI' ; * 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ; * idim = 3 ; * iaxi = FAUX ; ** vcomp = 'MOTS' 'UX' 'UY' 'UZ' ; * 'FINSI' ; * 'SI' ('EGA' vdim 1) ; * idim = 1 ; * iaxi = FAUX ; * 'FINSI' ; 'SI' ('EGA' idim 0) ; 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ; 'FINSI' ; 'SI' iaxi ; rmt = 'COORDONNEE' 1 _mt ; deupi = ('*' PI 2.D0) ; 'FINSI' ; * numop = 5 ; numder = idim ; numvar = 2 ; numdat = 1 ; numcof = 1 ; * 'REPETER' iidim idim ; A . 'VAR' . &iidim . 'DISC' = discv ; 'FIN' iidim ; * A . 'DAT' . 1 . 'DISC' = gdisc ; A . 'DAT' . 1 . 'VALEUR' = rmt ; A . 'COF' . 1 . 'COMPOR' = 'IDEN' ; * * numdat = 2 ; numcof = 2 ; * 'REPETER' iidim idim ; B . 'VAR' . &iidim . 'DISC' = discv ; 'FIN' iidim ; * B . 'DAT' . 1 . 'DISC' = gdisc ; B . 'DAT' . 1 . 'VALEUR' = rmt ; B . 'DAT' . 2 . 'DISC' = 'CSTE' ; B . 'DAT' . 2 . 'VALEUR' = deupi ; B . 'COF' . 1 . 'COMPOR' = 'IDEN' ; B . 'COF' . 2 . 'COMPOR' = 'IDEN' ; * * * Integration par parties mgrig = '*' mgrig -1.D0 ; * 'RESPRO' mgrig ; 'FINPROC' ; * * End of procedure file GRIG2 * *ENDPROCEDUR grig2 *BEGINPROCEDUR grig3 ************************************************************************ * NOM : GRIG3 * DESCRIPTION : Additif à la matrice de rigidité axisymétrique * de forme (div u . div v) * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 13/05/2004, version initiale * HISTORIQUE : v1, 13/05/2004, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' GRIG3 ; 'ARGUMENT' _mt*'MAILLAGE' ; 'ARGUMENT' lvp*'LISTMOTS' ; 'ARGUMENT' lvd*'LISTMOTS' ; 'SI' ('NON' ('EXISTE' methgau)) ; methgau = 'GAU7' ; 'FINSI' ; * idim = 0 ; * 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ; * idim = 2 ; * iaxi = FAUX ; * 'FINSI' ; 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ; idim = 2 ; iaxi = VRAI ; 'FINSI' ; * 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ; * idim = 3 ; * iaxi = FAUX ; ** vcomp = 'MOTS' 'UX' 'UY' 'UZ' ; * 'FINSI' ; * 'SI' ('EGA' vdim 1) ; * idim = 1 ; * iaxi = FAUX ; * 'FINSI' ; 'SI' ('EGA' idim 0) ; 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ; 'FINSI' ; 'SI' iaxi ; rmt = 'COORDONNEE' 1 _mt ; deupi = ('*' PI 2.D0) ; 'FINSI' ; * numop = 1 ; numder = idim ; numvar = 2 ; numdat = 1 ; numcof = 1 ; * 'REPETER' iidim idim ; A . 'VAR' . &iidim . 'DISC' = discv ; 'FIN' iidim ; * A . 'DAT' . 1 . 'DISC' = gdisc ; A . 'DAT' . 1 . 'VALEUR' = rmt ; A . 'COF' . 1 . 'COMPOR' = 'IDEN' ; * * numdat = 2 ; numcof = 2 ; * 'REPETER' iidim idim ; B . 'VAR' . &iidim . 'DISC' = discv ; 'FIN' iidim ; * B . 'DAT' . 1 . 'DISC' = gdisc ; B . 'DAT' . 1 . 'VALEUR' = rmt ; B . 'DAT' . 2 . 'DISC' = 'CSTE' ; B . 'DAT' . 2 . 'VALEUR' = deupi ; B . 'COF' . 1 . 'COMPOR' = 'IDEN' ; B . 'COF' . 2 . 'COMPOR' = 'IDEN' ; * * * Integration par parties mgrig = '*' mgrig -1.D0 ; * 'RESPRO' mgrig ; 'FINPROC' ; * * End of procedure file GRIG3 * *ENDPROCEDUR grig3 *BEGINPROCEDUR gbbt2 ************************************************************************ * NOM : GBBT2 * DESCRIPTION : Copie de GBBT * Version customisée pour la sphère * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 05/10/2006, version initiale * HISTORIQUE : v1, 05/10/2006, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' GBBT2 ; 'ARGUMENT' _mt*'MAILLAGE' ; 'ARGUMENT' lvp*'LISTMOTS' ; 'ARGUMENT' lvd*'LISTMOTS' ; 'ARGUMENT' lpp*'LISTMOTS' ; 'ARGUMENT' lpd*'LISTMOTS' ; 'ARGUMENT' coef/'FLOTTANT' ; 'SI' ('NON' ('EXISTE' coef)) ; 'ARGUMENT' coef2/'CHPOINT ' ; 'SI' ('NON' ('EXISTE' coef2)) ; 'ERREUR' 'Il faut donner un coef FLOTTANT ou CHPOINT' ; 'SINON' ; coef = coef2 ; 'FINSI' ; 'SINON' ; discc = 'CSTE' ; 'FINSI' ; 'SI' ('NON' ('EXISTE' methgau)) ; methgau = 'GAU7' ; 'FINSI' ; * idim = 0 ; 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ; idim = 2 ; iaxi = FAUX ; 'FINSI' ; 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ; idim = 2 ; iaxi = VRAI ; 'FINSI' ; 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ; idim = 3 ; iaxi = FAUX ; 'FINSI' ; 'SI' ('EGA' idim 0) ; 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ; 'FINSI' ; 'SI' iaxi ; dp = ('*' PI 2.D0) ; rmt = 'COORDONNEE' 1 _mt ; 'FINSI' ; * numop = 2 ; numder = idim ; idim1 = '+' idim 1 ; numvar = idim1 ; 'SI' iaxi ; numdat = 3 ; numcof = 3 ; 'SINON' ; numdat = 1 ; numcof = 1 ; 'FINSI' ; * 'REPETER' iidim idim ; A . 'VAR' . &iidim . 'DISC' = discv ; 'FIN' iidim ; A . 'VAR' . idim1 . 'NOMDDL' = lpp ; A . 'VAR' . idim1 . 'DISC' = discp ; A . 'DAT' . 1 . 'DISC' = discc ; A . 'DAT' . 1 . 'VALEUR' = coef ; A . 'COF' . 1 . 'COMPOR' = 'IDEN' ; * 'SI' iaxi ; A . 'DAT' . 2 . 'DISC' = 'CSTE' ; A . 'DAT' . 2 . 'VALEUR' = dp ; A . 'COF' . 2 . 'COMPOR' = 'IDEN' ; A . 'DAT' . 3 . 'DISC' = gdisc ; A . 'DAT' . 3 . 'VALEUR' = rmt ; A . 'COF' . 3 . 'COMPOR' = 'IDEN' ; 'FINSI' ; * 'SI' iaxi ; 'REPETER' iidim idim ; 'FIN' iidim ; 'SINON' ; 'REPETER' iidim idim ; 'FIN' iidim ; 'FINSI' ; * 'SI' iaxi ; numdat = 3 ; numcof = 3 ; 'SINON' ; numdat = 1 ; numcof = 1 ; 'FINSI' ; 'REPETER' iidim idim ; B . 'VAR' . &iidim . 'DISC' = discv ; 'FIN' iidim ; B . 'VAR' . idim1 . 'NOMDDL' = lpd ; B . 'VAR' . idim1 . 'DISC' = discp ; B . 'DAT' . 1 . 'DISC' = discc ; B . 'DAT' . 1 . 'VALEUR' = coef ; B . 'COF' . 1 . 'COMPOR' = 'IDEN' ; * 'SI' iaxi ; B . 'DAT' . 2 . 'DISC' = 'CSTE' ; B . 'DAT' . 2 . 'VALEUR' = dp ; B . 'COF' . 2 . 'COMPOR' = 'IDEN' ; B . 'DAT' . 3 . 'DISC' = gdisc ; B . 'DAT' . 3 . 'VALEUR' = rmt ; B . 'COF' . 3 . 'COMPOR' = 'IDEN' ; 'FINSI' ; * 'SI' iaxi ; 'REPETER' iidim idim ; 'FIN' iidim ; 'SINON' ; 'REPETER' iidim idim ; 'FIN' iidim ; 'FINSI' ; * * 'RESPRO' mgbbt2 ; 'FINPROC' ; * * End of procedure file GBBT2 * *ENDPROCEDUR gbbt2 *BEGINPROCEDUR log10 ************************************************************************ * NOM : LOG10 * DESCRIPTION : Log_10 * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 18/02/2003, version initiale * HISTORIQUE : v1, 18/02/2003, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' LOG10 ; 'REPETER' bouc ; ok = FAUX ; 'ARGUMENT' fl/'FLOTTANT' ; 'ARGUMENT' lr/'LISTREEL' ; 'ARGUMENT' cp/'CHPOINT ' ; 'ARGUMENT' cm/'MCHAML ' ; 'SI' ('EXISTE' fl) ; ok = VRAI ; 'RESPRO' ('/' ('LOG' fl) ('LOG' 10.D0)) ; 'FINSI' ; 'SI' ('EXISTE' lr) ; ok = VRAI ; 'RESPRO' ('/' ('LOG' lr) ('LOG' 10.D0)) ; 'FINSI' ; 'SI' ('EXISTE' cp) ; ok = VRAI ; 'RESPRO' ('/' ('LOG' cp) ('LOG' 10.D0)) ; 'FINSI' ; 'SI' ('EXISTE' cm) ; ok = VRAI ; 'RESPRO' ('/' ('LOG' cm) ('LOG' 10.D0)) ; 'FINSI' ; 'SI' ('NON' ok) ; 'QUITTER' bouc ; 'FINSI' ; 'FIN' bouc ; * * End of procedure file LOG10 * 'FINPROC' ; *ENDPROCEDUR log10 *BEGINPROCEDUR dessevol ************************************************************************ * NOM : DESSEVOL * DESCRIPTION : Dessine des évolutions : choisit automatiquement * les options, marqueurs, couleurs... * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 16/11/2004, version initiale * HISTORIQUE : v1, 16/11/2004, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' DESSEVOL ; 'ARGUMENT' evtot*'EVOLUTION' ; 'ARGUMENT' tabt*'TABLE' ; 'ARGUMENT' lnclk/'LOGIQUE' ; 'ARGUMENT' nb/'ENTIER' ; * 'SI' ('NON' ('EXISTE' lnclk)) ; lnclk = FAUX ; 'FINSI' ; * 'SI' ('NON' ('EXISTE' nb)) ; nb = 3 ; 'FINSI' ; * * * Attention, dans evtot, il y a une évolution avec des noms de points ? * *'SI' ('NEG' nev nt) ; * cherr = 'CHAINE' 'Evolution and title table : not same dim.' ; * 'ERREUR' cherr ; *'FINSI' ; * tev = 'TABLE' ; tev . 'TITRE' = tabt ; * toto = 'TABLE' ; * * 'SI' ('EGA' nb 0) ; ev2 = evtot ; 'SINON' ; icou = 0 ; 'REPETER' iev nev ; ii = &iev ; icou = '+' icou 1 ; 'FINSI' ; * ii2 = '/' ('+' ii 1) 2 ; * ci = EXMOMOD lcoul ii2 ; * ci = EXMOMOD lcoul ii ; ci = EXMOMOD lcoul icou ; APPEND toto 'EVOLUTION' ('COULEUR' evi ci) ; 'FIN' iev ; ev2 = toto . 'EVOLUTION' ; 'FINSI' ; * 'REPETER' iev nev ; ii = &iev ; mi = EXMOMOD lmarq ii ; ti = EXMOMOD ltirr ii ; 'SI' ('>' nb 2) ; tev . ii = 'CHAINE' 'MARQ ' mi ' ' ti ; 'FINSI' ; 'SI' ('>' nb 1) ; tev . ii = 'CHAINE' 'MARQ ' mi ; 'FINSI' ; 'FIN' iev ; * 'SI' lnclk ; 'DESSIN' ev2 'TITR' tit 'TITX' tix 'TITY' tiy 'LEGE' 'MIMA' tev 'NCLK' ; 'SINON' ; 'DESSIN' ev2 'TITR' tit 'TITX' tix 'TITY' tiy 'LEGE' 'MIMA' tev ; 'FINSI' ; * * End of procedure file DESSEVOL * 'FINPROC' ; *ENDPROCEDUR dessevol *BEGINPROCEDUR exmomod ************************************************************************ * NOM : EXMOMOD * DESCRIPTION : Extraction d'un mot d'un listmots * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 23/06/2003, version initiale * HISTORIQUE : v1, 23/06/2003, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' EXMOMOD ; 'ARGUMENT' lm*'LISTMOTS' i*'ENTIER' ; k = '+' (MODULO ('-' i 1) j) 1 ; lemot = 'EXTRAIRE' lm k ; * Usage de l'opérateur text pour éviter que lemot * ne soit interprété comme un opérateur 'RESPRO' 'TEXTE' lemot ; * * End of procedure file EXMOMOD * 'FINPROC' ; *ENDPROCEDUR exmomod *BEGINPROCEDUR modulo ************************************************************************ * NOM : MODULO * DESCRIPTION : Calcule un entier modulo un autre... * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 15/10/2002, version initiale * HISTORIQUE : v1, 15/10/2002, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' MODULO ; 'ARGUMENT' i*'ENTIER' j*'ENTIER' ; 'SI' ('EGA' j 0) ; 'MESSAGE' 'Impossible de faire modulo 0' ; 'ERREUR' 5 ; 'SINON' ; k=i '/' j ; mod=i '-' ( k '*'j ) ; 'RESPRO' mod ; 'FINSI' ; * * End of procedure file MODULO * 'FINPROC' ; *ENDPROCEDUR modulo *BEGINPROCEDUR append ************************************************************************ * NOM : APPEND * DESCRIPTION : Rajoute : * - un entier à un listentier * - un réel à un listreel * - un objet (liste, evolution, matrice ou chpoint) * à un indice de table ('MOT' ou 'ENTIER') * * si l'indice n'existe pas * * 'ET' si l'indice existe * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 10/09/2004, version initiale * HISTORIQUE : v1, 10/09/2004, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' APPEND ; 'ARGUMENT' tab/'TABLE' ; 'SI' ('EXISTE' tab) ; 'SI' ('NON' ('EXISTE' itab)) ; 'ARGUMENT' itab*'ENTIER' ; 'FINSI' ; lobj = FAUX ; 'SI' ('NON' lobj) ; 'ARGUMENT' lr/'LISTREEL' ; 'SI' ('EXISTE' lr) ; obj = lr ; lobj = VRAI ; 'FINSI' ; 'FINSI' ; 'SI' ('NON' lobj) ; 'ARGUMENT' le/'LISTENTI' ; 'SI' ('EXISTE' le) ; obj = le ; lobj = VRAI ; 'FINSI' ; 'FINSI' ; 'SI' ('NON' lobj) ; 'ARGUMENT' lev/'EVOLUTION' ; 'SI' ('EXISTE' lev) ; obj = lev ; lobj = VRAI ; 'FINSI' ; 'FINSI' ; 'SI' ('NON' lobj) ; 'ARGUMENT' lm/'MAILLAGE' ; 'SI' ('EXISTE' lm) ; obj = lm ; lobj = VRAI ; 'FINSI' ; 'FINSI' ; 'SI' ('NON' lobj) ; 'FINSI' ; 'FINSI' ; 'SI' ('NON' lobj) ; 'ARGUMENT' rig/'RIGIDITE' ; 'SI' ('EXISTE' rig) ; obj = rig ; lobj = VRAI ; 'FINSI' ; 'FINSI' ; 'SI' ('NON' lobj) ; 'ARGUMENT' matk/'MATRIK' ; 'SI' ('EXISTE' matk) ; obj = matk ; lobj = VRAI ; 'FINSI' ; 'FINSI' ; 'SI' ('NON' lobj) ; cherr = 'CHAINE' 'Il faut fournir un objet liste, evolution, matrice ou chpoint.' ; 'ERREUR' cherr ; 'FINSI' ; 'SI' ('EXISTE' tab itab) ; tab . itab = '+' (tab . itab) obj ; 'SINON' ; tab . itab = 'ET' (tab . itab) obj ; 'FINSI' ; 'SINON' ; tab . itab = obj ; 'FINSI' ; 'RESPRO' tab ; 'FINSI' ; 'ARGUMENT' lenti/'LISTENTI' ; 'ARGUMENT' lreel/'LISTREEL' ; 'SI' ('EXISTE' lenti) ; 'ARGUMENT' enti*'ENTIER' ; 'RESPRO' lenti ; 'FINSI' ; 'SI' ('EXISTE' lreel) ; 'ARGUMENT' reel*'FLOTTANT' ; 'RESPRO' lreel ; 'FINSI' ; * * End of procedure file APPEND * 'FINPROC' ; *ENDPROCEDUR append *BEGINPROCEDUR isinlis ************************************************************************ * NOM : ISINLIS * DESCRIPTION : Index d'un mot dans un liste de mots * (0 s'il n'y est pas) * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 15/12/2004, version initiale * HISTORIQUE : v1, 15/12/2004, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' ISINLIS ; 'ARGUMENT' ltoto*'LISTMOTS' ; 'ARGUMENT' lerr/'LOGIQUE' ; * 'SI' ('NON' ('EXISTE' lerr)) ; lerr = FAUX ; 'FINSI' ; * isin = 0 ; 'SI' ('>' ntoto 0) ; 'REPETER' itoto ntoto ; mtoto = 'EXTRAIRE' ltoto &itoto ; 'SI' ('EGA' mtoto tutu) ; isin = &itoto ; 'QUITTER' itoto ; 'FINSI' ; 'FIN' itoto ; 'FINSI' ; 'SI' lerr ; 'SI' ('EGA' isin 0) ; cherr = 'CHAINE' ' ne contient pas ' tutu ; 'LISTE' ltoto ; 'ERREUR' cherr ; 'FINSI' ; 'SINON' ; 'RESPRO' isin ; 'FINSI' ; * * End of procedure file ISINLIS * 'FINPROC' ; *ENDPROCEDUR isinlis *BEGINPROCEDUR formar ************************************************************************ * NOM : FORMAR * DESCRIPTION : formate un réel de facon courte * pratique pour les noms de * sauvegarde * Exemples : * 'MESSAGE' ('CHAINE' (formar 2.9e5 1)) ; * 2.9E5 * 'MESSAGE' ('CHAINE' (formar -2.9e5 1)) ; * -2.9E5 * 'MESSAGE' ('CHAINE' (formar 2.9e-5 1)) ; * 2.9E-5 * 'MESSAGE' ('CHAINE' (formar -2.9e-5 1)) ; * -2.9E-5 * 'MESSAGE' ('CHAINE' (formar 2.9 1)) ; * 2.9 * 'MESSAGE' ('CHAINE' (formar -2.9 1)) ; * -2.9 * 'MESSAGE' ('CHAINE' (formar 0 1)) ; * 0 * 'MESSAGE' ('CHAINE' (formar 0 1)) ; * 0 * 'MESSAGE' ('CHAINE' (formar 2.9e5 0)) ; * 3E5 * 'MESSAGE' ('CHAINE' (formar -2.9e5 0)) ; * -3E5 * 'MESSAGE' ('CHAINE' (formar 2.9e-5 0)) ; * 3E-5 * 'MESSAGE' ('CHAINE' (formar -2.9e-5 0)) ; * -3E-5 * 'MESSAGE' ('CHAINE' (formar 2.9 0)) ; * 3 * 'MESSAGE' ('CHAINE' (formar -2.9 0)) ; * -3 * 'MESSAGE' ('CHAINE' (formar 0 0)) ; * 0 * 'MESSAGE' ('CHAINE' (formar 0 0)) ; * 0 * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 18/02/2003, version initiale * HISTORIQUE : v1, 18/02/2003, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' FORMAR ; 'ARGUMENT' fl*'FLOTTANT' ; 'ARGUMENT' vir/'ENTIER ' ; 'SI' ('NON' ('EXISTE' vir)) ; vir = 1 ; 'SINON' ; 'SI' ('<' vir 0) ; 'ERREUR' 'fournir un entier positif' ; 'FINSI' ; 'FINSI' ; 'SI' ('<' ('ABS' fl) 10.D-100) ; chfl = 'CHAINE' '0' ; 'SINON' ; *! sans le 1.D-10, ca ne fonctionne pas *! qd on entre pile poil une puissance de 10 lfl = LOG10 ('ABS' fl) ; * lfl = '+' (LOG10 ('ABS' fl)) 1.D-10 ; slfl = 'SIGNE' ('ENTIER' lfl) ; 'SI' ('EGA' slfl 1) ; elfl = 'ENTIER' lfl ; 'SINON' ; elfl = '-' ('ENTIER' lfl) 1 ; 'FINSI' ; man = '/' fl ('**' 10.D0 elfl) ; * * Une verrue pour des histoires de précision... * 'SI' ('EGA' man 10.D0 ('**' 10.D0 ('*' vir -1.D0))) ; man = '/' man 10.D0 ; elfl = '+' elfl 1 ; 'FINSI' ; * sman = 'SIGNE' man ; 'SI' ('EGA' sman 1) ; fman = 'CHAINE' '(F' ('+' vir 2) '.0' vir ')' ; 'SINON' ; fman = 'CHAINE' '(F' ('+' vir 3) '.0' vir ')' ; 'FINSI' ; 'SI' ('NEG' vir 0) ; 'SI' ('NEG' elfl 0) ; chfl = 'CHAINE' 'FORMAT' fman man 'E' elfl ; 'SINON' ; chfl = 'CHAINE' 'FORMAT' fman man ; 'FINSI' ; 'SINON' ; man2 = 'ENTIER' ('+' man ('*' 0.5D0 sman)) ; 'SI' ('NEG' elfl 0) ; chfl = 'CHAINE' man2 'E' elfl ; 'SINON' ; chfl = 'CHAINE' man2 ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'RESPRO' chfl ; * * End of procedure file FORMAR * 'FINPROC' ; *ENDPROCEDUR formar ************************************************************************ * NOM : TRAINEE_2D * DESCRIPTION : Cas-test Traînée de Stokes (axisymétrique) * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 04/10/2006, version initiale * HISTORIQUE : v1, 04/10/2006, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * complet = FAUX ; interact = FAUX ; graph = FAUX ; * 'SI' ('NON' interact) ; 'OPTION' 'TRAC' 'PSC' ; 'SINON' ; 'OPTION' 'TRAC' 'X' ; 'FINSI' ; * * Paramètres maillage * Ar = 2. ; Az = 2. ; * 1 = triangle * 2 = quadrangle * 3 = quadrangle + triangles ok = VRAI ; 'REPETER' iimesh 2 ; imesh = &iimesh ; 'SI' ('EGA' imesh 1) ; tmesh = 'CHAINE' 'Triangle' ; 'FINSI' ; 'SI' ('EGA' imesh 2) ; tmesh = 'CHAINE' 'Quadrangle' ; 'FINSI' ; 'SI' ('EGA' imesh 3) ; tmesh = 'CHAINE' 'Qua et Tri' ; 'FINSI' ; * * Paramètres numériques (I) * Espaces de discrétisation * idisc = 1 : QUAF + CENTREP1 * idisc = 2 : QUAD + LINE * idisc = 3 : LINC + CSTE * discrétisation du terme de contrainte * irig = 1 : (grad u . grad v) * irig = 2 : (grad u . grad v) + (tgradu . tgradv) * irig = 3 : (grad u . grad v) + (div u . div v) irig = 1 ; tabevl2 = 'TABLE' ; tabevli = 'TABLE' ; tabevst = 'TABLE' ; tabtl2 = 'TABLE' ; tabtli = 'TABLE' ; tabtst = 'TABLE' ; 'REPETER' iidisc 3 ; idisc = &iidisc ; 'SI' ('EGA' idisc 1) ; tdisc = 'CHAINE' 'QUAF/LINM' ; ordvoul = 3. ; discg = 'QUAF' ; discv = 'QUAF' ; discp = 'LINM' ; 'SI' complet ; 'SINON' ; 'FINSI' ; 'FINSI' ; * 'SI' ('EGA' idisc 2) ; tdisc = 'CHAINE' 'QUAD/LINE' ; ordvoul = 3. ; discg = 'QUAD' ; discv = 'QUAD' ; discp = 'LINE' ; 'SI' complet ; 'SINON' ; 'FINSI' ; 'FINSI' ; * 'SI' ('EGA' idisc 3) ; tdisc = 'CHAINE' 'LINC/CSTE' ; * On devrait avoir 2. mais il faut raffiner ! ordvoul = 1.7 ; discg = 'LINE' ; discv = 'LINC' ; discp = 'CSTE' ; 'SI' complet ; 'SINON' ; 'FINSI' ; 'FINSI' ; * 'REPETER' iiden nden ; iden = &iiden ; den = 'EXTRAIRE' lisden iden ; * errl2 errli errfst = CALCUL imesh irig den VRAI ; errl2 errli errfst = CALCUL imesh irig den ; lh = APPEND lh den ; ll2 = APPEND ll2 errl2 ; lli = APPEND lli errli ; lst = APPEND lst errfst ; 'FIN' iiden ; * lh ll2 lli lst = LOG10 lh ll2 lli lst ; * * Calcul des ordres de convergence * ordl2 = cpl2 . 1 ; tabevl2 . idisc = evl2 ; tabtl2 . idisc = 'CHAINE' 'id=' idisc ';ord=' (formar ordl2 1) ; * * Test de l'ordre * test = 'EGA' ordl2 ordvoul ('*' ordvoul 0.2) ; ok = ok 'ET' test ; titcas = 'CHAINE' 'Maillage : ' tmesh ' Discretisation : ' tdisc ; 'MESSAGE' titcas ; 'MESSAGE' ('CHAINE' ' Ordre de convergence norme L2 axi sur la vitesse ' ordl2) ; 'SI' ('NON' test) ; 'MESSAGE' ('CHAINE' 'On aurait voulu avoir :' ordvoul) ; 'FINSI' ; ordli = cpli . 1 ; tabevli . idisc = evli ; tabtli . idisc = 'CHAINE' 'id=' idisc ';ord=' (formar ordli 1) ; ordst = cpst . 1 ; tabevst . idisc = evst ; tabtst . idisc = 'CHAINE' 'id=' idisc ';ord=' (formar ordst 1) ; 'FIN' iidisc ; * 'SI' graph ; tit = 'CHAINE' 'Ordre de convergence en norme L2 axi sur la vitesse' ; tix = 'CHAINE' 'Log10 h' ; tiy = 'CHAINE' 'Log10 errl2' ; DESSEVOL evtl2 tabtl2 tit tix tiy ; * tit = 'CHAINE' 'Ordre de convergence en norme Linf sur la vitesse' ; tix = 'CHAINE' 'Log10 h' ; tiy = 'CHAINE' 'Log10 errli' ; DESSEVOL evtli tabtli tit tix tiy ; * tit = 'CHAINE' 'Ordre de convergence sur la trainee de Stokes' ; tix = 'CHAINE' 'Log10 h' ; tiy = 'CHAINE' 'Log10 errst' ; DESSEVOL evtst tabtst tit tix tiy ; 'FINSI' ; 'FIN' iimesh ; * 'SI' ('NON' ok) ; 'MESSAGE' ('CHAINE' 'Il y a eu des erreurs') ; 'ERREUR' 5 ; 'SINON' ; 'MESSAGE' ('CHAINE' 'Tout sest bien passe !') ; 'FINSI' ; * 'SI' interact ; 'OPTION' 'DONN' 5 ; 'OPTION' 'ECHO' 1 ; 'FINSI' ; * * End of dgibi file TRAINEE_2D * 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales