-
Notifications
You must be signed in to change notification settings - Fork 82
/
Copy pathmodule_sf_noahmpdrv.F
3769 lines (3307 loc) · 208 KB
/
module_sf_noahmpdrv.F
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
MODULE module_sf_noahmpdrv
!-------------------------------
#if ( WRF_CHEM == 1 )
USE module_data_gocart_dust
#endif
!-------------------------------
!
CONTAINS
!
SUBROUTINE noahmplsm(ITIMESTEP, YR, JULIAN, COSZIN,XLAT,XLONG, & ! IN : Time/Space-related
DZ8W, DT, DZS, NSOIL, DX, & ! IN : Model configuration
IVGTYP, ISLTYP, VEGFRA, VEGMAX, TMN, & ! IN : Vegetation/Soil characteristics
XLAND, XICE,XICE_THRES, CROPCAT, & ! IN : Vegetation/Soil characteristics
PLANTING, HARVEST,SEASON_GDD, &
IDVEG, IOPT_CRS, IOPT_BTR, IOPT_RUN, IOPT_SFC, IOPT_FRZ, & ! IN : User options
IOPT_INF, IOPT_RAD, IOPT_ALB, IOPT_SNF,IOPT_TBOT, IOPT_STC, & ! IN : User options
IOPT_GLA, IOPT_RSF, IOPT_SOIL,IOPT_PEDO,IOPT_CROP, IOPT_IRR, & ! IN : User options
IOPT_IRRM, IOPT_INFDV, IOPT_TDRN,soiltstep, & ! IN : User options
IZ0TLND, SF_URBAN_PHYSICS, & ! IN : User options
SOILCOMP, SOILCL1, SOILCL2, SOILCL3, SOILCL4, & ! IN : User options
T3D, QV3D, U_PHY, V_PHY, SWDOWN, SWDDIR,&
SWDDIF, GLW, & ! IN : Forcing
P8W3D,PRECIP_IN, SR, & ! IN : Forcing
IRFRACT, SIFRACT, MIFRACT, FIFRACT, & ! IN : Noah MP only
TSK, HFX, QFX, LH, GRDFLX, SMSTAV, & ! IN/OUT LSM eqv
SMSTOT,SFCRUNOFF, UDRUNOFF, ALBEDO, SNOWC, SMOIS, & ! IN/OUT LSM eqv
SH2O, TSLB, SNOW, SNOWH, CANWAT, ACSNOM, & ! IN/OUT LSM eqv
ACSNOW, EMISS, QSFC, & ! IN/OUT LSM eqv
Z0, ZNT, & ! IN/OUT LSM eqv
IRNUMSI, IRNUMMI, IRNUMFI, IRWATSI, IRWATMI, IRWATFI, & ! IN/OUT Noah MP only
IRELOSS, IRSIVOL, IRMIVOL, IRFIVOL, IRRSPLH, LLANDUSE, & ! IN/OUT Noah MP only
ISNOWXY, TVXY, TGXY, CANICEXY, CANLIQXY, EAHXY, & ! IN/OUT Noah MP only
TAHXY, CMXY, CHXY, FWETXY, SNEQVOXY, ALBOLDXY, & ! IN/OUT Noah MP only
QSNOWXY, QRAINXY, WSLAKEXY, ZWTXY, WAXY, WTXY, TSNOXY, & ! IN/OUT Noah MP only
ZSNSOXY, SNICEXY, SNLIQXY, LFMASSXY, RTMASSXY, STMASSXY, & ! IN/OUT Noah MP only
WOODXY, STBLCPXY, FASTCPXY, XLAIXY, XSAIXY, TAUSSXY, & ! IN/OUT Noah MP only
SMOISEQ, SMCWTDXY,DEEPRECHXY, RECHXY, GRAINXY, GDDXY,PGSXY, & ! IN/OUT Noah MP only
GECROS_STATE, & ! IN/OUT gecros model
QTDRAIN, TD_FRACTION, & ! IN/OUT tile drainage
T2MVXY, T2MBXY, Q2MVXY, Q2MBXY, & ! OUT Noah MP only
TRADXY, NEEXY, GPPXY, NPPXY, FVEGXY, RUNSFXY, & ! OUT Noah MP only
RUNSBXY, ECANXY, EDIRXY, ETRANXY, FSAXY, FIRAXY, & ! OUT Noah MP only
APARXY, PSNXY, SAVXY, SAGXY, RSSUNXY, RSSHAXY, & ! OUT Noah MP only
BGAPXY, WGAPXY, TGVXY, TGBXY, CHVXY, CHBXY, & ! OUT Noah MP only
SHGXY, SHCXY, SHBXY, EVGXY, EVBXY, GHVXY, & ! OUT Noah MP only
GHBXY, IRGXY, IRCXY, IRBXY, TRXY, EVCXY, & ! OUT Noah MP only
CHLEAFXY, CHUCXY, CHV2XY, CHB2XY, RS, & ! OUT Noah MP only
QINTSXY ,QINTRXY ,QDRIPSXY ,&
QDRIPRXY ,QTHROSXY ,QTHRORXY ,&
QSNSUBXY ,QSNFROXY ,QSUBCXY ,&
QFROCXY ,QEVACXY ,QDEWCXY ,QFRZCXY ,QMELTCXY ,&
QSNBOTXY ,QMELTXY ,PONDINGXY ,PAHXY ,PAHGXY, PAHVXY, PAHBXY,&
FPICEXY,RAINLSM,SNOWLSM,FORCTLSM ,FORCQLSM,FORCPLSM,FORCZLSM,FORCWLSM,&
ACC_SSOILXY, ACC_QINSURXY, ACC_QSEVAXY, ACC_ETRANIXY, EFLXBXY, &
SOILENERGY, SNOWENERGY, CANHSXY, &
ACC_DWATERXY, ACC_PRCPXY, ACC_ECANXY, ACC_ETRANXY, ACC_EDIRXY, &
! BEXP_3D,SMCDRY_3D,SMCWLT_3D,SMCREF_3D,SMCMAX_3D, & ! placeholders to activate 3D soil
! DKSAT_3D,DWSAT_3D,PSISAT_3D,QUARTZ_3D, &
! REFDK_2D,REFKDT_2D, &
! IRR_FRAC_2D,IRR_HAR_2D,IRR_LAI_2D,IRR_MAD_2D,FILOSS_2D, &
! SPRIR_RATE_2D,MICIR_RATE_2D,FIRTFAC_2D,IR_RAIN_2D, &
! BVIC_2D,AXAJ_2D,BXAJ_2D,XXAJ_2D,BDVIC_2D,GDVIC_2D,BBVIC_2D,&
! KLAT_FAC,TDSMC_FAC,TD_DC,TD_DCOEF,TD_DDRAIN,TD_RADI,TD_SPAC, &
#ifdef WRF_HYDRO
sfcheadrt,INFXSRT,soldrain,qtiledrain,ZWATBLE2D, &
#endif
ids,ide, jds,jde, kds,kde, &
ims,ime, jms,jme, kms,kme, &
its,ite, jts,jte, kts,kte, &
MP_RAINC, MP_RAINNC, MP_SHCV, MP_SNOW, MP_GRAUP, MP_HAIL )
!----------------------------------------------------------------
USE MODULE_SF_NOAHMPLSM
! USE MODULE_SF_NOAHMPLSM, only: noahmp_options, NOAHMP_SFLX, noahmp_parameters
USE module_sf_noahmp_glacier
USE NOAHMP_TABLES, ONLY: ISICE_TABLE, CO2_TABLE, O2_TABLE, DEFAULT_CROP_TABLE, ISCROP_TABLE, ISURBAN_TABLE, NATURAL_TABLE, &
LCZ_1_TABLE,LCZ_2_TABLE,LCZ_3_TABLE,LCZ_4_TABLE,LCZ_5_TABLE,LCZ_6_TABLE,LCZ_7_TABLE,LCZ_8_TABLE, &
LCZ_9_TABLE,LCZ_10_TABLE,LCZ_11_TABLE
USE module_sf_urban, only: IRI_SCHEME
USE module_ra_gfdleta, only: cal_mon_day
!----------------------------------------------------------------
IMPLICIT NONE
!----------------------------------------------------------------
! IN only
INTEGER, INTENT(IN ) :: ITIMESTEP ! timestep number
INTEGER, INTENT(IN ) :: YR ! 4-digit year
REAL, INTENT(IN ) :: JULIAN ! Julian day
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: COSZIN ! cosine zenith angle
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: XLAT ! latitude [rad]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: XLONG ! latitude [rad]
REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ) :: DZ8W ! thickness of atmo layers [m]
REAL, INTENT(IN ) :: DT ! timestep [s]
REAL, DIMENSION(1:nsoil), INTENT(IN ) :: DZS ! thickness of soil layers [m]
INTEGER, INTENT(IN ) :: NSOIL ! number of soil layers
REAL, INTENT(IN ) :: DX ! horizontal grid spacing [m]
INTEGER, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: IVGTYP ! vegetation type
INTEGER, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: ISLTYP ! soil type
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: VEGFRA ! vegetation fraction []
REAL, DIMENSION( ims:ime , jms:jme ), INTENT(IN ) :: VEGMAX ! annual max vegetation fraction []
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: TMN ! deep soil temperature [K]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: XLAND ! =2 ocean; =1 land/seaice
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: XICE ! fraction of grid that is seaice
REAL, INTENT(IN ) :: XICE_THRES! fraction of grid determining seaice
INTEGER, INTENT(IN ) :: IDVEG ! dynamic vegetation (1 -> off ; 2 -> on) with opt_crs = 1
INTEGER, INTENT(IN ) :: IOPT_CRS ! canopy stomatal resistance (1-> Ball-Berry; 2->Jarvis)
INTEGER, INTENT(IN ) :: IOPT_BTR ! soil moisture factor for stomatal resistance (1-> Noah; 2-> CLM; 3-> SSiB)
INTEGER, INTENT(IN ) :: IOPT_RUN ! runoff and groundwater (1->SIMGM; 2->SIMTOP; 3->Schaake96; 4->BATS)
INTEGER, INTENT(IN ) :: IOPT_SFC ! surface layer drag coeff (CH & CM) (1->M-O; 2->Chen97)
INTEGER, INTENT(IN ) :: IOPT_FRZ ! supercooled liquid water (1-> NY06; 2->Koren99)
INTEGER, INTENT(IN ) :: IOPT_INF ! frozen soil permeability (1-> NY06; 2->Koren99)
INTEGER, INTENT(IN ) :: IOPT_RAD ! radiation transfer (1->gap=F(3D,cosz); 2->gap=0; 3->gap=1-Fveg)
INTEGER, INTENT(IN ) :: IOPT_ALB ! snow surface albedo (1->BATS; 2->CLASS)
INTEGER, INTENT(IN ) :: IOPT_SNF ! rainfall & snowfall (1-Jordan91; 2->BATS; 3->Noah)
INTEGER, INTENT(IN ) :: IOPT_TBOT ! lower boundary of soil temperature (1->zero-flux; 2->Noah)
INTEGER, INTENT(IN ) :: IOPT_STC ! snow/soil temperature time scheme
INTEGER, INTENT(IN ) :: IOPT_GLA ! glacier option (1->phase change; 2->simple)
INTEGER, INTENT(IN ) :: IOPT_RSF ! surface resistance (1->Sakaguchi/Zeng; 2->Seller; 3->mod Sellers; 4->1+snow)
INTEGER, INTENT(IN ) :: IOPT_SOIL ! soil configuration option
INTEGER, INTENT(IN ) :: IOPT_PEDO ! soil pedotransfer function option
INTEGER, INTENT(IN ) :: IOPT_CROP ! crop model option (0->none; 1->Liu et al.; 2->Gecros)
INTEGER, INTENT(IN ) :: IOPT_IRR ! irrigation scheme (0->none; >1 irrigation scheme ON)
INTEGER, INTENT(IN ) :: IOPT_IRRM ! irrigation method
INTEGER, INTENT(IN ) :: IOPT_INFDV! infiltration options for dynamic VIC infiltration (1->Philip; 2-> Green-Ampt;3->Smith-Parlange)
INTEGER, INTENT(IN ) :: IOPT_TDRN ! tile drainage (0-> no tile drainage; 1-> simple tile drainage;2->Hooghoudt's)
REAL, INTENT(IN ) :: soiltstep ! soil timestep (s), default:0->same as main model timestep
INTEGER, INTENT(IN ) :: IZ0TLND ! option of Chen adjustment of Czil (not used)
INTEGER, INTENT(IN ) :: sf_urban_physics ! urban physics option
REAL, DIMENSION( ims:ime, nsoil*2, jms:jme ), INTENT(IN ) :: SOILCOMP ! soil sand and clay percentage
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: SOILCL1 ! soil texture in layer 1
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: SOILCL2 ! soil texture in layer 2
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: SOILCL3 ! soil texture in layer 3
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: SOILCL4 ! soil texture in layer 4
REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ) :: T3D ! 3D atmospheric temperature valid at mid-levels [K]
REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ) :: QV3D ! 3D water vapor mixing ratio [kg/kg_dry]
REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ) :: U_PHY ! 3D U wind component [m/s]
REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ) :: V_PHY ! 3D V wind component [m/s]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: SWDOWN ! solar down at surface [W m-2]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: SWDDIF ! solar down at surface [W m-2]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: SWDDIR ! solar down at surface [W m-2]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: GLW ! longwave down at surface [W m-2]
REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ) :: P8W3D ! 3D pressure, valid at interface [Pa]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: PRECIP_IN ! total input precipitation [mm]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: SR ! frozen precipitation ratio [-]
!Optional Detailed Precipitation Partitioning Inputs
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ), OPTIONAL :: MP_RAINC ! convective precipitation entering land model [mm] ! MB/AN : v3.7
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ), OPTIONAL :: MP_RAINNC ! large-scale precipitation entering land model [mm]! MB/AN : v3.7
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ), OPTIONAL :: MP_SHCV ! shallow conv precip entering land model [mm] ! MB/AN : v3.7
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ), OPTIONAL :: MP_SNOW ! snow precipitation entering land model [mm] ! MB/AN : v3.7
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ), OPTIONAL :: MP_GRAUP ! graupel precipitation entering land model [mm] ! MB/AN : v3.7
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ), OPTIONAL :: MP_HAIL ! hail precipitation entering land model [mm] ! MB/AN : v3.7
! Crop Model
INTEGER, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: CROPCAT ! crop catagory
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: PLANTING ! planting date
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: HARVEST ! harvest date
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN ) :: SEASON_GDD! growing season GDD
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: GRAINXY ! mass of grain XING [g/m2]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: GDDXY ! growing degree days XING (based on 10C)
INTEGER, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: PGSXY
! gecros model
REAL, DIMENSION( ims:ime, 60,jms:jme ), INTENT(INOUT) :: gecros_state ! gecros crop
!Tile drain variables
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: QTDRAIN
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: TD_FRACTION
#ifdef WRF_HYDRO
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: sfcheadrt,INFXSRT,soldrain,qtiledrain,ZWATBLE2D ! for WRF-Hydro
#endif
! placeholders for 3D soil
! REAL, DIMENSION( ims:ime, 1:nsoil, jms:jme ), INTENT(IN) :: BEXP_3D ! C-H B exponent
! REAL, DIMENSION( ims:ime, 1:nsoil, jms:jme ), INTENT(IN) :: SMCDRY_3D ! Soil Moisture Limit: Dry
! REAL, DIMENSION( ims:ime, 1:nsoil, jms:jme ), INTENT(IN) :: SMCWLT_3D ! Soil Moisture Limit: Wilt
! REAL, DIMENSION( ims:ime, 1:nsoil, jms:jme ), INTENT(IN) :: SMCREF_3D ! Soil Moisture Limit: Reference
! REAL, DIMENSION( ims:ime, 1:nsoil, jms:jme ), INTENT(IN) :: SMCMAX_3D ! Soil Moisture Limit: Max
! REAL, DIMENSION( ims:ime, 1:nsoil, jms:jme ), INTENT(IN) :: DKSAT_3D ! Saturated Soil Conductivity
! REAL, DIMENSION( ims:ime, 1:nsoil, jms:jme ), INTENT(IN) :: DWSAT_3D ! Saturated Soil Diffusivity
! REAL, DIMENSION( ims:ime, 1:nsoil, jms:jme ), INTENT(IN) :: PSISAT_3D ! Saturated Matric Potential
! REAL, DIMENSION( ims:ime, 1:nsoil, jms:jme ), INTENT(IN) :: QUARTZ_3D ! Soil quartz content
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: REFDK_2D ! Reference Soil Conductivity
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: REFKDT_2D ! Soil Infiltration Parameter
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: BVIC_2D ! VIC model infiltration parameter [-] for opt_run=6
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: AXAJ_2D ! Xinanjiang: Tension water distribution inflection parameter [-] for opt_run=7
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: BXAJ_2D ! Xinanjiang: Tension water distribution shape parameter [-] for opt_run=7
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: XXAJ_2D ! Xinanjiang: Free water distribution shape parameter [-] for opt_run=7
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: BDVIC_2D ! VIC model infiltration parameter [-]
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: GDVIC_2D ! Mean Capillary Drive (m) for infiltration models
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: BBVIC_2D ! DVIC heterogeniety paramater [-]
! placeholders for 2D irrigation parameters
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: IRR_FRAC_2D ! irrigation Fraction
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: IRR_HAR_2D ! number of days before harvest date to stop irrigation
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: IRR_LAI_2D ! Minimum lai to trigger irrigation
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: IRR_MAD_2D ! management allowable deficit (0-1)
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: FILOSS_2D ! fraction of flood irrigation loss (0-1)
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: SPRIR_RATE_2D ! mm/h, sprinkler irrigation rate
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: MICIR_RATE_2D ! mm/h, micro irrigation rate
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: FIRTFAC_2D ! flood application rate factor
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: IR_RAIN_2D ! maximum precipitation to stop irrigation trigger
! placeholders for 2D tile drainage parameters
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: KLAT_FAC ! factor multiplier to hydraulic conductivity
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: TDSMC_FAC ! factor multiplier to field capacity
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: TD_DC ! drainage coefficient for simple
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: TD_DCOEF ! drainge coefficient for Hooghoudt
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: TD_DDRAIN ! depth of drain
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: TD_RADI ! tile radius
! REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: TD_SPAC ! tile spacing
! INOUT (with generic LSM equivalent)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TSK ! surface radiative temperature [K]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: HFX ! sensible heat flux [W m-2]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: QFX ! latent heat flux [kg s-1 m-2]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: LH ! latent heat flux [W m-2]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: GRDFLX ! ground/snow heat flux [W m-2]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: SMSTAV ! soil moisture avail. [not used]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: SMSTOT ! total soil water [mm][not used]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: SFCRUNOFF ! accumulated surface runoff [m]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: UDRUNOFF ! accumulated sub-surface runoff [m]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ALBEDO ! total grid albedo []
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: SNOWC ! snow cover fraction []
REAL, DIMENSION( ims:ime, 1:nsoil, jms:jme ), INTENT(INOUT) :: SMOIS ! volumetric soil moisture [m3/m3]
REAL, DIMENSION( ims:ime, 1:nsoil, jms:jme ), INTENT(INOUT) :: SH2O ! volumetric liquid soil moisture [m3/m3]
REAL, DIMENSION( ims:ime, 1:nsoil, jms:jme ), INTENT(INOUT) :: TSLB ! soil temperature [K]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: SNOW ! snow water equivalent [mm]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: SNOWH ! physical snow depth [m]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: CANWAT ! total canopy water + ice [mm]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACSNOM ! accumulated snow melt (mm)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACSNOW ! accumulated snow on grid
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: EMISS ! surface bulk emissivity
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: QSFC ! bulk surface specific humidity
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: Z0 ! combined z0 sent to coupled model
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ZNT ! combined z0 sent to coupled model
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: RS ! Total stomatal resistance (s/m)
INTEGER, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ISNOWXY ! actual no. of snow layers
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TVXY ! vegetation leaf temperature
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TGXY ! bulk ground surface temperature
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: CANICEXY ! canopy-intercepted ice (mm)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: CANLIQXY ! canopy-intercepted liquid water (mm)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: EAHXY ! canopy air vapor pressure (pa)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TAHXY ! canopy air temperature (k)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: CMXY ! bulk momentum drag coefficient
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: CHXY ! bulk sensible heat exchange coefficient
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: FWETXY ! wetted or snowed fraction of the canopy (-)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: SNEQVOXY ! snow mass at last time step(mm h2o)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ALBOLDXY ! snow albedo at last time step (-)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: QSNOWXY ! snowfall on the ground [mm/s]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: QRAINXY ! rainfall on the ground [mm/s]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: WSLAKEXY ! lake water storage [mm]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ZWTXY ! water table depth [m]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: WAXY ! water in the "aquifer" [mm]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: WTXY ! groundwater storage [mm]
REAL, DIMENSION( ims:ime,-2:0, jms:jme ), INTENT(INOUT) :: TSNOXY ! snow temperature [K]
REAL, DIMENSION( ims:ime,-2:NSOIL, jms:jme ), INTENT(INOUT) :: ZSNSOXY ! snow layer depth [m]
REAL, DIMENSION( ims:ime,-2:0, jms:jme ), INTENT(INOUT) :: SNICEXY ! snow layer ice [mm]
REAL, DIMENSION( ims:ime,-2:0, jms:jme ), INTENT(INOUT) :: SNLIQXY ! snow layer liquid water [mm]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: LFMASSXY ! leaf mass [g/m2]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: RTMASSXY ! mass of fine roots [g/m2]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: STMASSXY ! stem mass [g/m2]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: WOODXY ! mass of wood (incl. woody roots) [g/m2]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: STBLCPXY ! stable carbon in deep soil [g/m2]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: FASTCPXY ! short-lived carbon, shallow soil [g/m2]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: XLAIXY ! leaf area index
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: XSAIXY ! stem area index
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: TAUSSXY ! snow age factor
REAL, DIMENSION( ims:ime, 1:nsoil, jms:jme ), INTENT(INOUT) :: SMOISEQ ! eq volumetric soil moisture [m3/m3]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: SMCWTDXY ! soil moisture content in the layer to the water table when deep
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: DEEPRECHXY ! recharge to the water table when deep
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: RECHXY ! recharge to the water table (diagnostic)
! OUT (with no Noah LSM equivalent)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: T2MVXY ! 2m temperature of vegetation part
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: T2MBXY ! 2m temperature of bare ground part
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: Q2MVXY ! 2m mixing ratio of vegetation part
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: Q2MBXY ! 2m mixing ratio of bare ground part
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: TRADXY ! surface radiative temperature (k)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: NEEXY ! net ecosys exchange (g/m2/s CO2)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: GPPXY ! gross primary assimilation [g/m2/s C]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: NPPXY ! net primary productivity [g/m2/s C]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: FVEGXY ! Noah-MP vegetation fraction [-]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: RUNSFXY ! surface runoff [mm] per soil timestep
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: RUNSBXY ! subsurface runoff [mm] per soil timestep
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: ECANXY ! evaporation of intercepted water (mm/s)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: EDIRXY ! soil surface evaporation rate (mm/s]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: ETRANXY ! transpiration rate (mm/s)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: FSAXY ! total absorbed solar radiation (w/m2)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: FIRAXY ! total net longwave rad (w/m2) [+ to atm]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: APARXY ! photosyn active energy by canopy (w/m2)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: PSNXY ! total photosynthesis (umol co2/m2/s) [+]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: SAVXY ! solar rad absorbed by veg. (w/m2)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: SAGXY ! solar rad absorbed by ground (w/m2)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: RSSUNXY ! sunlit leaf stomatal resistance (s/m)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: RSSHAXY ! shaded leaf stomatal resistance (s/m)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: BGAPXY ! between gap fraction
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: WGAPXY ! within gap fraction
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: TGVXY ! under canopy ground temperature[K]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: TGBXY ! bare ground temperature [K]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: CHVXY ! sensible heat exchange coefficient vegetated
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: CHBXY ! sensible heat exchange coefficient bare-ground
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: SHGXY ! veg ground sen. heat [w/m2] [+ to atm]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: SHCXY ! canopy sen. heat [w/m2] [+ to atm]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: SHBXY ! bare sensible heat [w/m2] [+ to atm]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: EVGXY ! veg ground evap. heat [w/m2] [+ to atm]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: EVBXY ! bare soil evaporation [w/m2] [+ to atm]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: GHVXY ! veg ground heat flux [w/m2] [+ to soil]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: GHBXY ! bare ground heat flux [w/m2] [+ to soil]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: IRGXY ! veg ground net LW rad. [w/m2] [+ to atm]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: IRCXY ! canopy net LW rad. [w/m2] [+ to atm]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: IRBXY ! bare net longwave rad. [w/m2] [+ to atm]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: TRXY ! transpiration [w/m2] [+ to atm]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: EVCXY ! canopy evaporation heat [w/m2] [+ to atm]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: CHLEAFXY ! leaf exchange coefficient
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: CHUCXY ! under canopy exchange coefficient
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: CHV2XY ! veg 2m exchange coefficient
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: CHB2XY ! bare 2m exchange coefficient
! additional output variables
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: PAHXY ! precipitation advected heat
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: PAHGXY ! precipitation advected heat
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: PAHBXY ! precipitation advected heat
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: PAHVXY ! precipitation advected heat
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QINTSXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QINTRXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QDRIPSXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QDRIPRXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QTHROSXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QTHRORXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QSNSUBXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QSNFROXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QSUBCXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QFROCXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QEVACXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QDEWCXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QFRZCXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QMELTCXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QSNBOTXY !total liquid water (snowmelt + rain through pack)out of snowpack bottom [mm/s]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: QMELTXY !snowmelt due to phase change (mm/s)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: PONDINGXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: FPICEXY !fraction of ice in precip
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: RAINLSM !rain rate (mm/s) AJN
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: SNOWLSM !liquid equivalent snow rate (mm/s) AJN
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: FORCTLSM
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: FORCQLSM
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: FORCPLSM
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: FORCZLSM
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: FORCWLSM
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACC_SSOILXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACC_QINSURXY ! m/s * soil_dt/main_dt
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACC_QSEVAXY ! m/s * soil_dt/main_dt
REAL, DIMENSION( ims:ime, 1:NSOIL, jms:jme ), INTENT(INOUT) :: ACC_ETRANIXY ! m/s * soil_dt/main_dt
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: EFLXBXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: SOILENERGY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: SNOWENERGY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(OUT ) :: CANHSXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACC_DWATERXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACC_PRCPXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACC_ECANXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACC_ETRANXY
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: ACC_EDIRXY
INTEGER, INTENT(IN ) :: ids,ide, jds,jde, kds,kde, & ! d -> domain
& ims,ime, jms,jme, kms,kme, & ! m -> memory
& its,ite, jts,jte, kts,kte ! t -> tile
!2D inout irrigation variables
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: IRFRACT ! irrigation fraction
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: SIFRACT ! sprinkler irrigation fraction
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: MIFRACT ! micro irrigation fraction
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: FIFRACT ! flood irrigation fraction
INTEGER, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: IRNUMSI ! irrigation event number, Sprinkler
INTEGER, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: IRNUMMI ! irrigation event number, Micro
INTEGER, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: IRNUMFI ! irrigation event number, Flood
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: IRWATSI ! irrigation water amount [m] to be applied, Sprinkler
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: IRWATMI ! irrigation water amount [m] to be applied, Micro
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: IRWATFI ! irrigation water amount [m] to be applied, Flood
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: IRELOSS ! loss of irrigation water to evaporation,sprinkler [m/timestep]
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: IRSIVOL ! amount of irrigation by sprinkler (mm)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: IRMIVOL ! amount of irrigation by micro (mm)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: IRFIVOL ! amount of irrigation by micro (mm)
REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: IRRSPLH ! latent heating from sprinkler evaporation (w/m2)
CHARACTER(LEN=256), INTENT(IN) :: LLANDUSE ! landuse data name (USGS or MODIS_IGBP)
!ID local irrigation variables
REAL :: IRRFRA ! irrigation fraction
REAL :: SIFAC ! sprinkler irrigation fraction
REAL :: MIFAC ! micro irrigation fraction
REAL :: FIFAC ! flood irrigation fraction
INTEGER :: IRCNTSI ! irrigation event number, Sprinkler
INTEGER :: IRCNTMI ! irrigation event number, Micro
INTEGER :: IRCNTFI ! irrigation event number, Flood
REAL :: IRAMTSI ! irrigation water amount [m] to be applied, Sprinkler
REAL :: IRAMTMI ! irrigation water amount [m] to be applied, Micro
REAL :: IRAMTFI ! irrigation water amount [m] to be applied, Flood
REAL :: IREVPLOS ! loss of irrigation water to evaporation,sprinkler [m/timestep]
REAL :: IRSIRATE ! rate of irrigation by sprinkler [m/timestep]
REAL :: IRMIRATE ! rate of irrigation by micro [m/timestep]
REAL :: IRFIRATE ! rate of irrigation by micro [m/timestep]
REAL :: FIRR ! latent heating due to sprinkler evaporation (w m-2)
REAL :: EIRR ! evaporation due to sprinkler evaporation (mm/s)
! 1D equivalent of 2D/3D fields
! IN only
REAL :: COSZ ! cosine zenith angle
REAL :: LAT ! latitude [rad]
REAL :: Z_ML ! model height [m]
INTEGER :: VEGTYP ! vegetation type
INTEGER, DIMENSION(NSOIL) :: SOILTYP ! soil type
INTEGER :: CROPTYPE ! crop type
REAL :: FVEG ! vegetation fraction [-]
REAL :: FVGMAX ! annual max vegetation fraction []
REAL :: TBOT ! deep soil temperature [K]
REAL :: T_ML ! temperature valid at mid-levels [K]
REAL :: Q_ML ! water vapor mixing ratio [kg/kg_dry]
REAL :: U_ML ! U wind component [m/s]
REAL :: V_ML ! V wind component [m/s]
REAL :: SWDN ! solar down at surface [W m-2]
REAL :: LWDN ! longwave down at surface [W m-2]
REAL :: P_ML ! pressure, valid at interface [Pa]
REAL :: PSFC ! surface pressure [Pa]
REAL :: PRCP ! total precipitation entering [mm/s] ! MB/AN : v3.7
REAL :: PRCPCONV ! convective precipitation entering [mm/s] ! MB/AN : v3.7
REAL :: PRCPNONC ! non-convective precipitation entering [mm/s] ! MB/AN : v3.7
REAL :: PRCPSHCV ! shallow convective precip entering [mm/s] ! MB/AN : v3.7
REAL :: PRCPSNOW ! snow entering land model [mm/s] ! MB/AN : v3.7
REAL :: PRCPGRPL ! graupel entering land model [mm/s] ! MB/AN : v3.7
REAL :: PRCPHAIL ! hail entering land model [mm/s] ! MB/AN : v3.7
REAL :: PRCPOTHR ! other precip, e.g. fog [mm/s] ! MB/AN : v3.7
! INOUT (with generic LSM equivalent)
REAL :: FSH ! total sensible heat (w/m2) [+ to atm]
REAL :: SSOIL ! soil heat heat (w/m2)
REAL :: SALB ! surface albedo (-)
REAL :: FSNO ! snow cover fraction (-)
REAL, DIMENSION( 1:NSOIL) :: SMCEQ ! eq vol. soil moisture (m3/m3)
REAL, DIMENSION( 1:NSOIL) :: SMC ! vol. soil moisture (m3/m3)
REAL, DIMENSION( 1:NSOIL) :: SMH2O ! vol. soil liquid water (m3/m3)
REAL, DIMENSION(-2:NSOIL) :: STC ! snow/soil tmperatures
REAL :: SWE ! snow water equivalent (mm)
REAL :: SNDPTH ! snow depth (m)
REAL :: EMISSI ! net surface emissivity
REAL :: QSFC1D ! bulk surface specific humidity
! INOUT (with no Noah LSM equivalent)
INTEGER :: ISNOW ! actual no. of snow layers
REAL :: TV ! vegetation canopy temperature
REAL :: TG ! ground surface temperature
REAL :: CANICE ! canopy-intercepted ice (mm)
REAL :: CANLIQ ! canopy-intercepted liquid water (mm)
REAL :: EAH ! canopy air vapor pressure (pa)
REAL :: TAH ! canopy air temperature (k)
REAL :: CM ! momentum drag coefficient
REAL :: CH ! sensible heat exchange coefficient
REAL :: FWET ! wetted or snowed fraction of the canopy (-)
REAL :: SNEQVO ! snow mass at last time step(mm h2o)
REAL :: ALBOLD ! snow albedo at last time step (-)
REAL :: QSNOW ! snowfall on the ground [mm/s]
REAL :: QRAIN ! rainfall on the ground [mm/s]
REAL :: WSLAKE ! lake water storage [mm]
REAL :: ZWT ! water table depth [m]
REAL :: WA ! water in the "aquifer" [mm]
REAL :: WT ! groundwater storage [mm]
REAL :: SMCWTD ! soil moisture content in the layer to the water table when deep
REAL :: DEEPRECH ! recharge to the water table when deep
REAL :: RECH ! recharge to the water table (diagnostic)
REAL, DIMENSION(-2:NSOIL) :: ZSNSO ! snow layer depth [m]
REAL, DIMENSION(-2: 0) :: SNICE ! snow layer ice [mm]
REAL, DIMENSION(-2: 0) :: SNLIQ ! snow layer liquid water [mm]
REAL :: LFMASS ! leaf mass [g/m2]
REAL :: RTMASS ! mass of fine roots [g/m2]
REAL :: STMASS ! stem mass [g/m2]
REAL :: WOOD ! mass of wood (incl. woody roots) [g/m2]
REAL :: GRAIN ! mass of grain XING [g/m2]
REAL :: GDD ! mass of grain XING[g/m2]
INTEGER :: PGS !stem respiration [g/m2/s]
REAL :: STBLCP ! stable carbon in deep soil [g/m2]
REAL :: FASTCP ! short-lived carbon, shallow soil [g/m2]
REAL :: PLAI ! leaf area index
REAL :: PSAI ! stem area index
REAL :: TAUSS ! non-dimensional snow age
! tile drainage
REAL :: QTLDRN ! tile drainage (mm)
REAL :: TDFRACMP ! tile drainage map
#ifdef WRF_HYDRO
REAL :: WATBLED ! water table depth for tile drainage
#endif
! OUT (with no Noah LSM equivalent)
REAL :: Z0WRF ! combined z0 sent to coupled model
REAL :: T2MV ! 2m temperature of vegetation part
REAL :: T2MB ! 2m temperature of bare ground part
REAL :: Q2MV ! 2m mixing ratio of vegetation part
REAL :: Q2MB ! 2m mixing ratio of bare ground part
REAL :: TRAD ! surface radiative temperature (k)
REAL :: NEE ! net ecosys exchange (g/m2/s CO2)
REAL :: GPP ! gross primary assimilation [g/m2/s C]
REAL :: NPP ! net primary productivity [g/m2/s C]
REAL :: FVEGMP ! greenness vegetation fraction [-]
REAL :: RUNSF ! surface runoff [mm] per soil timestep
REAL :: RUNSB ! subsurface runoff [mm] per soil timestep
REAL :: ECAN ! evaporation of intercepted water (mm/s)
REAL :: ETRAN ! transpiration rate (mm/s)
REAL :: ESOIL ! soil surface evaporation rate (mm/s]
REAL :: FSA ! total absorbed solar radiation (w/m2)
REAL :: FIRA ! total net longwave rad (w/m2) [+ to atm]
REAL :: APAR ! photosyn active energy by canopy (w/m2)
REAL :: PSN ! total photosynthesis (umol co2/m2/s) [+]
REAL :: SAV ! solar rad absorbed by veg. (w/m2)
REAL :: SAG ! solar rad absorbed by ground (w/m2)
REAL :: RSSUN ! sunlit leaf stomatal resistance (s/m)
REAL :: RSSHA ! shaded leaf stomatal resistance (s/m)
REAL, DIMENSION(1:2) :: ALBSND ! snow albedo (direct)
REAL, DIMENSION(1:2) :: ALBSNI ! snow albedo (diffuse)
REAL :: RB ! leaf boundary layer resistance (s/m)
REAL :: LAISUN ! sunlit leaf area index (m2/m2)
REAL :: LAISHA ! shaded leaf area index (m2/m2)
REAL :: BGAP ! between gap fraction
REAL :: WGAP ! within gap fraction
REAL :: TGV ! under canopy ground temperature[K]
REAL :: TGB ! bare ground temperature [K]
REAL :: CHV ! sensible heat exchange coefficient vegetated
REAL :: CHB ! sensible heat exchange coefficient bare-ground
REAL :: IRC ! canopy net LW rad. [w/m2] [+ to atm]
REAL :: IRG ! veg ground net LW rad. [w/m2] [+ to atm]
REAL :: SHC ! canopy sen. heat [w/m2] [+ to atm]
REAL :: SHG ! veg ground sen. heat [w/m2] [+ to atm]
REAL :: EVG ! veg ground evap. heat [w/m2] [+ to atm]
REAL :: GHV ! veg ground heat flux [w/m2] [+ to soil]
REAL :: IRB ! bare net longwave rad. [w/m2] [+ to atm]
REAL :: SHB ! bare sensible heat [w/m2] [+ to atm]
REAL :: EVB ! bare evaporation heat [w/m2] [+ to atm]
REAL :: GHB ! bare ground heat flux [w/m2] [+ to soil]
REAL :: TR ! transpiration [w/m2] [+ to atm]
REAL :: EVC ! canopy evaporation heat [w/m2] [+ to atm]
REAL :: CHLEAF ! leaf exchange coefficient
REAL :: CHUC ! under canopy exchange coefficient
REAL :: CHV2 ! veg 2m exchange coefficient
REAL :: CHB2 ! bare 2m exchange coefficient
REAL :: QINTS
REAL :: QINTR
REAL :: QDRIPS
REAL :: QDRIPR
REAL :: QTHROS
REAL :: QTHROR
REAL :: QSNSUB
REAL :: QSNFRO
REAL :: QEVAC
REAL :: QDEWC
REAL :: QSUBC
REAL :: QFROC
REAL :: QFRZC
REAL :: QMELTC
REAL :: PAHV !precipitation advected heat - vegetation net (W/m2)
REAL :: PAHG !precipitation advected heat - under canopy net (W/m2)
REAL :: PAHB !precipitation advected heat - bare ground net (W/m2)
REAL :: PAH !precipitation advected heat - total (W/m2)
REAL :: RAININ !rain rate (mm/s)
REAL :: SNOWIN !liquid equivalent snow rate (mm/s)
REAL :: ACC_SSOIL
REAL :: ACC_QINSUR !m/s * soil_dt/main_dt
REAL :: ACC_QSEVA !m/s * soil_dt/main_dt
REAL, DIMENSION( 1:NSOIL) :: ACC_ETRANI !transpiration rate (m/s * soil_dt/main_dt) [+]
REAL :: EFLXB
REAL :: XMF
REAL, DIMENSION( -2:NSOIL ) :: HCPCT
REAL :: DZSNSO
REAL :: CANHS ! canopy heat storage change (w/m2)
REAL :: ACC_DWATER
REAL :: ACC_PRCP
REAL :: ACC_ECAN
REAL :: ACC_ETRAN
REAL :: ACC_EDIR
! Intermediate terms
REAL :: FPICE ! snow fraction of precip
REAL :: FCEV ! canopy evaporation heat (w/m2) [+ to atm]
REAL :: FGEV ! ground evaporation heat (w/m2) [+ to atm]
REAL :: FCTR ! transpiration heat flux (w/m2) [+ to atm]
REAL :: QSNBOT ! total liquid water (snowmelt + rain through pack)out of snowpack bottom [mm/s]
REAL :: QMELT ! snowmelt due to phase change (mm/s)
REAL :: PONDING ! snowmelt with no pack [mm]
REAL :: PONDING1 ! snowmelt with no pack [mm]
REAL :: PONDING2 ! snowmelt with no pack [mm]
! Local terms
REAL, DIMENSION(1:60) :: gecros1d ! gecros crop
REAL :: gecros_dd ,gecros_tbem,gecros_emb ,gecros_ema, &
gecros_ds1,gecros_ds2 ,gecros_ds1x,gecros_ds2x
REAL :: FSR ! total reflected solar radiation (w/m2)
REAL, DIMENSION(-2:0) :: FICEOLD ! snow layer ice fraction []
REAL :: CO2PP ! CO2 partial pressure [Pa]
REAL :: O2PP ! O2 partial pressure [Pa]
REAL, DIMENSION(1:NSOIL) :: ZSOIL ! depth to soil interfaces [m]
REAL :: FOLN ! nitrogen saturation [%]
REAL :: QC ! cloud specific humidity for MYJ [not used]
REAL :: PBLH ! PBL height for MYJ [not used]
REAL :: DZ8W1D ! model level heights for MYJ [not used]
INTEGER :: I
INTEGER :: J
INTEGER :: K
INTEGER :: ICE
INTEGER :: SLOPETYP
LOGICAL :: IPRINT
INTEGER :: SOILCOLOR ! soil color index
INTEGER :: IST ! surface type 1-soil; 2-lake
INTEGER :: YEARLEN
REAL :: SOLAR_TIME
INTEGER :: JMONTH, JDAY
INTEGER, PARAMETER :: NSNOW = 3 ! number of snow layers fixed to 3
REAL, PARAMETER :: undefined_value = -1.E36
REAL, DIMENSION( 1:nsoil ) :: SAND
REAL, DIMENSION( 1:nsoil ) :: CLAY
REAL, DIMENSION( 1:nsoil ) :: ORGM
type(noahmp_parameters) :: parameters
! ----------------------------------------------------------------------
CALL NOAHMP_OPTIONS(IDVEG ,IOPT_CRS ,IOPT_BTR ,IOPT_RUN ,IOPT_SFC ,IOPT_FRZ , &
IOPT_INF ,IOPT_RAD ,IOPT_ALB ,IOPT_SNF ,IOPT_TBOT, IOPT_STC , &
IOPT_RSF ,IOPT_SOIL ,IOPT_PEDO ,IOPT_CROP ,IOPT_IRR , IOPT_IRRM , &
IOPT_INFDV,IOPT_TDRN )
IPRINT = .false. ! debug printout
! for using soil update timestep difference from noahmp main timestep
calculate_soil = .false.
soil_update_steps = nint(soiltstep/DT) ! 3600 = 1 hour
soil_update_steps = max(soil_update_steps,1)
if ( soil_update_steps == 1 ) then
ACC_SSOILXY = 0.0
ACC_QINSURXY = 0.0
ACC_QSEVAXY = 0.0
ACC_ETRANIXY = 0.0
ACC_DWATERXY = 0.0
ACC_PRCPXY = 0.0
ACC_ECANXY = 0.0
ACC_ETRANXY = 0.0
ACC_EDIRXY = 0.0
end if
if ( soil_update_steps > 1 ) then
if ( mod(itimestep,soil_update_steps) == 1 ) then
ACC_SSOILXY = 0.0
ACC_QINSURXY = 0.0
ACC_QSEVAXY = 0.0
ACC_ETRANIXY = 0.0
ACC_DWATERXY = 0.0
ACC_PRCPXY = 0.0
ACC_ECANXY = 0.0
ACC_ETRANXY = 0.0
ACC_EDIRXY = 0.0
end if
end if
if (mod(itimestep,soil_update_steps) == 0) calculate_soil = .true.
! end soil timestep
YEARLEN = 365 ! find length of year for phenology (also S Hemisphere)
if (mod(YR,4) == 0) then
YEARLEN = 366
if (mod(YR,100) == 0) then
YEARLEN = 365
if (mod(YR,400) == 0) then
YEARLEN = 366
endif
endif
endif
ZSOIL(1) = -DZS(1) ! depth to soil interfaces (<0) [m]
DO K = 2, NSOIL
ZSOIL(K) = -DZS(K) + ZSOIL(K-1)
END DO
JLOOP : DO J=jts,jte
IF(ITIMESTEP == 1)THEN
DO I=its,ite
IF((XLAND(I,J)-1.5) >= 0.) THEN ! Open water case
IF(XICE(I,J) == 1. .AND. IPRINT) PRINT *,' sea-ice at water point, I=',I,'J=',J
SMSTAV(I,J) = 1.0
SMSTOT(I,J) = 1.0
DO K = 1, NSOIL
SMOIS(I,K,J) = 1.0
TSLB(I,K,J) = 273.16
ENDDO
ELSE
IF(XICE(I,J) == 1.) THEN ! Sea-ice case
SMSTAV(I,J) = 1.0
SMSTOT(I,J) = 1.0
DO K = 1, NSOIL
SMOIS(I,K,J) = 1.0
ENDDO
ENDIF
ENDIF
ENDDO
ENDIF ! end of initialization over ocean
!-----------------------------------------------------------------------
ILOOP : DO I = its, ite
IF (XICE(I,J) >= XICE_THRES) THEN
ICE = 1 ! Sea-ice point
SH2O (i,1:NSOIL,j) = 1.0
XLAIXY(i,j) = 0.01
CYCLE ILOOP ! Skip any processing at sea-ice points
ELSE
IF((XLAND(I,J)-1.5) >= 0.) CYCLE ILOOP ! Open water case
! 2D to 1D
! IN only
COSZ = COSZIN (I,J) ! cos zenith angle []
LAT = XLAT (I,J) ! latitude [rad]
Z_ML = 0.5*DZ8W(I,1,J) ! DZ8W: thickness of full levels; ZLVL forcing height [m]
VEGTYP = IVGTYP(I,J) ! vegetation type
if(iopt_soil == 1) then
SOILTYP= ISLTYP(I,J) ! soil type same in all layers
elseif(iopt_soil == 2) then
SOILTYP(1) = nint(SOILCL1(I,J)) ! soil type in layer1
SOILTYP(2) = nint(SOILCL2(I,J)) ! soil type in layer2
SOILTYP(3) = nint(SOILCL3(I,J)) ! soil type in layer3
SOILTYP(4) = nint(SOILCL4(I,J)) ! soil type in layer4
elseif(iopt_soil == 3) then
SOILTYP= ISLTYP(I,J) ! to initialize with default
end if
FVEG = VEGFRA(I,J)/100. ! vegetation fraction [0-1]
FVGMAX = VEGMAX (I,J)/100. ! Vegetation fraction annual max [0-1]
TBOT = TMN(I,J) ! Fixed deep soil temperature for land
T_ML = T3D(I,1,J) ! temperature defined at intermediate level [K]
Q_ML = QV3D(I,1,J)/(1.0+QV3D(I,1,J)) ! convert from mixing ratio to specific humidity [kg/kg]
U_ML = U_PHY(I,1,J) ! u-wind at interface [m/s]
V_ML = V_PHY(I,1,J) ! v-wind at interface [m/s]
SWDN = SWDOWN(I,J) ! shortwave down from SW scheme [W/m2]
LWDN = GLW(I,J) ! total longwave down from LW scheme [W/m2]
P_ML =(P8W3D(I,KTS+1,J)+P8W3D(I,KTS,J))*0.5 ! surface pressure defined at intermediate level [Pa]
! consistent with temperature, mixing ratio
PSFC = P8W3D(I,1,J) ! surface pressure defined a full levels [Pa]
PRCP = PRECIP_IN (I,J) / DT ! timestep total precip rate (glacier) [mm/s]! MB: v3.7
CROPTYPE = 0
IF (IOPT_CROP > 0 .AND. VEGTYP == ISCROP_TABLE) CROPTYPE = DEFAULT_CROP_TABLE ! default croptype is generic dynamic vegetation crop
IF (IOPT_CROP > 0 .AND. CROPCAT(I,J) > 0) THEN
CROPTYPE = CROPCAT(I,J) ! crop type
VEGTYP = ISCROP_TABLE
FVGMAX = 0.95
FVEG = 0.95
END IF
IF (PRESENT(MP_RAINC) .AND. PRESENT(MP_RAINNC) .AND. PRESENT(MP_SHCV) .AND. &
PRESENT(MP_SNOW) .AND. PRESENT(MP_GRAUP) .AND. PRESENT(MP_HAIL) ) THEN
PRCPCONV = MP_RAINC (I,J)/DT ! timestep convective precip rate [mm/s] ! MB: v3.7
PRCPNONC = MP_RAINNC(I,J)/DT ! timestep non-convective precip rate [mm/s] ! MB: v3.7
PRCPSHCV = MP_SHCV(I,J) /DT ! timestep shallow conv precip rate [mm/s] ! MB: v3.7
PRCPSNOW = MP_SNOW(I,J) /DT ! timestep snow precip rate [mm/s] ! MB: v3.7
PRCPGRPL = MP_GRAUP(I,J) /DT ! timestep graupel precip rate [mm/s] ! MB: v3.7
PRCPHAIL = MP_HAIL(I,J) /DT ! timestep hail precip rate [mm/s] ! MB: v3.7
PRCPOTHR = PRCP - PRCPCONV - PRCPNONC - PRCPSHCV ! take care of other (fog) contained in rainbl
PRCPOTHR = MAX(0.0,PRCPOTHR)
PRCPNONC = PRCPNONC + PRCPOTHR
PRCPSNOW = PRCPSNOW + SR(I,J) * PRCPOTHR
ELSE
PRCPCONV = 0.
PRCPNONC = PRCP
PRCPSHCV = 0.
PRCPSNOW = SR(I,J) * PRCP
PRCPGRPL = 0.
PRCPHAIL = 0.
ENDIF
! IN/OUT fields
ISNOW = ISNOWXY (I,J) ! snow layers []
SMC ( 1:NSOIL) = SMOIS (I, 1:NSOIL,J) ! soil total moisture [m3/m3]
SMH2O( 1:NSOIL) = SH2O (I, 1:NSOIL,J) ! soil liquid moisture [m3/m3]
STC (-NSNOW+1: 0) = TSNOXY (I,-NSNOW+1: 0,J) ! snow temperatures [K]
STC ( 1:NSOIL) = TSLB (I, 1:NSOIL,J) ! soil temperatures [K]
SWE = SNOW (I,J) ! snow water equivalent [mm]
SNDPTH = SNOWH (I,J) ! snow depth [m]
QSFC1D = QSFC (I,J)
! INOUT (with no Noah LSM equivalent)
TV = TVXY (I,J) ! leaf temperature [K]
TG = TGXY (I,J) ! ground temperature [K]
CANLIQ = CANLIQXY(I,J) ! canopy liquid water [mm]
CANICE = CANICEXY(I,J) ! canopy frozen water [mm]
EAH = EAHXY (I,J) ! canopy vapor pressure [Pa]
TAH = TAHXY (I,J) ! canopy temperature [K]
CM = CMXY (I,J) ! avg. momentum exchange (MP only) [m/s]
CH = CHXY (I,J) ! avg. heat exchange (MP only) [m/s]
FWET = FWETXY (I,J) ! canopy fraction wet or snow
SNEQVO = SNEQVOXY(I,J) ! SWE previous timestep
ALBOLD = ALBOLDXY(I,J) ! albedo previous timestep, for snow aging
QSNOW = QSNOWXY (I,J) ! snow falling on ground
QRAIN = QRAINXY (I,J) ! rain falling on ground
WSLAKE = WSLAKEXY(I,J) ! lake water storage (can be neg.) (mm)
ZWT = ZWTXY (I,J) ! depth to water table [m]
WA = WAXY (I,J) ! water storage in aquifer [mm]
WT = WTXY (I,J) ! water in aquifer&saturated soil [mm]
ZSNSO(-NSNOW+1:NSOIL) = ZSNSOXY (I,-NSNOW+1:NSOIL,J) ! depth to layer interface
SNICE(-NSNOW+1: 0) = SNICEXY (I,-NSNOW+1: 0,J) ! snow layer ice content
SNLIQ(-NSNOW+1: 0) = SNLIQXY (I,-NSNOW+1: 0,J) ! snow layer water content
LFMASS = LFMASSXY(I,J) ! leaf mass
RTMASS = RTMASSXY(I,J) ! root mass
STMASS = STMASSXY(I,J) ! stem mass
WOOD = WOODXY (I,J) ! mass of wood (incl. woody roots) [g/m2]
STBLCP = STBLCPXY(I,J) ! stable carbon pool
FASTCP = FASTCPXY(I,J) ! fast carbon pool
PLAI = XLAIXY (I,J) ! leaf area index [-] (no snow effects)
PSAI = XSAIXY (I,J) ! stem area index [-] (no snow effects)
TAUSS = TAUSSXY (I,J) ! non-dimensional snow age
SMCEQ( 1:NSOIL) = SMOISEQ (I, 1:NSOIL,J)
SMCWTD = SMCWTDXY(I,J)
RECH = 0.
DEEPRECH = 0.
ACC_SSOIL = ACC_SSOILXY (I,J) ! surface heat flux
ACC_QSEVA = ACC_QSEVAXY (I,J)
ACC_QINSUR = ACC_QINSURXY(I,J)
ACC_ETRANI = ACC_ETRANIXY(I,:,J)
ACC_DWATER = ACC_DWATERXY(I,J)
ACC_PRCP = ACC_PRCPXY (I,J)
ACC_ECAN = ACC_ECANXY (I,J)
ACC_ETRAN = ACC_ETRANXY (I,J)
ACC_EDIR = ACC_EDIRXY (I,J)
! tile drainage
QTLDRN = 0. ! tile drainage (mm)
TDFRACMP = TD_FRACTION(I,J) ! tile drainage map
#ifdef WRF_HYDRO
WATBLED = ZWATBLE2D (I,J) ! water table depth for tile drainage
#endif
! irrigation vars
IRRFRA = IRFRACT(I,J) ! irrigation fraction
SIFAC = SIFRACT(I,J) ! sprinkler irrigation fraction
MIFAC = MIFRACT(I,J) ! micro irrigation fraction
FIFAC = FIFRACT(I,J) ! flood irrigation fraction
IRCNTSI = IRNUMSI(I,J) ! irrigation event number, Sprinkler
IRCNTMI = IRNUMMI(I,J) ! irrigation event number, Micro
IRCNTFI = IRNUMFI(I,J) ! irrigation event number, Flood
IRAMTSI = IRWATSI(I,J) ! irrigation water amount [m] to be applied, Sprinkler
IRAMTMI = IRWATMI(I,J) ! irrigation water amount [m] to be applied, Micro
IRAMTFI = IRWATFI(I,J) ! irrigation water amount [m] to be applied, Flood
IREVPLOS = 0.0 ! loss of irrigation water to evaporation,sprinkler [m/timestep]
IRSIRATE = 0.0 ! rate of irrigation by sprinkler (mm)
IRMIRATE = 0.0 ! rate of irrigation by micro (mm)
IRFIRATE = 0.0 ! rate of irrigation by micro (mm)
FIRR = 0.0 ! latent heating due to sprinkler evaporation (W m-2)
EIRR = 0.0 ! evaporation from sprinkler (mm/s)
if(iopt_crop == 2) then ! gecros crop model
gecros1d(1:60) = gecros_state(I,1:60,J) ! Gecros variables 2D -> local
if(croptype == 1) then
gecros_dd = 2.5
gecros_tbem = 2.0
gecros_emb = 10.2
gecros_ema = 40.0
gecros_ds1 = 2.1 !BBCH 92
gecros_ds2 = 2.0 !BBCH 90
gecros_ds1x = 0.0
gecros_ds2x = 10.0
end if
if(croptype == 2) then
gecros_dd = 5.0
gecros_tbem = 8.0
gecros_emb = 15.0
gecros_ema = 6.0
gecros_ds1 = 1.78 !BBCH 85
gecros_ds2 = 1.63 !BBCH 80
gecros_ds1x = 0.0
gecros_ds2x = 14.0
end if
end if
SLOPETYP = 1 ! set underground runoff slope term
IST = 1 ! MP surface type: 1 = land; 2 = lake
SOILCOLOR = 4 ! soil color: assuming a middle color category ?????????
IF(any(SOILTYP == 14) .AND. XICE(I,J) == 0.) THEN
IF(IPRINT) PRINT *, ' SOIL TYPE FOUND TO BE WATER AT A LAND-POINT'
IF(IPRINT) PRINT *, i,j,'RESET SOIL in surfce.F'
SOILTYP = 7
ENDIF
IF( IVGTYP(I,J) == ISURBAN_TABLE .or. IVGTYP(I,J) == LCZ_1_TABLE .or. IVGTYP(I,J) == LCZ_2_TABLE .or. &
IVGTYP(I,J) == LCZ_3_TABLE .or. IVGTYP(I,J) == LCZ_4_TABLE .or. IVGTYP(I,J) == LCZ_5_TABLE .or. &
IVGTYP(I,J) == LCZ_6_TABLE .or. IVGTYP(I,J) == LCZ_7_TABLE .or. IVGTYP(I,J) == LCZ_8_TABLE .or. &
IVGTYP(I,J) == LCZ_9_TABLE .or. IVGTYP(I,J) == LCZ_10_TABLE .or. IVGTYP(I,J) == LCZ_11_TABLE ) THEN
IF(SF_URBAN_PHYSICS == 0 ) THEN
VEGTYP = ISURBAN_TABLE
ELSE
VEGTYP = NATURAL_TABLE ! set urban vegetation type based on table natural
FVGMAX = 0.96
ENDIF
ENDIF
! placeholders for 3D soil
! parameters%bexp = BEXP_3D (I,1:NSOIL,J) ! C-H B exponent
! parameters%smcdry = SMCDRY_3D(I,1:NSOIL,J) ! Soil Moisture Limit: Dry
! parameters%smcwlt = SMCWLT_3D(I,1:NSOIL,J) ! Soil Moisture Limit: Wilt
! parameters%smcref = SMCREF_3D(I,1:NSOIL,J) ! Soil Moisture Limit: Reference
! parameters%smcmax = SMCMAX_3D(I,1:NSOIL,J) ! Soil Moisture Limit: Max
! parameters%dksat = DKSAT_3D (I,1:NSOIL,J) ! Saturated Soil Conductivity
! parameters%dwsat = DWSAT_3D (I,1:NSOIL,J) ! Saturated Soil Diffusivity
! parameters%psisat = PSISAT_3D(I,1:NSOIL,J) ! Saturated Matric Potential
! parameters%quartz = QUARTZ_3D(I,1:NSOIL,J) ! Soil quartz content
! parameters%refdk = REFDK_2D (I,J) ! Reference Soil Conductivity
! parameters%refkdt = REFKDT_2D(I,J) ! Soil Infiltration Parameter
! placeholders for 2D additional runoff parameters
! parameters%BVIC = BVIC_2D(I,J) ! VIC model infiltration parameter [-]
! parameters%axaj = AXAJ_2D(I,J) ! Xinanjiang: Tension water distribution inflection parameter [-]
! parameters%bxaj = BXAJ_2D(I,J) ! Xinanjiang: Tension water distribution shape parameter [-]
! parameters%xxaj = XXAJ_2D(I,J) ! Xinanjiang: Free water distribution shape parameter [-]
! parameters%BDVIC = BDVIC_2D(I,J) ! VIC model infiltration parameter [-]
! parameters%GDVIC = GDVIC_2D(I,J) ! Mean Capillary Drive for infiltration models [m]
! parameters%BBVIC = BBVIC_2D(I,J) ! DVIC heterogeniety parameter for infiltraton [-]
! placeholders for 2D irrigation params
! parameters%IRR_FRAC = IRR_FRAC_2D(I,J) ! irrigation Fraction
! parameters%IRR_HAR = IRR_HAR_2D(I,J) ! number of days before harvest date to stop irrigation
! parameters%IRR_LAI = IRR_LAI_2D(I,J) ! Minimum lai to trigger irrigation
! parameters%IRR_MAD = IRR_MAD_2D(I,J) ! management allowable deficit (0-1)
! parameters%FILOSS = FILOSS_2D(I,J) ! fraction of flood irrigation loss (0-1)
! parameters%SPRIR_RATE = SPRIR_RATE_2D(I,J) ! mm/h, sprinkler irrigation rate
! parameters%MICIR_RATE = MICIR_RATE_2D(I,J) ! mm/h, micro irrigation rate
! parameters%FIRTFAC = FIRTFAC_2D(I,J) ! flood application rate factor
! parameters%IR_RAIN = IR_RAIN_2D(I,J) ! maximum precipitation to stop irrigation trigger
! placeholders for 2D tile drainage parameters
! parameters%klat_fac = KLAT_FAC (I,J) ! factor multiplier to hydraulic conductivity
! parameters%tdsmc_fac = TDSMC_FAC(I,J) ! factor multiplier to field capacity
! parameters%td_dc = TD_DC (I,J) ! drainage coefficient for simple
! parameters%td_dcoef = TD_DCOEF (I,J) ! drainge coefficient for Hooghoudt
! parameters%td_ddrain = TD_DDRAIN(I,J) ! depth of drain
! parameters%td_radi = TD_RADI (I,J) ! tile radius
! parameters%td_spac = TD_SPAC (I,J) ! tile spacing
CALL TRANSFER_MP_PARAMETERS(NSOIL,VEGTYP,SOILTYP,SLOPETYP,SOILCOLOR,CROPTYPE,parameters)
if(iopt_soil == 3 .and. .not. parameters%urban_flag) then
sand = 0.01 * soilcomp(i,1:nsoil,j)
clay = 0.01 * soilcomp(i,(nsoil+1):(nsoil*2),j)
orgm = 0.0
if(opt_pedo == 1) call pedotransfer_sr2006(nsoil,sand,clay,orgm,parameters)
end if
GRAIN = GRAINXY (I,J) ! mass of grain XING [g/m2]
GDD = GDDXY (I,J) ! growing degree days XING
PGS = PGSXY (I,J) ! growing degree days XING
if(iopt_crop == 1 .and. croptype > 0) then
parameters%PLTDAY = PLANTING(I,J)
parameters%HSDAY = HARVEST (I,J)
parameters%GDDS1 = SEASON_GDD(I,J) / 1770.0 * parameters%GDDS1
parameters%GDDS2 = SEASON_GDD(I,J) / 1770.0 * parameters%GDDS2
parameters%GDDS3 = SEASON_GDD(I,J) / 1770.0 * parameters%GDDS3
parameters%GDDS4 = SEASON_GDD(I,J) / 1770.0 * parameters%GDDS4
parameters%GDDS5 = SEASON_GDD(I,J) / 1770.0 * parameters%GDDS5
end if