/[MITgcm]/MITgcm/model/src/ini_parms.F
ViewVC logotype

Diff of /MITgcm/model/src/ini_parms.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.222 by jmc, Mon Jul 13 21:38:04 2009 UTC revision 1.223 by jmc, Thu Oct 8 20:04:17 2009 UTC
# Line 59  C     xxxDefault :: Default value for va Line 59  C     xxxDefault :: Default value for va
59        LOGICAL SadournyCoriolis        LOGICAL SadournyCoriolis
60        LOGICAL forcing_In_AB        LOGICAL forcing_In_AB
61        INTEGER goptCount        INTEGER goptCount
62        INTEGER K, i, j, IL, iUnit        INTEGER k, i, j, IL, iUnit
63        INTEGER errIO        INTEGER errIO
64  C     Default values for variables which have vertical coordinate system  C     Default values for variables which have vertical coordinate system
65  C     dependency.  C     dependency.
# Line 83  C                     :: zCoord..., pCoo Line 83  C                     :: zCoord..., pCoo
83  C                     :: z, p or r are used.  C                     :: z, p or r are used.
84  C                     :: coordsSet counts how many vertical coordinate systems have  C                     :: coordsSet counts how many vertical coordinate systems have
85  C                     :: been used to specify variables. coordsSet > 1 is an error.  C                     :: been used to specify variables. coordsSet > 1 is an error.
86  C  C     vertSetCount    :: to count number of vertical array elements which are set.
87    
88        LOGICAL zCoordInputData        LOGICAL zCoordInputData
89        LOGICAL pCoordInputData        LOGICAL pCoordInputData
90        LOGICAL rCoordInputData        LOGICAL rCoordInputData
91        INTEGER coordsSet        INTEGER coordsSet
92        LOGICAL diffKrSet        INTEGER vertSetCount
93    
94  C     Variables which have vertical coordinate system dependency.  C     Variables which have vertical coordinate system dependency.
95  C     delZ    :: Vertical grid spacing ( m  ).  C     delZ    :: Vertical grid spacing ( m  ).
# Line 104  C     diffKpS :: Laplacian diffusion coe Line 104  C     diffKpS :: Laplacian diffusion coe
104        _RL delP(Nr)        _RL delP(Nr)
105        _RL viscAz        _RL viscAz
106        _RL viscAp        _RL viscAp
107          _RL viscAr
108        _RL diffKzT        _RL diffKzT
109        _RL diffKpT        _RL diffKpT
110        _RL diffKrT        _RL diffKrT
# Line 174  C--   Continuous equation parameters Line 175  C--   Continuous equation parameters
175       & viscA4, viscA4W,       & viscA4, viscA4W,
176       & viscA4Max, viscA4Grid, viscA4GridMax, viscA4GridMin,       & viscA4Max, viscA4Grid, viscA4GridMax, viscA4GridMin,
177       & viscA4ReMax, viscAhReMax,       & viscA4ReMax, viscAhReMax,
178       & viscAz,  cosPower, viscAstrain, viscAtension,       & cosPower, viscAstrain, viscAtension,
179       & diffKhT, diffKzT, diffK4T,       & diffKhT, diffK4T, diffKhS, diffK4S,
      & diffKhS, diffKzS, diffK4S,  
180       & tRef, sRef, tRefFile, sRefFile, rhoRefFile,       & tRef, sRef, tRefFile, sRefFile, rhoRefFile,
181       & eosType, integr_GeoPot, selectFindRoSurf,       & eosType, integr_GeoPot, selectFindRoSurf,
182       & atm_Cp, atm_Rd, atm_Rq, atm_Po,       & atm_Cp, atm_Rd, atm_Rq, atm_Po,
# Line 188  C--   Continuous equation parameters Line 188  C--   Continuous equation parameters
188       & tempDiffusion, tempAdvection, tempForcing,       & tempDiffusion, tempAdvection, tempForcing,
189       & saltDiffusion, saltAdvection, saltForcing,       & saltDiffusion, saltAdvection, saltForcing,
190       & implicSurfPress, implicDiv2Dflow,       & implicSurfPress, implicDiv2Dflow,
191       & implicitFreeSurface, rigidLid, freeSurfFac, hFacMin, hFacMinDz,       & implicitFreeSurface, rigidLid, freeSurfFac,
192         & hFacMin, hFacMinDz, hFacMinDp, hFacMinDr,
193       & exactConserv, linFSConserveTr, uniformLin_PhiSurf,       & exactConserv, linFSConserveTr, uniformLin_PhiSurf,
194       & nonlinFreeSurf, hFacInf, hFacSup, select_rStar,       & nonlinFreeSurf, hFacInf, hFacSup, select_rStar,
195       & implicitIntGravWave, staggerTimeStep,       & implicitIntGravWave, staggerTimeStep,
196       & tempStepping, saltStepping, momStepping,       & tempStepping, saltStepping, momStepping,
197       & implicitDiffusion, implicitViscosity,       & implicitDiffusion, implicitViscosity,
198       & tempImplVertAdv, saltImplVertAdv, momImplVertAdv,       & tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
199       & viscAr, diffKrT, diffKrS, diffKrNrT, diffKrNrS, hFacMinDr,       & viscAz, diffKzT, diffKzS, viscAp, diffKpT, diffKpS,
200       & viscAp, diffKpT, diffKpS, hFacMinDp,       & viscAr, diffKrT, diffKrS, viscArNr, diffKrNrT, diffKrNrS,
201       & diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,       & diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
202       & BL79LatVary,       & BL79LatVary,
203       & diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,       & diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
# Line 385  C--   Set default "physical" parameters Line 386  C--   Set default "physical" parameters
386        viscA4D  = UNSET_RL        viscA4D  = UNSET_RL
387        viscA4Z  = UNSET_RL        viscA4Z  = UNSET_RL
388        viscAz   = UNSET_RL        viscAz   = UNSET_RL
       viscAr   = UNSET_RL  
389        viscAp   = UNSET_RL        viscAp   = UNSET_RL
390          viscAr   = UNSET_RL
391        diffKzT  = UNSET_RL        diffKzT  = UNSET_RL
392        diffKpT  = UNSET_RL        diffKpT  = UNSET_RL
393        diffKrT  = UNSET_RL        diffKrT  = UNSET_RL
# Line 394  C--   Set default "physical" parameters Line 395  C--   Set default "physical" parameters
395        diffKpS  = UNSET_RL        diffKpS  = UNSET_RL
396        diffKrS  = UNSET_RL        diffKrS  = UNSET_RL
397        DO k=1,Nr        DO k=1,Nr
398           viscArNr(k)  = UNSET_RL
399         diffKrNrT(k) = UNSET_RL         diffKrNrT(k) = UNSET_RL
400         diffKrNrS(k) = UNSET_RL         diffKrNrS(k) = UNSET_RL
401         tRef(k)      = UNSET_RL         tRef(k)      = UNSET_RL
# Line 516  C--   z,p,r coord input switching. Line 518  C--   z,p,r coord input switching.
518        IF ( viscAr .EQ. UNSET_RL )          viscAr = viscAz        IF ( viscAr .EQ. UNSET_RL )          viscAr = viscAz
519        IF ( viscAr .EQ. UNSET_RL )          viscAr = viscAp        IF ( viscAr .EQ. UNSET_RL )          viscAr = viscAp
520        IF ( viscAr .EQ. UNSET_RL )          viscAr = viscArDefault        IF ( viscAr .EQ. UNSET_RL )          viscAr = viscArDefault
521          vertSetCount = 0
522          DO k=1,Nr
523            IF ( viscArNr(k).EQ.UNSET_RL ) THEN
524              viscArNr(k) = viscAr
525            ELSE
526              vertSetCount = vertSetCount + 1
527            ENDIF
528          ENDDO
529          IF ( viscAr.NE.viscArDefault .AND. vertSetCount.GT.0 ) THEN
530           WRITE(msgBuf,'(2A)') 'S/R INI_PARMS: Cannot set both ',
531         &    'viscArNr and viscAr (or Ap,Az) in param file data'
532           CALL PRINT_ERROR( msgBuf, myThid )
533           STOP 'ABNORMAL END: S/R INI_PARMS'
534          ELSEIF ( vertSetCount.GT.0 .AND. vertSetCount.LT.Nr ) THEN
535           WRITE(msgBuf,'(A,2(I5,A))') 'S/R INI_PARMS: Partial setting (',
536         &       vertSetCount, ' /', Nr, ') of viscArNr is not allowed'
537           CALL PRINT_ERROR( msgBuf, myThid )
538           STOP 'ABNORMAL END: S/R INI_PARMS'
539          ENDIF
540    
541        IF ( diffKzT .NE. UNSET_RL ) zCoordInputData  = .TRUE.        IF ( diffKzT .NE. UNSET_RL ) zCoordInputData  = .TRUE.
542        IF ( diffKpT .NE. UNSET_RL ) pCoordInputData  = .TRUE.        IF ( diffKpT .NE. UNSET_RL ) pCoordInputData  = .TRUE.
# Line 523  C--   z,p,r coord input switching. Line 544  C--   z,p,r coord input switching.
544        IF ( diffKrT .EQ. UNSET_RL )          diffKrT = diffKzT        IF ( diffKrT .EQ. UNSET_RL )          diffKrT = diffKzT
545        IF ( diffKrT .EQ. UNSET_RL )          diffKrT = diffKpT        IF ( diffKrT .EQ. UNSET_RL )          diffKrT = diffKpT
546        IF ( diffKrT .EQ. UNSET_RL )          diffKrT = diffKrTDefault        IF ( diffKrT .EQ. UNSET_RL )          diffKrT = diffKrTDefault
547        diffKrSet = .TRUE.        vertSetCount = 0
548        DO k=1,Nr        DO k=1,Nr
549          IF ( diffKrNrT(k).EQ. UNSET_RL ) diffKrSet = .FALSE.          IF ( diffKrNrT(k).EQ.UNSET_RL ) THEN
550              diffKrNrT(k) = diffKrT
551            ELSE
552              vertSetCount = vertSetCount + 1
553            ENDIF
554        ENDDO        ENDDO
555        IF ( .NOT.diffKrSet ) THEN        IF ( diffKrT.NE.diffKrTDefault .AND. vertSetCount.GT.0 ) THEN
         DO k=1,Nr  
          diffKrNrT(k) = diffKrT  
         ENDDO  
       ELSEIF ( diffKrT.NE.diffKrTDefault ) THEN  
556         WRITE(msgBuf,'(2A)') 'S/R INI_PARMS: Cannot set both ',         WRITE(msgBuf,'(2A)') 'S/R INI_PARMS: Cannot set both ',
557       &    'diffKrNrT and diffKrT (or Kp,Kz) in input file data'       &    'diffKrNrT and diffKrT (or Kp,Kz) in param file data'
558           CALL PRINT_ERROR( msgBuf, myThid )
559           STOP 'ABNORMAL END: S/R INI_PARMS'
560          ELSEIF ( vertSetCount.GT.0 .AND. vertSetCount.LT.Nr ) THEN
561           WRITE(msgBuf,'(A,2(I5,A))') 'S/R INI_PARMS: Partial setting (',
562         &       vertSetCount, ' /', Nr, ') of diffKrNrT is not allowed'
563         CALL PRINT_ERROR( msgBuf, myThid )         CALL PRINT_ERROR( msgBuf, myThid )
564         STOP 'ABNORMAL END: S/R INI_PARMS'         STOP 'ABNORMAL END: S/R INI_PARMS'
565        ENDIF        ENDIF
# Line 544  C--   z,p,r coord input switching. Line 570  C--   z,p,r coord input switching.
570        IF ( diffKrS .EQ. UNSET_RL )          diffKrS = diffKzS        IF ( diffKrS .EQ. UNSET_RL )          diffKrS = diffKzS
571        IF ( diffKrS .EQ. UNSET_RL )          diffKrS = diffKpS        IF ( diffKrS .EQ. UNSET_RL )          diffKrS = diffKpS
572        IF ( diffKrS .EQ. UNSET_RL )          diffKrS = diffKrSDefault        IF ( diffKrS .EQ. UNSET_RL )          diffKrS = diffKrSDefault
573        diffKrSet = .TRUE.        vertSetCount = 0
574        DO k=1,Nr        DO k=1,Nr
575          IF ( diffKrNrS(k).EQ. UNSET_RL ) diffKrSet = .FALSE.          IF ( diffKrNrS(k).EQ.UNSET_RL ) THEN
576              diffKrNrS(k) = diffKrS
577            ELSE
578              vertSetCount = vertSetCount + 1
579            ENDIF
580        ENDDO        ENDDO
581        IF ( .NOT.diffKrSet ) THEN        IF ( diffKrS.NE.diffKrSDefault .AND. vertSetCount.GT.0 ) THEN
         DO k=1,Nr  
          diffKrNrS(k) = diffKrS  
         ENDDO  
       ELSEIF ( diffKrS.NE.diffKrSDefault ) THEN  
582         WRITE(msgBuf,'(2A)') 'S/R INI_PARMS: Cannot set both ',         WRITE(msgBuf,'(2A)') 'S/R INI_PARMS: Cannot set both ',
583       &    'diffKrNrS and diffKrS (or Kp,Kz) in input file data'       &    'diffKrNrS and diffKrS (or Kp,Kz) in param file data'
584           CALL PRINT_ERROR( msgBuf, myThid )
585           STOP 'ABNORMAL END: S/R INI_PARMS'
586          ELSEIF ( vertSetCount.GT.0 .AND. vertSetCount.LT.Nr ) THEN
587           WRITE(msgBuf,'(A,2(I5,A))') 'S/R INI_PARMS: Partial setting (',
588         &       vertSetCount, ' /', Nr, ') of diffKrNrS is not allowed'
589         CALL PRINT_ERROR( msgBuf, myThid )         CALL PRINT_ERROR( msgBuf, myThid )
590         STOP 'ABNORMAL END: S/R INI_PARMS'         STOP 'ABNORMAL END: S/R INI_PARMS'
591        ENDIF        ENDIF
# Line 988  C     o Monitor (should also add CPP fla Line 1019  C     o Monitor (should also add CPP fla
1019    
1020  C--   Grid parameters  C--   Grid parameters
1021  C     In cartesian coords distances are in metres  C     In cartesian coords distances are in metres
1022        DO K =1,Nr        DO k =1,Nr
1023         delZ(K) = UNSET_RL         delZ(k) = UNSET_RL
1024         delP(K) = UNSET_RL         delP(k) = UNSET_RL
1025         delR(K) = UNSET_RL         delR(k) = UNSET_RL
1026        ENDDO        ENDDO
1027  C     In spherical polar distances are in degrees  C     In spherical polar distances are in degrees
1028        dxSpacing = UNSET_RL        dxSpacing = UNSET_RL
# Line 1166  C     note: done later (once domain size Line 1197  C     note: done later (once domain size
1197        ENDIF        ENDIF
1198  C--   set cell Center depth and put Interface at the middle between 2 C  C--   set cell Center depth and put Interface at the middle between 2 C
1199        setCenterDr = .FALSE.        setCenterDr = .FALSE.
1200        DO K=1,Nr+1        DO k=1,Nr+1
1201         IF ( delRc(K).EQ.UNSET_RL ) THEN         IF ( delRc(k).EQ.UNSET_RL ) THEN
1202          IF ( setCenterDr ) THEN          IF ( setCenterDr ) THEN
1203           WRITE(msgBuf,'(A,I4)')           WRITE(msgBuf,'(A,I4)')
1204       &        'S/R INI_PARMS: No value for delRc at K =', K       &        'S/R INI_PARMS: No value for delRc at k =', k
1205           CALL PRINT_ERROR( msgBuf, myThid )           CALL PRINT_ERROR( msgBuf, myThid )
1206           STOP 'ABNORMAL END: S/R INI_PARMS'           STOP 'ABNORMAL END: S/R INI_PARMS'
1207          ENDIF          ENDIF
# Line 1178  C--   set cell Center depth and put Inte Line 1209  C--   set cell Center depth and put Inte
1209          IF ( k.EQ.1 ) setCenterDr = .TRUE.          IF ( k.EQ.1 ) setCenterDr = .TRUE.
1210          IF ( .NOT.setCenterDr ) THEN          IF ( .NOT.setCenterDr ) THEN
1211           WRITE(msgBuf,'(A,I4)')           WRITE(msgBuf,'(A,I4)')
1212       &        'S/R INI_PARMS: No value for delRc at K <', K       &        'S/R INI_PARMS: No value for delRc at k <', k
1213           CALL PRINT_ERROR( msgBuf, myThid )           CALL PRINT_ERROR( msgBuf, myThid )
1214           STOP 'ABNORMAL END: S/R INI_PARMS'           STOP 'ABNORMAL END: S/R INI_PARMS'
1215          ENDIF          ENDIF
# Line 1187  C--   set cell Center depth and put Inte Line 1218  C--   set cell Center depth and put Inte
1218        IF ( setCenterDr ) rCoordInputData = .TRUE.        IF ( setCenterDr ) rCoordInputData = .TRUE.
1219  C--   p, z, r coord parameters  C--   p, z, r coord parameters
1220        setInterFDr = .FALSE.        setInterFDr = .FALSE.
1221        DO K = 1, Nr        DO k = 1, Nr
1222         IF ( delZ(K) .NE. UNSET_RL ) zCoordInputData = .TRUE.         IF ( delZ(k) .NE. UNSET_RL ) zCoordInputData = .TRUE.
1223         IF ( delP(K) .NE. UNSET_RL ) pCoordInputData = .TRUE.         IF ( delP(k) .NE. UNSET_RL ) pCoordInputData = .TRUE.
1224         IF ( delR(K) .NE. UNSET_RL ) rCoordInputData = .TRUE.         IF ( delR(k) .NE. UNSET_RL ) rCoordInputData = .TRUE.
1225         IF ( delR(K) .EQ. UNSET_RL ) delR(K) = delZ(K)         IF ( delR(k) .EQ. UNSET_RL ) delR(k) = delZ(k)
1226         IF ( delR(K) .EQ. UNSET_RL ) delR(K) = delP(K)         IF ( delR(k) .EQ. UNSET_RL ) delR(k) = delP(k)
1227         IF ( delR(K) .EQ. UNSET_RL ) THEN         IF ( delR(k) .EQ. UNSET_RL ) THEN
1228          IF ( setInterFDr ) THEN          IF ( setInterFDr ) THEN
1229           WRITE(msgBuf,'(A,I4)')           WRITE(msgBuf,'(A,I4)')
1230       &        'S/R INI_PARMS: No value for delZ/delP/delR at K =', K       &        'S/R INI_PARMS: No value for delZ/delP/delR at k =', k
1231           CALL PRINT_ERROR( msgBuf, myThid )           CALL PRINT_ERROR( msgBuf, myThid )
1232           STOP 'ABNORMAL END: S/R INI_PARMS'           STOP 'ABNORMAL END: S/R INI_PARMS'
1233          ENDIF          ENDIF
# Line 1204  C--   p, z, r coord parameters Line 1235  C--   p, z, r coord parameters
1235          IF ( k.EQ.1 ) setInterFDr = .TRUE.          IF ( k.EQ.1 ) setInterFDr = .TRUE.
1236          IF ( .NOT.setInterFDr ) THEN          IF ( .NOT.setInterFDr ) THEN
1237           WRITE(msgBuf,'(A,I4)')           WRITE(msgBuf,'(A,I4)')
1238       &        'S/R INI_PARMS: No value for delZ/delP/delR at K <', K       &        'S/R INI_PARMS: No value for delZ/delP/delR at k <', k
1239           CALL PRINT_ERROR( msgBuf, myThid )           CALL PRINT_ERROR( msgBuf, myThid )
1240           STOP 'ABNORMAL END: S/R INI_PARMS'           STOP 'ABNORMAL END: S/R INI_PARMS'
1241          ENDIF          ENDIF

Legend:
Removed from v.1.222  
changed lines
  Added in v.1.223

  ViewVC Help
Powered by ViewVC 1.1.22