* FCOURANT PROCEDUR GOUNAND 19/07/12 21:15:09 10256 ************************************************************************ * NOM : FCOURANT * DESCRIPTION : Calcul la fonction de courant en 2D et 2D Axi * par une méthode d'éléments finis moindres carrés * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 22/11/2007, version initiale * HISTORIQUE : v1, 22/11/2007, création * HISTORIQUE : 2018/10/15 : 2eme forme en axi + (fiche 9973) * composantes UR et UZ par defaut * recodage, utilisation RESO par defaut, utilisation GIBI.ERREUR * HISTORIQUE : 2019/07/10 : choix de la forme normale par défaut * sinon sur hsu5 compressible mail 11 pour rho u, on a des * recirculations bizarres près de l'axe et des valeurs * négatives de flux. (fiche 10256) * HISTORIQUE : ************************************************************************ * * Procedure fonction de courant 2D et 2D axi * * psi est la fonction de courant (streamfunction) * en 2D, on résout : dpsi/dx = u_y * dpsi/dy = - u_x * * psi est la fonction de courant (Stokes streamfunction) * B_\theta = psi / r est le potentiel vecteur (B_r = B_z =0) * * * en 2D axi , on résout soit la forme "regularisee" : * dpsi/dr = 2 pi r u_z * dpsi/dz = - 2 pi r u_r * soit la forme "normale" : * ou : 1/(2 pi r) dpsi/dr = u_z * 1/(2 pi r) dpsi/dz = - u_r * * Par defaut on resout la forme normale. On ne le met pas dans la * notice par souci de simplicite. * Il y a encore une autre forme intermédiaire avec des racines de * (2 pi r) * * * 'ARGUMENT' mail*'MAILLAGE' ; 'ARGUMENT' un*'CHPOINT' ; * * Verif que un est bien defini sur mail * * 771 0 ATTENTION !!! Le CHPOINT ne definit pas de valeur au noeud %i1 'FINS' ; * 'ARGUMENT' rigblo/'RIGIDITE' ; lrb = 'EXISTE' rigblo ; 'SI' lrb ; 'ARGUMENT' chblo/'CHPOINT' ; lcb = 'EXISTE' chblo ; 'SINON' ; lcb = FAUX ; 'FINSI' ; * 'SI' ('NON' ('EXISTE' rigblo)) ; 'FINSI' ; * 'ARGUMENT' rvm/'TABLE' ; 'SI' ('NON' ('EXISTE' rvm)) ; typsolv = 0 ; 'SINO' ; typsolv = 1 ; 'FINSI' ; * * 'SI' ('NEG' dim 2) ; * 709 2 * Fonction indisponible en dimension %i1. 'ERREUR' 709 'AVEC' dim ; 'FINSI' ; * * 'SI' laxi ; * Forme regularisee ou normale 'FINS' ; *1052 2 *Mot-cle incorrect "%M1:4". Voici la liste des valeurs admises : *1052 2 *%M5:40 'SI' ('EGA' iform 0) ; 'FINS' ; * iform = 0 : régularisée * iform = 1 : standard *dbg 'SI' ('EGA' iform 1) ; *dbg 'MESS' 'FCOURANT Axi : forme regularisee' ; *dbg 'SINO' ; *dbg 'MESS' 'FCOURANT Axi : forme normale' ; *dbg 'FINS' ; * Si on ne trouve pas de composantes UR ou UZ dans le champ un en entree * mais des composantes UX,UY alors on les autorise car c'est la * convention de nommage avec EQEX et EXEC... 'FINS' ; 'FINS' ; * cdpr = '*' ('COORDONNEE' 1 mail) ('*' PI 2.D0) ; * 'SI' ('EGA' iform 1) ; * Cas 2D Axi Forme regularisee numop = 2 ; numvar = 1 ; numder = 2 ; numdat = 1 ; numcof = 1 ; * A . 'VAR' . 1 . 'DISC' = disc ; * A . 'DAT' . 1 . 'DISC' = 'CSTE' ; A . 'DAT' . 1 . 'VALEUR' = -1. ; A . 'COF' . 1 . 'COMPOR' = 'IDEN' ; * * numdat = 2 ; numcof = 2 ; B . 'VAR' . 1 . 'DISC' = disc ; * B . 'DAT' . 1 . 'DISC' = 'CSTE' ; B . 'DAT' . 1 . 'VALEUR' = -1. ; B . 'COF' . 1 . 'COMPOR' = 'IDEN' ; * B . 'DAT' . 2 . 'DISC' = disc ; B . 'DAT' . 2 . 'VALEUR' = cdpr ; B . 'COF' . 2 . 'COMPOR' = 'IDEN' ; * * numvar = 2 ; numdat = 1 ; numcof = 1 ; C . 'VAR' . 1 . 'NOMDDL' = ncr ; C . 'VAR' . 1 . 'DISC' = disc ; C . 'VAR' . 1 . 'VALEUR' = un ; C . 'VAR' . 2 . 'NOMDDL' = ncz ; C . 'VAR' . 2 . 'DISC' = disc ; C . 'VAR' . 2 . 'VALEUR' = un ; C . 'DAT' . 1 . 'DISC' = disc ; C . 'DAT' . 1 . 'VALEUR' = cdpr ; C . 'COF' . 1 . 'COMPOR' = 'IDEN' ; * 'SINO' ; * Cas 2D Axi Forme normale numop = 2 ; numvar = 1 ; numder = 2 ; numdat = 2 ; numcof = 2 ; * A . 'VAR' . 1 . 'DISC' = disc ; * A . 'DAT' . 1 . 'DISC' = 'CSTE' ; A . 'DAT' . 1 . 'VALEUR' = -1. ; A . 'COF' . 1 . 'COMPOR' = 'IDEN' ; * A . 'DAT' . 2 . 'DISC' = disc ; A . 'DAT' . 2 . 'VALEUR' = cdpr ; A . 'COF' . 2 . 'COMPOR' = 'IDEN' ; * numdat = 1 ; numcof = 1 ; B . 'VAR' . 1 . 'DISC' = disc ; * B . 'DAT' . 1 . 'DISC' = 'CSTE' ; B . 'DAT' . 1 . 'VALEUR' = -1. ; B . 'COF' . 1 . 'COMPOR' = 'IDEN' ; * * numvar = 2 ; numdat = 0 ; numcof = 0 ; C . 'VAR' . 1 . 'NOMDDL' = ncr ; C . 'VAR' . 1 . 'DISC' = disc ; C . 'VAR' . 1 . 'VALEUR' = un ; C . 'VAR' . 2 . 'NOMDDL' = ncz ; C . 'VAR' . 2 . 'DISC' = disc ; C . 'VAR' . 2 . 'VALEUR' = un ; * 'FINS' ; * 'SINON' ; * Cas 2D PLAN * numop = 2 ; numvar = 1 ; numder = 2 ; numdat = 1 ; numcof = 1 ; * A . 'VAR' . 1 . 'DISC' = disc ; A . 'DAT' . 1 . 'DISC' = 'CSTE' ; A . 'DAT' . 1 . 'VALEUR' = -1 ; A . 'COF' . 1 . 'COMPOR' = 'IDEN' ; * B . 'VAR' . 1 . 'DISC' = disc ; B . 'DAT' . 1 . 'DISC' = 'CSTE' ; B . 'DAT' . 1 . 'VALEUR' = -1 ; B . 'COF' . 1 . 'COMPOR' = 'IDEN' ; * numvar = 2 ; numdat = 0 ; numcof = 0 ; C . 'VAR' . 1 . 'NOMDDL' = ncx ; C . 'VAR' . 1 . 'DISC' = disc ; C . 'VAR' . 1 . 'VALEUR' = un ; C . 'VAR' . 2 . 'NOMDDL' = ncy ; C . 'VAR' . 2 . 'DISC' = disc ; C . 'VAR' . 2 . 'VALEUR' = un ; * 'FINSI' ; * mat = NLINP mquaf disc A B 'GAU7' ; * Remettre la symetrie si necessaire * Au 2018/10/19 : le test de symetrie de RESO est assez contraignant * pour que cela ne marche pas ! *lpri = 'EXTR' mat 'COMP' ; *ldua = 'EXTR' mat 'COMP' 'DUAL' ; *mat = 'CHAN' 'INCO' mat lpri lpri ldua ldua 'SYME' ; *old mat = 'KOPS' 'RIMA' mat ; smb = NLINP mquaf disc C B 'GAU7' ; mtot = mat 'ET' rigblo ; ftot = smb ; 'SI' lcb ; ftot = 'ET' ftot chblo ; 'FINS' ; * 'SI' ('EGA' typsolv 0) ; 'SINO' ; 'FINS' ; 'RESPRO' psi ; * 'FINPROC' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales