* fichier : exemple_parather.dgibi
************************************************************************
* Section : Thermique Convection
************************************************************************

*-----------------------------------------------------------------------
*FRA  Exemple simple d'utilisation de la procedure utilisateur PARATHER 
*     Simulation axisymetrique d'une trempe sur un cylindre avec echange
*     convectif avec l'air ambient. La conductivite du tube est fonction
*     de la temperature T.
*-----------------------------------------------------------------------
*ENG  Easy example for using the user procedure PARATHER                
*     Axisymetric modelisation of a tube quenching with convective heat 
*     exchange with ambient atmosphere. The tube heat conductivity is a 
*     function of the temperature T.                                    
*-----------------------------------------------------------------------
'OPTION' 'ECHO' 1 ;
OPTI DEBU 1;

* *****        *********************         *******************
* * 1 *  (FRA) Definitions generales - (ENG) General definitions
* *****        *********************         *******************

'OPTION' 'DIME' 2 'ELEM' QUA4 'MODE' AXIS ;

* (FRA) Definition du maillage - (ENG) Mesh definition
*       ----------------------         ---------------
PD =  0.  0. ;
PC = 0.1  0. ;
PB = 0.1 0.02 ;
PA =  0. 0.02 ;
D1 = 'DROITE' 20 PD PC ;
Tube = 'TRANSLATION' 1 D1 (0. 0.02) ;

D2 = 'COTE' 2 Tube ;
D3 = 'COTE' 3 Tube ;
D4 = 'COTE' 4 Tube ;

pt_TC2 = Tube 'POINT' 'PROC' (0.095 0.) ;
pt_TC1 = Tube 'POINT' 'PROC' (0.05 0.) ;
** 'TRACER' Tube ;

* (FRA) Definition des modeles thermiques (conduction et convection)
* (ENG) Thermic models definition (conduction and convective exchange)
*       --------------------------------------------------------------
Mod_Tube = 'MODELISER' Tube 'THERMIQUE' 'ISOTROPE' ;
Mod_Teco = 'MODELISER' D2 'THERMIQUE' 'CONVECTION' ;
ModTot = Mod_Tube 'ET' Mod_Teco ;

* (FRA) Defintion du modele de convection
* (ENG) Convective model definition
*       ---------------------------------
Mat_Teco = 'MATERIAU' Mod_TECO 'H   ' 1515. ;

* (FRA) Chargement convectif - Temperature constante de l'air ambient
* (ENG) Convective loading - The temperature room is constant
*       -------------------------------------------------------------
T_air = 25. ;
EvTECO = 'EVOL' 'MANU' 'TEMPS' ('PROG' 0. 1.E+9)
                       'T'     ('PROG' 1. 1.)  ;
ChpTECO  = 'MANU' 'CHPO' D2 1 'T' T_air      ;
CharTECO = 'CHARGEMENT' 'TECO' ChpTECO EvTECO  ;

* (FRA) Temperature initiale du tube uniforme
* (ENG) The initial temperature of the tube is uniform
*       ----------------------------------------------
T_ini = 800. ;
ChpT0 = 'MANU' 'CHPO' Tube 1 'T   ' T_ini ;

* (FRA) Instants calcules et sauves - (ENG) Calculated and saved times
*       --------------------------------------------------------------
l_tcalc = 'PROG' 0. 'PAS' 10. 400. ;
l_tsauv = 'PROG' 0. 10. 20. 30. 40. 50. 'PAS' 50. 400. ;

* *****        ******************************************
* * 2 *  (FRA) Calcul de reference - PASAPAS standard
* *   *  (ENG) Reference calculus - standard PASAPAS call
* *****        ******************************************

* (FRA) Defintion de la conductivite du tube (fonction de T)
* (ENG) Conductivity tube definition (temperature function)
*       ----------------------------------------------------
EvK = 'EVOL' 'MANU' 'T   ' ('PROG' 0. 2000.) 'K   ' ('PROG' 10. 30.) ;
Mat_Tube = 'MATERIAU' Mod_Tube 'K   ' EvK 'C   ' 400. 'RHO ' 7800. ;
MatTot = Mat_Tube 'ET' Mat_Teco ;

* (FRA) Appel a PASAPAS-TRANSNON - (ENG) PASAPAS-TRANSNON call
*       ------------------------         ---------------------
ETAB1 = 'TABLE' ;
ETAB1.'TEMPS_SAUVES' = l_tsauv ;
ETAB1.'TEMPS_CALCULES' = l_tcalc ;
ETAB1.'TEMPERATURES' = 'TABLE' ;
ETAB1.'TEMPERATURES'. 0 = ChpT0 ;
ETAB1.'MODELE' = ModTot ;
ETAB1.'CARACTERISTIQUES' = MatTot ;
ETAB1.'CHARGEMENT' = CharTECO ;
ETAB1.'PROCEDURE_THERMIQUE' = 'MOT' 'NONLINEAIRE' ;
ETAB1.'RELAXATION_THETA' = 1. ;

PASAPAS ETAB1 ;

* (FRA) Depouillement des resultats - (ENG) Results extraction
*       ---------------------------         ------------------
TEMP1_1 = 'PROG' ;  TEMP2_1 = 'PROG' ;
I = 0 ;
'REPETER' Boucle ('DIMENSION' ETAB1.'TEMPS') ;
  Tps = ETAB1.'TEMPS'.I ;
  T1 = 'EXTRAIRE' (ETAB1.'TEMPERATURES'.I) 'T  ' pt_TC1 ;
  T2 = 'EXTRAIRE' (ETAB1.'TEMPERATURES'.I) 'T  ' pt_TC2 ;
  TEMP1_1 = TEMP1_1 'ET' ('PROG' T1) ;
  TEMP2_1 = TEMP2_1 'ET' ('PROG' T2) ;
  I = I + 1 ;
'FIN' Boucle ;


* *****        *******************************
* * 3 *  (FRA) Utilisation de PARATHER-PASAPAS
* *   *  (ENG) Use of PARATHER-PASAPAS
* *****        *******************************

* (FRA) Defintion de la conductivite du tube (fonction de TS)
* (ENG) Conductivity tube definition (function of TS)
*       -----------------------------------------------------
EvK = 'EVOL' 'MANU' 'TS  ' ('PROG' 0. 2000.) 'K   ' ('PROG' 10. 30.) ;
Mat_Tube = 'MATERIAU' Mod_Tube 'K   ' EvK 'C   ' 400. 'RHO ' 7800. ;
MatTot = Mat_Tube 'ET' Mat_Teco ;

* (FRA) Evolution du parametre externe 'TS  ' (chargement mis a jour
*       dans PARATHER pour avoir, dans notre exemple, TS = T)
* (ENG) Evolution of the external parameter 'TS  ' (loading updated in
*       PARATHER in order to have T=TS in the actual example)
*       --------------------------------------------------------------
EvTS = 'EVOL' 'MANU' 'TEMPS' ('PROG' 0. 1.E+9)
                     'TS  ' ('PROG' T_ini T_ini) ;
ChpTS = 'MANU' 'CHPO' Tube 1 'TS  ' 1. ;
CharTS = 'CHARGEMENT' 'TS  ' ChpTS EvTS ;

* (FRA) Definition de la procedure utilisateur PARATHER
* (ENG) Definition of the user procedure PARATHER
*       -----------------------------------------------
'DEBPROC' PARATHER ;
  'ARGUMENT' TABTHER*'TABLE' INST*'FLOTTANT' ;
* (FRA) TABTHER est la table d'entree de PASAPAS
*       INST est l'instant courant de calcul
* (ENG) TABTHER is the input table of the PASAPAS procedur
*       INST is the current calculation time

* (FRA) Le chargement doit etre mis a jour dans TABTHER.'WTABLE' !
* (ENG) The loading must be updated in the TABTHER.'WTABLE' table !
* (FRA) L'indice 'THER_COURANT' contient le champ de temperatures de
*       l'iteration courante. Le chargement est mis a jour pour avoir
*       TS = T sur le tube.
* (ENG) The 'THER_COURANT' indice is containing the current iteration
*       temperature field. The loading is updated to have TS = T.
  WTABLE = TABTHER.'WTABLE' ;
  EvTS = 'EVOL' 'MANU' 'TEMPS' ('PROG' 0. 1.E+9) 'TS  ' ('PROG' 1. 1.) ;
  ChpTS = 'NOMC' 'TS  ' (WTABLE.'THER_COURANT') ;
  CharTS = 'CHARGEMENT' 'TS  ' ChpTS EvTS ;
  WTABLE.'CHARGEMENT' = TABTHER.'CHARGEMENT_CONNU' 'ET' CharTS ;
  'SI' ('>EG' ('VALEUR' 'ECHO') 1) ;
    'MESS' 'PARATHER : t = ' INST '  -  max.TS = ' ('MAXIMUM' ChpTS) ;
  'FINSI' ;

'FINPROC' ;

* (FRA) Appel a PASAPAS-TRANSNON - (ENG) PASAPAS-TRANSNON call
*       ------------------------         ---------------------
ETAB2 = 'TABLE' ;
ETAB2.'TEMPS_SAUVES' = l_tsauv ;
ETAB2.'TEMPS_CALCULES' = l_tcalc ;
ETAB2.'TEMPERATURES' = 'TABLE' ;
ETAB2.'TEMPERATURES'. 0 = ChpT0 ;
ETAB2.'MODELE' = ModTot ;
ETAB2.'CARACTERISTIQUES' = MatTot ;
ETAB2.'CHARGEMENT_CONNU' = CharTECO ;
ETAB2.'CHPOINT_PARATHER' = CH_TS ;
ETAB2.'CHARGEMENT' = ETAB2.'CHARGEMENT_CONNU' 'ET' CharTS ;
ETAB2.'PROCEDURE_PARATHER' = VRAI ;
ETAB2.'PROCEDURE_THERMIQUE' = 'MOT' 'NONLINEAIRE' ;
ETAB2.'RELAXATION_THETA' = 1. ;

PASAPAS ETAB2 ;

* (FRA) Depouillement des resultats - (ENG) Results extraction
*       ---------------------------         ------------------
TEMP1_2 = 'PROG' ;  TEMP2_2 = 'PROG' ;
I = 0 ;
'REPETER' Boucle ('DIMENSION' ETAB2.'TEMPS') ;
  Tps = ETAB2.'TEMPS'.I ;
  T1 = 'EXTRAIRE' (ETAB2.'TEMPERATURES'.I) 'T  ' pt_TC1 ;
  T2 = 'EXTRAIRE' (ETAB2.'TEMPERATURES'.I) 'T  ' pt_TC2 ;
  TEMP1_2 = TEMP1_2 'ET' ('PROG' T1) ;
  TEMP2_2 = TEMP2_2 'ET' ('PROG' T2) ;
  I = I + 1 ;
'FIN' Boucle ;


* *****        ******************************************
* * 4 *  (FRA) Comparaison des resultats - Tests d'erreur
* *   *  (ENG) Results comparison - Error tests
* *****        ******************************************

EcT_1 = 100. * ('MAXIMUM' ('ABS' (TEMP1_2 - TEMP1_1))) ;
EcT_2 = 100. * ('MAXIMUM' ('ABS' (TEMP2_2 - TEMP2_1))) ;

'MESS' ;
'MESS' 'Ecart Point 1 : ' EcT_1 ' %' ;
'MESS' 'Ecart Point 2 : ' EcT_2 ' %' ;
'MESS' ;
*
'SI' (('>' EcT_1 1.E-3) 'OU' ('>' EcT_2 1.E-3)) ;
  'ERREUR' 5 ;
'FINSI' ;

'FIN' ;

 

 

 

 

 

 

