[Getdp] Inaccurate result after 1st time step in thermal transient simulation of a simple cube

michael.asam at infineon.com michael.asam at infineon.com
Mon Jul 12 14:17:25 CEST 2010


Hi all,
in simulations of thermal transient problems I've observed a really strange behavior:  I simulate a simple cube and apply uniformly a thermal heat source on the top. The simulation result seems to be okay on the first rough view. But when I have a closer look I see that the top temperature after the first time step is extremely non-uniform (21 .. 31 °C after an initial temperature of 0°C). It gets more uniform in further time steps but the deviation is still quite high.
The situation is the same when I delay the power-source a certain time (applying no power at the first time steps). I can see this behavior also with the "thermal problem" example out of the wiki.
I think this could be an accuracy problem. I'm simulating with the actual GetDP version 2.0.0 under windows 7. I don't apply any options for PETSc because I'm not familiar with it.

Does anybody know how to overcome this problem? I cannot imagine that such a great program is that inaccurate. Maybe I've to set just an option.

Thanks a lot in advance for your help!

Best regards,
Michael Asam

p.s. Attached you can find this simple thermal transient problem.



Cube.geo
// Gmsh project created on Mon Jul 12 11:54:37 2010
// A simple cube

length = 100.0e-6;                                      // Length of edges [m]
Point(1) = {0, 0, 0};
Point(2) = {length, 0, 0};
Point(3) = {length, length, 0};
Point(4) = {0, length, 0};
Line(1) = {1, 2};
Line(2) = {2, 3};
Line(3) = {3, 4};
Line(4) = {4, 1};
Line Loop(5) = {4, 1, 2, 3};
Plane Surface(6) = {5};
Extrude {0, 0, length} {
  Surface{6};
}
Physical Surface(30) = {28};            // Top surface
Physical Volume(31) = {1};              // Cube volume

-----------------------------------------------------------------------------------------------------------------
Cube.pro
Group {
  top_surface   = Region[30] ;
  cube          = Region[31] ;

  Vol_The = Region[{cube}] ;
  Sur_The = Region[{top_surface}] ;
  Tot_The = Region[{Vol_The,Sur_The}];
}

Function {
  // Thermal parameters for silicon
  k =  87.9;    // Thermal conductivity [W/(m*K)]
  c = 0.852;    // Thermal capacity [J/(g*K)]
  rho = 2.32e6; // Density [g/m^3]
  rhoc = rho * c;

  area = 100.0e-6 * 100.0e-6;

  // Sawtooth power pulse is applied
  Pmax = 4.0;                                                                           // Peak power [W]
  tpower = 110.0e-6;                                                            // Length of the power pulse [s]
  Flux[] = Pmax / area * (tpower - $Time)/tpower;       // Power density [W/m^2]

  tStart = 0;           // Start time [s]
  tStop  = tpower;      // Stop time [s]
  dt     = 1.0e-6;      //      Step size [s]
}

Jacobian {
  { Name Jac ;
    Case {
      { Region Vol_The ; Jacobian Vol ; }
          { Region Sur_The ; Jacobian Sur ; }
    }
  }
}

Integration {
  { Name I1 ;
    Case {
      { Type Gauss ;
        Case {
                        { GeoElement Point       ; NumberOfPoints  1 ; }
                        { GeoElement Line        ; NumberOfPoints  3 ; }
                        { GeoElement Triangle    ; NumberOfPoints  4 ; }
                        { GeoElement Quadrangle  ; NumberOfPoints  4 ; }
                        { GeoElement Tetrahedron ; NumberOfPoints  4 ; }
                        { GeoElement Hexahedron  ; NumberOfPoints  6 ; }
                        { GeoElement Prism       ; NumberOfPoints  6 ; }
                }
      }
    }
  }
}

FunctionSpace {
  { Name Hgrad_T; Type Form0;
    BasisFunction {
      { Name sn; NameOfCoef Tn; Function BF_Node; Support Tot_The;
        Entity NodesOf[All]; }
    }
    Constraint {
      { NameOfCoef Tn; EntityType NodesOf ; NameOfConstraint Sta_T; }
    }
  }
}

Formulation {
  { Name The_T ; Type FemEquation;
    Quantity {
      { Name T;  Type Local; NameOfSpace Hgrad_T; }
    }
    Equation {
      Galerkin { [ k * Dof{d T} , {d T} ];
                 In Vol_The; Integration I1; Jacobian Jac;  }

      Galerkin { Dt [ rhoc * Dof{T} , {T} ];
                 In Vol_The; Integration I1; Jacobian Jac;  }

      Galerkin { [ -Flux[] , {T} ]; // - sign for incoming flux
                 In Sur_The; Integration I1; Jacobian Jac;  }
    }
  }
}

Resolution {
  { Name Th_transient;
    System {
      { Name T; NameOfFormulation The_T; }
    }
    Operation {
      InitSolution T ; SaveSolution T ;
      TimeLoopTheta {Time0  tStart ; TimeMax tStop ; DTime dt ; Theta 1.0 ;
                Operation {
                        Generate T ; Solve T ;
                        SaveSolution T;
                }
      }
    }
  }
}

PostProcessing {
  { Name The; NameOfFormulation The_T;
    Quantity {
      { Name T; Value{ Local{ [ {T} ] ; In Tot_The; Jacobian Jac; } } }
    }
  }
}

PostOperation {
    { Name Tvol ; NameOfPostProcessing The ;
      Operation {
        Print[ T, OnElementsOf Vol_The , File "Tvol.pos"];
      }
    }
    { Name Tsur ; NameOfPostProcessing The ;
      Operation {
        Print[ T, OnElementsOf Sur_The , File "Tsur.pos"];
      }
    }
}

-------------- next part --------------
A non-text attachment was scrubbed...
Name: Cube.geo
Type: application/octet-stream
Size: 500 bytes
Desc: Cube.geo
URL: <http://www.geuz.org/pipermail/getdp/attachments/20100712/76d304e8/attachment.geo>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Cube.pro
Type: application/octet-stream
Size: 3005 bytes
Desc: Cube.pro
URL: <http://www.geuz.org/pipermail/getdp/attachments/20100712/76d304e8/attachment.pro>