C $Header: /u/gcmpack/MITgcm/pkg/icefront/icefront_init_fixed.F,v 1.9 2018/01/10 11:00:58 mlosch Exp $ C $Name: $ #include "ICEFRONT_OPTIONS.h" #ifdef ALLOW_EXF # include "EXF_OPTIONS.h" #endif /* ALLOW_EXF */ #undef ALLOW_ICEFRONT_DEBUG SUBROUTINE ICEFRONT_INIT_FIXED( myThid ) C *============================================================* C | SUBROUTINE ICEFRONT_INIT_FIXED C | o Routine to initialize ICEFRONT parameters and variables. C *============================================================* C | Initialize ICEFRONT parameters and variables. C *============================================================* IMPLICIT NONE C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" #include "ICEFRONT.h" #ifdef ALLOW_EXF # include "EXF_PARAM.h" #endif /* ALLOW_EXF */ C === Routine arguments === C myThid :: my Thread Id Number INTEGER myThid #ifdef ALLOW_ICEFRONT C === Local variables === C I,J,K,bi,bj :: Loop counters C errCount :: error counter INTEGER I, J, K, bi, bj INTEGER errCount #ifdef ALLOW_ICEFRONT_DEBUG INTEGER ISinterface #endif #ifdef ALLOW_EXF CHARACTER*(MAX_LEN_MBUF) msgBuf #endif /* ALLOW_EXF */ #ifdef ALLOW_EXF IF ( useEXF .AND. SGRunOffFile .NE. ' ' ) THEN _BEGIN_MASTER( myThid ) errCount = 0 # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('GETFIELD_START SGRunOff',myThid) # endif CALL EXF_GETFFIELD_START( useExfYearlyFields, I 'icefront', 'SGRunOff', SGRunOffperiod, I SGRunOffstartdate1, SGRunOffstartdate2, U SGRunOffStartTime, errCount, I myThid ) IF ( errCount.GE.1 ) THEN WRITE(msgBuf,'(A,I3,A)') & 'ICEFRONT_INIT_FIXED: detected', errCount,' fatal error(s)' CALL PRINT_ERROR( msgBuf, myThid ) CALL ALL_PROC_DIE( 0 ) STOP 'ABNORMAL END: S/R ICEFRONT_INIT_FIXED' ENDIF _END_MASTER( myThid ) _BARRIER ENDIF #endif /* ALLOW_EXF */ IF ( ICEFRONTlengthFile .NE. ' ' ) THEN CALL READ_FLD_XY_RS( ICEFRONTlengthFile, ' ', & icefrontlength, 0, myThid ) _EXCH_XY_RS( icefrontlength, myThid ) ENDIF IF ( ICEFRONTdepthFile .NE. ' ' ) THEN CALL READ_FLD_XY_RS( ICEFRONTdepthFile, ' ', & R_icefront, 0, myThid ) _EXCH_XY_RS( R_icefront, myThid ) ENDIF C Make sure that R_icefront is positive DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) DO J = 1-OLy, sNy+OLy DO I = 1-OLx, sNx+OLx R_icefront(I,J,bi,bj) = ABS(R_icefront(I,J,bi,bj)) ENDDO ENDDO ENDDO ENDDO DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) DO J = 1-OLy, sNy+OLy DO I = 1-OLx, sNx+OLx K_icefront(i,j,bi,bj) = 0 DO K = 1 , Nr IF ( R_icefront(I,J,bi,bj) .GT. ABS(rF(K))) & K_icefront(I,J,bi,bj) = K ENDDO ENDDO ENDDO ENDDO ENDDO #ifdef ALLOW_ICEFRONT_DEBUG DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) DO J = 1, sNy DO I = 1, sNx C IsInterface=0 IF (ICEFRONTlength(I,J,bi,bj) .GT. 0. _d 0) THEN C print*, 'IsInterface=', '2' , ',xuyun' IsInterface=Isinterface + K_icefront(I,J,bi,bj) ENDIF ENDDO ENDDO ENDDO ENDDO print*, 'Interface # =', IsInterface #endif /* ALLOW_ICEFRONT_DEBUG */ #ifdef ALLOW_DIAGNOSTICS IF ( useDiagnostics ) THEN CALL ICEFRONT_DIAGNOSTICS_INIT( myThid ) ENDIF #endif /* ALLOW_DIAGNOSTICS */ #endif /* ALLOW_ICEFRONT */ RETURN END