* 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' ; * *====================== * 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 ; * * Maillage et table DOMAINE * * *======================== * 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 ; * * 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' ; RV1.'DT' = DELTA_T ; RV1.'INCO'.'DT' = RV1.'DT' ; * *--- EF avec inconnue auxiliaire au SOMMET * RV2 = 'EQEX' $DOMAI1 'ITMA' NITER1 'OPTI' 'EF' 'IMPL' 'CENTREE' 'OPTI' 'EF' 'IMPL' 'CENTREE' 'OPTI' 'EF' 'IMPL' 'CENTREE' ; RV2.'DT' = DELTA_T ; RV2.'INCO'.'DT' = RV2.'DT' ; * *--- EF avec inconnue auxiliaire au CENTRE * RV3 = 'EQEX' $DOMAI1 'ITMA' NITER1 'OPTI' 'VF' 'IMPL' 'CENTREE' 'OPTI' 'EF' 'IMPL' 'CENTREE' 'OPTI' 'EF' 'IMPL' 'CENTREE' ; RV3.'DT' = DELTA_T ; RV3.'INCO'.'DT' = RV3.'DT' ; * *--- VF avec inconnue auxiliaire au CENTRE * RV4 = 'EQEX' $DOMAI1 'ITMA' NITER1 'OPTI' 'VF' 'IMPL' 'CENTREE' 'OPTI' 'VF' 'IMPL' 'CENTREE' 'OPTI' 'VF' 'IMPL' 'CENTREE' ; RV4.'DT' = DELTA_T ; RV4.'INCO'.'DT' = RV4.'DT' ; * *--- VF avec inconnue auxiliaire au SOMMET * RV5 = 'EQEX' $DOMAI1 'ITMA' NITER1 'OPTI' 'EF' 'IMPL' 'CENTREE' 'OPTI' 'VF' 'IMPL' 'CENTREE' 'OPTI' 'VF' 'IMPL' 'CENTREE' ; RV5.'DT' = DELTA_T ; RV5.'INCO'.'DT' = RV5.'DT' ; * * *=========================== * RESOLUTION DU TRANSITOIRE *=========================== * EXEC rv1 ; EXEC rv2 ; EXEC rv3 ; EXEC rv4 ; EXEC rv5 ; * *======================== * TEST DE NON REGRESSION *======================== * DSOL2 = MASKM2 ; DSOL3 = MASKM3 ; 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) ; TOL1 = 1.D-13 ; 'MESS' 'Cumul Erreur :' OK1 'Tolerance :' TOL1 ; 'SI' ( OK1 > TOL1) ; 'SINO' ; 'FINS' ; * *================= * Post-traitement *================= * 'SI' ('NEG' GRAPH 'N') ; * 'TITR' 'Solution exacte EFM1' ; 'TITR' 'Solution K2000 EFM1' ; 'TITR' 'Erreur Relative EFM1' ; * 'TITR' 'Solution exacte EF' ; * 'TITR' 'Solution exacte VF' ; 'TRAC' MO1 DS1 ; 'TRAC' MO1 DS3 ; 'TRAC' MO1 DS5 ; 'TRAC' MO1 DS2 ; 'TRAC' MO1 DS4 ; 'FINS' ; 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales