getDP question

Uwe Pahner uwe.pahner at esat.kuleuven.ac.be
Thu Aug 24 14:26:43 CEST 2000


Dear Christophe,

I am using getDP to solve a transient, coupled magneto-thermal problem.
Maybe Francois Henrotte contacted you about this. Anyhow, he is on
holidays, so I cannot ask him a question on getDP (on which I don't find an
answer on the getDP homepage).

Attached you find the .pro files related to this model. I am running a
transient analysis, where in each time step a coupled problem is solved
(resolution 'TRA' in 1cond.pro). The model is a wire that is heated up
using three consecutive induction heating devices. The numerical problem I
am having is that using different time-schemes (Theta = 0.75 ... 1.0) and
time-steps (DTime = 0.025 .. 0.1 s) results in very different solutions.
The strange thing is that the divergence of the different solutions starts
after the wire has passed the first oven. In other words, after a fixed
time. I want to investigate the problem further, changing some of the
parameters. But this would always require very long analysis runs, as I
always need to compute the first oven again. I just want to solve once
until time T1, and then restart with different TimeLoop settings from there
onwards.

My question:

Is there a possibility to restart the transient loop from an already
existing solution even when changing some of the TimeLoop settings? There
is the "-restart" option when starting up getDP. But I was assuming that
this only works if I don't change the TimeLoop settings. Do you have any
suggestion? 

Thank you very much for the time!

Best regards,

Uwe Pahner
-------------- next part --------------
TA = 100.0 ;
TB = 110.0 ;
Tinf = 25.0 ;
Tinit = 25.0 ;
Freq = 47.e3 ;
VOLTAGE = 495.0 * Sqrt[2.] / ( 8.*2.*Pi ) ; // 140 Volt

mm =  1.e-03 ;

R1 = 32.0  * mm ;
R2 =  5.85 * mm ;
L  = 18.75 * mm ;
a = 9.0 * mm ;
b = 6.0 * mm ;
c = 1.5 * mm ;
RI = 48.0 * mm ;
RE =  2.*RI ;

Group {
  PRIMARY   = Region[101] ;
  SECONDARY = Region[102] ;
  AIR       = Region[103] ;
  TRANSFORM = Region[104] ;
  
  MLft  = Region[111] ;
  MRgh  = Region[112] ;
  MBot  = Region[113] ;
  MTop  = Region[114] ;

  TLft  = Region[121] ;
  TRgh  = Region[122] ;
  TBot  = Region[123] ;
  TTop  = Region[124] ;

  DOMAIN_MAG  = Region[{PRIMARY,SECONDARY,AIR,TRANSFORM}] ;
  DOMAIN_CND  = Region[{PRIMARY,SECONDARY}] ;

  DOMAIN_THE  = Region[ SECONDARY ] ;
  HEAT_GATES  = Region[{/*TTop,TBot*/}] ;
  CONVECTION  = Region[ TRgh ] ;
  SUPPORT_THE = Region[{DOMAIN_THE,HEAT_GATES,CONVECTION}] ;
}

JacobianMethod {
  { Name JacVol ; 
    Case { 
      { Region TRANSFORM ; Jacobian VolAxiPlpdX {RI,RE} ; }
      { Region All       ; Jacobian VolAxi ; } 
    }
  }
  { Name JacSur ;
    Case {
      { Region All   ; Jacobian SurAxi ; } }
  }
}

IntegrationMethod {
  { Name Int1 ;
    Case { 
      { Type Gauss ;
        Case { 
          { GeoElement Line        ; NumberOfPoints  7 ; }
          { GeoElement Triangle    ; NumberOfPoints  4 ; }
          { GeoElement Quadrangle  ; NumberOfPoints  4 ; } 
        }
      }
    }
  }
}

Constraint {
  { Name FIX_A ; 
    Case {
      { Region MLft       ; Value 0.0  ; }
      { Region MRgh       ; Value 0.0  ; }
    }
  }
  { Name FIX_dV ;
    Case {
      { Region PRIMARY   ; Value VOLTAGE ; Type Assign ; }
      { Region SECONDARY ; Value     0.0 ; Type Assign ; }
    }
  }
  { Name FIX_I ;
    Case {
      //{ Region PRIMARY   ; Value   0.0 ; Type Assign ; }
      //{ Region SECONDARY ; Value   0.0 ; Type Assign ; }
    }
  }
  { Name FIX_T ; 
    Case {
      { Region DOMAIN_THE ; Type Init ; Value Tinit ; }
      //{ Region DOMAIN_THE ; Type InitFromResolution ; 
      //                      NameOfResolution TRANSFER ; }
      //{ Region TTop ; Value TA  ; Type Assign ; }
      //{ Region TBot ; Value TB  ; Type Assign ; }
    }
  }
  { Name FIX_Q ; 
    Case {
      //{ Region TTop ; Value 0.0  ; Type Assign ; }
      //{ Region TBot ; Value 0.0  ; Type Assign ; }
    }
  }
}

FunctionSpace {
  { Name _A ; Type Form1P ;
    BasisFunction {
      { Name sve ; NameOfCoef ave ; Function BF_PerpendicularEdge ;
        Support DOMAIN_MAG ; Entity NodesOf[ All ] ; }
    }
    Constraint {
      { NameOfCoef ave ; EntityType NodesOf ; NameOfConstraint FIX_A ; }
    }
  }
  { Name _dV ; Type Form1P ;
    BasisFunction {
      { Name sr ; NameOfCoef ur ; Function BF_RegionZ ;
        Support DOMAIN_CND  ; Entity DOMAIN_CND ; }
    }
    GlobalQuantity {
      { Name U ; Type AliasOf        ; NameOfCoef ur ; }
      { Name I ; Type AssociatedWith ; NameOfCoef ur ; }
    }
    Constraint {
      { NameOfCoef U ; EntityType Region ; NameOfConstraint FIX_dV ; }
      { NameOfCoef I ; EntityType Region ; NameOfConstraint FIX_I ; }
    }
  }
}

FunctionSpace {
  { Name _T ; Type Form0 ;
    BasisFunction {
      { Name sn  ; NameOfCoef Tn  ; Function BF_Node ;
        Support SUPPORT_THE ; Entity NodesOf[ All, Not HEAT_GATES ] ; }
      { Name sk ; NameOfCoef Tk ; Function BF_GroupOfNodes ;
        Support SUPPORT_THE ; Entity GroupsOfNodesOf[ HEAT_GATES ] ; }
    }
    GlobalQuantity {
      { Name Tfl ; Type AliasOf        ; NameOfCoef Tk ; }
      { Name qfl ; Type AssociatedWith ; NameOfCoef Tk ; }
    }
    Constraint {
      { NameOfCoef Tn  ; EntityType NodesOf ; NameOfConstraint FIX_T ; }
      { NameOfCoef Tfl ; EntityType GroupsOfNodesOf ; NameOfConstraint FIX_T ;}
      { NameOfCoef qfl ; EntityType GroupsOfNodesOf ; NameOfConstraint FIX_Q ;}
    }
  }
}

Include "fonctions.pro"

Formulation {
  { Name A ; Type FemEquation ;
    Quantity {
      { Name a   ; Type Local  ; NameOfSpace _A  ; }
      { Name dV  ; Type LocalQuantity  ; NameOfSpace _dV ; }
      { Name U   ; Type GlobalQuantity ; NameOfSpace _dV [U] ; }
      { Name I   ; Type GlobalQuantity ; NameOfSpace _dV [I] ; }
      { Name T   ; Type LocalQuantity  ; NameOfSpace _T  ; }
    }
    Equation {
      Galerkin { [ nu[Norm[{d a}],{T}] * Dof{d a} , {d a} ] ; In DOMAIN_MAG ;
                 JacobianMethod JacVol ; IntegrationMethod Int1 ; }
      Galerkin { DtDof [ sigma[{T}] * Dof{a} , {a} ]  ; In DOMAIN_CND ;
                 JacobianMethod JacVol ; IntegrationMethod Int1 ; }
      Galerkin { [ sigma[{T}] * Dof{dV} , {a} ]       ; In DOMAIN_CND ;
                 JacobianMethod JacVol ; IntegrationMethod Int1 ; }
      Galerkin { DtDof [ sigma[{T}] * Dof{a} , {dV} ] ; In DOMAIN_CND ;
                 JacobianMethod JacVol ; IntegrationMethod Int1 ; }
      Galerkin { [ sigma[{T}] * Dof{dV} , {dV} ]      ; In DOMAIN_CND ;
                 JacobianMethod JacVol ; IntegrationMethod Int1 ; }
      GlobalTerm { [ Dof{I}, {U}]                  ; In DOMAIN_CND ; }
    }
  }
}

Formulation {
  { Name T ; Type FemEquation ;
    Quantity {
      { Name a   ; Type Local  ; NameOfSpace _A  ; }
      { Name dV  ; Type LocalQuantity  ; NameOfSpace _dV ; }
      { Name T   ; Type LocalQuantity  ; NameOfSpace _T  ; }
      { Name Tfl ; Type GlobalQuantity ; NameOfSpace _T  ; }
      { Name qfl ; Type GlobalQuantity ; NameOfSpace _T  ; }
    }
    Equation {
      Galerkin { [ lambda[{T}] * Dof{d T} , {d T} ] ; In DOMAIN_THE ;
                 JacobianMethod JacVol ; IntegrationMethod Int1 ; }
      Galerkin { Dt[ rhoc[{T}] * Dof{T} , {T} ]    ; In DOMAIN_THE ;
                 JacobianMethod JacVol ; IntegrationMethod Int1 ; }
      Galerkin { [-0.5*shape[]*sigma[{T}]* <a>[SquNorm[Dt[{a}]+{dV}]],{T}];
                 In DOMAIN_THE ;
                 JacobianMethod JacVol ; IntegrationMethod Int1 ; }      
      Galerkin { [ h[{T}] * Dof{T} , {T} ] ; In CONVECTION ;
                 JacobianMethod JacSur ; IntegrationMethod Int1 ; }
      Galerkin { [ -h[{T}] * Tinf , {T} ]  ; In CONVECTION ;
                 JacobianMethod JacSur ; IntegrationMethod Int1 ; }
      //Galerkin { [ hr[{T}] * (({T}+273.)^4-(Tinf+273.)^4),{T}] ; 
      //                                    In CONVECTION ;
      //           JacobianMethod JacSur ; IntegrationMethod Int1 ; }

      Galerkin { [ hr[{T}] * ({T}+273.)^3 * Dof{T}, {T} ];
                 In CONVECTION ; Jacobian JacSur ; Integration Int1 ; }
      Galerkin { [ hr[{T}] * ( 273.*({T}+273.)^3. - (Tinf+273.)^4 ) , {T} ];
                 In CONVECTION ; Jacobian JacSur ; Integration Int1 ; }
      Galerkin { JacNL [ 4. * hr[{T}] * ({T}+273.)^3 * Dof{T}, {T} ];
                 In CONVECTION ; Jacobian JacSur ; Integration Int1 ; }
      GlobalTerm { [ -Dof{qfl} , {Tfl} ] ; In HEAT_GATES ; }
    }
  }
}

Resolution {
  { Name LIN ;
    DefineSystem {
      { Name SYSTEM ; NameOfFormulation A ;
        Type ComplexValue ; Frequency Freq ; }
    }
    Operation { Generate SYSTEM ; Solve SYSTEM ; SaveSolution SYSTEM ; }
  }
  { Name NLN ;
    DefineSystem {
      { Name SYSTEMA ; NameOfFormulation A ;
        Type ComplexValue ; Frequency Freq ; }
      { Name SYSTEMT ; NameOfFormulation T ; }
    }
    Operation {
      InitSolution SYSTEMA ;
      InitSolution SYSTEMT ;
      IterativeLoop { 
	NbrMaxIteration 80 ; RelaxationFactor 0.20 ;
	Criterion 5.e-3 ;
	Operation { 
	  GenerateJac SYSTEMA ; SolveJac SYSTEMA ;
	  GenerateJac SYSTEMT ; SolveJac SYSTEMT ;
	} 
      }
      SaveSolution SYSTEMA ; SaveSolution SYSTEMT ;
    }
  }
  { Name TRA ;
    DefineSystem {
      { Name SYSTEMA ; NameOfFormulation A ;
        Type ComplexValue ; Frequency Freq ; }
      { Name SYSTEMT ; NameOfFormulation T ; }
    }
    Operation {
      InitSolution SYSTEMA ; InitSolution SYSTEMT ;
      SaveSolution SYSTEMA ; SaveSolution SYSTEMT ;
      TimeLoopTheta {
	Time0 0.0 ; TimeMax 13.5 ; DTime 0.025 ; Theta 0.75 ;
	Operation {
	  SetFrequency[ SYSTEMA , Freq ] ; 
	  IterativeLoop {
	    NbrMaxIteration 100 ; RelaxationFactor 0.2 ;
	    Criterion 5.e-3 ;
	    Operation { GenerateJac SYSTEMA ; SolveJac SYSTEMA ; 
	                GenerateJac SYSTEMT ; SolveJac SYSTEMT ; }
	  }
	  Test[ !( ($TimeStep % 3) - 1 ) ] 
              { SaveSolution SYSTEMA ; SaveSolution SYSTEMT ; }
	  //SaveSolution SYSTEMA ; SaveSolution SYSTEMT ;
	}
      }
      SaveSolution SYSTEMA ; SaveSolution SYSTEMT ;
    }
  }
  /*  { Name TRANSFER;
    DefineSystem {
      { Name TRANSFERT; NameOfFormulation T; DestinationSystem SYSTEMT; }
      { Name TRANSFERA; NameOfFormulation A; DestinationSystem SYSTEMA; }
      { Name SYSTEMT ; NameOfFormulation T ; }
      { Name SYSTEMA ; NameOfFormulation A ; }
    }
    Operation { 
      Generate TRANSFERA; Solve TRANSFERA; 
      Generate TRANSFERT; Solve TRANSFERT; 
      TransferSolution TRANSFERA; 
      TransferSolution TRANSFERT; 
    }
  }
  */
}


PostProcessing {
  { Name POSA ; NameOfFormulation A ; NameOfSystem SYSTEMA ;
    PostQuantity {
      { Name az ; Value { Local { [ Norm[CompZ[{a}]]] ; In DOMAIN_MAG ; } } }
      { Name b  ; Value { Local { [ {d a} ]      ; In DOMAIN_MAG ; } } }
      { Name Modb ; Value { Local { [ Norm[{d a}]] ; In DOMAIN_MAG ; } } }
      { Name sigma ; Value { Local { [ sigma[{T}] ] ; In DOMAIN_CND ; } } }
      { Name dV ; Value { Local { [ { dV } ]     ; In DOMAIN_CND ; } } }
      { Name j  ; Value { Local { [ Norm[-sigma[{T}]*( Dt[{a}]+{dV})]/X[]]
                                                 ; In DOMAIN_CND ; } } }
      { Name Q  ; Value { Local { [0.5*sigma[{T}]*SquNorm[Dt[{a}]+{dV}] ]
		; In DOMAIN_THE ; } } }  
      { Name I  ; Value { Term { [{I}]; In DOMAIN_CND; Jacobian JacVol ; } } }
      { Name U  ; Value { Term { [{U}]; In DOMAIN_CND; Jacobian JacVol ; } } }
      { Name Intj ;  Type Cumulative 
                  ; Value { Integral { [-sigma[{T}]*CompZ[(Dt[{a}])]/X[] ]
                  ; In SECONDARY ; Integration Int1 ; Jacobian JacVol ; } } }
    }
  }
  { Name POST ; NameOfFormulation A ; NameOfSystem SYSTEMT ;
    PostQuantity {
      { Name T  ; Value { Local { [ {T} ]      ; In DOMAIN_THE ; } } }
    }
  }
}

PostOperation { 
  { Name IU ; NameOfPostProcessing POSA ;
    Operation {
      Print [ I , OnRegion PRIMARY   ] ; 
      Print [ U , OnRegion PRIMARY   ] ; 
      Print [ I , OnRegion SECONDARY ] ; 
      Print [ U , OnRegion SECONDARY ] ; 
      //Plot [ Intj , OnRegion SECONDARY  , File "i2.pos" ] ; 
    }
  }
  { Name MAPS2 ; NameOfPostProcessing POSA ;
    Operation {
      Plot [ b    , OnRegion SECONDARY , File "bbb.pos" ] ; 
      Plot [ Modb  , OnRegion SECONDARY , File "modb.pos" ] ; 
      Plot [ sigma , OnRegion SECONDARY , File "sig.pos" ] ; 
      Plot [ j   , OnRegion SECONDARY  , File "j2.pos" ] ; 
    }
  } 
  { Name MAPS1 ; NameOfPostProcessing POSA ;
    Operation {
      Plot [ j , OnRegion PRIMARY  , File "j1.pos" ] ; 
    }
  } 
  { Name MAPS ; NameOfPostProcessing POSA ;
    Operation {
      Plot [ az   , OnRegion DOMAIN_MAG , File "aaa.pos" ] ; 
      Plot [ b    , OnRegion DOMAIN_MAG , File "bbb.pos" ] ; 
      Plot [ Modb , OnRegion DOMAIN_MAG , File "modb.pos" ] ; 
    }
  }
  { Name  CUTSA ; NameOfPostProcessing POSA ;
    Operation {
      Plot[ az, OnLine {{1e-4,L/2,0}{RE-1e-4,L/2,0}} {150} , File "a.cut", 
                Format Gnuplot] ;
      Plot[ j , OnLine {{1e-4,L/2,0}{R2-1e-4,L/2,0}} {150} , File "j2.cut", 
                Format Gnuplot] ;
      Plot[ Q , OnLine {{1e-4,L/2,0}{R2-1e-4,L/2,0}} {150}, 
                File "joule.cut", Format Gnuplot] ;
      Plot[ j , OnLine {{R1,L/2+mm,0}{R1+b,L/2+mm,0}} {150} , File "j1.cut", 
                Format Gnuplot] ;
    }
  }
  { Name  CUTST ; NameOfPostProcessing POST ;
    Operation {
      Plot[ T , OnLine {{1e-4,L/2,0}{R2-1e-4,L/2,0}} {150} , File "Tr.cut", 
                Format Gnuplot] ;
    }
  }
  { Name EVOL ; NameOfPostProcessing POST ;
    Operation {
      Plot[ T , OnLine {{1e-4,L/2,0}{R2-1e-4,L/2,0}} {50} , File "Tr.cut", 
                Format Gnuplot] ;
    }
  }
  { Name CHECK ; NameOfPostProcessing POST ;
    Operation {
      Plot[ T , OnPoint {R2-1e-4,L/2,0} , File "check.cut", 
                Format timetable] ;
    }
  }
}
-------------- next part --------------
Function {
  mu0 = 4.e-7*Pi;  
  nu0 = 1./mu0 ;

  b1 = 1.05  ;
  bn = 2.134 ; hn = 1.556e5 ;
  muor = 1100. ;
  Tcur = 760. ;
  Tinf1 = 25.0 ;

  nu [ #{AIR,TRANSFORM,PRIMARY} ] = 1. / mu0 ;

  nuref [ SECONDARY ] = <Real>[
       (#1<b1) ? nu0/muor :
       (#1<bn) ? nu0/muor*10.^(1.86*(#1-b1)): (hn+nu0*(#1-bn))/#1 ];

  //nu [ SECONDARY ] = 1./mu0/muor ;
  
  nu [ SECONDARY ] =   $1#1 *0 + $2#2 *0 + 1.0 / ( mu0 +
    ((#2<Tcur)?Sqrt[(Tcur-#2)/(Tcur-Tinf1)]:0.)*(1./nuref[]-mu0)) ;
  
  rhoc [ DOMAIN_THE ] =  $1#1 *0 + <Real>[ ( 8008. - 52.3 *(#1/100.) ) * (
         (#1 < Tcur ) ? ( 448.88 + 100.88 *(#1/100.)
	                 - 28.13 *(#1/100.)^2 + 3.45 *(#1/100.)^3  ) : 
	 434.42 + 19.37 *(#1/100.) ) ] ; 

  lambda [ DOMAIN_THE ] =  $1#1 *0 + (
	(#1 < Tcur ) ? 49.41 - 2.26 *(#1/100.) - 0.075 *(#1/100.)^2 :
                       26.49 - 1.26 *(#1/100.) + 0.130 *(#1/100.)^2 ) ;

  sigma [ PRIMARY ] =  5.e7 ;
  //sigma [ SECONDARY ] =  1.e6 ; 
  sigma [ SECONDARY ] =   $1#1 *0 + 1.0 / ( <Real>[
    (#1 < Tcur) ?  1.68e-7 + 5.56e-8 *(#1/100.) 
                           + 5.79e-9 *(#1/100.)^2 + 2.66e-10 *(#1/100.)^3 :
    6.81e-7 + 7.29e-8 *(#1/100.) - 2.23e-9*(#1/100.)^2 ] );
  
  h [ CONVECTION ] = 6.57 ;

  SB = 5.66996e-8 ;
  
  hr [ CONVECTION ] = $1#1 *0 + ( <Real>[
    (#1 < 170.) ?  SB * 0.27 :
                   SB * ( Tanh[#1/600.] - 3.5e-5 * #1 ) ] );
  
  // hr [ CONVECTION ] = 1.0 * SB ;

  velocity = 0.178 ; // [m/s]
  theta = L/velocity ;
  cycle = 4.5 ; //[s]

  //shape[] = ($Time<theta)      ? $Time/theta :
  //          ($Time<32.*theta)  ? 1.0 :
  //          ($Time<33.*theta)  ? (33.-$Time/theta) : 0. ;

  shape[] = ($Time < 32.*theta)          ? 1.0 :
            ($Time < cycle)              ? 0.0 :
            ($Time < cycle+32.*theta)    ? 1.0 :
            ($Time < 2.*cycle)           ? 0.0 :
            ($Time < 2.*cycle+32.*theta) ? 1.0 : 0.0 ;

  Time_Stepping[]=($Time<2.0*theta)? 0.02 : 0.1 ;
}

-------------- next part --------------