* fichier : raft1.dgibi
'OPTION' 'ECHO' 0 ;
************************************************************************
* NOM : RAFT1
* DESCRIPTION : Exemple d'utilisation de RAFT :
* Maillage d'un carré avec un fort raffinement dans un
* des coins.
* On teste les tailles de mailles obtenues par rapport
* aux tailles de maille voulues.
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* mél : gounand@semt2.smts.cea.fr
**********************************************************************
* VERSION : v1, 11/12/2006, version initiale
* HISTORIQUE : v1, 11/12/2006, création
* HISTORIQUE : 23/01/2014 : simplification du jeu de données
* (procédure MESUELEM)
* HISTORIQUE :
************************************************************************
*
*
interact = FAUX ;
graph = FAUX ;
*
******************************************************************
* P R O C E D U R E S
*
* MESUELEM
*
* Calcul d'une mesure de maille aux noeuds
* Je sais le faire de trois manières (équivalentes pour les SEG2
* mais pas pour les TRI3)
* 1) Avec l'opérateur MESU (boucle sur les éléments en GIBIANE)
* + CHAN 'CHPO'
* 2) En intégrant (par éléments) un champ par élément valant 1
* + CHAN 'CHPO'
* 3) Matrice de masse diagonalisée
* Ici, c'est la méthode 3.
*
'DEBPROC' MESUELEM ;
'ARGUMENT' mm*'MAILLAGE' ;
'SI' faux ;
* Méthode 2
mod = 'MODE' mm 'MECANIQUE' 'ELASTIQUE' ;
c1 = 'MANU' 'CHML' mod 'SCAL' 1. 'GRAVITE' ;
ctai = 'INTG' 'ELEM' mod c1 ;
cctai = 'CHANGER' 'CHPO' mod ctai 'MOYE' ;
'FINSI' ;
* Méthode 3
cctai = 'DOMA' ('MODE' ('CHANGER' mm 'QUAF') 'NAVIER_STOKES' 'LINE')
'XXDIAGSI' ;
*
'RESPRO' cctai ;
'FINPROC' ;
*
* CALTAIL
*
* Calcul du champ de taille de maille voulue T par un problème de
* thermique, on résout :
* Laplacien T = 0
* avec T_bord = taille des mailles du bord
*
*
'DEBPROC' CALTAIL ;
'ARGUMENT' mt*'MAILLAGE' ;
*
cmt = 'CONTOUR' mt ;
*
cdt = MESUELEM cmt ;
* En fait, on résout le problème au laplacien pour le log
* des tailles de maille.
lcdt = 'LOG' cdt ;
modt = 'MODELISER' mt 'THERMIQUE' 'ISOTROPE' ;
cart = 'MATERIAU' modt 'K' 1.D0 ;
matt = 'COND' modt cart ;
mcdt = 'EXTRAIRE' lcdt 'MAIL' ;
matb = 'BLOQUE' 'T' mcdt ;
fb = 'DEPIMPOSE' matb lcdt ;
clden = 'EXCO' 'T' ('RESOUD' ('ET' matt matb) fb) ;
cden = 'EXP' clden ;
*'TRACER' cden mt ;
'RESPRO' cden ;
'FINPROC' ;
* Fin des P R O C E D U R E S
******************************************************************
*
'OPTION' 'DIME' 2 'ELEM' 'TRI3' ;
*
p1 = 0. 0. ; p2 = 1. 0. ; p3 = 1. 1. ; p4 = 0. 1. ;
dpeti = 1.D-4 ; dgran = 0.5 ;
*
d1 = 'DROIT' p1 p2 'DINI' dpeti 'DFIN' dgran ;
d2 = 'DROIT' p2 p3 'DINI' dgran 'DFIN' dgran ;
d3 = 'DROIT' p3 p4 'DINI' dgran 'DFIN' dgran ;
d4 = 'DROIT' p4 p1 'DINI' dgran 'DFIN' dpeti ;
cmt = d1 'ET' d2 'ET' d3 'ET' d4 ;
*
mt1 = 'TRIANGULATION' cmt ;
'SI' graph ;
tit1 = 'CHAINE' 'Triangulation grossière du domaine' ;
'TRACER' mt1 'TITR' tit1 ;
'FINSI' ;
*
cden = CALTAIL mt1 ;
'SI' graph ;
'TRACER' cden mt1 'TITR' ('CHAINE' 'Taille de mailles voulues') ;
'FINSI' ;
*
mt2 = 'RAFT' cden mt1 ;
nlmt = 'NBEL' mt2 ;
npmt = 'NBNO' mt2 ;
tit2 = 'CHAINE' 'Maillage resultant : ' nlmt ' elements ; '
npmt ' noeuds ' ;
'MESSAGE' tit2 ;
'SI' graph ;
'TRACER' mt2 'TITR' tit2 ;
'FINSI' ;
*
mt = mt2 ;
*
cdenv = CALTAIL mt ;
cdeno = MESUELEM mt ;
* cdeno est en unité de surface.
* On transforme en unité de longueur en multipliant par 2
* (car mt est constitué de triangles) et en prenant la racine.
cdeno = cdeno '*' 2. ;
cdeno = '**' cdeno 0.5D0 ;
ecar = '/' cdeno cdenv ;
t2 = 'CHAINE' 'Taille de maille obtenue / voulue ' ;
'SI' graph ;
'TRACER' ecar mt2 'TITR' t2 ;
'FINSI' ;
*
* Facteur d'écart autorisé
*
fecar = 1.5D0 ; ifecar = 0.3D0 ;
maecar = 'MAXIMUM' ecar ;
miecar = 'MINIMUM' ecar ;
*
ok = VRAI ;
'MESSAGE' t2 ;
'MESSAGE' ('CHAINE' ' Max : ' maecar) ;
tes1 = '<' maecar fecar ;
ok = ok 'ET' tes1 ;
'SI' ('NON' tes1) ;
'MESSAGE' ('CHAINE' '!!!! On aurait voulu avoir < ' fecar) ;
'FINSI' ;
'MESSAGE' ('CHAINE' ' Min : ' miecar) ;
tes2 = '>' miecar ifecar ;
ok = ok 'ET' tes2 ;
'SI' ('NON' tes2) ;
'MESSAGE' ('CHAINE' '!!!! On aurait voulu avoir > ' ifecar) ;
'FINSI' ;
*
'SI' ('NON' ok) ;
'MESSAGE' ('CHAINE' 'Il y a eu des erreurs') ;
'ERREUR' 5 ;
'SINON' ;
'MESSAGE' ('CHAINE' 'Tout sest bien passe !') ;
'FINSI' ;
*
'SI' interact ;
'OPTION' 'ECHO' 1 ;
'OPTION' 'DONN' 5 ;
'FINSI' ;
*
* End of dgibi file RAFT1
*
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer