from_sol_to_prim_channel Subroutine

public subroutine from_sol_to_prim_channel(me)

Arguments

Type IntentOptional Attributes Name
type(channel_t), intent(inout) :: me

Calls

proc~~from_sol_to_prim_channel~~CallsGraph proc~from_sol_to_prim_channel from_sol_to_prim_channel proc~set_error set_error proc~from_sol_to_prim_channel->proc~set_error proc~state_roe state_roE proc~from_sol_to_prim_channel->proc~state_roe proc~state_roe_withr state_roE_withR proc~from_sol_to_prim_channel->proc~state_roe_withr proc~jacobian_rot jacobian_roT proc~state_roe->proc~jacobian_rot proc~t_roe T_roE proc~state_roe->proc~t_roe proc~state_roe_withr->proc~jacobian_rot proc~t_rop T_roP proc~state_roe_withr->proc~t_rop proc~eos_terms eos_terms proc~jacobian_rot->proc~eos_terms proc~brent brent proc~t_roe->proc~brent proc~fill_e_tpart fill_e_Tpart proc~t_roe->proc~fill_e_tpart proc~fill_ff_terms fill_ff_terms proc~t_roe->proc~fill_ff_terms proc~t_rop->proc~brent proc~fill_f_terms fill_f_terms proc~t_rop->proc~fill_f_terms proc~fill_g_dreg_terms fill_g_Dreg_terms proc~t_rop->proc~fill_g_dreg_terms proc~brent->proc~set_error f f proc~brent->f proc~zero zero proc~brent->proc~zero proc~eos_terms->proc~fill_f_terms proc~eos_e_terms eos_e_terms proc~eos_terms->proc~eos_e_terms proc~fill_e_tpart->proc~fill_g_dreg_terms proc~eos_e_terms->proc~fill_e_tpart proc~eos_e_terms->proc~fill_ff_terms proc~zero->f

Called by

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

Source Code

subroutine from_sol_to_prim_channel(me)    
    type(channel_t), intent(inout) :: me

    real(dp) :: PoutCP,ToutCP,coutCP,rocheck
    integer :: jj

    do jj=1,me%HeProp%NbCells
        me%StVar%He_cs(:,jj)=me%StVar%He_cs(:,jj)+me%big%bvx(1:Nb_VarC,jj) ! update of cons by the solution
      
        me%StVar%He_pr(Pri_ro,jj)=me%StVar%He_cs(Con_Mas,jj)

        rocheck=me%StVar%He_pr(Pri_ro,jj)
        if(ieee_is_nan(rocheck) .or. rocheck<0.001_dp .or. rocheck>160.0_dp) then
            call set_error('unphysical density in channel '//trim(me%HeProp%name))
            return
        endif

        me%StVar%He_pr(Pri_u,jj)=me%StVar%He_cs(Con_Qdm,jj)/me%StVar%He_cs(Con_Mas,jj)
        me%StVar%He_pr(Pri_e,jj)=me%StVar%He_cs(Con_Ene,jj)/me%StVar%He_cs(Con_Mas,jj)-&
                                       0.5_dp*me%StVar%He_pr(Pri_u,jj)**2

        me%StVar%He_pr(Pri_R,jj)=me%StVar%He_cs(Con_R,jj)

        if(R_Correction) then
          call state_roE_withR(me%StVar%He_pr(Pri_ro,jj), me%StVar%He_pr(Pri_e,jj), &
                            me%StVar%He_pr(Pri_R,jj), PoutCP, ToutCP, coutCP)
        else
          call state_roE(me%StVar%He_pr(Pri_ro,jj), me%StVar%He_pr(Pri_e,jj), PoutCP, ToutCP, coutCP)
        endif
        if (ToutCP >= T_He_max .or. ToutCP <= T_He_min) then
            call set_error('temperature out of EOS range in channel '//trim(me%HeProp%name))
            return
        end if
        me%StVar%He_pr(Pri_p,jj)=PoutCP
        me%StVar%He_pr(Pri_T,jj)=ToutCP
        me%StVar%He_pr(Pri_c,jj)=coutCP
    enddo
      
end subroutine from_sol_to_prim_channel