1 |
jahn |
1.1 |
#include "CPP_OPTIONS.h" |
2 |
|
|
#include "PTRACERS_OPTIONS.h" |
3 |
|
|
#include "DARWIN_OPTIONS.h" |
4 |
|
|
|
5 |
|
|
#ifdef ALLOW_PTRACERS |
6 |
|
|
#ifdef ALLOW_MONOD |
7 |
|
|
|
8 |
|
|
c ========================================================== |
9 |
|
|
c SUBROUTINE MONOD_GENERATE_ZOO |
10 |
|
|
c generate parameters for zooplankton |
11 |
|
|
c initial simple 2 species setup |
12 |
|
|
c Stephanie Dutkiewicz Spring 2009 |
13 |
|
|
c ========================================================== |
14 |
|
|
SUBROUTINE MONOD_GENERATE_ZOO(myThid) |
15 |
|
|
|
16 |
|
|
implicit none |
17 |
|
|
#include "EEPARAMS.h" |
18 |
|
|
#include "MONOD_SIZE.h" |
19 |
|
|
#include "DARWIN_PARAMS.h" |
20 |
|
|
#include "MONOD.h" |
21 |
|
|
|
22 |
|
|
|
23 |
|
|
|
24 |
|
|
C !INPUT PARAMETERS: =================================================== |
25 |
|
|
C myThid :: thread number |
26 |
|
|
INTEGER myThid |
27 |
|
|
|
28 |
|
|
C === Functions === |
29 |
|
|
_RL DARWIN_RANDOM |
30 |
|
|
EXTERNAL DARWIN_RANDOM |
31 |
|
|
_RL DARWIN_RANDOM_NORMAL |
32 |
|
|
EXTERNAL DARWIN_RANDOM_NORMAL |
33 |
|
|
|
34 |
|
|
C !LOCAL VARIABLES: |
35 |
|
|
C === Local variables === |
36 |
|
|
C msgBuf - Informational/error meesage buffer |
37 |
|
|
CHARACTER*(MAX_LEN_MBUF) msgBuf |
38 |
|
|
|
39 |
|
|
_RL dm |
40 |
|
|
_RL volp |
41 |
|
|
_RL PI |
42 |
|
|
INTEGER np |
43 |
|
|
INTEGER nz |
44 |
|
|
INTEGER signvar |
45 |
|
|
PARAMETER ( PI = 3.14159265358979323844D0 ) |
46 |
|
|
|
47 |
|
|
CEOP |
48 |
|
|
c |
49 |
|
|
|
50 |
|
|
#ifdef OLD_GRAZE |
51 |
|
|
c for zooplankton |
52 |
|
|
c assume zoo(1) = small, zoo(2) = big |
53 |
|
|
c then grazing efficiency according to size |
54 |
|
|
zoosize(1) = 0.0 _d 0 |
55 |
|
|
zoosize(2) = 1.0 _d 0 |
56 |
|
|
IF ( nzmax.GT.2 ) THEN |
57 |
|
|
WRITE(msgBuf,'(2A,I5)') 'MONOD_GENERATE_ZOO: ', |
58 |
|
|
& 'nzmax = ', nzmax |
59 |
|
|
CALL PRINT_ERROR( msgBuf , 1) |
60 |
|
|
WRITE(msgBuf,'(2A)') 'MONOD_GENERATE_ZOO: ', |
61 |
|
|
& 'please provide size info for nz > 2' |
62 |
|
|
CALL PRINT_ERROR( msgBuf , 1) |
63 |
|
|
STOP 'ABNORMAL END: S/R MONOD_GENERATE_ZOO' |
64 |
|
|
ENDIF |
65 |
|
|
|
66 |
|
|
c grazing rates according to "allometry" |
67 |
|
|
c big grazers preferentially eat big phyto etc... |
68 |
|
|
do np=1,npmax |
69 |
|
|
do nz=1,nzmax |
70 |
|
|
if(zoosize(nz) .eq. physize(np))then |
71 |
|
|
graze(np,nz) = GrazeFast |
72 |
|
|
else |
73 |
|
|
graze(np,nz) = GrazeSlow |
74 |
|
|
end if |
75 |
|
|
if (diacoc(np).eq.1) then |
76 |
|
|
graze(np,nz)= graze(np,nz)*diatomgraz |
77 |
|
|
endif |
78 |
|
|
if (diacoc(np).eq.2) then |
79 |
|
|
graze(np,nz)= graze(np,nz)*coccograz |
80 |
|
|
endif |
81 |
|
|
if (diacoc(np).eq.0.and.physize(np).eq.1) then |
82 |
|
|
graze(np,nz)= graze(np,nz)*olargegraz |
83 |
|
|
endif |
84 |
|
|
end do |
85 |
|
|
end do |
86 |
|
|
|
87 |
|
|
c zooplankton export/mortality |
88 |
|
|
c small zooplankton (zoosize = 0.) lower export fraction |
89 |
|
|
do nz = 1, nzmax |
90 |
|
|
if(zoosize(nz) .eq. 0.0)then |
91 |
|
|
ExportFracZ(nz) = ZooexfacSmall |
92 |
|
|
mortzoo(nz) = ZoomortSmall |
93 |
stephd |
1.2 |
mortzoo2(nz) = ZoomortSmall2 |
94 |
jahn |
1.1 |
else |
95 |
|
|
ExportFracZ(nz) = ZooexfacBig |
96 |
|
|
mortzoo(nz) = ZoomortBig |
97 |
stephd |
1.2 |
mortzoo2(nz) = ZoomortBig2 |
98 |
jahn |
1.1 |
endif |
99 |
|
|
end do |
100 |
|
|
#endif |
101 |
|
|
|
102 |
|
|
|
103 |
|
|
#ifndef OLD_GRAZE |
104 |
|
|
c for zooplankton |
105 |
|
|
c assume zoo(1) = small, zoo(2) = big |
106 |
|
|
zoosize(1) = 0.0 _d 0 |
107 |
|
|
zoosize(2) = 1.0 _d 0 |
108 |
|
|
grazemax(1) = GrazeFast |
109 |
|
|
grazemax(2) = GrazeFast |
110 |
|
|
ExportFracZ(1)=ZooexfacSmall |
111 |
|
|
ExportFracZ(2)=ZooexfacBig |
112 |
|
|
mortzoo(1) = ZoomortSmall |
113 |
|
|
mortzoo(2) = ZoomortBig |
114 |
stephd |
1.2 |
mortzoo2(1) = ZoomortSmall2 |
115 |
|
|
mortzoo2(2) = ZoomortBig2 |
116 |
jahn |
1.1 |
ExportFracGraz(1)=ExGrazFracbig |
117 |
|
|
ExportFracGraz(2)=ExGrazFracsmall |
118 |
|
|
IF ( nzmax.GT.2 ) THEN |
119 |
|
|
WRITE(msgBuf,'(2A,I5)') 'MONOD_GENERATE_ZOO: ', |
120 |
|
|
& 'nzmax = ', nzmax |
121 |
|
|
CALL PRINT_ERROR( msgBuf , 1) |
122 |
|
|
WRITE(msgBuf,'(2A)') 'MONOD_GENERATE_ZOO: ', |
123 |
|
|
& 'please provide size info for nz > 2' |
124 |
|
|
CALL PRINT_ERROR( msgBuf , 1) |
125 |
|
|
STOP 'ABNORMAL END: S/R MONOD_GENERATE_ZOO' |
126 |
|
|
ENDIF |
127 |
|
|
c |
128 |
|
|
do nz=1,nzmax |
129 |
|
|
c size of phytoplankton |
130 |
|
|
if(zoosize(nz).eq. 1.0 _d 0)then |
131 |
|
|
dm = 300. _d 0 ! diameter (micrometer) |
132 |
|
|
else |
133 |
|
|
dm = 30. _d 0 ! diameter (micrometer) |
134 |
|
|
end if |
135 |
|
|
c phytoplankton volume in micrometers cubed |
136 |
|
|
volp=4. _d 0/3. _d 0 *PI*(dm/2. _d 0)**3 _d 0 |
137 |
|
|
c |
138 |
|
|
c common block variables (in m and m3) |
139 |
|
|
zoo_esd(nz)=dm* 1. _d -6 |
140 |
|
|
zoo_vol(nz)=volp* 1. _d -18 |
141 |
|
|
c palatibity according to "allometry" |
142 |
|
|
c big grazers preferentially eat big phyto etc... |
143 |
|
|
do np=1,npmax |
144 |
|
|
if (zoosize(nz).eq.physize(np)) then |
145 |
|
|
palat(np,nz)=palathi |
146 |
|
|
asseff(np,nz)=GrazeEffmod |
147 |
|
|
else |
148 |
|
|
palat(np,nz)=palatlo |
149 |
|
|
if (physize(np).eq.0. _d 0) then |
150 |
|
|
asseff(np,nz)=GrazeEffhi |
151 |
|
|
else |
152 |
|
|
asseff(np,nz)=GrazeEfflow |
153 |
|
|
endif |
154 |
|
|
endif |
155 |
|
|
c diatoms even less palatible |
156 |
|
|
if (diacoc(np).eq.1. _d 0) then |
157 |
|
|
palat(np,nz)= palat(np,nz)*diatomgraz |
158 |
|
|
endif |
159 |
|
|
c coccolithophes less palatible |
160 |
|
|
if (diacoc(np).eq.2. _d 0) then |
161 |
|
|
palat(np,nz)= palat(np,nz)*coccograz |
162 |
|
|
endif |
163 |
|
|
c other large phyto less palatible |
164 |
|
|
if (diacoc(np).eq.0. _d 0 .and.physize(np).eq.1. _d 0) then |
165 |
|
|
palat(np,nz)= palat(np,nz)*olargegraz |
166 |
|
|
endif |
167 |
|
|
c need something in here for tricho |
168 |
|
|
enddo |
169 |
|
|
enddo |
170 |
|
|
#endif |
171 |
|
|
|
172 |
|
|
RETURN |
173 |
|
|
END |
174 |
|
|
#endif /*MONOD*/ |
175 |
|
|
#endif /*ALLOW_PTRACERS*/ |
176 |
|
|
|
177 |
|
|
c =========================================================== |