ROMS
Loading...
Searching...
No Matches
oyster_floats_mod.h
Go to the documentation of this file.
2!
3!git $Id$
4!================================================== Hernan G. Arango ===
5! Copyright (c) 2002-2025 The ROMS Group Diego A. Narvaez !
6! Licensed under a MIT/X style license !
7! See License_ROMS.md !
8!=======================================================================
9! !
10! Parameters for oyster model (Dekshenieks et al. 1993, 1996, 1997; !
11! Narvaez et al. 2012a,b): !
12! !
13! Larvae_GR0 growth rate (um/day) !
14! Larvae_size0 size in terms of length (um) !
15! food_supply food supply (constant source; mg Carbon/l) !
16! settle_size settlement size (um) !
17! !
18! Turbidity effect parameters on planktonic larvae growth: !
19! !
20! turb_ambi ambient turbidity level (g/l) !
21! turb_axis turbidity linear axis crossing (g/l) !
22! turb_base turbidity exponential base factor (g/l) !
23! turb_crit critical turbidity value (g/l) !
24! turb_mean turbidity exponential mean (g/l) !
25! turb_rate turbidity exponential rate (1/(g/l)) !
26! turb_size minimum larvae size (um) affected by turbidity !
27! turb_slop turbidity linear slope (1/(g/l)) !
28! !
29! Planktonic larvae vertical migration (swimming) parameters: !
30! !
31! slope_Sdec coefficient due to decreasing salinity !
32! slope_Sinc coefficient due to increasing salinity !
33! swim_Sdec fraction active due to decreasing salinity !
34! swim_Sinc fraction active due to increasing salinity !
35! swim_Tmax maximum swimming time fraction !
36! swim_Tmin minimum swimming time fraction !
37! !
38! Planktonic larvae sinking parameters: !
39! !
40! sink_base exponential base factor (mm/s) !
41! sink_rate exponential rate factor (1/um) !
42! sink_size exponential mean size (um) !
43! !
44! Planktonic larvae swimming speed (mm/s) as a function of larval !
45! size (um) and temperature (Celsius), look table parameters: !
46! !
47! swim_DL larval size J-axis increment !
48! swim_DT temperature I-axis increment !
49! swim_Im number of values in temperature I-axis !
50! swim_Jm number of values in larval size J-axis !
51! swim_L0 starting value for larval size J-axis !
52! swim_T0 starting value for temperature I-axis !
53! swim_table larval swimming speed look table !
54! !
55! Planktonic larvae growth rate factor (nondimensional) as a function !
56! salinity and temperature, look table parameters: !
57! !
58! Gfactor_DS salinity I-axis increment !
59! Gfactor_DT temperature J-axis increment !
60! Gfactor_Im number of values in salinity I-axis !
61! Gfactor_Jm number of values in temperature J-axis !
62! Gfactor_S0 starting value for salinity I-axis !
63! Gfactor_T0 starting value for temperature J-axis !
64! Gfactor_table larval growth rate factor look table !
65! !
66! Planktonic larvae growth rate as a function of food supply and !
67! larval size, look table parameters: !
68! !
69! Grate_DF food supply I-axis increment !
70! Grate_DL larval size J-axis increment !
71! Grate_Im number of values in food supply I-axis !
72! Grate_Jm number of values in larval size J-axis !
73! Grate_F0 starting value for food supply I-axis !
74! Grate_L0 starting value for larval size J-axis !
75! Grate_table larval growth rate look table !
76! !
77!=======================================================================
78!
79 USE mod_param
80!
81 implicit none
82!
83! Oyster floats model parameters.
84!
85 integer :: gfactor_im
86 integer :: gfactor_jm
87
88 integer :: grate_im
89 integer :: grate_jm
90
91 integer :: swim_im
92 integer :: swim_jm
93!
94 real(r8) :: gfactor_ds
95 real(r8) :: gfactor_dt
96 real(r8) :: gfactor_s0
97 real(r8) :: gfactor_t0
98
99 real(r8) :: grate_f0
100 real(r8) :: grate_l0
101 real(r8) :: grate_df
102 real(r8) :: grate_dl
103
104 real(r8) :: swim_dl
105 real(r8) :: swim_dt
106 real(r8) :: swim_l0
107 real(r8) :: swim_t0
108!
109 real(r8), allocatable :: larvae_gr0(:) ! um/day
110 real(r8), allocatable :: larvae_size0(:) ! um
111 real(r8), allocatable :: food_supply(:) ! mg Carbon/l
112 real(r8), allocatable :: settle_size(:) ! um
113!
114 real(r8), allocatable :: sink_base(:) ! mm/s
115 real(r8), allocatable :: sink_rate(:) ! 1/um
116 real(r8), allocatable :: sink_size(:) ! um
117!
118 real(r8), allocatable :: slope_sinc(:)
119 real(r8), allocatable :: slope_sdec(:)
120 real(r8), allocatable :: swim_sdec(:)
121 real(r8), allocatable :: swim_sinc(:)
122 real(r8), allocatable :: swim_tmax(:)
123 real(r8), allocatable :: swim_tmin(:)
124!
125 real(r8), allocatable :: turb_ambi(:) ! g/l
126 real(r8), allocatable :: turb_axis(:) ! g/l
127 real(r8), allocatable :: turb_base(:) ! g/l
128 real(r8), allocatable :: turb_crit(:) ! g/l
129 real(r8), allocatable :: turb_mean(:) ! g/l
130 real(r8), allocatable :: turb_rate(:) ! l/g
131 real(r8), allocatable :: turb_size(:) ! um
132 real(r8), allocatable :: turb_slop(:) ! l/g
133!
134 real(r8), allocatable :: gfactor_table(:,:)
135 real(r8), allocatable :: grate_table(:,:)
136 real(r8), allocatable :: swim_table(:,:)
137!
138 CONTAINS
139!
141!
142!=======================================================================
143! !
144! This routine allocates oyster model variables. !
145! !
146!=======================================================================
147!
148!-----------------------------------------------------------------------
149! Allocate various module variables.
150!-----------------------------------------------------------------------
151!
152 IF (.not.allocated(larvae_gr0)) THEN
153 allocate ( larvae_gr0(ngrids) )
154 dmem(1)=dmem(1)+real(ngrids,r8)
155 END IF
156
157 IF (.not.allocated(larvae_size0)) THEN
158 allocate ( larvae_size0(ngrids) )
159 dmem(1)=dmem(1)+real(ngrids,r8)
160 END IF
161
162 IF (.not.allocated(food_supply)) THEN
163 allocate ( food_supply(ngrids) )
164 dmem(1)=dmem(1)+real(ngrids,r8)
165 END IF
166
167 IF (.not.allocated(settle_size)) THEN
168 allocate ( settle_size(ngrids) )
169 dmem(1)=dmem(1)+real(ngrids,r8)
170 END IF
171
172 IF (.not.allocated(sink_base)) THEN
173 allocate ( sink_base(ngrids) )
174 dmem(1)=dmem(1)+real(ngrids,r8)
175 END IF
176
177 IF (.not.allocated(sink_rate)) THEN
178 allocate ( sink_rate(ngrids) )
179 dmem(1)=dmem(1)+real(ngrids,r8)
180 END IF
181
182 IF (.not.allocated(sink_size)) THEN
183 allocate ( sink_size(ngrids) )
184 dmem(1)=dmem(1)+real(ngrids,r8)
185 END IF
186
187 IF (.not.allocated(slope_sdec)) THEN
188 allocate ( slope_sdec(ngrids) )
189 dmem(1)=dmem(1)+real(ngrids,r8)
190 END IF
191
192 IF (.not.allocated(slope_sinc)) THEN
193 allocate ( slope_sinc(ngrids) )
194 dmem(1)=dmem(1)+real(ngrids,r8)
195 END IF
196
197 IF (.not.allocated(swim_sdec)) THEN
198 allocate ( swim_sdec(ngrids) )
199 dmem(1)=dmem(1)+real(ngrids,r8)
200 END IF
201
202 IF (.not.allocated(swim_sinc)) THEN
203 allocate ( swim_sinc(ngrids) )
204 dmem(1)=dmem(1)+real(ngrids,r8)
205 END IF
206
207 IF (.not.allocated(swim_tmax)) THEN
208 allocate ( swim_tmax(ngrids) )
209 dmem(1)=dmem(1)+real(ngrids,r8)
210 END IF
211
212 IF (.not.allocated(swim_tmin)) THEN
213 allocate ( swim_tmin(ngrids) )
214 dmem(1)=dmem(1)+real(ngrids,r8)
215 END IF
216
217 IF (.not.allocated(turb_ambi)) THEN
218 allocate ( turb_ambi(ngrids) )
219 dmem(1)=dmem(1)+real(ngrids,r8)
220 END IF
221
222 IF (.not.allocated(turb_axis)) THEN
223 allocate ( turb_axis(ngrids) )
224 dmem(1)=dmem(1)+real(ngrids,r8)
225 END IF
226
227 IF (.not.allocated(turb_base)) THEN
228 allocate ( turb_base(ngrids) )
229 dmem(1)=dmem(1)+real(ngrids,r8)
230 END IF
231
232 IF (.not.allocated(turb_crit)) THEN
233 allocate ( turb_crit(ngrids) )
234 dmem(1)=dmem(1)+real(ngrids,r8)
235 END IF
236
237 IF (.not.allocated(turb_mean)) THEN
238 allocate ( turb_mean(ngrids) )
239 dmem(1)=dmem(1)+real(ngrids,r8)
240 END IF
241
242 IF (.not.allocated(turb_rate)) THEN
243 allocate ( turb_rate(ngrids) )
244 dmem(1)=dmem(1)+real(ngrids,r8)
245 END IF
246
247 IF (.not.allocated(turb_size)) THEN
248 allocate ( turb_size(ngrids) )
249 dmem(1)=dmem(1)+real(ngrids,r8)
250 END IF
251
252 IF (.not.allocated(turb_slop)) THEN
253 allocate ( turb_slop(ngrids) )
254 dmem(1)=dmem(1)+real(ngrids,r8)
255 END IF
256!
257 RETURN
258 END SUBROUTINE allocate_behavior
259
260 END MODULE mod_behavior
real(r8), dimension(:), allocatable food_supply
real(r8), dimension(:), allocatable turb_base
real(r8), dimension(:), allocatable larvae_gr0
real(r8), dimension(:), allocatable turb_crit
real(r8), dimension(:), allocatable turb_rate
subroutine allocate_behavior
real(r8), dimension(:), allocatable swim_tmin
real(r8), dimension(:,:), allocatable swim_table
real(r8), dimension(:), allocatable sink_size
real(r8), dimension(:), allocatable slope_sinc
real(r8), dimension(:), allocatable turb_slop
real(r8), dimension(:), allocatable turb_mean
real(r8), dimension(:), allocatable settle_size
real(r8), dimension(:), allocatable swim_tmax
real(r8), dimension(:), allocatable larvae_size0
real(r8), dimension(:,:), allocatable grate_table
real(r8), dimension(:), allocatable turb_ambi
real(r8), dimension(:), allocatable turb_axis
real(r8), dimension(:), allocatable swim_sinc
real(r8), dimension(:), allocatable slope_sdec
real(r8), dimension(:), allocatable sink_rate
real(r8), dimension(:), allocatable turb_size
real(r8), dimension(:), allocatable swim_sdec
real(r8), dimension(:,:), allocatable gfactor_table
real(r8), dimension(:), allocatable sink_base
real(r8), dimension(:), allocatable dmem
Definition mod_param.F:137
integer ngrids
Definition mod_param.F:113