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

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

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

revision 1.3 by mlosch, Tue Aug 20 14:45:18 2002 UTC revision 1.6 by mlosch, Wed Sep 25 19:36:50 2002 UTC
# Line 23  C     == Global variables == Line 23  C     == Global variables ==
23  #include "PARAMS.h"  #include "PARAMS.h"
24  #include "EOS.h"  #include "EOS.h"
25  #include "GRID.h"  #include "GRID.h"
26    #include "DYNVARS.h"
27    
28  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
29  C     == Routine arguments ==  C     == Routine arguments ==
# Line 40  C     I,J,K Line 41  C     I,J,K
41    
42        equationOfState = eosType        equationOfState = eosType
43    
44          do k = 1,6
45             eosJMDCFw(k) = 0. _d 0
46          end do
47          do k = 1,9
48             eosJMDCSw(k) = 0. _d 0
49          end do
50          do k = 1,5
51             eosJMDCKFw(k) = 0. _d 0
52          end do
53          do k = 1,7
54             eosJMDCKSw(k) = 0. _d 0
55          end do
56          do k = 1,14
57             eosJMDCKP(k) = 0. _d 0
58          end do
59          do k = 0,11
60             eosMDJWFnum(k) = 0. _d 0
61          end do
62          do k = 0,12
63             eosMDJWFden(k) = 0. _d 0
64          end do
65    
66        if ( equationOfState .eq. 'LINEAR' ) then        if ( equationOfState .eq. 'LINEAR' ) then
67           if ( tAlpha .eq. UNSET_RL ) tAlpha = 2.D-4           if ( tAlpha .eq. UNSET_RL ) tAlpha = 2.D-4
68           if ( sBeta  .eq. UNSET_RL ) sBeta  = 7.4D-4           if ( sBeta  .eq. UNSET_RL ) sBeta  = 7.4D-4
# Line 89  C Line 112  C
112                    do K=1,Nr                    do K=1,Nr
113                       do J=1-Oly,sNy+Oly                       do J=1-Oly,sNy+Oly
114                          do I=1-Olx,sNx+Olx                          do I=1-Olx,sNx+Olx
115                             pressure(i,j,k,bi,bj) = rhonil * (                             pressure(i,j,k,bi,bj) = rhoConst * (
116       &                          - gravity*rC(k)       &                          - gravity*rC(k)
117       &                          )       &                          )
118                          end do                          end do
# Line 179  C     5. secant bulk modulus K of sea wa Line 202  C     5. secant bulk modulus K of sea wa
202              CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,              CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
203       &           SQUEEZE_RIGHT , 1)       &           SQUEEZE_RIGHT , 1)
204              write(msgBuf,'(a)')              write(msgBuf,'(a)')
205       &           'WARNING: (see Jackett and McDougall 1995, JPO)'       &           'WARNING: (see Jackett and McDougall 1995, JAOT)'
206              CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,              CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
207       &           SQUEEZE_RIGHT , 1)       &           SQUEEZE_RIGHT , 1)
208              write(msgBuf,'(a)')              write(msgBuf,'(a)')
# Line 220  C     5. secant bulk modulus K of sea wa Line 243  C     5. secant bulk modulus K of sea wa
243              STOP 'INI_EOS: We should never reach this point!'              STOP 'INI_EOS: We should never reach this point!'
244           endif           endif
245    
246          elseif ( equationOfState .eq. 'MDJWF' ) then
247    
248             eosMDJWFnum( 0) =  9.99843699e+02
249             eosMDJWFnum( 1) =  7.35212840e+00
250             eosMDJWFnum( 2) = -5.45928211e-02
251             eosMDJWFnum( 3) =  3.98476704e-04
252             eosMDJWFnum( 4) =  2.96938239e+00
253             eosMDJWFnum( 5) = -7.23268813e-03
254             eosMDJWFnum( 6) =  2.12382341e-03
255             eosMDJWFnum( 7) =  1.04004591e-02
256             eosMDJWFnum( 8) =  1.03970529e-07
257             eosMDJWFnum( 9) =  5.18761880e-06
258             eosMDJWFnum(10) = -3.24041825e-08
259             eosMDJWFnum(11) = -1.23869360e-11
260            
261            
262             eosMDJWFden( 0) =  1.00000000e+00
263             eosMDJWFden( 1) =  7.28606739e-03
264             eosMDJWFden( 2) = -4.60835542e-05
265             eosMDJWFden( 3) =  3.68390573e-07
266             eosMDJWFden( 4) =  1.80809186e-10
267             eosMDJWFden( 5) =  2.14691708e-03
268             eosMDJWFden( 6) = -9.27062484e-06
269             eosMDJWFden( 7) = -1.78343643e-10
270             eosMDJWFden( 8) =  4.76534122e-06
271             eosMDJWFden( 9) =  1.63410736e-09
272             eosMDJWFden(10) =  5.30848875e-06
273             eosMDJWFden(11) = -3.03175128e-16
274             eosMDJWFden(12) = -1.27934137e-17
275            
276        elseif( equationOfState .eq. 'IDEALG' ) then        elseif( equationOfState .eq. 'IDEALG' ) then
277  C      C    
278        else        else
# Line 269  C     I,J,K Line 322  C     I,J,K
322        INTEGER  I,  J,  K        INTEGER  I,  J,  K
323        _RL tFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)        _RL tFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
324        _RL sFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)        _RL sFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
325        _RL rhoP0  (1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RL rhoLoc (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
326        _RL bulkMod(1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RL bulkMod(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
327        _RL rholoc, psave        _RL psave
328    
329        INTEGER ncheck, kcheck        INTEGER ncheck, kcheck
330        PARAMETER ( ncheck = 10 )        PARAMETER ( ncheck = 13 )
331        _RL tloc(ncheck), ptloc(ncheck), sloc(ncheck), ploc(ncheck)        _RL tloc(ncheck), ptloc(ncheck), sloc(ncheck), ploc(ncheck)
332        _RL rloc(ncheck), bloc(ncheck)        _RL rloc(ncheck), bloc(ncheck)
333    
# Line 282  C     I,J,K Line 335  C     I,J,K
335    
336        DATA tloc        DATA tloc
337       &     /3.25905152915860 _d 0, 20.38687090048638 _d 0,       &     /3.25905152915860 _d 0, 20.38687090048638 _d 0,
338         &     25.44820830309568 _d 0, 20.17368557065936 _d 0,
339         &     13.43397459640398 _d 0,
340       &      5.               _d 0, 25.               _d 0,       &      5.               _d 0, 25.               _d 0,
341       &      5.               _d 0, 25.               _d 0,       &      5.               _d 0, 25.               _d 0,
342       &      5.               _d 0, 25.               _d 0,       &      5.               _d 0, 25.               _d 0,
343       &      5.               _d 0, 25.               _d 0/,       &      5.               _d 0, 25.               _d 0/,
344       &     ptloc       &     ptloc
345       &     /3.               _d 0, 20.               _d 0,       &     /3.               _d 0, 20.               _d 0,
346         &     25.               _d 0, 20.               _d 0,
347         &     12.               _d 0,
348       &      5.               _d 0, 25.               _d 0,       &      5.               _d 0, 25.               _d 0,
349       &      5.               _d 0, 25.               _d 0,       &      5.               _d 0, 25.               _d 0,
350       &      4.03692566635316 _d 0, 22.84661726775120 _d 0,       &      4.03692566635316 _d 0, 22.84661726775120 _d 0,
351       &      3.62720389416752 _d 0, 22.62420229124846 _d 0/       &      3.62720389416752 _d 0, 22.62420229124846 _d 0/
352       &     sloc       &     sloc
353       &     /35.5 _d 0, 35. _d 0,       &     /35.5 _d 0, 35. _d 0,
354         &      35.0 _d 0, 20. _d 0,
355         &      40.0 _d 0,
356       &       0.  _d 0,  0. _d 0,       &       0.  _d 0,  0. _d 0,
357       &      35.  _d 0, 35. _d 0,       &      35.  _d 0, 35. _d 0,
358       &       0.  _d 0,  0. _d 0,       &       0.  _d 0,  0. _d 0,
359       &      35.  _d 0, 35. _d 0/       &      35.  _d 0, 35. _d 0/
360       &     ploc       &     ploc
361       &     /300. _d 5,  200. _d 5,       &     /300. _d 5,  200. _d 5,
362         &      200. _d 5,  100. _d 5,
363         &      800. _d 5,
364       &        0. _d 0,    0. _d 0,       &        0. _d 0,    0. _d 0,
365       &        0. _d 0,    0. _d 0,       &        0. _d 0,    0. _d 0,
366       &     1000. _d 5, 1000. _d 5,       &     1000. _d 5, 1000. _d 5,
367       &     1000. _d 5, 1000. _d 5/       &     1000. _d 5, 1000. _d 5/
368        DATA rloc        DATA rloc
369       &     /1041.83267 _d 0, 1033.213387 _d 0,       &     /1041.83267  _d 0, 1033.213387 _d 0,
370       &       999.96675 _d 0,  997.04796  _d 0,       &      1031.654229 _d 0, 1017.726743 _d 0,
371       &      1027.67547 _d 0, 1023.34306  _d 0,       &      1062.928258 _d 0,
372       &      1044.12802 _d 0, 1037.90204  _d 0,       &       999.96675  _d 0,  997.04796  _d 0,
373       &      1069.48914 _d 0, 1062.53817  _d 0/       &      1027.67547  _d 0, 1023.34306  _d 0,
374         &      1044.12802  _d 0, 1037.90204  _d 0,
375         &      1069.48914  _d 0, 1062.53817  _d 0/
376       &     bloc       &     bloc
377       &     /   -1.00000 _d 0,    -1.00000 _d 0,       &     /   -1.00000 _d 0,    -1.00000 _d 0,
378         &         -1.00000 _d 0,    -1.00000 _d 0,
379         &         -1.00000 _d 0,
380       &      20337.80375 _d 0, 22100.72106 _d 0,       &      20337.80375 _d 0, 22100.72106 _d 0,
381       &      22185.93358 _d 0, 23726.34949 _d 0,       &      22185.93358 _d 0, 23726.34949 _d 0,
382       &      23643.52599 _d 0, 25405.09717 _d 0,       &      23643.52599 _d 0, 25405.09717 _d 0,
# Line 331  C     I,J,K Line 396  C     I,J,K
396       &     .and. equationOfState.ne.'POLY3' ) then       &     .and. equationOfState.ne.'POLY3' ) then
397  C     check nonlinear EOS  C     check nonlinear EOS
398           write(msgBuf,'(a,a)')           write(msgBuf,'(a,a)')
399       &        'ml-eos: Check the equation of state: Type ',       &        'check_eos: Check the equation of state: Type ',
400       &        equationOfState       &        equationOfState
401           CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,           CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
402       &        SQUEEZE_RIGHT , 1)       &        SQUEEZE_RIGHT , 1)
# Line 344  C     check nonlinear EOS Line 409  C     check nonlinear EOS
409                 tFld(i,j,k,bi,bj) = tloc(kcheck)                 tFld(i,j,k,bi,bj) = tloc(kcheck)
410              endif              endif
411              sFld(i,j,k,bi,bj)    = sloc(kcheck)              sFld(i,j,k,bi,bj)    = sloc(kcheck)
412              rholoc               =  0. _d 0              rholoc(i,j)          =  0. _d 0
413              bulkMod(i,j)         = -1. _d 0              bulkMod(i,j)         = -1. _d 0
414                    
415              call find_rhop0(              call find_rho(
416       I           bi, bj, imin, imax, jmin, jmax, k,       &           bi, bj, iMin, iMax, jMin, jMax,  k, k,
417       I           tFld, sFld,       &           tFld, sFld, rholoc, myThid )
418       O           rhoP0,  
      I           myThid )  
               
419              call find_bulkmod(              call find_bulkmod(
420       I           bi, bj, imin, imax, jmin, jmax, k, k,       &           bi, bj, imin, imax, jmin, jmax, k, k,
421       I           tFld, sFld,       &           tFld, sFld, bulkMod, myThid )
422       O           bulkMod,  
      I           myThid )  
               
             rholoc = rhoP0(i,j)  
      &           /(1. _d 0 -  
      &           pressure(i,j,k,bi,bj)*SItoBar/bulkMod(i,j))  
               
         
423              write(msgBuf,              write(msgBuf,
424       &           '(a4,f4.1,a5,f4.1,a6,f5.0,a5,a3,f10.5,1x,f11.5)')       &           '(a4,f4.1,a5,f4.1,a6,f5.0,a5,a3,f10.5,1x,f11.5)')
425       &           'rho(', sFld(i,j,k,bi,bj), ' PSU,',       &           'rho(', sFld(i,j,k,bi,bj), ' PSU,',
# Line 372  C     check nonlinear EOS Line 428  C     check nonlinear EOS
428       &           rloc(kcheck), bloc(kcheck)       &           rloc(kcheck), bloc(kcheck)
429              CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,              CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
430       &           SQUEEZE_RIGHT , 1)       &           SQUEEZE_RIGHT , 1)
431              write(msgBuf,'(a4,a32,f10.5,1x,f11.5)')              write(msgBuf,'(a14,a22,f10.5,1x,f11.5)')
432       &           'rho ', ' = ', rholoc, bulkMod(i,j)       &           'rho(find_rho) ',
433         &           ' = ', rholoc(i,j)+rhoConst, bulkMod(i,j)
434                CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
435         &           SQUEEZE_RIGHT , 1)
436    
437                call find_rho_scalar( tFld(i,j,k,bi,bj), sLoc(kcheck),
438         &           pLoc(kcheck), rhoLoc(i,j), myThid )
439                bulkMod(i,j) = 0. _d 0
440                write(msgBuf,'(a21,a15,f10.5,1x,f11.5)')
441         &           'rho(find_rho_scalar) ',
442         &           ' = ', rholoc(i,j)+rhoConst, bulkMod(i,j)
443              CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,              CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
444       &           SQUEEZE_RIGHT , 1)       &           SQUEEZE_RIGHT , 1)
445                            
# Line 389  C     end check nonlinear EOS Line 455  C     end check nonlinear EOS
455    
456        return        return
457        end        end
458    

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.6

  ViewVC Help
Powered by ViewVC 1.1.22