* fichier :  mdiavf.dgibi
************************************************************************
* Section : Fluides Transitoire
************************************************************************
*
********************** cas test mdiavf.dgibi ************************
*
*
*--------------------------------------------------------------------
* Test élémentaire des opérateurs DFDT et MDIA en Volumes Finis
* et en formulation EFM1.
*--------------------------------------------------------------------
* On résoud dc/dt + ac = 0 avec a coefficient de décroissance ([c]/s)
*    L'opérateur DFDT discrétise la dérivée en temps;
*    L'opérateur MDIA discrétise la décroissance.
* La condition initiale c(x,y,t=0) vaut x+y et a est constant au cours
* du temps, égale à x.
* La solution est c(x,y,t) = c0 exp(-at) = (x+y) exp (-xt)
* La solution calculée est entachée d'une erreur de discrétisation
* temporelle. Cette erreur est de l'ordre de a*a*tfinal*deltat.
*
*         +-----------+------------+--------------------------+
*         |   Temps   |   Espace   |       Décentrement       |
*         | IMPL EXPL | EFM1 EF VF | CENTREE SUPGDC SUPG TVIS |
*  +------+-----------+------------+--------------------------+
*  | DFDT |  x    -   |  x   -  x  |    x    sans interet ici |
*  | MDIA |  x    0   |  x   0  x  |    x    0      0     0   |
*  +------+-----------+------------+--------------------------+
*
*    0 = non disponible; - = non testé ici; x = testé ici
*
*--------------------------------------------------------------------
* Auteur : F.DABBENE (TTMF)                                     12/97
*--------------------------------------------------------------------
*
GRAPH = 'N' ;
'OPTI' 'DIME' 2 'ELEM' 'QUA4' 'ECHO' 0 'TRAC' 'PS' ;
*
*======================
* CREATION DU MAILLAGE
*======================
*
* Points
*
A = 0.1D0  0.1D0 ;
B = 0.1D0  1.0D0 ;
C = 1.0D0  1.0D0 ;
D = 1.0D0  0.1D0 ;
*
* Droites
*
NP1 = 5  ;
AB  = 'DROI' NP1 A B ;
BC  = 'DROI' NP1 B C ;
CD  = 'DROI' NP1 C D ;
DA  = 'DROI' NP1 D A ;
*
* Maillage et table DOMAINE
*
DOMAI1  = 'DALL' AB BC CD DA ;
MDOMAI1 = CHAN DOMAI1 QUAF ;
$DOMAI1 = 'MODE' MDOMAI1 'NAVIER_STOKES' LINE ;
*
*========================
* DEFINITION DU PROBLEME
*========================
*
* Initialisation des données temporelles
*
* NITER1  : Nombre de pas de temps
* DELTA_T : Valeur du pas de temps
*
NITER1  = 10 ;
DELTA_T = 1.D-1 ;
TFINAL1 = NITER1 * DELTA_T ;
*
* Récupération des coordonnées pour initialisation
*
XC1 YC1 = 'COOR' (DOMA $DOMAI1 'CENTRE')  ;
XS1 YS1 = 'COOR' (DOMA $DOMAI1 'SOMMET')  ;
*
* Création des modèles numériques
*
*--- EFM1
*
RV1 = 'EQEX' $DOMAI1 'ITMA' NITER1
'OPTI' 'EFM1' 'IMPL' 'CENTREE'
'ZONE' $DOMAI1 'OPER' 'DFDT' 1.D0 'TS' 'DT' 'INCO' 'TS'
'OPTI' 'EFM1' 'IMPL'
'ZONE' $DOMAI1 'OPER' 'MDIA' XS1            'INCO' 'TS'
;
RV1. 'DT'          = DELTA_T ;
RV1. 'INCO' . 'TS' = 'KCHT' $DOMAI1 'SCAL' 'SOMMET' (XS1 + YS1) ;
RV1. 'INCO' . 'DT' = RV1 . 'DT' ;
*
*--- VF
*
$DOMAVF= DOMA $DOMAI1 'TABLE' ;
RV2 = 'EQEX' $DOMAVF 'ITMA' NITER1
'OPTI' 'VF' 'IMPL' 'CENTREE'
'ZONE' $DOMAVF 'OPER' 'DFDT' 1.D0 'TC' 'DT' 'INCO' 'TC'
'OPTI' 'VF' 'IMPL' 'CENTREE'
'ZONE' $DOMAVF 'OPER' 'MDIA' XC1            'INCO' 'TC'
;
RV2. 'DT'          = DELTA_T ;
RV2. 'INCO' . 'TC' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' (XC1+YC1) ;
RV2. 'INCO' . 'DT' = RV2 . 'DT' ;
*
*
*===========================
* RESOLUTION DU TRANSITOIRE
*===========================
*
EXEC rv1 ;
EXEC rv2 ;
*
*=================
* Post-traitement
*=================
*
SOL1 = 'EXP' (-1.D0 * XS1 * TFINAL1) * (XS1 + YS1) ;
SOL2 = 'EXP' (-1.D0 * XC1 * TFINAL1) * (XC1 + YC1) ;
ERR1 = 'ABS' (RV1.'INCO'.'TS' - SOL1) ;
ERR2 = 'ABS' (RV2.'INCO'.'TC' - SOL2) ;
'SI' ('NEG' GRAPH 'N') ;
   MO1 = 'MODE' DOMAI1 'THERMIQUE' ;
   DS1 = 'KCHA' $DOMAVF 'CHAM' SOL2 ;
   DS2 = 'KCHA' $DOMAVF 'CHAM' (RV2.'INCO'.'TC') ;
   DS3 = 'KCHA' $DOMAVF 'CHAM' ERR2 ;
*
  'TRAC' DOMAI1 SOL1 'TITR' 'Solution Exacte EFM1' ;
  'TRAC' DOMAI1 RV1.'INCO'.'TS' 'TITR' 'Castem EFM1' ;
  'TRAC' DOMAI1 ERR1 'TITR' 'Erreur Absolue EFM1' ;
*
  'TRAC' MO1 DS1 'TITR' 'Solution Exacte VF' ;
  'TRAC' MO1 DS2 'TITR' 'Castem VF' ;
  'TRAC' MO1 DS3 'TITR' 'Erreur Absolue VF' ;
'FINS' ;
*
*========================
* TEST DE NON REGRESSION
*========================
*
OK1  = 'MAXI' (ERR1+ERR2) ;
TOL1 = TFINAL1 * DELTA_T / 2. ;
'SAUT' 5 'LIGNE' ;
'MESS' 'Cumul Erreur :' OK1 'Tolerance :' TOL1 ;
'SI' ( OK1 > TOL1) ;
     'ERRE' 5 ;
'SINO' ;
     'ERRE' 0 ;
'FINS' ;
*
'FIN' ;
 

 

 

