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

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

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


Revision 1.5 - (show annotations) (download)
Wed Sep 26 18:09:14 2001 UTC (22 years, 7 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 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
4 #include "CPP_OPTIONS.h"
5 #define USE_FACTORIZED_POLY
6
7 CBOP
8 C !ROUTINE: FIND_ALPHA
9 C !INTERFACE:
10 SUBROUTINE FIND_ALPHA (
11 I bi, bj, iMin, iMax, jMin, jMax, k, kRef, eqn,
12 O alphaloc )
13
14 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 c Common
33 #include "SIZE.h"
34 #include "DYNVARS.h"
35 #include "EEPARAMS.h"
36 #include "PARAMS.h"
37
38 C !INPUT/OUTPUT PARAMETERS:
39 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 C !LOCAL VARIABLES:
47 c Local
48 integer i,j
49 _RL refTemp,refSalt,tP,sP
50 CEOP
51
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 write(*,*) 'FIND_ALPHA: eqn = ',eqn
91 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 write(*,*) 'FIND_BETA: eqn = ',eqn
169 stop 'FIND_BETA: argument "eqn" has illegal value'
170 endif
171
172 return
173 end

  ViewVC Help
Powered by ViewVC 1.1.22