con2prim_eos Subroutine

public pure subroutine con2prim_eos(lfac, xi, myd, myssqr, mytau)

Arguments

Type IntentOptional Attributes Name
double precision, intent(inout) :: lfac
double precision, intent(inout) :: xi
double precision, intent(in) :: myd
double precision, intent(in) :: myssqr
double precision, intent(in) :: mytau

Calls

proc~~con2prim_eos~~CallsGraph proc~con2prim_eos con2prim_eos proc~con2primhydro_eos con2primHydro_eos proc~con2prim_eos->proc~con2primhydro_eos proc~funcpressure_eos FuncPressure_eos proc~con2prim_eos->proc~funcpressure_eos

Called by

proc~~con2prim_eos~~CalledByGraph proc~con2prim_eos con2prim_eos proc~to_primitive to_primitive proc~to_primitive->proc~con2prim_eos proc~to_primitive~10 to_primitive proc~to_primitive~10->proc~con2prim_eos proc~to_primitive~4 to_primitive proc~to_primitive~4->proc~con2prim_eos proc~to_primitive~9 to_primitive proc~to_primitive~9->proc~con2prim_eos proc~add_split_source~4 add_split_source proc~add_split_source~4->proc~to_primitive~10 proc~finite_volume_local_muscl_hll finite_volume_local_muscl_hll proc~finite_volume_local_muscl_hll->proc~to_primitive~9 proc~finite_volume_local_muscl_hllc finite_volume_local_muscl_hllc proc~finite_volume_local_muscl_hllc->proc~to_primitive~9 proc~finite_volume_local_muscl_llf finite_volume_local_muscl_llf proc~finite_volume_local_muscl_llf->proc~to_primitive~9 proc~phys_to_primitive phys_to_primitive proc~phys_to_primitive->proc~to_primitive~4 proc~setdt setdt proc~setdt->proc~to_primitive proc~finite_volume_local finite_volume_local proc~finite_volume_local->proc~finite_volume_local_muscl_hll proc~finite_volume_local->proc~finite_volume_local_muscl_hllc proc~finite_volume_local->proc~finite_volume_local_muscl_llf

Source Code

  pure subroutine con2prim_eos(lfac,xi,myd,myssqr,mytau)
    
    double precision, intent(in)    :: myd, myssqr, mytau
    double precision, intent(inout) :: lfac, xi

    ! .. local ..
    double precision     :: d,ssqr,tau,vsqr
    double precision     :: f,df,lfacl,dlfac,p,dpdxi
    !------------------------------------------------------------------

    d = myd; ssqr = myssqr; tau = mytau;

    vsqr = ssqr/xi**2
    lfacl = one/dsqrt(one-vsqr)
    dlfac = -lfacl**3*ssqr/(xi**3)
    call FuncPressure_eos(xi,lfacl,d,dlfac,p,dpdxi)
    f  = xi-tau-d-p
    df = one-dpdxi
    if (dabs(f/df)<absaccnr) then
       xi   = xi - f/df
       lfac = lfacl
       return
    end if

    call con2primHydro_eos(lfac,xi,d,ssqr,tau)

  end subroutine con2prim_eos