File indexing completed on 2026-03-19 05:08:54 UTC
view on githubraw file Latest commit 69361556 on 2026-03-18 21:20:20 UTC
869864d4b6 Patr*0001 #include "SEAICE_OPTIONS.h"
5001c65f45 Patr*0002
2b959ba38e Mart*0003 subroutine seaice_cost_test( mytime, myiter, mythid )
5001c65f45 Patr*0004
0005
2b959ba38e Mart*0006
5001c65f45 Patr*0007
0008
465da1ecf8 Dimi*0009
0010
5001c65f45 Patr*0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
2b959ba38e Mart*0042
5001c65f45 Patr*0043
0044
69361556c2 Mart*0045 IMPLICIT NONE
5001c65f45 Patr*0046
69361556c2 Mart*0047 #if (defined ALLOW_COST && defined ALLOW_COST_ICE)
5001c65f45 Patr*0048
0049 #include "EEPARAMS.h"
0050 #include "SIZE.h"
0051 #include "GRID.h"
0052 #include "PARAMS.h"
03c669d1ab Jean*0053 #include "SEAICE_SIZE.h"
869864d4b6 Patr*0054 #include "SEAICE_COST.h"
5001c65f45 Patr*0055 #include "SEAICE.h"
0056 #include "DYNVARS.h"
869864d4b6 Patr*0057 #include "cost.h"
69361556c2 Mart*0058 #endif /* ALLOW_COST & ALLOW_COST_ICE */
5001c65f45 Patr*0059
0060
0061 _RL mytime
0062 integer myiter
0063 integer mythid
0064
69361556c2 Mart*0065 #if (defined ALLOW_COST && defined ALLOW_COST_ICE)
0066
0067 integer ilnblnk
0068 external ilnblnk
5001c65f45 Patr*0069
0070
0071
0072 CHARACTER*(MAX_LEN_MBUF) msgBuf
ae6832360b Mart*0073 integer bi,bj,i,j,kSrf
5001c65f45 Patr*0074 _RL tempVar
0075
0076
0077
0320e25227 Mart*0078 if ( usingPCoords ) then
0079 kSrf = Nr
0080 else
0081 kSrf = 1
0082 endif
3889aa6caa Patr*0083 if ( myTime .GT. (endTime - lastinterval) ) then
989b1a2fcf Jean*0084 tempVar = 1. _d 0/
0085 & ( ( 1. _d 0 + min(endTime-startTime,lastinterval) )
7c7521a1da Jean*0086 & / deltaTClock )
5001c65f45 Patr*0087
3ad0d94cb0 Patr*0088
0320e25227 Mart*0089 write(standardMessageUnit,*) 'ph-ice B ', myiter,
344ddc3242 Mart*0090 & theta(4,4,kSrf,1,1), area(4,4,1,1), heff(4,4,1,1)
3ad0d94cb0 Patr*0091
5001c65f45 Patr*0092 if ( cost_ice_flag .eq. 1 ) then
0093
0094 do bj=myByLo(myThid),myByHi(myThid)
0095 do bi=myBxLo(myThid),myBxHi(myThid)
0096 do j = 1,sny
0097 do i = 1,snx
0098 objf_ice(bi,bj) = objf_ice(bi,bj) +
f7d3a281ce Mart*0099 & tempVar * rA(i,j,bi,bj) * HEFF(i,j,bi,bj)
5001c65f45 Patr*0100 enddo
0101 enddo
0102 enddo
0103 enddo
0104
0105 elseif ( cost_ice_flag .eq. 2 ) then
0106
0107 do bj=myByLo(myThid),myByHi(myThid)
0108 do bi=myBxLo(myThid),myBxHi(myThid)
0109 do j = 1,sny
0110 do i = 1,snx
0111 objf_ice(bi,bj) = objf_ice(bi,bj) +
f7d3a281ce Mart*0112 & tempVar * rA(i,j,bi,bj) * AREA(i,j,bi,bj)
5001c65f45 Patr*0113 enddo
0114 enddo
0115 enddo
0116 enddo
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138
0139 elseif ( cost_ice_flag .eq. 3 ) then
0140
0141 do bj=myByLo(myThid),myByHi(myThid)
0142 do bi=myBxLo(myThid),myBxHi(myThid)
0143 do j = 1,sny
0144 do i = 1,snx
0145 objf_ice(bi,bj) = objf_ice(bi,bj) +
0146 & tempVar * rA(i,j,bi,bj) * (
989b1a2fcf Jean*0147 & (THETA(i,j,kSrf,bi,bj) + 1.96 _d 0 ) *
0320e25227 Mart*0148 & drF(kSrf) * 3996. _d 0 * 1026. _d 0 -
989b1a2fcf Jean*0149 & HEFF(i,j,bi,bj) * 334000. _d 0 * 910. _d 0 )
5001c65f45 Patr*0150 enddo
0151 enddo
0152 enddo
0153 enddo
0154
0155 elseif ( cost_ice_flag .eq. 4 ) then
0156
0157 do bj=myByLo(myThid),myByHi(myThid)
0158 do bi=myBxLo(myThid),myBxHi(myThid)
0159 do j = 1,sny
0160 do i = 1,snx
0161 objf_ice(bi,bj) = objf_ice(bi,bj) +
0162 & tempVar * rA(i,j,bi,bj) * (
989b1a2fcf Jean*0163 & (THETA(i,j,kSrf,bi,bj) + 1.96 _d 0 ) *
0320e25227 Mart*0164 & drF(kSrf) * 3996. _d 0 * 1026. _d 0 )
5001c65f45 Patr*0165 enddo
0166 enddo
0167 enddo
0168 enddo
0169
0170 elseif ( cost_ice_flag .eq. 5 ) then
0171
0172 do bj=myByLo(myThid),myByHi(myThid)
0173 do bi=myBxLo(myThid),myBxHi(myThid)
0174 do j = 1,sny
0175 do i = 1,snx
0176 objf_ice(bi,bj) = objf_ice(bi,bj) +
0177 & tempVar * rA(i,j,bi,bj) * (
989b1a2fcf Jean*0178 & (THETA(i,j,kSrf,bi,bj) + 1.96 _d 0 ) *
0320e25227 Mart*0179 & drF(kSrf) * 3996. _d 0 * 1026. _d 0 +
6e5facdf0e Mart*0180 & (TICES(i,j,1,bi,bj) - 273.15 _d 0 + 1.96 _d 0 ) *
989b1a2fcf Jean*0181 & HEFF(i,j,bi,bj) * 2090. _d 0 * 910. _d 0 -
0182 & HEFF(i,j,bi,bj) * 334000. _d 0 * 910. _d 0 -
0183 & HSNOW(i,j,bi,bj) * 334000. _d 0 * 330. _d 0 )
5001c65f45 Patr*0184 enddo
0185 enddo
0186 enddo
0187 enddo
0188
0189 elseif ( cost_ice_flag .eq. 6 ) then
0190
0191
0192
0193
0194 do bj=myByLo(myThid),myByHi(myThid)
0195 do bi=myBxLo(myThid),myBxHi(myThid)
0196 do j = 1,sny
0197 do i = 1,snx
0198 objf_ice(bi,bj) = objf_ice(bi,bj) +
989b1a2fcf Jean*0199 & ( AREA(i,j,bi,bj) - 0.5 _d 0 ) *
0200 & ( AREA(i,j,bi,bj) - 0.5 _d 0 )
5001c65f45 Patr*0201 enddo
0202 enddo
0203 enddo
0204 enddo
0205
d877a5eaeb Patr*0206 elseif ( cost_ice_flag .eq. 7 ) then
0207
0208 do bj=myByLo(myThid),myByHi(myThid)
0209 do bi=myBxLo(myThid),myBxHi(myThid)
0210 do j = 1,sny
0211 do i = 1,snx
0212 objf_ice(bi,bj) = objf_ice(bi,bj) +
0213 & UICE(i,j,bi,bj) * UICE(i,j,bi,bj) +
0214 & VICE(i,j,bi,bj) * VICE(i,j,bi,bj)
0215
0216 enddo
0217 enddo
0218 enddo
0219 enddo
0220
5001c65f45 Patr*0221 else
0222 WRITE(msgBuf,'(A)')
0223 & 'COST_ICE: invalid cost_ice_flag'
0224 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0225 & SQUEEZE_RIGHT , myThid )
0226 STOP 'ABNORMAL END: S/R COST_ICE'
0227 endif
0228 endif
0229
3874013cca Patr*0230
344ddc3242 Mart*0231 write(standardMessageUnit,*) 'ph-ice C ', myiter, objf_ice(1,1)
3874013cca Patr*0232
0233
69361556c2 Mart*0234 #endif /* ALLOW_COST & ALLOW_COST_ICE */
5001c65f45 Patr*0235
69361556c2 Mart*0236 RETURN
0237 END