* fichier : dfdtsour.dgibi
*
******************** cas test dfdtsour.dgibi ************************
*
*
*--------------------------------------------------------------------
* Test élémentaire de l'opérateur DFDT (discrétisation temporelle).
*--------------------------------------------------------------------
* On résoud dc/dt = s avec s densité de source ([c]/s/m3) :
* L'opérateur DFDT discrétise la dérivée en temps;
* L'opérateur FIMP discrétise la densité de source en EFM1;
* L'opérateur ECHI discrétise la densité de source en EF.
* La condition initiale c(x,t=0) vaut 0.1 et s est constant au cours
* du temps, égale à 1 (resp. 0.) sur le demi-domaine gauche (resp.
* droit).
* La solution au cours du temps est c(x,t) = c(x,t=0) + t*s0
* où s0 est égale à 0.1 pour les points situés à la frontière gauche,
* 0.05 pour les points situé sur la séparation entre les deux demi
* domaine et 0. pour les points situés à la frontière droite.
*
* +-----------+------------+--------------------------+
* | Temps | Espace | Décentrement |
* | IMPL EXPL | EFM1 EF VF | CENTREE SUPGDC SUPG TVIS |
* +------+-----------+------------+--------------------------+
* | DFDT | x - | x x x | x sans interet ici |
* +------+-----------+------------+--------------------------+
*
* FIMP : Compatible avec DFDT en EFM1
* ECHI : Compatible avec DFDT en EF et VF pour un champ scalaire
*
* Pour utiliser ECHI on introduit une inconnue auxiliaire nulle t :
* dc/dt + h(t-s) = 0
* h(t-t0) = 0
* avec h=1 et t0=0
* On s'amuse à considérer t au CENTRE ou t au SOMMET.
*
*--------------------------------------------------------------------
* Auteurs : L.ARNAUD et F.DABBENE (TTMF & LESY) 08/97
*--------------------------------------------------------------------
*
GRAPH = 'N' ;
'OPTI' 'DIME' 2 'ELEM' 'QUA4' 'ECHO' 0 ;
*
*======================
* CREATION DU MAILLAGE
*======================
*
* Points
*
A = 0.D0 0.D0 ;
B = 0.D0 0.1D0 ;
C = 0.1D0 0.1D0 ;
D = 0.1D0 0.D0 ;
*
* 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 ;
MT = CHAN DOMAI1 QUAF ;
$DOMAI1 = 'MODE' MT '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 = 5 ;
DELTA_T = 1.D-1 ;
TFINAL1 = NITER1 * DELTA_T ;
*
* Initialisation de la source
* (attention au signe et au support suivant l'opérateur)
*
SGAU0 = 1.D0 ;
COR1 = 'COOR' 1 (DOMA $DOMAI1 'CENTRE') ;
MASKM1 = (COR1 'MASQ' 'INFERIEUR' 0.05D0) * (1.D0) * SGAU0 ;
COR2 = 'COOR' 1 (DOMA $DOMAI1 'SOMMET') ;
MASKM2 = (COR2 'MASQ' 'INFERIEUR' 0.05D0) * SGAU0 ;
MASKM3 = (COR1 'MASQ' 'INFERIEUR' 0.05D0) * SGAU0 ;
*
* Création des modèles numériques
*
*--- EFM1
*
RV1 = 'EQEX' $DOMAI1 'ITMA' NITER1
'OPTI' 'EF' 'IMPL'
'ZONE' $DOMAI1 'OPER' 'FIMP' 'CO11' 'INCO' 'XI'
'OPTI' 'EFM1' 'IMPL' 'CENTREE'
'ZONE' $DOMAI1 'OPER' 'DFDT' 'COEF' 'XI' 'DT' 'UN' 1.e-20 'INCO' 'XI'
;
RV1.'DT' = DELTA_T ;
RV1.'INCO'.'CO11' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' MASKM1 ;
RV1.'INCO'.'XI' = 'KCHT' $DOMAI1 'SCAL' 'SOMMET' 0.1D0 ;
RV1.'INCO'.'UN' = 'KCHT' $DOMAI1 'VECT' 'SOMMET' (0.D0 0.D0) ;
RV1.'INCO'.'COEF' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 1.D0 ;
RV1.'INCO'.'DT' = RV1.'DT' ;
*
*--- EF avec inconnue auxiliaire au SOMMET
*
RV2 = 'EQEX' $DOMAI1 'ITMA' NITER1
'OPTI' 'EF' 'IMPL' 'CENTREE'
'ZONE' $DOMAI1 'OPER' 'ECHI' 1.D0 0.D0 'INCO' 'TS'
'OPTI' 'EF' 'IMPL' 'CENTREE'
'ZONE' $DOMAI1 'OPER' 'ECHI' 1.D0 'SOU1' 'INCO' 'TS' 'XI'
'OPTI' 'EF' 'IMPL' 'CENTREE'
'ZONE' $DOMAI1 'OPER' 'DFDT' 'COEF' 'XI' 'DT' 'UN' 1.e-20 'INCO' 'XI'
;
RV2.'DT' = DELTA_T ;
RV2.'INCO'.'SOU1' = 'KCHT' $DOMAI1 'SCAL' 'SOMMET' MASKM2 ;
RV2.'INCO'.'TS' = 'KCHT' $DOMAI1 'SCAL' 'SOMMET' 0.D0 ;
RV2.'INCO'.'XI' = 'KCHT' $DOMAI1 'SCAL' 'SOMMET' 0.1D0 ;
RV2.'INCO'.'UN' = 'KCHT' $DOMAI1 'VECT' 'SOMMET' (0.D0 0.D0) ;
RV2.'INCO'.'COEF' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 1.D0 ;
RV2.'INCO'.'DT' = RV2.'DT' ;
*
*--- EF avec inconnue auxiliaire au CENTRE
*
RV3 = 'EQEX' $DOMAI1 'ITMA' NITER1
'OPTI' 'VF' 'IMPL' 'CENTREE'
'ZONE' $DOMAI1 'OPER' 'ECHI' 1.D0 0.D0 'INCO' 'TC'
'OPTI' 'EF' 'IMPL' 'CENTREE'
'ZONE' $DOMAI1 'OPER' 'ECHI' 1.D0 'SOU1' 'INCO' 'TC' 'XI'
'OPTI' 'EF' 'IMPL' 'CENTREE'
'ZONE' $DOMAI1 'OPER' 'DFDT' 'COEF' 'XI' 'DT' 'UN' 1.e-20 'INCO' 'XI'
;
RV3.'DT' = DELTA_T ;
RV3.'INCO'.'SOU1' = 'KCHT' $DOMAI1 'SCAL' 'SOMMET' MASKM2 ;
RV3.'INCO'.'TC' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 0.D0 ;
RV3.'INCO'.'XI' = 'KCHT' $DOMAI1 'SCAL' 'SOMMET' 0.1D0 ;
RV3.'INCO'.'UN' = 'KCHT' $DOMAI1 'VECT' 'SOMMET' (0.D0 0.D0) ;
RV3.'INCO'.'COEF' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 1.D0 ;
RV3.'INCO'.'DT' = RV3.'DT' ;
*
*--- VF avec inconnue auxiliaire au CENTRE
*
RV4 = 'EQEX' $DOMAI1 'ITMA' NITER1
'OPTI' 'VF' 'IMPL' 'CENTREE'
'ZONE' $DOMAI1 'OPER' 'ECHI' 1.D0 0.D0 'INCO' 'TC'
'OPTI' 'VF' 'IMPL' 'CENTREE'
'ZONE' $DOMAI1 'OPER' 'ECHI' 1.D0 'SOU1' 'INCO' 'TC' 'XI'
'OPTI' 'VF' 'IMPL' 'CENTREE'
'ZONE' $DOMAI1 'OPER' 'DFDT' 'COEF' 'XI' 'DT' 'UN' 1.e-20 'INCO' 'XI'
;
RV4.'DT' = DELTA_T ;
RV4.'INCO'.'SOU1' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' MASKM3 ;
RV4.'INCO'.'TC' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 0.D0 ;
RV4.'INCO'.'XI' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 0.1D0 ;
RV4.'INCO'.'UN' = 'KCHT' $DOMAI1 'VECT' 'SOMMET' (0.D0 0.D0) ;
RV4.'INCO'.'COEF' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 1.D0 ;
RV4.'INCO'.'DT' = RV4.'DT' ;
*
*--- VF avec inconnue auxiliaire au SOMMET
*
RV5 = 'EQEX' $DOMAI1 'ITMA' NITER1
'OPTI' 'EF' 'IMPL' 'CENTREE'
'ZONE' $DOMAI1 'OPER' 'ECHI' 1.D0 0.D0 'INCO' 'TS'
'OPTI' 'VF' 'IMPL' 'CENTREE'
'ZONE' $DOMAI1 'OPER' 'ECHI' 1.D0 'SOU1' 'INCO' 'TS' 'XI'
'OPTI' 'VF' 'IMPL' 'CENTREE'
'ZONE' $DOMAI1 'OPER' 'DFDT' 'COEF' 'XI' 'DT' 'UN' 1.e-20 'INCO' 'XI'
;
RV5.'DT' = DELTA_T ;
RV5.'INCO'.'SOU1' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' MASKM3 ;
RV5.'INCO'.'TS' = 'KCHT' $DOMAI1 'SCAL' 'SOMMET' 0.D0 ;
RV5.'INCO'.'XI' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 0.1D0 ;
RV5.'INCO'.'UN' = 'KCHT' $DOMAI1 'VECT' 'SOMMET' (0.D0 0.D0) ;
RV5.'INCO'.'COEF' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 1.D0 ;
RV5.'INCO'.'DT' = RV5.'DT' ;
*
*
*===========================
* RESOLUTION DU TRANSITOIRE
*===========================
*
EXEC rv1 ;
EXEC rv2 ;
EXEC rv3 ;
EXEC rv4 ;
EXEC rv5 ;
*
*========================
* TEST DE NON REGRESSION
*========================
*
DSOL1 = 'ELNO' $DOMAI1 ('KCHT' $DOMAI1 'SCAL' 'CENTRE' (1.d0*MASKM1));
DSOL2 = MASKM2 ;
DSOL3 = MASKM3 ;
SOL0 = 'MANU' 'CHPO' (DOMA $DOMAI1 'MAILLAGE') 1 'SCAL' 0.1D0 ;
SOL00 = 'MANU' 'CHPO' (DOMA $DOMAI1 'CENTRE') 1 'SCAL' 0.1D0 ;
SOL1 = TFINAL1 * DSOL1 + SOL0 ;
SOL2 = TFINAL1 * DSOL2 + SOL0 ;
SOL3 = TFINAL1 * DSOL3 + SOL00;
ERR1 = 'ABS' (RV1.'INCO'.'XI' - SOL1 / SOL1) ;
ERR2 = 'ABS' (RV2.'INCO'.'XI' - SOL2 / SOL2) ;
ERR3 = 'ABS' (RV3.'INCO'.'XI' - SOL2 / SOL2) ;
ERR4 = 'ABS' (RV4.'INCO'.'XI' - SOL3 / SOL3) ;
ERR5 = 'ABS' (RV5.'INCO'.'XI' - SOL3 / SOL3) ;
OK1 = 'MAXI' (ERR1+ERR2+ERR3+ERR4+ERR5) ;
TOL1 = 1.D-13 ;
'SAUT' 5 'LIGNE' ;
'MESS' 'Cumul Erreur :' OK1 'Tolerance :' TOL1 ;
'SI' ( OK1 > TOL1) ;
'ERRE' 5 ;
'SINO' ;
'ERRE' 0 ;
'FINS' ;
*
*=================
* Post-traitement
*=================
*
'SI' ('NEG' GRAPH 'N') ;
MO1 = 'MODE' (DOMA $DOMAI1 'MAILLAGE') 'THERMIQUE' ;
$$DOMAI1 = DOMA $DOMAI1 'TABLE' ;
DS1 = 'KCHA' $$DOMAI1 'CHAM' SOL3 ;
DS2 = 'KCHA' $$DOMAI1 'CHAM' (RV4.'INCO'.'XI') ;
DS3 = 'KCHA' $$DOMAI1 'CHAM' (RV5.'INCO'.'XI') ;
DS4 = 'KCHA' $$DOMAI1 'CHAM' ERR4 ;
DS5 = 'KCHA' $$DOMAI1 'CHAM' ERR5 ;
*
'TITR' 'Solution exacte EFM1' ;
'TRAC' (DOMA $DOMAI1 'MAILLAGE') SOL1 ;
'TITR' 'Solution K2000 EFM1' ;
'TRAC' (DOMA $DOMAI1 'MAILLAGE') RV1.'INCO'.'XI' ;
'TITR' 'Erreur Relative EFM1' ;
'TRAC' (DOMA $DOMAI1 'MAILLAGE') ERR1 ;
*
'TITR' 'Solution exacte EF' ;
'TRAC' (DOMA $DOMAI1 'MAILLAGE') SOL2 ;
'TITR' 'Solution K2000 EF, ECHI au SOMMET' ;
'TRAC' (DOMA $DOMAI1 'MAILLAGE') RV2.'INCO'.'XI' ;
'TITR' 'Erreur Relative EF, ECHI au SOMMET' ;
'TRAC' (DOMA $DOMAI1 'MAILLAGE') ERR2 ;
'TITR' 'Solution K2000 EF, ECHI au CENTRE' ;
'TRAC' (DOMA $DOMAI1 'MAILLAGE') RV3.'INCO'.'XI' ;
'TITR' 'Erreur Relative EF, ECHI au CENTRE' ;
'TRAC' (DOMA $DOMAI1 'MAILLAGE') ERR3 ;
*
'TITR' 'Solution exacte VF' ;
'TRAC' MO1 DS1 ;
'TITR' 'Solution K2000 VF, ECHI AU SOMMET' ;
'TRAC' MO1 DS3 ;
'TITR' 'Erreur Relative VF, ECHI AU SOMMET' ;
'TRAC' MO1 DS5 ;
'TITR' 'Solution K2000 VF, ECHI AU CENTRE' ;
'TRAC' MO1 DS2 ;
'TITR' 'Erreur Relative VF, ECHI AU CENTRE' ;
'TRAC' MO1 DS4 ;
'FINS' ;
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer