* fichier : ns1.dgibi ************************************************************************ * NOM : NS1 * DESCRIPTION : Ecoulement de Navier-Stokes dans une tete de Mickey * avec force tangente sur le bord * On utilise bloq depl dire pour imposer u.n = 0 * Le test vérifie u.n=0 * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 06/06/2008, version initiale * HISTORIQUE : v1, 06/06/2008, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * 'SAUTER' 2 'LIGNE' ; 'MESSAGE' ' Execution de ns1.dgibi' ; 'SAUTER' 2 'LIGNE' ; * * interact = FAUX ; graph = FAUX ; * 'SI' ('NON' interact) ; 'OPTION' 'TRAC' 'PS' ; 'SINON' ; 'OPTION' 'TRAC' 'X' ; 'FINSI' ; lok = VRAI ; * * Procédure de calcul de la normale à un contour * * _mt : maillage de surface * discg : discrétisation géométrique * mnor : noms de composantes pour la normale * discm : discrétisation pour la normale * 'DEBPROC' VNOR ; 'ARGUMENT' _mt*'MAILLAGE' ; 'ARGUMENT' mnor*'LISTMOTS' ; * numop = idim ; numder = idim ; numvar = 1 ; numdat = 0 ; numcof = 0 ; A . 'VAR' . 1 . 'DISC' = 'CSTE' ; A . 'VAR' . 1 . 'VALEUR' = 1.D0 ; 'REPETER' iiidim idim ; iidim = &iiidim ; 'FIN' iiidim ; numvar = idim ; numcof = idim ; 'REPETER' iiidim idim ; iidim = &iiidim ; nominc = 'EXTRAIRE' mnor iidim ; * 'LISTE' nominc ; B . 'VAR' . iidim . 'DISC' = discm ; B . 'COF' . iidim . 'COMPOR' = 'CHAINE' 'VNOR' iidim ; 'FIN' iiidim ; * Matrice masse numop = 1 ; numder = idim ; numvar = 1 ; numdat = 0 ; numcof = 0 ; A . 'VAR' . 1 . 'DISC' = 'CSTE' ; A . 'VAR' . 1 . 'VALEUR' = 1.D0 ; B . 'VAR' . 1 . 'DISC' = discm ; chnor = '/' chnori chmass ; 'RESPRO' chnor ; 'FINPROC' ; * * Tracé des vitesses * 'DEBPROC' TRACVIT ; 'ARGUMENT' rvx*'TABLE' ; lrvx = VRAI ; domz = rvx . 'DOMZ' ; 'SINON' ; rv = rvx ; lrvx = FAUX ; 'ARGUMENT' domz*'MMODEL' ; 'FINSI' ; nuit = rv . 'NUITER' ; chv = rv . 'INCO' . 'UN' ; maxv = 'MAXIMUM' chv 'ABS' ; 'SI' ('<' maxv 1.D-8) ; maxv = 1.D0 ; 'FINSI' ; echvit = maxv ; vref = '/' ('*' echmvi 2.D0) echvit ; * Vecteur unité 'NATURE' 'DISCRET' ; vecvit = vecvit1 'ET' vecvit2 ; tit = 'CHAINE' 'Vitesse ; nuiter=' nuit ' ; echvit=' echvit ; 'SI' lrvx ; 'RESPRO' mat chpo ; 'SINON' ; 'FINSI' ; 'FINPROC' ; * * Imposition d'une force * 'DEBPROC' KTOIM ; 'ARGUMENT' rvx*'TABLE' ; for = rvx . 'ARG1' ; nominc = 'EXTRAIRE' (rvx . 'LISTINCO') 1 ; ni1 = 'CHAINE' '1' nominc ; ni2 = 'CHAINE' '2' nominc ; * Matrice masse numop = 2 ; numder = idim ; numvar = 2 ; numdat = 0 ; numcof = 0 ; A . 'VAR' . 1 . 'DISC' = 'QUAF' ; A . 'VAR' . 1 . 'VALEUR' = for ; A . 'VAR' . 2 . 'DISC' = 'QUAF' ; A . 'VAR' . 2 . 'VALEUR' = for ; B . 'VAR' . 1 . 'DISC' = 'QUAF' ; B . 'VAR' . 2 . 'DISC' = 'QUAF' ; 'RESPRO' forint matvid ; 'FINPROC' ; * * Bloquage des vitesses suivant un champ de normale * 'DEBPROC' KBLOQ ; 'ARGUMENT' rvx*'TABLE' ; 'SI' ('EXISTE' rvx 'MATRICE') ; mnormal = rvx . 'MATRICE' ; 'SINON' ; vnormal = rv . 'VNORMAL' ; nominc = 'EXTRAIRE' (rvx . 'LISTINCO') 1 ; ni1 = 'CHAINE' '1' nominc ; ni2 = 'CHAINE' '2' nominc ; mnormal = 'KOPS' 'CHANINCO' mn rvx . 'MATRICE' = mnormal ; 'FINSI' ; 'RESPRO' chvid mnormal ; 'FINPROC' ; * * Maillage * * Paramètres Rgrand = 1. ; Dpetit = 1. ; ang = 45. ; dang = 10. ; den = 0.1 ; 'DENS' den ; * Points p0 = 0. 0. ; p1 = 0. ('*' Rgrand -1.) ; * Contour cmt = l1 'ET' l2 'ET' l3 'ET' l4 ; _cmt = cmt ; mt = 'SURFACE' cmt ; _mt = 'CHANGER' mt 'QUAF' ; * * Normale au contour * * * Discrétisation * disv = 'QUAF' ; disp = 'CENTREP1' ; dec = 'CENTREE' ; * Re = 30. ; dif = '/' 1. Re ; omeg = 1. ; nitmax = 5 ; xfor = '**' 3. 0.5 ; yfor = PI ; * 'SI' graph ; vtot = 'ET' vvno vfno ; tit = 'CHAINE' 'Maillage' ' ' 'Jaune:normale' ' ' 'Rouge:force imposee' ; 'TRACER' vtot _mt 'TITR' tit ; 'FINSI' ; * $mt = 'MODELISER' _mt 'NAVIER_STOKES' disv ; $cmt = 'MODELISER' cmt 'NAVIER_STOKES' disv ; mp1 = 'MANUEL' ppres 'POI1' ; * 'SI' graph ; rv = 'EQEX' rv 'ZONE' $mt 'OPER' 'TRACVIT' ; 'FINSI' ; * rv = 'EQEX' rv 'OPTI' 'EF' 'IMPL' dec disp 'ZONE' $mt 'OPER' 'KONV' 1. 'UN' dif 'INCO' 'UN' 'OPTI' 'EF' 'IMPL' dec disp 'FTAU' 'ZONE' $mt 'OPER' 'LAPN' dif 'INCO' 'UN' 'OPTI' 'EF' 'IMPL' dec disp ; * 'OPTI' 'EF' 'IMPL' 'CENTREE' disp * 'ZONE' $mt 'OPER' 'DFDT' 1. 'UNM' 'DT' 'UN' dif 'INCO' 'UN' ; rv = 'EQEX' rv 'ZONE' $cmt 'OPER' 'KTOIM' fnormal 'INCO' 'UN' ; rv = 'EQEX' rv 'ZONE' $cmt 'OPER' 'KBLOQ' 'INCO' 'UN' ; rv = 'EQEX' rv 'CLIM' 'PN' 'TIMP' mp1 0. ; rv . 'INCO' = 'TABLE' 'INCO' ; rv . 'VNORMAL' = vnormal ; * EXEC rv ; * 'SI' graph ; TRACVIT rv $mt ; tit = 'CHAINE' 'Fonction de courant ; Re=' Re ; 'TRACER' fcou _mt _cmt 'TITR' tit ; MONTAGNE fcou _mt 'TITRE' tit 'SUPER' ; 'FINSI' ; * * Vérification que la vitesse est bien orthogonale à la normale * vit = rv . 'INCO' . 'UN' ; ps = 'PSCAL' vit vnormal mvit mvit ; mps = 'MAXIMUM' ps 'ABS' ; valim = 1.D-12 ; tst = ('<' mps valim) ; 'SI' ('NON' tst) ; cherr = 'CHAINE' '!!! Erreur, on aurait voulu ' 'mps=' mps ' < ' 'valim=' valim ; 'MESSAGE' cherr ; 'FINSI' ; lok = lok 'ET' tst ; * * Fin du jeu de donnees * 'SAUTER' 2 'LIGNE' ; 'SI' lok ; 'MESSAGE' 'Tout sest bien passe' ; 'SINON' ; 'MESSAGE' 'Il y a eu des erreurs' ; 'FINSI' ; 'SAUTER' 2 'LIGNE' ; 'SI' interact ; 'OPTION' 'DONN' 5 'ECHO' 1 ; 'FINSI' ; 'SI' ('NON' lok) ; 'ERREUR' 5 ; 'FINSI' ; * * End of dgibi file NS1 * 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales