File indexing completed on 2026-03-19 05:08:51 UTC
view on githubraw file Latest commit 69361556 on 2026-03-18 21:20:20 UTC
69361556c2 Mart*0001 #include "PROFILES_OPTIONS.h"
0002 #ifdef ALLOW_COST
0003 #include "COST_OPTIONS.h"
0004 #endif
0005
0006
0007
0008
0009 SUBROUTINE PROFILES_COST_FINAL( ifc, optimcycle, myThid )
0010
0011
0012
0013
0014
0015
0016
0017 IMPLICIT NONE
0018
0019
0020 #include "EEPARAMS.h"
0021 #include "SIZE.h"
0022 #include "PARAMS.h"
0023 #ifdef ALLOW_COST
0024 # include "cost.h"
0025 #endif
0026 #include "PROFILES_SIZE.h"
0027 #include "profiles.h"
0028
0029
0030
0031
0032
0033 INTEGER ifc
0034 INTEGER optimcycle
0035 INTEGER myThid
0036
0037 #ifdef ALLOW_COST
0038
0039 INTEGER ILNBLNK
0040 EXTERNAL ILNBLNK
0041
0042
0043 INTEGER bi, bj, num_var
0044 INTEGER num_file
0045 _RL f_profiles(NFILESPROFMAX,NVARMAX)
0046 _RL f_profiles_mean(NVARMAX)
0047 _RL no_profiles(NFILESPROFMAX,NVARMAX)
0048 _RL no_profiles_mean(NVARMAX)
0049
0050 CHARACTER*26 cfname
0051 INTEGER IL
0052 CHARACTER*(MAX_LEN_MBUF) msgBuf
0053
0054
0055
0056 DO num_var=1,NVARMAX
0057 DO num_file=1,NFILESPROFMAX
0058 f_profiles(num_file,num_var)= 0. _d 0
0059 no_profiles(num_file,num_var)= 0. _d 0
0060 ENDDO
0061 f_profiles_mean(num_var)= 0. _d 0
0062 no_profiles_mean(num_var)= 0. _d 0
0063 ENDDO
0064
0065
0066 DO bj = myByLo(myThid), myByHi(myThid)
0067 DO bi = myBxLo(myThid), myBxHi(myThid)
0068
0069 DO num_var=1,NVARMAX
0070 DO num_file=1,NFILESPROFMAX
0071 tile_fc(bi,bj) = tile_fc(bi,bj)
0072 & + mult_profiles(num_file,num_var)
0073 & *objf_profiles(num_file,num_var,bi,bj)
0074 f_profiles(num_file,num_var)=f_profiles(num_file,num_var)
0075 & +objf_profiles(num_file,num_var,bi,bj)
0076 no_profiles(num_file,num_var)=no_profiles(num_file,num_var)
0077 & +num_profiles(num_file,num_var,bi,bj)
0078 ENDDO
0079 tile_fc(bi,bj) = tile_fc(bi,bj)
0080 & + mult_profiles_mean(num_var)
0081 & *objf_profiles_mean(num_var,bi,bj)
0082 f_profiles_mean(num_var)=f_profiles_mean(num_var)
0083 & +objf_profiles_mean(num_var,bi,bj)
0084 no_profiles_mean(num_var)=no_profiles_mean(num_var)
0085 & +num_profiles_mean(num_var,bi,bj)
0086 ENDDO
0087
0088
0089 ENDDO
0090 ENDDO
0091
0092
0093 DO num_var=1,NVARMAX
0094 DO num_file=1,NFILESPROFMAX
0095 _GLOBAL_SUM_RL(f_profiles(num_file,num_var), myThid )
0096 _GLOBAL_SUM_RL(no_profiles(num_file,num_var), myThid )
0097 ENDDO
0098 _GLOBAL_SUM_RL(f_profiles_mean(num_var), myThid )
0099 _GLOBAL_SUM_RL(no_profiles_mean(num_var), myThid )
0100 ENDDO
0101
0102
0103 DO num_file=1,NFILESPROFMAX
0104 DO num_var=1,NVARMAX
0105 IF ( no_profiles(num_file,num_var).GT.zeroRL ) THEN
0106 WRITE(msgBuf,'(A,1PE22.14,2I3,1X,1PE9.2)')
0107 & ' --> f_profiles =',f_profiles(num_file,num_var),
0108 & num_file, num_var, mult_profiles(num_file,num_var)
0109
0110 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0111 & SQUEEZE_RIGHT, myThid )
0112 ENDIF
0113 ENDDO
0114 ENDDO
0115 DO num_var=1,NVARMAX
0116 IF ( no_profiles_mean(num_var).GT.zeroRL ) THEN
0117 WRITE(msgBuf,'(A,1PE22.14,I3,1X,1PE9.2)')
0118 & ' --> f_profiles_mean =',f_profiles_mean(num_var),
0119 & num_var, mult_profiles_mean(num_var)
0120
0121 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0122 & SQUEEZE_RIGHT, myThid )
0123 ENDIF
0124 ENDDO
0125
0126
0127
0128
0129 IF ( ifc .NE. -1 ) THEN
0130
0131 WRITE(cfname,'(A,I4.4)') 'costfunction_profiles.',optimcycle
0132 OPEN(unit=ifc,file=cfname)
0133 WRITE(msgBuf,'(A,A)')
0134 & 'Writing profiles cost function info to ', cfname
0135 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0136 & SQUEEZE_RIGHT, myThid )
0137
0138 DO num_file=1,NFILESPROFMAX
0139 DO num_var=1,NVARMAX
0140 IF ( no_profiles(num_file,num_var).GT.zeroRL ) THEN
0141 IL = ILNBLNK( profilesfiles(num_file) )
0142 IL = MAX(IL,30)
0143 WRITE(ifc,'(4A,1PE22.14,1PE22.14,1X,1PE9.2)')
0144 & profilesfiles(num_file)(1:IL),' ',
0145 & prof_names(num_file,num_var), ' = ',
0146 & f_profiles(num_file,num_var),
0147 & no_profiles(num_file,num_var),
0148 & mult_profiles(num_file,num_var)
0149 ENDIF
0150 ENDDO
0151 ENDDO
0152 DO num_var=1,NVARMAX
0153 IF ( no_profiles_mean(num_var).GT.zeroRL ) THEN
0154 WRITE(ifc,'(3A,1PE22.14,1PE22.14,1X,1PE9.2)')
0155 & 'profile_mean ', prof_names(1,num_var), ' = ',
0156 & f_profiles_mean(num_var), no_profiles_mean(num_var),
0157 & mult_profiles_mean(num_var)
0158 ENDIF
0159 ENDDO
0160 CLOSE(ifc)
0161
0162 ENDIF
0163
0164 #endif /* ALLOW_COST */
0165
0166 RETURN
0167 END