| real(kind=r_2) |  |  |  | :: | tfin |  | 
        
            | integer(kind=i_d) |  |  |  | :: | irec |  | 
        
            | integer(kind=i_d) |  |  |  | :: | mp |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | qprec |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | qprec_snow |  | 
        
            | integer(kind=i_d) |  |  |  | :: | n |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | dx |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | h0 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | S |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | thetai |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | Jsensible |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | Tsoil |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | evap |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | infil |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | drainage |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | discharge |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp,-nsnow_max:n) | :: | qh |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | nsteps |  | 
        
            | type(vars_met), |  |  | DIMENSION(1:mp) | :: | vmet |  | 
        
            | type(vars), |  |  | DIMENSION(1:mp) | :: | vlit |  | 
        
            | type(vars_snow), |  |  | DIMENSION(1:mp) | :: | vsnow |  | 
        
            | type(vars), |  |  | DIMENSION(1:n) | :: | var |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | T0 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | Tsurface |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | Hcum |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | lEcum |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | Gcum |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | Qadvcum |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | Jcol_sensible |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | Jcol_latent_S |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | Jcol_latent_T |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | csoil |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | kth |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | phi |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | dxL |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | zdelta |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | SL |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | Tl |  | 
        
            | type(params), |  |  | DIMENSION(1:mp) | :: | plit |  | 
        
            | type(params), |  |  | DIMENSION(1:n) | :: | par |  | 
        
            | real(kind=r_2), |  | optional, | DIMENSION(1:mp,1:n) | :: | wex |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp,1:nsnow_max) | :: | ciso_snow |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp,1:nsnow_max) | :: | cisoice_snow |  | 
        
            | real(kind=r_2), |  | optional, | DIMENSION(1:mp) | :: | qali |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp,-nsnow_max:n) | :: | qvsig |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp,-nsnow_max:n) | :: | qlsig |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp,-nsnow_max:n) | :: | qvTsig |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp,-nsnow_max:n) | :: | qvh |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | deltaTa |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | precip |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | qevap |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | qL |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | qhL |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | qybL |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | qTbL |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | qhTbL |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | qhybL |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | rexcol |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | wcol |  | 
        
            | logical, |  |  | DIMENSION(1:mp) | :: | again |  | 
        
            | logical, |  |  | DIMENSION(1:mp) | :: | getq0 |  | 
        
            | logical, |  |  | DIMENSION(1:mp) | :: | getqn |  | 
        
            | logical, |  |  | DIMENSION(1:mp) | :: | init |  | 
        
            | logical, |  |  | DIMENSION(1:mp,1:n) | :: | again_ice |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | ih0 |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | iok |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | itmp |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | ns |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | nsat |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | nsatlast |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | nsteps0 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | accel |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | dmax |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | dt |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | dwinfil |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | dwoff |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | fac |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | phip |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | qpme |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | rsig |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | rsigdt |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | sig |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | t |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | hint |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | phimin |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | qexd |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | aa |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | bb |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | cc |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | dd |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | ee |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | ff |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | gg |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | dy |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | aah |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | bbh |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | cch |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | ddh |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | eeh |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | ffh |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | ggh |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | de |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | q |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qya |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qyb |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qTa |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qTb |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qhya |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qhyb |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qhTa |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qhTb |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qadv |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qadvya |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qadvyb |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qadvTa |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qadvTb |  | 
        
            | type(vars) |  |  |  | :: | vtmp |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qsig |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qhsig |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qadvsig |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qliq |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qv |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qvT |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qlya |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qlyb |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qvya |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qvyb |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qlTb |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qvTa |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max:n) | :: | qvTb |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | deltaS |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | dTsoil |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(0:n) | :: | tmp2d1 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(0:n) | :: | tmp2d2 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | cv0 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:nsnow_max) | :: | cisoliqice_snow |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | dthetaldT |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | thetal |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:n) | :: | isave |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:n) | :: | nsteps_ice |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:n) | :: | imelt |  | 
        
            | type(vars), |  |  | DIMENSION(1:mp) | :: | vtop |  | 
        
            | type(vars), |  |  | DIMENSION(1:mp) | :: | vbot |  | 
        
            | type(vars_aquifer), |  |  | DIMENSION(1:mp) | :: | v_aquifer |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | dwcol |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | dwdrainage |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | drn |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | inlit |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | dwinlit |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | drexcol |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | dwdischarge |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | dJcol_latent_S |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | dJcol_latent_T |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | dJcol_sensible |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | deltaJ_latent_S |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | deltaJ_latent_T |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | deltaJ_sensible_S |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | deltaJ_sensible_T |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | qevapsig |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | qrunoff |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | tmp1d1 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | tmp1d2 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | tmp1d3 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | tmp1d4 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | deltah0 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | deltaSL |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | lE0 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | G0 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | Epot |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | Tfreezing |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | dtdT |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | LHS |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | RHS |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | LHS_h |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(-nsnow_max+1:n) | :: | RHS_h |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | surface_case |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | nns |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | iflux |  | 
        
            | logical |  |  |  | :: | litter |  | 
        
            | integer(kind=i_d) |  |  |  | :: | i |  | 
        
            | integer(kind=i_d) |  |  |  | :: | j |  | 
        
            | integer(kind=i_d) |  |  |  | :: | k |  | 
        
            | integer(kind=i_d) |  |  |  | :: | kk |  | 
        
            | integer(kind=i_d) |  |  |  | :: | condition |  | 
        
            | integer(kind=i_d) |  |  |  | :: | littercase |  | 
        
            | integer(kind=i_d) |  |  |  | :: | isotopologue |  | 
        
            | integer(kind=i_d) |  |  |  | :: | advection |  | 
        
            | real(kind=r_2) |  |  |  | :: | c2 |  | 
        
            | real(kind=r_2) |  |  |  | :: | theta |  | 
        
            | real(kind=r_2) |  |  |  | :: | dTqwdTa |  | 
        
            | real(kind=r_2) |  |  |  | :: | dTqwdTb |  | 
        
            | real(kind=r_2) |  |  |  | :: | Tqw |  | 
        
            | real(kind=r_2) |  |  |  | :: | keff |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | cp |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | cpeff |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | hice |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | h0_0 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | hice_0 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | h0_tmp |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | hice_tmp |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(nsnow_max) | :: | qmelt |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | qtransfer |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(nsnow_max) | :: | delta_snowcol |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(nsnow_max) | :: | delta_snowT |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(nsnow_max) | :: | delta_snowliq |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | thetai_0 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | J0 |  | 
        
            | real(kind=r_2) |  |  |  | :: | tmp1 |  | 
        
            | real(kind=r_2) |  |  |  | :: | tmp2 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | iqex |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | nfac1 |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | nfac2 |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | nfac3 |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | nfac4 |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | nfac5 |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | nfac6 |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | nfac7 |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | nfac8 |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | nfac9 |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | nfac10 |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | nfac11 |  | 
        
            | integer(kind=i_d), |  |  | DIMENSION(1:mp) | :: | nfac12 |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | J0snow |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:mp) | :: | wcol0snow |  | 
        
            | real(kind=r_2), |  |  | DIMENSION(1:n) | :: | h_ex |  | 
        
            | real(kind=r_2) |  |  |  | :: | wpi |  | 
        
            | integer(kind=i_d), | intent(inout), | optional |  | :: | err |  |