Back to home page

darwin3

 
 

    


File indexing completed on 2025-09-13 12:07:40 UTC

view on githubraw file Latest commit 11d365ac on 2025-06-05 16:41:12 UTC
8fbfd1f382 Oliv*0001 #include "DARWIN_OPTIONS.h"
                0002 #include "EXF_OPTIONS.h"
                0003 
                0004 CBOP
                0005 C !ROUTINE: DARWIN_EXF_LOAD
                0006 
                0007 C !INTERFACE: ==========================================================
                0008       SUBROUTINE DARWIN_EXF_LOAD( mytime, myiter, mythid )
                0009 
                0010 C !DESCRIPTION:
                0011 C     Load and interpolate forcing fields for darwin package
                0012 
                0013 C !USES: ===============================================================
                0014       IMPLICIT NONE
                0015 #include "SIZE.h"
                0016 #include "GRID.h"
                0017 #include "EEPARAMS.h"
                0018 #include "PARAMS.h"
                0019 #ifdef ALLOW_EXF
d9e107d180 Oliv*0020 #include "EXF_INTERP_SIZE.h"
8fbfd1f382 Oliv*0021 #endif
                0022 #include "DARWIN_SIZE.h"
                0023 #include "DARWIN_EXF_PARAMS.h"
                0024 #include "DARWIN_EXF_FIELDS.h"
                0025 
                0026 C !INPUT PARAMETERS: ===================================================
                0027       _RL     mytime
                0028       integer myiter
                0029       integer mythid
                0030 CEOP
                0031 
                0032 #ifdef ALLOW_DARWIN
                0033 #ifdef ALLOW_EXF
                0034 
                0035 C !LOCAL VARIABLES: ====================================================
                0036 #ifdef ALLOW_RADTRANS
                0037       INTEGER l
                0038 #endif
                0039 
                0040 c--   read forcing fields from files and temporal interpolation
                0041 
                0042       IF (.NOT.(darwin_loadFieldsEarly.AND.myiter.EQ.niter0)) THEN
                0043 
6ed0cf4850 Oliv*0044 
fecf0f6104 Oliv*0045        call exf_set_fld(
                0046      &     'PAR', PARfile, PARmask,
                0047      &     PARStartTime, PARperiod, PARRepCycle,
8fbfd1f382 Oliv*0048      &     darwin_inscal_PAR,
                0049      &     PAR_exfremo_intercept, PAR_exfremo_slope,
fecf0f6104 Oliv*0050      &     surfPAR, PAR0, PAR1,
8fbfd1f382 Oliv*0051 #ifdef USE_EXF_INTERPOLATION
                0052      &     PAR_lon0, PAR_lon_inc,
                0053      &     PAR_lat0, PAR_lat_inc,
6ed0cf4850 Oliv*0054      &     PAR_nlon, PAR_nlat, xC, yC,
                0055      &     PAR_interpMethod,
8fbfd1f382 Oliv*0056 #endif
                0057      &     mytime, myiter, mythid )
                0058 
fecf0f6104 Oliv*0059        call exf_set_fld(
                0060      &     'iron', ironfile, ironmask,
                0061      &     ironStartTime, ironperiod, ironRepCycle,
8fbfd1f382 Oliv*0062      &     darwin_inscal_iron,
                0063      &     iron_exfremo_intercept, iron_exfremo_slope,
fecf0f6104 Oliv*0064      &     inputFe, iron0, iron1,
8fbfd1f382 Oliv*0065 #ifdef USE_EXF_INTERPOLATION
                0066      &     iron_lon0, iron_lon_inc,
                0067      &     iron_lat0, iron_lat_inc,
6ed0cf4850 Oliv*0068      &     iron_nlon, iron_nlat, xC, yC,
                0069      &     iron_interpMethod,
8fbfd1f382 Oliv*0070 #endif
                0071      &     mytime, myiter, mythid )
                0072 
fecf0f6104 Oliv*0073        call exf_set_fld(
                0074      &     'ice', icefile, icemask,
                0075      &     iceStartTime, iceperiod, iceRepCycle,
8fbfd1f382 Oliv*0076      &     darwin_inscal_ice,
                0077      &     ice_exfremo_intercept, ice_exfremo_slope,
fecf0f6104 Oliv*0078      &     iceFrac, ice0, ice1,
8fbfd1f382 Oliv*0079 #ifdef USE_EXF_INTERPOLATION
                0080      &     ice_lon0, ice_lon_inc,
                0081      &     ice_lat0, ice_lat_inc,
6ed0cf4850 Oliv*0082      &     ice_nlon, ice_nlat, xC, yC,
                0083      &     ice_interpMethod,
8fbfd1f382 Oliv*0084 #endif
                0085      &     mytime, myiter, mythid )
                0086 
fecf0f6104 Oliv*0087        call exf_set_fld(
                0088      &     'wind', windfile, windmask,
                0089      &     windStartTime, windperiod, windRepCycle,
8fbfd1f382 Oliv*0090      &     darwin_inscal_wind,
                0091      &     wind_exfremo_intercept, wind_exfremo_slope,
fecf0f6104 Oliv*0092      &     windSpeed, wind0, wind1,
8fbfd1f382 Oliv*0093 #ifdef USE_EXF_INTERPOLATION
                0094      &     wind_lon0, wind_lon_inc,
                0095      &     wind_lat0, wind_lat_inc,
6ed0cf4850 Oliv*0096      &     wind_nlon, wind_nlat, xC, yC,
                0097      &     wind_interpMethod,
8fbfd1f382 Oliv*0098 #endif
                0099      &     mytime, myiter, mythid )
                0100 
fecf0f6104 Oliv*0101        call exf_set_fld(
                0102      &     'pCO2', pCO2file, pCO2mask,
                0103      &     pCO2StartTime, pCO2period, pCO2RepCycle,
8fbfd1f382 Oliv*0104      &     darwin_inscal_pCO2,
                0105      &     pCO2_exfremo_intercept, pCO2_exfremo_slope,
fecf0f6104 Oliv*0106      &     atmospCO2, pCO20, pCO21,
8fbfd1f382 Oliv*0107 #ifdef USE_EXF_INTERPOLATION
                0108      &     pCO2_lon0, pCO2_lon_inc,
                0109      &     pCO2_lat0, pCO2_lat_inc,
6ed0cf4850 Oliv*0110      &     pCO2_nlon, pCO2_nlat, xC, yC,
                0111      &     pCO2_interpMethod,
                0112 #endif
                0113      &     mytime, myiter, mythid )
                0114 
                0115        call exf_set_fld(
                0116      &     'ventHe3', ventHe3file, ventHe3mask,
                0117      &     ventHe3StartTime, ventHe3period, ventHe3RepCycle,
                0118      &     darwin_inscal_ventHe3,
                0119      &     ventHe3_exfremo_intercept, ventHe3_exfremo_slope,
                0120      &     ventHe3, ventHe30, ventHe31,
                0121 #ifdef USE_EXF_INTERPOLATION
                0122      &     ventHe3_lon0, ventHe3_lon_inc,
                0123      &     ventHe3_lat0, ventHe3_lat_inc,
                0124      &     ventHe3_nlon, ventHe3_nlat, xC, yC,
                0125      &     ventHe3_interpMethod,
8fbfd1f382 Oliv*0126 #endif
                0127      &     mytime, myiter, mythid )
                0128 
e79020cc6e Oliv*0129        call exf_set_fld(
                0130      &     'DOCrunoff', DOCrunofffile, DOCrunoffmask,
                0131      &     DOCrunoffStartTime, DOCrunoffperiod, DOCrunoffRepCycle,
                0132      &     darwin_inscal_DOCrunoff,
                0133      &     DOCrunoff_exfremo_intercept, DOCrunoff_exfremo_slope,
                0134      &     DOCrunoff, DOCrunoff0, DOCrunoff1,
                0135 #ifdef USE_EXF_INTERPOLATION
                0136      &     DOCrunoff_lon0, DOCrunoff_lon_inc,
                0137      &     DOCrunoff_lat0, DOCrunoff_lat_inc,
                0138      &     DOCrunoff_nlon, DOCrunoff_nlat, xC, yC,
                0139      &     DOCrunoff_interpMethod,
                0140 #endif
                0141      &     mytime, myiter, mythid )
                0142 
                0143        call exf_set_fld(
                0144      &     'DONrunoff', DONrunofffile, DONrunoffmask,
                0145      &     DONrunoffStartTime, DONrunoffperiod, DONrunoffRepCycle,
                0146      &     darwin_inscal_DONrunoff,
                0147      &     DONrunoff_exfremo_intercept, DONrunoff_exfremo_slope,
                0148      &     DONrunoff, DONrunoff0, DONrunoff1,
                0149 #ifdef USE_EXF_INTERPOLATION
                0150      &     DONrunoff_lon0, DONrunoff_lon_inc,
                0151      &     DONrunoff_lat0, DONrunoff_lat_inc,
                0152      &     DONrunoff_nlon, DONrunoff_nlat, xC, yC,
                0153      &     DONrunoff_interpMethod,
                0154 #endif
                0155      &     mytime, myiter, mythid )
                0156 
                0157        call exf_set_fld(
                0158      &     'DOPrunoff', DOPrunofffile, DOPrunoffmask,
                0159      &     DOPrunoffStartTime, DOPrunoffperiod, DOPrunoffRepCycle,
                0160      &     darwin_inscal_DOPrunoff,
                0161      &     DOPrunoff_exfremo_intercept, DOPrunoff_exfremo_slope,
                0162      &     DOPrunoff, DOPrunoff0, DOPrunoff1,
                0163 #ifdef USE_EXF_INTERPOLATION
                0164      &     DOPrunoff_lon0, DOPrunoff_lon_inc,
                0165      &     DOPrunoff_lat0, DOPrunoff_lat_inc,
                0166      &     DOPrunoff_nlon, DOPrunoff_nlat, xC, yC,
                0167      &     DOPrunoff_interpMethod,
                0168 #endif
                0169      &     mytime, myiter, mythid )
                0170 
                0171        call exf_set_fld(
                0172      &     'DINrunoff', DINrunofffile, DINrunoffmask,
                0173      &     DINrunoffStartTime, DINrunoffperiod, DINrunoffRepCycle,
                0174      &     darwin_inscal_DINrunoff,
                0175      &     DINrunoff_exfremo_intercept, DINrunoff_exfremo_slope,
                0176      &     DINrunoff, DINrunoff0, DINrunoff1,
                0177 #ifdef USE_EXF_INTERPOLATION
                0178      &     DINrunoff_lon0, DINrunoff_lon_inc,
                0179      &     DINrunoff_lat0, DINrunoff_lat_inc,
                0180      &     DINrunoff_nlon, DINrunoff_nlat, xC, yC,
                0181      &     DINrunoff_interpMethod,
                0182 #endif
                0183      &     mytime, myiter, mythid )
                0184 
11d365acff Oliv*0185        call exf_set_fld(
                0186      &     'NO3runoff', NO3runofffile, NO3runoffmask,
                0187      &     NO3runoffStartTime, NO3runoffperiod, NO3runoffRepCycle,
                0188      &     darwin_inscal_NO3runoff,
                0189      &     NO3runoff_exfremo_intercept, NO3runoff_exfremo_slope,
                0190      &     NO3runoff, NO3runoff0, NO3runoff1,
                0191 #ifdef USE_EXF_INTERPOLATION
                0192      &     NO3runoff_lon0, NO3runoff_lon_inc,
                0193      &     NO3runoff_lat0, NO3runoff_lat_inc,
                0194      &     NO3runoff_nlon, NO3runoff_nlat, xC, yC,
                0195      &     NO3runoff_interpMethod,
                0196 #endif
                0197      &     mytime, myiter, mythid )
                0198 
                0199        call exf_set_fld(
                0200      &     'NO2runoff', NO2runofffile, NO2runoffmask,
                0201      &     NO2runoffStartTime, NO2runoffperiod, NO2runoffRepCycle,
                0202      &     darwin_inscal_NO2runoff,
                0203      &     NO2runoff_exfremo_intercept, NO2runoff_exfremo_slope,
                0204      &     NO2runoff, NO2runoff0, NO2runoff1,
                0205 #ifdef USE_EXF_INTERPOLATION
                0206      &     NO2runoff_lon0, NO2runoff_lon_inc,
                0207      &     NO2runoff_lat0, NO2runoff_lat_inc,
                0208      &     NO2runoff_nlon, NO2runoff_nlat, xC, yC,
                0209      &     NO2runoff_interpMethod,
                0210 #endif
                0211      &     mytime, myiter, mythid )
                0212 
                0213        call exf_set_fld(
                0214      &     'NH4runoff', NH4runofffile, NH4runoffmask,
                0215      &     NH4runoffStartTime, NH4runoffperiod, NH4runoffRepCycle,
                0216      &     darwin_inscal_NH4runoff,
                0217      &     NH4runoff_exfremo_intercept, NH4runoff_exfremo_slope,
                0218      &     NH4runoff, NH4runoff0, NH4runoff1,
                0219 #ifdef USE_EXF_INTERPOLATION
                0220      &     NH4runoff_lon0, NH4runoff_lon_inc,
                0221      &     NH4runoff_lat0, NH4runoff_lat_inc,
                0222      &     NH4runoff_nlon, NH4runoff_nlat, xC, yC,
                0223      &     NH4runoff_interpMethod,
                0224 #endif
                0225      &     mytime, myiter, mythid )
                0226 
e79020cc6e Oliv*0227        call exf_set_fld(
                0228      &     'IPrunoff', IPrunofffile, IPrunoffmask,
                0229      &     IPrunoffStartTime, IPrunoffperiod, IPrunoffRepCycle,
                0230      &     darwin_inscal_IPrunoff,
                0231      &     IPrunoff_exfremo_intercept, IPrunoff_exfremo_slope,
                0232      &     IPrunoff, IPrunoff0, IPrunoff1,
                0233 #ifdef USE_EXF_INTERPOLATION
                0234      &     IPrunoff_lon0, IPrunoff_lon_inc,
                0235      &     IPrunoff_lat0, IPrunoff_lat_inc,
                0236      &     IPrunoff_nlon, IPrunoff_nlat, xC, yC,
                0237      &     IPrunoff_interpMethod,
                0238 #endif
                0239      &     mytime, myiter, mythid )
                0240 
                0241        call exf_set_fld(
                0242      &     'DSirunoff', DSirunofffile, DSirunoffmask,
                0243      &     DSirunoffStartTime, DSirunoffperiod, DSirunoffRepCycle,
                0244      &     darwin_inscal_DSirunoff,
                0245      &     DSirunoff_exfremo_intercept, DSirunoff_exfremo_slope,
                0246      &     DSirunoff, DSirunoff0, DSirunoff1,
                0247 #ifdef USE_EXF_INTERPOLATION
                0248      &     DSirunoff_lon0, DSirunoff_lon_inc,
                0249      &     DSirunoff_lat0, DSirunoff_lat_inc,
                0250      &     DSirunoff_nlon, DSirunoff_nlat, xC, yC,
                0251      &     DSirunoff_interpMethod,
                0252 #endif
                0253      &     mytime, myiter, mythid )
                0254 
                0255        call exf_set_fld(
                0256      &     'POCrunoff', POCrunofffile, POCrunoffmask,
                0257      &     POCrunoffStartTime, POCrunoffperiod, POCrunoffRepCycle,
                0258      &     darwin_inscal_POCrunoff,
                0259      &     POCrunoff_exfremo_intercept, POCrunoff_exfremo_slope,
                0260      &     POCrunoff, POCrunoff0, POCrunoff1,
                0261 #ifdef USE_EXF_INTERPOLATION
                0262      &     POCrunoff_lon0, POCrunoff_lon_inc,
                0263      &     POCrunoff_lat0, POCrunoff_lat_inc,
                0264      &     POCrunoff_nlon, POCrunoff_nlat, xC, yC,
                0265      &     POCrunoff_interpMethod,
                0266 #endif
                0267      &     mytime, myiter, mythid )
                0268 
                0269        call exf_set_fld(
                0270      &     'POPrunoff', POPrunofffile, POPrunoffmask,
                0271      &     POPrunoffStartTime, POPrunoffperiod, POPrunoffRepCycle,
                0272      &     darwin_inscal_POPrunoff,
                0273      &     POPrunoff_exfremo_intercept, POPrunoff_exfremo_slope,
                0274      &     POPrunoff, POPrunoff0, POPrunoff1,
                0275 #ifdef USE_EXF_INTERPOLATION
                0276      &     POPrunoff_lon0, POPrunoff_lon_inc,
                0277      &     POPrunoff_lat0, POPrunoff_lat_inc,
                0278      &     POPrunoff_nlon, POPrunoff_nlat, xC, yC,
                0279      &     POPrunoff_interpMethod,
                0280 #endif
                0281      &     mytime, myiter, mythid )
                0282 
                0283        call exf_set_fld(
                0284      &     'PONrunoff', PONrunofffile, PONrunoffmask,
                0285      &     PONrunoffStartTime, PONrunoffperiod, PONrunoffRepCycle,
                0286      &     darwin_inscal_PONrunoff,
                0287      &     PONrunoff_exfremo_intercept, PONrunoff_exfremo_slope,
                0288      &     PONrunoff, PONrunoff0, PONrunoff1,
                0289 #ifdef USE_EXF_INTERPOLATION
                0290      &     PONrunoff_lon0, PONrunoff_lon_inc,
                0291      &     PONrunoff_lat0, PONrunoff_lat_inc,
                0292      &     PONrunoff_nlon, PONrunoff_nlat, xC, yC,
                0293      &     PONrunoff_interpMethod,
                0294 #endif
                0295      &     mytime, myiter, mythid )
                0296 
                0297        call exf_set_fld(
                0298      &     'DICrunoff', DICrunofffile, DICrunoffmask,
                0299      &     DICrunoffStartTime, DICrunoffperiod, DICrunoffRepCycle,
                0300      &     darwin_inscal_DICrunoff,
                0301      &     DICrunoff_exfremo_intercept, DICrunoff_exfremo_slope,
                0302      &     DICrunoff, DICrunoff0, DICrunoff1,
                0303 #ifdef USE_EXF_INTERPOLATION
                0304      &     DICrunoff_lon0, DICrunoff_lon_inc,
                0305      &     DICrunoff_lat0, DICrunoff_lat_inc,
                0306      &     DICrunoff_nlon, DICrunoff_nlat, xC, yC,
                0307      &     DICrunoff_interpMethod,
                0308 #endif
                0309      &     mytime, myiter, mythid )
                0310 
8fbfd1f382 Oliv*0311         _EXCH_XY_RL( surfPAR, myThid )
                0312         _EXCH_XY_RL( inputFe, myThid )
                0313         _EXCH_XY_RL( iceFrac, myThid )
                0314         _EXCH_XY_RL( windSpeed, myThid )
                0315         _EXCH_XY_RL( atmospCO2, myThid )
6ed0cf4850 Oliv*0316         _EXCH_XY_RL( ventHe3, myThid )
e79020cc6e Oliv*0317         _EXCH_XY_RL( DOCrunoff, myThid )
                0318         _EXCH_XY_RL( DONrunoff, myThid )
                0319         _EXCH_XY_RL( DOPrunoff, myThid )
                0320         _EXCH_XY_RL( DINrunoff, myThid )
11d365acff Oliv*0321         _EXCH_XY_RL( NO3runoff, myThid )
                0322         _EXCH_XY_RL( NO2runoff, myThid )
                0323         _EXCH_XY_RL( NH4runoff, myThid )
e79020cc6e Oliv*0324         _EXCH_XY_RL( IPrunoff, myThid )
                0325         _EXCH_XY_RL( DSirunoff, myThid )
                0326         _EXCH_XY_RL( POCrunoff, myThid )
                0327         _EXCH_XY_RL( POPrunoff, myThid )
                0328         _EXCH_XY_RL( PONrunoff, myThid )
                0329         _EXCH_XY_RL( DICrunoff, myThid )
                0330 
8fbfd1f382 Oliv*0331       ENDIF
                0332 
                0333 #endif /* ALLOW_EXF */
                0334 #endif /* ALLOW_DARWIN */
                0335 
                0336       RETURN
                0337       END