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
0004
0005
6e4c90fea3 Patr*0006
13ce79fe94 Ivan*0007
0008 SUBROUTINE PROFILES_READPARMS( myThid )
0009
0010
0011
0012
6e4c90fea3 Patr*0013
13ce79fe94 Ivan*0014
0015 IMPLICIT NONE
0016
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
0024
0025 INTEGER myThid
0026
6e4c90fea3 Patr*0027
13ce79fe94 Ivan*0028
c9bf163375 Ivan*0029 INTEGER ILNBLNK
0030 EXTERNAL ILNBLNK
0031
13ce79fe94 Ivan*0032
0033
0034
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
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
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
0064
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
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
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
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
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
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
ff70818335 Gael*0242 profilesfiles(num_file) = ' '
13ce79fe94 Ivan*0243
0244 ENDIF
0245 ENDIF
0246
0247 ENDDO
ff70818335 Gael*0248
ae4c29e0db Jean*0249 _END_MASTER( myThid )
6e4c90fea3 Patr*0250
0251 _BARRIER
0252
ae4c29e0db Jean*0253 RETURN
0254 END