File indexing completed on 2023-02-07 06:10:16 UTC
view on githubraw file Latest commit 2b959ba3 on 2023-02-06 20:20:10 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 
                0045       implicit none
                0046 
                0047 
                0048 #ifdef ALLOW_COST_ICE
                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"
5001c65f45 Patr*0058 #endif /* ALLOW_COST_ICE */
                0059 
                0060 
                0061 
                0062       _RL     mytime
                0063       integer myiter
                0064       integer mythid
                0065 
e4775240e5 Dimi*0066 #ifdef ALLOW_COST_ICE
5001c65f45 Patr*0067 
                0068 
                0069 
                0070 
                0071       CHARACTER*(MAX_LEN_MBUF) msgBuf
ae6832360b Mart*0072       integer bi,bj,i,j,kSrf
5001c65f45 Patr*0073       _RL tempVar
                0074 
                0075 
                0076 
                0077       integer  ilnblnk
                0078       external ilnblnk
                0079 
                0080 
                0081 
0320e25227 Mart*0082       if ( usingPCoords ) then
                0083        kSrf = Nr
                0084       else
                0085        kSrf = 1
                0086       endif
3889aa6caa Patr*0087       if ( myTime .GT. (endTime - lastinterval) ) then
989b1a2fcf Jean*0088          tempVar = 1. _d 0/
                0089      &             ( ( 1. _d 0 + min(endTime-startTime,lastinterval) )
7c7521a1da Jean*0090      &             / deltaTClock )
5001c65f45 Patr*0091 
3ad0d94cb0 Patr*0092 
0320e25227 Mart*0093       write(standardMessageUnit,*) 'ph-ice B ', myiter,
344ddc3242 Mart*0094      &        theta(4,4,kSrf,1,1), area(4,4,1,1), heff(4,4,1,1)
3ad0d94cb0 Patr*0095 
5001c65f45 Patr*0096          if ( cost_ice_flag .eq. 1 ) then
                0097 
                0098             do bj=myByLo(myThid),myByHi(myThid)
                0099                do bi=myBxLo(myThid),myBxHi(myThid)
                0100                   do j = 1,sny
                0101                      do i =  1,snx
                0102                         objf_ice(bi,bj) = objf_ice(bi,bj) +
f7d3a281ce Mart*0103      &                       tempVar * rA(i,j,bi,bj) * HEFF(i,j,bi,bj)
5001c65f45 Patr*0104                      enddo
                0105                   enddo
                0106                enddo
                0107             enddo
                0108 
                0109          elseif ( cost_ice_flag .eq. 2 ) then
                0110 
                0111             do bj=myByLo(myThid),myByHi(myThid)
                0112                do bi=myBxLo(myThid),myBxHi(myThid)
                0113                   do j = 1,sny
                0114                      do i =  1,snx
                0115                         objf_ice(bi,bj) = objf_ice(bi,bj) +
f7d3a281ce Mart*0116      &                       tempVar * rA(i,j,bi,bj) * AREA(i,j,bi,bj)
5001c65f45 Patr*0117                      enddo
                0118                   enddo
                0119                enddo
                0120             enddo
                0121 
                0122 
                0123 
                0124 
                0125 
                0126 
                0127 
                0128 
                0129 
                0130 
                0131 
                0132 
                0133 
                0134 
                0135 
                0136 
                0137 
                0138 
                0139 
                0140 
                0141 
                0142 
                0143          elseif ( cost_ice_flag .eq. 3 ) then
                0144 
                0145             do bj=myByLo(myThid),myByHi(myThid)
                0146              do bi=myBxLo(myThid),myBxHi(myThid)
                0147               do j = 1,sny
                0148                do i =  1,snx
                0149                 objf_ice(bi,bj) = objf_ice(bi,bj) +
                0150      &                 tempVar * rA(i,j,bi,bj) * (
989b1a2fcf Jean*0151      &                 (THETA(i,j,kSrf,bi,bj) + 1.96 _d 0 ) *
0320e25227 Mart*0152      &                 drF(kSrf) * 3996. _d 0 * 1026. _d 0 -
989b1a2fcf Jean*0153      &                 HEFF(i,j,bi,bj) * 334000. _d 0 * 910. _d 0 )
5001c65f45 Patr*0154                enddo
                0155               enddo
                0156              enddo
                0157             enddo
                0158 
                0159          elseif ( cost_ice_flag .eq. 4 ) then
                0160 
                0161             do bj=myByLo(myThid),myByHi(myThid)
                0162              do bi=myBxLo(myThid),myBxHi(myThid)
                0163               do j = 1,sny
                0164                do i =  1,snx
                0165                 objf_ice(bi,bj) = objf_ice(bi,bj) +
                0166      &                 tempVar * rA(i,j,bi,bj) * (
989b1a2fcf Jean*0167      &                 (THETA(i,j,kSrf,bi,bj) + 1.96 _d 0 ) *
0320e25227 Mart*0168      &                 drF(kSrf) * 3996. _d 0 * 1026. _d 0 )
5001c65f45 Patr*0169                enddo
                0170               enddo
                0171              enddo
                0172             enddo
                0173 
                0174          elseif ( cost_ice_flag .eq. 5 ) then
                0175 
                0176             do bj=myByLo(myThid),myByHi(myThid)
                0177              do bi=myBxLo(myThid),myBxHi(myThid)
                0178               do j = 1,sny
                0179                do i =  1,snx
                0180                 objf_ice(bi,bj) = objf_ice(bi,bj) +
                0181      &                 tempVar * rA(i,j,bi,bj) * (
989b1a2fcf Jean*0182      &                 (THETA(i,j,kSrf,bi,bj) + 1.96 _d 0 ) *
0320e25227 Mart*0183      &                 drF(kSrf) * 3996. _d 0 * 1026. _d 0 +
6e5facdf0e Mart*0184      &                 (TICES(i,j,1,bi,bj) - 273.15 _d 0 + 1.96 _d 0 ) *
989b1a2fcf Jean*0185      &                 HEFF(i,j,bi,bj) * 2090. _d 0 * 910. _d 0 -
                0186      &                 HEFF(i,j,bi,bj) * 334000. _d 0 * 910. _d 0 -
                0187      &                 HSNOW(i,j,bi,bj) * 334000. _d 0 * 330. _d 0 )
5001c65f45 Patr*0188                enddo
                0189               enddo
                0190              enddo
                0191             enddo
                0192 
                0193          elseif ( cost_ice_flag .eq. 6 ) then
                0194 
                0195 
                0196 
                0197 
                0198             do bj=myByLo(myThid),myByHi(myThid)
                0199                do bi=myBxLo(myThid),myBxHi(myThid)
                0200                   do j = 1,sny
                0201                      do i =  1,snx
                0202                         objf_ice(bi,bj) = objf_ice(bi,bj) +
989b1a2fcf Jean*0203      &                       ( AREA(i,j,bi,bj) - 0.5 _d 0 ) *
                0204      &                       ( AREA(i,j,bi,bj) - 0.5 _d 0 )
5001c65f45 Patr*0205                      enddo
                0206                   enddo
                0207                enddo
                0208             enddo
                0209 
d877a5eaeb Patr*0210          elseif ( cost_ice_flag .eq. 7 ) then
                0211 
                0212             do bj=myByLo(myThid),myByHi(myThid)
                0213                do bi=myBxLo(myThid),myBxHi(myThid)
                0214                   do j = 1,sny
                0215                      do i =  1,snx
                0216                         objf_ice(bi,bj) = objf_ice(bi,bj) +
                0217      &                       UICE(i,j,bi,bj) * UICE(i,j,bi,bj) +
                0218      &                       VICE(i,j,bi,bj) * VICE(i,j,bi,bj)
                0219 
                0220                      enddo
                0221                   enddo
                0222                enddo
                0223             enddo
                0224 
5001c65f45 Patr*0225          else
                0226             WRITE(msgBuf,'(A)')
                0227      &           'COST_ICE: invalid cost_ice_flag'
                0228             CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
                0229      &           SQUEEZE_RIGHT , myThid )
                0230             STOP 'ABNORMAL END: S/R COST_ICE'
                0231          endif
                0232       endif
                0233 
3874013cca Patr*0234 
344ddc3242 Mart*0235       write(standardMessageUnit,*) 'ph-ice C ', myiter, objf_ice(1,1)
3874013cca Patr*0236 
                0237 
5001c65f45 Patr*0238 #endif /* ALLOW_COST_ICE */
                0239 
989b1a2fcf Jean*0240       return
5001c65f45 Patr*0241       end