Back to home page

darwin3

 
 

    


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

view on githubraw file Latest commit 13ce79fe on 2025-08-04 21:05:34 UTC
24462d2fa8 Patr*0001 #include "PROFILES_OPTIONS.h"
6e4c90fea3 Patr*0002 
13ce79fe94 Ivan*0003 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0004 CBOP
                0005 C !ROUTINE: PROFILES_READPARMS
6e4c90fea3 Patr*0006 
13ce79fe94 Ivan*0007 C !INTERFACE:
                0008       SUBROUTINE PROFILES_READPARMS( myThid )
                0009 
                0010 C     !DESCRIPTION:
                0011 C     Initialise the package cost.
                0012 C     Started: Ralf Giering 18-Jan-2001
6e4c90fea3 Patr*0013 
13ce79fe94 Ivan*0014 C     !USES:
                0015       IMPLICIT NONE
                0016 C     == Global variables ===
6e4c90fea3 Patr*0017 #include "EEPARAMS.h"
                0018 #include "SIZE.h"
                0019 #include "PARAMS.h"
6328b73337 Gael*0020 #include "PROFILES_SIZE.h"
6e4c90fea3 Patr*0021 #include "profiles.h"
                0022 
13ce79fe94 Ivan*0023 C     !INPUT/OUTPUT PARAMETERS:
                0024 C     myThid :: my Thread Id number
                0025       INTEGER myThid
                0026 CEOP
6e4c90fea3 Patr*0027 
13ce79fe94 Ivan*0028 C     !FUNCTIONS:
c9bf163375 Ivan*0029       INTEGER  ILNBLNK
                0030       EXTERNAL ILNBLNK
                0031 
13ce79fe94 Ivan*0032 C     !LOCAL VARIABLES:
                0033 C     msgBuf :: Informational/error message buffer
                0034 C     iUnit  :: Work variable for IO unit number
6e4c90fea3 Patr*0035       CHARACTER*(MAX_LEN_MBUF) msgBuf
ff70818335 Gael*0036       INTEGER iUnit, num_file, num_var, IL
38287224dd Gael*0037       LOGICAL exst, specifiedNames
c9bf163375 Ivan*0038       CHARACTER*(128) fname
6e4c90fea3 Patr*0039 
13ce79fe94 Ivan*0040 C Read the namelist input.
c9bf163375 Ivan*0041       NAMELIST /profiles_nml/
1ff0163ead Gael*0042      &                   profilesDir,
6e4c90fea3 Patr*0043      &                   profilesfiles,
b2a948f981 Gael*0044      &                   mult_profiles,
6b2230d510 Ou W*0045      &                   mult_profiles_mean,
                0046 #ifdef ALLOW_PROFILES_SAMPLESPLIT_COST
13ce79fe94 Ivan*0047 C Number of independent samples
6b2230d510 Ou W*0048      &                   profiles_mean_indsamples,
                0049 #endif
fd8f717f84 Gael*0050      &                   prof_facmod,
cf16ba6028 Gael*0051      &                   prof_names,
                0052      &                   prof_namesmod,
6b2230d510 Ou W*0053 #ifdef ALLOW_PROFILES_CLIMMASK
                0054      &                   prof_namesclim,
                0055 #endif
cf16ba6028 Gael*0056      &                   prof_itracer,
f0e4bffe35 Gael*0057      &                   profilesDoNcOutput,
d3172737dc aver*0058      &                   profilesDoGenGrid,
                0059      &                   prof_make_nc
6e4c90fea3 Patr*0060 
ae4c29e0db Jean*0061       IF ( .NOT.usePROFILES ) THEN
                0062         _BEGIN_MASTER(myThid)
13ce79fe94 Ivan*0063 C Track pkg activation status:
                0064 C Print a (weak) warning if data.profiles is found
                0065         CALL PACKAGES_UNUSED_MSG( 'usePROFILES', ' ', ' ' )
ae4c29e0db Jean*0066         _END_MASTER(myThid)
                0067         RETURN
                0068       ENDIF
                0069 
6e4c90fea3 Patr*0070       _BEGIN_MASTER( myThid )
                0071 
13ce79fe94 Ivan*0072 C Set default values.
cf16ba6028 Gael*0073       profilesDir=' '
1ff0163ead Gael*0074 
13ce79fe94 Ivan*0075       DO num_file = 1, NFILESPROFMAX
                0076         profilesfiles(num_file) = ' '
                0077       ENDDO
                0078 
                0079       DO num_file = 1, NFILESPROFMAX
                0080         DO num_var = 1, NVARMAX
                0081           mult_profiles(num_file,num_var) = 1. _d 0
                0082           prof_facmod(num_file,num_var)  = 1. _d 0
                0083           prof_names(num_file,num_var) = 'empty'
                0084           prof_itracer(num_file,num_var) = 1
                0085           prof_namesmod(num_file,num_var) = 'empty'
6b2230d510 Ou W*0086 #ifdef ALLOW_PROFILES_CLIMMASK
13ce79fe94 Ivan*0087           prof_namesclim(num_file,num_var) = 'empty'
6b2230d510 Ou W*0088 #endif
13ce79fe94 Ivan*0089         ENDDO
                0090       ENDDO
                0091 
                0092       DO num_var = 1, NVARMAX
                0093         mult_profiles_mean(num_var) = 1. _d 0
6b2230d510 Ou W*0094 #ifdef ALLOW_PROFILES_SAMPLESPLIT_COST
13ce79fe94 Ivan*0095         profiles_mean_indsamples(num_var) = 1
6b2230d510 Ou W*0096 #endif
13ce79fe94 Ivan*0097       ENDDO
cf16ba6028 Gael*0098 
13ce79fe94 Ivan*0099       profilesDoNcOutput = .false.
                0100       prof_make_nc = .false.
0e0f68501f Gael*0101 
13ce79fe94 Ivan*0102       IF ( (.NOT.usingSphericalPolarGrid.OR.rotateGrid) ) THEN
                0103         profilesDoGenGrid = .true.
0e0f68501f Gael*0104       ELSE
13ce79fe94 Ivan*0105         profilesDoGenGrid = .false.
0e0f68501f Gael*0106       ENDIF
71a5587721 Gael*0107 
13ce79fe94 Ivan*0108 C Next, read cost data file.
                0109       WRITE(msgBuf,'(A)') 'PROFILES_READPARMS: opening data.profiles'
                0110       CALL PRINT_MESSAGE( msgBuf,
                0111      &     standardMessageUnit, SQUEEZE_RIGHT, 1 )
6e4c90fea3 Patr*0112 
13ce79fe94 Ivan*0113       CALL OPEN_COPY_DATA_FILE(
                0114      I     'data.profiles', 'PROFILES_READPARMS',
                0115      O     iUnit,
                0116      I     myThid )
6e4c90fea3 Patr*0117 
13ce79fe94 Ivan*0118       READ( iUnit, nml = profiles_nml )
6e4c90fea3 Patr*0119 
13ce79fe94 Ivan*0120       WRITE(msgBuf,'(2A)') 'PROFILES_READPARMS: ',
                0121      & 'finished reading data.profiles'
                0122       CALL PRINT_MESSAGE( msgBuf,
                0123      &     standardMessageUnit, SQUEEZE_RIGHT, 1 )
6e4c90fea3 Patr*0124 
7a77863887 Mart*0125 #ifdef SINGLE_DISK_IO
13ce79fe94 Ivan*0126       CLOSE(iUnit)
7a77863887 Mart*0127 #else
13ce79fe94 Ivan*0128       CLOSE(iUnit, STATUS = 'DELETE')
7a77863887 Mart*0129 #endif /* SINGLE_DISK_IO */
6e4c90fea3 Patr*0130 
13ce79fe94 Ivan*0131       DO num_file = 1, NFILESPROFMAX
                0132         specifiedNames = .FALSE.
cf16ba6028 Gael*0133 
13ce79fe94 Ivan*0134         DO num_var = 1, NVARMAX
                0135           IF (prof_names(num_file,num_var).NE.'empty')
                0136      &      specifiedNames = .TRUE.
                0137         ENDDO
38287224dd Gael*0138 
13ce79fe94 Ivan*0139         IF (.NOT.specifiedNames) THEN
                0140           prof_names(num_file,1) = 'prof_T'
                0141           prof_names(num_file,2) = 'prof_S'
c9bf163375 Ivan*0142 #ifdef ALLOW_BLING
13ce79fe94 Ivan*0143           prof_names(num_file,3) = 'prof_U'
                0144           prof_names(num_file,4) = 'prof_V'
                0145           prof_names(num_file,5) = 'prof_ptr'
                0146           prof_names(num_file,6) = 'prof_ssh'
                0147           prof_names(num_file,7) = 'prof_DIC'
                0148           prof_names(num_file,8) = 'prof_ALK'
                0149           prof_names(num_file,9) = 'prof_O2'
                0150           prof_names(num_file,10) = 'prof_NO3'
                0151           prof_names(num_file,11) = 'prof_PO4'
                0152           prof_names(num_file,12) = 'prof_FE'
                0153           prof_names(num_file,13) = 'prof_PCO'
                0154           prof_names(num_file,14) = 'prof_PH'
                0155           prof_names(num_file,15) = 'prof_CHL'
                0156           prof_names(num_file,16) = 'prof_POC'
                0157 
                0158           prof_itracer(num_file,1) = 1
                0159           prof_itracer(num_file,2) = 1
                0160           prof_itracer(num_file,3) = 1
                0161           prof_itracer(num_file,4) = 1
                0162           prof_itracer(num_file,5) = 1
                0163           prof_itracer(num_file,6) = 1
                0164           prof_itracer(num_file,7) = 1
                0165           prof_itracer(num_file,8) = 2
                0166           prof_itracer(num_file,9) = 3
                0167           prof_itracer(num_file,10) = 4
                0168           prof_itracer(num_file,11) = 5
                0169           prof_itracer(num_file,12) = 6
                0170           prof_itracer(num_file,13) = 1
                0171           prof_itracer(num_file,14) = 1
                0172           prof_itracer(num_file,15) = 1
                0173           prof_itracer(num_file,16) = 1
c9bf163375 Ivan*0174 #endif /* ALLOW_BLING */
13ce79fe94 Ivan*0175 
                0176           prof_namesmod(num_file,1) = 'theta'
                0177           prof_namesmod(num_file,2) = 'salt'
c9bf163375 Ivan*0178 #ifdef ALLOW_BLING
13ce79fe94 Ivan*0179           prof_namesmod(num_file,3) = 'uVel'
                0180           prof_namesmod(num_file,4) = 'vVel'
                0181           prof_namesmod(num_file,5) = 'pTracer'
                0182           prof_namesmod(num_file,6) = 'etaN'
                0183           prof_namesmod(num_file,7) = 'pTracer'
                0184           prof_namesmod(num_file,8) = 'pTracer'
                0185           prof_namesmod(num_file,9) = 'pTracer'
                0186           prof_namesmod(num_file,10) = 'pTracer'
                0187           prof_namesmod(num_file,11) = 'pTracer'
                0188           prof_namesmod(num_file,12) = 'pTracer'
                0189           prof_namesmod(num_file,13) = 'PCO'
                0190           prof_namesmod(num_file,14) = 'PH'
                0191           prof_namesmod(num_file,15) = 'CHL'
                0192           prof_namesmod(num_file,16) = 'POC'
c9bf163375 Ivan*0193 #endif /* ALLOW_BLING */
6b2230d510 Ou W*0194 #ifdef ALLOW_PROFILES_CLIMMASK
13ce79fe94 Ivan*0195 
                0196           prof_namesclim(num_file,1) = 'prof_Tclim'
                0197           prof_namesclim(num_file,2) = 'prof_Sclim'
6b2230d510 Ou W*0198 #endif
13ce79fe94 Ivan*0199 
                0200         ENDIF !IF (.NOT. specifiedNames)
                0201 
                0202         DO num_var = 1, NVARMAX
                0203           IF ( ((prof_names(num_file,num_var).NE.'empty') .AND.
                0204      &          (prof_namesmod(num_file,num_var).EQ.'empty')) .OR.
                0205      &         ((prof_names(num_file,num_var).EQ.'empty') .AND.
                0206      &          (prof_namesmod(num_file,num_var).NE.'empty')) ) THEN
                0207             PRINT *, 'prof_names = ',prof_names(num_file,num_var),' ',
                0208      &       prof_namesmod(num_file,num_var),' ',num_file,num_var
                0209 
                0210             WRITE(errorMessageUnit,'(2A)')
                0211      &       'ERROR in PROFILES_READPARMS: inconsistent ',
                0212      &       'prof_names and prof_namesmod'
                0213             CALL ALL_PROC_DIE( myThid )
                0214             STOP 'ABNORMAL END: S/R PROFILES_READPARMS'
                0215 
                0216           ENDIF
                0217 
                0218           IL  = ILNBLNK( prof_names(num_file,num_var) )
                0219           WRITE(prof_namesmask(num_file,num_var),'(2A)')
                0220      &     prof_names(num_file,num_var)(1:IL),'mask'
                0221           WRITE(prof_namesweight(num_file,num_var),'(2A)')
                0222      &     prof_names(num_file,num_var)(1:IL),'weight'
6b2230d510 Ou W*0223 #ifdef ALLOW_PROFILES_CLIMMASK
13ce79fe94 Ivan*0224           WRITE(prof_namesclim(num_file,num_var),'(2A)')
                0225      &     prof_names(num_file,num_var)(1:IL),'clim'
6b2230d510 Ou W*0226 #endif
13ce79fe94 Ivan*0227         ENDDO !DO num_var
                0228 
                0229         IF (profilesfiles(num_file).NE.' ') THEN
                0230           IL  = ILNBLNK( profilesfiles(num_file) )
                0231           fname = profilesfiles(num_file)(1:IL)//'.nc'
                0232           INQUIRE( FILE = fname, EXIST = exst )
                0233           IF (.NOT.exst) THEN
                0234 C Warn user as we override profilesfiles
                0235             WRITE(msgBuf,'(3A)')
7497c8dc75 Patr*0236      &       '** WARNING ** PROFILES_READPARMS: missing file: ',
ff70818335 Gael*0237      &       profilesfiles(num_file)(1:IL),' gets switched off'
13ce79fe94 Ivan*0238             CALL PRINT_MESSAGE( msgBuf,
                0239      &           errorMessageUnit, SQUEEZE_RIGHT, myThid )
                0240 
                0241 C Switch off this file (and potential cost function term)
ff70818335 Gael*0242               profilesfiles(num_file) = ' '
13ce79fe94 Ivan*0243 
                0244           ENDIF
                0245         ENDIF
                0246 
                0247       ENDDO !DO num_file
ff70818335 Gael*0248 
ae4c29e0db Jean*0249       _END_MASTER( myThid )
6e4c90fea3 Patr*0250 
                0251       _BARRIER
                0252 
ae4c29e0db Jean*0253       RETURN
                0254       END