<HTML> <BODY BGCOLOR=#bbeeee LINK=#0000aa VLINK=#0000ff ALINK=#ff0000 ><BASE TARGET="bottom_target"><PRE><a name='1'>
<A NAME='MODULE_SI_IO_NMM'><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#MODULE_SI_IO_NMM' TARGET='top_target'><IMG SRC="../../gif/bar_purple.gif" border=0></A><a name='2'>
<font color=#993300>MODULE </font><font color=#cc0000>module_si_io_nmm</font><a name='3'>
<a name='4'>
<font color=#447700>! Input 3D meteorological fields.<a name='5'></font>
<a name='6'>
REAL , DIMENSION(:,:,:) , ALLOCATABLE :: u_input , v_input , &<a name='7'>
q_input , t_input<a name='8'>
<a name='9'>
<font color=#447700>! Input 3D LSM fields.<a name='10'></font>
<a name='11'>
REAL , DIMENSION(:,:,:) , ALLOCATABLE :: landuse_frac_input , &<a name='12'>
soil_top_cat_input , &<a name='13'>
soil_bot_cat_input<a name='14'>
<a name='15'>
REAL, ALLOCATABLE:: htm_in(:,:,:),vtm_in(:,:,:)<a name='16'>
<a name='17'>
<font color=#447700>! Input 2D surface fields.<a name='18'></font>
<a name='19'>
REAL , DIMENSION(:,:) , ALLOCATABLE :: tg_input , res_input , &<a name='20'>
t_annual_avg_input , pd_input , &<a name='21'>
st000010_input , st010040_input , &<a name='22'>
st040100_input , st100200_input , &<a name='23'>
sm000010_input , sm010040_input , &<a name='24'>
sm040100_input , sm100200_input , &<a name='25'>
st010200_input , &<a name='26'>
sm010200_input , &<a name='27'>
soilt010_input , soilt040_input , &<a name='28'>
soilt100_input , soilt200_input , &<a name='29'>
soilm010_input , soilm040_input , &<a name='30'>
soilm100_input , soilm200_input , &<a name='31'>
seaice_input , snow_input , &<a name='32'>
canwat_input , &<a name='33'>
landuse_input , landmask_input , &<a name='34'>
skintemp_input , sst_input , &<a name='35'>
green_frac_input , green_frac_min, &<a name='36'>
green_frac_max, ter_input , &<a name='37'>
toposoil_input, albase_input, &<a name='38'>
mxsnal_input, psfc_in,pmsl,cmc_in,sm_in, &<a name='39'>
islope_input<a name='40'>
<a name='41'>
INTEGER , DIMENSION(:,:), ALLOCATABLE :: isltyp_input , ivgtyp_input<a name='42'>
<a name='43'>
<font color=#447700>! Input 2D map information.<a name='44'></font>
<a name='45'>
REAL , DIMENSION(:,:) , ALLOCATABLE :: lat_mass, lon_mass, &<a name='46'>
lat_wind, lon_wind <a name='47'>
<a name='48'>
REAL , DIMENSION(:) , ALLOCATABLE :: DETA_in, AETA_in, ETAX_in<a name='49'>
REAL , DIMENSION(:) , ALLOCATABLE :: DETA1_in, AETA1_in, ETA1_in<a name='50'>
REAL , DIMENSION(:) , ALLOCATABLE :: DETA2_in, AETA2_in, ETA2_in, dfl_input<a name='51'>
<a name='52'>
LOGICAL , SAVE :: first_time_in = .TRUE.<a name='53'>
<a name='54'>
INTEGER :: flag_st000010 , flag_st010040 , flag_st040100 , flag_st100200 , &<a name='55'>
flag_sm000010 , flag_sm010040 , flag_sm040100 , flag_sm100200 , &<a name='56'>
flag_st010200 , &<a name='57'>
flag_sm010200<a name='58'>
INTEGER :: flag_soilt010 , flag_soilt040 , flag_soilt100 , flag_soilt200 , &<a name='59'>
flag_soilm010 , flag_soilm040 , flag_soilm100 , flag_soilm200<a name='60'>
<a name='61'>
INTEGER :: flag_sst , flag_toposoil<a name='62'>
<a name='63'>
INTEGER :: num_st_levels_input , num_sm_levels_input<a name='64'>
INTEGER , DIMENSION(100) :: st_levels_input , sm_levels_input<a name='65'>
REAL , ALLOCATABLE , DIMENSION(:,:,:) :: st_input , sm_input<a name='66'>
<a name='67'>
REAL :: pdtop_in, TLM0D, TPH0D<a name='68'>
<a name='69'>
<font color=#447700>! Some constants to allow simple dimensions in the defined types<a name='70'></font>
<font color=#447700>! given below.<a name='71'></font>
<a name='72'>
INTEGER, PARAMETER :: max_domains = 10<a name='73'>
INTEGER, PARAMETER :: var_maxdims = 5<a name='74'>
INTEGER, PARAMETER :: max_staggers_xy_new = 4<a name='75'>
INTEGER, PARAMETER :: max_staggers_xy_old = 3<a name='76'>
INTEGER, PARAMETER :: max_staggers_z = 2<a name='77'>
INTEGER, PARAMETER :: max_standard_lats = 4<a name='78'>
INTEGER, PARAMETER :: max_standard_lons = 4 <a name='79'>
INTEGER, PARAMETER :: max_fg_variables = 200<a name='80'>
INTEGER, PARAMETER :: max_vertical_levels = 2000<a name='81'>
<a name='82'>
<font color=#447700>! This module defines the items needed for the WRF metadata<a name='83'></font>
<font color=#447700>! which is broken up into three levels: <a name='84'></font>
<font color=#447700>! Global metadata: Those things which apply to the<a name='85'></font>
<font color=#447700>! entire simulation that are <a name='86'></font>
<font color=#447700>! independent of time, domain, or<a name='87'></font>
<font color=#447700>! variable<a name='88'></font>
<font color=#447700>!<a name='89'></font>
<font color=#447700>! Domain metadata: Those things which apply to <a name='90'></font>
<font color=#447700>! a single domain (this may<a name='91'></font>
<font color=#447700>! or may not be time dependent)<a name='92'></font>
<font color=#447700>!<a name='93'></font>
<font color=#447700>! Variable metadata: Those things which apply to <a name='94'></font>
<font color=#447700>! a specific variable at a <a name='95'></font>
<font color=#447700>! specific time<a name='96'></font>
<font color=#447700>!<a name='97'></font>
<font color=#447700>! The variable names and definitions can be <a name='98'></font>
<font color=#447700>! found in the wrf_metadata spec, which is still<a name='99'></font>
<font color=#447700>! a living document as coding goes on. The names<a name='100'></font>
<font color=#447700>! may not match exactly, but you should be able <a name='101'></font>
<font color=#447700>! to figure things out. <a name='102'></font>
<font color=#447700>!<a name='103'></font>
<a name='104'>
TYPE wrf_var_metadata<a name='105'>
CHARACTER (LEN=8) :: name <a name='106'>
CHARACTER (LEN=16) :: units<a name='107'>
CHARACTER (LEN=80) :: description<a name='108'>
INTEGER :: domain_id<a name='109'>
INTEGER :: ndim<a name='110'>
INTEGER :: dim_val (var_maxdims)<a name='111'>
CHARACTER(LEN=4) :: dim_desc (var_maxdims)<a name='112'>
INTEGER :: start_index(var_maxdims)<a name='113'>
INTEGER :: stop_index(var_maxdims)<a name='114'>
INTEGER :: h_stagger_index<a name='115'>
INTEGER :: v_stagger_index<a name='116'>
CHARACTER(LEN=8) :: array_order<a name='117'>
CHARACTER(LEN=4) :: field_type<a name='118'>
CHARACTER(LEN=8) :: field_source_prog<a name='119'>
CHARACTER(LEN=80) :: source_desc<a name='120'>
CHARACTER(LEN=8) :: field_time_type<a name='121'>
INTEGER :: vt_date_start<a name='122'>
REAL :: vt_time_start<a name='123'>
INTEGER :: vt_date_stop<a name='124'>
REAL :: vt_time_stop<a name='125'>
END TYPE wrf_var_metadata<a name='126'>
<a name='127'>
TYPE(wrf_var_metadata) :: var_meta , var_info<a name='128'>
<a name='129'>
TYPE wrf_domain_metadata<a name='130'>
INTEGER :: id<a name='131'>
INTEGER :: parent_id<a name='132'>
CHARACTER(LEN=8) :: dyn_init_src<a name='133'>
CHARACTER(LEN=8) :: static_init_src <a name='134'>
INTEGER :: vt_date<a name='135'>
REAL :: vt_time<a name='136'>
INTEGER :: origin_parent_x<a name='137'>
INTEGER :: origin_parent_y<a name='138'>
INTEGER :: ratio_to_parent<a name='139'>
REAL :: delta_x<a name='140'>
REAL :: delta_y<a name='141'>
REAL :: top_level<a name='142'>
INTEGER :: origin_parent_z<a name='143'>
REAL :: corner_lats_new(4,max_staggers_xy_new)<a name='144'>
REAL :: corner_lons_new(4,max_staggers_xy_new)<a name='145'>
REAL :: corner_lats_old(4,max_staggers_xy_old)<a name='146'>
REAL :: corner_lons_old(4,max_staggers_xy_old)<a name='147'>
INTEGER :: xdim<a name='148'>
INTEGER :: ydim<a name='149'>
INTEGER :: zdim<a name='150'>
END TYPE wrf_domain_metadata<a name='151'>
TYPE(wrf_domain_metadata) :: dom_meta<a name='152'>
<a name='153'>
TYPE wrf_global_metadata<a name='154'>
CHARACTER(LEN=80) :: simulation_name<a name='155'>
CHARACTER(LEN=80) :: user_desc<a name='156'>
INTEGER :: si_version<a name='157'>
INTEGER :: analysis_version <a name='158'>
INTEGER :: wrf_version<a name='159'>
INTEGER :: post_version<a name='160'>
CHARACTER(LEN=32) :: map_projection<a name='161'>
REAL :: moad_known_lat<a name='162'>
REAL :: moad_known_lon<a name='163'>
CHARACTER(LEN=8) :: moad_known_loc<a name='164'>
REAL :: moad_stand_lats(max_standard_lats)<a name='165'>
REAL :: moad_stand_lons(max_standard_lons)<a name='166'>
REAL :: moad_delta_x<a name='167'>
REAL :: moad_delta_y<a name='168'>
CHARACTER(LEN=4) :: horiz_stagger_type<a name='169'>
INTEGER :: num_stagger_xy<a name='170'>
REAL :: stagger_dir_x_new(max_staggers_xy_new)<a name='171'>
REAL :: stagger_dir_y_new(max_staggers_xy_new)<a name='172'>
REAL :: stagger_dir_x_old(max_staggers_xy_old)<a name='173'>
REAL :: stagger_dir_y_old(max_staggers_xy_old)<a name='174'>
INTEGER :: num_stagger_z <a name='175'>
REAL :: stagger_dir_z(max_staggers_z)<a name='176'>
CHARACTER(LEN=8) :: vertical_coord<a name='177'>
INTEGER :: num_domains<a name='178'>
INTEGER :: init_date<a name='179'>
REAL :: init_time<a name='180'>
INTEGER :: end_date<a name='181'>
REAL :: end_time<a name='182'>
CHARACTER(LEN=4) :: lu_source<a name='183'>
INTEGER :: lu_water<a name='184'>
INTEGER :: lu_ice <a name='185'>
END TYPE wrf_global_metadata<a name='186'>
TYPE(wrf_global_metadata) :: global_meta<a name='187'>
<a name='188'>
CONTAINS<a name='189'>
<a name='190'>
<A NAME='READ_SI'><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A><a name='191'>
<font color=#993300>SUBROUTINE </font><font color=#cc0000>read_si</font> ( grid , dx , pt , file_date_string &,<A href='../../call_from/READ_SI.html' TARGET='index'>22</A><a name='192'>
,numx_sm_levels_input &<a name='193'>
,numx_st_levels_input &<a name='194'>
,smx_levels_input &<a name='195'>
,stx_levels_input &<a name='196'>
,ids,ide,jds,jde,kds,kde &<a name='197'>
,ims,ime,jms,jme,kms,kme &<a name='198'>
,its,ite,jts,jte,kts,kte)<a name='199'>
<a name='200'>
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_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="MODULE_SOIL_PRE_3"><a name='201'>
USE <A href='../../html_code/frame/module_domain.F.html#MODULE_DOMAIN'>module_domain</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="MODULE_DOMAIN_21"><a name='202'>
<a name='203'>
IMPLICIT NONE<a name='204'>
<a name='205'>
TYPE(domain) , INTENT(INOUT) :: grid<a name='206'>
INTEGER , INTENT(IN) :: ids,ide,jds,jde,kds,kde &<a name='207'>
,ims,ime,jms,jme,kms,kme &<a name='208'>
,its,ite,jts,jte,kts,kte<a name='209'>
REAL , INTENT(IN) :: dx<a name='210'>
REAL , INTENT(OUT) :: pt<a name='211'>
CHARACTER (LEN=19) , INTENT(IN) :: file_date_string<a name='212'>
<a name='213'>
REAL,DIMENSION(IDS:IDE-1,JDS:JDE-1) :: dum2d<a name='214'>
REAL,DIMENSION(IDS:IDE-1,JDS:JDE-1,KDS:KDE-1) :: dum3d<a name='215'>
<a name='216'>
INTEGER :: i , j , k , loop<a name='217'>
<a name='218'>
REAL :: dummy<a name='219'>
<a name='220'>
CHARACTER (LEN= 8) :: dummy_char<a name='221'>
<a name='222'>
INTEGER :: ok , map_proj , ok_open<a name='223'>
integer,intent(out) :: numx_sm_levels_input,numx_st_levels_input<a name='224'>
real,dimension(100),intent(out) :: smx_levels_input,stx_levels_input<a name='225'>
<a name='226'>
write(0,*)' enter read_si'<a name='227'>
<font color=#447700>! Initialize what soil temperature and moisture is available.<a name='228'></font>
<a name='229'>
flag_st000010 = 0<a name='230'>
flag_st010040 = 0<a name='231'>
flag_st040100 = 0<a name='232'>
flag_st100200 = 0<a name='233'>
flag_sm000010 = 0 <a name='234'>
flag_sm010040 = 0<a name='235'>
flag_sm040100 = 0<a name='236'>
flag_sm100200 = 0<a name='237'>
flag_st010200 = 0<a name='238'>
flag_sm010200 = 0<a name='239'>
<a name='240'>
flag_soilt010 = 0<a name='241'>
flag_soilt040 = 0<a name='242'>
flag_soilt100 = 0<a name='243'>
flag_soilt200 = 0 <a name='244'>
flag_soilm010 = 0 <a name='245'>
flag_soilm040 = 0<a name='246'>
flag_soilm100 = 0<a name='247'>
flag_soilm200 = 0<a name='248'>
<a name='249'>
flag_sst = 0<a name='250'>
flag_toposoil = 0<a name='251'>
<a name='252'>
<font color=#447700>! How many soil levels have we found? Well, right now, none.<a name='253'></font>
<a name='254'>
num_st_levels_input = 0<a name='255'>
num_sm_levels_input = 0<a name='256'>
st_levels_input = -1<a name='257'>
sm_levels_input = -1<a name='258'>
<a name='259'>
<font color=#447700>! Get the space for the data if this is the first time here.<a name='260'></font>
<a name='261'>
write(6,*) 'enter read_si...first_time_in:: ', first_time_in<a name='262'>
<a name='263'>
IF ( first_time_in ) THEN<a name='264'>
<a name='265'>
CLOSE(12)<a name='266'>
OPEN ( FILE = 'real_input_nm.global.metadata' , &<a name='267'>
UNIT = 12 , &<a name='268'>
STATUS = 'OLD' , &<a name='269'>
ACCESS = 'SEQUENTIAL' , &<a name='270'>
FORM = 'UNFORMATTED' , &<a name='271'>
IOSTAT = ok_open )<a name='272'>
<a name='273'>
IF ( ok_open .NE. 0 ) THEN<a name='274'>
PRINT '(A)','You asked for WRF SI data, but no real_input_nm.global.metadata file exists.'<a name='275'>
STOP 'No_real_input_nm.global.metadata_exists'<a name='276'>
END IF<a name='277'>
<a name='278'>
READ(12) global_meta%simulation_name, global_meta%user_desc, &<a name='279'>
global_meta%si_version, global_meta%analysis_version, &<a name='280'>
global_meta%wrf_version, global_meta%post_version<a name='281'>
<a name='282'>
REWIND (12)<a name='283'>
<a name='284'>
IF ( global_meta%si_version .EQ. 1 ) THEN<a name='285'>
READ(12) global_meta%simulation_name, global_meta%user_desc, &<a name='286'>
global_meta%si_version, global_meta%analysis_version, &<a name='287'>
global_meta%wrf_version, global_meta%post_version, &<a name='288'>
global_meta%map_projection, global_meta%moad_known_lat, &<a name='289'>
global_meta%moad_known_lon, global_meta%moad_known_loc, &<a name='290'>
global_meta%moad_stand_lats, global_meta%moad_stand_lons, &<a name='291'>
global_meta%moad_delta_x, global_meta%moad_delta_y, &<a name='292'>
global_meta%horiz_stagger_type, global_meta%num_stagger_xy, &<a name='293'>
global_meta%stagger_dir_x_old, global_meta%stagger_dir_y_old, &<a name='294'>
global_meta%num_stagger_z, global_meta%stagger_dir_z, &<a name='295'>
global_meta%vertical_coord, global_meta%num_domains, &<a name='296'>
global_meta%init_date, global_meta%init_time, &<a name='297'>
global_meta%end_date, global_meta%end_time<a name='298'>
ELSE IF ( global_meta%si_version .EQ. 2 ) THEN<a name='299'>
READ(12) global_meta%simulation_name, global_meta%user_desc, &<a name='300'>
global_meta%si_version, global_meta%analysis_version, &<a name='301'>
global_meta%wrf_version, global_meta%post_version, &<a name='302'>
global_meta%map_projection, global_meta%moad_known_lat, &<a name='303'>
global_meta%moad_known_lon, global_meta%moad_known_loc, &<a name='304'>
global_meta%moad_stand_lats, global_meta%moad_stand_lons, &<a name='305'>
global_meta%moad_delta_x, global_meta%moad_delta_y, &<a name='306'>
global_meta%horiz_stagger_type, global_meta%num_stagger_xy, &<a name='307'>
global_meta%stagger_dir_x_new, global_meta%stagger_dir_y_new, &<a name='308'>
global_meta%num_stagger_z, global_meta%stagger_dir_z, &<a name='309'>
global_meta%vertical_coord, global_meta%num_domains, &<a name='310'>
global_meta%init_date, global_meta%init_time, &<a name='311'>
global_meta%end_date, global_meta%end_time , &<a name='312'>
global_meta%lu_source, global_meta%lu_water, global_meta%lu_ice<a name='313'>
END IF<a name='314'>
CLOSE (12)<a name='315'>
<a name='316'>
print *,'GLOBAL METADATA'<a name='317'>
print *,'global_meta%simulation_name', global_meta%simulation_name<a name='318'>
print *,'global_meta%user_desc', global_meta%user_desc<a name='319'>
print *,'global_meta%user_desc', global_meta%user_desc<a name='320'>
print *,'global_meta%si_version', global_meta%si_version<a name='321'>
print *,'global_meta%analysis_version', global_meta%analysis_version<a name='322'>
print *,'global_meta%wrf_version', global_meta%wrf_version<a name='323'>
print *,'global_meta%post_version', global_meta%post_version<a name='324'>
print *,'global_meta%map_projection', global_meta%map_projection<a name='325'>
print *,'global_meta%moad_known_lat', global_meta%moad_known_lat<a name='326'>
print *,'global_meta%moad_known_lon', global_meta%moad_known_lon<a name='327'>
print *,'global_meta%moad_known_loc', global_meta%moad_known_loc<a name='328'>
print *,'global_meta%moad_stand_lats', global_meta%moad_stand_lats<a name='329'>
print *,'global_meta%moad_stand_lons', global_meta%moad_stand_lons<a name='330'>
print *,'global_meta%moad_delta_x', global_meta%moad_delta_x<a name='331'>
print *,'global_meta%moad_delta_y', global_meta%moad_delta_y<a name='332'>
print *,'global_meta%horiz_stagger_type', global_meta%horiz_stagger_type<a name='333'>
print *,'global_meta%num_stagger_xy', global_meta%num_stagger_xy<a name='334'>
IF ( global_meta%si_version .EQ. 1 ) THEN<a name='335'>
print *,'global_meta%stagger_dir_x', global_meta%stagger_dir_x_old<a name='336'>
print *,'global_meta%stagger_dir_y', global_meta%stagger_dir_y_old<a name='337'>
ELSE IF ( global_meta%si_version .EQ. 2 ) THEN<a name='338'>
print *,'global_meta%stagger_dir_x', global_meta%stagger_dir_x_new<a name='339'>
print *,'global_meta%stagger_dir_y', global_meta%stagger_dir_y_new<a name='340'>
END IF<a name='341'>
print *,'global_meta%num_stagger_z', global_meta%num_stagger_z<a name='342'>
print *,'global_meta%stagger_dir_z', global_meta%stagger_dir_z<a name='343'>
print *,'global_meta%vertical_coord', global_meta%vertical_coord<a name='344'>
print *,'global_meta%num_domains', global_meta%num_domains<a name='345'>
print *,'global_meta%init_date', global_meta%init_date<a name='346'>
print *,'global_meta%init_time', global_meta%init_time<a name='347'>
print *,'global_meta%end_date', global_meta%end_date<a name='348'>
print *,'global_meta%end_time', global_meta%end_time<a name='349'>
IF ( global_meta%si_version .EQ. 2 ) THEN<a name='350'>
print *,'global_meta%lu_source', global_meta%lu_source<a name='351'>
print *,'global_meta%lu_water', global_meta%lu_water<a name='352'>
print *,'global_meta%lu_ice', global_meta%lu_ice<a name='353'>
END IF<a name='354'>
print *,' '<a name='355'>
<a name='356'>
<a name='357'>
<font color=#447700>!!!!!<a name='358'></font>
TLM0D=global_meta%moad_known_lon<a name='359'>
TPH0D=global_meta%moad_known_lat<a name='360'>
<a name='361'>
write(6,*) 'defined tlm0d, tph0d:: ', tlm0d, tph0d<a name='362'>
<font color=#447700>!!!!!<a name='363'></font>
<a name='364'>
<a name='365'>
<a name='366'>
<font color=#447700>!<a name='367'></font>
<font color=#447700>! STOP<a name='368'></font>
<font color=#447700>!<a name='369'></font>
<a name='370'>
<font color=#447700>! 1D - this is the definition of the vertical coordinate.<a name='371'></font>
<a name='372'>
IF ( .NOT. ALLOCATED (DETA_in)) ALLOCATE(DETA_in(kds:kde-1))<a name='373'>
IF ( .NOT. ALLOCATED (AETA_in)) ALLOCATE(AETA_in(kds:kde-1))<a name='374'>
IF ( .NOT. ALLOCATED (ETAX_in)) ALLOCATE(ETAX_in(kds:kde))<a name='375'>
<a name='376'>
IF ( .NOT. ALLOCATED (DETA1_in)) ALLOCATE(DETA1_in(kds:kde-1))<a name='377'>
IF ( .NOT. ALLOCATED (AETA1_in)) ALLOCATE(AETA1_in(kds:kde-1))<a name='378'>
IF ( .NOT. ALLOCATED (ETA1_in)) ALLOCATE(ETA1_in(kds:kde))<a name='379'>
<a name='380'>
IF ( .NOT. ALLOCATED (DETA2_in)) ALLOCATE(DETA2_in(kds:kde-1))<a name='381'>
IF ( .NOT. ALLOCATED (AETA2_in)) ALLOCATE(AETA2_in(kds:kde-1))<a name='382'>
IF ( .NOT. ALLOCATED (ETA2_in)) ALLOCATE(ETA2_in(kds:kde))<a name='383'>
<a name='384'>
IF ( .NOT. ALLOCATED (dfl_input)) ALLOCATE(dfl_input(kds:kde))<a name='385'>
<a name='386'>
<a name='387'>
write(6,*) 'ix,jx,kx: ', ide-1,jde-1,kde-1<a name='388'>
<a name='389'>
<font color=#447700>! call wrf_error_fatal ("just want to quit here") <a name='390'></font>
<a name='391'>
<font color=#447700>! 3D met<a name='392'></font>
<a name='393'>
IF ( .NOT. ALLOCATED ( u_input) ) ALLOCATE ( u_input(its:ite,jts:jte,kts:kte) )<a name='394'>
IF ( .NOT. ALLOCATED ( v_input) ) ALLOCATE ( v_input(its:ite,jts:jte,kts:kte) )<a name='395'>
IF ( .NOT. ALLOCATED ( q_input) ) ALLOCATE ( q_input(its:ite,jts:jte,kts:kte) )<a name='396'>
IF ( .NOT. ALLOCATED ( t_input) ) ALLOCATE ( t_input(its:ite,jts:jte,kts:kte) )<a name='397'>
write(6,*) 'allocating all 3d inputs with ite,jte,kte:: ', ite,jte,kte<a name='398'>
IF ( .NOT. ALLOCATED ( htm_in) ) ALLOCATE ( htm_in(its:ite,jts:jte,kts:kte) )<a name='399'>
IF ( .NOT. ALLOCATED ( vtm_in) ) ALLOCATE ( vtm_in(its:ite,jts:jte,kts:kte) )<a name='400'>
<a name='401'>
<font color=#447700>! 2D pressure fields<a name='402'></font>
<a name='403'>
IF ( .NOT. ALLOCATED ( pd_input) ) ALLOCATE ( pd_input(its:ite,jts:jte) )<a name='404'>
IF ( .NOT. ALLOCATED ( pmsl) ) ALLOCATE ( pmsl(its:ite,jts:jte) )<a name='405'>
IF ( .NOT. ALLOCATED ( psfc_in) ) ALLOCATE ( psfc_in(its:ite,jts:jte) )<a name='406'>
<a name='407'>
<font color=#447700>! 2D - skin temperature and some sort of soil temp, usually 0-10 cm<a name='408'></font>
<a name='409'>
<font color=#447700>! IF ( .NOT. ALLOCATED ( tg_input) ) ALLOCATE ( tg_input(its:ite,jts:jte) )<a name='410'></font>
<font color=#447700>! IF ( .NOT. ALLOCATED ( res_input) ) ALLOCATE ( res_input(its:ite,jts:jte) )<a name='411'></font>
<a name='412'>
<font color=#447700>! 2D - for LSM, these are computed from the categorical precentage values.<a name='413'></font>
<a name='414'>
<font color=#447700>! IF ( .NOT. ALLOCATED ( isltyp_input) ) ALLOCATE ( isltyp_input(its:ite,jts:jte) )<a name='415'></font>
<font color=#447700>! IF ( .NOT. ALLOCATED ( ivgtyp_input) ) ALLOCATE ( ivgtyp_input(its:ite,jts:jte) )<a name='416'></font>
IF ( .NOT. ALLOCATED ( islope_input) ) ALLOCATE ( islope_input(its:ite,jts:jte) )<a name='417'>
<a name='418'>
<font color=#447700>! 2D - for LSM, this is a new field from the SI<a name='419'></font>
<a name='420'>
<font color=#447700>! IF ( .NOT. ALLOCATED ( t_annual_avg_input) ) ALLOCATE ( t_annual_avg_input(its:ite,jts:jte) )<a name='421'></font>
<a name='422'>
<font color=#447700>! 2D - for LSM, the various soil temperature and moisture levels that are available.<a name='423'></font>
<a name='424'>
IF ( .NOT. ALLOCATED ( st000010_input) ) ALLOCATE ( st000010_input(its:ite,jts:jte) )<a name='425'>
IF ( .NOT. ALLOCATED ( st010040_input) ) ALLOCATE ( st010040_input(its:ite,jts:jte) )<a name='426'>
IF ( .NOT. ALLOCATED ( st040100_input) ) ALLOCATE ( st040100_input(its:ite,jts:jte) )<a name='427'>
IF ( .NOT. ALLOCATED ( st100200_input) ) ALLOCATE ( st100200_input(its:ite,jts:jte) )<a name='428'>
IF ( .NOT. ALLOCATED ( st010200_input) ) ALLOCATE ( st010200_input(its:ite,jts:jte) )<a name='429'>
IF ( .NOT. ALLOCATED ( st_input ) ) ALLOCATE ( st_input (its:ite,jts:jte,10) )<a name='430'>
IF ( .NOT. ALLOCATED ( sm000010_input) ) ALLOCATE ( sm000010_input(its:ite,jts:jte) )<a name='431'>
IF ( .NOT. ALLOCATED ( sm010040_input) ) ALLOCATE ( sm010040_input(its:ite,jts:jte) )<a name='432'>
IF ( .NOT. ALLOCATED ( sm040100_input) ) ALLOCATE ( sm040100_input(its:ite,jts:jte) )<a name='433'>
IF ( .NOT. ALLOCATED ( sm100200_input) ) ALLOCATE ( sm100200_input(its:ite,jts:jte) )<a name='434'>
IF ( .NOT. ALLOCATED ( sm010200_input) ) ALLOCATE ( sm010200_input(its:ite,jts:jte) )<a name='435'>
IF ( .NOT. ALLOCATED ( sm_input ) ) ALLOCATE ( sm_input (its:ite,jts:jte,10) )<a name='436'>
<a name='437'>
IF ( .NOT. ALLOCATED ( soilt010_input) ) ALLOCATE ( soilt010_input(its:ite,jts:jte) )<a name='438'>
IF ( .NOT. ALLOCATED ( soilt040_input) ) ALLOCATE ( soilt040_input(its:ite,jts:jte) )<a name='439'>
IF ( .NOT. ALLOCATED ( soilt100_input) ) ALLOCATE ( soilt100_input(its:ite,jts:jte) )<a name='440'>
IF ( .NOT. ALLOCATED ( soilt200_input) ) ALLOCATE ( soilt200_input(its:ite,jts:jte) )<a name='441'>
IF ( .NOT. ALLOCATED ( soilm010_input) ) ALLOCATE ( soilm010_input(its:ite,jts:jte) )<a name='442'>
IF ( .NOT. ALLOCATED ( soilm040_input) ) ALLOCATE ( soilm040_input(its:ite,jts:jte) )<a name='443'>
IF ( .NOT. ALLOCATED ( soilm100_input) ) ALLOCATE ( soilm100_input(its:ite,jts:jte) )<a name='444'>
IF ( .NOT. ALLOCATED ( soilm200_input) ) ALLOCATE ( soilm200_input(its:ite,jts:jte) )<a name='445'>
<a name='446'>
<font color=#447700>! 2D - for LSM, seaice and snow, maybe runoff is later.<a name='447'></font>
<a name='448'>
IF ( .NOT. ALLOCATED ( seaice_input) ) ALLOCATE ( seaice_input(its:ite,jts:jte) )<a name='449'>
IF ( .NOT. ALLOCATED ( snow_input) ) ALLOCATE ( snow_input(its:ite,jts:jte) )<a name='450'>
IF ( .NOT. ALLOCATED ( canwat_input) ) ALLOCATE ( canwat_input(its:ite,jts:jte) )<a name='451'>
<a name='452'>
IF ( .NOT. ALLOCATED ( landuse_input) ) ALLOCATE ( landuse_input(its:ite,jts:jte) )<a name='453'>
IF ( .NOT. ALLOCATED ( landmask_input) ) ALLOCATE ( landmask_input(its:ite,jts:jte) )<a name='454'>
<a name='455'>
IF ( .NOT. ALLOCATED ( skintemp_input) ) ALLOCATE ( skintemp_input(its:ite,jts:jte) )<a name='456'>
IF ( .NOT. ALLOCATED ( sst_input) ) ALLOCATE ( sst_input(its:ite,jts:jte) )<a name='457'>
IF ( .NOT. ALLOCATED ( green_frac_min) ) ALLOCATE ( green_frac_min(its:ite,jts:jte))<a name='458'>
IF ( .NOT. ALLOCATED ( green_frac_input) ) ALLOCATE ( green_frac_input(its:ite,jts:jte))<a name='459'>
IF ( .NOT. ALLOCATED ( green_frac_max) ) ALLOCATE ( green_frac_max(its:ite,jts:jte))<a name='460'>
IF ( .NOT. ALLOCATED ( albase_input) ) ALLOCATE ( albase_input(its:ite,jts:jte))<a name='461'>
IF ( .NOT. ALLOCATED ( mxsnal_input) ) ALLOCATE ( mxsnal_input(its:ite,jts:jte))<a name='462'>
IF ( .NOT. ALLOCATED ( cmc_in ) ) ALLOCATE ( cmc_in (its:ite,jts:jte))<a name='463'>
IF ( .NOT. ALLOCATED ( sm_in ) ) ALLOCATE ( sm_in (its:ite,jts:jte))<a name='464'>
<a name='465'>
<a name='466'>
<font color=#447700>!!!! FIS<a name='467'></font>
IF ( .NOT. ALLOCATED ( ter_input) ) ALLOCATE ( ter_input(its:ite,jts:jte) )<a name='468'>
<a name='469'>
<font color=#447700>! IF ( .NOT. ALLOCATED ( ter_std_input) ) ALLOCATE ( ter_std_input(its:ite,jts:jte) )<a name='470'></font>
<font color=#447700>! IF ( .NOT. ALLOCATED ( ter_slpx_input) ) ALLOCATE ( ter_slpx_input(its:ite,jts:jte) )<a name='471'></font>
<font color=#447700>! IF ( .NOT. ALLOCATED ( ter_slpy_input) ) ALLOCATE ( ter_slpy_input(its:ite,jts:jte) )<a name='472'></font>
<font color=#447700>! IF ( .NOT. ALLOCATED ( toposoil_input) ) ALLOCATE ( toposoil_input(its:ite,jts:jte) )<a name='473'></font>
<a name='474'>
<font color=#447700>! 2D terrestrial fields other than elevation stuff.<a name='475'></font>
<a name='476'>
<font color=#447700>! IF ( .NOT. ALLOCATED ( msft_input) ) ALLOCATE ( msft_input(its:ite,jts:jte) )<a name='477'></font>
<font color=#447700>! IF ( .NOT. ALLOCATED ( msfu_input) ) ALLOCATE ( msfu_input(its:ite,jts:jte) )<a name='478'></font>
<font color=#447700>! IF ( .NOT. ALLOCATED ( msfv_input) ) ALLOCATE ( msfv_input(its:ite,jts:jte) )<a name='479'></font>
<font color=#447700>! IF ( .NOT. ALLOCATED ( sina_input) ) ALLOCATE ( sina_input(its:ite,jts:jte) )<a name='480'></font>
<font color=#447700>! IF ( .NOT. ALLOCATED ( cosa_input) ) ALLOCATE ( cosa_input(its:ite,jts:jte) )<a name='481'></font>
<font color=#447700>! IF ( .NOT. ALLOCATED ( e_input) ) ALLOCATE ( e_input(its:ite,jts:jte) )<a name='482'></font>
<font color=#447700>! IF ( .NOT. ALLOCATED ( f_input) ) ALLOCATE ( f_input(its:ite,jts:jte) )<a name='483'></font>
<font color=#447700>! IF ( .NOT. ALLOCATED ( lat_input) ) ALLOCATE ( lat_input(its:ite,jts:jte) )<a name='484'></font>
<font color=#447700>! IF ( .NOT. ALLOCATED ( lon_input) ) ALLOCATE ( lon_input(its:ite,jts:jte) )<a name='485'></font>
<a name='486'>
IF (.NOT. ALLOCATED (lat_mass)) ALLOCATE (lat_mass(its:ite,jts:jte))<a name='487'>
IF (.NOT. ALLOCATED (lat_wind)) ALLOCATE (lat_wind(its:ite,jts:jte))<a name='488'>
IF (.NOT. ALLOCATED (lon_mass)) ALLOCATE (lon_mass(its:ite,jts:jte))<a name='489'>
IF (.NOT. ALLOCATED (lon_wind)) ALLOCATE (lon_wind(its:ite,jts:jte))<a name='490'>
<a name='491'>
<a name='492'>
END IF<a name='493'>
<a name='494'>
CLOSE(13)<a name='495'>
<a name='496'>
write(6,*) 'file_date_string: ', file_date_string<a name='497'>
write(6,*) 'opening real_input_nm.d01... as unit 13'<a name='498'>
OPEN ( FILE = 'real_input_nm.d01.'//file_date_string , &<a name='499'>
UNIT = 13 , &<a name='500'>
STATUS = 'OLD' , &<a name='501'>
ACCESS = 'SEQUENTIAL' , &<a name='502'>
FORM = 'UNFORMATTED' )<a name='503'>
<a name='504'>
IF ( global_meta%si_version .EQ. 1 ) THEN<a name='505'>
READ (13) dom_meta%id,dom_meta%parent_id,dom_meta%dyn_init_src,&<a name='506'>
dom_meta%static_init_src, dom_meta%vt_date, dom_meta%vt_time, &<a name='507'>
dom_meta%origin_parent_x, dom_meta%origin_parent_y, &<a name='508'>
dom_meta%ratio_to_parent, dom_meta%delta_x, dom_meta%delta_y, &<a name='509'>
dom_meta%top_level, dom_meta%origin_parent_z, &<a name='510'>
dom_meta%corner_lats_old, dom_meta%corner_lons_old, dom_meta%xdim, &<a name='511'>
dom_meta%ydim, dom_meta%zdim<a name='512'>
ELSE IF ( global_meta%si_version .EQ. 2 ) THEN<a name='513'>
READ (13) dom_meta%id,dom_meta%parent_id,dom_meta%dyn_init_src,&<a name='514'>
dom_meta%static_init_src, dom_meta%vt_date, dom_meta%vt_time, &<a name='515'>
dom_meta%origin_parent_x, dom_meta%origin_parent_y, &<a name='516'>
dom_meta%ratio_to_parent, dom_meta%delta_x, dom_meta%delta_y, &<a name='517'>
dom_meta%top_level, dom_meta%origin_parent_z, &<a name='518'>
dom_meta%corner_lats_new, dom_meta%corner_lons_new, dom_meta%xdim, &<a name='519'>
dom_meta%ydim, dom_meta%zdim<a name='520'>
END IF<a name='521'>
<a name='522'>
print *,'DOMAIN METADATA'<a name='523'>
print *,'dom_meta%id=', dom_meta%id<a name='524'>
print *,'dom_meta%parent_id=', dom_meta%parent_id<a name='525'>
print *,'dom_meta%dyn_init_src=', dom_meta%dyn_init_src<a name='526'>
print *,'dom_meta%static_init_src=', dom_meta%static_init_src<a name='527'>
print *,'dom_meta%vt_date=', dom_meta%vt_date<a name='528'>
print *,'dom_meta%vt_time=', dom_meta%vt_time<a name='529'>
print *,'dom_meta%origin_parent_x=', dom_meta%origin_parent_x<a name='530'>
print *,'dom_meta%origin_parent_y=', dom_meta%origin_parent_y<a name='531'>
print *,'dom_meta%ratio_to_parent=', dom_meta%ratio_to_parent<a name='532'>
print *,'dom_meta%delta_x=', dom_meta%delta_x<a name='533'>
print *,'dom_meta%delta_y=', dom_meta%delta_y<a name='534'>
print *,'dom_meta%top_level=', dom_meta%top_level<a name='535'>
print *,'dom_meta%origin_parent_z=', dom_meta%origin_parent_z<a name='536'>
IF ( global_meta%si_version .EQ. 1 ) THEN<a name='537'>
print *,'dom_meta%corner_lats=', dom_meta%corner_lats_old<a name='538'>
print *,'dom_meta%corner_lons=', dom_meta%corner_lons_old<a name='539'>
ELSE IF ( global_meta%si_version .EQ. 2 ) THEN<a name='540'>
print *,'dom_meta%corner_lats=', dom_meta%corner_lats_new<a name='541'>
print *,'dom_meta%corner_lons=', dom_meta%corner_lons_new<a name='542'>
END IF<a name='543'>
print *,'dom_meta%xdim=', dom_meta%xdim<a name='544'>
print *,'dom_meta%ydim=', dom_meta%ydim<a name='545'>
print *,'dom_meta%zdim=', dom_meta%zdim<a name='546'>
print *,' '<a name='547'>
<a name='548'>
<font color=#447700>! A simple domain size test.<a name='549'></font>
<a name='550'>
<a name='551'>
<font color=#447700>!! relax constraint, as model namelist has +1 for i and j, while<a name='552'></font>
<font color=#447700>!! si data has true dimensions<a name='553'></font>
<a name='554'>
IF ( abs(dom_meta%xdim - (ide-1)) .gt. 1 &<a name='555'>
.OR. abs(dom_meta%ydim - (jde-1)) .gt. 1 &<a name='556'>
.OR. abs(dom_meta%zdim - (kde-1)) .gt. 1) THEN<a name='557'>
PRINT '(A)','Namelist does not match the input data.'<a name='558'>
PRINT '(A,3I5,A)','Namelist dimensions =',ide-1,jde-1,kde-1,'.'<a name='559'>
PRINT '(A,3I5,A)','Input data dimensions =',dom_meta%xdim,dom_meta%ydim,dom_meta%zdim,'.'<a name='560'>
STOP 'Wrong_data_size'<a name='561'>
END IF<a name='562'>
<a name='563'>
<font color=#447700>! How about the grid distance? Is it the same as in the namelist?<a name='564'></font>
<a name='565'>
<font color=#447700>! IF ( ABS ( dom_meta%delta_x - dx ) .GT. 1 ) THEN<a name='566'></font>
<font color=#447700>! PRINT '(A)','Grid distance differs between input file and namelist.'<a name='567'></font>
<font color=#447700>! PRINT '(A,F8.1,A)','Grid distance in input file = ',dom_meta%delta_x,' m.'<a name='568'></font>
<font color=#447700>! PRINT '(A,F8.1,A)','Grid distance in namelist = ',dx,' m.'<a name='569'></font>
<font color=#447700>! STOP 'Wrong_grid_distance'<a name='570'></font>
<font color=#447700>! END IF<a name='571'></font>
<a name='572'>
IF ( global_meta%si_version .EQ. 1 ) THEN<a name='573'>
CALL nl_set_cen_lat
( grid%id , ( dom_meta%corner_lats_old(1,1) + dom_meta%corner_lats_old(2,1) + &<a name='574'>
dom_meta%corner_lats_old(3,1) + dom_meta%corner_lats_old(4,1) ) * 0.25 ) <a name='575'>
ELSE IF ( ( global_meta%si_version .EQ. 2 ) .AND. ( global_meta%moad_known_loc(1:6) .EQ. 'CENTER' ) ) THEN<a name='576'>
CALL nl_set_cen_lat
( grid%id , global_meta%moad_known_lat )<a name='577'>
ELSE IF ( global_meta%si_version .EQ. 2 ) THEN<a name='578'>
CALL nl_set_cen_lat
( grid%id , ( dom_meta%corner_lats_new(1,1) + dom_meta%corner_lats_new(2,1) + &<a name='579'>
dom_meta%corner_lats_new(3,1) + dom_meta%corner_lats_new(4,1) ) * 0.25 ) <a name='580'>
END IF<a name='581'>
<a name='582'>
<a name='583'>
<font color=#447700>!!! might be trouble here<a name='584'></font>
<a name='585'>
CALL nl_set_cen_lon
( grid%id , global_meta%moad_stand_lons(1) )<a name='586'>
<font color=#447700>!!!!!<a name='587'></font>
write(6,*) 'set_cen_lat... global_meta%moad_stand_lats(1): ', global_meta%moad_stand_lats(1)<a name='588'>
CALL nl_set_cen_lat
( grid%id , global_meta%moad_stand_lats(1) )<a name='589'>
<font color=#447700>!!!!!<a name='590'></font>
CALL nl_set_truelat1
( grid%id , global_meta%moad_stand_lats(1) )<a name='591'>
CALL nl_set_truelat2
( grid%id , global_meta%moad_stand_lats(2) )<a name='592'>
<a name='593'>
pt = dom_meta%top_level<a name='594'>
<a name='595'>
IF ( global_meta%map_projection(1:17) .EQ. 'LAMBERT CONFORMAL' ) THEN<a name='596'>
map_proj = 1<a name='597'>
ELSE IF ( global_meta%map_projection(1:19) .EQ. 'POLAR STEREOGRAPHIC' ) THEN<a name='598'>
map_proj = 2<a name='599'>
ELSE IF ( global_meta%map_projection(1: 8) .EQ. 'MERCATOR' ) THEN<a name='600'>
map_proj = 3<a name='601'>
ELSE IF ( global_meta%map_projection(1:14) .EQ. 'ROTATED LATLON' ) THEN<a name='602'>
map_proj = 203 <font color=#447700>!?<a name='603'></font>
ELSE<a name='604'>
PRINT '(A,A,A)','Undefined map projection: ',TRIM(global_meta%map_projection(1:20)),'.'<a name='605'>
STOP 'Undefined_map_proj_si'<a name='606'>
END IF<a name='607'>
CALL nl_set_map_proj
( grid%id , map_proj ) <a name='608'>
<a name='609'>
IF ( global_meta%si_version .EQ. 1 ) THEN<a name='610'>
CALL <A href='../../html_code/frame/module_configure.F.html#NL_SET_MMINLU'>nl_set_mminlu</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="NL_SET_MMINLU_7"> ( 'USGS' )<a name='611'>
CALL nl_set_iswater
(grid%id, 16 )<a name='612'>
ELSE IF ( global_meta%si_version .EQ. 2 ) THEN<a name='613'>
CALL <A href='../../html_code/frame/module_configure.F.html#NL_SET_MMINLU'>nl_set_mminlu</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="NL_SET_MMINLU_8"> ( global_meta%lu_source )<a name='614'>
CALL nl_set_iswater
(grid%id, global_meta%lu_water )<a name='615'>
CALL nl_set_isice
(grid%id, global_meta%lu_ice )<a name='616'>
END IF<a name='617'>
<a name='618'>
CALL nl_set_gmt
(grid%id, dom_meta%vt_time / 3600. )<a name='619'>
CALL nl_set_julyr
(grid%id, dom_meta%vt_date / 1000 )<a name='620'>
CALL nl_set_julday
(grid%id, dom_meta%vt_date - ( dom_meta%vt_date / 1000 ) * 1000 )<a name='621'>
<a name='622'>
write(6,*) 'start reading from unit 13'<a name='623'>
read_all_the_data : DO<a name='624'>
<a name='625'>
READ (13,IOSTAT=OK) var_info%name, var_info%units, &<a name='626'>
var_info%description, var_info%domain_id, var_info%ndim, &<a name='627'>
var_info%dim_val, var_info%dim_desc, var_info%start_index, &<a name='628'>
var_info%stop_index, var_info%h_stagger_index, var_info%v_stagger_index,&<a name='629'>
var_info%array_order, var_info%field_type, var_info%field_source_prog, &<a name='630'>
var_info%source_desc, var_info%field_time_type, var_info%vt_date_start, &<a name='631'>
var_info%vt_time_start, var_info%vt_date_stop, var_info%vt_time_stop<a name='632'>
<a name='633'>
IF ( OK .NE. 0 ) THEN<a name='634'>
PRINT '(A,A,A)','End of file found for real_input_nm.d01.',file_date_string,'.'<a name='635'>
EXIT read_all_the_data<a name='636'>
END IF<a name='637'>
<a name='638'>
<font color=#447700>! print *,'VARIABLE METADATA'<a name='639'></font>
PRINT '(A,A)','var_info%name=', var_info%name <a name='640'>
<font color=#447700>! print *,'var_info%units=', var_info%units <a name='641'></font>
<font color=#447700>! print *,'var_info%description=', var_info%description <a name='642'></font>
<font color=#447700>! print *,'var_info%domain_id=', var_info%domain_id <a name='643'></font>
<font color=#447700>! print *,'var_info%ndim=', var_info%ndim <a name='644'></font>
<font color=#447700>! print *,'var_info%dim_val=', var_info%dim_val <a name='645'></font>
<font color=#447700>! print *,'var_info%dim_desc=', var_info%dim_desc <a name='646'></font>
<font color=#447700>! print *,'var_info%start_index=', var_info%start_index <a name='647'></font>
<font color=#447700>! print *,'var_info%stop_index=', var_info%stop_index <a name='648'></font>
<font color=#447700>! print *,'var_info%h_stagger_index=', var_info%h_stagger_index <a name='649'></font>
<font color=#447700>! print *,'var_info%v_stagger_index=', var_info%v_stagger_index<a name='650'></font>
<font color=#447700>! print *,'var_info%array_order=', var_info%array_order <a name='651'></font>
<font color=#447700>! print *,'var_info%field_type=', var_info%field_type <a name='652'></font>
<font color=#447700>! print *,'var_info%field_source_prog=', var_info%field_source_prog <a name='653'></font>
<font color=#447700>! print *,'var_info%source_desc=', var_info%source_desc <a name='654'></font>
<font color=#447700>! print *,'var_info%field_time_type=', var_info%field_time_type <a name='655'></font>
<font color=#447700>! print *,'var_info%vt_date_start=', var_info%vt_date_start <a name='656'></font>
<font color=#447700>! print *,'var_info%vt_time_start=', var_info%vt_time_start <a name='657'></font>
<font color=#447700>! print *,'var_info%vt_date_stop=', var_info%vt_date_stop <a name='658'></font>
<font color=#447700>! print *,'var_info%vt_time_stop=', var_info%vt_time_stop<a name='659'></font>
<a name='660'>
<font color=#447700>! 3D meteorological fields.<a name='661'></font>
<a name='662'>
write(0,*)' read_si var_info%name=',var_info%name(1:8)<a name='663'>
IF ( var_info%name(1:8) .EQ. 'T ' ) THEN<a name='664'>
READ (13) dum3d<a name='665'>
do k=kts,kte<a name='666'>
do j=jts,jte<a name='667'>
do i=its,ite<a name='668'>
t_input(i,j,k)=dum3d(i,j,k)<a name='669'>
enddo<a name='670'>
enddo<a name='671'>
enddo<a name='672'>
do K=1,kde-1<a name='673'>
write(6,*) 't_input, K: ', K, t_input(1,1,K)<a name='674'>
enddo<a name='675'>
<a name='676'>
write(6,*) 't_input(5,5,5): ', t_input(5,5,5)<a name='677'>
ELSE IF ( var_info%name(1:8) .EQ. 'U ' ) THEN<a name='678'>
READ (13) dum3d<a name='679'>
do k=kts,kte<a name='680'>
do j=jts,jte<a name='681'>
do i=its,ite<a name='682'>
u_input(i,j,k)=dum3d(i,j,k)<a name='683'>
enddo<a name='684'>
enddo<a name='685'>
enddo<a name='686'>
do K=1,kde-1<a name='687'>
write(6,*) 'u_input, K: ', K, u_input(1,1,K)<a name='688'>
enddo<a name='689'>
write(6,*) 'u_input(5,5,5): ', u_input(5,5,5)<a name='690'>
<a name='691'>
ELSE IF ( var_info%name(1:8) .EQ. 'V ' ) THEN<a name='692'>
READ (13) dum3d<a name='693'>
do k=kts,kte<a name='694'>
do j=jts,jte<a name='695'>
do i=its,ite<a name='696'>
v_input(i,j,k)=dum3d(i,j,k)<a name='697'>
enddo<a name='698'>
enddo<a name='699'>
enddo<a name='700'>
do K=1,kde-1<a name='701'>
write(6,*) 'v_input, K: ', K, v_input(1,1,K)<a name='702'>
enddo<a name='703'>
write(6,*) 'v_input(5,5,5): ', v_input(5,5,5)<a name='704'>
<a name='705'>
ELSE IF ( var_info%name(1:8) .EQ. 'Q ' ) THEN<a name='706'>
READ (13) dum3d<a name='707'>
do k=kts,kte<a name='708'>
do j=jts,jte<a name='709'>
do i=its,ite<a name='710'>
q_input(i,j,k)=dum3d(i,j,k)<a name='711'>
enddo<a name='712'>
enddo<a name='713'>
enddo<a name='714'>
do K=1,kde-1<a name='715'>
write(6,*) 'q_input, K: ', K, q_input(1,1,K)<a name='716'>
enddo<a name='717'>
write(6,*) 'q_input(5,5,5): ', q_input(5,5,5)<a name='718'>
<font color=#447700>! ELSE IF ( var_info%name(1:8) .EQ. 'THETA ' ) THEN<a name='719'></font>
<font color=#447700>! READ (13) theta_input<a name='720'></font>
<a name='721'>
<font color=#447700>! 3D LSM fields. Don't know the 3rd dimension until we read it in.<a name='722'></font>
<a name='723'>
ELSE IF ( var_info%name(1:8) .EQ. 'LANDUSEF' ) THEN<a name='724'>
IF ( ( first_time_in ) .AND. ( .NOT. ALLOCATED ( landuse_frac_input) ) ) THEN<a name='725'>
ALLOCATE (landuse_frac_input(its:ite,jts:jte,var_info%dim_val(3)) )<a name='726'>
END IF<a name='727'>
READ (13) (((dum3d(i,j,k),i=ids,ide-1),j=jds,jde-1),k=1,var_info%dim_val(3))<a name='728'>
do k=1,var_info%dim_val(3)<a name='729'>
do j=jts,jte<a name='730'>
do i=its,ite<a name='731'>
landuse_frac_input(i,j,k)=dum3d(i,j,k)<a name='732'>
enddo<a name='733'>
enddo<a name='734'>
enddo<a name='735'>
ELSE IF ( var_info%name(1:8) .EQ. 'SOILCTOP' ) THEN<a name='736'>
IF ( ( first_time_in ) .AND. ( .NOT. ALLOCATED ( soil_top_cat_input) ) ) THEN<a name='737'>
ALLOCATE (soil_top_cat_input(its:ite,jts:jte,var_info%dim_val(3)) )<a name='738'>
END IF<a name='739'>
READ (13) (((dum3d(i,j,k),i=ids,ide-1),j=jds,jde-1),k=1,var_info%dim_val(3))<a name='740'>
do k=1,var_info%dim_val(3)<a name='741'>
do j=jts,jte<a name='742'>
do i=its,ite<a name='743'>
soil_top_cat_input(i,j,k)=dum3d(i,j,k)<a name='744'>
enddo<a name='745'>
enddo<a name='746'>
enddo<a name='747'>
ELSE IF ( var_info%name(1:8) .EQ. 'SOILCBOT' ) THEN<a name='748'>
IF ( ( first_time_in ) .AND. ( .NOT. ALLOCATED ( soil_bot_cat_input) ) ) THEN<a name='749'>
ALLOCATE (soil_bot_cat_input(its:ite,jts:jte,var_info%dim_val(3)) )<a name='750'>
END IF<a name='751'>
READ (13) (((dum3d(i,j,k),i=ids,ide-1),j=jds,jde-1),k=1,var_info%dim_val(3))<a name='752'>
do k=1,var_info%dim_val(3)<a name='753'>
do j=jts,jte<a name='754'>
do i=its,ite<a name='755'>
soil_bot_cat_input(i,j,k)=dum3d(i,j,k)<a name='756'>
enddo<a name='757'>
enddo<a name='758'>
enddo<a name='759'>
<a name='760'>
<font color=#447700>! 2D dry pressure minus ptop.<a name='761'></font>
<a name='762'>
ELSE IF ( var_info%name(1:8) .EQ. 'PD ' ) THEN<a name='763'>
READ (13) dum2d<a name='764'>
do j=jts,jte<a name='765'>
do i=its,ite<a name='766'>
pd_input(i,j)=dum2d(i,j)<a name='767'>
enddo<a name='768'>
enddo<a name='769'>
write(6,*) 'pd_input(1,1):: ', pd_input(1,1)<a name='770'>
ELSE IF ( var_info%name(1:8) .EQ. 'PSFC ' ) THEN<a name='771'>
READ (13) dum2d<a name='772'>
do j=jts,jte<a name='773'>
do i=its,ite<a name='774'>
psfc_in(i,j)=dum2d(i,j)<a name='775'>
enddo<a name='776'>
enddo<a name='777'>
ELSE IF ( var_info%name(1:8) .EQ. 'PMSL ' ) THEN<a name='778'>
READ (13) dum2d<a name='779'>
do j=jts,jte<a name='780'>
do i=its,ite<a name='781'>
pmsl(i,j)=dum2d(i,j)<a name='782'>
enddo<a name='783'>
enddo<a name='784'>
ELSE IF ( var_info%name(1:8) .EQ. 'PDTOP ' ) THEN<a name='785'>
READ (13) pdtop_in<a name='786'>
ELSE IF ( var_info%name(1:8) .EQ. 'PT ' ) THEN<a name='787'>
READ (13) pt<a name='788'>
<a name='789'>
<font color=#447700>! 2D surface fields.<a name='790'></font>
<a name='791'>
ELSE IF ( var_info%name(1:8) .eq. 'GLAT ' ) THEN<a name='792'>
READ (13) dum2d<a name='793'>
do j=jts,jte<a name='794'>
do i=its,ite<a name='795'>
lat_mass(i,j)=dum2d(i,j)<a name='796'>
enddo<a name='797'>
enddo<a name='798'>
ELSE IF ( var_info%name(1:8) .eq. 'GLON ' ) THEN<a name='799'>
READ (13) dum2d<a name='800'>
do j=jts,jte<a name='801'>
do i=its,ite<a name='802'>
lon_mass(i,j)=dum2d(i,j)<a name='803'>
enddo<a name='804'>
enddo<a name='805'>
ELSE IF ( var_info%name(1:8) .eq. 'LAT_V ' ) THEN<a name='806'>
READ (13) dum2d<a name='807'>
do j=jts,jte<a name='808'>
do i=its,ite<a name='809'>
lat_wind(i,j)=dum2d(i,j)<a name='810'>
enddo<a name='811'>
enddo<a name='812'>
ELSE IF ( var_info%name(1:8) .eq. 'LON_V ' ) THEN<a name='813'>
READ (13) dum2d<a name='814'>
do j=jts,jte<a name='815'>
do i=its,ite<a name='816'>
lon_wind(i,j)=dum2d(i,j)<a name='817'>
enddo<a name='818'>
enddo<a name='819'>
<a name='820'>
<font color=#447700>! ELSE IF ( var_info%name(1:8) .EQ. 'T_AVGANN' ) THEN<a name='821'></font>
<font color=#447700>! READ (13) t_annual_avg_input<a name='822'></font>
<a name='823'>
ELSE IF ( var_info%name(1:8) .EQ. 'ST000010' ) THEN<a name='824'>
READ (13) dum2d<a name='825'>
do j=jts,jte<a name='826'>
do i=its,ite<a name='827'>
st000010_input(i,j)=dum2d(i,j)<a name='828'>
<font color=#447700>! res_input(i,j)=dum2d(i,j)<a name='829'></font>
enddo<a name='830'>
enddo<a name='831'>
flag_st000010 = 1<a name='832'>
num_st_levels_input = num_st_levels_input + 1<a name='833'>
write(6,*) 'num_st_levels_input=',num_st_levels_input<a name='834'>
write(6,*) 'st000010_input(50,50): ', st000010_input(50,50)<a name='835'>
st_levels_input(num_st_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT2'>char2int2</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT2_1">(var_info%name(3:8))<a name='836'>
st_input(:,:,num_st_levels_input + 1) = st000010_input<a name='837'>
ELSE IF ( var_info%name(1:8) .EQ. 'ST010040' ) THEN<a name='838'>
READ (13) dum2d<a name='839'>
do j=jts,jte<a name='840'>
do i=its,ite<a name='841'>
st010040_input(i,j)=dum2d(i,j)<a name='842'>
enddo<a name='843'>
enddo<a name='844'>
flag_st010040 = 1<a name='845'>
num_st_levels_input = num_st_levels_input + 1<a name='846'>
st_levels_input(num_st_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT2'>char2int2</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT2_2">(var_info%name(3:8))<a name='847'>
write(6,*) 'num_st_levels_input=',num_st_levels_input<a name='848'>
write(6,*) 'st_levels_input: ', st_levels_input<a name='849'>
st_input(:,:,num_st_levels_input + 1) = st010040_input<a name='850'>
ELSE IF ( var_info%name(1:8) .EQ. 'ST040100' ) THEN<a name='851'>
READ (13) dum2d<a name='852'>
do j=jts,jte<a name='853'>
do i=its,ite<a name='854'>
st040100_input(i,j)=dum2d(i,j)<a name='855'>
enddo<a name='856'>
enddo<a name='857'>
flag_st040100 = 1<a name='858'>
num_st_levels_input = num_st_levels_input + 1<a name='859'>
st_levels_input(num_st_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT2'>char2int2</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT2_3">(var_info%name(3:8))<a name='860'>
write(6,*) 'num_st_levels_input=',num_st_levels_input<a name='861'>
write(6,*) 'st_levels_input: ', st_levels_input<a name='862'>
st_input(:,:,num_st_levels_input + 1) = st040100_input<a name='863'>
ELSE IF ( var_info%name(1:8) .EQ. 'ST100200' ) THEN<a name='864'>
READ (13) dum2d<a name='865'>
do j=jts,jte<a name='866'>
do i=its,ite<a name='867'>
st100200_input(i,j)=dum2d(i,j)<a name='868'>
enddo<a name='869'>
enddo<a name='870'>
flag_st100200 = 1<a name='871'>
num_st_levels_input = num_st_levels_input + 1<a name='872'>
st_levels_input(num_st_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT2'>char2int2</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT2_4">(var_info%name(3:8))<a name='873'>
write(6,*) 'num_st_levels_input=',num_st_levels_input<a name='874'>
write(6,*) 'st_levels_input: ', st_levels_input<a name='875'>
st_input(:,:,num_st_levels_input + 1) = st100200_input<a name='876'>
ELSE IF ( var_info%name(1:8) .EQ. 'ST010200' ) THEN<a name='877'>
READ (13) dum2d<a name='878'>
do j=jts,jte<a name='879'>
do i=its,ite<a name='880'>
st010200_input(i,j)=dum2d(i,j)<a name='881'>
enddo<a name='882'>
enddo<a name='883'>
flag_st010200 = 1<a name='884'>
num_st_levels_input = num_st_levels_input + 1<a name='885'>
st_levels_input(num_st_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT2'>char2int2</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT2_5">(var_info%name(3:8))<a name='886'>
write(6,*) 'num_st_levels_input=',num_st_levels_input<a name='887'>
write(6,*) 'num_st_levels_input:: ', num_st_levels_input<a name='888'>
st_input(:,:,num_st_levels_input + 1) = st010200_input<a name='889'>
ELSE IF ( var_info%name(1:8) .EQ. 'SM000010' ) THEN<a name='890'>
READ (13) dum2d<a name='891'>
do j=jts,jte<a name='892'>
do i=its,ite<a name='893'>
sm000010_input(i,j)=dum2d(i,j)<a name='894'>
enddo<a name='895'>
enddo<a name='896'>
flag_sm000010 = 1<a name='897'>
num_sm_levels_input = num_sm_levels_input + 1<a name='898'>
sm_levels_input(num_sm_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT2'>char2int2</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT2_6">(var_info%name(3:8))<a name='899'>
sm_input(:,:,num_sm_levels_input + 1) = sm000010_input<a name='900'>
ELSE IF ( var_info%name(1:8) .EQ. 'SM010040' ) THEN<a name='901'>
READ (13) dum2d<a name='902'>
do j=jts,jte<a name='903'>
do i=its,ite<a name='904'>
sm010040_input(i,j)=dum2d(i,j)<a name='905'>
enddo<a name='906'>
enddo<a name='907'>
flag_sm010040 = 1<a name='908'>
num_sm_levels_input = num_sm_levels_input + 1<a name='909'>
sm_levels_input(num_sm_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT2'>char2int2</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT2_7">(var_info%name(3:8))<a name='910'>
sm_input(:,:,num_sm_levels_input + 1) = sm010040_input<a name='911'>
ELSE IF ( var_info%name(1:8) .EQ. 'SM040100' ) THEN<a name='912'>
READ (13) dum2d<a name='913'>
do j=jts,jte<a name='914'>
do i=its,ite<a name='915'>
sm040100_input(i,j)=dum2d(i,j)<a name='916'>
enddo<a name='917'>
enddo<a name='918'>
flag_sm040100 = 1<a name='919'>
num_sm_levels_input = num_sm_levels_input + 1<a name='920'>
sm_levels_input(num_sm_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT2'>char2int2</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT2_8">(var_info%name(3:8))<a name='921'>
sm_input(:,:,num_sm_levels_input + 1) = sm040100_input<a name='922'>
ELSE IF ( var_info%name(1:8) .EQ. 'SM100200' ) THEN<a name='923'>
READ (13) dum2d<a name='924'>
do j=jts,jte<a name='925'>
do i=its,ite<a name='926'>
sm100200_input(i,j)=dum2d(i,j)<a name='927'>
enddo<a name='928'>
enddo<a name='929'>
flag_sm100200 = 1<a name='930'>
num_sm_levels_input = num_sm_levels_input + 1<a name='931'>
sm_levels_input(num_sm_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT2'>char2int2</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT2_9">(var_info%name(3:8))<a name='932'>
sm_input(:,:,num_sm_levels_input + 1) = sm100200_input<a name='933'>
ELSE IF ( var_info%name(1:8) .EQ. 'SM010200' ) THEN<a name='934'>
READ (13) dum2d<a name='935'>
do j=jts,jte<a name='936'>
do i=its,ite<a name='937'>
sm010200_input(i,j)=dum2d(i,j)<a name='938'>
enddo<a name='939'>
enddo<a name='940'>
flag_sm010200 = 1<a name='941'>
num_sm_levels_input = num_sm_levels_input + 1<a name='942'>
sm_levels_input(num_sm_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT2'>char2int2</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT2_10">(var_info%name(3:8))<a name='943'>
sm_input(:,:,num_sm_levels_input + 1) = sm010200_input<a name='944'>
<a name='945'>
ELSE IF ( var_info%name(1:8) .EQ. 'SOILT010' ) THEN<a name='946'>
READ (13) dum2d<a name='947'>
do j=jts,jte<a name='948'>
do i=its,ite<a name='949'>
soilt010_input(i,j)=dum2d(i,j)<a name='950'>
<font color=#447700>! res_input(i,j)=dum2d(i,j)<a name='951'></font>
enddo<a name='952'>
enddo<a name='953'>
flag_soilt010 = 1<a name='954'>
num_st_levels_input = num_st_levels_input + 1<a name='955'>
st_levels_input(num_st_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT1'>char2int1</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT1_1">(var_info%name(6:8))<a name='956'>
st_input(:,:,num_st_levels_input + 1) = soilt010_input<a name='957'>
write(6,*) 'num_st_levels_input=',num_st_levels_input<a name='958'>
ELSE IF ( var_info%name(1:8) .EQ. 'SOILT040' ) THEN<a name='959'>
READ (13) dum2d<a name='960'>
do j=jts,jte<a name='961'>
do i=its,ite<a name='962'>
soilt040_input(i,j)=dum2d(i,j)<a name='963'>
enddo<a name='964'>
enddo<a name='965'>
flag_soilt040 = 1<a name='966'>
num_st_levels_input = num_st_levels_input + 1<a name='967'>
st_levels_input(num_st_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT1'>char2int1</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT1_2">(var_info%name(6:8))<a name='968'>
st_input(:,:,num_st_levels_input + 1) = soilt040_input<a name='969'>
write(6,*) 'num_st_levels_input=',num_st_levels_input<a name='970'>
ELSE IF ( var_info%name(1:8) .EQ. 'SOILT100' ) THEN<a name='971'>
READ (13) dum2d<a name='972'>
do j=jts,jte<a name='973'>
do i=its,ite<a name='974'>
soilt100_input(i,j)=dum2d(i,j)<a name='975'>
enddo<a name='976'>
enddo<a name='977'>
flag_soilt100 = 1<a name='978'>
num_st_levels_input = num_st_levels_input + 1<a name='979'>
st_levels_input(num_st_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT1'>char2int1</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT1_3">(var_info%name(6:8))<a name='980'>
st_input(:,:,num_st_levels_input + 1) = soilt100_input<a name='981'>
write(6,*) 'num_st_levels_input=',num_st_levels_input<a name='982'>
ELSE IF ( var_info%name(1:8) .EQ. 'SOILT200' ) THEN<a name='983'>
READ (13) dum2d<a name='984'>
do j=jts,jte<a name='985'>
do i=its,ite<a name='986'>
soilt200_input(i,j)=dum2d(i,j)<a name='987'>
enddo<a name='988'>
enddo<a name='989'>
flag_soilt200 = 1<a name='990'>
num_st_levels_input = num_st_levels_input + 1<a name='991'>
st_levels_input(num_st_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT1'>char2int1</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT1_4">(var_info%name(6:8))<a name='992'>
st_input(:,:,num_st_levels_input + 1) = soilt200_input<a name='993'>
write(6,*) 'num_st_levels_input=',num_st_levels_input<a name='994'>
ELSE IF ( var_info%name(1:8) .EQ. 'SOILM010' ) THEN<a name='995'>
READ (13) dum2d<a name='996'>
do j=jts,jte<a name='997'>
do i=its,ite<a name='998'>
soilm010_input(i,j)=dum2d(i,j)<a name='999'>
enddo<a name='1000'>
enddo<a name='1001'>
flag_soilm010 = 1<a name='1002'>
num_sm_levels_input = num_sm_levels_input + 1<a name='1003'>
sm_levels_input(num_sm_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT1'>char2int1</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT1_5">(var_info%name(6:8))<a name='1004'>
sm_input(:,:,num_sm_levels_input + 1) = soilm010_input<a name='1005'>
ELSE IF ( var_info%name(1:8) .EQ. 'SOILM040' ) THEN<a name='1006'>
READ (13) dum2d<a name='1007'>
do j=jts,jte<a name='1008'>
do i=its,ite<a name='1009'>
soilm040_input(i,j)=dum2d(i,j)<a name='1010'>
enddo<a name='1011'>
enddo<a name='1012'>
flag_soilm040 = 1<a name='1013'>
num_sm_levels_input = num_sm_levels_input + 1<a name='1014'>
sm_levels_input(num_sm_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT1'>char2int1</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT1_6">(var_info%name(6:8))<a name='1015'>
sm_input(:,:,num_sm_levels_input + 1) = soilm040_input<a name='1016'>
ELSE IF ( var_info%name(1:8) .EQ. 'SOILM100' ) THEN<a name='1017'>
READ (13) dum2d<a name='1018'>
do j=jts,jte<a name='1019'>
do i=its,ite<a name='1020'>
soilm100_input(i,j)=dum2d(i,j)<a name='1021'>
enddo<a name='1022'>
enddo<a name='1023'>
flag_soilm100 = 1<a name='1024'>
num_sm_levels_input = num_sm_levels_input + 1<a name='1025'>
sm_levels_input(num_sm_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT1'>char2int1</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT1_7">(var_info%name(6:8))<a name='1026'>
sm_input(:,:,num_sm_levels_input + 1) = soilm100_input<a name='1027'>
ELSE IF ( var_info%name(1:8) .EQ. 'SOILM200' ) THEN<a name='1028'>
READ (13) dum2d<a name='1029'>
do j=jts,jte<a name='1030'>
do i=its,ite<a name='1031'>
soilm200_input(i,j)=dum2d(i,j)<a name='1032'>
enddo<a name='1033'>
enddo<a name='1034'>
flag_soilm200 = 1<a name='1035'>
num_sm_levels_input = num_sm_levels_input + 1<a name='1036'>
sm_levels_input(num_sm_levels_input) = <A href='../../html_code/share/module_optional_si_input.F.html#CHAR2INT1'>char2int1</A><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#READ_SI' TARGET='bottom_target'><IMG SRC="../../gif/cyan.gif" border=0></a><A NAME="CHAR2INT1_8">(var_info%name(6:8))<a name='1037'>
sm_input(:,:,num_sm_levels_input + 1) = soilm200_input<a name='1038'>
<a name='1039'>
ELSE IF ( var_info%name(1:8) .EQ. 'SEAICE ' ) THEN<a name='1040'>
READ (13) dum2d<a name='1041'>
do j=jts,jte<a name='1042'>
do i=its,ite<a name='1043'>
seaice_input(i,j)=dum2d(i,j)<a name='1044'>
enddo<a name='1045'>
enddo<a name='1046'>
ELSE IF ( var_info%name(1:8) .EQ. 'WEASD ' ) THEN<a name='1047'>
READ (13) dum2d<a name='1048'>
do j=jts,jte<a name='1049'>
do i=its,ite<a name='1050'>
snow_input(i,j)=dum2d(i,j)<a name='1051'>
enddo<a name='1052'>
enddo<a name='1053'>
ELSE IF ( var_info%name(1:8) .EQ. 'CANWAT ' ) THEN<a name='1054'>
READ (13) dum2d<a name='1055'>
do j=jts,jte<a name='1056'>
do i=its,ite<a name='1057'>
canwat_input(i,j)=dum2d(i,j)<a name='1058'>
enddo<a name='1059'>
enddo<a name='1060'>
ELSE IF ( var_info%name(1:8) .EQ. 'LANDMASK' ) THEN<a name='1061'>
write(6,*) 'size of landmask_input in read_si: ', size(landmask_input,dim=1),&<a name='1062'>
size(landmask_input,dim=2)<a name='1063'>
READ (13) dum2d<a name='1064'>
do j=jts,jte<a name='1065'>
do i=its,ite<a name='1066'>
landmask_input(i,j)=dum2d(i,j)<a name='1067'>
enddo<a name='1068'>
enddo<a name='1069'>
ELSE IF ( var_info%name(1:8) .EQ. 'SKINTEMP' ) THEN<a name='1070'>
READ (13) dum2d<a name='1071'>
do j=jts,jte<a name='1072'>
do i=its,ite<a name='1073'>
skintemp_input(i,j)=dum2d(i,j)<a name='1074'>
<font color=#447700>! tg_input(i,j)=dum2d(i,j)<a name='1075'></font>
tg_input=skintemp_input<a name='1076'>
enddo<a name='1077'>
enddo<a name='1078'>
ELSE IF ( var_info%name(1:8) .EQ. 'SST ' ) THEN<a name='1079'>
READ (13) dum2d<a name='1080'>
do j=jts,jte<a name='1081'>
do i=its,ite<a name='1082'>
sst_input(i,j)=dum2d(i,j)<a name='1083'>
enddo<a name='1084'>
enddo<a name='1085'>
flag_sst = 1<a name='1086'>
ELSE IF ( var_info%name(1:8) .EQ. 'GREENFRC' ) THEN<a name='1087'>
READ (13) dum2d<a name='1088'>
do j=jts,jte<a name='1089'>
do i=its,ite<a name='1090'>
green_frac_input(i,j)=dum2d(i,j)<a name='1091'>
enddo<a name='1092'>
enddo<a name='1093'>
ELSE IF ( var_info%name(1:8) .EQ. 'ISLOPE ' ) THEN<a name='1094'>
READ (13) dum2d<a name='1095'>
do j=jts,jte<a name='1096'>
do i=its,ite<a name='1097'>
islope_input(i,j)=dum2d(i,j)<a name='1098'>
enddo<a name='1099'>
enddo<a name='1100'>
ELSE IF ( var_info%name(1:8) .EQ. 'GREENMAX' ) THEN<a name='1101'>
READ (13) dum2d<a name='1102'>
do j=jts,jte<a name='1103'>
do i=its,ite<a name='1104'>
green_frac_max(i,j)=dum2d(i,j)<a name='1105'>
enddo<a name='1106'>
enddo<a name='1107'>
write(6,*) 'green_frac_max(5,5): ', green_frac_max(5,5)<a name='1108'>
ELSE IF ( var_info%name(1:8) .EQ. 'GREENMIN' ) THEN<a name='1109'>
READ (13) dum2d<a name='1110'>
do j=jts,jte<a name='1111'>
do i=its,ite<a name='1112'>
green_frac_min(i,j)=dum2d(i,j)<a name='1113'>
enddo<a name='1114'>
enddo<a name='1115'>
write(6,*) 'green_frac_min(5,5): ', green_frac_min(5,5)<a name='1116'>
ELSE IF ( var_info%name(1:8) .EQ. 'FIS ' ) THEN<a name='1117'>
READ (13) dum2d<a name='1118'>
do j=jts,jte<a name='1119'>
do i=its,ite<a name='1120'>
ter_input(i,j)=dum2d(i,j)<a name='1121'>
enddo<a name='1122'>
enddo<a name='1123'>
write(6,*) 'maxval of ter_input: ', maxval(ter_input)<a name='1124'>
ELSE IF ( var_info%name(1:8) .EQ. 'CMC ' ) THEN<a name='1125'>
READ (13) dum2d<a name='1126'>
do j=jts,jte<a name='1127'>
do i=its,ite<a name='1128'>
cmc_in(i,j)=dum2d(i,j)<a name='1129'>
enddo<a name='1130'>
enddo<a name='1131'>
ELSE IF ( var_info%name(1:8) .EQ. 'HTM ' ) THEN<a name='1132'>
READ (13) dum3d<a name='1133'>
do k=kts,kte<a name='1134'>
do j=jts,jte<a name='1135'>
do i=its,ite<a name='1136'>
htm_in(i,j,k)=dum3d(i,j,k)<a name='1137'>
enddo<a name='1138'>
enddo<a name='1139'>
enddo<a name='1140'>
ELSE IF ( var_info%name(1:8) .EQ. 'VTM ' ) THEN<a name='1141'>
READ (13) dum3d<a name='1142'>
do k=kts,kte<a name='1143'>
do j=jts,jte<a name='1144'>
do i=its,ite<a name='1145'>
vtm_in(i,j,k)=dum3d(i,j,k)<a name='1146'>
enddo<a name='1147'>
enddo<a name='1148'>
enddo<a name='1149'>
ELSE IF ( var_info%name(1:8) .EQ. 'SM ' ) THEN<a name='1150'>
READ (13) dum2d<a name='1151'>
do j=jts,jte<a name='1152'>
do i=its,ite<a name='1153'>
sm_in(i,j)=dum2d(i,j)<a name='1154'>
enddo<a name='1155'>
enddo<a name='1156'>
ELSE IF ( var_info%name(1:8) .EQ. 'ALBASE ' ) THEN<a name='1157'>
READ (13) dum2d<a name='1158'>
do j=jts,jte<a name='1159'>
do i=its,ite<a name='1160'>
albase_input(i,j)=dum2d(i,j)<a name='1161'>
enddo<a name='1162'>
enddo<a name='1163'>
ELSE IF ( var_info%name(1:8) .EQ. 'MXSNAL ' ) THEN<a name='1164'>
READ (13) dum2d<a name='1165'>
do j=jts,jte<a name='1166'>
do i=its,ite<a name='1167'>
mxsnal_input(i,j)=dum2d(i,j)<a name='1168'>
enddo<a name='1169'>
enddo<a name='1170'>
<font color=#447700>! ELSE IF(( var_info%name(1:8) .EQ. 'USGSLAND' ) .AND. ( global_meta%si_version .EQ. 1 ) ) THEN<a name='1171'></font>
<font color=#447700>! READ (13) landuse_input<a name='1172'></font>
<font color=#447700>! ELSE IF(( var_info%name(1:8) .EQ. 'TERRAIN ' ) .AND. ( global_meta%si_version .EQ. 1 ) ) THEN <a name='1173'></font>
<font color=#447700>! READ (13) ter_input<a name='1174'></font>
<font color=#447700>! ELSE IF(( var_info%name(1:8) .EQ. 'TOPO_M ' ) .AND. ( global_meta%si_version .EQ. 2 ) ) THEN<a name='1175'></font>
<font color=#447700>! READ (13) ter_input<a name='1176'></font>
<font color=#447700>! ELSE IF ( var_info%name(1:8) .EQ. 'TOPOSTDV' ) THEN<a name='1177'></font>
<font color=#447700>! READ (13) ter_std_input<a name='1178'></font>
<font color=#447700>! ELSE IF ( var_info%name(1:8) .EQ. 'TOPOSLPX' ) THEN<a name='1179'></font>
<font color=#447700>! READ (13) ter_slpx_input<a name='1180'></font>
<font color=#447700>! ELSE IF ( var_info%name(1:8) .EQ. 'TOPOSLPY' ) THEN<a name='1181'></font>
<font color=#447700>! READ (13) ter_slpy_input<a name='1182'></font>
<font color=#447700>! ELSE IF ( var_info%name(1:8) .EQ. 'SOILHGT ' ) THEN<a name='1183'></font>
<font color=#447700>! READ (13) toposoil_input<a name='1184'></font>
<font color=#447700>! flag_toposoil = 1<a name='1185'></font>
<a name='1186'>
<font color=#447700>! 2D map input fields.<a name='1187'></font>
<a name='1188'>
<font color=#447700>! ELSE IF ( var_info%name(1:8) .EQ. 'MAPFAC_M' ) THEN<a name='1189'></font>
<font color=#447700>! READ (13) msft_input<a name='1190'></font>
<font color=#447700>! ELSE IF ( var_info%name(1:8) .EQ. 'MAPFAC_U' ) THEN<a name='1191'></font>
<font color=#447700>! READ (13) msfu_input<a name='1192'></font>
<font color=#447700>! ELSE IF ( var_info%name(1:8) .EQ. 'MAPFAC_V' ) THEN<a name='1193'></font>
<font color=#447700>! READ (13) msfv_input<a name='1194'></font>
<font color=#447700>! ELSE IF ( var_info%name(1:8) .EQ. 'SINALPHA' ) THEN<a name='1195'></font>
<font color=#447700>! READ (13) sina_input<a name='1196'></font>
<font color=#447700>! ELSE IF ( var_info%name(1:8) .EQ. 'COSALPHA' ) THEN<a name='1197'></font>
<font color=#447700>! READ (13) cosa_input<a name='1198'></font>
<font color=#447700>! ELSE IF ( var_info%name(1:8) .EQ. 'H_CORIOL' ) THEN<a name='1199'></font>
<font color=#447700>! READ (13) f_input<a name='1200'></font>
<font color=#447700>! ELSE IF ( var_info%name(1:8) .EQ. 'V_CORIOL' ) THEN<a name='1201'></font>
<font color=#447700>! READ (13) e_input<a name='1202'></font>
<font color=#447700>! ELSE IF(( var_info%name(1:8) .EQ. 'LATITUDE' ) .AND. ( global_meta%si_version .EQ. 1 ) ) THEN<a name='1203'></font>
<font color=#447700>! READ (13) lat_input<a name='1204'></font>
<font color=#447700>! ELSE IF(( var_info%name(1:8) .EQ. 'LONGITUD' ) .AND. ( global_meta%si_version .EQ. 1 ) ) THEN<a name='1205'></font>
<font color=#447700>! READ (13) lon_input<a name='1206'></font>
<font color=#447700>! ELSE IF(( var_info%name(1:8) .EQ. 'LAT_M ' ) .AND. ( global_meta%si_version .EQ. 2 ) ) THEN<a name='1207'></font>
<font color=#447700>! READ (13) lat_input<a name='1208'></font>
<font color=#447700>! ELSE IF(( var_info%name(1:8) .EQ. 'LON_M ' ) .AND. ( global_meta%si_version .EQ. 2 ) ) THEN<a name='1209'></font>
<font color=#447700>! READ (13) lon_input<a name='1210'></font>
<a name='1211'>
<font color=#447700>! 1D vertical coordinate.<a name='1212'></font>
<a name='1213'>
ELSE IF ( var_info%name(1:8) .EQ. 'DETA ' ) THEN<a name='1214'>
READ(13) DETA_in<a name='1215'>
ELSE IF ( var_info%name(1:8) .EQ. 'DETA1 ' ) THEN<a name='1216'>
READ(13) DETA1_in<a name='1217'>
ELSE IF ( var_info%name(1:8) .EQ. 'DETA2 ' ) THEN<a name='1218'>
READ(13) DETA2_in<a name='1219'>
ELSE IF ( var_info%name(1:8) .EQ. 'ETAX ' ) THEN<a name='1220'>
READ(13) ETAX_in<a name='1221'>
ELSE IF ( var_info%name(1:8) .EQ. 'ETA1 ' ) THEN<a name='1222'>
READ(13) ETA1_in<a name='1223'>
ELSE IF ( var_info%name(1:8) .EQ. 'ETA2 ' ) THEN<a name='1224'>
READ(13) ETA2_in<a name='1225'>
ELSE IF ( var_info%name(1:8) .EQ. 'AETA ' ) THEN<a name='1226'>
READ(13) AETA_in<a name='1227'>
ELSE IF ( var_info%name(1:8) .EQ. 'AETA1 ' ) THEN<a name='1228'>
READ(13) AETA1_in<a name='1229'>
ELSE IF ( var_info%name(1:8) .EQ. 'AETA2 ' ) THEN<a name='1230'>
READ(13) AETA2_in<a name='1231'>
ELSE IF ( var_info%name(1:8) .EQ. 'DFL ' ) THEN<a name='1232'>
READ(13) dfl_input<a name='1233'>
<a name='1234'>
<font color=#447700>! ELSE IF ( var_info%name(1:8) .EQ. 'ETAPHALF' ) THEN<a name='1235'></font>
<font color=#447700>! READ (13) etahalf<a name='1236'></font>
<font color=#447700>! ELSE IF ( var_info%name(1:8) .EQ. 'ETAPFULL' ) THEN<a name='1237'></font>
<font color=#447700>! READ (13) etafull<a name='1238'></font>
<a name='1239'>
<font color=#447700>! wrong input data.<a name='1240'></font>
<a name='1241'>
ELSE IF ( var_info%name(1:8) .EQ. 'ZETAFULL' ) THEN<a name='1242'>
PRINT '(A)','Oops, you put in the height data.'<a name='1243'>
STOP 'this_is_mass_not_height'<a name='1244'>
<a name='1245'>
<a name='1246'>
<font color=#447700>! Stuff that we do not want or need is just skipped over.<a name='1247'></font>
<a name='1248'>
ELSE<a name='1249'>
print *,'------------------> skipping ', var_info%name(1:8)<a name='1250'>
READ (13) dummy<a name='1251'>
END IF<a name='1252'>
<a name='1253'>
END DO read_all_the_data<a name='1254'>
<a name='1255'>
CLOSE (13)<a name='1256'>
<a name='1257'>
first_time_in = .FALSE.<a name='1258'>
<a name='1259'>
write(6,*)' exit read_si num_st_levels_input=',num_st_levels_input<a name='1260'>
write(0,*)' exit read_si num_st_levels_input=',num_st_levels_input<a name='1261'>
numx_sm_levels_input=num_sm_levels_input<a name='1262'>
numx_st_levels_input=num_st_levels_input<a name='1263'>
smx_levels_input=sm_levels_input<a name='1264'>
stx_levels_input=st_levels_input<a name='1265'>
write(6,*) 'end of read_si...st_levels_input:: ', st_levels_input<a name='1266'>
<a name='1267'>
END SUBROUTINE read_si<a name='1268'>
<a name='1269'>
<font color=#447700>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<a name='1270'></font>
<a name='1271'>
<A NAME='CHAR2INT1'><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#CHAR2INT1' TARGET='top_target'><IMG SRC="../../gif/bar_green.gif" border=0></A><a name='1272'>
<font color=#993300>FUNCTION </font><font color=#cc0000>char2int1</font>( string3 ) RESULT ( int1 ) <A href='../../call_to/CHAR2INT1.html' TARGET='index'>26</A><a name='1273'>
CHARACTER (LEN=3) , INTENT(IN) :: string3<a name='1274'>
INTEGER :: i1 , int1<a name='1275'>
READ(string3,fmt='(I3)') i1<a name='1276'>
int1 = i1<a name='1277'>
END FUNCTION char2int1<a name='1278'>
<a name='1279'>
<A NAME='CHAR2INT2'><A href='../../html_code/dyn_nmm/module_si_io_nmm.F.html#CHAR2INT2' TARGET='top_target'><IMG SRC="../../gif/bar_green.gif" border=0></A><a name='1280'>
<font color=#993300>FUNCTION </font><font color=#cc0000>char2int2</font>( string6 ) RESULT ( int1 ) <A href='../../call_to/CHAR2INT2.html' TARGET='index'>25</A><a name='1281'>
CHARACTER (LEN=6) , INTENT(IN) :: string6<a name='1282'>
INTEGER :: i2 , i1 , int1<a name='1283'>
READ(string6,fmt='(I3,I3)') i1,i2<a name='1284'>
int1 = ( i2 + i1 ) / 2<a name='1285'>
END FUNCTION char2int2<a name='1286'>
<a name='1287'>
END MODULE module_si_io_nmm<a name='1288'>
</pre></body></html>