<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 &<a name='57'> .or. dyn_opt .eq. 2 &<a name='58'> .or. dyn_opt .eq. 3 &<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, &<a name='65'> <font color=#447700>!<a name='66'></font> #include <<A href='../../html_code/include/nmm_actual_args.inc.html'>nmm_actual_args.inc</A>><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, & <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 <<A href='../../html_code/include/nmm_dummy_args.inc.html'>nmm_dummy_args.inc</A>><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 <<A href='../../html_code/include/nmm_dummy_decl.inc.html'>nmm_dummy_decl.inc</A>><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 :: &<a name='103'> ids, ide, jds, jde, kds, kde, &<a name='104'> ims, ime, jms, jme, kms, kme, &<a name='105'> its, ite, jts, jte, kts, kte, &<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, &<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, &<a name='132'> FCPJ,FDIVJ,EMJ,EMTJ,FADJ, &<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 <<A href='../../html_code/include/nmm_scalar_derefs.inc.html'>nmm_scalar_derefs.inc</A>><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 <<A href='../../html_code/include/nmm_data_calls.inc.html'>nmm_data_calls.inc</A>><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),&<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, &<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. &<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) &<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)+ &<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. &<a name='413'> (SICE(I+IHW(J),J+1).eq.0 .and. SM(I+IHW(J),J+1).eq.0) .OR. &<a name='414'> (SICE(I+IHE(J),J-1).eq.0 .and. SM(I+IHE(J),J-1).eq.0) .OR. &<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. &<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. &<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 , &<a name='516'></font> <font color=#447700>! nmm_tsk , ht , toposoil , landmask, flag_toposoil , &<a name='517'></font> <font color=#447700>! st000010 , st010040 , st040100 , st100200 , st010200 , &<a name='518'></font> <font color=#447700>! flag_st000010 , flag_st010040 , flag_st040100 , &<a name='519'></font> <font color=#447700>! flag_st100200 , flag_st010200 , &<a name='520'></font> <font color=#447700>! soilt000 , soilt005 , soilt020 , soilt040 , &<a name='521'></font> <font color=#447700>! soilt160 , soilt300 , &<a name='522'></font> <font color=#447700>! flag_soilt000 , flag_soilt005 , flag_soilt020 , &<a name='523'></font> <font color=#447700>! flag_soilt040 , flag_soilt160 , flag_soilt300 , &<a name='524'></font> <font color=#447700>! ids , ide , jds , jde , kds , kde , &<a name='525'></font> <font color=#447700>! ims , ime , jms , jme , kms , kme , &<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 , &<a name='547'> landusef , soilctop , soilcbot , &<a name='548'> isltyp , ivgtyp , &<a name='549'> num_veg_cat , num_soil_top_cat , num_soil_bot_cat , &<a name='550'> ids , ide , jds , jde , kds , kde , &<a name='551'> ims , ime , jms , jme , kms , kme , &<a name='552'> its , ite , jts , jte , kts , kte , &<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 > 0.5: ', &<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 < 0.5: ', &<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. &<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. &<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 , &<a name='777'> landmask, sst, &<a name='778'> st_input, sm_input, sw_input, &<a name='779'> st_levels_input , sm_levels_input , &<a name='780'> sw_levels_input , &<a name='781'> sldpth , dzsoil , stc , smc , sh2o, &<a name='782'> flag_sst , flag_soilt000, flag_soilm000, &<a name='783'> ids , ide , jds , jde , kds , kde , &<a name='784'> ims , ime , jms , jme , kms , kme , &<a name='785'> its , ite , jts , jte , kts , kte , &<a name='786'> model_config_rec%sf_surface_physics(grid%id) , &<a name='787'> model_config_rec%num_soil_layers , &<a name='788'> model_config_rec%real_data_init_type , &<a name='789'> num_st_levels_input , num_sm_levels_input , &<a name='790'> num_sw_levels_input , &<a name='791'> num_st_levels_alloc , num_sm_levels_alloc , &<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: ',& <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. &<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. &<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. &<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 * &<a name='974'> ((ERAD*DLM*AMIN1(COS(ANBI),COS(SBI)))**2+DY_NMM**2)/ &<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, &<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))* &<a name='1246'> & (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, &<a name='1269'> & 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 <<A href='../../html_code/include/nmm_scalar_derefs.inc.html'>nmm_scalar_derefs.inc</A>><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,& <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, &<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), &<a name='1291'> SMC(IMS:IME,NSOIL,JMS:JME)<a name='1292'> REAL :: SH2O(IMS:IME,NSOIL,JMS:JME),SICE(IMS:IME,JMS:JME),&<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, &<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, &<a name='1309'> 0.135, 0.617, 0.263, 0.098, 0.324, 0.468, &<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, &<a name='1313'> 6.66, 8.72, 8.17, 10.73, 10.39, 11.55, &<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, &<a name='1317'> 0.404, 0.464, 0.465, 0.406, 0.468, 0.468, &<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 <= SMC for T < 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),&<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)))))* &<a name='1372'> ((STC(I,K,J)-T0)/STC(I,K,J)))** &<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), &<a name='1382'> SMCMAX(ISLTPK(I,J)),BETA(ISLTPK(I,J)), &<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 > 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 < 5.5 (use parameter BLIM) ####<a name='1499'></font> <font color=#447700>! ### SIMULATIONS SHOWED IF B > 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. ) * &<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>