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_LOAD
                0008 
                0009 C !INTERFACE: ==========================================================
                0010       SUBROUTINE OASIM_EXF_LOAD( mytime, myiter, mythid )
                0011 
                0012 C !DESCRIPTION:
                0013 C     Load and interpolate forcing fields for oasim package
                0014 
                0015 C !USES: ===============================================================
                0016       IMPLICIT NONE
                0017 #include "SIZE.h"
                0018 #include "GRID.h"
                0019 #include "EEPARAMS.h"
                0020 #include "PARAMS.h"
                0021 #ifdef ALLOW_EXF
                0022 #include "EXF_INTERP_SIZE.h"
                0023 #endif
                0024 #include "OASIM_SIZE.h"
                0025 #include "OASIM_EXF_PARAMS.h"
                0026 #include "OASIM_FIELDS.h"
                0027 
                0028 C !INPUT PARAMETERS: ===================================================
                0029       _RL     mytime
                0030       integer myiter
                0031       integer mythid
                0032 CEOP
                0033 
                0034 #ifdef ALLOW_OASIM
                0035 #ifdef ALLOW_EXF
                0036 
                0037 C !LOCAL VARIABLES: ====================================================
                0038 C     !FUNCTIONS:
                0039       INTEGER  ILNBLNK
                0040       EXTERNAL ILNBLNK
                0041 
                0042       CHARACTER*(MAX_LEN_FNAM) fnam
                0043       INTEGER l, il
                0044 
                0045 c--   read forcing fields from files and temporal interpolation
                0046 
                0047       il = ILNBLNK( aerTaufile )
                0048       DO l=1,nlt
                0049         WRITE(fnam,'(A,I3.3)') aerTauFile(1:il), l
                0050         CALL oasim_set_fld (
                0051      &      'aerTau', fnam, aerTaumask,
                0052      &      aerTauStartTime, aerTauperiod, aerTauRepCycle,
                0053      &      oasim_timeInterp, aerTau_inscal(l),
                0054      &      aerTau_exfremo_intercept(l), aerTau_exfremo_slope(l),
                0055      &      taua(1-OLx,1-OLy,1,1,l),
                0056      &      aerTau0(1-OLx,1-OLy,1,1,l),
                0057      &      aerTau1(1-OLx,1-OLy,1,1,l),
                0058 #ifdef USE_EXF_INTERPOLATION
                0059      &      aerTau_lon0, aerTau_lon_inc,
                0060      &      aerTau_lat0, aerTau_lat_inc,
                0061      &      aerTau_nlon, aerTau_nlat, xC, yC, aerTau_interpMethod,
                0062 #endif
                0063      &      mytime, myiter, mythid )
                0064       ENDDO
                0065 
                0066       il = ILNBLNK( asympfile )
                0067       DO l=1,nlt
                0068         WRITE(fnam,'(A,I3.3)') asympFile(1:il), l
                0069         CALL oasim_set_fld (
                0070      &      'asymp', fnam, asympmask,
                0071      &      asympStartTime, asympperiod, asympRepCycle,
                0072      &      oasim_timeInterp, asymp_inscal(l),
                0073      &      asymp_exfremo_intercept(l), asymp_exfremo_slope(l),
                0074      &      asymp(1-OLx,1-OLy,1,1,l),
                0075      &      asymp0(1-OLx,1-OLy,1,1,l),
                0076      &      asymp1(1-OLx,1-OLy,1,1,l),
                0077 #ifdef USE_EXF_INTERPOLATION
                0078      &      asymp_lon0, asymp_lon_inc,
                0079      &      asymp_lat0, asymp_lat_inc,
                0080      &      asymp_nlon, asymp_nlat, xC, yC, asymp_interpMethod,
                0081 #endif
                0082      &      mytime, myiter, mythid )
                0083       ENDDO
                0084 
                0085       il = ILNBLNK( ssalbfile )
                0086       DO l=1,nlt
                0087         WRITE(fnam,'(A,I3.3)') ssalbFile(1:il), l
                0088         CALL oasim_set_fld (
                0089      &      'ssalb', fnam, ssalbmask,
                0090      &      ssalbStartTime, ssalbperiod, ssalbRepCycle,
                0091      &      oasim_timeInterp, ssalb_inscal(l),
                0092      &      ssalb_exfremo_intercept(l), ssalb_exfremo_slope(l),
                0093      &      ssalb(1-OLx,1-OLy,1,1,l),
                0094      &      ssalb0(1-OLx,1-OLy,1,1,l),
                0095      &      ssalb1(1-OLx,1-OLy,1,1,l),
                0096 #ifdef USE_EXF_INTERPOLATION
                0097      &      ssalb_lon0, ssalb_lon_inc,
                0098      &      ssalb_lat0, ssalb_lat_inc,
                0099      &      ssalb_nlon, ssalb_nlat, xC, yC, ssalb_interpMethod,
                0100 #endif
                0101      &      mytime, myiter, mythid )
                0102       ENDDO
                0103 
                0104       call oasim_set_fld(
                0105      &     'cldcov', cldcovfile, cldcovmask,
                0106      &     cldcovStartTime, cldcovperiod, cldcovRepCycle,
                0107      &     oasim_timeInterp, cldcov_inscal,
                0108      &     cldcov_exfremo_intercept, cldcov_exfremo_slope,
                0109      &     ccov, cldcov0, cldcov1,
                0110 #ifdef USE_EXF_INTERPOLATION
                0111      &     cldcov_lon0, cldcov_lon_inc,
                0112      &     cldcov_lat0, cldcov_lat_inc,
                0113      &     cldcov_nlon, cldcov_nlat, xC, yC, cldcov_interpMethod,
                0114 #endif
                0115      &     mytime, myiter, mythid )
                0116 
                0117       call oasim_set_fld(
                0118      &     'cldlwp', cldlwpfile, cldlwpmask,
                0119      &     cldlwpStartTime, cldlwpperiod, cldlwpRepCycle,
                0120      &     oasim_timeInterp, cldlwp_inscal,
                0121      &     cldlwp_exfremo_intercept, cldlwp_exfremo_slope,
                0122      &     rlwp, cldlwp0, cldlwp1,
                0123 #ifdef USE_EXF_INTERPOLATION
                0124      &     cldlwp_lon0, cldlwp_lon_inc,
                0125      &     cldlwp_lat0, cldlwp_lat_inc,
                0126      &     cldlwp_nlon, cldlwp_nlat, xC, yC, cldlwp_interpMethod,
                0127 #endif
                0128      &     mytime, myiter, mythid )
                0129 
                0130       call oasim_set_fld(
                0131      &     'cldre', cldrefile, cldremask,
                0132      &     cldreStartTime, cldreperiod, cldreRepCycle,
                0133      &     oasim_timeInterp, cldre_inscal,
                0134      &     cldre_exfremo_intercept, cldre_exfremo_slope,
                0135      &     cdre, cldre0, cldre1,
                0136 #ifdef USE_EXF_INTERPOLATION
                0137      &     cldre_lon0, cldre_lon_inc,
                0138      &     cldre_lat0, cldre_lat_inc,
                0139      &     cldre_nlon, cldre_nlat, xC, yC, cldre_interpMethod,
                0140 #endif
                0141      &     mytime, myiter, mythid )
                0142 
                0143       call oasim_set_fld(
                0144      &     'pres', presfile, presmask,
                0145      &     presStartTime, presperiod, presRepCycle,
                0146      &     oasim_timeInterp, pres_inscal,
                0147      &     pres_exfremo_intercept, pres_exfremo_slope,
                0148      &     slp, pres0, pres1,
                0149 #ifdef USE_EXF_INTERPOLATION
                0150      &     pres_lon0, pres_lon_inc,
                0151      &     pres_lat0, pres_lat_inc,
                0152      &     pres_nlon, pres_nlat, xC, yC, pres_interpMethod,
                0153 #endif
                0154      &     mytime, myiter, mythid )
                0155 
                0156       call oasim_set_fld(
                0157      &     'oawind', oawindfile, oawindmask,
                0158      &     oawindStartTime, oawindperiod, oawindRepCycle,
                0159      &     oasim_timeInterp, oawind_inscal,
                0160      &     oawind_exfremo_intercept, oawind_exfremo_slope,
                0161      &     wsm, oawind0, oawind1,
                0162 #ifdef USE_EXF_INTERPOLATION
                0163      &     oawind_lon0, oawind_lon_inc,
                0164      &     oawind_lat0, oawind_lat_inc,
                0165      &     oawind_nlon, oawind_nlat, xC, yC, oawind_interpMethod,
                0166 #endif
                0167      &     mytime, myiter, mythid )
                0168 
                0169       call oasim_set_fld(
                0170      &     'relhum', relhumfile, relhummask,
                0171      &     relhumStartTime, relhumperiod, relhumRepCycle,
                0172      &     oasim_timeInterp, relhum_inscal,
                0173      &     relhum_exfremo_intercept, relhum_exfremo_slope,
                0174      &     rh, relhum0, relhum1,
                0175 #ifdef USE_EXF_INTERPOLATION
                0176      &     relhum_lon0, relhum_lon_inc,
                0177      &     relhum_lat0, relhum_lat_inc,
                0178      &     relhum_nlon, relhum_nlat, xC, yC, relhum_interpMethod,
                0179 #endif
                0180      &     mytime, myiter, mythid )
                0181 
                0182       call oasim_set_fld(
                0183      &     'ozone', ozonefile, ozonemask,
                0184      &     ozoneStartTime, ozoneperiod, ozoneRepCycle,
                0185      &     oasim_timeInterp, ozone_inscal,
                0186      &     ozone_exfremo_intercept, ozone_exfremo_slope,
                0187      &     oz, ozone0, ozone1,
                0188 #ifdef USE_EXF_INTERPOLATION
                0189      &     ozone_lon0, ozone_lon_inc,
                0190      &     ozone_lat0, ozone_lat_inc,
                0191      &     ozone_nlon, ozone_nlat, xC, yC, ozone_interpMethod,
                0192 #endif
                0193      &     mytime, myiter, mythid )
                0194 
                0195       call oasim_set_fld(
                0196      &     'wv', wvfile, wvmask,
                0197      &     wvStartTime, wvperiod, wvRepCycle,
                0198      &     oasim_timeInterp, wv_inscal,
                0199      &     wv_exfremo_intercept, wv_exfremo_slope,
                0200      &     wv, wv0, wv1,
                0201 #ifdef USE_EXF_INTERPOLATION
                0202      &     wv_lon0, wv_lon_inc,
                0203      &     wv_lat0, wv_lat_inc,
                0204      &     wv_nlon, wv_nlat, xC, yC, wv_interpMethod,
                0205 #endif
                0206      &     mytime, myiter, mythid )
                0207 
                0208       _EXCH_XY_RL( taua, myThid )
                0209       _EXCH_XY_RL( asymp, myThid )
                0210       _EXCH_XY_RL( ssalb, myThid )
                0211       _EXCH_XY_RL( ccov, myThid )
                0212       _EXCH_XY_RL( rlwp, myThid )
                0213       _EXCH_XY_RL( cdre, myThid )
                0214       _EXCH_XY_RL( slp, myThid )
                0215       _EXCH_XY_RL( wsm, myThid )
                0216       _EXCH_XY_RL( rh, myThid )
                0217       _EXCH_XY_RL( oz, myThid )
                0218       _EXCH_XY_RL( wv, myThid )
                0219 
                0220 #endif /* ALLOW_EXF */
                0221 #endif /* ALLOW_OASIM */
                0222 
                0223       RETURN
                0224       END