* fichier : mdiavf.dgibi
*
********************** 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' ;
© Cast3M 2003 - All rights reserved.
Disclaimer