explicit_scheme_for_fluxes_strand Subroutine

public subroutine explicit_scheme_for_fluxes_strand(me, dt)

Arguments

Type IntentOptional Attributes Name
type(strand_t), intent(inout) :: me
real(kind=dp), intent(in) :: dt

Calls

proc~~explicit_scheme_for_fluxes_strand~~CallsGraph proc~explicit_scheme_for_fluxes_strand explicit_scheme_for_fluxes_strand proc~material_critical_current_density material_t%material_critical_current_density proc~explicit_scheme_for_fluxes_strand->proc~material_critical_current_density proc~material_critical_field material_t%material_critical_field proc~explicit_scheme_for_fluxes_strand->proc~material_critical_field proc~material_critical_temperature material_t%material_critical_temperature proc~explicit_scheme_for_fluxes_strand->proc~material_critical_temperature proc~material_current_sharing_temperature material_t%material_current_sharing_temperature proc~explicit_scheme_for_fluxes_strand->proc~material_current_sharing_temperature proc~material_heat_capacity material_t%material_heat_capacity proc~explicit_scheme_for_fluxes_strand->proc~material_heat_capacity proc~material_strain material_t%material_strain proc~explicit_scheme_for_fluxes_strand->proc~material_strain

Called by

proc~~explicit_scheme_for_fluxes_strand~~CalledByGraph proc~explicit_scheme_for_fluxes_strand explicit_scheme_for_fluxes_strand proc~main_loop main_loop proc~main_loop->proc~explicit_scheme_for_fluxes_strand program~reims_p reims_p program~reims_p->proc~main_loop

Source Code

subroutine explicit_scheme_for_fluxes_strand(me,dt)
    type(strand_t), intent(inout) :: me
    real(dp),     intent(in)    :: dt

    real(dp) :: VarcentreeS, cpMS
    integer :: i, ii
    real(dp) :: B,St,Tc,Tc0,Bc,Bc0,Jc0,Jop,TcS

    do i=1,me%SC_Prop%NbCells
        cpMS=0.0_dp

        cpMS=cpMS+me%ct(STAB)%area*me%mat_stab%density*me%mat_stab%heat_capacity(me%StVar%SCtemp(i))
      
        B   = me%scen%Bfield(i)
        St  = me%mat_supc%strain(B,me%scen%ElCur)
        TC  = me%mat_supc%critical_temperature(B,St)
        Tc0 = me%mat_supc%critical_temperature(0.0_dp,St)
        Bc  = me%mat_supc%critical_field(me%StVar%SCtemp(i),St)
        Bc0 = me%mat_supc%critical_field(0.0_dp,St)
        Jc0 = me%mat_supc%critical_current_density(0.0_dp,B,St,Tc0,Bc)
        Jop = abs(me%scen%ElCur)/me%ct(SUPC)%area
        TcS = me%mat_supc%current_sharing_temperature(B,St,Jop,Bc0,Jc0,Tc,Tc0,Bc)
        cpMS=cpMS+me%ct(SUPC)%area*me%mat_supc%density*me%mat_supc%heat_capacity(me%StVar%SCtemp(i),B,TC,TcS,Tc0)

        cpMS=cpMS/(me%ct(STAB)%area*me%mat_stab%density+me%ct(SUPC)%area*me%mat_supc%density)

        VarcentreeS=1.0_dp/(me%ro_M*cpMS)
        me%StVar%SCtemp(i)=me%StVar%SCtemp(i)-(dt/me%SC_Prop%dxLoc(i))*VarcentreeS*(me%flxS%wire(i)-me%flxS%wire(i-1))
    enddo

end subroutine explicit_scheme_for_fluxes_strand