Back to home page

MITgcm

 
 

    


File indexing completed on 2026-03-28 05:08:53 UTC

view on githubraw file Latest commit df0999b5 on 2026-03-27 16:50:19 UTC
359d9ec3d7 Patr*0001 #include "SHELFICE_OPTIONS.h"
ceca9ed7c5 Jean*0002 #ifdef ALLOW_COST
                0003 # include "COST_OPTIONS.h"
                0004 #endif
359d9ec3d7 Patr*0005 
9896423eca Jean*0006 CBOP
                0007 C     !ROUTINE: SHELFICE_COST_FINAL
                0008 C     !INTERFACE:
69361556c2 Mart*0009       SUBROUTINE SHELFICE_COST_FINAL( ifc, optimcycle, myThid )
9896423eca Jean*0010 
                0011 C     !DESCRIPTION:
359d9ec3d7 Patr*0012 C     *==========================================================*
                0013 C     | subroutine shelfice_cost_final                           |
                0014 C     | o final cost evalualtion                                 |
                0015 C     *==========================================================*
9896423eca Jean*0016 
                0017 C     !USES:
359d9ec3d7 Patr*0018       IMPLICIT NONE
                0019 
                0020 C     == Global variables ===
                0021 #include "SIZE.h"
                0022 #include "EEPARAMS.h"
                0023 #include "PARAMS.h"
                0024 #include "DYNVARS.h"
                0025 #include "GRID.h"
                0026 #include "SHELFICE.h"
                0027 #include "SHELFICE_COST.h"
                0028 
                0029 #ifdef ALLOW_COST
abed653eb5 Mart*0030 # include "cost.h"
                0031 #endif
359d9ec3d7 Patr*0032 
9896423eca Jean*0033 C     !INPUT/OUTPUT PARAMETERS:
69361556c2 Mart*0034 C     ifc        :: file unit for costfunction_shelfice.XXXX
                0035 C     optimcycle :: cycle number of the off-line optimization.
                0036 C     myThid     :: Thread number for this instance of the routine.
                0037       INTEGER ifc
                0038       INTEGER optimcycle
9896423eca Jean*0039       INTEGER myThid
359d9ec3d7 Patr*0040 
                0041 #ifdef ALLOW_COST
9896423eca Jean*0042 C     !LOCAL VARIABLES:
                0043       INTEGER bi, bj
df0999b5dc Jean*0044       CHARACTER*15  tile15c
69361556c2 Mart*0045 #ifndef ALLOW_OPENAD
                0046       CHARACTER*(26) cfname
                0047 #endif
961e4878d5 Jean*0048 
0d89045df1 Mart*0049       _RL f_shelfice
                0050       _RL f_shifwflx
9896423eca Jean*0051 cML      _RL no_shelfice
0d89045df1 Mart*0052       _RL no_shifwflx
                0053 
9896423eca Jean*0054       INTEGER i, j
                0055 CEOP
359d9ec3d7 Patr*0056 
b963de6667 Mart*0057       f_shelfice = 0. _d 0
                0058       f_shifwflx = 0. _d 0
9896423eca Jean*0059 cML      no_shelfice= 0. _d 0
b963de6667 Mart*0060       no_shifwflx= 0. _d 0
961e4878d5 Jean*0061 
359d9ec3d7 Patr*0062 C--   Calculate cost function on tile of this instance
df0999b5dc Jean*0063       DO bj = myByLo(myThid), myByHi(myThid)
                0064        DO bi = myBxLo(myThid), myBxHi(myThid)
359d9ec3d7 Patr*0065 ccc        do klev = 1, Nr
df0999b5dc Jean*0066          DO j=1,sNy
                0067           DO i=1,sNx
9896423eca Jean*0068 
df0999b5dc Jean*0069             objf_shelfice(bi,bj) = objf_shelfice(bi,bj)
359d9ec3d7 Patr*0070      &            + cMeanSHIforS(i,j,bi,bj)/lastinterval/rhoConstFresh
                0071      &            *_rA(i,j,bi,bj)
9896423eca Jean*0072 
                0073           ENDDO
df0999b5dc Jean*0074          ENDDO
9896423eca Jean*0075 ccc        end do
                0076        ENDDO
df0999b5dc Jean*0077       ENDDO
b963de6667 Mart*0078 
9896423eca Jean*0079 C--   Sum up all contributions.
                0080       DO bj = myByLo(myThid), myByHi(myThid)
                0081        DO bi = myBxLo(myThid), myBxHi(myThid)
df0999b5dc Jean*0082         WRITE(tile15c,'(2(A,I3),A)') '(bi,bj=', bi, ',', bj, ')'
                0083         WRITE(standardMessageUnit,'(3A,1PE22.14,1X,1PE9.2)')
                0084      &       ' --> objf_shelfice ', tile15c, ' =',
69361556c2 Mart*0085      &       objf_shelfice(bi,bj), mult_shelfice
9896423eca Jean*0086         tile_fc(bi,bj) = tile_fc(bi,bj)
abed653eb5 Mart*0087      &       + mult_shelfice * objf_shelfice(bi,bj)
0d89045df1 Mart*0088 
9896423eca Jean*0089        ENDDO
                0090       ENDDO
abed653eb5 Mart*0091 
9896423eca Jean*0092       CALL GLOBAL_SUM_TILE_RL( objf_shelfice, f_shelfice, myThid )
                0093 cML      CALL GLOBAL_SUM_TILE_RL( num_shelfice, no_shelfice, myThid )
0d89045df1 Mart*0094 
5357e1c86c Jean*0095 # ifndef ALLOW_OPENAD
9896423eca Jean*0096 C--   Each process has calculated the global part for itself.
69361556c2 Mart*0097       IF ( ifc .NE. -1 ) THEN
abed653eb5 Mart*0098 
69361556c2 Mart*0099        WRITE(cfname,'(A,i4.4)') 'costfunction_shelfice.',optimcycle
abed653eb5 Mart*0100        OPEN(unit=ifc,file=cfname)
                0101 
69361556c2 Mart*0102 C     makes little sense to print this now, because it is zero at this point
                0103 c       WRITE(ifc,*) 'fc =', fc
9896423eca Jean*0104 cML       WRITE(ifc,*) 'f_shelfice =', f_shelfice, no_shelfice
69361556c2 Mart*0105        WRITE(ifc,'(A,1PE22.14,1X,1PE9.2)')
                0106      &      'f_shelfice =', f_shelfice, mult_shelfice
abed653eb5 Mart*0107 
                0108        CLOSE(ifc)
359d9ec3d7 Patr*0109 
abed653eb5 Mart*0110       ENDIF
5357e1c86c Jean*0111 # endif /* ALLOW_OPENAD */
bb49380557 Patr*0112 
359d9ec3d7 Patr*0113 #endif /* ALLOW_COST */
                0114 
9896423eca Jean*0115       RETURN
359d9ec3d7 Patr*0116       END