<HTML> <BODY BGCOLOR=#bbeeee LINK=#0000aa VLINK=#0000ff ALINK=#ff0000 ><BASE TARGET="bottom_target"><PRE><a name='1'>
<font color=#447700>!REAL:MODEL_LAYER:INITIALIZATION<a name='2'></font>
<a name='3'>
<font color=#447700>!  This MODULE holds the routines which are used to perform various initializations<a name='4'></font>
<font color=#447700>!  for the individual domains, specifically for the Eulerian, mass-based coordinate.<a name='5'></font>
<a name='6'>
<font color=#447700>!-----------------------------------------------------------------------<a name='7'></font>
<a name='8'>
<A NAME='MODULE_INITIALIZE'><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#MODULE_INITIALIZE' TARGET='top_target'><IMG SRC="../../gif/bar_purple.gif" border=0></A><a name='9'>
<font color=#993300>MODULE </font><font color=#cc0000>module_initialize</font> <A href='../../call_to/MODULE_INITIALIZE.html' TARGET='index'>7</A><a name='10'>
<a name='11'>
   USE <A href='../../html_code/share/module_bc.F.html#MODULE_BC'>module_bc</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#module_initialize_real.F' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="MODULE_BC_15"><a name='12'>
   USE <A href='../../html_code/frame/module_configure.F.html#MODULE_CONFIGURE'>module_configure</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#module_initialize_real.F' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="MODULE_CONFIGURE_22"><a name='13'>
   USE <A href='../../html_code/frame/module_domain.F.html#MODULE_DOMAIN'>module_domain</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#module_initialize_real.F' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="MODULE_DOMAIN_20"><a name='14'>
   USE <A href='../../html_code/share/module_io_domain.F.html#MODULE_IO_DOMAIN'>module_io_domain</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#module_initialize_real.F' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="MODULE_IO_DOMAIN_8"><a name='15'>
   USE <A href='../../html_code/share/module_model_constants.F.html#MODULE_MODEL_CONSTANTS'>module_model_constants</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#module_initialize_real.F' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="MODULE_MODEL_CONSTANTS_21"><a name='16'>
   USE module_state_description<a name='17'>
   USE <A href='../../html_code/frame/module_timing.F.html#MODULE_TIMING'>module_timing</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#module_initialize_real.F' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="MODULE_TIMING_10"><a name='18'>
   USE <A href='../../html_code/share/module_soil_pre.F.html#MODULE_SOIL_PRE'>module_soil_pre</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#module_initialize_real.F' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="MODULE_SOIL_PRE_2"><a name='19'>
#ifdef DM_PARALLEL<a name='20'>
   USE <A href='../../html_code/frame/module_dm_stubs.F.html#MODULE_DM'>module_dm</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#module_initialize_real.F' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="MODULE_DM_17"><a name='21'>
#endif<a name='22'>
<a name='23'>
<a name='24'>
CONTAINS<a name='25'>
<a name='26'>
<font color=#447700>!-------------------------------------------------------------------<a name='27'></font>
<a name='28'>
<A NAME='INIT_DOMAIN'><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A><a name='29'>
   <font color=#993300>SUBROUTINE </font><font color=#cc0000>init_domain</font> ( grid ) <A href='../../call_to/INIT_DOMAIN.html' TARGET='index'>3</A>,<A href='../../call_from/INIT_DOMAIN.html' TARGET='index'>25</A><a name='30'>
<a name='31'>
      IMPLICIT NONE<a name='32'>
<a name='33'>
      <font color=#447700>!  Input space and data.  No gridded meteorological data has been stored, though.<a name='34'></font>
<a name='35'>
<font color=#447700>!     TYPE (domain), POINTER :: grid <a name='36'></font>
      TYPE (domain)          :: grid <a name='37'>
<a name='38'>
      <font color=#447700>!  Local data.<a name='39'></font>
<a name='40'>
      INTEGER :: dyn_opt <a name='41'>
      INTEGER :: idum1, idum2<a name='42'>
<a name='43'>
#ifdef DEREF_KLUDGE<a name='44'>
<font color=#447700>!  see http://www.mmm.ucar.edu/wrf/WG2/topics/deref_kludge.htm<a name='45'></font>
   INTEGER     :: sm31 , em31 , sm32 , em32 , sm33 , em33<a name='46'>
   INTEGER     :: sm31x, em31x, sm32x, em32x, sm33x, em33x<a name='47'>
   INTEGER     :: sm31y, em31y, sm32y, em32y, sm33y, em33y<a name='48'>
#endif<a name='49'>
<a name='50'>
#include "<A href='../../html_code/include/deref_kludge.h.html'>deref_kludge.h</A>"<A NAME="deref_kludge.h_1"><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><a name='51'>
<a name='52'>
      CALL nl_get_dyn_opt ( head_grid%id, dyn_opt )<a name='53'>
      <a name='54'>
      CALL <A href='../../html_code/frame/module_configure.F.html#SET_SCALAR_INDICES_FROM_CONFIG'>set_scalar_indices_from_config</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="SET_SCALAR_INDICES_FROM_CONFIG_8"> ( head_grid%id , idum1, idum2 )<a name='55'>
<a name='56'>
      IF (      dyn_opt .eq. 1 &amp;<a name='57'>
           .or. dyn_opt .eq. 2 &amp;<a name='58'>
           .or. dyn_opt .eq. 3 &amp;<a name='59'>
                                          ) THEN<a name='60'>
        CALL <A href='../../html_code/frame/module_wrf_error.F.html#WRF_ERROR_FATAL'>wrf_error_fatal</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="WRF_ERROR_FATAL_51"> ( "no RK version within dyn_nmm, dyn_opt wrong in namelist, wrf_error_fataling" )<a name='61'>
<a name='62'>
     ELSEIF ( dyn_opt .eq. 4 ) THEN<a name='63'>
<a name='64'>
        CALL <A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN_NMM'>init_domain_nmm</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="INIT_DOMAIN_NMM_1"> (grid, &amp;<a name='65'>
<font color=#447700>!<a name='66'></font>
#include &lt;<A href='../../html_code/include/nmm_actual_args.inc.html'>nmm_actual_args.inc</A>&gt;<A NAME="nmm_actual_args.inc_2"><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><a name='67'>
<font color=#447700>!<a name='68'></font>
      )<a name='69'>
<a name='70'>
      ELSE<a name='71'>
         WRITE(0,*)' init_domain: unknown or unimplemented dyn_opt = ',dyn_opt<a name='72'>
        CALL <A href='../../html_code/frame/module_wrf_error.F.html#WRF_ERROR_FATAL'>wrf_error_fatal</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="WRF_ERROR_FATAL_52"> ( "ERROR-dyn_opt-wrong-in-namelist" )<a name='73'>
      ENDIF<a name='74'>
<a name='75'>
   END SUBROUTINE init_domain<a name='76'>
<a name='77'>
<font color=#447700>!-------------------------------------------------------------------<a name='78'></font>
<font color=#447700>!---------------------------------------------------------------------<a name='79'></font>
<A NAME='INIT_DOMAIN_NMM'><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN_NMM' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A><a name='80'>
   <font color=#993300>SUBROUTINE </font><font color=#cc0000>init_domain_nmm</font> ( grid, &amp; <A href='../../call_to/INIT_DOMAIN_NMM.html' TARGET='index'>1</A>,<A href='../../call_from/INIT_DOMAIN_NMM.html' TARGET='index'>9</A><a name='81'>
<font color=#447700>!<a name='82'></font>
# include &lt;<A href='../../html_code/include/nmm_dummy_args.inc.html'>nmm_dummy_args.inc</A>&gt;<A NAME="nmm_dummy_args.inc_3"><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN_NMM' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><a name='83'>
<font color=#447700>!<a name='84'></font>
   )<a name='85'>
<a name='86'>
      USE <A href='../../html_code/share/module_optional_si_input.F.html#MODULE_OPTIONAL_SI_INPUT'>module_optional_si_input</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN_NMM' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="MODULE_OPTIONAL_SI_INPUT_2"><a name='87'>
      IMPLICIT NONE<a name='88'>
<a name='89'>
      <font color=#447700>!  Input space and data.  No gridded meteorological data has been stored, though.<a name='90'></font>
<a name='91'>
<font color=#447700>!     TYPE (domain), POINTER :: grid<a name='92'></font>
      TYPE (domain)          :: grid<a name='93'>
<a name='94'>
# include &lt;<A href='../../html_code/include/nmm_dummy_decl.inc.html'>nmm_dummy_decl.inc</A>&gt;<A NAME="nmm_dummy_decl.inc_4"><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN_NMM' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><a name='95'>
<a name='96'>
      TYPE (grid_config_rec_type)              :: config_flags<a name='97'>
<a name='98'>
      <font color=#447700>!  Local domain indices and counters.<a name='99'></font>
<a name='100'>
      INTEGER :: num_veg_cat , num_soil_top_cat , num_soil_bot_cat<a name='101'>
<a name='102'>
      INTEGER                             ::                       &amp;<a name='103'>
                                     ids, ide, jds, jde, kds, kde, &amp;<a name='104'>
                                     ims, ime, jms, jme, kms, kme, &amp;<a name='105'>
                                     its, ite, jts, jte, kts, kte, &amp;<a name='106'>
                                     i, j, k, NNXP, NNYP, ICOUNT<a name='107'>
<a name='108'>
      <font color=#447700>!  Local data<a name='109'></font>
<a name='110'>
        CHARACTER(LEN=19):: start_date<a name='111'>
<a name='112'>
      CHARACTER (LEN=132) :: message<a name='113'>
<a name='114'>
      INTEGER :: error<a name='115'>
      REAL    :: p_surf, p_level<a name='116'>
      REAL    :: cof1, cof2<a name='117'>
      REAL    :: qvf , qvf1 , qvf2 , pd_surf<a name='118'>
      REAL    :: p00 , t00 , a<a name='119'>
      REAL    :: hold_znw, rmin,rmax<a name='120'>
<a name='121'>
      LOGICAL :: stretch_grid, dry_sounding, debug, log_flag_sst<a name='122'>
      LOGICAL :: wrf_dm_on_monitor<a name='123'>
<a name='124'>
        REAL, ALLOCATABLE,DIMENSION(:,:):: ADUM2D,SNOWC,HT,TG_ALT<a name='125'>
<a name='126'>
        INTEGER, ALLOCATABLE, DIMENSION(:):: KHL2,KVL2,KHH2,KVH2, &amp;<a name='127'>
                                             KHLA,KHHA,KVLA,KVHA<a name='128'>
<a name='129'>
<font color=#447700>!        INTEGER, ALLOCATABLE, DIMENSION(:,:):: LU_INDEX<a name='130'></font>
<a name='131'>
        REAL, ALLOCATABLE, DIMENSION(:):: DXJ,WPDARJ,CPGFUJ,CURVJ, &amp;<a name='132'>
                                          FCPJ,FDIVJ,EMJ,EMTJ,FADJ, &amp;<a name='133'>
                                          HDACJ,DDMPUJ,DDMPVJ<a name='134'>
<a name='135'>
        REAL:: TPH0D,TLM0D<a name='136'>
        REAL:: TPH0,WB,SB,DLM,DPH,TDLM,TDPH<a name='137'>
        REAL:: WBI,SBI,EBI,ANBI,STPH0,CTPH0<a name='138'>
        REAL:: TSPH,DTAD,DTCF<a name='139'>
        REAL:: ACDT,CDDAMP,TPH,DXP,TLM,FP<a name='140'>
        REAL:: CTPH,STPH<a name='141'>
        REAL:: WBD,SBD<a name='142'>
        REAL:: RSNOW,SNOFAC<a name='143'>
        REAL, PARAMETER:: SALP=2.60<a name='144'>
        REAL, PARAMETER:: SNUP=0.040<a name='145'>
        REAL:: SMCSUM,STCSUM,SEAICESUM,FISX<a name='146'>
        REAL:: TERM1,APH<a name='147'>
<a name='148'>
<a name='149'>
<a name='150'>
        INTEGER:: KHH,KVH,JAM,JA, IHL, IHH, L<a name='151'>
        INTEGER:: II,JJ,ISRCH,ISUM,ival,jval,ITER<a name='152'>
<a name='153'>
        REAL, PARAMETER:: DTR=0.01745329<a name='154'>
        REAL, PARAMETER:: W_NMM=0.08<a name='155'>
<font color=#447700>!0904        REAL, PARAMETER:: COAC=0.2<a name='156'></font>
        REAL, PARAMETER:: COAC=0.75<a name='157'>
        REAL, PARAMETER:: CODAMP=6.4<a name='158'>
        REAL, PARAMETER:: TWOM=.00014584<a name='159'>
        REAL, PARAMETER:: CP=1004.6<a name='160'>
        REAL, PARAMETER:: DFC=1.0<a name='161'>
        REAL, PARAMETER:: DDFC=1.0<a name='162'>
        REAL, PARAMETER:: ROI=916.6<a name='163'>
        REAL, PARAMETER:: R=287.04<a name='164'>
        REAL, PARAMETER:: CI=2060.0<a name='165'>
        REAL, PARAMETER:: ROS=1500.<a name='166'>
        REAL, PARAMETER:: CS=1339.2<a name='167'>
        REAL, PARAMETER:: DS=0.050<a name='168'>
        REAL, PARAMETER:: AKS=.0000005<a name='169'>
        REAL, PARAMETER:: DZG=2.85<a name='170'>
        REAL, PARAMETER:: DI=.1000<a name='171'>
        REAL, PARAMETER:: AKI=0.000001075<a name='172'>
        REAL, PARAMETER:: DZI=2.0<a name='173'>
        REAL, PARAMETER:: THL=210.<a name='174'>
        REAL, PARAMETER:: PLQ=70000.<a name='175'>
        REAL, PARAMETER:: ERAD=6371200.<a name='176'>
        REAL, PARAMETER:: TG0=258.16<a name='177'>
        REAL, PARAMETER:: TGA=30.0<a name='178'>
<a name='179'>
<a name='180'>
#ifdef DEREF_KLUDGE<a name='181'>
<font color=#447700>!  see http://www.mmm.ucar.edu/wrf/WG2/topics/deref_kludge.htm<a name='182'></font>
   INTEGER     :: sm31 , em31 , sm32 , em32 , sm33 , em33<a name='183'>
   INTEGER     :: sm31x, em31x, sm32x, em32x, sm33x, em33x<a name='184'>
   INTEGER     :: sm31y, em31y, sm32y, em32y, sm33y, em33y<a name='185'>
#endif<a name='186'>
<a name='187'>
#include "<A href='../../html_code/include/deref_kludge.h.html'>deref_kludge.h</A>"<A NAME="deref_kludge.h_5"><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN_NMM' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><a name='188'>
<a name='189'>
        if (ALLOCATED(ADUM2D)) DEALLOCATE(ADUM2D)<a name='190'>
        if (ALLOCATED(TG_ALT)) DEALLOCATE(TG_ALT)<a name='191'>
<a name='192'>
#define COPY_IN<a name='193'>
#include &lt;<A href='../../html_code/include/nmm_scalar_derefs.inc.html'>nmm_scalar_derefs.inc</A>&gt;<A NAME="nmm_scalar_derefs.inc_6"><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN_NMM' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><a name='194'>
#ifdef DM_PARALLEL<a name='195'>
#    include &lt;<A href='../../html_code/include/nmm_data_calls.inc.html'>nmm_data_calls.inc</A>&gt;<A NAME="nmm_data_calls.inc_7"><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN_NMM' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><a name='196'>
#endif<a name='197'>
<a name='198'>
      SELECT CASE ( model_data_order )<a name='199'>
         CASE ( DATA_ORDER_ZXY )<a name='200'>
            kds = grid%sd31 ; kde = grid%ed31 ;<a name='201'>
            ids = grid%sd32 ; ide = grid%ed32 ;<a name='202'>
            jds = grid%sd33 ; jde = grid%ed33 ;<a name='203'>
<a name='204'>
            kms = grid%sm31 ; kme = grid%em31 ;<a name='205'>
            ims = grid%sm32 ; ime = grid%em32 ;<a name='206'>
            jms = grid%sm33 ; jme = grid%em33 ;<a name='207'>
<a name='208'>
            kts = grid%sp31 ; kte = grid%ep31 ; <font color=#447700>! tile is entire patch<a name='209'></font>
            its = grid%sp32 ; ite = grid%ep32 ; <font color=#447700>! tile is entire patch<a name='210'></font>
            jts = grid%sp33 ; jte = grid%ep33 ; <font color=#447700>! tile is entire patch<a name='211'></font>
<a name='212'>
         CASE ( DATA_ORDER_XYZ )<a name='213'>
            ids = grid%sd31 ; ide = grid%ed31 ;<a name='214'>
            jds = grid%sd32 ; jde = grid%ed32 ;<a name='215'>
            kds = grid%sd33 ; kde = grid%ed33 ;<a name='216'>
<a name='217'>
            ims = grid%sm31 ; ime = grid%em31 ;<a name='218'>
            jms = grid%sm32 ; jme = grid%em32 ;<a name='219'>
            kms = grid%sm33 ; kme = grid%em33 ;<a name='220'>
<a name='221'>
            its = grid%sp31 ; ite = grid%ep31 ; <font color=#447700>! tile is entire patch<a name='222'></font>
            jts = grid%sp32 ; jte = grid%ep32 ; <font color=#447700>! tile is entire patch<a name='223'></font>
            kts = grid%sp33 ; kte = grid%ep33 ; <font color=#447700>! tile is entire patch<a name='224'></font>
<a name='225'>
         CASE ( DATA_ORDER_XZY )<a name='226'>
            ids = grid%sd31 ; ide = grid%ed31 ;<a name='227'>
            kds = grid%sd32 ; kde = grid%ed32 ;<a name='228'>
            jds = grid%sd33 ; jde = grid%ed33 ;<a name='229'>
<a name='230'>
            ims = grid%sm31 ; ime = grid%em31 ;<a name='231'>
            kms = grid%sm32 ; kme = grid%em32 ;<a name='232'>
            jms = grid%sm33 ; jme = grid%em33 ;<a name='233'>
<a name='234'>
            its = grid%sp31 ; ite = grid%ep31 ; <font color=#447700>! tile is entire patch<a name='235'></font>
            kts = grid%sp32 ; kte = grid%ep32 ; <font color=#447700>! tile is entire patch<a name='236'></font>
            jts = grid%sp33 ; jte = grid%ep33 ; <font color=#447700>! tile is entire patch<a name='237'></font>
<a name='238'>
      END SELECT<a name='239'>
<a name='240'>
        <a name='241'>
        grid%DT=float(grid%TIME_STEP)<a name='242'>
<a name='243'>
        <a name='244'>
<a name='245'>
<font color=#447700>!       NNXP=IDE-1<a name='246'></font>
<font color=#447700>!       NNYP=JDE-1<a name='247'></font>
<a name='248'>
        NNXP=min(ITE,IDE-1)<a name='249'>
        NNYP=min(JTE,JDE-1)<a name='250'>
<a name='251'>
        write(0,*) 'nnxp,nnyp: ', nnxp,nnyp<a name='252'>
        write(0,*) 'IDE, JDE: ', IDE,JDE<a name='253'>
<a name='254'>
        JAM=6+2*(JDE-JDS-10)<a name='255'>
<a name='256'>
        ALLOCATE(ADUM2D(grid%sm31:grid%em31,grid%sm33:grid%em33))<a name='257'>
        ALLOCATE(KHL2(JTS:NNYP),KVL2(JTS:NNYP),KHH2(JTS:NNYP),KVH2(JTS:NNYP))<a name='258'>
        ALLOCATE(DXJ(JTS:NNYP),WPDARJ(JTS:NNYP),CPGFUJ(JTS:NNYP),CURVJ(JTS:NNYP))<a name='259'>
        ALLOCATE(FCPJ(JTS:NNYP),FDIVJ(JTS:NNYP),&amp;<a name='260'>
                 FADJ(JTS:NNYP))<a name='261'>
        ALLOCATE(HDACJ(JTS:NNYP),DDMPUJ(JTS:NNYP),DDMPVJ(JTS:NNYP))<a name='262'>
        ALLOCATE(KHLA(JAM),KHHA(JAM))<a name='263'>
        ALLOCATE(KVLA(JAM),KVHA(JAM))<a name='264'>
<a name='265'>
<a name='266'>
    CALL <A href='../../html_code/frame/module_configure.F.html#MODEL_TO_GRID_CONFIG_REC'>model_to_grid_config_rec</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN_NMM' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="MODEL_TO_GRID_CONFIG_REC_10"> ( grid%id , model_config_rec , config_flags )<a name='267'>
<a name='268'>
        write(0,*) 'cen_lat: ', config_flags%cen_lat<a name='269'>
        write(0,*) 'cen_lon: ', config_flags%cen_lon<a name='270'>
<font color=#447700>!       write(0,*) 'truelat?: ', config_flags%moad_stand_lats(1)<a name='271'></font>
        write(0,*) 'dx: ', config_flags%dx<a name='272'>
        write(0,*) 'dy: ', config_flags%dy<a name='273'>
        write(0,*) 'config_flags%start_year: ', config_flags%start_year<a name='274'>
        write(0,*) 'config_flags%start_month: ', config_flags%start_month<a name='275'>
        write(0,*) 'config_flags%start_day: ', config_flags%start_day<a name='276'>
        write(0,*) 'config_flags%start_hour: ', config_flags%start_hour<a name='277'>
<a name='278'>
<a name='279'>
        write(start_date,435) config_flags%start_year, config_flags%start_month, &amp;<a name='280'>
                config_flags%start_day, config_flags%start_hour<a name='281'>
  435   format(I4,'-',I2.2,'-',I2.2,'_',I2.2,':00:00')<a name='282'>
        <a name='283'>
        dlmd=config_flags%dx<a name='284'>
        dphd=config_flags%dy<a name='285'>
<a name='286'>
<font color=#447700>!       tph0d=global_meta%moad_known_lat<a name='287'></font>
<font color=#447700>!       tlm0d=global_meta%moad_known_lon<a name='288'></font>
<a name='289'>
        tph0d=config_flags%cen_lat<a name='290'>
        tlm0d=config_flags%cen_lon<a name='291'>
<a name='292'>
        ival=ite-15<a name='293'>
        jval=jte-15<a name='294'>
<a name='295'>
<font color=#447700>!==========================================================================<a name='296'></font>
<a name='297'>
<font color=#447700>!!<a name='298'></font>
<a name='299'>
 <font color=#447700>!  Check to see if the boundary conditions are set <a name='300'></font>
 <font color=#447700>!  properly in the namelist file.<a name='301'></font>
 <font color=#447700>!  This checks for sufficiency and redundancy.<a name='302'></font>
<a name='303'>
      CALL <A href='../../html_code/share/module_bc.F.html#BOUNDARY_CONDITION_CHECK'>boundary_condition_check</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN_NMM' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="BOUNDARY_CONDITION_CHECK_9">( config_flags, bdyzone, error, grid%id )<a name='304'>
<a name='305'>
      <font color=#447700>!  Some sort of "this is the first time" initialization.  Who knows.<a name='306'></font>
<a name='307'>
      grid%itimestep=0<a name='308'>
<a name='309'>
      <font color=#447700>!  Pull in the info in the namelist to compare it to the input data.<a name='310'></font>
<a name='311'>
      grid%real_data_init_type = model_config_rec%real_data_init_type<a name='312'>
<a name='313'>
<font color=#447700>!       DO j = jts, MIN(jte,jde-1)<a name='314'></font>
<font color=#447700>!        DO k = kts, kde-1<a name='315'></font>
<font color=#447700>!         DO i = its, MIN(ite,ide-1)<a name='316'></font>
<font color=#447700>!        HTM(I,K,J)=1.<a name='317'></font>
<font color=#447700>!        VTM(I,K,J)=1.<a name='318'></font>
<font color=#447700>!         ENDDO<a name='319'></font>
<font color=#447700>!        ENDDO<a name='320'></font>
<font color=#447700>!       ENDDO<a name='321'></font>
<a name='322'>
<a name='323'>
<font color=#447700>!!! WEASD has "snow water equivalent" in mm<a name='324'></font>
<a name='325'>
       DO j = jts, MIN(jte,jde-1)<a name='326'>
         DO i = its, MIN(ite,ide-1)<a name='327'>
<a name='328'>
      IF(SM(I,J).GT.0.9) THEN<a name='329'>
<a name='330'>
       IF (XICE(I,J) .gt. 0) then<a name='331'>
         SI(I,J)=1.0<a name='332'>
       ENDIF<a name='333'>
<a name='334'>
<font color=#447700>!  SEA<a name='335'></font>
              EPSR(I,J)=.97<a name='336'>
              GFFC(I,J)=0.<a name='337'>
              ALBEDO(I,J)=.06<a name='338'>
              ALBASE(I,J)=.06<a name='339'>
              IF(SI (I,J).GT.0.    ) THEN<a name='340'>
<font color=#447700>!  SEA-ICE<a name='341'></font>
                 SM(I,J)=0.<a name='342'>
                 SI(I,J)=0.<a name='343'>
                 SICE(I,J)=1.<a name='344'>
                 GFFC(I,J)=0. <font color=#447700>! just leave zero as irrelevant<a name='345'></font>
                ALBEDO(I,J)=.60<a name='346'>
                 ALBASE(I,J)=.60<a name='347'>
              ENDIF<a name='348'>
           ELSE<a name='349'>
<a name='350'>
        SI(I,J)=5.0*WEASD(I,J)/1000.<a name='351'>
<font color=#447700>!  LAND<a name='352'></font>
        EPSR(I,J)=1.0<a name='353'>
        GFFC(I,J)=0.0 <font color=#447700>! just leave zero as irrelevant<a name='354'></font>
        SICE(I,J)=0.<a name='355'>
        SNO(I,J)=SI(I,J)*.20<a name='356'>
           ENDIF<a name='357'>
        ENDDO<a name='358'>
        ENDDO<a name='359'>
<a name='360'>
<font color=#447700>! DETERMINE ALBEDO OVER LAND<a name='361'></font>
       DO j = jts, MIN(jte,jde-1)<a name='362'>
         DO i = its, MIN(ite,ide-1)<a name='363'>
          IF(SM(I,J).LT.0.9.AND.SICE(I,J).LT.0.9) THEN<a name='364'>
<font color=#447700>! SNOWFREE ALBEDO<a name='365'></font>
            IF ( (SNO(I,J) .EQ. 0.0) .OR. &amp;<a name='366'>
                (ALBASE(I,J) .GE. MXSNAL(I,J) ) ) THEN<a name='367'>
              ALBEDO(I,J) = ALBASE(I,J)<a name='368'>
            ELSE<a name='369'>
<font color=#447700>! MODIFY ALBEDO IF SNOWCOVER:<a name='370'></font>
<font color=#447700>! BELOW SNOWDEPTH THRESHOLD...<a name='371'></font>
              IF (SNO(I,J) .LT. SNUP) THEN<a name='372'>
                RSNOW = SNO(I,J)/SNUP<a name='373'>
                SNOFAC = 1. - ( EXP(-SALP*RSNOW) - RSNOW*EXP(-SALP))<a name='374'>
<font color=#447700>! ABOVE SNOWDEPTH THRESHOLD...<a name='375'></font>
              ELSE<a name='376'>
                SNOFAC = 1.0<a name='377'>
              ENDIF<a name='378'>
<font color=#447700>! CALCULATE ALBEDO ACCOUNTING FOR SNOWDEPTH AND VGFRCK<a name='379'></font>
              ALBEDO(I,J) = ALBASE(I,J) &amp;<a name='380'>
               + (1.0-VEGFRA(I,J))*SNOFAC*(MXSNAL(I,J)-ALBASE(I,J))<a name='381'>
            ENDIF<a name='382'>
          END IF<a name='383'>
          SI(I,J)=5.0*WEASD(I,J)<a name='384'>
          SNO(I,J)=WEASD(I,J)<a name='385'>
        ENDDO<a name='386'>
      ENDDO<a name='387'>
<a name='388'>
<font color=#447700>!new seaice stuff<a name='389'></font>
<a name='390'>
<font color=#447700>!       write(0,*) 'skip seaice'<a name='391'></font>
<font color=#447700>!       goto 979<a name='392'></font>
<a name='393'>
       DO j = jts, MIN(jte,jde-1)<a name='394'>
          IHE(J)=MOD(J+1,2)<a name='395'>
          IHW(J)=IHE(J)-1<a name='396'>
       ENDDO<a name='397'>
<a name='398'>
        DO ITER=1,10    <a name='399'>
<a name='400'>
       DO j = jts+1, MIN(jte,jde-1)-1<a name='401'>
         DO i = its+1, MIN(ite,ide-1)-1<a name='402'>
<a name='403'>
<font color=#447700>! any sea ice around point in question?<a name='404'></font>
<a name='405'>
        IF (SM(I,J) .eq. 1) THEN<a name='406'>
        <a name='407'>
        SEAICESUM=SICE(I+IHE(J),J+1)+SICE(I+IHW(J),J+1)+ &amp;<a name='408'>
                  SICE(I+IHE(J),J-1)+SICE(I+IHW(J),J-1)<a name='409'>
<a name='410'>
        IF (SEAICESUM .ge. 1. .and. SEAICESUM .lt. 3.) THEN<a name='411'>
<a name='412'>
        IF ((SICE(I+IHE(J),J+1).eq.0 .and. SM(I+IHE(J),J+1).eq.0) .OR. &amp;<a name='413'>
            (SICE(I+IHW(J),J+1).eq.0 .and. SM(I+IHW(J),J+1).eq.0) .OR. &amp;<a name='414'>
            (SICE(I+IHE(J),J-1).eq.0 .and. SM(I+IHE(J),J-1).eq.0) .OR. &amp;<a name='415'>
            (SICE(I+IHW(J),J-1).eq.0 .and. SM(I+IHW(J),J-1).eq.0)) THEN <a name='416'>
<a name='417'>
<font color=#447700>!       HAVE SEA ICE AND A SURROUNDING LAND POINT - CONVERT TO SEA ICE<a name='418'></font>
<a name='419'>
        write(0,*) 'MAKING SEA ICE AT I,J: ', I,J, 'on iter: ', iter<a name='420'>
        SICE(I,J)=1.0<a name='421'>
        SM(I,J)=0.<a name='422'>
<a name='423'>
        ENDIF<a name='424'>
<a name='425'>
        ELSEIF (SEAICESUM .ge. 3) THEN<a name='426'>
<a name='427'>
<font color=#447700>!       WATER POINT SURROUNDED BY ICE  - CONVERT TO SEA ICE<a name='428'></font>
<a name='429'>
        write(0,*) 'MAKING SEA ICE(2) AT I,J: ', I,J, 'on iter: ', iter<a name='430'>
        SICE(I,J)=1.0<a name='431'>
        SM(I,J)=0.<a name='432'>
<a name='433'>
        ENDIF<a name='434'>
        <a name='435'>
        ENDIF<a name='436'>
<a name='437'>
        ENDDO<a name='438'>
        ENDDO<a name='439'>
<a name='440'>
        ENDDO<a name='441'>
<a name='442'>
        <a name='443'>
        <a name='444'>
  979   continue<a name='445'>
<a name='446'>
<a name='447'>
<font color=#447700>!new new seaice stuff<a name='448'></font>
<a name='449'>
<font color=#447700>! this block meant to guarantee land/sea agreement between SM and landmask<a name='450'></font>
<a name='451'>
       DO j = jts, MIN(jte,jde-1)<a name='452'>
         DO i = its, MIN(ite,ide-1)<a name='453'>
<a name='454'>
        if (SM(I,J) .gt. 0.5) then<a name='455'>
                landmask(I,J)=0.0<a name='456'>
        elseif (SM(I,J) .eq. 0 .and. SICE(I,J) .eq. 1) then<a name='457'>
                landmask(I,J)=0.0<a name='458'>
        elseif (SM(I,J) .lt. 0.5 .and. SICE(I,J) .eq. 0) then<a name='459'>
                landmask(I,J)=1.0<a name='460'>
        else<a name='461'>
        write(0,*) 'missed point in landmask definition ' , I,J<a name='462'>
        landmask(I,J)=0.0<a name='463'>
        endif<a name='464'>
<a name='465'>
        ENDDO<a name='466'>
      ENDDO<a name='467'>
<a name='468'>
      <font color=#447700>!  For sf_surface_physics = 1, we want to use close to a 10 cm value<a name='469'></font>
      <font color=#447700>!  for the bottom level of the soil temps.<a name='470'></font>
<a name='471'>
      IF      ( ( model_config_rec%sf_surface_physics(grid%id) .EQ. 1 ) .AND. &amp;<a name='472'>
                ( flag_st000010 .EQ. 1 ) ) THEN<a name='473'>
         DO j = jts , MIN(jde-1,jte)<a name='474'>
            DO i = its , MIN(ide-1,ite)<a name='475'>
               soiltb(i,j) = st000010(i,j)<a name='476'>
            END DO<a name='477'>
         END DO<a name='478'>
<font color=#447700>!      ELSE IF ( ( model_config_rec%sf_surface_physics(grid%id) .EQ. 1 ) .AND. &amp;<a name='479'></font>
<font color=#447700>!                ( flag_soilt020 .EQ. 1 ) ) THEN<a name='480'></font>
<font color=#447700>!         DO j = jts , MIN(jde-1,jte)<a name='481'></font>
<font color=#447700>!            DO i = its , MIN(ide-1,ite)<a name='482'></font>
<font color=#447700>!               soiltb(i,j) = soilt020(i,j)<a name='483'></font>
<font color=#447700>!            END DO<a name='484'></font>
<font color=#447700>!         END DO<a name='485'></font>
      END IF<a name='486'>
<font color=#447700>!     write(0,*)' init_domain_nmm flag_toposoil=',flag_toposoil<a name='487'></font>
<a name='488'>
<a name='489'>
  <font color=#447700>!  Adjust the various soil temperature values depending on the difference in<a name='490'></font>
  <font color=#447700>!  in elevation between the current model's elevation and the incoming data's<a name='491'></font>
  <font color=#447700>!  orography.<a name='492'></font>
<a name='493'>
        write(0,*) 'flag_toposoil= ', flag_toposoil<a name='494'>
         <a name='495'>
      IF ( ( flag_toposoil .EQ. 1 ) ) THEN <a name='496'>
<a name='497'>
        ALLOCATE(HT(ims:ime,jms:jme))<a name='498'>
<a name='499'>
        DO J=jms,jme<a name='500'>
          DO I=ims,ime<a name='501'>
              HT(I,J)=FIS(I,J)/9.81<a name='502'>
          END DO<a name='503'>
        END DO<a name='504'>
           <a name='505'>
<font color=#447700>!       if (maxval(toposoil) .gt. 100.) then<a name='506'></font>
<a name='507'>
<font color=#447700>!  being avoided.   Something to revisit eventually.<a name='508'></font>
<font color=#447700>!<a name='509'></font>
<font color=#447700>!1219 might be simply a matter of including TOPOSOIL <a name='510'></font>
<font color=#447700>!<a name='511'></font>
<font color=#447700>!    CODE NOT TESTED AT NCEP USING THIS FUNCTIONALITY, <a name='512'></font>
<font color=#447700>!    SO TO BE SAFE WILL AVOID FOR RETRO RUNS.<a name='513'></font>
<a name='514'>
<font color=#447700>!       write(0,*) 'calling adjust_soil_temp_new'<a name='515'></font>
<font color=#447700>!        CALL adjust_soil_temp_new ( soiltb , 2 , &amp;<a name='516'></font>
<font color=#447700>!                       nmm_tsk , ht , toposoil , landmask, flag_toposoil , &amp;<a name='517'></font>
<font color=#447700>!                       st000010 , st010040 , st040100 , st100200 , st010200 , &amp;<a name='518'></font>
<font color=#447700>!                       flag_st000010 , flag_st010040 , flag_st040100 , &amp;<a name='519'></font>
<font color=#447700>!                       flag_st100200 , flag_st010200 , &amp;<a name='520'></font>
<font color=#447700>!                       soilt000 , soilt005 , soilt020 , soilt040 , &amp;<a name='521'></font>
<font color=#447700>!                       soilt160 , soilt300 , &amp;<a name='522'></font>
<font color=#447700>!                       flag_soilt000 , flag_soilt005 , flag_soilt020 , &amp;<a name='523'></font>
<font color=#447700>!                       flag_soilt040 , flag_soilt160 , flag_soilt300 , &amp;<a name='524'></font>
<font color=#447700>!                       ids , ide , jds , jde , kds , kde , &amp;<a name='525'></font>
<font color=#447700>!                       ims , ime , jms , jme , kms , kme , &amp;<a name='526'></font>
<font color=#447700>!                       its , ite , jts , jte , kts , kte )<a name='527'></font>
<font color=#447700>!       endif<a name='528'></font>
<a name='529'>
      END IF<a name='530'>
<a name='531'>
      <font color=#447700>!  Process the LSM data.<a name='532'></font>
   <a name='533'>
      IF ( grid%real_data_init_type .EQ. 1 ) THEN<a name='534'>
   <a name='535'>
         num_veg_cat      = SIZE ( landusef , DIM=2 )<a name='536'>
         num_soil_top_cat = SIZE ( soilctop , DIM=2 )<a name='537'>
         num_soil_bot_cat = SIZE ( soilcbot , DIM=2 )<a name='538'>
<a name='539'>
<a name='540'>
<a name='541'>
<font color=#447700>!       sm (1=water, 0=land)<a name='542'></font>
<font color=#447700>!       landmask(0=water, 1=land)<a name='543'></font>
<a name='544'>
<a name='545'>
<a name='546'>
         CALL <A href='../../html_code/share/module_soil_pre.F.html#PROCESS_PERCENT_CAT_NEW'>process_percent_cat_new</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN_NMM' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="PROCESS_PERCENT_CAT_NEW_2"> ( landmask , &amp;<a name='547'>
                         landusef , soilctop , soilcbot , &amp;<a name='548'>
                         isltyp , ivgtyp , &amp;<a name='549'>
                         num_veg_cat , num_soil_top_cat , num_soil_bot_cat , &amp;<a name='550'>
                         ids , ide , jds , jde , kds , kde , &amp;<a name='551'>
                         ims , ime , jms , jme , kms , kme , &amp;<a name='552'>
                         its , ite , jts , jte , kts , kte , &amp;<a name='553'>
                         model_config_rec%iswater(grid%id) )<a name='554'>
<a name='555'>
<a name='556'>
        DO j = jts, MIN(jde-1,jte)<a name='557'>
            DO i = its, MIN(ide-1,ite)<a name='558'>
<a name='559'>
        IF (SICE(I,J) .eq. 0) THEN<a name='560'>
<a name='561'>
        if (landmask(I,J) .gt. 0.5 .and. sm(I,J) .eq. 1.0) then<a name='562'>
                write(0,*) 'land mask and SM both &gt; 0.5: ', &amp;<a name='563'>
                                           I,J,landmask(I,J),sm(I,J)<a name='564'>
<a name='565'>
        SM(I,J)=0.<a name='566'>
<a name='567'>
        elseif (landmask(I,J) .lt. 0.5 .and. sm(I,J) .eq. 0.0) then<a name='568'>
                write(0,*) 'land mask and SM both &lt; 0.5: ', &amp;<a name='569'>
                                           I,J, landmask(I,J),sm(I,J)<a name='570'>
<a name='571'>
        SM(I,J)=1.<a name='572'>
<a name='573'>
        endif<a name='574'>
<a name='575'>
        ELSE<a name='576'>
<a name='577'>
        if (landmask(I,J) .gt. 0.5 .and. SM(I,J)+SICE(I,J) .eq. 1) then<a name='578'>
        write(0,*) 'landmask says LAND, SM/SICE say SEAICE: ', I,J<a name='579'>
        endif<a name='580'>
<a name='581'>
        ENDIF<a name='582'>
<a name='583'>
           ENDDO<a name='584'>
        ENDDO<a name='585'>
<a name='586'>
         DO j = jts, MIN(jde-1,jte)<a name='587'>
            DO i = its, MIN(ide-1,ite)<a name='588'>
<a name='589'>
        if (SICE(I,J) .eq. 1.0) then<a name='590'>
<font color=#447700>!!!! change vegtyp and sltyp to fit seaice (desireable??)<a name='591'></font>
        ISLTYP(I,J)=16<a name='592'>
        IVGTYP(I,J)=24<a name='593'>
        endif<a name='594'>
<a name='595'>
            ENDDO<a name='596'>
         ENDDO<a name='597'>
<a name='598'>
<a name='599'>
<font color=#447700>! MOVE HERE<a name='600'></font>
<a name='601'>
        write(0,*) 'flag_sst before define is: ', flag_sst<a name='602'>
<font color=#447700>!     write(0,*)' init_domain_nmm flag_sst=',flag_sst<a name='603'></font>
        FLAG_SST=1<a name='604'>
<a name='605'>
         DO j = jts, MIN(jde-1,jte)<a name='606'>
            DO i = its, MIN(ide-1,ite)<a name='607'>
<a name='608'>
        if (SM(I,J) .lt. 0.5) then<a name='609'>
            SST(I,J)=0.<a name='610'>
        endif<a name='611'>
<a name='612'>
        if (SM(I,J) .gt. 0.5) then<a name='613'>
          if (SST(I,J) .eq. 0) then<a name='614'>
            SST(I,J)=NMM_TSK(I,J)<a name='615'>
          endif<a name='616'>
            NMM_TSK(I,J)=0.<a name='617'>
        endif<a name='618'>
<a name='619'>
                <a name='620'>
        if ( (NMM_TSK(I,J)+SST(I,J)) .lt. 200. .or. &amp;<a name='621'>
             (NMM_TSK(I,J)+SST(I,J)) .gt. 350. ) then<a name='622'>
        write(0,*) 'TSK, SST trouble at : ', I,J<a name='623'>
        write(0,*) 'SM= ', SM(I,J)<a name='624'>
        write(0,*) 'NMM_TSK(I,J), SST(I,J): ', NMM_TSK(I,J), SST(I,J)<a name='625'>
        endif<a name='626'>
<a name='627'>
            ENDDO<a name='628'>
         ENDDO<a name='629'>
<a name='630'>
        write(0,*) 'SM'<a name='631'>
        do J=min(jde-1,jte),jts,-(jte-jts)/15<a name='632'>
        write(0,635) (sm(i,J),I=its,ite,(ite-its)/10)<a name='633'>
        enddo<a name='634'>
<a name='635'>
<font color=#447700>!       write(0,*) 'SST/NMM_TSK'<a name='636'></font>
<font color=#447700>!       do J=min(jde-1,jte),jts,-(jte-jts)/15<a name='637'></font>
<font color=#447700>!       write(0,635) (SST(I,J)+NMM_TSK(I,J),I=ITS,min(ide-1,ite),(ite-its)/10)<a name='638'></font>
<font color=#447700>!       enddo<a name='639'></font>
<a name='640'>
  635   format(20(f5.1,1x))<a name='641'>
<a name='642'>
<a name='643'>
         DO j = jts, MIN(jde-1,jte)<a name='644'>
            DO i = its, MIN(ide-1,ite)<a name='645'>
               IF ( ( landmask(i,j) .LT. 0.5 ) .AND. ( flag_sst .EQ. 1 ) ) THEN<a name='646'>
                  soiltb(i,j) = sst(i,j)<a name='647'>
<font color=#447700>!curious               ELSE IF (  landmask(i,j) .LT. 0.5 ) THEN<a name='648'></font>
               ELSE IF (  landmask(i,j) .GT. 0.5 ) THEN<a name='649'>
                  soiltb(i,j) = nmm_tsk(i,j)<a name='650'>
               END IF<a name='651'>
            END DO<a name='652'>
         END DO<a name='653'>
<a name='654'>
<font color=#447700>!      END IF<a name='655'></font>
<a name='656'>
<a name='657'>
<a name='658'>
<font color=#447700>! END MOVE HERE<a name='659'></font>
<a name='660'>
<a name='661'>
   <font color=#447700>!  Land use categories, dominant soil and vegetation types (if available).<a name='662'></font>
<a name='663'>
<font color=#447700>!       allocate(lu_index(ims:ime,jms:jme))<a name='664'></font>
   <a name='665'>
          DO j = jts, MIN(jde-1,jte)<a name='666'>
            DO i = its, MIN(ide-1,ite)<a name='667'>
               lu_index(i,j) = ivgtyp(i,j)<a name='668'>
            END DO<a name='669'>
         END DO<a name='670'>
<a name='671'>
      END IF<a name='672'>
<a name='673'>
<a name='674'>
        if (flag_sst .eq. 1) log_flag_sst=.true.<a name='675'>
        if (flag_sst .eq. 0) log_flag_sst=.false.<a name='676'>
<a name='677'>
<font color=#447700>!       write(0,*) 'st_levels_input: ', st_levels_input<a name='678'></font>
<font color=#447700>!       write(0,*) 'num_st_levels_input: ', num_st_levels_input<a name='679'></font>
<a name='680'>
<a name='681'>
        write(0,*) 'maxval st_input(1): ', maxval(st_input(:,1,:))<a name='682'>
        write(0,*) 'maxval st_input(2): ', maxval(st_input(:,2,:))<a name='683'>
        write(0,*) 'maxval st_input(3): ', maxval(st_input(:,3,:))<a name='684'>
        write(0,*) 'maxval st_input(4): ', maxval(st_input(:,4,:))<a name='685'>
<a name='686'>
<font color=#447700>!!!!!!!!!!!!!!!!!!!!!!!!!<a name='687'></font>
<font color=#447700>!!!!!!!!!!!!!!!!!!!!!!!!!<a name='688'></font>
<a name='689'>
        ALLOCATE(TG_ALT(grid%sm31:grid%em31,grid%sm33:grid%em33))<a name='690'>
<a name='691'>
<a name='692'>
      TPH0=TPH0D*DTR<a name='693'>
<font color=#447700>!     WBD=-((nnxp-1)*DLMD)<a name='694'></font>
      WBD=-(((ide-1)-1)*DLMD)<a name='695'>
      WB= WBD*DTR<a name='696'>
<font color=#447700>!     SBD=-((nnyp/2)*DPHD)<a name='697'></font>
      SBD=-(((jde-1)/2)*DPHD)<a name='698'>
      SB= SBD*DTR<a name='699'>
      DLM=DLMD*DTR<a name='700'>
      DPH=DPHD*DTR<a name='701'>
      TDLM=DLM+DLM<a name='702'>
      TDPH=DPH+DPH<a name='703'>
      WBI=WB+TDLM<a name='704'>
      SBI=SB+TDPH<a name='705'>
<font color=#447700>!     EBI=WB+(nnxp-2)*TDLM<a name='706'></font>
      EBI=WB+(ide-2)*TDLM<a name='707'>
      ANBI=SB+(jde-2)*DPH<a name='708'>
      STPH0=SIN(TPH0)<a name='709'>
      CTPH0=COS(TPH0)<a name='710'>
      TSPH=3600./GRID%DT<a name='711'>
         DO J=JTS,min(JTE,JDE-1)<a name='712'>
           TLM=WB-TDLM+MOD(J,2)*DLM   <font color=#447700>!For velocity points on the E grid<a name='713'></font>
           TPH=SB+float(J-1)*DPH<a name='714'>
           STPH=SIN(TPH)<a name='715'>
           CTPH=COS(TPH)<a name='716'>
           DO I=ITS,MIN(ITE,IDE-1)<a name='717'>
<a name='718'>
        if (I .eq. ITS) THEN<a name='719'>
             TLM=TLM+TDLM*ITS<a name='720'>
        else<a name='721'>
             TLM=TLM+TDLM<a name='722'>
        endif<a name='723'>
<a name='724'>
             TERM1=(STPH0*CTPH*COS(TLM)+CTPH0*STPH)<a name='725'>
             FP=TWOM*(TERM1)<a name='726'>
             F(I,J)=0.5*GRID%DT*FP<a name='727'>
           ENDDO<a name='728'>
         ENDDO<a name='729'>
         DO J=JTS,min(JTE,JDE-1)<a name='730'>
           TLM=WB-TDLM+MOD(J+1,2)*DLM   <font color=#447700>!For mass points on the E grid<a name='731'></font>
           TPH=SB+float(J-1)*DPH<a name='732'>
           STPH=SIN(TPH)<a name='733'>
           CTPH=COS(TPH)<a name='734'>
           DO I=ITS,MIN(ITE,IDE-1)<a name='735'>
<a name='736'>
        if (I .eq. ITS) THEN<a name='737'>
             TLM=TLM+TDLM*ITS<a name='738'>
        else<a name='739'>
             TLM=TLM+TDLM<a name='740'>
        endif<a name='741'>
<a name='742'>
             TERM1=(STPH0*CTPH*COS(TLM)+CTPH0*STPH)<a name='743'>
             APH=ASIN(TERM1)<a name='744'>
             TG_ALT(I,J)=TG0+TGA*COS(APH)-FIS(I,J)/3333.<a name='745'>
           ENDDO<a name='746'>
         ENDDO<a name='747'>
<a name='748'>
<a name='749'>
<a name='750'>
            DO j = jts, MIN(jde-1,jte)<a name='751'>
               DO i = its, MIN(ide-1,ite)<a name='752'>
<font color=#447700>!                  IF ( ( landmask(i,j) .LT. 0.5 ) .AND. ( flag_sst .EQ. 1 ) .AND. &amp;<a name='753'></font>
<font color=#447700>!                         SICE(I,J) .eq. 0. ) THEN<a name='754'></font>
<font color=#447700>!                     TG(i,j) = sst(i,j)<a name='755'></font>
<font color=#447700>!                   ELSEIF (SICE(I,J) .eq. 1) THEN<a name='756'></font>
<font color=#447700>!                     TG(i,j) = 271.16<a name='757'></font>
<font color=#447700>!                   END IF<a name='758'></font>
<a name='759'>
        if (TG(I,J) .lt. 200.) then   <font color=#447700>! only use default TG_ALT definition if<a name='760'></font>
                                      <font color=#447700>! not getting TGROUND from SI<a name='761'></font>
                TG(I,J)=TG_ALT(I,J)<a name='762'>
        endif<a name='763'>
<a name='764'>
       if (TG(I,J) .lt. 200. .or. TG(I,J) .gt. 320.) then<a name='765'>
               write(message,*) 'problematic TG point at : ', I,J<a name='766'>
               CALL <A href='../../html_code/frame/module_wrf_error.F.html#WRF_MESSAGE'>wrf_message</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN_NMM' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="WRF_MESSAGE_11">( message )<a name='767'>
       endif<a name='768'>
<a name='769'>
        adum2d(i,j)=nmm_tsk(I,J)+sst(I,J)<a name='770'>
<a name='771'>
               END DO<a name='772'>
            END DO<a name='773'>
<a name='774'>
        DEALLOCATE(TG_ALT)<a name='775'>
<a name='776'>
  CALL <A href='../../html_code/share/module_soil_pre.F.html#PROCESS_SOIL_REAL'>process_soil_real</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN_NMM' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="PROCESS_SOIL_REAL_2"> ( adum2d, TG , &amp;<a name='777'>
     landmask, sst, &amp;<a name='778'>
     st_input, sm_input, sw_input, &amp;<a name='779'>
     st_levels_input , sm_levels_input , &amp;<a name='780'>
     sw_levels_input , &amp;<a name='781'>
     sldpth , dzsoil , stc , smc , sh2o,  &amp;<a name='782'>
     flag_sst , flag_soilt000, flag_soilm000, &amp;<a name='783'>
     ids , ide , jds , jde , kds , kde , &amp;<a name='784'>
     ims , ime , jms , jme , kms , kme , &amp;<a name='785'>
     its , ite , jts , jte , kts , kte , &amp;<a name='786'>
     model_config_rec%sf_surface_physics(grid%id) , &amp;<a name='787'>
     model_config_rec%num_soil_layers ,  &amp;<a name='788'>
     model_config_rec%real_data_init_type , &amp;<a name='789'>
     num_st_levels_input , num_sm_levels_input , &amp;<a name='790'>
     num_sw_levels_input , &amp;<a name='791'>
     num_st_levels_alloc , num_sm_levels_alloc , &amp;<a name='792'>
     num_sw_levels_alloc )<a name='793'>
      write(0,*)' its=',its,' ite=',ite,' jts=',jts,' jte=',jte<a name='794'>
      write(0,*)' ide=',ide,' jde=',jde<a name='795'>
<a name='796'>
<font color=#447700>!!!     zero out NMM_TSK at water points again<a name='797'></font>
<a name='798'>
         DO j = jts, MIN(jde-1,jte)<a name='799'>
            DO i = its, MIN(ide-1,ite)<a name='800'>
        if (SM(I,J) .gt. 0.5) then<a name='801'>
            NMM_TSK(I,J)=0.<a name='802'>
        endif<a name='803'>
            END DO<a name='804'>
         END DO<a name='805'>
<a name='806'>
<a name='807'>
<font color=#447700>!!      check on STC<a name='808'></font>
<a name='809'>
          DO j = jts, MIN(jde-1,jte)<a name='810'>
            DO i = its, MIN(ide-1,ite)<a name='811'>
<a name='812'>
        IF (SICE(I,J) .eq. 1.0) then<a name='813'>
          DO L = 1, grid%num_soil_layers<a name='814'>
            STC(I,L,J)=271.16    <font color=#447700>! TG value used by Eta/NMM<a name='815'></font>
          END DO<a name='816'>
        END IF<a name='817'>
                <a name='818'>
            END DO<a name='819'>
          END DO<a name='820'>
<a name='821'>
        write(0,*) 'STC(1)'<a name='822'>
        do J=min(jde-1,jte),jts,-(jte-jts)/15<a name='823'>
        write(0,635) (stc(I,1,J),I=its,ite,(ite-its)/12)<a name='824'>
        enddo<a name='825'>
<a name='826'>
<a name='827'>
        ICOUNT=0<a name='828'>
          DO j = jts, MIN(jde-1,jte)<a name='829'>
          DO i=  ITS, MIN(IDE-1,ITE)<a name='830'>
                      IF (STC(I,1,J) .lt. 200. .and. SM(I,J) .eq. 0) then<a name='831'>
              write(0,*) 'troublesome STC...I,J,STC,SM,SICE,SMC: ',&amp; <a name='832'>
                   I,J,STC(I,1,J),SM(I,J),SICE(I,J),SMC(I,1,J)<a name='833'>
        ICOUNT=ICOUNT+1<a name='834'>
        if (ICOUNT .eq. 100) then<a name='835'>
        call <A href='../../html_code/frame/module_wrf_error.F.html#WRF_ERROR_FATAL'>wrf_error_fatal</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN_NMM' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="WRF_ERROR_FATAL_53">("bad STC data...quit before gets worse")<a name='836'>
        endif<a name='837'>
            endif<a name='838'>
        <a name='839'>
         ENDDO<a name='840'>
         ENDDO<a name='841'>
<a name='842'>
<font color=#447700>!hardwire soil stuff for time being<a name='843'></font>
<a name='844'>
        RTDPTH=0.<a name='845'>
        RTDPTH(1)=0.1<a name='846'>
        RTDPTH(2)=0.3<a name='847'>
        RTDPTH(3)=0.6<a name='848'>
<a name='849'>
        SLDPTH=0.<a name='850'>
        SLDPTH(1)=0.1<a name='851'>
        SLDPTH(2)=0.3<a name='852'>
        SLDPTH(3)=0.6<a name='853'>
        SLDPTH(4)=1.0<a name='854'>
<a name='855'>
        write(0,*) 'SLDPTH: ', SLDPTH(1:4)<a name='856'>
        write(0,*) 'RTDPTH: ', RTDPTH(1:4)<a name='857'>
<a name='858'>
<font color=#447700>!!! main body of nmm_specific starts here<a name='859'></font>
<a name='860'>
<font color=#447700>!<a name='861'></font>
<font color=#447700>! Gopal's doing's : LMH and LMV should be flipped for start_domain_nmm.F<a name='862'></font>
<font color=#447700>!                   this is consistent with Tom's version<a name='863'></font>
<font color=#447700>!<a name='864'></font>
<a name='865'>
       do J=jts,min(jte,jde-1)<a name='866'>
        do I=its,min(ite,ide-1)<a name='867'>
         LMH(I,J)= kme-1        <font color=#447700>!1<a name='868'></font>
         LMV(I,J)= kme-1        <font color=#447700>!1<a name='869'></font>
         RES(I,J)=1.<a name='870'>
        enddo<a name='871'>
        enddo<a name='872'>
<a name='873'>
<a name='874'>
<a name='875'>
<font color=#447700>!! HBM2<a name='876'></font>
<a name='877'>
        HBM2=0.<a name='878'>
<a name='879'>
       do J=jts,min(jte,jde-1)<a name='880'>
        do I=its,min(ite,ide-1)<a name='881'>
<a name='882'>
<a name='883'>
        IF ( (J .ge. 3 .and. J .le. (jde-1)-2) .AND. &amp;<a name='884'>
             (I .ge. 2 .and. I .le. (ide-1)-2+mod(J,2)) ) THEN<a name='885'>
       HBM2(I,J)=1.<a name='886'>
        ENDIF<a name='887'>
       enddo<a name='888'>
       enddo<a name='889'>
<a name='890'>
<a name='891'>
  636   format(60(f2.0))<a name='892'>
<a name='893'>
<a name='894'>
<font color=#447700>!! HBM3<a name='895'></font>
        HBM3=0.<a name='896'>
<a name='897'>
<a name='898'>
<font color=#447700>!!      LOOP OVER LOCAL DIMENSIONS<a name='899'></font>
<a name='900'>
       do J=jts,min(jte,jde-1)<a name='901'>
          IHWG(J)=mod(J+1,2)-1<a name='902'>
          IF (J .ge. 4 .and. J .le. (jde-1)-3) THEN<a name='903'>
            IHL=(ids+1)-IHWG(J)<a name='904'>
            IHH=(ide-1)-2<a name='905'>
            do I=its,min(ite,ide-1)<a name='906'>
              IF (I .ge. IHL  .and. I .le. IHH) HBM3(I,J)=1.<a name='907'>
            enddo<a name='908'>
          ENDIF<a name='909'>
        enddo<a name='910'>
<a name='911'>
<a name='912'>
<font color=#447700>!! VBM2<a name='913'></font>
<a name='914'>
       VBM2=0.<a name='915'>
<a name='916'>
       do J=jts,min(jte,jde-1)<a name='917'>
       do I=its,min(ite,ide-1)<a name='918'>
<a name='919'>
        IF ( (J .ge. 3 .and. J .le. (jde-1)-2)  .AND.  &amp;<a name='920'>
             (I .ge. 2 .and. I .le. (ide-1)-1-mod(J,2)) ) THEN<a name='921'>
<a name='922'>
           VBM2(I,J)=1.<a name='923'>
<a name='924'>
        ENDIF<a name='925'>
<a name='926'>
       enddo<a name='927'>
       enddo<a name='928'>
<a name='929'>
<font color=#447700>!! VBM3<a name='930'></font>
<a name='931'>
        VBM3=0.<a name='932'>
<a name='933'>
       do J=jts,min(jte,jde-1)<a name='934'>
       do I=its,min(ite,ide-1)<a name='935'>
<a name='936'>
        IF ( (J .ge. 4 .and. J .le. (jde-1)-3)  .AND.  &amp;<a name='937'>
             (I .ge. 3-mod(J,2) .and. I .le. (ide-1)-2) ) THEN<a name='938'>
<a name='939'>
       VBM3(I,J)=1.<a name='940'>
<a name='941'>
        ENDIF<a name='942'>
<a name='943'>
       enddo<a name='944'>
       enddo<a name='945'>
<a name='946'>
<font color=#447700>!       DTAD=1 in const.f of intrst code<a name='947'></font>
      DTAD=1.0<a name='948'>
<a name='949'>
<font color=#447700>!       IDTCF=DTCF, IDTCF=4<a name='950'></font>
      DTCF=4.0 <font color=#447700>! used?<a name='951'></font>
<a name='952'>
      DY_NMM=ERAD*DPH<a name='953'>
      CPGFV=-GRID%DT/(48.*DY_NMM)<a name='954'>
      EN= GRID%DT/( 4.*DY_NMM)*DTAD<a name='955'>
      ENT=GRID%DT/(16.*DY_NMM)*DTAD<a name='956'>
<a name='957'>
<a name='958'>
        DO J=jts,nnyp<a name='959'>
         KHL2(J)=(IDE-1)*(J-1)-(J-1)/2+2<a name='960'>
         KVL2(J)=(IDE-1)*(J-1)-J/2+2<a name='961'>
         KHH2(J)=(IDE-1)*J-J/2-1<a name='962'>
         KVH2(J)=(IDE-1)*J-(J+1)/2-1<a name='963'>
        ENDDO<a name='964'>
<a name='965'>
        TPH=SB-DPH<a name='966'>
<a name='967'>
<font color=#447700>!        DO J=jts,NNYP<a name='968'></font>
        DO J=jts,min(jte,jde-1)<a name='969'>
<font color=#447700>!       DO J=jds,jde-1<a name='970'></font>
         TPH=SB+float(J-1)*DPH<a name='971'>
         DXP=ERAD*DLM*COS(TPH)<a name='972'>
         DXJ(J)=DXP<a name='973'>
         WPDARJ(J)=-W_NMM * &amp;<a name='974'>
     ((ERAD*DLM*AMIN1(COS(ANBI),COS(SBI)))**2+DY_NMM**2)/ &amp;<a name='975'>
                   (GRID%DT*32.*DXP*DY_NMM)<a name='976'>
<a name='977'>
         CPGFUJ(J)=-GRID%DT/(48.*DXP)<a name='978'>
         CURVJ(J)=.5*GRID%DT*TAN(TPH)/ERAD<a name='979'>
         FCPJ(J)=GRID%DT/(CP*192.*DXP*DY_NMM)<a name='980'>
         FDIVJ(J)=1./(12.*DXP*DY_NMM)<a name='981'>
<font color=#447700>!         EMJ(J)= GRID%DT/( 4.*DXP)*DTAD<a name='982'></font>
<font color=#447700>!         EMTJ(J)=GRID%DT/(16.*DXP)*DTAD<a name='983'></font>
         FADJ(J)=-GRID%DT/(48.*DXP*DY_NMM)*DTAD<a name='984'>
         ACDT=GRID%DT*SQRT((ERAD*DLM*AMIN1(COS(ANBI),COS(SBI)))**2+DY_NMM**2)<a name='985'>
         CDDAMP=CODAMP*ACDT<a name='986'>
         HDACJ(J)=COAC*ACDT/(4.*DXP*DY_NMM)<a name='987'>
         DDMPUJ(J)=CDDAMP/DXP<a name='988'>
         DDMPVJ(J)=CDDAMP/DY_NMM<a name='989'>
        ENDDO<a name='990'>
<a name='991'>
<font color=#447700>!!! wrf_dm_on_monitor block was here, but was causing problems for unknown reasons<a name='992'></font>
<a name='993'>
<a name='994'>
          DO J=JTS,min(JTE,JDE-1)<a name='995'>
           TLM=WB-TDLM+MOD(J,2)*DLM<a name='996'>
           TPH=SB+float(J-1)*DPH<a name='997'>
           STPH=SIN(TPH)<a name='998'>
           CTPH=COS(TPH)<a name='999'>
           DO I=ITS,MIN(ITE,IDE-1)<a name='1000'>
<a name='1001'>
        if (I .eq. ITS) THEN<a name='1002'>
             TLM=TLM+TDLM*ITS<a name='1003'>
        else<a name='1004'>
             TLM=TLM+TDLM<a name='1005'>
        endif<a name='1006'>
<a name='1007'>
             FP=TWOM*(CTPH0*STPH+STPH0*CTPH*COS(TLM))<a name='1008'>
             F(I,J)=0.5*GRID%DT*FP<a name='1009'>
<a name='1010'>
           ENDDO<a name='1011'>
          ENDDO<a name='1012'>
<a name='1013'>
<font color=#447700>! --------------DERIVED VERTICAL GRID CONSTANTS--------------------------<a name='1014'></font>
<a name='1015'>
      EF4T=.5*GRID%DT/CP<a name='1016'>
      F4Q =   -GRID%DT*DTAD<a name='1017'>
      F4D =-.5*GRID%DT*DTAD<a name='1018'>
<a name='1019'>
<font color=#447700>!       DO L=KDS,KDE<a name='1020'></font>
       DO L=KDS,KDE-1<a name='1021'>
        RDETA(L)=1./DETA(L)<a name='1022'>
        F4Q2(L)=-.25*GRID%DT*DTAD/DETA(L)<a name='1023'>
       ENDDO<a name='1024'>
<a name='1025'>
<a name='1026'>
<font color=#447700>! shouldnt need to be done globally, right?<a name='1027'></font>
        DO J=JTS,min(JTE,JDE-1)<a name='1028'>
        DO I=ITS,min(ITE,IDE-1)<a name='1029'>
          DX_NMM(I,J)=DXJ(J)<a name='1030'>
          WPDAR(I,J)=WPDARJ(J)*HBM2(I,J)<a name='1031'>
          CPGFU(I,J)=CPGFUJ(J)*VBM2(I,J)<a name='1032'>
          CURV(I,J)=CURVJ(J)*VBM2(I,J)<a name='1033'>
          FCP(I,J)=FCPJ(J)*HBM2(I,J)<a name='1034'>
          FDIV(I,J)=FDIVJ(J)*HBM2(I,J)<a name='1035'>
          FAD(I,J)=FADJ(J)<a name='1036'>
<font color=#447700>!       if (mod(I,5) .eq. 0 .and. mod(J,5) .eq. 0) then<a name='1037'></font>
<font color=#447700>!       write(0,*) 'I,J,FADJ,FAD(I,J): ', I,J,FADJ(J),FAD(I,J)<a name='1038'></font>
<font color=#447700>!       endif<a name='1039'></font>
          HDACV(I,J)=HDACJ(J)*VBM2(I,J)<a name='1040'>
          HDAC(I,J)=HDACJ(J)*1.25*HBM2(I,J)<a name='1041'>
        ENDDO<a name='1042'>
        ENDDO<a name='1043'>
<a name='1044'>
<a name='1045'>
<a name='1046'>
<font color=#447700>!      DO J=3,(JDE-1)-2<a name='1047'></font>
        DO J=JTS, MIN(JDE-1,JTE)<a name='1048'>
<a name='1049'>
        IF (J.LE.5.OR.J.GE.(JDE-1)-4) THEN<a name='1050'>
<a name='1051'>
               KHH=(IDE-1)-2+MOD(J,2) <font color=#447700>! KHH is global...loop over I that have<a name='1052'></font>
               DO I=ITS,MIN(IDE-1,ITE)<a name='1053'>
                 IF (I .ge. 2 .and. I .le. KHH) THEN<a name='1054'>
                   HDAC(I,J)=HDAC(I,J)* DFC<a name='1055'>
                 ENDIF<a name='1056'>
               ENDDO<a name='1057'>
<a name='1058'>
        ELSE<a name='1059'>
<a name='1060'>
          KHH=2+MOD(J,2)<a name='1061'>
               DO I=ITS,MIN(IDE-1,ITE)<a name='1062'>
                 IF (I .ge. 2 .and. I .le. KHH) THEN<a name='1063'>
                    HDAC(I,J)=HDAC(I,J)* DFC<a name='1064'>
                 ENDIF<a name='1065'>
               ENDDO<a name='1066'>
<a name='1067'>
          KHH=(IDE-1)-2+MOD(J,2)<a name='1068'>
<a name='1069'>
<font color=#447700>!          DO I=(IDE-1)-2,KHH<a name='1070'></font>
               DO I=ITS,MIN(IDE-1,ITE)<a name='1071'>
                 IF (I .ge. (IDE-1)-2 .and. I .le. KHH) THEN<a name='1072'>
                   HDAC(I,J)=HDAC(I,J)* DFC<a name='1073'>
                 ENDIF<a name='1074'>
               ENDDO<a name='1075'>
        ENDIF<a name='1076'>
      ENDDO<a name='1077'>
<a name='1078'>
<a name='1079'>
      DO J=JTS,min(JTE,JDE-1)<a name='1080'>
      DO I=ITS,min(ITE,IDE-1)<a name='1081'>
        DDMPU(I,J)=DDMPUJ(J)*VBM2(I,J)<a name='1082'>
        DDMPV(I,J)=DDMPVJ(J)*VBM2(I,J)<a name='1083'>
        HDACV(I,J)=HDACV(I,J)*VBM2(I,J)<a name='1084'>
      ENDDO<a name='1085'>
      ENDDO<a name='1086'>
<font color=#447700>! --------------INCREASING DIFFUSION ALONG THE BOUNDARIES----------------<a name='1087'></font>
<a name='1088'>
<font color=#447700>!      DO J=3,JDE-1-2<a name='1089'></font>
<a name='1090'>
        DO J=JTS,MIN(JDE-1,JTE)<a name='1091'>
        IF (J.LE.5.OR.J.GE.JDE-1-4) THEN<a name='1092'>
          KVH=(IDE-1)-1-MOD(J,2)<a name='1093'>
          DO I=ITS,min(IDE-1,ITE)<a name='1094'>
            IF (I .ge. 2 .and.  I .le. KVH) THEN<a name='1095'>
             DDMPU(I,J)=DDMPU(I,J)*DDFC<a name='1096'>
             DDMPV(I,J)=DDMPV(I,J)*DDFC<a name='1097'>
             HDACV(I,J)=HDACV(I,J)* DFC<a name='1098'>
            ENDIF<a name='1099'>
          ENDDO<a name='1100'>
        ELSE<a name='1101'>
          KVH=3-MOD(J,2)<a name='1102'>
          DO I=ITS,min(IDE-1,ITE)<a name='1103'>
           IF (I .ge. 2 .and.  I .le. KVH) THEN<a name='1104'>
            DDMPU(I,J)=DDMPU(I,J)*DDFC<a name='1105'>
            DDMPV(I,J)=DDMPV(I,J)*DDFC<a name='1106'>
            HDACV(I,J)=HDACV(I,J)* DFC<a name='1107'>
           ENDIF<a name='1108'>
          ENDDO<a name='1109'>
          KVH=(IDE-1)-1-MOD(J,2)<a name='1110'>
          DO I=ITS,min(IDE-1,ITE)<a name='1111'>
           IF (I .ge. IDE-1-2 .and. I .le. KVH) THEN<a name='1112'>
            DDMPU(I,J)=DDMPU(I,J)*DDFC<a name='1113'>
            DDMPV(I,J)=DDMPV(I,J)*DDFC<a name='1114'>
            HDACV(I,J)=HDACV(I,J)* DFC<a name='1115'>
           ENDIF<a name='1116'>
          ENDDO<a name='1117'>
        ENDIF<a name='1118'>
      ENDDO<a name='1119'>
<a name='1120'>
        write(0,*) ' grid%num_soil_layers = ',  grid%num_soil_layers<a name='1121'>
<a name='1122'>
        write(0,*) 'STC(1)'<a name='1123'>
        do J=min(jde-1,jte),jts,-(jte-jts)/15<a name='1124'>
        write(0,635) (stc(I,1,J),I=its,min(ite,ide-1),(ite-its)/12)<a name='1125'>
        enddo<a name='1126'>
<a name='1127'>
        write(0,*) 'SMC(1)'<a name='1128'>
        do J=min(jde-1,jte),jts,-(jte-jts)/15<a name='1129'>
        write(0,635) (smc(I,1,J),I=its,min(ite,ide-1),(ite-its)/12)<a name='1130'>
        enddo<a name='1131'>
<a name='1132'>
<font color=#447700>!       write(0,*) 'SM'<a name='1133'></font>
<font color=#447700>!       do J=min(jde-1,jte),jts,-(jte-jts)/15<a name='1134'></font>
<font color=#447700>!       write(0,635) (smc(I,1,J),I=its,min(ite,ide-1),(ite-its)/12)<a name='1135'></font>
<font color=#447700>!       enddo<a name='1136'></font>
<a name='1137'>
          DO j = jts, MIN(jde-1,jte)<a name='1138'>
          DO i=  ITS, MIN(IDE-1,ITE)<a name='1139'>
<a name='1140'>
        if (SM(I,J) .eq. 0 .and. SMC(I,1,J) .gt. 0.5 .and. SICE(I,J) .eq. 0) then<a name='1141'>
        write(0,*) 'wet on land point: ', I,J,SMC(I,1,J),SICE(I,J)<a name='1142'>
        endif<a name='1143'>
<a name='1144'>
          enddo<a name='1145'>
        enddo<a name='1146'>
<a name='1147'>
<a name='1148'>
<font color=#447700>!!!! MOVE MONITOR BLOCK HERE<a name='1149'></font>
<a name='1150'>
<font color=#447700>!!!   compute EMT, EM on global domain, and only on task 0.<a name='1151'></font>
<a name='1152'>
        IF (wrf_dm_on_monitor()) THEN   <font color=#447700>!!!! NECESSARY TO LIMIT THIS TO TASK ZERO?<a name='1153'></font>
<a name='1154'>
        ALLOCATE(EMJ(JDS:JDE-1),EMTJ(JDS:JDE-1))<a name='1155'>
<a name='1156'>
<font color=#447700>!       write(0,*) 'FIGURING OUT EMJ, EMTJ ', JDS, JDE-1<a name='1157'></font>
        DO J=JDS,JDE-1<a name='1158'>
         TPH=SB+float(J-1)*DPH<a name='1159'>
         DXP=ERAD*DLM*COS(TPH)<a name='1160'>
         EMJ(J)= GRID%DT/( 4.*DXP)*DTAD<a name='1161'>
         EMTJ(J)=GRID%DT/(16.*DXP)*DTAD<a name='1162'>
<font color=#447700>!       write(0,*) 'J, EMTJ(J): ', J, EMTJ(J)<a name='1163'></font>
        ENDDO<a name='1164'>
        <a name='1165'>
          JA=0<a name='1166'>
          DO 161 J=3,5<a name='1167'>
          JA=JA+1<a name='1168'>
          KHLA(JA)=2<a name='1169'>
          KHHA(JA)=(IDE-1)-1-MOD(J+1,2)<a name='1170'>
 161      EMT(JA)=EMTJ(J)<a name='1171'>
          DO 162 J=(JDE-1)-4,(JDE-1)-2<a name='1172'>
          JA=JA+1<a name='1173'>
          KHLA(JA)=2<a name='1174'>
          KHHA(JA)=(IDE-1)-1-MOD(J+1,2)<a name='1175'>
 162      EMT(JA)=EMTJ(J)<a name='1176'>
          DO 163 J=6,(JDE-1)-5<a name='1177'>
          JA=JA+1<a name='1178'>
          KHLA(JA)=2<a name='1179'>
          KHHA(JA)=2+MOD(J,2)<a name='1180'>
 163      EMT(JA)=EMTJ(J)<a name='1181'>
          DO 164 J=6,(JDE-1)-5<a name='1182'>
          JA=JA+1<a name='1183'>
          KHLA(JA)=(IDE-1)-2<a name='1184'>
          KHHA(JA)=(IDE-1)-1-MOD(J+1,2)<a name='1185'>
 164      EMT(JA)=EMTJ(J)<a name='1186'>
<a name='1187'>
<font color=#447700>! --------------SPREADING OF UPSTREAM VELOCITY-POINT ADVECTION FACTOR----<a name='1188'></font>
<a name='1189'>
      JA=0<a name='1190'>
              DO 171 J=3,5<a name='1191'>
          JA=JA+1<a name='1192'>
          KVLA(JA)=2<a name='1193'>
          KVHA(JA)=(IDE-1)-1-MOD(J,2)<a name='1194'>
 171      EM(JA)=EMJ(J)<a name='1195'>
              DO 172 J=(JDE-1)-4,(JDE-1)-2<a name='1196'>
          JA=JA+1<a name='1197'>
          KVLA(JA)=2<a name='1198'>
          KVHA(JA)=(IDE-1)-1-MOD(J,2)<a name='1199'>
 172      EM(JA)=EMJ(J)<a name='1200'>
              DO 173 J=6,(JDE-1)-5<a name='1201'>
          JA=JA+1<a name='1202'>
          KVLA(JA)=2<a name='1203'>
          KVHA(JA)=2+MOD(J+1,2)<a name='1204'>
 173      EM(JA)=EMJ(J)<a name='1205'>
              DO 174 J=6,(JDE-1)-5<a name='1206'>
          JA=JA+1<a name='1207'>
          KVLA(JA)=(IDE-1)-2<a name='1208'>
          KVHA(JA)=(IDE-1)-1-MOD(J,2)<a name='1209'>
 174      EM(JA)=EMJ(J)<a name='1210'>
<a name='1211'>
   696  continue<a name='1212'>
        ENDIF <font color=#447700>! wrf_dm_on_monitor<a name='1213'></font>
<a name='1214'>
<a name='1215'>
      call <A href='../../html_code/dyn_nmm/module_initialize_real.F.html#NMM_SH2O'>NMM_SH2O</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN_NMM' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="NMM_SH2O_1">(IMS,IME,JMS,JME,ITS,NNXP,JTS,NNYP,4,ISLTYP, &amp;<a name='1216'>
                             SM,SICE,STC,SMC,SH2O)<a name='1217'>
<a name='1218'>
<font color=#447700>!! must be a better place to put this, but will eliminate "phantom"<a name='1219'></font>
<font color=#447700>!! wind points here (no wind point on eastern boundary of odd numbered rows)<a name='1220'></font>
<a name='1221'>
        if (   abs(IDE-1-ITE) .eq. 1 ) THEN <font color=#447700>! along eastern boundary<a name='1222'></font>
        write(0,*) 'zero phantom winds'<a name='1223'>
        do K=1,KDE-1<a name='1224'>
<font color=#447700>!         do J=JTS,JDE-1,2<a name='1225'></font>
        DO J=JDS,JDE-1,2<a name='1226'>
        if (J .ge. JTS .and. J .le. JTE) THEN<a name='1227'>
             u(IDE-1,K,J)=0.<a name='1228'>
             v(IDE-1,K,J)=0.<a name='1229'>
        endif<a name='1230'>
          enddo<a name='1231'>
        enddo<a name='1232'>
        endif<a name='1233'>
<a name='1234'>
  969   continue<a name='1235'>
<a name='1236'>
<font color=#447700>!       write(0,*) 'NMM_TSK leaving init_domain_nmm'<a name='1237'></font>
<font color=#447700>!       do J=min(jte,jde-1),jts,-(jte-jts)/15<a name='1238'></font>
<font color=#447700>!       write(0,635) (NMM_TSK(I,J),I=its,min(ide-1,ite),(ite-its)/12)<a name='1239'></font>
<font color=#447700>!       enddo<a name='1240'></font>
<a name='1241'>
         DO j = jms, jme<a name='1242'>
            DO i = ims, ime<a name='1243'>
<a name='1244'>
          fisx=max(fis(i,j),0.)<a name='1245'>
          Z0(I,J)    =SM(I,J)*Z0SEA+(1.-SM(I,J))*                      &amp;<a name='1246'>
     &amp;                (Z0(I,J)*Z0MAX+FISx    *FCM+Z0LAND)<a name='1247'>
<a name='1248'>
            ENDDO<a name='1249'>
          ENDDO<a name='1250'>
<a name='1251'>
        write(0,*) 'Z0 over memory, leaving module_initialize_real'<a name='1252'>
        do J=JME,JMS,-(JME-JMS)/20<a name='1253'>
        write(0,635) (Z0(I,J),I=IMS,IME,(IME-IMS)/14)<a name='1254'>
        enddo<a name='1255'>
<a name='1256'>
<a name='1257'>
<a name='1258'>
        write(0,*) 'leaving init_domain_nmm'<a name='1259'>
<font color=#447700>!<a name='1260'></font>
<font color=#447700>! Gopal's doing's : following lines  moved to namelist_input4 in Registry <a name='1261'></font>
<font color=#447700>!<a name='1262'></font>
<font color=#447700>!       write(0,*) 'hardwire'<a name='1263'></font>
<font color=#447700>!        sigma=.true.<a name='1264'></font>
<font color=#447700>!       grid%IDTAD=2  <a name='1265'></font>
<font color=#447700>!       grid%NSOIL=4<a name='1266'></font>
<font color=#447700>!       grid%NPHS=4<a name='1267'></font>
<font color=#447700>!       grid%NCNVC=4<a name='1268'></font>
       write(message,*)'STUFF MOVED TO REGISTRY:',grid%IDTAD,          &amp;<a name='1269'>
     &amp; grid%NSOIL,grid%NRADL,grid%NRADS,grid%NPHS,grid%NCNVC,grid%sigma<a name='1270'>
       CALL <A href='../../html_code/frame/module_wrf_error.F.html#WRF_MESSAGE'>wrf_message</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN_NMM' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="WRF_MESSAGE_12">( TRIM(message) )<a name='1271'>
<font color=#447700>!==================================================================================<a name='1272'></font>
<a name='1273'>
#define COPY_OUT<a name='1274'>
#include &lt;<A href='../../html_code/include/nmm_scalar_derefs.inc.html'>nmm_scalar_derefs.inc</A>&gt;<A NAME="nmm_scalar_derefs.inc_8"><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_DOMAIN_NMM' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><a name='1275'>
      RETURN<a name='1276'>
<a name='1277'>
   END SUBROUTINE init_domain_nmm<a name='1278'>
<a name='1279'>
<font color=#447700>!--------------------------------------------------------------------<a name='1280'></font>
<A NAME='NMM_SH2O'><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#NMM_SH2O' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A><a name='1281'>
      <font color=#993300>SUBROUTINE </font><font color=#cc0000>NMM_SH2O</font>(IMS,IME,JMS,JME,ISTART,IM,JSTART,JM,&amp; <A href='../../call_to/NMM_SH2O.html' TARGET='index'>1</A>,<A href='../../call_from/NMM_SH2O.html' TARGET='index'>1</A><a name='1282'>
                        NSOIL,ISLTPK, &amp;<a name='1283'>
                        SM,SICE,STC,SMC,SH2O)<a name='1284'>
<a name='1285'>
<font color=#447700>!!        INTEGER, PARAMETER:: NSOTYP=9<a name='1286'></font>
<font color=#447700>!        INTEGER, PARAMETER:: NSOTYP=16<a name='1287'></font>
        INTEGER, PARAMETER:: NSOTYP=19 <font color=#447700>!!!!!!!!MAYBE???<a name='1288'></font>
<a name='1289'>
        REAL :: PSIS(NSOTYP),BETA(NSOTYP),SMCMAX(NSOTYP)<a name='1290'>
        REAL :: STC(IMS:IME,NSOIL,JMS:JME), &amp;<a name='1291'>
                SMC(IMS:IME,NSOIL,JMS:JME)<a name='1292'>
        REAL :: SH2O(IMS:IME,NSOIL,JMS:JME),SICE(IMS:IME,JMS:JME),&amp;<a name='1293'>
                SM(IMS:IME,JMS:JME)<a name='1294'>
        REAL :: HLICE,GRAV,T0,BLIM<a name='1295'>
        INTEGER :: ISLTPK(IMS:IME,JMS:JME)<a name='1296'>
<a name='1297'>
<font color=#447700>! Constants used in cold start SH2O initialization<a name='1298'></font>
      DATA HLICE/3.335E5/,GRAV/9.81/,T0/273.15/<a name='1299'>
      DATA BLIM/5.5/<a name='1300'>
<font color=#447700>!      DATA PSIS /0.04,0.62,0.47,0.14,0.10,0.26,0.14,0.36,0.04/<a name='1301'></font>
<font color=#447700>!      DATA BETA /4.26,8.72,11.55,4.74,10.73,8.17,6.77,5.25,4.26/<a name='1302'></font>
<font color=#447700>!      DATA SMCMAX /0.421,0.464,0.468,0.434,0.406, &amp;<a name='1303'></font>
<font color=#447700>!                  0.465,0.404,0.439,0.421/<a name='1304'></font>
<a name='1305'>
        <a name='1306'>
<font color=#447700>!!!      NOT SURE...PSIS=SATPSI, BETA=BB??<a name='1307'></font>
<a name='1308'>
        DATA PSIS /0.069, 0.036, 0.141, 0.759, 0.759, 0.355,   &amp;<a name='1309'>
                   0.135, 0.617, 0.263, 0.098, 0.324, 0.468,   &amp;<a name='1310'>
                   0.355, 0.000, 0.069, 0.036, 0.468, 0.069, 0.069  /<a name='1311'>
<a name='1312'>
        DATA BETA/2.79,  4.26,  4.74,  5.33,  5.33,  5.25,    &amp;<a name='1313'>
                  6.66,  8.72,  8.17, 10.73, 10.39, 11.55,    &amp;<a name='1314'>
                  5.25,  0.00,  2.79,  4.26, 11.55, 2.79, 2.79 /<a name='1315'>
<a name='1316'>
        DATA SMCMAX/0.339, 0.421, 0.434, 0.476, 0.476, 0.439,  &amp;<a name='1317'>
                    0.404, 0.464, 0.465, 0.406, 0.468, 0.468,  &amp;<a name='1318'>
                    0.439, 1.000, 0.200, 0.421, 0.468, 0.200, 0.339/<a name='1319'>
<a name='1320'>
        write(0,*) 'define SH2O over IM,JM: ', IM,JM<a name='1321'>
        DO K=1,NSOIL<a name='1322'>
         DO J=JSTART,JM<a name='1323'>
          DO I=ISTART,IM<a name='1324'>
        if(i==169.and.j==111.and.k==1)then<a name='1325'>
          write(0,*)' enter NMM_SH2O k=',k,' smc=',smc(i,k,j),' sh2o=',sh2o(i,k,j)<a name='1326'>
        endif<a name='1327'>
<font color=#447700>!tst<a name='1328'></font>
        IF (SMC(I,K,J) .gt. SMCMAX(ISLTPK(I,J))) then<a name='1329'>
<font color=#447700>! if (K .eq. 1) then<a name='1330'></font>
<font color=#447700>!  write(0,*) 'I,J,reducing SMC from ' ,I,J,SMC(I,K,J), 'to ', SMCMAX(ISLTPK(I,J))<a name='1331'></font>
<font color=#447700>!  endif<a name='1332'></font>
        SMC(I,K,J)=SMCMAX(ISLTPK(I,J))<a name='1333'>
        ENDIF<a name='1334'>
<font color=#447700>!tst<a name='1335'></font>
<a name='1336'>
        if(i==056.and.j==265.and.k==1)then<a name='1337'>
          write(0,*)' NMM_SH2O point 2 k=',k,' smc=',smc(i,k,j),' sh2o=',sh2o(i,k,j)<a name='1338'>
        endif<a name='1339'>
        IF ( (SM(I,J) .lt. 0.5) .and. (SICE(I,J) .lt. 0.5) ) THEN<a name='1340'>
<a name='1341'>
        IF (ISLTPK(I,J) .gt. 19) THEN<a name='1342'>
                WRITE(6,*) 'FORCING ISLTPK at : ', I,J<a name='1343'>
                ISLTPK(I,J)=9<a name='1344'>
        ELSEIF (ISLTPK(I,J) .le. 0) then<a name='1345'>
                WRITE(6,*) 'FORCING ISLTPK at : ', I,J<a name='1346'>
                ISLTPK(I,J)=1<a name='1347'>
        ENDIF<a name='1348'>
<a name='1349'>
<a name='1350'>
<font color=#447700>! cold start:  determine liquid soil water content (SH2O)<a name='1351'></font>
<font color=#447700>! SH2O &lt;= SMC for T &lt; 273.149K (-0.001C)<a name='1352'></font>
<a name='1353'>
           IF (STC(I,K,J) .LT. 273.149) THEN<a name='1354'>
<a name='1355'>
<font color=#447700>! first guess following explicit solution for Flerchinger Eqn from Koren<a name='1356'></font>
<font color=#447700>! et al, JGR, 1999, Eqn 17 (KCOUNT=0 in FUNCTION FRH2O).<a name='1357'></font>
<a name='1358'>
              BX = BETA(ISLTPK(I,J))<a name='1359'>
              IF ( BETA(ISLTPK(I,J)) .GT. BLIM ) BX = BLIM<a name='1360'>
<a name='1361'>
        if ( GRAV*(-PSIS(ISLTPK(I,J))) .eq. 0 ) then<a name='1362'>
        write(0,*) 'TROUBLE'<a name='1363'>
        write(0,*) 'I,J: ', i,J<a name='1364'>
        write(0,*) 'grav, isltpk, psis(isltpk): ', grav,isltpk(I,J),&amp;<a name='1365'>
                 psis(isltpk(I,J))<a name='1366'>
        endif<a name='1367'>
<a name='1368'>
        if (BX .eq. 0 .or. STC(I,K,J) .eq. 0) then<a name='1369'>
                write(0,*) 'I,J,BX, STC: ', I,J,BX,STC(I,K,J)<a name='1370'>
        endif<a name='1371'>
              FK = (((HLICE/(GRAV*(-PSIS(ISLTPK(I,J)))))* &amp;<a name='1372'>
                  ((STC(I,K,J)-T0)/STC(I,K,J)))** &amp;<a name='1373'>
                  (-1/BX))*SMCMAX(ISLTPK(I,J))<a name='1374'>
              IF (FK .LT. 0.02) FK = 0.02<a name='1375'>
              SH2O(I,K,J) = MIN ( FK, SMC(I,K,J) )<a name='1376'>
<font color=#447700>! ----------------------------------------------------------------------<a name='1377'></font>
<font color=#447700>! now use iterative solution for liquid soil water content using<a name='1378'></font>
<font color=#447700>! FUNCTION FRH2O (from the Eta "NOAH" land-surface model) with the<a name='1379'></font>
<font color=#447700>! initial guess for SH2O from above explicit first guess.<a name='1380'></font>
<a name='1381'>
              SH2O(I,K,J)=<A href='../../html_code/dyn_nmm/module_initialize_real.F.html#FRH2O_INIT'>FRH2O_init</A><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#NMM_SH2O' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="FRH2O_INIT_1">(STC(I,K,J),SMC(I,K,J),SH2O(I,K,J), &amp;<a name='1382'>
                         SMCMAX(ISLTPK(I,J)),BETA(ISLTPK(I,J)), &amp;<a name='1383'>
                         PSIS(ISLTPK(I,J)))<a name='1384'>
<a name='1385'>
            ELSE <font color=#447700>! above freezing<a name='1386'></font>
              SH2O(I,K,J)=SMC(I,K,J)<a name='1387'>
            ENDIF<a name='1388'>
<a name='1389'>
<a name='1390'>
        ELSE   <font color=#447700>! water point<a name='1391'></font>
              SH2O(I,K,J)=SMC(I,K,J)<a name='1392'>
<a name='1393'>
        ENDIF <font color=#447700>! test on land/ice/sea<a name='1394'></font>
        if (SH2O(I,K,J) .gt. SMCMAX(ISLTPK(I,J))) then<a name='1395'>
        write(0,*) 'SH2O &gt; THAN SMCMAX ', I,J,SH2O(I,K,J),SMCMAX(ISLTPK(I,J)),SMC(I,K,J)<a name='1396'>
        endif<a name='1397'>
<a name='1398'>
        if(i==169.and.j==111.and.k==1)then<a name='1399'>
          write(0,*)' exit NMM_SH2O k=',k,' smc=',smc(i,k,j),' sh2o=',sh2o(i,k,j)<a name='1400'>
        endif<a name='1401'>
<a name='1402'>
         ENDDO<a name='1403'>
        ENDDO<a name='1404'>
       ENDDO<a name='1405'>
<a name='1406'>
        END SUBROUTINE NMM_SH2O<a name='1407'>
<a name='1408'>
<font color=#447700>!-------------------------------------------------------------------<a name='1409'></font>
<a name='1410'>
<A NAME='ZERO2D'><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#ZERO2D' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A><a name='1411'>
        <font color=#993300>subroutine </font><font color=#cc0000>zero2d</font>(adum2d,nnxp,nnyp)<a name='1412'>
<a name='1413'>
        integer I,J,NNXP,NNYP<a name='1414'>
        real adum2d(nnxp,nnyp)<a name='1415'>
<a name='1416'>
        do J=1,nnyp<a name='1417'>
        do I=1,nnxp<a name='1418'>
        adum2d(I,J)=0.<a name='1419'>
        enddo<a name='1420'>
        enddo<a name='1421'>
<a name='1422'>
        end subroutine zero2d<a name='1423'>
<a name='1424'>
<a name='1425'>
<font color=#447700>!-------------------------------------------------------------------<a name='1426'></font>
<A NAME='FRH2O_INIT'><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#FRH2O_INIT' TARGET='top_target'><IMG SRC="../../gif/bar_green.gif" border=0></A><a name='1427'>
      <font color=#993300>FUNCTION </font><font color=#cc0000>FRH2O_init</font>(TKELV,SMC,SH2O,SMCMAX,B,PSIS) <A href='../../call_to/FRH2O_INIT.html' TARGET='index'>1</A><a name='1428'>
<a name='1429'>
      IMPLICIT NONE<a name='1430'>
<a name='1431'>
<font color=#447700>! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC<a name='1432'></font>
<font color=#447700>!  PURPOSE:  CALCULATE AMOUNT OF SUPERCOOLED LIQUID SOIL WATER CONTENT<a name='1433'></font>
<font color=#447700>!  IF TEMPERATURE IS BELOW 273.15K (T0).  REQUIRES NEWTON-TYPE ITERATION<a name='1434'></font>
<font color=#447700>!  TO SOLVE THE NONLINEAR IMPLICIT EQUATION GIVEN IN EQN 17 OF<a name='1435'></font>
<font color=#447700>!  KOREN ET AL. (1999, JGR, VOL 104(D16), 19569-19585).<a name='1436'></font>
<font color=#447700>! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC<a name='1437'></font>
<font color=#447700>!<a name='1438'></font>
<font color=#447700>! New version (JUNE 2001): much faster and more accurate newton iteration<a name='1439'></font>
<font color=#447700>! achieved by first taking log of eqn cited above -- less than 4<a name='1440'></font>
<font color=#447700>! (typically 1 or 2) iterations achieves convergence.  Also, explicit<a name='1441'></font>
<font color=#447700>! 1-step solution option for special case of parameter Ck=0, which reduces<a name='1442'></font>
<font color=#447700>! the original implicit equation to a simpler explicit form, known as the<a name='1443'></font>
<font color=#447700>! ""Flerchinger Eqn". Improved handling of solution in the limit of<a name='1444'></font>
<font color=#447700>! freezing point temperature T0.<a name='1445'></font>
<font color=#447700>!<a name='1446'></font>
<font color=#447700>! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC<a name='1447'></font>
<font color=#447700>!<a name='1448'></font>
<font color=#447700>! INPUT:<a name='1449'></font>
<font color=#447700>!<a name='1450'></font>
<font color=#447700>!   TKELV.........Temperature (Kelvin)<a name='1451'></font>
<font color=#447700>!   SMC...........Total soil moisture content (volumetric)<a name='1452'></font>
<font color=#447700>!   SH2O..........Liquid soil moisture content (volumetric)<a name='1453'></font>
<font color=#447700>!   SMCMAX........Saturation soil moisture content (from REDPRM)<a name='1454'></font>
<font color=#447700>!   B.............Soil type "B" parameter (from REDPRM)<a name='1455'></font>
<font color=#447700>!   PSIS..........Saturated soil matric potential (from REDPRM)<a name='1456'></font>
<font color=#447700>!<a name='1457'></font>
<font color=#447700>! OUTPUT:<a name='1458'></font>
<font color=#447700>!   FRH2O.........supercooled liquid water content.<a name='1459'></font>
<font color=#447700>! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC<a name='1460'></font>
<a name='1461'>
      REAL B<a name='1462'>
      REAL BLIM<a name='1463'>
      REAL BX<a name='1464'>
      REAL CK<a name='1465'>
      REAL DENOM<a name='1466'>
      REAL DF<a name='1467'>
      REAL DH2O<a name='1468'>
      REAL DICE<a name='1469'>
      REAL DSWL<a name='1470'>
      REAL ERROR<a name='1471'>
      REAL FK<a name='1472'>
      REAL FRH2O_init<a name='1473'>
      REAL GS<a name='1474'>
      REAL HLICE<a name='1475'>
      REAL PSIS<a name='1476'>
      REAL SH2O<a name='1477'>
      REAL SMC<a name='1478'>
      REAL SMCMAX<a name='1479'>
      REAL SWL<a name='1480'>
      REAL SWLK<a name='1481'>
      REAL TKELV<a name='1482'>
      REAL T0<a name='1483'>
<a name='1484'>
      INTEGER NLOG<a name='1485'>
      INTEGER KCOUNT<a name='1486'>
      PARAMETER (CK=8.0)<a name='1487'>
<font color=#447700>!      PARAMETER (CK=0.0)<a name='1488'></font>
      PARAMETER (BLIM=5.5)<a name='1489'>
<font color=#447700>!      PARAMETER (BLIM=7.0)<a name='1490'></font>
      PARAMETER (ERROR=0.005)<a name='1491'>
<a name='1492'>
      PARAMETER (HLICE=3.335E5)<a name='1493'>
      PARAMETER (GS = 9.81)<a name='1494'>
      PARAMETER (DICE=920.0)<a name='1495'>
      PARAMETER (DH2O=1000.0)<a name='1496'>
      PARAMETER (T0=273.15)<a name='1497'>
<a name='1498'>
<font color=#447700>!  ###   LIMITS ON PARAMETER B: B &lt; 5.5  (use parameter BLIM)  ####<a name='1499'></font>
<font color=#447700>!  ###   SIMULATIONS SHOWED IF B &gt; 5.5 UNFROZEN WATER CONTENT  ####<a name='1500'></font>
<font color=#447700>!  ###   IS NON-REALISTICALLY HIGH AT VERY LOW TEMPERATURES    ####<a name='1501'></font>
<font color=#447700>!  ################################################################<a name='1502'></font>
<font color=#447700>!<a name='1503'></font>
      BX = B<a name='1504'>
      IF ( B .GT. BLIM ) BX = BLIM<a name='1505'>
<font color=#447700>! ------------------------------------------------------------------<a name='1506'></font>
<a name='1507'>
<font color=#447700>! INITIALIZING ITERATIONS COUNTER AND ITERATIVE SOLUTION FLAG.<a name='1508'></font>
      NLOG=0<a name='1509'>
      KCOUNT=0<a name='1510'>
<a name='1511'>
<font color=#447700>! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC<a name='1512'></font>
<font color=#447700>! C  IF TEMPERATURE NOT SIGNIFICANTLY BELOW FREEZING (T0), SH2O = SMC<a name='1513'></font>
<font color=#447700>! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC<a name='1514'></font>
<a name='1515'>
<a name='1516'>
      IF (TKELV .GT. (T0 - 1.E-3)) THEN<a name='1517'>
<a name='1518'>
        FRH2O_init=SMC<a name='1519'>
<a name='1520'>
      ELSE<a name='1521'>
<a name='1522'>
<font color=#447700>! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC<a name='1523'></font>
       IF (CK .NE. 0.0) THEN<a name='1524'>
<a name='1525'>
<font color=#447700>! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC<a name='1526'></font>
<font color=#447700>! CCCCCCCCC OPTION 1: ITERATED SOLUTION FOR NONZERO CK CCCCCCCCCCC<a name='1527'></font>
<font color=#447700>! CCCCCCCCCCCC IN KOREN ET AL, JGR, 1999, EQN 17 CCCCCCCCCCCCCCCCC<a name='1528'></font>
<a name='1529'>
<font color=#447700>! INITIAL GUESS FOR SWL (frozen content)<a name='1530'></font>
        SWL = SMC-SH2O<a name='1531'>
<font color=#447700>! KEEP WITHIN BOUNDS.<a name='1532'></font>
         IF (SWL .GT. (SMC-0.02)) SWL=SMC-0.02<a name='1533'>
         IF(SWL .LT. 0.) SWL=0.<a name='1534'>
<font color=#447700>! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC<a name='1535'></font>
<font color=#447700>! C  START OF ITERATIONS<a name='1536'></font>
<font color=#447700>! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC<a name='1537'></font>
        DO WHILE (NLOG .LT. 10 .AND. KCOUNT .EQ. 0)<a name='1538'>
         NLOG = NLOG+1<a name='1539'>
         DF = ALOG(( PSIS*GS/HLICE ) * ( ( 1.+CK*SWL )**2. ) * &amp;<a name='1540'>
             ( SMCMAX/(SMC-SWL) )**BX) - ALOG(-(TKELV-T0)/TKELV)<a name='1541'>
         DENOM = 2. * CK / ( 1.+CK*SWL ) + BX / ( SMC - SWL )<a name='1542'>
         SWLK = SWL - DF/DENOM<a name='1543'>
<font color=#447700>! BOUNDS USEFUL FOR MATHEMATICAL SOLUTION.<a name='1544'></font>
         IF (SWLK .GT. (SMC-0.02)) SWLK = SMC - 0.02<a name='1545'>
         IF(SWLK .LT. 0.) SWLK = 0.<a name='1546'>
<font color=#447700>! MATHEMATICAL SOLUTION BOUNDS APPLIED.<a name='1547'></font>
         DSWL=ABS(SWLK-SWL)<a name='1548'>
         SWL=SWLK<a name='1549'>
<font color=#447700>! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC<a name='1550'></font>
<font color=#447700>! CC IF MORE THAN 10 ITERATIONS, USE EXPLICIT METHOD (CK=0 APPROX.)<a name='1551'></font>
<font color=#447700>! CC WHEN DSWL LESS OR EQ. ERROR, NO MORE ITERATIONS REQUIRED.<a name='1552'></font>
<font color=#447700>! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC<a name='1553'></font>
         IF ( DSWL .LE. ERROR )  THEN<a name='1554'>
           KCOUNT=KCOUNT+1<a name='1555'>
         END IF<a name='1556'>
        END DO<a name='1557'>
<font color=#447700>! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC<a name='1558'></font>
<font color=#447700>! C  END OF ITERATIONS<a name='1559'></font>
<font color=#447700>! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC<a name='1560'></font>
<font color=#447700>! BOUNDS APPLIED WITHIN DO-BLOCK ARE VALID FOR PHYSICAL SOLUTION.<a name='1561'></font>
        FRH2O_init = SMC - SWL<a name='1562'>
<a name='1563'>
<font color=#447700>! CCCCCCCCCCCCCCCCCCCCCCCC END OPTION 1 CCCCCCCCCCCCCCCCCCCCCCCCCCC<a name='1564'></font>
<a name='1565'>
       ENDIF<a name='1566'>
<a name='1567'>
       IF (KCOUNT .EQ. 0) THEN<a name='1568'>
<font color=#447700>!         Print*,'Flerchinger used in NEW version. Iterations=',NLOG<a name='1569'></font>
<a name='1570'>
<font color=#447700>! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC<a name='1571'></font>
<font color=#447700>! CCCCC OPTION 2: EXPLICIT SOLUTION FOR FLERCHINGER EQ. i.e. CK=0 CCCCCCCC<a name='1572'></font>
<font color=#447700>! CCCCCCCCCCCCC IN KOREN ET AL., JGR, 1999, EQN 17  CCCCCCCCCCCCCCC<a name='1573'></font>
<a name='1574'>
        FK=(((HLICE/(GS*(-PSIS)))*((TKELV-T0)/TKELV))**(-1/BX))*SMCMAX<a name='1575'>
<font color=#447700>! APPLY PHYSICAL BOUNDS TO FLERCHINGER SOLUTION<a name='1576'></font>
        IF (FK .LT. 0.02) FK = 0.02<a name='1577'>
        FRH2O_init = MIN ( FK, SMC )<a name='1578'>
<a name='1579'>
<font color=#447700>! CCCCCCCCCCCCCCCCCCCCCCCCC END OPTION 2 CCCCCCCCCCCCCCCCCCCCCCCCCC<a name='1580'></font>
<a name='1581'>
       ENDIF<a name='1582'>
<a name='1583'>
      ENDIF<a name='1584'>
<a name='1585'>
        RETURN<a name='1586'>
<a name='1587'>
      END FUNCTION FRH2O_init<a name='1588'>
<a name='1589'>
<a name='1590'>
<font color=#447700>!--------------------------------------------------------------------<a name='1591'></font>
<a name='1592'>
<A NAME='CONST_MODULE_INITIALIZE'><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#CONST_MODULE_INITIALIZE' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A><a name='1593'>
   <font color=#993300>SUBROUTINE </font><font color=#cc0000>const_module_initialize</font> ( p00 , t00 , a )  <A href='../../call_to/CONST_MODULE_INITIALIZE.html' TARGET='index'>2</A>,<A href='../../call_from/CONST_MODULE_INITIALIZE.html' TARGET='index'>1</A><a name='1594'>
      IMPLICIT NONE<a name='1595'>
      REAL , PARAMETER :: sea_level_pressure_base    = 100000.<a name='1596'>
      REAL , PARAMETER :: sea_level_temperature_base =    290.<a name='1597'>
      REAL , PARAMETER :: temp_diff_1000_to_300_mb   =     50.<a name='1598'>
      REAL , INTENT(OUT) :: p00 , t00 , a<a name='1599'>
      p00 = sea_level_pressure_base<a name='1600'>
      t00 = sea_level_temperature_base<a name='1601'>
      a   = temp_diff_1000_to_300_mb<a name='1602'>
   END SUBROUTINE const_module_initialize<a name='1603'>
<a name='1604'>
<font color=#447700>!---------------------------------------------------------------------<a name='1605'></font>
<a name='1606'>
<A NAME='INIT_MODULE_INITIALIZE'><A href='../../html_code/dyn_nmm/module_initialize_real.F.html#INIT_MODULE_INITIALIZE' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A><a name='1607'>
   <font color=#993300>SUBROUTINE </font><font color=#cc0000>init_module_initialize</font>,<A href='../../call_from/INIT_MODULE_INITIALIZE.html' TARGET='index'>8</A><a name='1608'>
   END SUBROUTINE init_module_initialize<a name='1609'>
<a name='1610'>
<font color=#447700>!---------------------------------------------------------------------<a name='1611'></font>
<a name='1612'>
END MODULE module_initialize<a name='1613'>
</pre></body></html>