!-------------------------------------- LICENCE BEGIN ------------------------------------
!Environment Canada - Atmospheric Science and Technology License/Disclaimer,
! version 3; Last Modified: May 7, 2008.
!This is free but copyrighted software; you can use/redistribute/modify it under the terms
!of the Environment Canada - Atmospheric Science and Technology License/Disclaimer
!version 3 or (at your option) any later version that should be found at:
!http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html
!
!This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
!without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
!See the above mentioned License/Disclaimer for more details.
!You should have received a copy of the License/Disclaimer along with this software;
!if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec),
!CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca
!-------------------------------------- LICENCE END --------------------------------------
*** S/P CLASS301
*
#include "phy_macros_f.h"
SUBROUTINE CLASS301 (BUS, BUSSIZ, 1,8
$ PTSURF, PTSURFSIZ,
$ DT, KOUNT, TRNCH,
$ N, M, NK)
*
#include "impnone.cdk"
*
INTEGER BUSSIZ, LONCLEF, VSIZ, N, NK, KOUNT, TRNCH,IG
REAL BUS(BUSSIZ), DT
INTEGER PTSURFSIZ
INTEGER PTSURF(PTSURFSIZ)
*
*Author
* Y. Delage (November 2002)
*Revisions
*001 Y. Delage (July 2004) Add calculations at kount=0
*002 Y. Delage (Sept 2004) Replace ZA by ZUSL and ZTSL and
* UE2 by FRV
*003 V. Fortin (Nov 2006) Use RAINRATE and SNOWRATE estimated
* by SURF_PRECIP (instead of TSS)
* to obtain total precipitation
*
*004 J.Toviessi(Aug 2009) Adding the option of radiation
* along the slopes (RADSLOPE)
*
*
*Object
* Multitasking of the surface scheme CLASS301
*
*Arguments
*
* - Input/Output -
* BUS bus of surface variables
*
* - Input -
* BUSSIZ size of the surface bus
* PTSURF surface pointers
* PTSURFSIZ dimension of ptsurf
* KOUNT number of timestep
* TRNCH row number
* DT timestep
* N running length
* M horizontal dimension
* NK vertical dimension
* IG number of soil layers
*
*
**
*
*
INTEGER I
INTEGER IC,ICP1,IWF,ILAI,IHGT,IALC,IALS,IALG,IPCP
INTEGER NLANDCS,NLANDGS,NLANDC, NLANDG, NLANDI
*
*
*
integer ptr, x
*
integer k,j,ik,m,iday
real juliand
*
#include "locbus.cdk"
INTEGER INDX_SFC, SURFLEN
PARAMETER (INDX_SFC = INDX_SOIL)
INTEGER QUELNIVO(MAXVARSURF)
*
#include "classlvls.cdk"
PARAMETER (IG=CLASS_IG)
#include "consphy.cdk"
*
#include "options.cdk"
#include "sfcbus.cdk"
*
*
*
*MODULES
EXTERNAL CLASSB
EXTERNAL CLASSI
EXTERNAL CLASSA
EXTERNAL CLASST
EXTERNAL CLASSW
*
*
#include "zuzt.cdk"
*
*******************************************************
* AUTOMATIC ARRAYS
*******************************************************
*
REAL
1 ALVSCN(M), ALIRCN(M), ALVSG (M), ALIRG (M),
2 ALVSCS(M), ALIRCS(M), ALVSSN(M), ALIRSN(M),
3 TRVSCN(M), TRIRCN(M), TRVSCS(M), TRIRCS(M),
4 AILCAN(M), AILCNS(M), FSVF (M), FSVFS (M),
5 RAICAN(M), RAICNS(M), SNOCAN(M), SNOCNS(M),
6 FRAINC(M), FSNOWC(M), DISP (M), DISPS (M),
7 ZOMLNC(M), ZOMLCS(M), ZOELNC(M), ZOELCS(M),
8 ZOMLNG(M), ZOMLNS(M), ZOELNG(M), ZOELNS(M),
9 CHCAP (M), CHCAPS(M), CMASSC(M), CMASCS(M),
A CWCAP (M), CWCAPS(M), RC (M), RCS (M),
B ZPLIMC(M), ZPLIMG(M), ZPLMCS(M), ZPLMGS(M),
C DLEAF (M), TRSNOW(M), ZSNOW (M), QLWAVG(M),
D ALVS (M), ALIR (M), QSOL (M),
F FCLOUD(M), VPD (M),
G RHOAIR(M), TADP (M), QSWINV(M), QSWINI(M),
H PADRY (M), ZBLEND(M), ZUN (M), ZTN (M)
REAL TBARC (M,IG),TBARG (M,IG),TBARCS(M,IG),TBARGS(M,IG),
1 THLIQC(M,IG),THLIQG(M,IG),THICEC(M,IG),THICEG(M,IG),
2 HCPC (M,IG),HCPG (M,IG),FROOT (M,IG)
C
REAL GZEROC(M), GZEROG(M), GZROCS(M), GZROGS(M),
1 G12C (M), G12G (M), G12CS (M), G12GS (M),
2 G23C (M), G23G (M), G23CS (M), G23GS (M),
3 QFREZC(M), QFREZG(M), QMELTC(M), QMELTG(M),
4 EVAPC (M), EVAPCG(M), EVAPG (M), EVAPCS(M),
5 EVPCSG(M), EVAPGS(M), TCANO (M), TCANS (M),
7 TPONDC(M), TPONDG(M),
8 TPNDCS(M), TPNDGS(M), TSNOCS(M), TSNOGS(M),
9 CDH (M), WTABLE(M),
B EVPPOT(M), EVAPB (M)
C
REAL RHOSNI(M)
*
REAL RPCP (M), TRPCP (M), SPCP (M), TSPCP (M)
*
REAL PCPR (M)
*
INTEGER ILAND (M),ISAND(M,IG),ITER(M),NITER(M)
INTEGER ITERCT(M,6,50)
*
*******************************************************
*
*
REAL AILDAT, HGTDAT, ACVDAT, ACIDAT
REAL ASVDAT, ASIDAT, AGVDAT, AGIDAT
REAL SU,SV,ST,SQ,ALVIS_SOL,CMU,CTU,THLIQ,THICE,QSENS,ZH
REAL ZILMO,ZFRV,PS,QS,TS,Z0H,Z0M,EVAPO,ZTSURF,ZTSRAD
REAL UA,VA,TA,QA,TFLUX,QFLUX,COSZS,FLUSOL,ZFCANMX
REAL ZDLAT,ZDLON,ZSAND,ZDELZW,ZZBOTW,ZTHPOR,ZTHLMIN
REAL ZTHLRET,ZPSISAT,ZBI,ZPSIWLT,ZHCPS,ZZUSL,ZZTSL,QLWIN
REAL ZTCS,ZTSNOW,ZTBASE,ZTPOND,ZZPOND,ZRHOSNO,ZTHFC
REAL ZSCAN,ZRUNOFF,XSNO,ZALBSNO,ZGROWTH,ZGRKSAT,ZGRKTLD
REAL ZTHLRAT,ZXDRAIN,ZXSLOPE,ZGRKFAC,ZWFSURF,ZWFCINT
REAL ZCMAI,ZFSGV,ZFSGS,ZFSGG,ZFLGV,ZFLGS,ZFLGG,ZHFSC
REAL ZHFSS,ZHFSG,ZHEVC,ZHEVS,ZHEVG,ZHMFC,ZHTCC,ZHTCS
REAL ZHTC,ZPCFC,ZPCLC,ZPCPG,ZQFCF,ZQFCL,ZQFG,ZQFN
REAL ZWTRC,ZWTRS,ZWTRG,ZROFC,ZROFN,ZROVG,ZOVRFLW,ZSUBFLW
REAL ZBASFLW,QEVAP,ZQSWD,XDIFFUS,ZTCAN,ZRCAN,ZZOLN
REAL ZALVSC,ZALIRC,ZAILMIN,ZAILMAX,ZZRTMAX
REAL ZCFLUX,ZPCPN,ZQFC,ZHMFG,ZHMFN,ZPSIGA,ZPSIGB
REAL ZCWGTMX,ZRSMIN,ZQA50,ZVPDA,ZVPDB,ZFL
REAL ZALGWET,ZALGDRY,FFC,FCS,FG,FGS,FSOLUACC,FIRUACC
REAL ZCLAY,ZSDEPTH,ZORGM,RRATE,SRATE
*
POINTER (IFSOLUACC , FSOLUACC (1) )
POINTER (IFIRUACC , FIRUACC (1) )
POINTER (IUDIAG , SU (1) )
POINTER (IVDIAG , SV (1) )
POINTER (ITDIAG , ST (1) )
POINTER (IQDIAG , SQ (1) )
POINTER (IALVIS_SOL , ALVIS_SOL (1) )
POINTER (ICMU , CMU (1) )
POINTER (ICTU , CTU (1) )
POINTER (IWSOIL , THLIQ (1) )
POINTER (IISOIL , THICE (1) )
POINTER (IEVAP , EVAPO (1) )
POINTER (IFC _SOL , QSENS (1) )
POINTER (IFV _SOL , QEVAP (1) )
POINTER (IHST _SOL , ZH (1) )
POINTER (IILMO _SOL , ZILMO (1) )
POINTER (IFRV , ZFRV (1) )
POINTER (IPS , PS (1) )
POINTER (IQS , QS (M) )
POINTER (ITS , TS (1) )
POINTER (IZ0H , Z0H (1) )
POINTER (IZ0M , Z0M (1) )
POINTER (IZTSURF , ZTSURF (M) )
POINTER (IZTSRAD , ZTSRAD (1) )
POINTER (IZUMOINS , UA (1) )
POINTER (IZVMOINS , VA (1) )
POINTER (ITA , TA (M) )
POINTER (IQA , QA (M) )
POINTER (IALFAT , TFLUX (1) )
POINTER (IALFAQ , QFLUX (1) )
POINTER (ICOSZ , COSZS (1) )
POINTER (IFLUSOL , FLUSOL (1) )
POINTER (IZFCANMX , ZFCANMX (1) )
POINTER (IZDLAT , ZDLAT (1) )
POINTER (IZDLON , ZDLON (1) )
POINTER (IZSAND , ZSAND (M,IG))
POINTER (IZCLAY , ZCLAY (1) )
POINTER (IZSDEPTH , ZSDEPTH (1) )
POINTER (IZORGM , ZORGM (1) )
POINTER (IZDELZW , ZDELZW (1) )
POINTER (IZZBOTW , ZZBOTW (1) )
POINTER (IZTHPOR , ZTHPOR (1) )
POINTER (IZTHLMIN , ZTHLMIN (1) )
POINTER (IZTHLRET , ZTHLRET (1) )
POINTER (IZPSISAT , ZPSISAT (1) )
POINTER (IZBI , ZBI (1) )
POINTER (IZPSIWLT , ZPSIWLT (1) )
POINTER (IZHCPS , ZHCPS (1) )
POINTER (IZZTSL , ZZTSL (1) )
POINTER (IZZUSL , ZZUSL (1) )
POINTER (IQLWIN , QLWIN (1) )
POINTER (IZTCS , ZTCS (1) )
POINTER (IZTSNOW , ZTSNOW (1) )
POINTER (IZTBASE , ZTBASE (1) )
POINTER (IZTPOND , ZTPOND (1) )
POINTER (IZZPOND , ZZPOND (1) )
POINTER (IZRHOSNO , ZRHOSNO (1) )
POINTER (IZTHFC , ZTHFC (1) )
POINTER (IZSCAN , ZSCAN (1) )
POINTER (IZRUNOFF , ZRUNOFF (1) )
POINTER (IXSNO , XSNO (1) )
POINTER (IZALBSNO , ZALBSNO (1) )
POINTER (IZGROWTH , ZGROWTH (1) )
POINTER (IZGRKSAT , ZGRKSAT (1) )
POINTER (IZGRKTLD , ZGRKTLD (1) )
POINTER (IZTHLRAT , ZTHLRAT (1) )
POINTER (IZXDRAIN , ZXDRAIN (1) )
POINTER (IZXSLOPE , ZXSLOPE (1) )
POINTER (IZGRKFAC , ZGRKFAC (1) )
POINTER (IZWFSURF , ZWFSURF (1) )
POINTER (IZWFCINT , ZWFCINT (1) )
POINTER (IZCMAI , ZCMAI (1) )
POINTER (IZFSGV , ZFSGV (1) )
POINTER (IZFSGS , ZFSGS (1) )
POINTER (IZFSGG , ZFSGG (1) )
POINTER (IZFLGV , ZFLGV (1) )
POINTER (IZFLGS , ZFLGS (1) )
POINTER (IZFLGG , ZFLGG (1) )
POINTER (IZHFSC , ZHFSC (1) )
POINTER (IZHFSS , ZHFSS (1) )
POINTER (IZHFSG , ZHFSG (1) )
POINTER (IZHEVC , ZHEVC (1) )
POINTER (IZHEVS , ZHEVS (1) )
POINTER (IZHEVG , ZHEVG (1) )
POINTER (IZHMFC , ZHMFC (1) )
POINTER (IZHTCC , ZHTCC (1) )
POINTER (IZHTCS , ZHTCS (1) )
POINTER (IZHTC , ZHTC (1) )
POINTER (IZPCFC , ZPCFC (1) )
POINTER (IZPCLC , ZPCLC (1) )
POINTER (IZPCPG , ZPCPG (1) )
POINTER (IZQFCF , ZQFCF (1) )
POINTER (IZQFCL , ZQFCL (1) )
POINTER (IZQFG , ZQFG (1) )
POINTER (IZQFN , ZQFN (1) )
POINTER (IZWTRC , ZWTRC (1) )
POINTER (IZWTRS , ZWTRS (1) )
POINTER (IZWTRG , ZWTRG (1) )
POINTER (IZROFC , ZROFC (1) )
POINTER (IZROFN , ZROFN (1) )
POINTER (IZROVG , ZROVG (1) )
POINTER (IZOVRFLW , ZOVRFLW (1) )
POINTER (IZSUBFLW , ZSUBFLW (1) )
POINTER (IZBASFLW , ZBASFLW (1) )
POINTER (IZQSWD , ZQSWD (1) )
POINTER (IZTCAN , ZTCAN (1) )
POINTER (IZRCAN , ZRCAN (1) )
POINTER (IZZOLN , ZZOLN (1) )
POINTER (IZALVSC , ZALVSC (1) )
POINTER (IZALIRC , ZALIRC (1) )
POINTER (IZAILMAX , ZAILMAX (1) )
POINTER (IZAILMIN , ZAILMIN (1) )
POINTER (IZCWGTMX , ZCWGTMX (1) )
POINTER (IZZRTMAX , ZZRTMAX (1) )
POINTER (IZRSMIN , ZRSMIN (1) )
POINTER (IZQA50 , ZQA50 (1) )
POINTER (IZVPDA , ZVPDA (1) )
POINTER (IZVPDB , ZVPDB (1) )
POINTER (IZPSIGA , ZPSIGA (1) )
POINTER (IZPSIGB , ZPSIGB (1) )
POINTER (IZCFLUX , ZCFLUX (1) )
POINTER (IZPCPN , ZPCPN (1) )
POINTER (IZQFC , ZQFC (1) )
POINTER (IZHMFG , ZHMFG (1) )
POINTER (IZHMFN , ZHMFN (1) )
POINTER (IZALGWET , ZALGWET (1) )
POINTER (IZALGDRY , ZALGDRY (1) )
POINTER (IFC , FFC (1) )
POINTER (IFCS , FCS (1) )
POINTER (IFG , FG (1) )
POINTER (IFGS , FGS (1) )
POINTER (IZFL , ZFL (1) )
POINTER (IRAINRATE , RRATE (1) )
POINTER (ISNOWRATE , SRATE (1) )
*
*
integer sommet
*
#include "xptsurf.cdk"
*
*
*
SURFLEN = M
IDAY = JULIAND
( DT , KOUNT, DATE )
*
*
* EQUIVALENCES
*
INIT_LOCBUS()
*
* Syntax of macro locbus (must be typed in CAPITAL letters):
* locbus (pointer, array_name_in_the_bus, level)
* If level=0, array chosen automatically as follows:
* 1) level = 1 if array has 1 level only (e.g. TSURF )
* 2) level = nk if array has nk levels (e.g. TMOINS)
* 3) level = indx_sfc if array has a level for each surface type (e.g. FC)
* 4) level has to be specified by user if array has more than one level
* that all "belong" to the same surface type (e.g. TSOIL)
*
LOCBUS (IFSOLUACC , FSOLUPAF, 0 )
LOCBUS (IFIRUACC , FIRUPAF, 0 )
LOCBUS (IFRV , FRV , 0 )
LOCBUS (IUDIAG , UDIAG , 0 )
LOCBUS (IVDIAG , VDIAG , 0 )
LOCBUS (ITDIAG , TDIAG , 0 )
LOCBUS (IQDIAG , QDIAG , 0 )
LOCBUS (IALVIS_SOL , ALVIS , 0 )
LOCBUS (ICMU , BM , 0 )
LOCBUS (ICTU , BT , 0 )
LOCBUS (IFC _SOL , FC , 0 )
LOCBUS (IFV _SOL , FV , 0 )
LOCBUS (IHST _SOL , HST , 0 )
LOCBUS (IILMO _SOL , ILMO , 0 )
LOCBUS (IPS , PMOINS , 0 )
LOCBUS (IQS , QSURF , 0 )
LOCBUS (ITS , TSOIL , 1 )
LOCBUS (IEVAP , WFLUX , 0 )
LOCBUS (IZ0H , Z0T , 0 )
LOCBUS (IZ0M , Z0 , 0 )
LOCBUS (IZTSURF , TSURF , 0 )
LOCBUS (IZTSRAD , TSRAD , 0 )
LOCBUS (IALFAT , ALFAT , 0 )
LOCBUS (IALFAQ , ALFAQ , 0 )
LOCBUS (IZCLAY , CLAY , 1 )
LOCBUS (IZSDEPTH , SDEPTH , 0 )
LOCBUS (IZORGM , ORGM , 1 )
LOCBUS (IZRCAN , WVEG , 0 )
LOCBUS (IZSCAN , IVEG , 0 )
LOCBUS (IZFCANMX , FCANMX , 1 )
LOCBUS (IZZOLN , ZOLN , 1 )
LOCBUS (IZALVSC , ALVSC , 1 )
LOCBUS (IZALIRC , ALIRC , 1 )
LOCBUS (IZAILMAX , LAIMAX , 1 )
LOCBUS (IZAILMIN , LAIMIN , 1 )
LOCBUS (IZCWGTMX , VEGMA , 1 )
LOCBUS (IZZRTMAX , ROOTDP , 1 )
LOCBUS (ICOSZ , COSZ , 0 )
LOCBUS (IZQSWD , QSWD , 0 )
LOCBUS (IZSAND , SAND , 1 )
LOCBUS (IXSNO , SNOMA , 0 )
LOCBUS (IZRHOSNO , SNODEN , 0 )
LOCBUS (IZALBSNO , SNOAL , 0 )
LOCBUS (IZGROWTH , VEGGRO , 0 )
LOCBUS (IZTCAN , TVEG , 0 )
LOCBUS (IZTSNOW , TSNO , 0 )
LOCBUS (IQA , HUMOINS, 0 )
LOCBUS (ITA , TMOINS , 0 )
LOCBUS (IZDLAT , DLAT , 0 )
LOCBUS (IZDLON , DLON , 0 )
LOCBUS (IZDELZW , DELZW , 1 )
LOCBUS (IZZBOTW , ZBOTW , 1 )
LOCBUS (IWSOIL , WSOIL , 1 )
LOCBUS (IISOIL , ISOIL , 1 )
LOCBUS (IZUMOINS , UMOINS , 0 )
LOCBUS (IZVMOINS , VMOINS , 0 )
LOCBUS (IZZTSL , ZTSL , 0 )
LOCBUS (IZZUSL , ZUSL , 0 )
IF (RADSLOPE) THEN
LOCBUS (IFLUSOL , FLUSLOP, 0 )
ELSE
LOCBUS (IFLUSOL , FLUSOLIS, 0 )
ENDIF
LOCBUS (IZDLAT , DLAT , 0 )
LOCBUS (IZDLON , DLON , 0 )
LOCBUS (IZTHPOR , THPOR , 1 )
LOCBUS (IZTHLMIN , THLMIN , 1 )
LOCBUS (IZTHLRET , THLRET , 1 )
LOCBUS (IZPSISAT , PSISAT , 1 )
LOCBUS (IZBI , BBI , 1 )
LOCBUS (IZPSIWLT , PSIWLT , 1 )
LOCBUS (IZHCPS , HCPS , 1 )
LOCBUS (IQLWIN , FDSI , 0 )
LOCBUS (IZTCS , TCS , 1 )
LOCBUS (IZTBASE , TBASE , 0 )
LOCBUS (IZTPOND , TPOND , 0 )
LOCBUS (IZZPOND , ZPOND , 0 )
LOCBUS (IZTHFC , THFC , 1 )
LOCBUS (IZRUNOFF , RUNOFF , 0 )
LOCBUS (IZGRKSAT , GRKSAT , 1 )
LOCBUS (IZGRKTLD , GRKTLD , 1 )
LOCBUS (IZTHLRAT , THLRAT , 1 )
LOCBUS (IZXDRAIN , XDRAIN , 0 )
LOCBUS (IZXSLOPE , XSLOPE , 0 )
LOCBUS (IZGRKFAC , GRKFAC , 0 )
LOCBUS (IZWFSURF , WFSURF , 0 )
LOCBUS (IZWFCINT , WFCINT , 0 )
LOCBUS (IZCMAI , CMAI , 0 )
LOCBUS (IZFSGV , FSGV , 0 )
LOCBUS (IZFSGS , FSGS , 0 )
LOCBUS (IZFSGG , FSGG , 0 )
LOCBUS (IZFLGV , FLGV , 0 )
LOCBUS (IZFLGS , FLGS , 0 )
LOCBUS (IZFLGG , FLGG , 0 )
LOCBUS (IZHFSC , HFSC , 0 )
LOCBUS (IZHFSS , HFSS , 0 )
LOCBUS (IZHFSG , HFSG , 0 )
LOCBUS (IZHEVC , HEVC , 0 )
LOCBUS (IZHEVS , HEVS , 0 )
LOCBUS (IZHEVG , HEVG , 0 )
LOCBUS (IZHMFC , HMFC , 0 )
LOCBUS (IZHTCC , HTCC , 0 )
LOCBUS (IZHTCS , HTCS , 0 )
LOCBUS (IZHTC , HTC , 1 )
LOCBUS (IZPCFC , PCFC , 0 )
LOCBUS (IZPCLC , PCLC , 0 )
LOCBUS (IZPCPG , PCPG , 0 )
LOCBUS (IZQFCF , QFCF , 0 )
LOCBUS (IZQFCL , QFCL , 0 )
LOCBUS (IZQFG , QFG , 0 )
LOCBUS (IZWTRC , WTRC , 0 )
LOCBUS (IZQFN , QFN , 0 )
LOCBUS (IZWTRS , WTRS , 0 )
LOCBUS (IZWTRG , WTRG , 0 )
LOCBUS (IZROFC , ROFC , 0 )
LOCBUS (IZROFN , ROFN , 0 )
LOCBUS (IZROVG , ROVG , 0 )
LOCBUS (IZOVRFLW , OVERFL , 0 )
LOCBUS (IZSUBFLW , SUBFLW , 0 )
LOCBUS (IZBASFLW , DRAIN , 0 )
LOCBUS (IZRSMIN , STOMR , 1 )
LOCBUS (IZQA50 , QA50 , 1 )
LOCBUS (IZVPDA , VPDA , 1 )
LOCBUS (IZVPDB , VPDB , 1 )
LOCBUS (IZPSIGA , PSIGA , 1 )
LOCBUS (IZPSIGB , PSIGB , 1 )
LOCBUS (IZCFLUX , CFLUX , 0 )
LOCBUS (IZPCPN , PCFG , 0 )
LOCBUS (IZQFC , QFC , 1 )
LOCBUS (IZHMFG , HMFG , 1 )
LOCBUS (IZHMFN , HMFN , 0 )
LOCBUS (IZALGDRY , ALGDRY , 0 )
LOCBUS (IZALGWET , ALGWET , 0 )
LOCBUS (IFC , FCOVC , 0 )
LOCBUS (IFCS , FCOVCS , 0 )
LOCBUS (IFG , FCOVG , 0 )
LOCBUS (IFGS , FCOVGS , 0 )
LOCBUS (IZFL , FL , 0 )
LOCBUS (IRAINRATE , RAINRATE, 0 )
LOCBUS (ISNOWRATE , SNOWRATE, 0 )
*
IC = CLASS_IC
ICP1= CLASS_IC+1
IWF=0
ILAI=0
IHGT=0
IALC=0
IALS=0
IALG=0
IPCP=4
*
IF(KOUNT.EQ.0) THEN
*
* Initialize the soil characteristics
* using the soil texture
*
call classb
(ZTHPOR,ZTHLRET,ZTHLMIN,ZBI,ZPSISAT,
1 ZGRKSAT,ZGRKTLD,ZTHLRAT,ZHCPS,ZTCS,
2 ZTHFC,ZPSIWLT,ZDELZW,ZZBOTW,ZALGWET,
3 ZALGDRY,ZSAND,ZCLAY,ZORGM,ZSDEPTH,
4 N,1,N,1,IG)
*
do I=1,N
ztsurf(i)=ta(i)
qs(i) =qa(i)
enddo
*
* FILL THE ARRAYS TO BE AGGREGATED LATER IN S/R AGREGE
CALL FILLAGG
( BUS, BUSSIZ, PTSURF, PTSURFSIZ, INDX_SOIL,
+ SURFLEN )
return
*
ENDIF
*
DO J=1,IG
DO I=1,N
ISAND(I,J)=NINT(ZSAND(I,J))
ENDDO
ENDDO
DO I=1,N
ZBLEND(I)=ZZUSL(I)
ILAND(I)=I
ZUN(I) = ZU
ZTN(I) = ZT
QSWINV(I)=0.5*FLUSOL(I)
QSWINI(I)=0.5*FLUSOL(I)
RRATE(I)=RRATE(I)*1000.
SRATE(I)=SRATE(I)*1000.
PCPR(I)=RRATE(I)+SRATE(I)
*-----------------------------------------------------------------
* correctif pour le cas ou COSZS n'est pas disponible
if(FLUSOL(I).gt.20. .and. COSZS(I).le.0.)
1 COSZS(I)=FLUSOL(I)*.0006
*----------------------------------------------------------------
IF(ABS(COSZS(I)).LT.0.10) COSZS(I)=0.10
IF(PCPR(I).GT.0.) THEN
XDIFFUS=1.0
ELSE
XDIFFUS=MIN(1.0-0.9*COSZS(I),1.)
ENDIF
QSOL(I)=MAX(QSWINV(I)/COSZS(I),0.)
ZQSWD(I)=2*QSOL(I)*XDIFFUS
END DO
*
CALL CLASSI
(VPD,TADP,PADRY,RHOAIR,FCLOUD,RHOSNI,
1 RPCP,TRPCP,SPCP,TSPCP,
2 TA,QA,COSZS,PCPR,RRATE,SRATE,PS,QSOL,QSOL,ZQSWD,
3 IPCP,M,1,N,TRNCH)
*
CALL CLASSA
(FFC, FG, FCS, FGS, ALVSCN, ALIRCN,
1 ALVSG, ALIRG, ALVSCS, ALIRCS, ALVSSN, ALIRSN,
2 TRVSCN, TRIRCN, TRVSCS, TRIRCS, AILCAN, AILCNS,
3 FSVF, FSVFS, RAICAN, RAICNS, SNOCAN, SNOCNS,
4 FRAINC, FSNOWC, DISP, DISPS, ZOMLNC, ZOMLCS,
5 ZOELNC, ZOELCS, ZOMLNG, ZOMLNS, ZOELNG, ZOELNS,
6 CHCAP, CHCAPS, CMASSC, CMASCS, CWCAP, CWCAPS,
7 RC, RCS, DLEAF, FROOT, ZPLIMC, ZPLIMG,
8 ZPLMCS, ZPLMGS, TRSNOW, ZSNOW,
9 ALVS, ALIR, ZHTCC, ZHTCS, ZHTC,
A ZWTRC, ZWTRS, ZWTRG, ZCMAI,
B ZFCANMX,ZZOLN, ZALVSC, ZALIRC, ZAILMAX,ZAILMIN,
C ZCWGTMX,ZZRTMAX,ZRSMIN, ZQA50, ZVPDA, ZVPDB,
D ZPSIGA, ZPSIGB, AILDAT, HGTDAT, ACVDAT, ACIDAT,
E ASVDAT, ASIDAT, AGVDAT, AGIDAT, ZALGWET,ZALGDRY,
F THLIQ, THICE, TS, ZRCAN, ZSCAN, ZTCAN,
G ZGROWTH,XSNO, ZTSNOW, ZRHOSNO,ZALBSNO,ZBLEND,
H FCLOUD, TA, VPD, RHOAIR, COSZS, QSWINV,
I ZDLAT, ILAND, ZDLON, ZDELZW, ZZBOTW, Z0M,
J ZTHPOR, ZTHLMIN,ZPSISAT,ZBI, ZPSIWLT,ZHCPS,
K ISAND, IDAY, M, 1, N, TRNCH,
L IC, ICP1, IG, 0, 2,
M ILAI, IHGT, IALC, IALS, IALG)
*
CALL CLASST
(TBARC, TBARG, TBARCS, TBARGS, THLIQC, THLIQG,
1 THICEC, THICEG, HCPC, HCPG, GZEROC, GZEROG, QLWAVG,
2 GZROCS, GZROGS, G12C, G12G, G12CS, G12GS, G23C, G23G,
3 G23CS, G23GS, QFREZC, QFREZG, QMELTC, QMELTG, EVAPC, EVAPCG,
4 EVAPG, EVAPCS, EVPCSG, EVAPGS, TCANO, TCANS,
5 RAICAN, SNOCAN, RAICNS, SNOCNS, CHCAP, CHCAPS, ZILMO, ZFRV,
6 TPONDC, TPONDG, TPNDCS, TPNDGS, TSNOCS, TSNOGS, ZH,
7 ITERCT, CDH, CMU, QSENS, TFLUX, QEVAP, EVAPO, QFLUX,
8 EVPPOT, ZCFLUX, EVAPB, ZTSRAD, QS, ZTSURF, ST, SU,
9 SV, SQ, ZFSGV, ZFSGS, ZFSGG, ZFLGV, ZFLGS, ZFLGG,
A ZHFSC, ZHFSS, ZHFSG, ZHEVC, ZHEVS, ZHEVG, ZHMFC, ZHTCC,
B ZHTCS, ZHTC, WTABLE, ZZUSL, ZZTSL, ZUN, ZTN,
C VPD, TADP, RHOAIR, QSWINV, QSWINI, QLWIN, UA, VA,
D TA, QA, PADRY, FFC, FG, FCS, FGS, DLEAF,
E AILCAN, AILCNS, FSVF, FSVFS, ALVSCN, ALIRCN, ALVSG, ALIRG,
F ALVSCS, ALIRCS, ALVSSN, ALIRSN, TRVSCN, TRIRCN, TRVSCS, TRIRCS,
G RC, RCS, FRAINC, FSNOWC, CMASSC, CMASCS, DISP, DISPS,
H ZOMLNC, ZOELNC, ZOMLNG, ZOELNG, ZOMLCS, ZOELCS, ZOMLNS, ZOELNS,
I TS, THLIQ, THICE, ZTPOND, ZZPOND, ZTBASE, ZTCAN, ZTSNOW,
J ZSNOW, TRSNOW, ZRHOSNO,ZTHPOR, ZTHLRET,ZTHLMIN,ZTHFC, ZDLAT,
K ZHCPS, ZTCS, ZDELZW, ZZBOTW, ISAND,
L 1, M, 1, N, TRNCH, IC, IG, 2,
M 2, NLANDCS,NLANDGS,NLANDC, NLANDG, NLANDI, ITER, NITER )
*
CALL CLASSW
( THLIQ, THICE, TS, ZTCAN, ZRCAN, ZSCAN,
1 ZRUNOFF,XSNO, ZTSNOW, ZRHOSNO,ZALBSNO,
2 ZZPOND, ZTPOND, ZGROWTH,ZTBASE,
3 ZPCFC, ZPCLC, ZPCPN, ZPCPG, ZQFCF, ZQFCL,
4 ZQFN, ZQFG, ZQFC, ZHMFC, ZHMFG, ZHMFN,
5 ZHTCC, ZHTCS, ZHTC, ZROFC, ZROFN, ZROVG,
6 ZWTRS, ZWTRG, ZOVRFLW,ZSUBFLW,ZBASFLW,EVAPO,
7 TBARC, TBARG, TBARCS, TBARGS, THLIQC, THLIQG,
8 THICEC, THICEG, HCPC, HCPG, RPCP, TRPCP,
9 SPCP, TSPCP, PCPR, TA, RHOSNI,
A FFC, FG, FCS, FGS, TPONDC, TPONDG,
B TPNDCS, TPNDGS, EVAPC, EVAPCG, EVAPG, EVAPCS,
C EVPCSG, EVAPGS, QFREZC, QFREZG, QMELTC, QMELTG,
D RAICAN, SNOCAN, RAICNS, SNOCNS, FROOT, AILCAN,
E AILCNS, FSVF, FSVFS, CWCAP, CWCAPS, TCANO,
F TCANS, CHCAP, CHCAPS, CMASSC, CMASCS, ZSNOW,
G GZEROC, GZEROG, GZROCS, GZROGS, G12C, G12G,
H G12CS, G12GS, G23C, G23G, G23CS, G23GS,
I TSNOCS, TSNOGS, ZPLIMC, ZPLIMG, ZPLMCS, ZPLMGS,
J ZTHPOR, ZTHLRET,ZTHLMIN,ZBI, ZPSISAT,ZGRKSAT,
K ZGRKTLD,ZTHLRAT,ZTHFC, ZXDRAIN,ZHCPS,
L ZDELZW, ZZBOTW, ZXSLOPE,ZGRKFAC,ZWFSURF,ZWFCINT,
M ISAND, IWF, M, 1, N,
N TRNCH, IC, IG, IG+1, IG+2,
O NLANDCS,NLANDGS,NLANDC, NLANDG, NLANDI )
*VDIR NODEP
do i=1,n
*
ALVIS_SOL(I) = 0.5*(ALVS(I)+ALIR(I))
FSOLUACC(I) = FSOLUACC(I)+FLUSOL(I)*ALVIS_SOL(I)*DT
FIRUACC(I) = FIRUACC(I) +QLWAVG(I) * DT
ZFL(I)=FFC(I)*GZEROC(I)+FG(I)*GZEROG(I)+FCS(I)*GZROCS(I)+
+ FGS(I)*GZROGS(I)
*
**** calculs valides dans le cas explicite seulement
CTU (I) = 0.
****
*
end do
*
* FILL THE ARRAYS TO BE AGGREGATED LATER IN S/R AGREGE
CALL FILLAGG
( BUS, BUSSIZ, PTSURF, PTSURFSIZ, INDX_SOIL,
+ SURFLEN )
*
RETURN
END