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

Annotation of /MITgcm/model/src/find_alpha.F

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


Revision 1.5 - (hide annotations) (download)
Wed Sep 26 18:09:14 2001 UTC (22 years, 8 months ago) by cnh
Branch: MAIN
CVS Tags: checkpoint44e_post, release1_p13_pre, checkpoint44f_post, checkpoint43a-release1mods, release1_p13, chkpt44d_post, release1_p8, release1_p9, release1_p1, release1_p2, release1_p3, release1_p4, release1_p5, release1_p6, release1_p7, checkpoint44e_pre, release1_b1, checkpoint43, release1_chkpt44d_post, release1_p11, icebear5, icebear4, icebear3, icebear2, release1-branch_tutorials, checkpoint45d_post, chkpt44a_post, checkpoint44h_pre, checkpoint46a_post, chkpt44c_pre, checkpoint45a_post, ecco_c44_e19, ecco_c44_e18, ecco_c44_e17, ecco_c44_e16, release1_p12, release1_p10, release1_p16, release1_p17, release1_p14, release1_p15, checkpoint44g_post, checkpoint45b_post, checkpoint46b_pre, release1-branch-end, release1_final_v1, checkpoint46, checkpoint44b_post, checkpoint46a_pre, checkpoint45c_post, ecco_ice2, ecco_ice1, checkpoint44h_post, release1_p12_pre, ecco_c44_e22, ecco_c44_e25, chkpt44a_pre, ecco_c44_e23, ecco_c44_e20, ecco_c44_e21, ecco_c44_e26, ecco_c44_e27, ecco_c44_e24, ecco-branch-mod1, ecco-branch-mod2, ecco-branch-mod3, ecco-branch-mod4, ecco-branch-mod5, release1_beta1, checkpoint44b_pre, checkpoint42, checkpoint41, checkpoint44, checkpoint45, chkpt44c_post, checkpoint44f_pre, release1-branch_branchpoint
Branch point for: c24_e25_ice, release1_final, release1-branch, release1, ecco-branch, release1_50yr, icebear, release1_coupled
Changes since 1.4: +27 -17 lines
Bringing comments up to data and formatting for document extraction.

1 cnh 1.5 C $Header: /u/gcmpack/models/MITgcmUV/model/src/find_alpha.F,v 1.4 2001/04/10 22:35:25 heimbach Exp $
2     C $Name: $
3 adcroft 1.1
4     #include "CPP_OPTIONS.h"
5     #define USE_FACTORIZED_POLY
6    
7 cnh 1.5 CBOP
8     C !ROUTINE: FIND_ALPHA
9     C !INTERFACE:
10     SUBROUTINE FIND_ALPHA (
11 adcroft 1.1 I bi, bj, iMin, iMax, jMin, jMax, k, kRef, eqn,
12     O alphaloc )
13    
14 cnh 1.5 C !DESCRIPTION: \bv
15     C *==========================================================*
16     C | o SUBROUTINE FIND_ALPHA
17     C | Calculates [drho(S,T,z) / dT] of a horizontal slice
18     C *==========================================================*
19     C |
20     C | k - is the Theta/Salt level
21     C | kRef - determines pressure reference level
22     C | (not used in 'LINEAR' mode)
23     C | eqn - determines the eqn. of state: 'LINEAR' or 'POLY3'
24     C |
25     C | alphaloc - drho / dT (kg/m^3/C)
26     C |
27     C *==========================================================*
28     C \ev
29    
30     C !USES:
31     IMPLICIT NONE
32 adcroft 1.1 c Common
33     #include "SIZE.h"
34     #include "DYNVARS.h"
35     #include "EEPARAMS.h"
36     #include "PARAMS.h"
37    
38 cnh 1.5 C !INPUT/OUTPUT PARAMETERS:
39 adcroft 1.1 c Arguments
40     integer bi,bj,iMin,iMax,jMin,jMax
41     integer k ! Level of Theta/Salt slice
42     integer kRef ! Pressure reference level
43     character*(*) eqn
44     _RL alphaloc(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
45    
46 cnh 1.5 C !LOCAL VARIABLES:
47 adcroft 1.1 c Local
48     integer i,j
49     _RL refTemp,refSalt,tP,sP
50 cnh 1.5 CEOP
51 adcroft 1.1
52     if (eqn.eq.'LINEAR') then
53    
54     do j=jMin,jMax
55     do i=iMin,iMax
56     alphaloc(i,j) = -rhonil * tAlpha
57     enddo
58     enddo
59    
60     elseif (eqn.eq.'POLY3') then
61    
62     refTemp=eosRefT(kRef)
63     refSalt=eosRefS(kRef)
64    
65     do j=jMin,jMax
66     do i=iMin,iMax
67     tP=theta(i,j,k,bi,bj)-refTemp
68     sP=salt(i,j,k,bi,bj)-refSalt
69     #ifdef USE_FACTORIZED_POLY
70     alphaloc(i,j) =
71     & ( eosC(6,kRef)
72     & *tP*3.
73     & +(eosC(7,kRef)*sP + eosC(3,kRef))*2.
74     & )*tP
75     & +(eosC(8,kRef)*sP + eosC(4,kRef) )*sP + eosC(1,kRef)
76     &
77     #else
78     alphaloc(i,j) =
79     & eosC(1,kRef) +
80     & eosC(3,kRef)*tP*2. +
81     & eosC(4,kRef) *sP +
82     & eosC(6,kRef)*tP*tP*3. +
83     & eosC(7,kRef)*tP*2. *sP +
84     & eosC(8,kRef) *sP*sP
85     #endif
86     enddo
87     enddo
88    
89     else
90 heimbach 1.4 write(*,*) 'FIND_ALPHA: eqn = ',eqn
91 adcroft 1.1 stop 'FIND_ALPHA: argument "eqn" has illegal value'
92     endif
93    
94     return
95     end
96    
97     subroutine FIND_BETA (
98     I bi, bj, iMin, iMax, jMin, jMax, k, kRef, eqn,
99     O betaloc )
100     C /==========================================================\
101     C | o SUBROUTINE FIND_BETA |
102     C | Calculates [drho(S,T,z) / dS] of a horizontal slice |
103     C |==========================================================|
104     C | |
105     C | k - is the Theta/Salt level |
106     C | kRef - determines pressure reference level |
107     C | (not used in 'LINEAR' mode) |
108     C | eqn - determines the eqn. of state: 'LINEAR' or 'POLY3' |
109     C | |
110     C | betaloc - drho / dS (kg/m^3/PSU) |
111     C | |
112     C \==========================================================/
113     implicit none
114    
115     c Common
116     #include "SIZE.h"
117     #include "DYNVARS.h"
118     #include "EEPARAMS.h"
119     #include "PARAMS.h"
120    
121     c Arguments
122     integer bi,bj,iMin,iMax,jMin,jMax
123     integer k ! Level of Theta/Salt slice
124     integer kRef ! Pressure reference level
125     character*(*) eqn
126     _RL betaloc(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
127    
128     c Local
129     integer i,j
130     _RL refTemp,refSalt,tP,sP
131    
132     if (eqn.eq.'LINEAR') then
133    
134     do j=jMin,jMax
135     do i=iMin,iMax
136     betaloc(i,j) = rhonil * sBeta
137     enddo
138     enddo
139    
140     elseif (eqn.eq.'POLY3') then
141    
142     refTemp=eosRefT(kRef)
143     refSalt=eosRefS(kRef)
144    
145     do j=jMin,jMax
146     do i=iMin,iMax
147     tP=theta(i,j,k,bi,bj)-refTemp
148     sP=salt(i,j,k,bi,bj)-refSalt
149     #ifdef USE_FACTORIZED_POLY
150     betaloc(i,j) =
151     & ( eosC(9,kRef)*sP*3. + eosC(5,kRef)*2. )*sP + eosC(2,kRef)
152     & + ( eosC(7,kRef)*tP
153     & +eosC(8,kRef)*sP*2. + eosC(4,kRef)
154     & )*tP
155     #else
156     betaloc(i,j) =
157     & eosC(2,kRef) +
158     & eosC(4,kRef)*tP +
159     & eosC(5,kRef) *sP*2. +
160     & eosC(7,kRef)*tP*tP +
161     & eosC(8,kRef)*tP *sP*2. +
162     & eosC(9,kRef) *sP*sP*3.
163     #endif
164     enddo
165     enddo
166    
167     else
168 heimbach 1.4 write(*,*) 'FIND_BETA: eqn = ',eqn
169 adcroft 1.1 stop 'FIND_BETA: argument "eqn" has illegal value'
170     endif
171    
172     return
173     end

  ViewVC Help
Powered by ViewVC 1.1.22