Download fcourant.procedur

Back to the list

   1 : * FCOURANT  PROCEDUR  GOUNAND   07/12/21    21:15:01     6010           
   2 : ************************************************************************
   3 : * NOM         : FCOURANT
   4 : * DESCRIPTION : Calcul la fonction de courant en 2D et 2D Axi
   5 : *               par une méthode d'éléments finis moindres carrés
   6 : *
   7 : * LANGAGE     : GIBIANE-CAST3M
   8 : * AUTEUR      : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
   9 : *               mél : gounand@semt2.smts.cea.fr
  10 : **********************************************************************
  11 : * VERSION    : v1, 22/11/2007, version initiale
  12 : * HISTORIQUE : v1, 22/11/2007, création
  13 : * HISTORIQUE :
  14 : * HISTORIQUE :
  15 : ************************************************************************
  16 : *
  17 : * Procedure fonction de courant 2D et 2D axi
  18 : * - modns : modele Navier-Stokes
  19 : * - disc  : discretisation des champs au sommet (QUAF ou LINE) 
  20 : * - un    : champ de vitesses
  21 : * - clphi : conditions de Dirichlet sur phi
  22 : *           (nom de composante 'SCAL')
  23 : *
  24 : * en 2D, on résout : dpsi/dx = u_y
  25 : *                    dpsi/dy = -u_x
  26 : * en 2D axi , on résout : dpsi/dr = 2pi r u_z
  27 : *                         dpsi/dz = - 2 pi r u_r
  28 : *
  29 : *
  30 : *
  31 : 'DEBPROC' FCOURANT ;
  32 : *
  33 : 'ARGUMENT' mquaf*'MAILLAGE' ;
  34 : 'ARGUMENT' disc*'MOT' ;
  35 : 'ARGUMENT' un*'CHPOINT' ;
  36 : 'ARGUMENT' clphi/'CHPOINT' ;
  37 : *
  38 : 'SI' ('NON' ('EXISTE' clphi)) ;
  39 :    pref  = 'POIN' ('CHANGER' mquaf 'POI1') 1 ;
  40 :    clphi = 'MANUEL' 'CHPO' pref 1 'SCAL' 0.D0 ;
  41 : 'FINSI' ;
  42 : *
  43 : 'ARGUMENT' rvm/'TABLE' ;
  44 : 'SI' ('NON' ('EXISTE' rvm)) ;
  45 :    rv = 'EQEX' ;
  46 :    rvm = rv . 'METHINV' ;
  47 : 'FINSI' ;   
  48 : *
  49 : dim = 'VALEUR' 'DIME' ;
  50 : *
  51 : 'SI' ('NEG' dim 2) ;
  52 :    'ERREUR' 219 ;
  53 : 'FINSI' ;
  54 : *
  55 : laxi = 'EGA' ('VALEUR' 'MODE') 'AXIS' ;
  56 : ncx = 'MOTS' 'UX' ; ncy = 'MOTS' 'UY' ;
  57 : *
  58 : 'SI' laxi ;
  59 :    cdpr  = '*' ('COORDONNEE' 1 mquaf) ('*' PI 2.D0) ;
  60 :    ur = 'EXCO' ncx un ;
  61 :    uz = 'EXCO' ncy un ;
  62 : *
  63 :    numop  = 2 ; numvar = 1 ; numdat = 0 ;
  64 :    numcof = 0 ; numder = 2 ;
  65 : *
  66 :    A = ININLIN numop numvar numdat numcof numder ;
  67 :    A . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  68 :    A . 'VAR' . 1 . 'DISC'   = disc ;
  69 :    A . 1 . 1 . 1 = 'LECT' ;
  70 :    A . 2 . 1 . 2 = 'LECT' ;
  71 : *
  72 :    numdat = 1 ; numcof = 1 ;
  73 :    B = ININLIN numop numvar numdat numcof numder ;
  74 :    B . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  75 :    B . 'VAR' . 1 . 'DISC'   = disc ;
  76 :    B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  77 :    B . 'DAT' . 1 . 'DISC'   = disc ;
  78 :    B . 'DAT' . 1 . 'VALEUR' = cdpr ;
  79 :    B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
  80 :    B . 'COF' . 1 . 'LDAT'   = 'LECT' 1 ;
  81 : *   
  82 :    B . 1 . 1 . 1 = 'LECT' 1 ;
  83 :    B . 2 . 1 . 2 = 'LECT' 1 ;
  84 : *
  85 :    numvar = 2 ;
  86 :    C = ININLIN numop numvar numdat numcof numder ;
  87 :    C . 'VAR' . 1 . 'NOMDDL' = ncx ;
  88 :    C . 'VAR' . 1 . 'DISC'   = disc ;
  89 :    C . 'VAR' . 1 . 'VALEUR' = '*' ur -1. ;
  90 :    C . 'VAR' . 2 . 'NOMDDL' = ncy ;
  91 :    C . 'VAR' . 2 . 'DISC'   = disc ;
  92 :    C . 'VAR' . 2 . 'VALEUR' = uz ;
  93 :    C . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  94 :    C . 'DAT' . 1 . 'DISC'   = disc ;
  95 :    C . 'DAT' . 1 . 'VALEUR' = cdpr ;
  96 :    C . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
  97 :    C . 'COF' . 1 . 'LDAT'   = 'LECT' 1 ;
  98 : *
  99 :    C . 1 . 2 . 0 = 'LECT' 1 ;
 100 :    C . 2 . 1 . 0 = 'LECT' 1 ;
 101 : *
 102 :    mat = NLIN mquaf disc A B 'GAU7' ;
 103 :    mat = 'KOPS' 'RIMA' mat ;
 104 :    smb = NLIN mquaf disc C B 'GAU7' ;
 105 : *
 106 : 'SINON'  ;
 107 : *
 108 :    ux = 'EXCO' ncx un ;
 109 :    uy = 'EXCO' ncy un ;
 110 : *
 111 :    numop  = 2 ; numvar = 1 ; numdat = 0 ;
 112 :    numcof = 0 ; numder = 2 ;
 113 : *
 114 :    A = ININLIN numop numvar numdat numcof numder ;
 115 :    A . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
 116 :    A . 'VAR' . 1 . 'DISC'   = disc ;
 117 :    A . 1 . 1 . 1 = 'LECT' ;
 118 :    A . 2 . 1 . 2 = 'LECT' ;
 119 : *
 120 :    numvar = 2 ;
 121 :    B = ININLIN numop numvar numdat numcof numder ;
 122 :    B . 'VAR' . 1 . 'NOMDDL' = ncx ;
 123 :    B . 'VAR' . 1 . 'DISC'   = disc ;
 124 :    B . 'VAR' . 1 . 'VALEUR' = '*' ux -1. ;
 125 :    B . 'VAR' . 2 . 'NOMDDL' = ncy ;
 126 :    B . 'VAR' . 2 . 'DISC'   = disc ;
 127 :    B . 'VAR' . 2 . 'VALEUR' = uy ;
 128 : *
 129 :    B . 1 . 2 . 0 = 'LECT' ;
 130 :    B . 2 . 1 . 0 = 'LECT' ;
 131 : *
 132 :    mat = NLIN mquaf disc A A 'GAU7' ;
 133 :    mat = 'KOPS' 'RIMA' mat ;
 134 :    smb = NLIN mquaf disc B A 'GAU7' ;
 135 : 'FINSI' ;
 136 : *
 137 : psi = 'KRES' mat 'TYPI' rvm 'CLIM' clphi 'SMBR' smb ;
 138 : 'RESPRO' psi ;
 139 : *
 140 : 'FINPROC' ;
 141 :  

© Cast3M 2003 - All rights reserved.
Disclaimer