Newer
Older
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
!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
!SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!SFX_LIC for details. version 1.
! #########
SUBROUTINE ISBA_MEB(TPTIME, OMEB, OMEB_LITTER, OMEB_GNDRES, PGNDLITTER, &
OFORC_MEASURE, OGLACIER, &
OTR_ML, OAGRI_TO_GRASS, OSHADE, OSTRESSDEF, &
OSNOWDRIFT, OSNOWDRIFT_SUBLIM, OSNOW_ABS_ZENITH, OIRRIGATE, OIRRIDAY, &
HSNOWMETAMO, HSNOWRAD, HPHOTO, &
HISBA, HCPSURF, HRAIN, HSNOW_ISBA, HSNOWRES, HIMPLICIT_WIND, &
KWG_LAYER, PTSTEP, PVEGTYPE, PLAT, PLON, &
PTHRESHOLD, PWATSUP, PIRRIG, PIRRIG_FLUX, &
PSOILHCAPZ, PSOILCONDZ, PFROZEN1, &
PPS, PZENITH, PSCA_SW, PSW_RAD, PVMOD, PRR, PSR, PRHOA, PTA, PQA, &
PH_VEG, PDIRCOSZW, &
PEXNS, PEXNA, PPET_A_COEF, PPET_B_COEF, PPEQ_A_COEF, PPEQ_B_COEF, &
PPEW_A_COEF, PPEW_B_COEF, &
PZREF, PUREF, PCH, PCD, PCDN, PRI, PRESA, PHUG, PHV, PHU, PQS, &
PZ0G_WITHOUT_SNOW, &
PZ0_MEBV, PZ0H_MEBV, PZ0EFF_MEBV, &
PZ0_MEBN, PZ0H_MEBN, PZ0EFF_MEBN, &
PZ0_WITH_SNOW, PZ0H_WITH_SNOW, PZ0EFF, &
PTV, PTL, PTG, PTC, PQC, PWR, PWRL, PWRLI, PWRVN, PWG, PWGI, &
PWRMAX_CF, PRGL, PRSMIN, PGAMMA, PRS, &
PALBNIR_TVEG, PALBVIS_TVEG,PALBNIR_TSOIL, PALBVIS_TSOIL, PFALB, &
PSNOWALB, PSNOWALBVIS, PSNOWALBNIR, PSNOWALBFIR, &
PABC, PFAPARC, PFAPIRC, PMUS, PLAI_EFFC, &
PIACAN, PFAPAR, PFAPIR, PFAPAR_BS, PFAPIR_BS, &
PAH, PBH, PF2I, PDMAX, PPOI, PCSP, PFZERO, PEPSO, &
PGAMM, PQDGAMM, PGMES, PGC, PQDGMES, PT1GMES, PT2GMES, &
PAMAX, PQDAMAX, PT1AMAX, PT2AMAX, &
PAN, PANDAY, PANFM, PGPP, PANF, PRESP_BIOMASS_INST, &
PFF, PPSN, PPALPHAN, PLAI, PF2, &
PWSAT, PWFC, &
PSNOWGRAN1, PSNOWGRAN2, PSNOWHIST,PSNOWAGE, &
PSNOWRHO, PSNOWSWE, PSNOWHEAT, PSNOWTEMP, PSNOWDZ, PSNOWLIQ, PFEMIS, &
PSWNET_N, PSWNET_V, PSWNET_G, PSWNET_NS, PALBT, PSWDOWN_GN, &
PLW_RAD, PLWNET_N, PLWNET_V, PLWNET_G, PLWDOWN_GN, &
PLEV_V_C, PLES_V_C, PH_V_C, PH_G_C, PLETR_V_C, PLER_V_C, PH_C_A, &
PH_N_C, PLE_V_C, PLE_G_C, PLE_C_A, PLE_N_C, PEVAP_N_C, PEVAP_G_C, &
PSR_GN, PMELTCV, PFRZCV, PMELTADV, &
PLE_FLOOD, PLEI_FLOOD, &
PLE, PH, PRN, PLEI, PLEGI, PLEG,PLELITTERI,PLELITTER,PDRIPLIT,PRRLIT, &
PLEV, PLER, PLETR, PEVAP, PLES, PLESL, &
PSUBL, PRESTORE, PGRNDFLUX, PFLSN_COR, PUSTAR, &
PHPSNOW, PSNOWHMASS, PRNSNOW, PHSNOW, PGFLUXSNOW, &
PUSTARSNOW, PSRSFC, PRRSFC, PEMISNOW, PCDSNOW, PCHSNOW, &
PEMIST, PTS_RAD, PHU_AGG, PAC_AGG, &
PDELHEATV_SFC, PDELHEATG_SFC, PDELHEATG, &
PDELHEATN, PDELHEATN_SFC, PRESTOREN, &
PD_G, PDZG, PCPS, PLVTT, PLSTT, PCT, PCV, PCG, PFFROZEN, &
PTDEEP_A, PTDEEP_B, PDEEP_FLUX, PMUF, PDRIP, PRRVEG, &
PRISNOW, PSNOW_THRUFAL, PSNOW_THRUFAL_SOIL, PEVAPCOR, PSUBVCOR,PLITCOR,&
PSNOWSFCH, PSNDRIFT, PQSNOW )
! ##########################################################################
!
!
!!**** *isba_meb*
!!
!! PURPOSE
!! -------
! Monitor for the calculation of the surface fluxes and of the
! prognostic variables of the surface over natural areas
! with an explicit vegetation layer
!
! NOTE...currently MEB can be coupled with
! HISBA='DIF' or '3-L' soil options
! HSNOW='3-L' snow scheme
! Soon, HSNOW=CRO and HPHOTO/=NON (i.e. Ags will be added)
!
!!** METHOD
!! ------
!
!! EXTERNAL
!! --------
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!!
!!
!! REFERENCE
!! ---------
!!
!! Noilhan and Planton (1989)
!!
!! AUTHOR
!! ------
!! A. Boone * Meteo-France *
!! P. Samuelsson * SMHI *
!!
!! MODIFICATIONS
!! -------------
!! Original 10/2014
!! (A. Napoly) 09/2015 Add Litter layer option code
!!
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
USE MODD_SURF_PAR, ONLY : XUNDEF
USE MODD_CSTS, ONLY : XCPD, XDAY, XRHOLW
USE MODD_MEB_PAR, ONLY : XSW_WGHT_VIS, XSW_WGHT_NIR
USE MODD_ISBA_PAR, ONLY : XRS_MAX
USE MODD_DATA_COVER_PAR, ONLY : NVT_SNOW
!
USE MODD_TYPE_DATE_SURF, ONLY : DATE_TIME
!
USE MODE_THERMOS
USE MODE_MEB, ONLY : SNOW_INTERCEPT_EFF
!
USE MODI_WET_LEAVES_FRAC
USE MODI_VEG
USE MODI_SNOW_LEAVES_FRAC_MEB
USE MODI_PREPS_FOR_MEB_EBUD_RAD
USE MODI_ISBA_LWNET_MEB
USE MODI_DRAG_MEB
USE MODI_E_BUDGET_MEB
USE MODI_ISBA_FLUXES_MEB
USE MODI_SNOW_LOAD_MEB
USE MODI_HYDRO_VEG
USE MODI_SNOW3L_ISBA
USE MODI_RADIATIVE_TRANSFERT
USE MODI_COTWORES
!
!
USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
USE PARKIND1 ,ONLY : JPRB
!
IMPLICIT NONE
!
!* 0.1 declarations of arguments
! -------------------------
!
!
!* general variables
! -----------------
!
TYPE(DATE_TIME), INTENT(IN) :: TPTIME ! current date and time
!
LOGICAL, INTENT(IN) :: OMEB ! True = patch with multi-energy balance
! ! False = patch with classical ISBA
LOGICAL, INTENT(IN) :: OMEB_LITTER ! Flag for litter
LOGICAL, INTENT(IN) :: OMEB_GNDRES ! Flag for ground resistance
LOGICAL, INTENT(IN) :: OFORC_MEASURE ! switch for using measured data (drag scheme)
LOGICAL, INTENT(IN) :: OGLACIER ! True = Over permanent snow and ice,
! ! initialise WGI=WSAT,
! ! Hsnow>=10m and allow 0.8<SNOALB<0.85
! ! False = No specific treatment
LOGICAL, INTENT(IN) :: OSNOWDRIFT ! if=T, activate snowdrift
LOGICAL, INTENT(IN) :: OSNOWDRIFT_SUBLIM ! if=T, activate snowdrift sublimation
LOGICAL, INTENT(IN) :: OSNOW_ABS_ZENITH ! if=T, activate parametrization of solar absorption
! ! for polar regions
LOGICAL, INTENT(IN) :: OTR_ML ! Multi-layer SW radiative transfer option (NOTE =T for MEB)
LOGICAL, INTENT(IN) :: OAGRI_TO_GRASS! Used in Multi-layer SW radiative transfer option
LOGICAL, DIMENSION(:),INTENT(IN) :: OIRRIGATE ! Irrigation FLAG
LOGICAL, DIMENSION(:),INTENT(IN) :: OSTRESSDEF ! Ags: vegetation response type to water
! ! stress (true:defensive false:offensive)
LOGICAL, DIMENSION(:),INTENT(INOUT) :: OSHADE ! where vegetation evolution occurs
LOGICAL, DIMENSION(:),INTENT(INOUT) :: OIRRIDAY ! Irrigation time
!
CHARACTER(LEN=*), INTENT(IN) :: HISBA ! type of ISBA version:
! ! '2-L' (default)
! ! '3-L'
! ! 'DIF'
CHARACTER(LEN=*), INTENT(IN) :: HCPSURF ! Specific heat
! ! 'DRY' = dry Cp
! ! 'HUM' = humid Cp fct of qs
CHARACTER(LEN=*), INTENT(IN) :: HRAIN ! Rainfall spatial distribution
! 'DEF' = No rainfall spatial distribution
! 'SGH' = Rainfall exponential spatial distribution
CHARACTER(LEN=*), INTENT(IN) :: HSNOW_ISBA ! 'DEF' = Default F-R snow scheme
! ! (Douville et al. 1995)
! ! '3-L' = 3-L snow scheme (option)
! ! (Boone and Etchevers 2000)
CHARACTER(LEN=*), INTENT(IN) :: HSNOWRES ! 'DEF' = Default: Louis (ISBA)
! ! 'RIL' = CROCUS (Martin) method
! ! ISBA-SNOW3L turbulant exchange option
CHARACTER(LEN=*), INTENT(IN) :: HIMPLICIT_WIND! wind implicitation option
! ! 'OLD' = direct
! ! 'NEW' = Taylor serie, order 1
CHARACTER(LEN=*), INTENT(IN) :: HSNOWMETAMO ! Crocus metamorphism scheme:
! ! HSNOWMETAMO = B92 Brun et al 1992
! ! HSNOWMETAMO = C13 Carmagnola et al 2014
! ! HSNOWMETAMO = T07 Taillandier et al 2007
! ! HSNOWMETAMO = F06 Flanner et al 2006
CHARACTER(LEN=*), INTENT(IN) :: HSNOWRAD ! Crocus radiative transfer scheme:
! ! HSNOWMETAMO = B92 Brun et al 1992
! ! HSNOWMETAMO = TAR TARTES (Libois et al 2013)
! ! HSNOWMETAMO = TA1 TARTES with constant impurities
! ! HSNOWMETAMO = TA2 TARTES with constant impurities as a
! ! function of ageing
CHARACTER(LEN=*), INTENT(IN) :: HPHOTO ! Kind of photosynthesis;
! ! 'NON' NOTE: this option currently supported (Jarvis)
! ! 'AGS'
! ! 'LAI'
! ! 'AST' NOTE: this option currently supported (ISBA-Ags)
! ! 'LST'
!
INTEGER, DIMENSION(:),INTENT(IN) :: KWG_LAYER ! Number of soil moisture layers (DIF option)
!
REAL, INTENT(IN) :: PTSTEP ! Model time step (s)
REAL, DIMENSION(:,:), INTENT(IN) :: PVEGTYPE ! fraction of each vegetation (-)
REAL, DIMENSION(:), INTENT(IN) :: PLAT ! Latitude (degrees North)
REAL, DIMENSION(:), INTENT(IN) :: PLON ! Longitude (degrees East)
REAL, DIMENSION(:), INTENT(IN) :: PPS ! Pressure [Pa]
REAL, DIMENSION(:), INTENT(IN) :: PZENITH ! solar zenith angle
REAL, DIMENSION(:), INTENT(IN) :: PSW_RAD ! solar (shortwave) incoming radiation [W/m2]
REAL, DIMENSION(:), INTENT(IN) :: PLW_RAD ! thermal (longwave) incoming radiation [W/m2]
REAL, DIMENSION(:), INTENT(IN) :: PSCA_SW ! solar diffuse incoming radiation [W/m2]
REAL, DIMENSION(:), INTENT(IN) :: PEXNA ! Exner function: forcing level (-)
REAL, DIMENSION(:), INTENT(IN) :: PEXNS ! Exner function: surface (-)
REAL, DIMENSION(:), INTENT(IN) :: PRR ! Rain rate (kg/m2/s)
REAL, DIMENSION(:), INTENT(IN) :: PSR ! Snow rate (kg/m2/s)
REAL, DIMENSION(:), INTENT(IN) :: PRHOA ! air density (kg/m3)
REAL, DIMENSION(:), INTENT(IN) :: PVMOD ! modulus of the wind
! ! parallel to the orography (m/s)
REAL, DIMENSION(:), INTENT(IN) :: PTA ! Temperature of atmosphere (K)
REAL, DIMENSION(:), INTENT(IN) :: PQA ! specific humidity of atmosphere (kg/kg)
REAL, DIMENSION(:), INTENT(IN) :: PH_VEG ! height of vegetation
REAL, DIMENSION(:), INTENT(IN) :: PZREF ! normal distance of the first
! ! atmospheric level to the
! ! orography (m)
REAL, DIMENSION(:), INTENT(IN) :: PUREF ! reference height of the wind (m)
! ! NOTE this is different from ZZREF
! ! ONLY in stand-alone/forced mode,
! ! NOT when coupled to a model (MesoNH)
REAL, DIMENSION(:), INTENT(IN) :: PDIRCOSZW ! Director Cosinus along the z
! ! direction at the surface w-point
REAL, DIMENSION(:,:), INTENT(IN) :: PSOILHCAPZ ! ISBA-DF Soil heat capacity
! ! profile [J/(m3 K)]
REAL, DIMENSION(:,:), INTENT(IN) :: PSOILCONDZ ! ISBA-DF Soil conductivity
! ! profile [W/(m K)]
REAL, DIMENSION(:), INTENT(IN) :: PFROZEN1 ! surface frozen fraction (-)
REAL, DIMENSION(:), INTENT(IN) :: PLAI ! vegetation Leaf Area Index (m2/m2)
REAL, DIMENSION(:), INTENT(IN) :: PGNDLITTER ! litter thickness (MEB option) (m).
REAL, DIMENSION(:), INTENT(IN) :: PRGL ! maximum solar radiation
! ! usable in photosynthesis
REAL, DIMENSION(:), INTENT(IN) :: PRSMIN ! minimum stomatal resistance (s/m)
REAL, DIMENSION(:), INTENT(IN) :: PGAMMA ! coefficient for the calculation
! ! of the surface stomatal resistance
REAL, DIMENSION(:), INTENT(IN) :: PFF ! Floodplain fraction at the surface
REAL, DIMENSION(:), INTENT(IN) :: PPSN ! fraction of the grid covered
! ! by snow
REAL, DIMENSION(:), INTENT(IN) :: PPALPHAN ! snow/canopy transition coefficient
REAL, DIMENSION(:), INTENT(IN) :: PFALB ! Floodplain albedo
REAL, DIMENSION(:), INTENT(IN) :: PALBNIR_TVEG ! albedo of vegetation in NIR
! ! (needed for LM_TR or MEB)
REAL, DIMENSION(:), INTENT(IN) :: PALBVIS_TVEG ! albedo of vegetation in VIS
! ! (needed for LM_TR or MEB)
REAL, DIMENSION(:), INTENT(IN) :: PALBNIR_TSOIL ! albedo of bare soil in NIR
! ! (needed for LM_TR or MEB)
REAL, DIMENSION(:), INTENT(IN) :: PALBVIS_TSOIL ! albedo of bare soil in VIS
REAL, DIMENSION(:), INTENT(IN) :: PWRMAX_CF ! maximum vegetation interception storage (kg/m2)
REAL, DIMENSION(:), INTENT(IN) :: PFEMIS ! Floodplain emissivity (-)
REAL, DIMENSION(:), INTENT(IN) :: PF2 ! Soil water stress factor for transpiration (-)
REAL, DIMENSION(:,:), INTENT(IN) :: PWFC ! field capacity profile (m3/m3)
REAL, DIMENSION(:,:), INTENT(IN) :: PWSAT ! porosity profile (m3/m3)
REAL, DIMENSION(:,:), INTENT(INOUT) :: PWG, PWGI ! PWG = soil liquid volumetric water content (m3/m3)
! ! PWGI = soil frozen volumetric water content (m3/m3)
REAL, DIMENSION(:), INTENT(IN) :: PZ0G_WITHOUT_SNOW ! roughness length for momentum at snow-free canopy floor (m)
REAL, DIMENSION(:), INTENT(IN) :: PZ0_MEBV ! roughness length for momentum over MEB vegetation part of patch (m)
REAL, DIMENSION(:), INTENT(IN) :: PZ0H_MEBV ! roughness length for heat over MEB vegetation part of path (m)
REAL, DIMENSION(:), INTENT(IN) :: PZ0EFF_MEBV ! roughness length for momentum over MEB vegetation part of patch (m)
REAL, DIMENSION(:), INTENT(IN) :: PZ0_MEBN ! roughness length for momentum over MEB snow part of patch (m)
REAL, DIMENSION(:), INTENT(IN) :: PZ0H_MEBN ! roughness length for heat over MEB snow part of path (m)
REAL, DIMENSION(:), INTENT(IN) :: PZ0EFF_MEBN ! roughness length for momentum over MEB snow part of patch (m)
REAL, DIMENSION(:), INTENT(IN) :: PZ0_WITH_SNOW ! roughness length for momentum
! ! (with snow taken into account) (m)
REAL, DIMENSION(:), INTENT(IN) :: PZ0H_WITH_SNOW ! roughness length for heat
! ! (with snow taken into account) (m)
REAL, DIMENSION(:), INTENT(IN) :: PZ0EFF ! roughness length for momentum (m)
REAL, DIMENSION(:,:), INTENT(IN) :: PD_G ! Depth of Bottom of Soil layers (m)
REAL, DIMENSION(:,:), INTENT(IN) :: PDZG ! Thickness of Soil layers (m)
REAL, DIMENSION(:), INTENT(IN) :: PCT ! area-averaged effective inverse heat capacity [(K m2)/J]
REAL, DIMENSION(:), INTENT(IN) :: PCV ! vegetation inverse heat capacity [(K m2)/J]
REAL, DIMENSION(:), INTENT(IN) :: PCG ! soil inverse heat capacity [(K m2)/J]
REAL, DIMENSION(:), INTENT(IN) :: PFFROZEN ! Fraction of frozen flood (-)
REAL, DIMENSION(:), INTENT(IN) :: PMUF ! fraction of the grid cell reached by the rainfall (-)
!
! implicit atmospheric coupling coefficients:
!
REAL, DIMENSION(:), INTENT(IN) :: PPET_A_COEF, PPET_B_COEF, &
PPEQ_A_COEF, PPEQ_B_COEF, &
PPEW_A_COEF, PPEW_B_COEF
! ! PPEW_A_COEF A-wind coefficient
! ! PPEW_B_COEF B-wind coefficient
! ! PPET_A_COEF A-air temperature coefficient
! ! PPET_B_COEF B-air temperature coefficient
! ! PPEQ_A_COEF A-air specific humidity coefficient
! ! PPEQ_B_COEF B-air specific humidity coefficient
REAL, DIMENSION(:), INTENT(IN) :: PTDEEP_A, PTDEEP_B ! Deep soil temperature boundary condition
! ! (prescribed)
! PTDEEP_A = Deep soil temperature
! coefficient depending on flux
! PTDEEP_B = Deep soil temperature (prescribed)
! which models heating/cooling from
! below the diurnal wave penetration
! (surface temperature) depth. If it
! is FLAGGED as undefined, then the zero
! flux lower BC is applied.
! Tdeep = PTDEEP_B + PTDEEP_A * PDEEP_FLUX
! (with PDEEP_FLUX in W/m2)
!
REAL, DIMENSION(:), INTENT(IN) :: PTHRESHOLD, PWATSUP, PIRRIG
! PTHRESHOLD = threshold water level for irrigation (-)
! PWATSUP = irrigation water need to maintain a given moisture thresold (kg/m2)
! PIRRIG = irrigation mask (-)
!
! ISBA-Ags parameters
! (see also parameters with 'Ags:' in comments)
!
REAL, DIMENSION(:), INTENT(IN) :: PGC ! cuticular conductance (m s-1)
REAL, DIMENSION(:), INTENT(IN) :: PF2I ! critical normilized soil water
! ! content for stress parameterisation
REAL, DIMENSION(:), INTENT(IN) :: PDMAX ! maximum air saturation deficit
! ! tolerate by vegetation
REAL, DIMENSION(:), INTENT(IN) :: PAH,PBH ! coefficients for herbaceous water stress
! ! response (offensive or defensive)
!
REAL, DIMENSION(:), INTENT(IN) :: PCSP ! atmospheric CO2 concentration
! [ppmm]=[kg CO2 / kg air]
REAL, DIMENSION(:), INTENT(IN) :: PGMES ! mesophyll conductance (m s-1)
!
REAL, DIMENSION(:), INTENT(IN) :: PPOI ! Gaussian weights (as above)
!
REAL, DIMENSION(:), INTENT(IN) :: PFZERO ! ideal value of F, no photo-
! ! respiration or saturation deficit
REAL, DIMENSION(:), INTENT(IN) :: PEPSO ! maximum initial quantum use
! ! efficiency (mg J-1 PAR)
REAL, DIMENSION(:), INTENT(IN) :: PGAMM ! CO2 conpensation concentration (ppmv)
REAL, DIMENSION(:), INTENT(IN) :: PQDGAMM ! Log of Q10 function for CO2 conpensation
! ! concentration
REAL, DIMENSION(:), INTENT(IN) :: PQDGMES ! Log of Q10 function for mesophyll conductance
REAL, DIMENSION(:), INTENT(IN) :: PT1GMES ! reference temperature for computing
! ! compensation concentration function for
! ! mesophyll conductance: minimum
! ! temperature
REAL, DIMENSION(:), INTENT(IN) :: PT2GMES ! reference temperature for computing
! ! compensation concentration function for
! ! mesophyll conductance: maximum
! ! temperature
REAL, DIMENSION(:), INTENT(IN) :: PAMAX ! leaf photosynthetic capacity (kgCO2 m-2 s-1)
REAL, DIMENSION(:), INTENT(IN) :: PQDAMAX ! Log of Q10 function for leaf photosynthetic capacity
REAL, DIMENSION(:), INTENT(IN) :: PT1AMAX ! reference temperature for computing
! ! compensation concentration function for leaf
! ! photosynthetic capacity: minimum
! ! temperature
REAL, DIMENSION(:), INTENT(IN) :: PT2AMAX ! reference temperature for computing
! ! compensation concentration function for leaf
! ! photosynthetic capacity: maximum
! ! temperature
!
! - - - - - - - - - - - - - - - - - - - -
!
REAL, DIMENSION(:), INTENT(INOUT) :: PSNOWALB ! Snow albedo
REAL, DIMENSION(:), INTENT(INOUT) :: PSNOWALBVIS ! Snow VIS albedo
REAL, DIMENSION(:), INTENT(INOUT) :: PSNOWALBNIR ! Snow NIR albedo
REAL, DIMENSION(:), INTENT(INOUT) :: PSNOWALBFIR ! Snow FIR albedo
REAL, DIMENSION(:,:), INTENT(INOUT) :: PSNOWSWE ! Snow model layer liquid water equivalent or
! ! SWE (kg m-2)
REAL, DIMENSION(:,:), INTENT(INOUT) :: PSNOWHEAT ! Snow layer heat content (J/m3)
REAL, DIMENSION(:,:), INTENT(INOUT) :: PSNOWRHO ! Snow layer average density (kg/m3)
REAL, DIMENSION(:,:), INTENT(INOUT) :: PSNOWGRAN1 ! Snow grain parameter 1
REAL, DIMENSION(:,:), INTENT(INOUT) :: PSNOWGRAN2 ! Snow grain parameter 2
REAL, DIMENSION(:,:), INTENT(INOUT) :: PSNOWHIST ! Snow grain historical parameter
REAL, DIMENSION(:,:), INTENT(INOUT) :: PSNOWAGE ! Snow grain age
! ! NOTE : methamorphism is only activated if the flag
! ! OSNOW_METAMO=TRUE
!
REAL, DIMENSION(:,:), INTENT(INOUT) :: PTG ! Soil layer average temperature (K)
REAL, DIMENSION(:), INTENT(INOUT) :: PTV ! Canopy vegetation temperature (K)
REAL, DIMENSION(:), INTENT(INOUT) :: PTL ! Litter temperature (K)
REAL, DIMENSION(:), INTENT(INOUT) :: PTC ! Canopy air temperature [K]
REAL, DIMENSION(:), INTENT(INOUT) :: PQC ! Canopy air specific humidity [kg/kg]
REAL, DIMENSION(:), INTENT(INOUT) :: PWR ! liquid water retained on the foliage
! ! of the canopy vegetation [kg/m2]
REAL, DIMENSION(:), INTENT(INOUT) :: PWRL ! liquid water retained on the litter
REAL, DIMENSION(:), INTENT(INOUT) :: PWRLI ! ice retained on the litter
REAL, DIMENSION(:), INTENT(INOUT) :: PWRVN ! liquid water equiv of snow retained on the foliage
! ! of the canopy vegetation [kg/m2]
REAL, DIMENSION(:), INTENT(INOUT) :: PRESA ! aerodynamic resistance (s/m)
REAL, DIMENSION(:), INTENT(INOUT) :: PLE ! total latent heat flux (W/m2)
REAL, DIMENSION(:), INTENT(INOUT) :: PLE_FLOOD ! Floodplains latent heat flux: liquid part [W/m2]
REAL, DIMENSION(:), INTENT(INOUT) :: PLEI_FLOOD ! Floodplains latent heat flux: frozen part [W/m2]
!
REAL, DIMENSION(:), INTENT(INOUT) :: PABC ! Ags: abscissa needed for integration
! ! of net assimilation and stomatal
! ! conductance over canopy depth
REAL, DIMENSION(:), INTENT(INOUT) :: PFAPARC ! Fapar of vegetation (cumul)
REAL, DIMENSION(:), INTENT(INOUT) :: PFAPIRC ! Fapir of vegetation (cumul)
REAL, DIMENSION(:), INTENT(INOUT) :: PMUS
REAL, DIMENSION(:), INTENT(INOUT) :: PLAI_EFFC ! Effective LAI (cumul)
!
! diagnostic variables for Carbon assimilation
!
REAL, DIMENSION(:), INTENT(INOUT) :: PANFM ! Ags: maximum leaf assimilation
REAL, DIMENSION(:), INTENT(INOUT) :: PAN ! net CO2 assimilation
REAL, DIMENSION(:), INTENT(INOUT) :: PANDAY ! daily net CO2 assimilation
!
! - - - - - - - - - - - - - - - - - - - -
!
REAL, DIMENSION(:,:), INTENT(OUT) :: PIACAN ! PAR in the canopy at different gauss levels
REAL, DIMENSION(:), INTENT(OUT) :: PFAPAR ! Fapar of vegetation
REAL, DIMENSION(:), INTENT(OUT) :: PFAPIR ! Fapir of vegetation
REAL, DIMENSION(:), INTENT(OUT) :: PFAPAR_BS ! Fapar of bare soil
REAL, DIMENSION(:), INTENT(OUT) :: PFAPIR_BS ! Fapir of bare soil
REAL, DIMENSION(:,:), INTENT(OUT) :: PSNOWTEMP ! Snow layer average temperature (K)
REAL, DIMENSION(:,:), INTENT(OUT) :: PSNOWDZ ! Snow layer thickness (m)
REAL, DIMENSION(:), INTENT(OUT) :: PEMISNOW ! Snow surface emissivity (-)
REAL, DIMENSION(:), INTENT(OUT) :: PSWNET_N ! net snow shortwave radiation [W/m2]
REAL, DIMENSION(:), INTENT(OUT) :: PSWNET_NS ! net snow shortwave radiation for
! ! the *surface* snow layer
REAL, DIMENSION(:), INTENT(OUT) :: PSWNET_V ! net vegetation canopy shortwave radiation
! ! [W/m2]
REAL, DIMENSION(:), INTENT(OUT) :: PSWNET_G ! net surface (ground) shortwave radiation [W/m2]
REAL, DIMENSION(:), INTENT(OUT) :: PALBT ! total surface albedo
REAL, DIMENSION(:), INTENT(OUT) :: PSWDOWN_GN ! total shortwave radiation transmitted through
! the vegetation canopy
REAL, DIMENSION(:), INTENT(OUT) :: PLWNET_V ! net vegetation canopy longwave radiation [W/m2]
REAL, DIMENSION(:), INTENT(OUT) :: PLWNET_G ! net ground longwave radiation [W/m2]
REAL, DIMENSION(:), INTENT(OUT) :: PLWNET_N ! net snow longwave radiation [W/m2]
REAL, DIMENSION(:), INTENT(OUT) :: PLWDOWN_GN ! total shortwave radiation transmitted through and emitted by
! ! the canopy reaching the snowpack/ground (explicit part) [W/m2]
REAL, DIMENSION(:), INTENT(OUT) :: PRS ! surface stomatal resistance (s/m)
REAL, DIMENSION(:), INTENT(OUT) :: PCH ! drag coefficient for heat
REAL, DIMENSION(:), INTENT(OUT) :: PCD ! drag coefficient for momentum
REAL, DIMENSION(:), INTENT(OUT) :: PCDN ! neutral drag coefficient for momentum
REAL, DIMENSION(:), INTENT(OUT) :: PRI ! Richardson number
REAL, DIMENSION(:), INTENT(OUT) :: PHV ! Total effective Halstead coefficient
REAL, DIMENSION(:), INTENT(OUT) :: PHU ! grid-area humidity of the soil
REAL, DIMENSION(:), INTENT(OUT) :: PHUG ! ground relative humidity
REAL, DIMENSION(:), INTENT(OUT) :: PQS ! surface humidity (kg/kg)
REAL, DIMENSION(:), INTENT(OUT) :: PRN ! net radiation
REAL, DIMENSION(:), INTENT(OUT) :: PH ! sensible heat flux
REAL, DIMENSION(:), INTENT(OUT) :: PLEI ! sublimation latent heat flux
REAL, DIMENSION(:), INTENT(OUT) :: PLEGI ! latent heat of sublimation over frozen soil
REAL, DIMENSION(:), INTENT(OUT) :: PLEG ! latent heat of evaporation
REAL, DIMENSION(:), INTENT(OUT) :: PLELITTERI ! litter evaporation of ice
REAL, DIMENSION(:), INTENT(OUT) :: PLELITTER ! litter sublimation of liquid water
REAL, DIMENSION(:), INTENT(OUT) :: PDRIPLIT ! drip from litter
REAL, DIMENSION(:), INTENT(OUT) :: PRRLIT !
! ! over the ground
REAL, DIMENSION(:), INTENT(OUT) :: PLEV ! latent heat of evaporation
! ! over the vegetation
REAL, DIMENSION(:), INTENT(OUT) :: PLER ! latent heat of the fraction
! ! delta of water retained on the
! ! foliage of the vegetation
REAL, DIMENSION(:), INTENT(OUT) :: PLETR ! evapotranspiration of the rest
! ! of the vegetation
REAL, DIMENSION(:), INTENT(OUT) :: PEVAP ! total evaporative flux (kg/m2/s)
REAL, DIMENSION(:), INTENT(OUT) :: PLES ! sublimation from ground-based snowpack [W/m2]
REAL, DIMENSION(:), INTENT(OUT) :: PLESL ! evaporation from ground-based snowpack [W/m2]
REAL, DIMENSION(:), INTENT(OUT) :: PSUBL ! total sublimation flux soil/snow/vegtation interception (kg/m2/s)
REAL, DIMENSION(:), INTENT(OUT) :: PRESTORE ! surface restore flux for Force-Restore, diffusive flux between uppermost and second soil layers
! ! when using the DIF soil option (W/m2)
REAL, DIMENSION(:), INTENT(OUT) :: PUSTAR ! friction velocity
REAL, DIMENSION(:), INTENT(OUT) :: PMELTADV ! advection heat flux from snowmelt (W/m2)
REAL, DIMENSION(:), INTENT(OUT) :: PCPS ! heat capacity of air (J/kg/K)
REAL, DIMENSION(:), INTENT(OUT) :: PLVTT ! latent heat of vaporization (J/kg)
REAL, DIMENSION(:), INTENT(OUT) :: PLSTT ! latent heat of sublimation (J/kg)
REAL, DIMENSION(:), INTENT(OUT) :: PLEV_V_C ! MEB: total evapotranspiration (no sublim) from vegetation canopy overstory [W/m2]
REAL, DIMENSION(:), INTENT(OUT) :: PLES_V_C ! MEB: total snow sublimation from vegetation canopy overstory [W/m2]
REAL, DIMENSION(:), INTENT(OUT) :: PH_V_C ! MEB: sensible heat flux from vegetation canopy overstory [W/m2]
REAL, DIMENSION(:), INTENT(OUT) :: PH_G_C ! MEB: sensible heat flux from ground [W/m2]
REAL, DIMENSION(:), INTENT(OUT) :: PLETR_V_C ! MEB: transpiration from overstory canopy vegetation [W/m2]
REAL, DIMENSION(:), INTENT(OUT) :: PLER_V_C ! MEB: interception evaporation from overstory canopy vegetation [W/m2]
REAL, DIMENSION(:), INTENT(OUT) :: PH_C_A ! MEB: sensible heat flux from canopy air space to the atmosphere [W/m2]
! NOTE total sensible heat flux to the atmosphere also possibly
! includes a contribution from snow covering the canopy
REAL, DIMENSION(:), INTENT(OUT) :: PH_N_C ! MEB: sensible heat flux from the snow on the ground [W/m2]
! NOTE total sensible heat flux from the snowpack
! possibly includes a contribution from snow covering the canopy
REAL, DIMENSION(:), INTENT(OUT) :: PLE_V_C ! MEB: latent heat flux from vegetation canopy overstory [W/m2]
REAL, DIMENSION(:), INTENT(OUT) :: PLE_G_C ! MEB: latent heat flux from ground [W/m2]
REAL, DIMENSION(:), INTENT(OUT) :: PLE_C_A ! MEB: latent heat flux from canopy air space to the atmosphere [W/m2]
! NOTE total latent heat flux to the atmosphere also possibly
! includes a contribution from snow covering the canopy
REAL, DIMENSION(:), INTENT(OUT) :: PLE_N_C ! MEB: latent heat flux from the snow on the ground [W/m2]
! NOTE total latent heat flux from the snowpack
! possibly includes a contribution from snow covering the canopy
REAL, DIMENSION(:), INTENT(OUT) :: PEVAP_N_C ! MEB: Total evap from snow on the ground to canopy air space [kg/m2/s]
REAL, DIMENSION(:), INTENT(OUT) :: PEVAP_G_C ! MEB: Total evap from ground to canopy air space [kg/m2/s]
REAL, DIMENSION(:), INTENT(OUT) :: PSR_GN ! MEB: total snow reaching the ground snow [kg/m2/s]
REAL, DIMENSION(:), INTENT(OUT) :: PMELTCV ! MEB: snow melt rate from the overstory snow reservoir [kg/m2/s]
REAL, DIMENSION(:), INTENT(OUT) :: PFRZCV ! MEB: snow refreeze rate from the overstory snow reservoir [kg/m2/s]
REAL, DIMENSION(:), INTENT(OUT) :: PGRNDFLUX ! snow/soil-biomass interface flux (W/m2)
REAL, DIMENSION(:), INTENT(OUT) :: PFLSN_COR ! soil/snow interface correction flux to conserve energy (W/m2)
REAL, DIMENSION(:), INTENT(OUT) :: PHPSNOW ! heat release from rainfall (W/m2)
REAL, DIMENSION(:), INTENT(OUT) :: PSNOWHMASS ! snow heat content change from mass changes (J/m2)
REAL, DIMENSION(:), INTENT(OUT) :: PRNSNOW ! net radiative flux from snow (W/m2)
REAL, DIMENSION(:), INTENT(OUT) :: PHSNOW ! sensible heat flux from snow (W/m2)
REAL, DIMENSION(:), INTENT(OUT) :: PGFLUXSNOW ! net heat flux from snow (W/m2)
REAL, DIMENSION(:), INTENT(OUT) :: PUSTARSNOW ! friction velocity
REAL, DIMENSION(:), INTENT(OUT) :: PSRSFC ! Snow rate falling outside of snow
! ! covered grid area [kg/(m2 s)]
REAL, DIMENSION(:), INTENT(OUT) :: PRRSFC ! Rain rate falling outside of snow and flood
! ! covered grid area [kg/(m2 s)]
REAL, DIMENSION(:), INTENT(OUT) :: PCDSNOW ! drag coefficient for momentum over snow
REAL, DIMENSION(:), INTENT(OUT) :: PCHSNOW ! drag coefficient for heat over snow
REAL, DIMENSION(:), INTENT(OUT) :: PEMIST ! total effective surface emissivity...LWUP = EMIST*TS_RAD**4 (-)
REAL, DIMENSION(:), INTENT(OUT) :: PTS_RAD ! effective radiative temperature
! ! of the natural surface (K)
REAL, DIMENSION(:,:), INTENT(OUT) :: PSNOWLIQ ! snow layer liquid water content (m)
REAL, DIMENSION(:), INTENT(OUT) :: PAC_AGG ! aggregated aerodynamic conductance
! for evaporative flux calculations
REAL, DIMENSION(:), INTENT(OUT) :: PHU_AGG ! aggregated relative humidity
! for evaporative flux calculations
REAL, DIMENSION(:), INTENT(OUT) :: PDELHEATV_SFC ! change in heat storage of the vegetation canopy layer over the current time step (W/m2)
REAL, DIMENSION(:), INTENT(OUT) :: PDELHEATG_SFC ! change in heat storage of the ground sfc layer over the current time step (W/m2)
REAL, DIMENSION(:), INTENT(OUT) :: PDELHEATG ! change in heat storage of the entire soil column over the current time step (W/m2)
REAL, DIMENSION(:), INTENT(OUT) :: PRESTOREN ! conductive heat flux between the surface and sub-surface soil layers
! ! for the multi-layer snow schemes..for composite snow, it is
! ! equal to PRESTORE (W/m2)
REAL, DIMENSION(:), INTENT(OUT) :: PDELHEATN ! change in heat storage of the entire snow column over the current time step (W/m2)
REAL, DIMENSION(:), INTENT(OUT) :: PDELHEATN_SFC ! change in heat storage of the surface snow layer over the current time step (W/m2)
REAL, DIMENSION(:), INTENT(OUT) :: PDEEP_FLUX ! Heat flux at bottom of ISBA (W/m2)
REAL, DIMENSION(:), INTENT(OUT) :: PDRIP ! Water dripping from the vegetation canopy (kg/m2/s)
REAL, DIMENSION(:), INTENT(OUT) :: PRRVEG ! Water intercepted by the vegetation canopy (kg/m2/s)
REAL, DIMENSION(:), INTENT(OUT) :: PRISNOW ! Richarson number over ground-based snowpack (-)
REAL, DIMENSION(:), INTENT(OUT) :: PSNOW_THRUFAL ! rate that liquid water leaves (explicit) snow pack:
! ! ISBA-ES or CROCUS [kg/(m2 s)]
REAL, DIMENSION(:), INTENT(OUT) :: PSNOW_THRUFAL_SOIL !liquid water leaving the snowpack directly to the
! !soil, ISBA-ES: [kg/(m2 s)] (equal to ZSNOW_THRUFAL
! !if OMEB_LITTER=False and zero if OMEB_LITTER=True)
! ! ISBA-ES or CROCUS [kg/(m2 s)]
REAL, DIMENSION(:), INTENT(OUT) :: PEVAPCOR ! evaporation correction as last traces of snow
! ! cover ablate..if sublimation exceeds trace amounts
! of snow during time step, required residual mass taken
! from sfc soil layer [kg/(m2 s)]
REAL, DIMENSION(:), INTENT(OUT) :: PSUBVCOR ! A possible snow mass correction (to be potentially
! ! removed from soil) (kg/m2/s)
REAL, DIMENSION(:), INTENT(OUT) :: PLITCOR ! A possible ice mass correction in litter layer (to be potentially
! ! removed from soil) (kg/m2/s)
REAL, DIMENSION(:), INTENT(OUT) :: PSNOWSFCH ! snow surface layer pseudo-heating term owing to
! ! changes in grid thickness (W/m2)
REAL, DIMENSION(:), INTENT(OUT) :: PSNDRIFT ! blowing snow sublimation (kg/m2/s)
REAL, DIMENSION(:), INTENT(OUT) :: PQSNOW ! snow surface specific humidity (kg/kg)
REAL, DIMENSION(:), INTENT(OUT) :: PIRRIG_FLUX ! (kg/m2/s) irrigation flux (water need)
!
! diagnostic variables for Carbon assimilation:
!
REAL, DIMENSION(:), INTENT(OUT) :: PANF ! total assimilation over canopy
REAL, DIMENSION(:), INTENT(OUT) :: PGPP ! Gross Primary Production
REAL, DIMENSION(:,:), INTENT(OUT) :: PRESP_BIOMASS_INST ! instantaneous biomass respiration (kgCO2/kgair m/s)
!
!
!* 0.2 declarations of local variables
!
!
REAL, PARAMETER :: ZTSTEP_EB = 300. ! s Minimum time tstep required
! ! to time-split MEB energy budget
INTEGER :: JTSPLIT_EB ! number of time splits
INTEGER :: JDT ! time split loop index
!
REAL :: ZTSTEP ! Local time split timestep (s)
REAL, DIMENSION(SIZE(PPS)) :: ZWORK,ZWORK2,ZWORK3,ZWORK4 ! Working variables [*]
REAL, DIMENSION(SIZE(PSNOWSWE,1),SIZE(PSNOWSWE,2)) :: ZSNOWCOND ! snow thermal conductivity [W/(m K)]
REAL, DIMENSION(SIZE(PSNOWSWE,1),SIZE(PSNOWSWE,2)) :: ZSNOWHCAP ! snow heat capacity [J/(m3 K)]
REAL, DIMENSION(SIZE(PSNOWSWE,1),SIZE(PSNOWSWE,2)) :: ZSNOWRHO ! snow layer density (kg/m3)
REAL, DIMENSION(SIZE(PSNOWSWE,1),SIZE(PSNOWSWE,2)) :: ZSNOWAGE ! snow layer grain age
REAL, DIMENSION(SIZE(PSNOWSWE,1),SIZE(PSNOWSWE,2)) :: ZSNOWSWE ! snow layer liquid water equivalent (kg/m2)
REAL, DIMENSION(SIZE(PSNOWSWE,1),SIZE(PSNOWSWE,2)) :: ZTAU_N ! snow rad transmission coef at layer base (-)
REAL, DIMENSION(SIZE(PPS)) :: ZCHIP !
REAL, DIMENSION(SIZE(PPS)) :: ZALBG ! Effective ground albedo
REAL, DIMENSION(SIZE(PPS)) :: ZSIGMA_F ! LW transmission factor
REAL, DIMENSION(SIZE(PPS)) :: ZSIGMA_FN ! LW transmission factor - including buried (snow)
! ! vegetation effect
REAL, DIMENSION(SIZE(PPS)) :: ZDLWNET_V_DTV ! LW Jacobian: flux derrivative d LWnet_v/dTv [W/(m K2)]
REAL, DIMENSION(SIZE(PPS)) :: ZDLWNET_V_DTG ! LW Jacobian: flux derrivative d LWnet_v/dTg [W/(m K2)]
REAL, DIMENSION(SIZE(PPS)) :: ZDLWNET_V_DTN ! LW Jacobian: flux derrivative d LWnet_v/dTn [W/(m K2)]
REAL, DIMENSION(SIZE(PPS)) :: ZDLWNET_G_DTV ! LW Jacobian: flux derrivative d LWnet_g/dTv [W/(m K2)]
REAL, DIMENSION(SIZE(PPS)) :: ZDLWNET_G_DTG ! LW Jacobian: flux derrivative d LWnet_g/dTg [W/(m K2)]
REAL, DIMENSION(SIZE(PPS)) :: ZDLWNET_G_DTN ! LW Jacobian: flux derrivative d LWnet_g/dTn [W/(m K2)]
REAL, DIMENSION(SIZE(PPS)) :: ZDLWNET_N_DTV ! LW Jacobian: flux derrivative d LWnet_n/dTv [W/(m K2)]
REAL, DIMENSION(SIZE(PPS)) :: ZDLWNET_N_DTG ! LW Jacobian: flux derrivative d LWnet_n/dTg [W/(m K2)]
REAL, DIMENSION(SIZE(PPS)) :: ZDLWNET_N_DTN ! LW Jacobian: flux derrivative d LWnet_n/dTn [W/(m K2)]
REAL, DIMENSION(SIZE(PPS)) :: ZWRMAX ! maximum canopy water equivalent interception capacity [kg/m2]
REAL, DIMENSION(SIZE(PPS)) :: ZWRLMAX ! maximum litter water equivalent interception capacity [kg/m2]
REAL, DIMENSION(SIZE(PPS)) :: ZRS ! stomatal resistance (s/m)
REAL, DIMENSION(SIZE(PPS)) :: ZRSN ! stomatal resistance of non-snow-buried canopy (s/m)
! ! Etv=>0 as F2=>0 (-)
REAL, DIMENSION(SIZE(PPS)) :: ZWRVNMAX ! maximum snow water equivalent interception capacity (kg/m2)
REAL, DIMENSION(SIZE(PPS)) :: ZPSNCV ! intercepted canopy snow fraction (-) NOTE! Not the same as the
! ! ground-based snowpack
REAL, DIMENSION(SIZE(PPS)) :: ZMELTVN ! intercepted canopy snow net freeze/melt rate (kg/m2/s)
! ! (if it is < 0, this signifies freezing)
REAL, DIMENSION(SIZE(PPS)) :: ZTHRMA_TA ! linear transform energy budget coefficient for Ta
REAL, DIMENSION(SIZE(PPS)) :: ZTHRMB_TA ! linear transform energy budget coefficient for Ta
REAL, DIMENSION(SIZE(PPS)) :: ZTHRMA_TC ! linear transform energy budget coefficient for Tc
REAL, DIMENSION(SIZE(PPS)) :: ZTHRMB_TC ! linear transform energy budget coefficient for Tc
REAL, DIMENSION(SIZE(PPS)) :: ZTHRMA_TN ! linear transform energy budget coefficient for Tn
REAL, DIMENSION(SIZE(PPS)) :: ZTHRMB_TN ! linear transform energy budget coefficient for Tn
REAL, DIMENSION(SIZE(PPS)) :: ZTHRMA_TG ! linear transform energy budget coefficient for Tg
REAL, DIMENSION(SIZE(PPS)) :: ZTHRMB_TG ! linear transform energy budget coefficient for Tg
REAL, DIMENSION(SIZE(PPS)) :: ZTHRMA_TV ! linear transform energy budget coefficient for Tv
REAL, DIMENSION(SIZE(PPS)) :: ZTHRMB_TV ! linear transform energy budget coefficient for Tv
REAL, DIMENSION(SIZE(PPS)) :: ZPET_A_COEF ! atmospheric coupling coefficient: Ta
REAL, DIMENSION(SIZE(PPS)) :: ZPET_B_COEF ! atmospheric coupling coefficient: Ta
REAL, DIMENSION(SIZE(PPS)) :: ZKVN ! snow interception efficiency
REAL, DIMENSION(SIZE(PPS)) :: ZVELC ! wind speed at the top of the canopy (m/s)
REAL, DIMENSION(SIZE(PPS)) :: ZDELTA ! fraction of the foliage
! ! covered with intercepted water (-)
REAL, DIMENSION(SIZE(PPS)) :: ZHUGI ! humidity over frozen bare ground (-)
REAL, DIMENSION(SIZE(PPS)) :: ZHVN ! Halstead coefficient vegetation canopy above snow (-)
REAL, DIMENSION(SIZE(PPS)) :: ZHVG ! Halstead coefficient vegetation canopy above snow-free ground (-)
REAL, DIMENSION(SIZE(PPS)) :: ZLEG_DELTA ! soil evaporation delta fn (-)
REAL, DIMENSION(SIZE(PPS)) :: ZLEGI_DELTA ! soil sublimation delta fn (-)
REAL, DIMENSION(SIZE(PPS)) :: ZHSGL ! surface halstead cofficient for bare soil (-)
REAL, DIMENSION(SIZE(PPS)) :: ZHSGF ! surface halstead cofficient for bare soil ice (-)
REAL, DIMENSION(SIZE(PPS)) :: ZFLXC_C_A ! turb transfer coef between vegetation canopy air and atmosphere (kg/m2/s)
REAL, DIMENSION(SIZE(PPS)) :: ZFLXC_N_A ! ...between the snow on the ground and atmosphere (kg/m2/s)
REAL, DIMENSION(SIZE(PPS)) :: ZFLXC_G_C ! ...between snow-free ground and canopy air (kg/m2/s)
REAL, DIMENSION(SIZE(PPS)) :: ZFLXC_N_C ! ...between snow on the ground and canopy air (kg/m2/s)
REAL, DIMENSION(SIZE(PPS)) :: ZFLXC_VG_C ! ...between vegetation canopy over snow-free ground and canopy air (kg/m2/s)
REAL, DIMENSION(SIZE(PPS)) :: ZFLXC_VN_C ! ...between vegetation canopy over the snow on the ground and canopy air (kg/m2/s)
REAL, DIMENSION(SIZE(PPS)) :: ZFLXC_V_C ! ...between vegetation canopy and canopy air (kg/m2/s)
REAL, DIMENSION(SIZE(PPS)) :: ZFLXC_MOM ! Effective drag coefficient for momentum [kg/(m2 s)]
REAL, DIMENSION(SIZE(PPS)) :: ZQSATG ! saturation specific humidity for PTG (ground surface: kg kg-1)
REAL, DIMENSION(SIZE(PPS)) :: ZQSATV ! saturation specific humidity for PTV (vegetation canopy: kg kg-1)
REAL, DIMENSION(SIZE(PPS)) :: ZQSATC ! saturation specific humidity for PTC (canopy air: kg kg-1)
REAL, DIMENSION(SIZE(PPS)) :: ZQSATN ! saturation specific humidity for PSNOWTEMP (snow surface: kg kg-1)
REAL, DIMENSION(SIZE(PPS)) :: ZDELTAVK ! canopy interception capacity fraction including K-factor (-)
REAL, DIMENSION(SIZE(PPS)) :: ZCHEATV ! Vegetation canopy *effective surface* heat capacity (J m-2 K-1)
REAL, DIMENSION(SIZE(PPS)) :: ZCHEATG ! Understory-ground *effective surface* heat capacity (J m-2 K-1)
REAL, DIMENSION(SIZE(PPS)) :: ZCHEATN ! Ground-based snow *effective surface* heat capacity (J m-2 K-1)
REAL, DIMENSION(SIZE(PPS)) :: ZHVGS ! Dimensionless pseudo humidity factor for computing
! ! vapor fluxes from the non-buried part of the canopy
! ! to the canopy air (-)
REAL, DIMENSION(SIZE(PPS)) :: ZHVNS ! Dimensionless pseudo humidity factor for computing
! ! vapor fluxes from the partly-buried part of the canopy
! ! to the canopy air (-)
REAL, DIMENSION(SIZE(PPS)) :: ZDQSAT_G ! saturation specific humidity derivative for understory (kg kg-1 K-1)
REAL, DIMENSION(SIZE(PPS)) :: ZDQSAT_V ! saturation specific humidity derivative for the
! ! vegetation canopy (kg kg-1 K-1)
REAL, DIMENSION(SIZE(PPS)) :: ZDQSATI_N ! saturation specific humidity derivative over ice for
! ! the ground-based snowpack (kg kg-1 K-1)
REAL, DIMENSION(SIZE(PPS)) :: ZDELTAT_G ! Time change in soil surface temperature (K)
REAL, DIMENSION(SIZE(PPS)) :: ZDELTAT_V ! Time change in vegetation canopy temperature (K)
REAL, DIMENSION(SIZE(PPS)) :: ZDELTAT_N ! Time change in snowpack surface temperature (K)
REAL, DIMENSION(SIZE(PPS)) :: ZRNET_V ! Net vegetation canopy radiation (W/m2)
REAL, DIMENSION(SIZE(PPS)) :: ZRNET_G ! Net understory-ground radiation (W/m2)
REAL, DIMENSION(SIZE(PPS)) :: ZFLXC_C_A_F ! Exchange coefficient between the snow on the ground and
! ! atmosphere modified by a partially to fully buried
! ! vegetation canopy [kg/(m2 s)]
REAL, DIMENSION(SIZE(PPS)) :: ZFLXC_N_A_F ! Exchange coefficient between vegetation canopy air and
! ! atmosphere modified by a partially to fully buried
! ! vegetation canopy [kg/(m2 s)]
REAL, DIMENSION(SIZE(PPS)) :: ZEVAP_C_A ! Total canopy evapotranspiration and sublimation
! ! of intercepted snow (kg/m2/s)
REAL, DIMENSION(SIZE(PPS)) :: ZEVAP_N_A ! Vapor flux from the ground-based snowpack (part burying
! ! the canopy vegetation) to the atmosphere (kg/m2/s)
REAL, DIMENSION(SIZE(PPS)) :: ZH_N_A ! Sensible heat flux from the ground-based snowpack (part
! ! burying the canopy vegetation) to the atmosphere (W/m2)
REAL, DIMENSION(SIZE(PPS)) :: ZVEGFACT ! Fraction of canopy vegetation possibly receiving
! ! rainfall (-)
REAL, DIMENSION(SIZE(PPS)) :: ZRRSFC ! The sum of all non-intercepted rain and canopy drip (kg/m2/s)
REAL, DIMENSION(SIZE(PPS)) :: ZRRSFCL ! The sum of all non-intercepted rain and drip from (kg/m2/s)
! litter
REAL, DIMENSION(SIZE(PPS)) :: ZLES3L ! latent heat flux - sublimation of ice from the ground
! ! based snowpack (W/m2)
REAL, DIMENSION(SIZE(PPS)) :: ZLEL3L ! latent heat flux - evaporation of liquid water from the
! ! ground based snowpack (W/m2))
REAL, DIMENSION(SIZE(PPS)) :: ZEVAP3L ! total mass loss via evap & sublm from the ground based snowpack (kg/m2/s)
REAL, DIMENSION(SIZE(PPS)) :: ZUSTAR2_IC ! friction velocity (possibly implicitly coupled) (m/s)
REAL, DIMENSION(SIZE(PPS)) :: ZTA_IC ! atmospheric temperature (possibly implicitly coupled) (m/s)
REAL, DIMENSION(SIZE(PPS)) :: ZQA_IC ! atmospheric specific humidity (possibly implicitly coupled) (m/s)
REAL, DIMENSION(SIZE(PPS)) :: ZSWUP ! net upwelling shortwave radiation [W/m2]
REAL, DIMENSION(SIZE(PPS)) :: ZLWUP ! net upwelling longwave radiation [W/m2]
REAL, DIMENSION(SIZE(PPS)) :: ZUSTAR2SNOW ! snow fraciton velocity squared (m2/s2)
REAL, DIMENSION(SIZE(PPS)) :: ZVMOD ! lowest level atmospheric wind speed update estimate (K)
REAL, DIMENSION(SIZE(PPS)) :: ZRR ! combined rain rate (above canopy) and irrigation need (kg/m2/s)
REAL, DIMENSION(SIZE(PPS)) :: ZFLSN_COR ! snow/soil-biomass correction flux (W/m2) (not MEB)
REAL, DIMENSION(SIZE(PPS)) :: ZWSFC ! surface liquid water content for resistances (m3/m3)
REAL, DIMENSION(SIZE(PPS)) :: ZWISFC ! surface frozen water content for resistances (m3/m3)
REAL, DIMENSION(SIZE(PPS)) :: ZLESFC ! evaporation from the surface (soil or litter) (W/m2)
REAL, DIMENSION(SIZE(PPS)) :: ZLESFCI ! sublimation from the surface (soil or litter) (W/m2)
REAL, DIMENSION(SIZE(PPS)) :: ZPERMSNOWFRAC ! fraction of permanent snow/ice
!
! - TR_ML radiation option: NOTE...always used by MEB
!
REAL, DIMENSION(SIZE(PPS),SIZE(PABC)) :: ZIACAN_SUNLIT ! Absorbed PAR of each level within the
REAL, DIMENSION(SIZE(PPS),SIZE(PABC)) :: ZIACAN_SHADE ! canopy - Split into SHADEd and SUNLIT
REAL, DIMENSION(SIZE(PPS),SIZE(PABC)) :: ZFRAC_SUN ! fraction of sunlit leaves
!
REAL, DIMENSION(SIZE(PPS)) :: ZLAI ! Potentially covered/buried canopy LAI (m2/m2)
REAL, DIMENSION(SIZE(PPS)) :: ZALBVIS_TSOIL ! average snow-free ground VIS albedo (soil plus flooded fraction)
REAL, DIMENSION(SIZE(PPS)) :: ZALBNIR_TSOIL ! average snow-free ground NIR albedo (soil plus flooded fraction)
REAL, DIMENSION(SIZE(PPS)) :: ZSWNET_S ! Net SW radiation at the surface (below canopy snow/ground/flooded zone)
!
!
! - CPHOTO/=NON (Ags Option(s)):
!
REAL, DIMENSION(SIZE(PPS)) :: ZQSAT ! CPHOTO/=NON (Ags Option(s))diagnosed (past time step) Qsat relative to canopy (for Ags)
REAL, DIMENSION(SIZE(PPS)) :: ZFFV ! submerged vegetation (by flooding) fraction (-)
REAL, DIMENSION(SIZE(PPS),SIZE(PABC)) :: ZIACAN ! PAR in the canopy at different gauss levels: local working needed if
! ! Ags if off (i.e. CPHOTO==NON)
!
REAL, DIMENSION(:,:), ALLOCATABLE :: ZTGL ! Temporary temperature of litter + soil
REAL, DIMENSION(:,:), ALLOCATABLE :: ZSOILHCAPZ ! Temporary heat capacity of litter + soil
REAL, DIMENSION(:,:), ALLOCATABLE :: ZSOILCONDZ ! Temporary heat conductivity of litter + soil
REAL, DIMENSION(:,:), ALLOCATABLE :: ZD_G ! Temporary depth of bottom litter + soil layers
REAL, DIMENSION(:,:), ALLOCATABLE :: ZDZG ! Temporary thickness of litter + soil layers
REAL, DIMENSION(:,:), ALLOCATABLE :: ZWFC ! Temporary Wfc of bottom litter + soil layers
REAL, DIMENSION(:,:), ALLOCATABLE :: ZWSAT ! Temporary Wsat of bottom litter + soil layers
!
! Working sums for flux averaging over MEB time split
!
REAL, DIMENSION(SIZE(PPS)) :: ZH_SUM, ZH_C_A_SUM, ZH_N_A_SUM, ZH_V_C_SUM, ZH_G_C_SUM, &
ZH_N_C_SUM, ZHSNOW_SUM, ZHPSNOW_SUM
REAL, DIMENSION(SIZE(PPS)) :: ZHU_AGG_SUM, ZAC_AGG_SUM
REAL, DIMENSION(SIZE(PPS)) :: ZLE_SUM, ZLE_C_A_SUM, ZLE_V_C_SUM, ZLE_G_C_SUM, &
ZLE_N_C_SUM, ZLETR_V_C_SUM, ZLEG_SUM,ZLEGI_SUM,ZLESFC_SUM,&
ZLESFCI_SUM, &
ZLER_V_C_SUM, ZLE_FLOOD_SUM, ZLEI_FLOOD_SUM, &
ZLES_V_C_SUM, ZLETR_SUM, ZLER_SUM, ZLEV_SUM, &
ZLEI_SUM, ZLES3L_SUM, ZLEL3L_SUM, ZEVAP3L_SUM, &
ZUSTAR2_SUM, ZUSTAR2SNOW_SUM, ZCDSNOW_SUM, &
ZCHSNOW_SUM, ZRISNOW_SUM, ZEVAP_SUM
REAL, DIMENSION(SIZE(PPS)) :: ZGRNDFLUX_SUM, ZRESTORE_SUM
REAL, DIMENSION(SIZE(PPS)) :: ZSWNET_V_SUM, ZSWNET_G_SUM, ZSWNET_N_SUM, ZLWNET_V_SUM, &
ZLWNET_G_SUM, ZLWNET_N_SUM, ZEMIST_SUM, ZSWUP_SUM, &
ZLWUP_SUM
REAL, DIMENSION(SIZE(PPS)) :: ZDELHEATG_SFC_SUM, ZDELHEATV_SFC_SUM, ZDELHEATG_SUM
!
REAL(KIND=JPRB) :: ZHOOK_HANDLE
!
INTEGER :: INI, INL, JJ, JL
REAL, DIMENSION(SIZE(PWR)) :: ZPHASEL ! Phase changement in litter (W/m2)
REAL, DIMENSION(SIZE(PWR)) :: ZCTSFC
REAL, DIMENSION(SIZE(PFROZEN1)) :: ZFROZEN1SFC
!-------------------------------------------------------------------------------
!
!* 1.0 Preliminaries
! -------------
!
IF (LHOOK) CALL DR_HOOK('ISBA_MEB',0,ZHOOK_HANDLE)
!
!
PIACAN(:,:) = 0.
PFAPAR(:) = 0.
PFAPIR(:) = 0.
PFAPAR_BS(:) = 0.
PFAPIR_BS(:) = 0.
PRRLIT(:) =0.0
PDRIPLIT(:) =0.0
!
PLEGI(:) = 0.
PLEG(:) = 0.
ZLESFCI(:)= 0.
ZLESFC(:) = 0.
!
ZIACAN_SUNLIT(:,:) = XUNDEF
ZIACAN_SHADE(:,:) = XUNDEF
ZFRAC_SUN (:,:) = XUNDEF
ZLAI (:) = XUNDEF
ZALBVIS_TSOIL(:) = XUNDEF
ZALBNIR_TSOIL(:) = XUNDEF
ZSWNET_S(:) = XUNDEF
ZQSAT(:) = XUNDEF
ZWORK(:) = XUNDEF
ZWORK2(:) = XUNDEF
ZWORK3(:) = XUNDEF
ZWORK4(:) = XUNDEF
!
!* 1.1 Preliminaries for litter parameters
! -----------------------------------
!
INI=SIZE(PWG,1)
INL=SIZE(PWG,2)
!
CALL ALLOCATE_LOCAL_VARS_PREP_GRID_SOIL
!
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
!
!* 1.2 Preliminaries for litter temperature
! ------------------------------------
!
! Concatenate PTL and PTG and the parameters linked to heat transfer into the soil
!
CALL PREP_MEB_SOIL(OMEB_LITTER,PSOILHCAPZ,PSOILCONDZ,PWSAT,PWFC,PD_G,PDZG,PTG, &
PWG(:,1),PWGI(:,1),PWRL,PWRLI,PTL,PGNDLITTER,ZD_G,ZDZG,ZTGL, &
ZSOILHCAPZ,ZSOILCONDZ,ZWSAT,ZWFC,ZWSFC,ZWISFC,ZCTSFC,PCT, &
PFROZEN1,ZFROZEN1SFC )
!
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
!
!* 2.0 Preliminaries for energy and radiation budget
! ---------------------------------------------
!
ZPERMSNOWFRAC(:) = PVEGTYPE(:,NVT_SNOW)
!
! Local working:
! - possibly adjust these prognostic variables locally, but do not save
!
ZSNOWRHO(:,:) = PSNOWRHO(:,:)
ZSNOWAGE(:,:) = PSNOWAGE(:,:)
ZSNOWSWE(:,:) = PSNOWSWE(:,:)
!
CALL PREPS_FOR_MEB_EBUD_RAD(PPS, &
PLAI,ZSNOWRHO,ZSNOWSWE,PSNOWHEAT, &
PSNOWTEMP,PSNOWDZ,ZSNOWCOND,ZSNOWHCAP,PEMISNOW, &
ZSIGMA_F,ZCHIP, &
PTSTEP,PSR,PTA,PVMOD,ZSNOWAGE,ZPERMSNOWFRAC )
!
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
!
!* 3.0 Shortwave radiative transfer
! ----------------------------
!
! Calculate snow albedo: split into spectral bands:
!
CALL SNOWALB_SPECTRAL_BANDS_MEB(PVEGTYPE,PSNOWALB,ZSNOWRHO,ZSNOWAGE,PPS, &
PPSN,PSNOWDZ,PZENITH, &
PSNOWALBVIS,PSNOWALBNIR,PSNOWALBFIR,ZTAU_N)
!
!
! NOTE, currently MEB only uses 2 of 3 potential snow albedo spectral bands
!
!
WHERE(PSNOWALB(:) /= XUNDEF)
ZLAI(:) = PLAI(:)*(1.0-PPALPHAN(:))
ZALBVIS_TSOIL(:) = PALBVIS_TSOIL(:)*(1.-PPSN(:)) + PPSN(:)*PSNOWALBVIS(:)
ZALBNIR_TSOIL(:) = PALBNIR_TSOIL(:)*(1.-PPSN(:)) + PPSN(:)*PSNOWALBNIR(:)
ELSEWHERE
ZLAI(:) = PLAI(:)
ZALBVIS_TSOIL(:) = PALBVIS_TSOIL(:)
ZALBNIR_TSOIL(:) = PALBNIR_TSOIL(:)
END WHERE
!
CALL RADIATIVE_TRANSFERT(OAGRI_TO_GRASS, PVEGTYPE, &
PALBVIS_TVEG, ZALBVIS_TSOIL, PALBNIR_TVEG, ZALBNIR_TSOIL, &
PSW_RAD, ZLAI, PZENITH, PABC, &
PFAPARC, PFAPIRC, PMUS, PLAI_EFFC, OSHADE, ZIACAN, &
ZIACAN_SUNLIT, ZIACAN_SHADE, ZFRAC_SUN, &
PFAPAR, PFAPIR, PFAPAR_BS, PFAPIR_BS )
! Total effective surface (canopy, ground/flooded zone, snow) all-wavelength
! albedo: diagnosed from shortwave energy budget closure
PALBT(:) = 1. - (XSW_WGHT_VIS*(PFAPAR(:)+PFAPAR_BS(:)) + &
XSW_WGHT_NIR*(PFAPIR(:)+PFAPIR_BS(:)))
ZSWUP(:) = PSW_RAD(:)*PALBT(:)
PALBT(:) = ZSWUP(:)/MAX(1.E-5, PSW_RAD(:))
! Diagnose all-wavelength SW radiative budget components:
PSWNET_V(:) = PSW_RAD(:)*(XSW_WGHT_VIS*PFAPAR(:) + &
XSW_WGHT_NIR*PFAPIR(:) )
ZSWNET_S(:) = PSW_RAD(:)*(XSW_WGHT_VIS*PFAPAR_BS(:) + &
XSW_WGHT_NIR*PFAPIR_BS(:))
PSWNET_N(:) = ZSWNET_S(:)* PPSN(:)
PSWNET_G(:) = ZSWNET_S(:)*(1.-PPSN(:))
! Quantity of net shortwave radiation absorbed in surface snow layer
PSWNET_NS(:) = PSWNET_N(:)*(1.0 - ZTAU_N(:,1))
! Compute all-wavelength effective ground albedo
ZALBG(:) = XSW_WGHT_NIR*ZALBNIR_TSOIL(:) + &
XSW_WGHT_VIS*ZALBVIS_TSOIL(:)
! Any SW radiation reaching the base of the lowest snow layer can pass
! into the soil:
ZTAU_N(:,SIZE(PSNOWSWE,2)) = ZTAU_N(:,SIZE(PSNOWSWE,2))*(1.-ZALBG(:))
! Downwelling SW radiation arriving at ground/snow surface
PSWDOWN_GN(:) = ZSWNET_S(:)/(1.-ZALBG(:))
!
!
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
!
!* 4.0 Longwave radiative transfer
! ---------------------------
!
CALL ISBA_LWNET_MEB(PLAI,PPSN,PPALPHAN, &
PEMISNOW,PFEMIS,PFF, &
PTV,ZTGL(:,1),PSNOWTEMP(:,1), &
PLW_RAD,PLWNET_N,PLWNET_V,PLWNET_G, &
ZDLWNET_V_DTV,ZDLWNET_V_DTG,ZDLWNET_V_DTN, &
ZDLWNET_G_DTV,ZDLWNET_G_DTG,ZDLWNET_G_DTN, &
ZDLWNET_N_DTV,ZDLWNET_N_DTG,ZDLWNET_N_DTN, &
ZSIGMA_F,ZSIGMA_FN,PLWDOWN_GN )
!
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
!
!* 5.0 Fraction of leaves occupied by intercepted water
! ------------------------------------------------
!
! Vegetation canopy:
!
! First, compute an effective veg fraction: it can only be < unity if vegetation is buried by snowpack...
!
ZWORK(:) = (1.0 - PPSN(:) + PPSN(:)*(1.0 - PPALPHAN(:)))
!
CALL WET_LEAVES_FRAC(PWR, ZWORK, PWRMAX_CF, PZ0_MEBV, PLAI, ZWRMAX, ZDELTA)
!
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
!
!* 6.0 Plant stress, stomatal resistance and, possibly, CO2 assimilation
! --------------------------------------------------------------------
!
! MEB-NOTE here assumed HPHOTO=='DEF' or 'AST' for now
! More Ags options to be added later
!
IF (HPHOTO=='NON') THEN
!
! Canopy vegetation (no snow, or snow below the main part of the canopy):
!
CALL VEG(PSW_RAD, PTC, PQC, PPS, PRGL, PLAI, PRSMIN, PGAMMA, PF2, ZRS)
!
!
ELSE IF (MAXVAL(PGMES) /= XUNDEF .OR. MINVAL(PGMES) /= XUNDEF) THEN
!
! NOTE: For now we assume that forest canopy can be flooded.
! However, we need to likely compute a fraction like PALPHAN (for snow vertical extent)
! for floods for grasses/crops/shrubs...i.e. low vegetation
ZFFV(:) = 0.0
ZQSAT(:) = QSAT(PTV,PPS)
CALL COTWORES(PTSTEP, HPHOTO, OTR_ML, OSHADE, &
PVEGTYPE, OSTRESSDEF, PAH, PBH, PF2I, PDMAX, &
PPOI, PCSP, PTV, PF2, PSW_RAD, PRESA, PQC, ZQSAT, PLE, &
PPALPHAN, ZDELTA, PLAI, PRHOA, PZENITH, PFZERO, PEPSO, &
PGAMM, PQDGAMM, PGMES, PGC, PQDGMES, PT1GMES, PT2GMES, &
PAMAX, PQDAMAX, PT1AMAX, PT2AMAX, ZFFV, &
ZIACAN_SUNLIT, ZIACAN_SHADE, ZFRAC_SUN, ZIACAN, &
PABC, PAN, PANDAY, ZRS, PANFM, PGPP, PANF, PRESP_BIOMASS_INST(:,1))
!
PIACAN(:,:) = ZIACAN(:,:)
!
ELSE
PRESP_BIOMASS_INST(:,1) = 0.0
PGPP(:) = 0.0
ENDIF
!
! Additional resistance for possibly snow-buried canopy vegetation:
!
ZRSN(:) = ZRS(:)/( 1.0 - MIN(PPALPHAN(:), 1.0 - (ZRS(:)/XRS_MAX)) )
!
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
!
!* 6.0 Canopy snow (intercepted) needed diagnostics:
! ---------------------------------------------
!
CALL SNOW_LEAVES_FRAC_MEB(PPSN,PPALPHAN,PWRVN,PTV,ZCHIP,PLAI, &
ZWRVNMAX,ZPSNCV,ZMELTVN)
!
! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
!
!* 7.0 Aerodynamic drag and heat/mass transfer/fluxes
! and energy budget solution
! ----------------------------------------------
!
! NOTE, this assumes thermodynamic variable herein is potential T
ZPET_A_COEF(:) = -PPET_A_COEF(:)*XCPD
ZPET_B_COEF(:) = PPET_B_COEF(:)*XCPD
ZTHRMA_TA(:) = XCPD/PEXNA(:)
ZTHRMB_TA(:) = 0.0
ZWORK(:) = XCPD/PEXNS(:)
ZTHRMA_TC(:) = ZWORK(:)
ZTHRMB_TC(:) = 0.0
ZTHRMA_TN(:) = ZWORK(:)
ZTHRMB_TN(:) = 0.0
ZTHRMA_TG(:) = ZWORK(:)
ZTHRMB_TG(:) = 0.0
ZTHRMA_TV(:) = ZWORK(:)
ZTHRMB_TV(:) = 0.0
!
!
! Possibly split time step if large:
! Although the energy budget is fully implicit, a very small canopy heat capacity
! (and neglect of canopy air space heat capacity) can possibly lead to
! numerical shocks, especially during transition periods between stable and unstable
! regimes. Thus, for relatively large steps, a simple time split scheme is activated.
! Note that soil moisture is held constant, while turbulent exchange coefficients are updated during the split.
! Also, experience shows that splitting at least once for moderately sized time steps
! is quite effective in removing any lingering small but possible oscillations.
! Finally, for *very* small time steps (such as those for high res runs), no split is performed.
! Fluxes are averaged over the time split for conservation.
!
JTSPLIT_EB = 1 + INT(PTSTEP/ZTSTEP_EB) ! number of split-time steps
ZTSTEP = PTSTEP/JTSPLIT_EB ! split time step...for relatively small time steps, no split
!
! initialize time split sums for fluxes:
!
CALL INIT_SUM_FLUXES_MEB_TSPLIT
!
!
! Note, when implicitly coupled to the atmosphere, these