Download dfdtsour.dgibi

Back to the list

* 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