Karuna,
Karuna wrote:Hi. I would like to perform a transient simulation for temperature between -45 degree Celsius to 125 degree Celsius to find out what is the Von Mises stress experienced by the object during that period of time. Below are some doubts I have regarding this simulation :
1. Do i need to activate the heat equation OR just linear elasticity equation?
I reiterate the words of Matthias: You need two solvers (1) Stress Solver (for displacement variable and subsequent stress presentations in StressSolve.F90) , (2) Heat Solver (Temperature Variable in HeatSolve.F90). You may have presented the question following the description in Elmer Models Manual. In order to find out more on what really is happening, please look inside the source codes of StressSolve.F90
Code: Select all
! Get material parameters:
! ------------------------
Material => GetMaterial()
CALL InputTensor( HeatExpansionCoeff, Isotropic(2), &
'Heat Expansion Coefficient', Material, n, Element % NodeIndexes, GotHeatExp )
CALL InputTensor( ElasticModulus, Isotropic(1), &
'Youngs Modulus', Material, n, Element % NodeIndexes )
PlaneStress = ListGetLogical( Equation, 'Plane Stress', stat )
PoissonRatio(1:n) = GetReal( Material, 'Poisson Ratio', Stat )
! Element nodal points:
! ---------------------
CALL GetElementNodes( Nodes )
! Displacement field at element nodal points:
! -------------------------------------------
CALL GetVectorLocalSolution( LocalDisplacement, USolver=Solver )
IF( GotHeatExp ) THEN
ReferenceTemperature(1:n) = GetReal(Material, 'Reference Temperature', Found )
CALL GetScalarLocalSolution( LocalTemperature, 'Temperature', USolver=Solver )
LocalTemperature(1:n) = LocalTemperature(1:n) - ReferenceTemperature(1:n)
ELSE
LocalTemperature(1:n) = 0.0_dp
END IF
The word 'Temperature" after LocalTemperature in the call statement is the "Temperature" which is obtained by ElmerSolver from HeatSolve.F90 (or technically HeatSolve.so in linux). Please find the words "Temperature" and "LocalTemperature" in the following code snippet of HeatSolve.F90.
Code: Select all
REAL(KIND=dp), POINTER :: Temperature(:),PrevTemperature(:),FlowSolution(:), &
ElectricCurrent(:), PhaseChangeIntervals(:,:),ForceVector(:), &
PrevSolution(:), HC(:), Hwrk(:,:,:),MeshVelocity(:), XX(:), YY(:),ForceHeater(:),&
RealWork(:,:)
REAL(KIND=dp), ALLOCATABLE :: vals(:)
REAL(KIND=dp) :: Jx,Jy,Jz,JAbs, Power, MeltPoint, IntHeatSource
INTEGER, ALLOCATABLE, SAVE :: Indexes(:), SaveIndexes(:)
REAL(KIND=dp), ALLOCATABLE :: MASS(:,:), &
STIFF(:,:), LOAD(:), HeatConductivity(:,:,:), &
FORCE(:), U(:), V(:), W(:), MU(:,:),TimeForce(:), &
Density(:), LatentHeat(:), HeatTransferCoeff(:), &
HeatCapacity(:), Enthalpy(:), EnthalpyFraction(:), Viscosity(:), LocalTemperature(:), &
NodalEmissivity(:), ElectricConductivity(:), Permeability(:), Work(:), C0(:), &
Pressure(:), dPressuredt(:), GasConstant(:),AText(:), HeaterArea(:), &
HeaterTarget(:), HeaterScaling(:), HeaterDensity(:), HeaterSource(:), &
HeatExpansionCoeff(:), ReferenceTemperature(:), PressureCoeff(:), &
PhaseVelocity(:,:), HeatConductivityIso(:), &
PerfusionRate(:), PerfusionDensity(:), PerfusionHeatCapacity(:), PerfusionRefTemperature(:)
Karuna wrote:2. Do i need to set boundary conditions or just initial conditions?
I assume you are talking of temperature variable. Since, you are performing transient simulation, Initial Condition needs to be set up for the simulation. And, as you are solving heat equation by FEM, you will be using Boundary conditions (BCs) whether you set or not. When you set, you will set as you like or need. When you leave unset, the FEM will assume zero flux boundary condition irrespective of your actual requirements.
Karuna wrote:3. Where do I input the temperature change (45 degree to 125)?
(1) Constant BCs: For example, if you neglect convection heat transfer and you can set dirichlet BC on two opposite ends for the Heat Solver. One with (-45 + 273.15) K and another with (125 + 273.15) K. When I consider it a square geometry, the remaining ends are set with zero heat flux (no setting required here). Virtually, you are coupling T (scalar) and u (vector) i.e. u_x,u_y (scalars in 2D) variables. Actually, BCs 1...n means the geometrical boundaries where you put the boundary conditions of both Heat and Stress solvers.
(2) Varying BCs: For cyclic requirements of T variable, You can define source BCs which vary with time and you can present them with MATC expressions or User Defined Functions (UDFs).
Cheers,
Yours Sincerely,
Anil Kunwar