Back to home page

MITgcm

 
 

    


File indexing completed on 2023-11-05 05:10:53 UTC

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