!-------------------------------------- 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 INICOVER
**
*
#include "phy_macros_f.h"
SUBROUTINE INICOVER( F, FSIZ, KOUNT, NI ) 3,58
*
#include "impnone.cdk"
*
INTEGER NI, KOUNT
INTEGER FSIZ
REAL F(FSIZ)
integer i,j
*
*
*Author
* Bernard Bilodeau and Stephane Belair (May 2000)
*
*Revision
* 001 B. Dugas (June 2000)
* Get it to work
* 002 B. Bilodeau (June 2001)
* Automatic arrays
* 003 Y. Delage (June 2004)
* Include recipes for CLASS
* 004 A. Lemonsu (June 2005)
* Replace vegf by covf
* Change the name
* 005 A. Lemonsu (June 2005)
* Invert class 25 and class 26 (according to GENGEO classes)
* 006 B. Bilodeau and S. Chamberland (Sept 2007)
* Modify Z0MDAT to be consistent with gengeo
*
*
*Object
* Initialize vegetation fields for the surface schemes
*
*
*Arguments
*
* - Input/Ouput -
* F field for permanent physics variables
* - Input -
* FSIZ dimension of F
* KOUNT current timestep number
* NI horizontal slice dimension
*
*
*NOTES INISURF has been split in two subroutines:
* INISURF and INICOVER. The former calls the latter.
*
*
#include "nclassvg.cdk"
#include "classlvls.cdk"
*
**
*#include "indx_sfc.cdk"
*#include "consphy.cdk"
*#include "isbapar.cdk"
*#include "surfacepar.cdk"
*
#include "options.cdk"
#include "phybus.cdk"
*
*
* the geophysical fields determined from
* vegetation are done so using the following
* classification:
*
* Class Vegetation type
* ===== ===============
* 1 (salt) water
* 2 ice
* 3 inland lake
* 4 evergreen needleleaf trees
* 5 evergreen broadleaf trees
* 6 deciduous needleleaf trees
* 7 deciduous broadleaf trees
* 8 tropical broadleaf trees
* 9 drought deciduous trees
* 10 evergreen broadleaf shrub
* 11 deciduous shrubs
* 12 thorn shrubs
* 13 short grass and forbs
* 14 long grass
* 15 crops
* 16 rice
* 17 sugar
* 18 maize
* 19 cotton
* 20 irrigated crops
* 21 urban
* 22 tundra
* 23 swamp
* 24 desert
* 25 mixed wood forests
* 26 mixed shrubs
*
*
*
*********************************************************************
* TABLES FOR THE VEG CHARACTERISTICS FOR EACH VEG TYPE
*********************************************************************
*
*
REAL ALDAT(NCLASS), D2DAT(NCLASS), RSMINXDAT(NCLASS)
REAL LAIDAT(NCLASS), VEGDAT(NCLASS)
REAL CVDAT(NCLASS), RGLDAT(NCLASS), GAMMADAT(NCLASS)
REAL ALVSDAT(NCLASS), ALNIDAT(NCLASS),RSMINDAT(NCLASS)
REAL QA50DAT(NCLASS),VPDADAT(NCLASS),VPDBDAT(NCLASS)
REAL PSGADAT(NCLASS),PSGBDAT(NCLASS),Z0MDAT(NCLASS)
REAL LAIMXDAT(NCLASS),LAIMNDAT(NCLASS),VGMASDAT(NCLASS)
REAL ROOTDAT(NCLASS),FVEG(4)
INTEGER VGCLASS(NCLASS),VG000(NCLASS)
*
DATA ALDAT/
1 0.13 , 0.70 , 0.13 , 0.14 , 0.12 ,
1 0.14 , 0.18 , 0.13 , 0.17 , 0.14 ,
1 0.18 , 0.19 , 0.20 , 0.19 , 0.20 ,
1 0.21 , 0.18 , 0.18 , 0.25 , 0.18 ,
1 0.12 , 0.17 , 0.12 , 0.30 , 0.15 ,
1 0.15 /
*
DATA D2DAT/
1 1.0 , 1.0 , 1.0 , 3.0 , 3.0 ,
1 1.0 , 3.0 , 5.0 , 5.0 , 2.0 ,
1 2.0 , 2.0 , 1.5 , 2.0 , 2.0 ,
1 1.2 , 1.0 , 1.5 , 2.0 , 1.5 ,
1 1.0 , 1.0 , 2.0 , 1.0 , 2.0 ,
1 2.0 /
*
DATA RSMINXDAT/
1 500. , 500. , 500. , 250. , 250. ,
1 250. , 250. , 250. , 250. , 150. ,
1 150. , 150. , 40. , 40. , 40. ,
1 40. , 40. , 40. , 40. , 150. ,
1 150. , 150. , 150. , 500. , 250. ,
1 150. /
DATA LAIDAT/
1 0.00 , 0.00 , 0.00 , 5.00 , 6.00 ,
1 -99. , -99. , 6.00 , 4.00 , 3.00 ,
1 -99. , 3.00 , 1.00 , -99. , -99. ,
1 -99. , -99. , -99. , -99. , 1.00 ,
1 1.00 , -99. , 4.00 , 0.00 , -99. ,
1 -99. /
DATA VEGDAT/
1 0.00 , 0.00 , 0.00 , 0.90 , 0.99 ,
1 0.90 , 0.90 , 0.99 , 0.90 , 0.50 ,
1 0.50 , 0.50 , 0.85 , 0.30 , -99. ,
1 -99. , -99. , -99. , -99. , 0.85 ,
1 0.10 , 0.50 , 0.60 , 0.00 , 0.90 ,
1 0.90 /
DATA CVDAT/
1 2.0E-5 , 2.0E-5 , 2.0E-5 , 1.0E-5 , 1.0E-5 ,
1 1.0E-5 , 1.0E-5 , 1.0E-5 , 1.0E-5 , 2.0E-5 ,
1 2.0E-5 , 2.0E-5 , 2.0E-5 , 2.0E-5 , 2.0E-5 ,
1 2.0E-5 , 2.0E-5 , 2.0E-5 , 2.0E-5 , 2.0E-5 ,
1 2.0E-5 , 2.0E-5 , 2.0E-5 , 2.0E-5 , 2.0E-5 ,
1 2.0E-5 /
DATA RGLDAT/
1 100. , 100. , 100. , 30. , 30. ,
1 30. , 30. , 30. , 30. , 100. ,
1 100. , 100. , 100. , 100. , 100. ,
1 100. , 100. , 100. , 100. , 100. ,
1 100. , 100. , 100. , 100. , 100. ,
1 100. /
DATA GAMMADAT/
1 0. , 0. , 0. , 0.04 , 0.04 ,
1 0.04 , 0.04 , 0.04 , 0.04 , 0. ,
1 0. , 0. , 0. , 0. , 0. ,
1 0. , 0. , 0. , 0. , 0. ,
1 0. , 0. , 0. , 0. , 0. ,
1 0. /
*
DATA RSMINDAT/
1 0.0 , 0.0 , 0.0 , 250. , 250. ,
1 263. , 130. , 130. , 122. , 323. ,
1 855. , 500. , 150. , 150. , 100. ,
1 120. , 278. , 90. , 112. , 86. ,
1 0.0 , 200. , 200. , 0.0 , 165. ,
1 855. /
*
DATA QA50DAT/
1 30. , 30. , 30. , 30. , 30. ,
1 30. , 50. , 30. , 30. , 30. ,
1 30. , 30. , 35. , 30. , 30. ,
1 30. , 30. , 30. , 30. , 30. ,
1 30. , 50. , 30. , 30. , 30. ,
1 30. /
*
DATA VPDADAT/
1 0.0 , 0.0 , 0.0 , 0.57 , 0.5 ,
1 0.5 , 0.60 , 0.45 , 0.5 , 0.5 ,
1 0.5 , 0.5 , 0.5 , 0.5 , 0.5 ,
1 0.5 , 0.5 , 0.5 , 0.5 , 0.5 ,
1 0.5 , 0.62 , 0.5 , 0.5 , 0.40 ,
1 0.5 /
*
DATA VPDBDAT/
1 1.0 , 1.0 , 1.0 , 1.0 , 1.0 ,
1 1.0 , 0.5 , 0.0 , 1.0 , 1.0 ,
1 1.0 , 1.0 , 1.0 , 1.0 , 1.0 ,
1 1.0 , 1.0 , 1.0 , 1.0 , 1.0 ,
1 1.0 , 0.4 , 1.0 , 1.0 , 0.6 ,
1 1.0 /
*
DATA PSGADAT/
1 100 , 100 , 100 , 100 , 100 ,
1 100 , 100 , 100 , 100 , 100 ,
1 100 , 100 , 100 , 100 , 100 ,
1 100 , 100 , 100 , 100 , 100 ,
1 100 , 100 , 100 , 100 , 100 ,
1 100 /
*
DATA PSGBDAT/
1 5. , 5. , 5. , 5. , 5. ,
1 5. , 5. , 5. , 5. , 5. ,
1 5. , 5. , 5. , 5. , 5. ,
1 5. , 5. , 5. , 5. , 5. ,
1 5. , 5. , 5. , 5. , 5. ,
1 5. /
*
DATA ALVSDAT/
1 0.0 , 0.0 , 0.0 , 0.03 , 0.03 ,
1 0.03 , 0.05 , 0.03 , 0.05 , 0.03 ,
1 0.05 , 0.06 , 0.06 , 0.05 , 0.06 ,
1 0.06 , 0.05 , 0.05 , 0.07 , 0.06 ,
1 0.09 , 0.05 , 0.03 , 0.30 , 0.04 ,
1 0.04 /
*
DATA ALNIDAT/
1 0.0 , 0.0 , 0.0 , 0.19 , 0.23 ,
1 0.19 , 0.29 , 0.23 , 0.29 , 0.19 ,
1 0.29 , 0.32 , 0.34 , 0.31 , 0.34 ,
1 0.36 , 0.31 , 0.31 , 0.43 , 0.36 ,
1 0.15 , 0.29 , 0.25 , 0.30 , 0.26 ,
1 0.26 /
*
DATA Z0MDAT /
1 0.001 , 0.001 , 0.001 , 1.5 , 3.5 ,
1 1.0 , 2.0 , 3.0 , 0.8 , 0.05 ,
1 0.15 , 0.15 , 0.02 , 0.08 , 0.08 ,
1 0.08 , 0.35 , 0.25 , 0.10 , 0.08 ,
1 1.35 , 0.01 , 0.05 , 0.05 , 1.5 ,
1 0.05 /
*
DATA LAIMXDAT/
1 0.0 , 0.0 , 0.0 , 2.0 , 10. ,
1 2.0 , 6.0 , 10. , 4.0 , 2.0 ,
1 4.0 , 3.0 , 3.0 , 4.0 , 4.0 ,
1 6.5 , 5.0 , 4.0 , 5.0 , 4.0 ,
1 0.0 , 1.5 , 1.5 , 0.0 , 5.5 ,
1 3.0 /
*
DATA LAIMNDAT/
1 0.0 , 0.0 , 0.0 , 1.6 , 10. ,
1 0.5 , 0.5 , 10. , 4.0 , 2.0 ,
1 0.5 , 3.0 , 3.0 , 4.0 , 0.0 ,
1 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ,
1 0.0 , 1.5 , 1.5 , 0.0 , 1.0 ,
1 3.0 /
*
DATA VGMASDAT/
1 0.0 , 0.0 , 0.0 , 25. , 50. ,
1 15. , 20. , 40. , 15. , 2. ,
1 8. , 8. , 1.5 , 3. , 2. ,
1 2. , 5. , 5. , 2. , 2. ,
1 0. , 0.2 , 1.0 , 0. , 20. ,
1 8. /
*
DATA ROOTDAT/
1 0.0 , 0.0 , 0.0 , 1.0 , 5.0 ,
1 1.0 , 2.0 , 5.0 , 5.0 , 0.2 ,
1 1.0 , 5.0 , 1.2 , 1.2 , 1.2 ,
1 1.2 , 1.0 , 1.5 , 2.0 , 5.0 ,
1 0. , 0.1 , 5.0 , 0. , 1.2 ,
1 1.2 /
*
DATA VGCLASS/
1 0 , 0 , 0 , 1 , 2 ,
1 1 , 2 , 2 , 2 , 4 ,
1 4 , 4 , 4 , 4 , 3 ,
1 3 , 3 , 3 , 3 , 3 ,
1 5 , 4 , 4 , 5 , 2 ,
1 4 /
*
DATA VG000 /
1 1 , 1 , 1 , 1 , 1 ,
1 1 , 1 , 1 , 1 , 1 ,
1 1 , 1 , 1 , 1 , 1 ,
1 1 , 1 , 1 , 1 , 1 ,
1 1 , 1 , 1 , 1 , 1 ,
1 1 /
*
DATA FVEG/ 0.90, 0.90, 0.70, 0.60 /
*
*
*********************************************************************
* TABLES DESCRIBING THE ANNUAL EVOLUTION OF VEG FIELDS
*********************************************************************
*
*
REAL VEGCROPS(13)
DATA VEGCROPS/
1 0.05 , 0.05 , 0.05 , 0.10 , 0.20 ,
1 0.40 , 0.80 , 0.80 , 0.90 , 0.05 ,
1 0.05 , 0.05 , 0.05 /
SAVE VEGCROPS
*
*
REAL LAI6(13), LAI7(13), LAI11(13), LAI14(13), LAI15(13),
1 LAI16(13), LAI17(13), LAI18(13), LAI19(13), LAI22(13),
1 LAI25(13), LAI26(13)
*
DATA LAI6 /
1 0.1 , 0.1 , 0.5 , 1.0 , 2.0 ,
1 4.0 , 5.0 , 5.0 , 4.0 , 2.0 ,
1 1.0 , 0.1 , 0.1 /
DATA LAI7 /
1 0.1 , 0.1 , 0.5 , 1.0 , 2.0 ,
1 4.0 , 5.0 , 5.0 , 4.0 , 2.0 ,
1 1.0 , 0.1 , 0.1 /
DATA LAI11/
1 0.5 , 0.5 , 1.0 , 1.0 , 1.5 ,
1 2.0 , 3.0 , 3.0 , 2.0 , 1.5 ,
1 1.0 , 0.5 , 0.5 /
DATA LAI14/
1 0.5 , 0.5 , 0.5 , 0.5 , 0.5 ,
1 0.5 , 1.0 , 2.0 , 2.0 , 1.5 ,
1 1.0 , 1.0 , 0.5 /
DATA LAI15/
1 0.1 , 0.1 , 0.1 , 0.5 , 1.0 ,
1 2.0 , 3.0 , 3.5 , 4.0 , 0.1 ,
1 0.1 , 0.1 , 0.1 /
DATA LAI16/
1 0.1 , 0.1 , 0.1 , 0.5 , 1.0 ,
1 2.5 , 4.0 , 5.0 , 6.0 , 0.1 ,
1 0.1 , 0.1 , 0.1 /
DATA LAI17/
1 0.1 , 0.1 , 0.1 , 0.5 , 1.0 ,
1 3.0 , 4.0 , 4.5 , 5.0 , 0.1 ,
1 0.1 , 0.1 , 0.1 /
DATA LAI18/
1 0.1 , 0.1 , 0.1 , 0.5 , 1.0 ,
1 2.0 , 3.0 , 3.5 , 4.0 , 0.1 ,
1 0.1 , 0.1 , 0.1 /
DATA LAI19/
1 0.1 , 0.1 , 0.1 , 0.5 , 1.0 ,
1 3.0 , 4.0 , 4.5 , 5.0 , 0.1 ,
1 0.1 , 0.1 , 0.1 /
DATA LAI22/
1 1.0 , 1.0 , 0.5 , 0.1 , 0.1 ,
1 0.1 , 0.1 , 1.0 , 2.0 , 1.5 ,
1 1.5 , 1.0 , 1.0 /
DATA LAI25/
1 3.0 , 3.0 , 3.0 , 4.0 , 4.5 ,
1 5.0 , 5.0 , 5.0 , 4.0 , 3.0 ,
1 3.0 , 3.0 , 3.0 /
DATA LAI26/
1 3.0 , 3.0 , 3.0 , 4.0 , 4.5 ,
1 5.0 , 5.0 , 5.0 , 4.0 , 3.0 ,
1 3.0 , 3.0 , 3.0 /
*
*
SAVE LAI6, LAI7, LAI11, LAI14, LAI15, LAI16, LAI17,
1 LAI18, LAI19, LAI22, LAI25, LAI26
*
*
*********************************************************************
*
*
REAL JULIAND
REAL JULIEN, JULIENS
REAL INTERPVEG
*
EXTERNAL JULIAND, INTERPVEG, AGGCOVERNAT, INISOILI
*
************************************************************************
* AUTOMATIC ARRAYS
************************************************************************
*
AUTOMATIC (ALDATD , REAL , (NCLASS) )
AUTOMATIC (D2DATD , REAL , (NCLASS) )
AUTOMATIC (RSMINDATD , REAL , (NCLASS) )
AUTOMATIC (LAIDATDN , REAL , (NCLASS) )
AUTOMATIC (LAIDATDS , REAL , (NCLASS) )
AUTOMATIC (VEGDATDN , REAL , (NCLASS) )
AUTOMATIC (VEGDATDS , REAL , (NCLASS) )
AUTOMATIC (CVDATD , REAL , (NCLASS) )
AUTOMATIC (RGLDATD , REAL , (NCLASS) )
AUTOMATIC (GAMMADATD , REAL , (NCLASS) )
*
************************************************************************
*
*
****
*
if(ischmsol.eq.3) then
*
*
* Determine the current julian day
*
julien = JULIAND
( delt, kount, date )
*
*
*
* Do the aggregation
*
DO i=1,nclass
aldatd(i) = aldat(i)
d2datd(i) = d2dat(i)
rsmindatd(i) = RSMINXDAT(i)
laidatdn(i) = laidat(i)
laidatds(i) = laidat(i)
vegdatdn(i) = vegdat(i)
vegdatds(i) = vegdat(i)
cvdatd(i) = cvdat(i)
rgldatd(i) = rgldat(i)
gammadatd(i) = gammadat(i)
END DO
*
*
* Fill the LAIDATD and VEGDATD fields for
* land use classes varying with seasons
* (i.e., replace the -99 values in the table
* with temporal interpolations from the
* tables above)
*
* tables for northern hemisphere
*
laidatdn( 6) = interpveg
(julien , lai6 )
laidatdn( 7) = interpveg
(julien , lai7 )
laidatdn(11) = interpveg
(julien , lai11)
laidatdn(14) = interpveg
(julien , lai14)
laidatdn(15) = interpveg
(julien , lai15)
laidatdn(16) = interpveg
(julien , lai16)
laidatdn(17) = interpveg
(julien , lai17)
laidatdn(18) = interpveg
(julien , lai18)
laidatdn(19) = interpveg
(julien , lai19)
laidatdn(22) = interpveg
(julien , lai22)
laidatdn(25) = interpveg
(julien , lai25)
laidatdn(26) = interpveg
(julien , lai26)
*
vegdatdn(15) = interpveg
(julien , vegcrops)
vegdatdn(16) = interpveg
(julien , vegcrops)
vegdatdn(17) = interpveg
(julien , vegcrops)
vegdatdn(18) = interpveg
(julien , vegcrops)
vegdatdn(19) = interpveg
(julien , vegcrops)
*
* tables for southern hermisphere
juliens = julien - 183
if (juliens.lt.0)
+ juliens = juliens + 366
*
laidatds( 6) = interpveg
(juliens, lai6 )
laidatds( 7) = interpveg
(juliens, lai7 )
laidatds(11) = interpveg
(juliens, lai11)
laidatds(14) = interpveg
(juliens, lai14)
laidatds(15) = interpveg
(juliens, lai15)
laidatds(16) = interpveg
(juliens, lai16)
laidatds(17) = interpveg
(juliens, lai17)
laidatds(18) = interpveg
(juliens, lai18)
laidatds(19) = interpveg
(juliens, lai19)
laidatds(22) = interpveg
(juliens, lai22)
laidatds(25) = interpveg
(juliens, lai25)
laidatds(26) = interpveg
(juliens, lai26)
*
vegdatds(15) = interpveg
(juliens, vegcrops)
vegdatds(16) = interpveg
(juliens, vegcrops)
vegdatds(17) = interpveg
(juliens, vegcrops)
vegdatds(18) = interpveg
(juliens, vegcrops)
vegdatds(19) = interpveg
(juliens, vegcrops)
*
*
*
CALL aggcovernat
( f(covf), laidatdn , laidatds , f(lai) ,
1 f(dlat), ni, nclass, nclassurb )
CALL aggcovernat
( f(covf), vegdatdn , vegdatds , f(vegfrac),
1 f(dlat), ni, nclass, nclassurb )
CALL aggcovernat
( f(covf), aldatd , aldatd , f(alveg) ,
1 f(dlat), ni, nclass, nclassurb )
CALL aggcovernat
( f(covf), d2datd , d2datd , f(rootdp) ,
1 f(dlat), ni, nclass, nclassurb )
CALL aggcovernat
( f(covf), rsmindatd , rsmindatd , f(stomr) ,
1 f(dlat), ni, nclass, nclassurb )
CALL aggcovernat
( f(covf), cvdatd , cvdatd , f(cveg) ,
1 f(dlat), ni, nclass, nclassurb )
CALL aggcovernat
( f(covf), rgldatd , rgldatd , f(rgl) ,
1 f(dlat), ni, nclass, nclassurb )
CALL aggcovernat
( f(covf), gammadatd , gammadatd , f(gamveg) ,
1 f(dlat), ni, nclass, nclassurb )
*
*
elseif(ischmsol.eq.2) then
*
call agvgclas
(f(covf),ALVSDAT, VGCLASS,f(ALVSC), NI,class_ic+1,
1 NCLASS+NCLASSURB)
call agvgclas
(f(covf),ALNIDAT, VGCLASS,f(ALIRC), NI,class_ic+1,
1 NCLASS+NCLASSURB)
call agvgclas
(f(covf),LAIMXDAT,VGCLASS,f(LAIMAX),NI,class_ic ,
1 NCLASS+NCLASSURB)
call agvgclas
(f(covf),LAIMNDAT,VGCLASS,f(LAIMIN),NI,class_ic ,
1 NCLASS+NCLASSURB)
call agvgclas
(f(covf),VGMASDAT,VGCLASS,f(VEGMA), NI,class_ic ,
1 NCLASS+NCLASSURB)
call agvgclas
(f(covf),ROOTDAT, VGCLASS,f(ROOTDP),NI,class_ic ,
1 NCLASS+NCLASSURB)
call agvgclas
(f(covf),Z0MDAT, VGCLASS,f(ZOLN), NI,class_ic+1,
1 NCLASS+NCLASSURB)
call agvgclas
(f(covf),RSMINDAT,VGCLASS,f(STOMR), NI,class_ic ,
1 NCLASS+NCLASSURB)
call agvgclas
(f(covf),QA50DAT, VGCLASS,f(QA50), NI,class_ic ,
1 NCLASS+NCLASSURB)
call agvgclas
(f(covf),VPDADAT, VGCLASS,f(VPDA), NI,class_ic ,
1 NCLASS+NCLASSURB)
call agvgclas
(f(covf),VPDBDAT, VGCLASS,f(VPDB), NI,class_ic ,
1 NCLASS+NCLASSURB)
call agvgclas
(f(covf),PSGADAT, VGCLASS,f(PSIGA), NI,class_ic ,
1 NCLASS+NCLASSURB)
call agvgclas
(f(covf),PSGBDAT, VGCLASS,f(PSIGB), NI,class_ic ,
1 NCLASS+NCLASSURB)
call agvgclas
(f(covf),ROOTDAT, VG000 ,f(SDEPTH),NI,1 ,
1 NCLASS+NCLASSURB)
call agvgmask
(f(covf), VGCLASS,f(FCANMX),NI,class_ic+1,
1 NCLASS+NCLASSURB)
*
DO J=1,4
DO i=0,ni-1
f(FCANMX + i +(j-1)*ni) = f(FCANMX + i +(j-1)*ni)*fveg(j)
end do
END DO
*
endif
*
*
RETURN
END