Back to home page

darwin3

 
 

    


File indexing completed on 2024-12-17 18:37:23 UTC

view on githubraw file Latest commit 87dd4f7d on 2024-01-17 18:17:24 UTC
87dd4f7d5f Oliv*0001 #include "OASIM_OPTIONS.h"
                0002 #ifdef ALLOW_EXF
                0003 #include "EXF_OPTIONS.h"
                0004 #endif
                0005 
                0006 CBOP
                0007 C !ROUTINE: OASIM_EXF_READPARMS
                0008 
                0009 C !INTERFACE: ==========================================================
                0010       SUBROUTINE OASIM_EXF_READPARMS( iUnit, oUnit, myThid )
                0011 
                0012 C !DESCRIPTION:
                0013 C     Initialize OASIM parameters, read in data.oasim
                0014 
                0015 C !USES: ===============================================================
                0016       IMPLICIT NONE
                0017 #include "EEPARAMS.h"
                0018 #include "SIZE.h"
                0019 #include "PARAMS.h"
                0020 #ifdef ALLOW_EXCH2
                0021 #include "W2_EXCH2_SIZE.h"
                0022 #include "W2_EXCH2_TOPOLOGY.h"
                0023 #endif
                0024 #ifdef ALLOW_GCHEM
                0025 #include "GCHEM.h"
                0026 #endif
                0027 #ifdef ALLOW_EXF
                0028 #ifdef USE_EXF_INTERPOLATION
                0029 #include "SET_GRID.h"
                0030 #include "EXF_CONSTANTS.h"
                0031 #endif
                0032 #include "EXF_PARAM.h"
                0033 #include "EXF_INTERP_SIZE.h"
                0034 #include "EXF_INTERP_PARAM.h"
                0035 #endif
                0036 #ifdef ALLOW_RADTRANS
                0037 #include "RADTRANS_SIZE.h"
                0038 #include "RADTRANS_PARAMS.h"
                0039 #endif
                0040 #include "OASIM_SIZE.h"
                0041 #include "OASIM_PARAMS.h"
                0042 #include "OASIM_EXF_PARAMS.h"
                0043 
                0044 C !INPUT PARAMETERS: ===================================================
                0045 C  iUnit   :: unit number for reading
                0046 C  oUnit   :: unit number for writing
                0047 C  myThid  :: thread number
                0048       INTEGER iUnit, oUnit, myThid
                0049 
                0050 C !OUTPUT PARAMETERS: ==================================================
                0051 C  none
                0052 CEOP
                0053 
                0054 #ifdef ALLOW_OASIM
                0055 #ifdef ALLOW_EXF
                0056 
                0057 C !LOCAL VARIABLES: ====================================================
                0058       CHARACTER*(MAX_LEN_MBUF) msgBuf
                0059       INTEGER j
                0060 
                0061       NAMELIST/OASIM_FORCING_PARM/
                0062      &    useOasimYearlyFields,
                0063      &    oasim_timeInterp,
                0064 C
                0065      &    aerTaufile,
                0066      &    aerTauperiod,
                0067      &    aerTauRepCycle,
                0068      &    aerTauStartTime,
                0069      &    aerTaustartdate1,
                0070      &    aerTaustartdate2,
                0071      &    aerTauconst,
                0072      &    aerTau_exfremo_intercept,
                0073      &    aerTau_exfremo_slope,
                0074      &    aerTaumask,
                0075      &    aerTau_inscal,
                0076 C
                0077      &    asympfile,
                0078      &    asympperiod,
                0079      &    asympRepCycle,
                0080      &    asympStartTime,
                0081      &    asympstartdate1,
                0082      &    asympstartdate2,
                0083      &    asympconst,
                0084      &    asymp_exfremo_intercept,
                0085      &    asymp_exfremo_slope,
                0086      &    asympmask,
                0087      &    asymp_inscal,
                0088 C
                0089      &    ssalbfile,
                0090      &    ssalbperiod,
                0091      &    ssalbRepCycle,
                0092      &    ssalbStartTime,
                0093      &    ssalbstartdate1,
                0094      &    ssalbstartdate2,
                0095      &    ssalbconst,
                0096      &    ssalb_exfremo_intercept,
                0097      &    ssalb_exfremo_slope,
                0098      &    ssalbmask,
                0099      &    ssalb_inscal,
                0100 C
                0101      &    cldcovfile,
                0102      &    cldcovperiod,
                0103      &    cldcovRepCycle,
                0104      &    cldcovStartTime,
                0105      &    cldcovstartdate1,
                0106      &    cldcovstartdate2,
                0107      &    cldcovconst,
                0108      &    cldcov_exfremo_intercept,
                0109      &    cldcov_exfremo_slope,
                0110      &    cldcovmask,
                0111      &    cldcov_inscal,
                0112 C
                0113      &    cldlwpfile,
                0114      &    cldlwpperiod,
                0115      &    cldlwpRepCycle,
                0116      &    cldlwpStartTime,
                0117      &    cldlwpstartdate1,
                0118      &    cldlwpstartdate2,
                0119      &    cldlwpconst,
                0120      &    cldlwp_exfremo_intercept,
                0121      &    cldlwp_exfremo_slope,
                0122      &    cldlwpmask,
                0123      &    cldlwp_inscal,
                0124 C
                0125      &    cldrefile,
                0126      &    cldreperiod,
                0127      &    cldreRepCycle,
                0128      &    cldreStartTime,
                0129      &    cldrestartdate1,
                0130      &    cldrestartdate2,
                0131      &    cldreconst,
                0132      &    cldre_exfremo_intercept,
                0133      &    cldre_exfremo_slope,
                0134      &    cldremask,
                0135      &    cldre_inscal,
                0136 C
                0137      &    presfile,
                0138      &    presperiod,
                0139      &    presRepCycle,
                0140      &    presStartTime,
                0141      &    presstartdate1,
                0142      &    presstartdate2,
                0143      &    presconst,
                0144      &    pres_exfremo_intercept,
                0145      &    pres_exfremo_slope,
                0146      &    presmask,
                0147      &    pres_inscal,
                0148 C
                0149      &    oawindfile,
                0150      &    oawindperiod,
                0151      &    oawindRepCycle,
                0152      &    oawindStartTime,
                0153      &    oawindstartdate1,
                0154      &    oawindstartdate2,
                0155      &    oawindconst,
                0156      &    oawind_exfremo_intercept,
                0157      &    oawind_exfremo_slope,
                0158      &    oawindmask,
                0159      &    oawind_inscal,
                0160 C
                0161      &    relhumfile,
                0162      &    relhumperiod,
                0163      &    relhumRepCycle,
                0164      &    relhumStartTime,
                0165      &    relhumstartdate1,
                0166      &    relhumstartdate2,
                0167      &    relhumconst,
                0168      &    relhum_exfremo_intercept,
                0169      &    relhum_exfremo_slope,
                0170      &    relhummask,
                0171      &    relhum_inscal,
                0172 C
                0173      &    ozonefile,
                0174      &    ozoneperiod,
                0175      &    ozoneRepCycle,
                0176      &    ozoneStartTime,
                0177      &    ozonestartdate1,
                0178      &    ozonestartdate2,
                0179      &    ozoneconst,
                0180      &    ozone_exfremo_intercept,
                0181      &    ozone_exfremo_slope,
                0182      &    ozonemask,
                0183      &    ozone_inscal,
                0184 C
                0185      &    wvfile,
                0186      &    wvperiod,
                0187      &    wvRepCycle,
                0188      &    wvStartTime,
                0189      &    wvstartdate1,
                0190      &    wvstartdate2,
                0191      &    wvconst,
                0192      &    wv_exfremo_intercept,
                0193      &    wv_exfremo_slope,
                0194      &    wvmask,
                0195      &    wv_inscal
                0196 
                0197 #ifdef USE_EXF_INTERPOLATION
                0198       NAMELIST/OASIM_INTERP_PARM/
                0199      &    aerTau_lon0,
                0200      &    aerTau_lat0,
                0201      &    aerTau_nlon,
                0202      &    aerTau_nlat,
                0203      &    aerTau_lon_inc,
                0204      &    aerTau_interpMethod,
                0205      &    aerTau_lat_inc,
                0206 C
                0207      &    asymp_lon0,
                0208      &    asymp_lat0,
                0209      &    asymp_nlon,
                0210      &    asymp_nlat,
                0211      &    asymp_lon_inc,
                0212      &    asymp_interpMethod,
                0213      &    asymp_lat_inc,
                0214 C
                0215      &    ssalb_lon0,
                0216      &    ssalb_lat0,
                0217      &    ssalb_nlon,
                0218      &    ssalb_nlat,
                0219      &    ssalb_lon_inc,
                0220      &    ssalb_interpMethod,
                0221      &    ssalb_lat_inc,
                0222 C
                0223      &    cldcov_lon0,
                0224      &    cldcov_lat0,
                0225      &    cldcov_nlon,
                0226      &    cldcov_nlat,
                0227      &    cldcov_lon_inc,
                0228      &    cldcov_interpMethod,
                0229      &    cldcov_lat_inc,
                0230 C
                0231      &    cldlwp_lon0,
                0232      &    cldlwp_lat0,
                0233      &    cldlwp_nlon,
                0234      &    cldlwp_nlat,
                0235      &    cldlwp_lon_inc,
                0236      &    cldlwp_interpMethod,
                0237      &    cldlwp_lat_inc,
                0238 C
                0239      &    cldre_lon0,
                0240      &    cldre_lat0,
                0241      &    cldre_nlon,
                0242      &    cldre_nlat,
                0243      &    cldre_lon_inc,
                0244      &    cldre_interpMethod,
                0245      &    cldre_lat_inc,
                0246 C
                0247      &    pres_lon0,
                0248      &    pres_lat0,
                0249      &    pres_nlon,
                0250      &    pres_nlat,
                0251      &    pres_lon_inc,
                0252      &    pres_interpMethod,
                0253      &    pres_lat_inc,
                0254 C
                0255      &    oawind_lon0,
                0256      &    oawind_lat0,
                0257      &    oawind_nlon,
                0258      &    oawind_nlat,
                0259      &    oawind_lon_inc,
                0260      &    oawind_interpMethod,
                0261      &    oawind_lat_inc,
                0262 C
                0263      &    relhum_lon0,
                0264      &    relhum_lat0,
                0265      &    relhum_nlon,
                0266      &    relhum_nlat,
                0267      &    relhum_lon_inc,
                0268      &    relhum_interpMethod,
                0269      &    relhum_lat_inc,
                0270 C
                0271      &    ozone_lon0,
                0272      &    ozone_lat0,
                0273      &    ozone_nlon,
                0274      &    ozone_nlat,
                0275      &    ozone_lon_inc,
                0276      &    ozone_interpMethod,
                0277      &    ozone_lat_inc,
                0278 C
                0279      &    wv_lon0,
                0280      &    wv_lat0,
                0281      &    wv_nlon,
                0282      &    wv_nlat,
                0283      &    wv_lon_inc,
                0284      &    wv_interpMethod,
                0285      &    wv_lat_inc
                0286 #endif
                0287 
                0288 C Open and read the data.oasim file
                0289 
                0290       useOasimYearlyFields = useExfYearlyFields
                0291       oasim_timeInterp     = 1
                0292 
                0293       aerTaufile = ' '
                0294       aerTauperiod             = 0.0 _d 0
                0295       aerTauRepCycle           = repeatPeriod
                0296       aerTauStartTime          = UNSET_RL
                0297       aerTaustartdate1         = 0
                0298       aerTaustartdate2         = 0
                0299       aerTauconst              = 0.0 _d 0
                0300       aerTau_exfremo_intercept = 0.0 _d 0
                0301       aerTau_exfremo_slope     = 0.0 _d 0
                0302       aerTau_inscal            = 1. _d 0
                0303       aerTaumask               = ' '
                0304 
                0305       asympfile = ' '
                0306       asympperiod             = 0.0 _d 0
                0307       asympRepCycle           = repeatPeriod
                0308       asympStartTime          = UNSET_RL
                0309       asympstartdate1         = 0
                0310       asympstartdate2         = 0
                0311       asympconst              = 0.0 _d 0
                0312       asymp_exfremo_intercept = 0.0 _d 0
                0313       asymp_exfremo_slope     = 0.0 _d 0
                0314       asymp_inscal            = 1. _d 0
                0315       asympmask               = ' '
                0316 
                0317       ssalbfile = ' '
                0318       ssalbperiod             = 0.0 _d 0
                0319       ssalbRepCycle           = RepeatPeriod
                0320       ssalbStartTime          = UNSET_RL
                0321       ssalbstartdate1         = 0
                0322       ssalbstartdate2         = 0
                0323       ssalbconst              = 0.0 _d 0
                0324       ssalb_exfremo_intercept = 0.0 _d 0
                0325       ssalb_exfremo_slope     = 0.0 _d 0
                0326       ssalb_inscal            = 1. _d 0
                0327       ssalbmask               = ' '
                0328 
                0329       cldcovfile = ' '
                0330       cldcovperiod             = 0.0 _d 0
                0331       cldcovRepCycle           = repeatPeriod
                0332       cldcovStartTime          = UNSET_RL
                0333       cldcovstartdate1         = 0
                0334       cldcovstartdate2         = 0
                0335       cldcovconst              = UNSET_RL
                0336       cldcov_exfremo_intercept = 0.0 _d 0
                0337       cldcov_exfremo_slope     = 0.0 _d 0
                0338       cldcov_inscal            = 1. _d 0
                0339       cldcovmask               = ' '
                0340 
                0341       cldlwpfile = ' '
                0342       cldlwpperiod             = 0.0 _d 0
                0343       cldlwpRepCycle           = repeatPeriod
                0344       cldlwpStartTime          = UNSET_RL
                0345       cldlwpstartdate1         = 0
                0346       cldlwpstartdate2         = 0
                0347       cldlwpconst              = UNSET_RL
                0348       cldlwp_exfremo_intercept = 0.0 _d 0
                0349       cldlwp_exfremo_slope     = 0.0 _d 0
                0350       cldlwp_inscal            = 1. _d 0
                0351       cldlwpmask               = ' '
                0352 
                0353       cldrefile = ' '
                0354       cldreperiod             = 0.0 _d 0
                0355       cldreRepCycle           = repeatPeriod
                0356       cldreStartTime          = UNSET_RL
                0357       cldrestartdate1         = 0
                0358       cldrestartdate2         = 0
                0359       cldreconst              = UNSET_RL
                0360       cldre_exfremo_intercept = 0.0 _d 0
                0361       cldre_exfremo_slope     = 0.0 _d 0
                0362       cldre_inscal            = 1. _d 0
                0363       cldremask               = ' '
                0364 
                0365       presfile = ' '
                0366       presperiod             = 0.0 _d 0
                0367       presRepCycle           = repeatPeriod
                0368       presStartTime          = UNSET_RL
                0369       presstartdate1         = 0
                0370       presstartdate2         = 0
                0371       presconst              = UNSET_RL
                0372       pres_exfremo_intercept = 0.0 _d 0
                0373       pres_exfremo_slope     = 0.0 _d 0
                0374       pres_inscal            = 1. _d 0
                0375       presmask               = ' '
                0376 
                0377       oawindfile = ' '
                0378       oawindperiod             = 0.0 _d 0
                0379       oawindRepCycle           = repeatPeriod
                0380       oawindStartTime          = UNSET_RL
                0381       oawindstartdate1         = 0
                0382       oawindstartdate2         = 0
                0383       oawindconst              = UNSET_RL
                0384       oawind_exfremo_intercept = 0.0 _d 0
                0385       oawind_exfremo_slope     = 0.0 _d 0
                0386       oawind_inscal            = 1. _d 0
                0387       oawindmask               = ' '
                0388 
                0389       relhumfile = ' '
                0390       relhumperiod             = 0.0 _d 0
                0391       relhumRepCycle           = repeatPeriod
                0392       relhumStartTime          = UNSET_RL
                0393       relhumstartdate1         = 0
                0394       relhumstartdate2         = 0
                0395       relhumconst              = UNSET_RL
                0396       relhum_exfremo_intercept = 0.0 _d 0
                0397       relhum_exfremo_slope     = 0.0 _d 0
                0398       relhum_inscal            = 1. _d 0
                0399       relhummask               = ' '
                0400 
                0401       ozonefile = ' '
                0402       ozoneperiod             = 0.0 _d 0
                0403       ozoneRepCycle           = repeatPeriod
                0404       ozoneStartTime          = UNSET_RL
                0405       ozonestartdate1         = 0
                0406       ozonestartdate2         = 0
                0407       ozoneconst              = UNSET_RL
                0408       ozone_exfremo_intercept = 0.0 _d 0
                0409       ozone_exfremo_slope     = 0.0 _d 0
                0410       ozone_inscal            = 1. _d 0
                0411       ozonemask               = ' '
                0412 
                0413       wvfile = ' '
                0414       wvperiod             = 0.0 _d 0
                0415       wvRepCycle           = repeatPeriod
                0416       wvStartTime          = UNSET_RL
                0417       wvstartdate1         = 0
                0418       wvstartdate2         = 0
                0419       wvconst              = UNSET_RL
                0420       wv_exfremo_intercept = 0.0 _d 0
                0421       wv_exfremo_slope     = 0.0 _d 0
                0422       wv_inscal            = 1. _d 0
                0423       wvmask               = ' '
                0424 
                0425 #ifdef USE_EXF_INTERPOLATION
                0426       aerTau_lon0 = inp_lon0
                0427       aerTau_lat0 = inp_lat0
                0428       aerTau_nlon = inp_gNx
                0429       aerTau_nlat = inp_gNy
                0430       aerTau_lon_inc = inp_dLon
                0431       aerTau_interpMethod  = 1
                0432 
                0433       asymp_lon0 = inp_lon0
                0434       asymp_lat0 = inp_lat0
                0435       asymp_nlon = inp_gNx
                0436       asymp_nlat = inp_gNy
                0437       asymp_lon_inc = inp_dLon
                0438       asymp_interpMethod  = 1
                0439 
                0440       ssalb_lon0 = inp_lon0
                0441       ssalb_lat0 = inp_lat0
                0442       ssalb_nlon = inp_gNx
                0443       ssalb_nlat = inp_gNy
                0444       ssalb_lon_inc = inp_dLon
                0445       ssalb_interpMethod  = 1
                0446 
                0447       cldcov_lon0 = inp_lon0
                0448       cldcov_lat0 = inp_lat0
                0449       cldcov_nlon = inp_gNx
                0450       cldcov_nlat = inp_gNy
                0451       cldcov_lon_inc = inp_dLon
                0452       cldcov_interpMethod  = 1
                0453 
                0454       cldlwp_lon0 = inp_lon0
                0455       cldlwp_lat0 = inp_lat0
                0456       cldlwp_nlon = inp_gNx
                0457       cldlwp_nlat = inp_gNy
                0458       cldlwp_lon_inc = inp_dLon
                0459       cldlwp_interpMethod  = 1
                0460 
                0461       cldre_lon0 = inp_lon0
                0462       cldre_lat0 = inp_lat0
                0463       cldre_nlon = inp_gNx
                0464       cldre_nlat = inp_gNy
                0465       cldre_lon_inc = inp_dLon
                0466       cldre_interpMethod  = 1
                0467 
                0468       pres_lon0 = inp_lon0
                0469       pres_lat0 = inp_lat0
                0470       pres_nlon = inp_gNx
                0471       pres_nlat = inp_gNy
                0472       pres_lon_inc = inp_dLon
                0473       pres_interpMethod  = 1
                0474 
                0475       oawind_lon0 = inp_lon0
                0476       oawind_lat0 = inp_lat0
                0477       oawind_nlon = inp_gNx
                0478       oawind_nlat = inp_gNy
                0479       oawind_lon_inc = inp_dLon
                0480       oawind_interpMethod  = 1
                0481 
                0482       relhum_lon0 = inp_lon0
                0483       relhum_lat0 = inp_lat0
                0484       relhum_nlon = inp_gNx
                0485       relhum_nlat = inp_gNy
                0486       relhum_lon_inc = inp_dLon
                0487       relhum_interpMethod  = 1
                0488 
                0489       ozone_lon0 = inp_lon0
                0490       ozone_lat0 = inp_lat0
                0491       ozone_nlon = inp_gNx
                0492       ozone_nlat = inp_gNy
                0493       ozone_lon_inc = inp_dLon
                0494       ozone_interpMethod  = 1
                0495 
                0496       wv_lon0 = inp_lon0
                0497       wv_lat0 = inp_lat0
                0498       wv_nlon = inp_gNx
                0499       wv_nlat = inp_gNy
                0500       wv_lon_inc = inp_dLon
                0501       wv_interpMethod  = 1
                0502 
                0503       DO j=1,MAX_LAT_INC
                0504         aerTau_lat_inc(j) = inp_dLat(j)
                0505         asymp_lat_inc(j) = inp_dLat(j)
                0506         ssalb_lat_inc(j) = inp_dLat(j)
                0507         cldcov_lat_inc(j) = inp_dLat(j)
                0508         cldlwp_lat_inc(j) = inp_dLat(j)
                0509         cldre_lat_inc(j) = inp_dLat(j)
                0510         pres_lat_inc(j) = inp_dLat(j)
                0511         oawind_lat_inc(j) = inp_dLat(j)
                0512         relhum_lat_inc(j) = inp_dLat(j)
                0513         ozone_lat_inc(j) = inp_dLat(j)
                0514         wv_lat_inc(j) = inp_dLat(j)
                0515       ENDDO
                0516 #endif /* USE_EXF_INTERPOLATION */
                0517 
                0518 C ======================================================================
                0519 
                0520       READ(UNIT=iUnit, NML=OASIM_FORCING_PARM)
                0521 #ifdef USE_EXF_INTERPOLATION
                0522       READ(UNIT=iUnit, NML=OASIM_INTERP_PARM)
                0523 #endif
                0524 
                0525 C ======================================================================
                0526 
                0527       IF (oUnit .GE. 0) THEN
                0528        WRITE(UNIT=oUnit, NML=OASIM_FORCING_PARM)
                0529 #ifdef USE_EXF_INTERPOLATION
                0530        WRITE(UNIT=oUnit, NML=OASIM_INTERP_PARM)
                0531 #endif
                0532       ENDIF
                0533 
                0534 #endif /* ALLOW_EXF */
                0535 #endif /* ALLOW_OASIM */
                0536 
                0537       RETURN
                0538       END