solve Subroutine

public subroutine solve(ts, tfin, irec, mp, qprec, qprec_snow, n, dx, h0, S, thetai, Jsensible, Tsoil, evap, evap_pot, runoff, infil, drainage, discharge, qh, nsteps, vmet, vlit, vsnow, var, csoil, kth, phi, T0, Tsurface, Hcum, lEcum, Gcum, Qadvcum, Jcol_sensible, Jcol_latent_S, Jcol_latent_T, deltaice_cum_T, deltaice_cum_S, dxL, zdelta, SL, Tl, plit, par, qex, wex, heads, ciso, cisoice, ciso_snow, cisoice_snow, cisos, cprec, cprec_snow, cali, qali, qiso_in, qiso_out, qiso_evap_cum, qiso_trans_cum, qiso_liq_adv, qiso_vap_adv, qiso_liq_diff, qiso_vap_diff, qvsig, qlsig, qvTsig, qvh, deltaTa, lE_old, dolitter, doisotopologue, docondition, doadvection, err)

Arguments

Type IntentOptional Attributes Name
real(kind=r_2), intent(in) :: ts
real(kind=r_2), intent(in) :: tfin
integer(kind=i_d), intent(in) :: irec
integer(kind=i_d), intent(in) :: mp
real(kind=r_2), intent(in), DIMENSION(1:mp) :: qprec
real(kind=r_2), intent(inout), DIMENSION(1:mp) :: qprec_snow
integer(kind=i_d), intent(in) :: n
real(kind=r_2), intent(in), DIMENSION(1:mp,1:n) :: dx
real(kind=r_2), intent(inout), DIMENSION(1:mp) :: h0
real(kind=r_2), intent(inout), DIMENSION(1:mp,1:n) :: S
real(kind=r_2), intent(out), DIMENSION(1:mp,1:n) :: thetai
real(kind=r_2), intent(out), DIMENSION(1:mp,1:n) :: Jsensible
real(kind=r_2), intent(inout), DIMENSION(1:mp,1:n) :: Tsoil
real(kind=r_2), intent(inout), DIMENSION(1:mp) :: evap
real(kind=r_2), intent(out), DIMENSION(1:mp) :: evap_pot
real(kind=r_2), intent(out), DIMENSION(1:mp) :: runoff
real(kind=r_2), intent(out), DIMENSION(1:mp) :: infil
real(kind=r_2), intent(out), DIMENSION(1:mp) :: drainage
real(kind=r_2), intent(out), DIMENSION(1:mp) :: discharge
real(kind=r_2), intent(out), DIMENSION(1:mp,-nsnow_max:n) :: qh
integer(kind=i_d), intent(out), DIMENSION(1:mp) :: nsteps
type(vars_met), intent(inout), DIMENSION(1:mp) :: vmet
type(vars), intent(inout), DIMENSION(1:mp) :: vlit
type(vars_snow), intent(inout), DIMENSION(1:mp) :: vsnow
type(vars), intent(inout), DIMENSION(1:mp,1:n) :: var
real(kind=r_2), intent(out), DIMENSION(1:mp,1:n) :: csoil
real(kind=r_2), intent(out), DIMENSION(1:mp,1:n) :: kth
real(kind=r_2), intent(inout), DIMENSION(1:mp,1:n) :: phi
real(kind=r_2), intent(inout), DIMENSION(1:mp) :: T0
real(kind=r_2), intent(inout), DIMENSION(1:mp) :: Tsurface
real(kind=r_2), intent(out), DIMENSION(1:mp) :: Hcum
real(kind=r_2), intent(out), DIMENSION(1:mp) :: lEcum
real(kind=r_2), intent(out), DIMENSION(1:mp) :: Gcum
real(kind=r_2), intent(out), DIMENSION(1:mp) :: Qadvcum
real(kind=r_2), intent(out), DIMENSION(1:mp) :: Jcol_sensible
real(kind=r_2), intent(out), DIMENSION(1:mp) :: Jcol_latent_S
real(kind=r_2), intent(out), DIMENSION(1:mp) :: Jcol_latent_T
real(kind=r_2), intent(out), DIMENSION(1:mp) :: deltaice_cum_T
real(kind=r_2), intent(out), DIMENSION(1:mp) :: deltaice_cum_S
real(kind=r_2), intent(in), DIMENSION(1:mp) :: dxL
real(kind=r_2), intent(inout), DIMENSION(1:mp) :: zdelta
real(kind=r_2), intent(inout), DIMENSION(1:mp) :: SL
real(kind=r_2), intent(inout), DIMENSION(1:mp) :: Tl
type(params), intent(in), DIMENSION(1:mp) :: plit
type(params), intent(inout), DIMENSION(1:mp,1:n) :: par
real(kind=r_2), intent(in), optional, DIMENSION(1:mp,1:n) :: qex
real(kind=r_2), intent(inout), optional, DIMENSION(1:mp,1:n) :: wex
real(kind=r_2), intent(out), optional, DIMENSION(1:mp,1:n) :: heads
real(kind=r_2), intent(inout), optional, DIMENSION(1:mp,1:n) :: ciso
real(kind=r_2), intent(inout), optional, DIMENSION(1:mp,1:n) :: cisoice
real(kind=r_2), intent(inout), optional, DIMENSION(1:mp,1:nsnow_max) :: ciso_snow
real(kind=r_2), intent(inout), optional, DIMENSION(1:mp,1:nsnow_max) :: cisoice_snow
real(kind=r_2), intent(inout), optional, DIMENSION(1:mp) :: cisos
real(kind=r_2), intent(in), optional, DIMENSION(1:mp) :: cprec
real(kind=r_2), intent(in), optional, DIMENSION(1:mp) :: cprec_snow
real(kind=r_2), intent(in), optional, DIMENSION(1:mp) :: cali
real(kind=r_2), intent(in), optional, DIMENSION(1:mp) :: qali
real(kind=r_2), intent(out), optional, DIMENSION(1:mp) :: qiso_in
real(kind=r_2), intent(out), optional, DIMENSION(1:mp) :: qiso_out
real(kind=r_2), intent(out), optional, DIMENSION(1:mp) :: qiso_evap_cum
real(kind=r_2), intent(out), optional, DIMENSION(1:mp) :: qiso_trans_cum
real(kind=r_2), intent(out), optional, DIMENSION(1:mp,-nsnow_max+1:n) :: qiso_liq_adv
real(kind=r_2), intent(out), optional, DIMENSION(1:mp,-nsnow_max+1:n) :: qiso_vap_adv
real(kind=r_2), intent(out), optional, DIMENSION(1:mp,-nsnow_max+1:n-1) :: qiso_liq_diff
real(kind=r_2), intent(out), optional, DIMENSION(1:mp,-nsnow_max+1:n-1) :: qiso_vap_diff
real(kind=r_2), intent(out), optional, DIMENSION(1:mp,-nsnow_max:n) :: qvsig
real(kind=r_2), intent(out), optional, DIMENSION(1:mp,-nsnow_max:n) :: qlsig
real(kind=r_2), intent(out), optional, DIMENSION(1:mp,-nsnow_max:n) :: qvTsig
real(kind=r_2), intent(out), optional, DIMENSION(1:mp,-nsnow_max:n) :: qvh
real(kind=r_2), intent(inout), optional, DIMENSION(1:mp) :: deltaTa
real(kind=r_2), intent(in), optional, DIMENSION(1:mp) :: lE_old
integer(kind=i_d), intent(in), optional :: dolitter
integer(kind=i_d), intent(in), optional :: doisotopologue
integer(kind=i_d), intent(in), optional :: docondition
integer(kind=i_d), intent(in), optional :: doadvection
integer(kind=i_d), intent(inout), optional, DIMENSION(1:mp) :: err