1 |
C $Header: /u/gcmpack/development/heimbach/div/c34_adj/verification/vero/code/FFIELDS.h,v 1.1.1.1 2001/02/13 17:55:15 heimbach Exp $ |
2 |
C |
3 |
C /==========================================================\ |
4 |
C | FFIELDS.h | |
5 |
C | o Model forcing fields | |
6 |
C |==========================================================| |
7 |
C | The arrays here will need changing and customising for a | |
8 |
C | particular experiment. | |
9 |
C \==========================================================/ |
10 |
C |
11 |
C-- For a classical "gyre" type experiment just one term is needed. |
12 |
C |
13 |
C fu - Zonal surface wind stress |
14 |
C Units are N/m^2 (>0 from East to West) |
15 |
C |
16 |
C fv - Meridional surface wind stress |
17 |
C Units are N/m^2 (>0 from North to South)) |
18 |
C |
19 |
C EmPmR - Evaporation - Precipitation - Runoff |
20 |
C Units are m/s (>0 for ocean salting) |
21 |
C |
22 |
C Qnet - Upward surface heat flux |
23 |
C Units are W/m^2=kg/s^3 (>0 for ocean cooling) |
24 |
C |
25 |
C Qsw - Upward short-wave surface heat flux |
26 |
C Units are W/m^2=kg/s^3 (>0 for ocean cooling) |
27 |
C |
28 |
C dQdT - Thermal relaxation coefficient |
29 |
C (W/m^2/degrees -> degrees/second) |
30 |
C SST - Sea surface temperature (degrees) for relaxation |
31 |
C SSS - Sea surface salinity (psu) for relaxation |
32 |
|
33 |
COMMON /FFIELDS/ |
34 |
& fu, |
35 |
& fv, |
36 |
& Qnet, |
37 |
& EmPmR, |
38 |
& SST, |
39 |
& SSS, |
40 |
& Qsw |
41 |
_RS fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
42 |
_RS fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
43 |
_RS Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
44 |
_RS EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
45 |
_RS Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
46 |
_RS dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
47 |
_RS SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
48 |
_RS SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
49 |
|
50 |
C surfaceTendencyU (units are m/s^2) |
51 |
C -> usage in gU: gU = gU + surfaceTendencyU[m/s^2] |
52 |
C |
53 |
C surfaceTendencyV (units are m/s^2) |
54 |
C -> usage in gV: gV = gV + surfaceTendencyV[m/s^2] |
55 |
C |
56 |
C surfaceTendencyS (units are psu/s) |
57 |
C - EmPmR plus salinity relaxation term |
58 |
C -> calculate -lambda*(S(model)-S(clim)) |
59 |
C -> usage in gS: gS = gS + surfaceTendencyS[psu/s] |
60 |
C |
61 |
C surfaceTendencyT (units are degrees/s) |
62 |
C - Qnet plus temp. relaxation |
63 |
C -> calculate -lambda*(T(model)-T(clim)) |
64 |
C >>> Qnet assumed to be total flux minus s/w rad. <<< |
65 |
C -> usage in gT: gT = gT + surfaceTendencyT[K/s] |
66 |
C |
67 |
COMMON /TENDENCY_FORCING/ |
68 |
& surfaceTendencyU, |
69 |
& surfaceTendencyV, |
70 |
& surfaceTendencyT, |
71 |
& surfaceTendencyS, |
72 |
& tempQsw |
73 |
_RS surfaceTendencyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
74 |
_RS surfaceTendencyV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
75 |
_RS surfaceTendencyT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
76 |
_RS surfaceTendencyS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
77 |
_RS tempQsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
78 |
|
79 |
#ifdef ALLOW_COST_TEST |
80 |
|
81 |
C there are eight different forcing fields |
82 |
C each has a specific index |
83 |
|
84 |
integer maxforcing |
85 |
parameter( maxforcing = 8 ) |
86 |
|
87 |
integer fuindex , fvindex |
88 |
parameter( fuindex = 1, fvindex = 2 ) |
89 |
integer SSTindex , SSSindex |
90 |
parameter( SSTindex = 3, SSSindex = 4 ) |
91 |
integer Qnetindex , EmPmRindex |
92 |
parameter( Qnetindex = 5, EmPmRindex = 6 ) |
93 |
integer dQdTindex , Qswindex |
94 |
parameter( dQdTindex = 7, Qswindex = 8 ) |
95 |
|
96 |
C The follwing values define the forcing file content. |
97 |
C Each file can have a different frequency of forcing |
98 |
C and they can contain more records than necessary. |
99 |
C But at least as much as required by startTime and endTime of model |
100 |
C must be in the file. |
101 |
C |
102 |
C fstarttime : time of first record on file |
103 |
C fendtime : time of lasst record on file |
104 |
C finterval : time interval between two records |
105 |
C factrec : record number of forcing field currently in dot file |
106 |
|
107 |
_RS fstarttime(maxforcing) |
108 |
_RS finterval (maxforcing) |
109 |
_RS fendtime (maxforcing) |
110 |
|
111 |
integer factrec (2,maxforcing) |
112 |
INTEGER fuHandle |
113 |
INTEGER fvHandle |
114 |
INTEGER SSTHandle |
115 |
INTEGER SSSHandle |
116 |
INTEGER QnetHandle |
117 |
INTEGER EmPmRHandle |
118 |
INTEGER dQdTHandle |
119 |
INTEGER QswHandle |
120 |
|
121 |
common /forcing_rs/ fstarttime, finterval, fendtime |
122 |
|
123 |
common /forcing_in/ factrec |
124 |
& , fuHandle, fvHandle |
125 |
& , SSTHandle, SSSHandle |
126 |
& , QnetHandle,EmPmRHandle |
127 |
& , dQdTHandle, QswHandle |
128 |
|
129 |
#endif |