* DEADUTIL PROCEDUR GOUNAND 25/11/24 21:15:02 12406 ************************************************************************ * NOM : DEADUTIL * DESCRIPTION : * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 05/04/2006, version initiale * HISTORIQUE : v1, 05/04/2006, création * HISTORIQUE : 2018/01/22 : chgt nom composante hors diago G21 au lieu * de G12 pour QEQU et QISO * HISTORIQUE : 2018/10/10 : NLINP au lieu de NLIN * 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 ! ************************************************************************ * * * lmotcle = 'MOTS' 'DIMM' 'TYPM' 'AXI?' 'SPH?' 'QISO' 'QALI' 'QEQU' 'QALI2' 'QEQU2' ; 'SI' ('NON' ('EXISTE' lmotcle motcle)) ; cherr = 'CHAINE' 'Keyword' ' ' motcle ' unknown.' ; 'ERREUR' cherr ; 'FINSI' ; * 'SI' ('EGA' motcle 'AXI?') ; laxi = ('EGA' vmod 'AXIS') 'OU' ('EGA' vmod 'UNIDAXIS') 'OU' ('EGA' vmod 'UNIDAXISAXDZ') 'OU' ('EGA' vmod 'UNIDAXISAXCZ') 'OU' ('EGA' vmod 'UNIDAXISAXGZ') ; 'RESPRO' laxi ; 'FINSI' ; * 'SI' ('EGA' motcle 'SPH?') ; lsph = 'EGA' vmod 'UNIDSPHE' ; 'RESPRO' lsph ; 'FINSI' ; * 'SI' ('EGA' motcle 'DIMM') ; 'ARGUMENT' mt*'MAILLAGE' ; tabdim = 'TABLE' ; 'PYR5' 'PY13' 'CU27' 'PR21' 'TE15' 'PY19' ; fidim = FAUX ; dim = -1 ; 'SI' ('EGA' nelem 0) ; 'ERREUR' cherr ; 'FINSI' ; * 'REPETER' ielem nelem ; melem = 'EXTRAIRE' lelem &ielem ; 'REPETER' itdim 4 ; idim = ('-' &itdim 1) ; lli = tabdim . idim ; * id = ISINLIS melem lli ; * 'SI' ('NEG' id 0) ; id = 'EXISTE' lli melem ; 'SI' id ; 'SI' fidim ; 'SI' ('NEG' dim idim) ; cherr = 'CHAINE' 'Composite mesh not allowed' ; 'ERREUR' cherr ; 'FINSI' ; 'SINON' ; dim = idim ; fidim = VRAI ; 'FINSI' ; 'FINSI' ; 'FIN' itdim ; 'FIN' ielem ; * 'SI' ('NON' fidim) ; cherr = 'CHAINE' 'No known elements in this mesh' ; 'ERREUR' cherr ; 'FINSI' ; * 'RESPRO' dim ; 'FINSI' ; * * * 'SI' ('EGA' motcle 'TYPM') ; 'ARGUMENT' mt*'MAILLAGE' ; tabtyp = 'TABLE' ; * fityp = FAUX ; typ = -1 ; 'SI' ('EGA' nelem 0) ; cherr = 'CHAINE' 'Void mesh ?' ; 'MESSAGE' cherr ; 'QUITTER' TYPM ; 'FINSI' ; * 'REPETER' ielem nelem ; melem = 'EXTRAIRE' lelem &ielem ; 'REPETER' ittyp 3 ; ityp = &ittyp ; lli = tabtyp . ityp ; * id = ISINLIS melem lli ; * 'SI' ('NEG' id 0) ; id = 'EXISTE' lli melem ; 'SI' id ; 'SI' fityp ; 'SI' ('NEG' typ ityp) ; cherr = 'CHAINE' 'Composite mesh not allowed' ; 'ERREUR' cherr ; 'FINSI' ; 'SINON' ; typ = ityp ; fityp = VRAI ; 'FINSI' ; 'FINSI' ; 'FIN' ittyp ; 'FIN' ielem ; * 'SI' ('NON' fityp) ; cherr = 'CHAINE' 'No known elements in this mesh' ; 'ERREUR' cherr ; 'FINSI' ; * mtyp = 'EXTRAIRE' listyp typ ; 'RESPRO' mtyp ; 'FINSI' ; * * QISO PROCEDUR GOUNAND 06/04/06 17:53:15 5371 ************************************************************************ * NOM : QISO * DESCRIPTION : Critère de qualité d'un maillage : alignement * (= isotropie) * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 11/05/2007, version initiale * HISTORIQUE : v1, 11/05/2007, création * HISTORIQUE : 2018/01/22 : chgt nom composante hors diago G21 au lieu * de G12 * HISTORIQUE : 2025/11/20 : muutualisation avec QEQU * 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 ! ************************************************************************ * * * * 'ARGUMENT' mail*'MAILLAGE' ; * * lchad = FAUX ; lchp = FAUX ; ldisg = FAUX ; lmg = FAUX ; lmetdisc = faux ; * * 'REPETER' imotcle2 ; 'SI' ('NON' ('EXISTE' motcle2)) ; 'QUITTER' imotcle2 ; 'FINSI' ; lmc = 'EXISTE' lmotcle2 motcle2 ; 'SI' ('NON' lmc) ; *1052 2 *Mot-cle incorrect "%M1:4". Voici la liste des valeurs admises : %M5:40 'FINSI' ; * 'SI' ('EGA' motcle2 'METR') ; itai2 = tai '**' -2 ; chp = chpt ; lchp = vrai ; lchad = faux ; 'SINO' ; 'ARGUMENT' chad/'MCHAML' ; lchad = 'EXISTE' chad ; 'SI' ('NON' lchad) ; 'ARGUMENT' chp/'CHPOINT' ; lchp = 'EXISTE' chp ; 'SI' lchp ; 'FINS' ; 'SINON' ; lchp = FAUX ; 'FINSI' ; 'FINS' ; 'FINS' ; 'ARGUMENT' chp*'CHPOINT' ; lchad = VRAI ; lchp = FAUX ; 'FINSI' ; * 'SI' ('EGA' motcle2 'DISG') ; ldisg = VRAI ; 'FINSI' ; * 'SI' ('EGA' motcle2 'METG') ; lmg = VRAI ; 'FINSI' ; * 'FIN' imotcle2 ; lmet = 'OU' lchad lchp ; * * Initialisations * * 'SI' ('OU' ('<' idim 1) ('>' idim 3)) ; * 709 2 Fonction indisponible en dimension %i1. 'ERREUR' 709 'AVEC' idim ; 'FINSI' ; 'SI' (('EGA' imod 'AXIS') 'OU' ('EGA' imod 'UNIDAXIS') 'OU' ('EGA' imod 'FOUR') 'OU' ('EGA' imod 'SPHE')) ; *-105 0 Mode de calcul actuel %m1:32 * 710 2 Fonction indisponible pour ce mode de calcul 'FINSI' ; * vquaf = ('EGA' vtyp 'QUAF') ; 'SI' ('ET' ldisg ('NON' vquaf)) ; 'MESS' 'DISG option :' ; * 66 2 L'objet %m1:8 doit etre de type %m9:16 'FINSI' ; * * Maillage * *'SI' vquaf ; _mt = mail ; *'SINON' ; * _mt = 'CHANGER' mail 'QUAF' ; *'FINSI' ; * * Inconnus et discrétisation * 'SI' ('NON' lmg) ; 'SI' ('EGA' vtyp 'LINE') ; methgau = 'GAR1' ; 'SINON' ; methgau = 'GAR2' ; 'FINSI' ; 'FINSI' ; 'SI' ('NON' ldisg) ; gdisc = vtyp ; 'FINSI' ; * * Métrique * ncmet = '/' ('*' idim ('+' idim 1)) 2 ; 'SI' lmet; 'SI' lchad ; metdisc = gdisc ; 'FINSI' ; 'SI' lchp ; chpmet = chp ; 'SI' ('NON' lmetdisc) ; metdisc = gdisc ; 'FINS' ; 'FINSI' ; 'SI' ('EGA' dncom 1) ; 'SINO' ; 'FINS' ; chpmett = chpmet ; 'SI' ('>' idim 1) ; chpmet0 = chpmet '*' 0. ; 'FINS' ; 'SI' ('>' idim 2) ; 'FINS' ; 'FINS' ; 'MESS' 'Noms de composantes metrique pas OK :' ; 'LIST' lncom ; 'FINS' ; 'FINSI' ; * 'SINO' ; 'FINS' ; * * Calcul de la fonctionnelle * numop = 1 ; numvar = 1 ; numder = vdim ; numdat = 0 ; numcof = 0 ; * A . 'VAR' . 1 . 'VALEUR' = 1.D0 ; * numvar = 1 ; numdat = ncmet ; numcof = 1 ; B . 'VAR' . 1 . 'VALEUR' = 1.D0 ; * idat = 0 ; 'REPETER' idi idim ; nomdat = 'CHAINE' 'G' &idi &idi ; * 'MESSAGE' ('CHAINE' 'nomdat=' nomdat) ; idat = '+' idat 1 ; 'SI' lmet ; B . 'DAT' . idat . 'DISC' = metdisc ; 'SINON' ; B . 'DAT' . idat . 'VALEUR' = 1.D0 ; 'FINSI' ; 'FIN' idi ; 'REPETER' idi idim ; nj = '-' idim &idi ; * 'MESSAGE' ('CHAINE' 'nj=' nj) ; 'SI' ('>EG' nj 1) ; 'REPETER' jdi nj ; * Mise en cohérence avec Castem * nomdat = 'CHAINE' 'G' &idi ('+' &idi &jdi) ; nomdat = 'CHAINE' 'G' ('+' &idi &jdi) &idi ; * 'MESSAGE' ('CHAINE' 'nomdat=' nomdat) ; idat = '+' idat 1 ; 'SI' lmet ; B . 'DAT' . idat . 'DISC' = metdisc ; 'SINON' ; B . 'DAT' . idat . 'VALEUR' = 0.D0 ; 'FINSI' ; 'FIN' jdi ; 'FINSI' ; 'FIN' idi ; * B . 'COF' . 1 . 'COMPOR' = loi ; B . 'COF' . 1 . 'LDAT' = lisdat ; * A . 1 . 1 . 0 = 0 ; B . 1 . 1 . 0 = 1 ; * 'SI' ('NON' ldisg) ; vfonc = NLINP gdisc _mt A B 'ERF1' 'CHAM' methgau ; 'SINO' ; vfonc = NLINP gdisc _mt A B 'ERF1' methgau ; 'FINS' ; * 'SI' ('EGA' tvfonc 'CHPOINT') ; 'SINO' ; 'FINS' ; fac = '/' rvelemr rvfonc ; vfonc = '*' vfonc fac ; 'SI' ('EGA' motcle 'QEQU2') ; * On remet les valeurs entre 0 et 1 pvfonc = 1. '-' mvfonc ; ivfonc = '**' vfonc -1 ; vfonc = '+' ('*' mvfonc ivfonc) ('*' pvfonc vfonc) ; 'FINS' ; 'FINS' ; * On remet les valeurs entre 0 et 1 'SI' ('EGA' motcle 'QALI2') ; vfonc = '**' vfonc -1 ; 'FINS' ; * * 'RESPRO' vfonc ; 'FINSI' ; * * * End of procedure file DEADUTIL * 'FINPROC' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales