source_term_definition_solid Subroutine

public subroutine source_term_definition_solid(me, sim)

Arguments

Type IntentOptional Attributes Name
type(solid_t), intent(inout) :: me
type(simulation_t), intent(in) :: sim

Calls

proc~~source_term_definition_solid~~CallsGraph proc~source_term_definition_solid source_term_definition_solid proc~material_heat_capacity material_t%material_heat_capacity proc~source_term_definition_solid->proc~material_heat_capacity proc~material_heat_capacity_der material_t%material_heat_capacity_der proc~source_term_definition_solid->proc~material_heat_capacity_der proc~material_thermal_conductivity material_t%material_thermal_conductivity proc~source_term_definition_solid->proc~material_thermal_conductivity proc~material_thermal_conductivity_der material_t%material_thermal_conductivity_der proc~source_term_definition_solid->proc~material_thermal_conductivity_der

Called by

proc~~source_term_definition_solid~~CalledByGraph proc~source_term_definition_solid source_term_definition_solid proc~full_physics_definition_solid full_physics_definition_solid proc~full_physics_definition_solid->proc~source_term_definition_solid proc~main_loop main_loop proc~main_loop->proc~source_term_definition_solid proc~main_loop->proc~full_physics_definition_solid program~reims_p reims_p program~reims_p->proc~main_loop

Source Code

subroutine source_term_definition_solid(me,sim)
  type(solid_t), intent(inout) :: me
  type(simulation_t), intent(in) :: sim

  integer :: i
  real(dp) :: cp, dcpdT, ro_M, Spoint, DerSpoint
  
    if(sim%explicit) then
      me%big%bmS=1.0_dp; me%big%bvS=0.0_dp
    endif

    do i=1,me%MC_Prop%NbCells
      cp    = me%mat%heat_capacity(me%StVar%MCtemp(i))
      dcpdT = me%mat%heat_capacity_der(me%StVar%MCtemp(i))
      ro_M  = me%mat%density

      Spoint    =  me%Q_ext(i) / (me%MC_Prop%volLoc(i)/me%MC_Prop%dxLoc(i) * ro_M * cp)
      DerSpoint = -me%Q_ext(i) * dcpdT / (me%MC_Prop%volLoc(i)/me%MC_Prop%dxLoc(i) * ro_M * cp**2)
      
      me%big%bmS(i) = me%big%bmS(i) - sim%dt * DerSpoint
      me%big%bvS(i) = me%big%bvS(i) + sim%dt * Spoint

      if(me%MC_Prop%FSlink(i)) then
        ! Communication to FS port associated to solid node i
        me%MC_Prop%thermP(me%MC_Prop%idxFSlk(i))%p%TempS=me%StVar%MCtemp(i)
        me%MC_Prop%thermP(me%MC_Prop%idxFSlk(i))%p%lambdS=me%mat%thermal_conductivity(me%StVar%MCtemp(i))
        me%MC_Prop%thermP(me%MC_Prop%idxFSlk(i))%p%DerlambdS=me%mat%thermal_conductivity_der(me%StVar%MCtemp(i))
        me%MC_Prop%thermP(me%MC_Prop%idxFSlk(i))%p%cpS=me%mat%heat_capacity(me%StVar%MCtemp(i))
        me%MC_Prop%thermP(me%MC_Prop%idxFSlk(i))%p%dcpSdT=me%mat%heat_capacity_der(me%StVar%MCtemp(i))        
      endif

      if(me%MC_Prop%SSsrcLink) then
        ! Communication to SS_src port associated to solid node i
        me%MC_Prop%thermS(i)%p%TempS=me%StVar%MCtemp(i)
        me%MC_Prop%thermS(i)%p%lambdS=me%mat%thermal_conductivity(me%StVar%MCtemp(i))
        me%MC_Prop%thermS(i)%p%DerlambdS=me%mat%thermal_conductivity_der(me%StVar%MCtemp(i))
        me%MC_Prop%thermS(i)%p%cpS=me%mat%heat_capacity(me%StVar%MCtemp(i))
        me%MC_Prop%thermS(i)%p%dcpSdT=me%mat%heat_capacity_der(me%StVar%MCtemp(i))        
      endif
    enddo      
end subroutine source_term_definition_solid