Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
CarbonCycleConstruction
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Sumbel Shangareeva
CarbonCycleConstruction
Commits
f9cf182e
Commit
f9cf182e
authored
1 year ago
by
a_medvedev
Browse files
Options
Downloads
Patches
Plain Diff
тест машинной точности
parent
3200361e
No related branches found
No related tags found
No related merge requests found
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
CCC.f90
+22
-20
22 additions, 20 deletions
CCC.f90
core.f90
+3
-2
3 additions, 2 deletions
core.f90
inmcm.f90
+32
-17
32 additions, 17 deletions
inmcm.f90
my_carbon_model.f90
+36
-19
36 additions, 19 deletions
my_carbon_model.f90
with
93 additions
and
58 deletions
CCC.f90
+
22
−
20
View file @
f9cf182e
...
@@ -175,11 +175,6 @@ do t = 1, ntime
...
@@ -175,11 +175,6 @@ do t = 1, ntime
! вывод данных:
! вывод данных:
if
(
hour
/
=
hour_mem
)
then
hour_mem
=
hour
endif
if
(
month
/
=
month_mem
)
then
print
'(" ",i4.4,"-",i2.2,"-",i2.2," ",i2.2,":",i2.2,":",i2.2)'
,
year
,
month
,
day
,
hour
,
minute
,
second
print
'(" ",i4.4,"-",i2.2,"-",i2.2," ",i2.2,":",i2.2,":",i2.2)'
,
year
,
month
,
day
,
hour
,
minute
,
second
print
*
,
adc6
(
i0
,
j0
,
nv
),
adc8
(
i0
,
j0
,
nv
),
adc8b
(
i0
,
j0
,
nv
)
print
*
,
adc6
(
i0
,
j0
,
nv
),
adc8
(
i0
,
j0
,
nv
),
adc8b
(
i0
,
j0
,
nv
)
print
*
,
Cveg
(
i0
,
j0
),
Csoil
(
i0
,
j0
),
Csoilb
(
i0
,
j0
),
Catm
(
i0
,
j0
)
print
*
,
Cveg
(
i0
,
j0
),
Csoil
(
i0
,
j0
),
Csoilb
(
i0
,
j0
),
Catm
(
i0
,
j0
)
...
@@ -188,18 +183,25 @@ do t = 1, ntime
...
@@ -188,18 +183,25 @@ do t = 1, ntime
if
(
pool_mem
(
i0
,
j0
,
n_Csoilb
)
>
0
)
print
*
,
(
pool
(
i0
,
j0
,
n_Csoilb
)
-
pool_mem
(
i0
,
j0
,
n_Csoilb
))/
pool_mem
(
i0
,
j0
,
n_Csoilb
)
if
(
pool_mem
(
i0
,
j0
,
n_Csoilb
)
>
0
)
print
*
,
(
pool
(
i0
,
j0
,
n_Csoilb
)
-
pool_mem
(
i0
,
j0
,
n_Csoilb
))/
pool_mem
(
i0
,
j0
,
n_Csoilb
)
print
*
,
'eps = '
,
(
adc6
(
i0
,
j0
,
nv
)
-
Cveg
(
i0
,
j0
))
/
adc6
(
i0
,
j0
,
nv
)
*
100
,
'%'
print
*
,
'eps = '
,
(
adc6
(
i0
,
j0
,
nv
)
-
Cveg
(
i0
,
j0
))
/
adc6
(
i0
,
j0
,
nv
)
*
100
,
'%'
print
*
,
'---'
print
*
,
'---'
print
*
,
'fpsn'
,
fpsn
(
nv
),
fpsn_new
(
i0
,
j0
)/
umol2kg
print
*
,
'fpsn'
,
fpsn
(
nv
),
fpsn_new
(
i0
,
j0
)
!
/umol2kg
print
*
,
'frg'
,
frg
(
nv
),
frg_new
(
i0
,
j0
)/
umol2kg
print
*
,
'frg'
,
frg
(
nv
),
frg_new
(
i0
,
j0
)
!
/umol2kg
print
*
,
'frmf'
,
frmf
(
nv
),
frmf_new
(
i0
,
j0
)/
umol2kg
print
*
,
'frmf'
,
frmf
(
nv
),
frmf_new
(
i0
,
j0
)
!
/umol2kg
print
*
,
'frms'
,
frms
(
nv
),
frms_new
(
i0
,
j0
)/
umol2kg
print
*
,
'frms'
,
frms
(
nv
),
frms_new
(
i0
,
j0
)
!
/umol2kg
print
*
,
'frmr'
,
frmr
(
nv
),
frmr_new
(
i0
,
j0
)/
umol2kg
print
*
,
'frmr'
,
frmr
(
nv
),
frmr_new
(
i0
,
j0
)
!
/umol2kg
print
*
,
'fmicr'
,
fmicr
(
nv
),
fmicr_new
(
i0
,
j0
)/
umol2kg
print
*
,
'fmicr'
,
fmicr
(
nv
),
fmicr_new
(
i0
,
j0
)
!
/umol2kg
print
*
,
'fmicrb'
,
fmicrb
(
nv
),
fmicrb_new
(
i0
,
j0
)/
umol2kg
print
*
,
'fmicrb'
,
fmicrb
(
nv
),
fmicrb_new
(
i0
,
j0
)
!
/umol2kg
print
*
,
'dv68'
,
dv68
(
nv
)/
umol2kg
,
dv68_new
(
i0
,
j0
)/
umol2kg
print
*
,
'dv68'
,
dv68
(
nv
)/
umol2kg
,
dv68_new
(
i0
,
j0
)/
umol2kg
print
*
,
'ddc6a'
,
ddc6a
(
nv
)/
umol2kg
/
dt
,
ddc6a_new
(
i0
,
j0
)/
umol2kg
print
*
,
'ddc6a'
,
ddc6a
(
nv
)/
dt
/
umol2kg
,
ddc6a_new
(
i0
,
j0
)/
umol2kg
print
*
,
'ddc6b'
,
ddc6b
(
nv
)/
umol2kg
/
dt
,
ddc6b_new
(
i0
,
j0
)/
umol2kg
print
*
,
'ddc6b'
,
ddc6b
(
nv
)/
dt
/
umol2kg
,
ddc6b_new
(
i0
,
j0
)/
umol2kg
print
*
,
'ddc8'
,
ddc8
(
nv
)/
umol2kg
/
dt
,
ddc8_new
(
i0
,
j0
)/
umol2kg
print
*
,
'ddc8'
,
ddc8
(
nv
)/
dt
/
umol2kg
,
ddc8_new
(
i0
,
j0
)/
umol2kg
print
*
print
*
pause
if
(
hour
/
=
hour_mem
)
then
hour_mem
=
hour
endif
if
(
month
/
=
month_mem
)
then
month_mem
=
month
month_mem
=
month
endif
endif
...
...
This diff is collapsed.
Click to expand it.
core.f90
+
3
−
2
View file @
f9cf182e
...
@@ -5,7 +5,7 @@ implicit none
...
@@ -5,7 +5,7 @@ implicit none
! ----------------------------------------------- Constant values ------------------------------------------------
! ----------------------------------------------- Constant values ------------------------------------------------
! физические константы:
! физические константы:
integer
,
parameter
::
ti
=
60
*
60
*
24
!< number of second per day
integer
,
parameter
::
ti
=
60
*
60
*
24
!< number of second per day
real
,
parameter
::
pi
=
4.
*
atan
(
1.
)
!< pi
real
,
parameter
::
pi
=
3.1415
!
4.*atan(1.) !< pi
real
,
parameter
::
hPa2Pa
=
100.
!< гектопаскали в паскали
real
,
parameter
::
hPa2Pa
=
100.
!< гектопаскали в паскали
real
,
parameter
::
umol2kg
=
12.
*
1.e-9
!< микромоли в килограммы углерода
real
,
parameter
::
umol2kg
=
12.
*
1.e-9
!< микромоли в килограммы углерода
real
,
parameter
::
Tz
=
0.
!< точка замерзания воды, С
real
,
parameter
::
Tz
=
0.
!< точка замерзания воды, С
...
@@ -227,7 +227,8 @@ contains
...
@@ -227,7 +227,8 @@ contains
laisha
(
k
)
=
elai
(
k
)
*
fsha
(
k
)
laisha
(
k
)
=
elai
(
k
)
*
fsha
(
k
)
fpsn
(
k
)
=
amndf
(
k
)
*
(
psnsun
(
k
)
*
laisun
(
k
)
+
psnsha
(
k
)
*
laisha
(
k
))
fpsn
(
k
)
=
amndf
(
k
)
*
(
psnsun
(
k
)
*
laisun
(
k
)
+
psnsha
(
k
)
*
laisha
(
k
))
f
=
fpsn
(
k
)
*
veget_ich
(
k
)
*
amsq
*
(
1.0
-
sq
(
4
))
*
12.e-9
! f = fpsn(k) * veget_ich(k)*amsq*(1.0-sq(4)) * umol2kg
f
=
fpsn
(
k
)
end
function
end
function
...
...
This diff is collapsed.
Click to expand it.
inmcm.f90
+
32
−
17
View file @
f9cf182e
...
@@ -42,7 +42,7 @@ integer, parameter :: n3 = 1 !< Number of respiration function
...
@@ -42,7 +42,7 @@ integer, parameter :: n3 = 1 !< Number of respiration function
integer
,
parameter
::
n4
=
1
!< Number of litterfall function
integer
,
parameter
::
n4
=
1
!< Number of litterfall function
! ---
! ---
real
,
parameter
::
pi_loc
=
4.
*
atan
(
1.
)
real
,
parameter
::
pi_loc
=
3.1415
!
4.*atan(1.)
real
,
parameter
::
r_earth_loc
=
6371000.
real
,
parameter
::
r_earth_loc
=
6371000.
integer
,
parameter
::
nv1
=
13
!< число типов поверхности
integer
,
parameter
::
nv1
=
13
!< число типов поверхности
...
@@ -420,10 +420,13 @@ select case (n1)
...
@@ -420,10 +420,13 @@ select case (n1)
DO
J
=
j0
,
j1
DO
J
=
j0
,
j1
DO
I
=
i0
,
i1
DO
I
=
i0
,
i1
! IF(OLIM(I,J).EQ.1) THEN
! IF(OLIM(I,J).EQ.1) THEN
DO
NVV
=
1
,
NV2
! DO NVV=1,NV2
SUMS
(
1
)
=
SUMS
(
1
)
+
ADC6
(
I
,
J
,
NVV
)
*
DEFR
(
NVV
)
*
AREA
*
1.E-12
NVV
=
3
SUMS
(
2
)
=
SUMS
(
2
)
+
ADC8
(
I
,
J
,
NVV
)
*
SOER
(
NVV
)
*
AREA
*
1.E-12
! SUMS(1)=SUMS(1)+ADC6(I,J,NVV)*DEFR(NVV)*AREA*1.E-12
END
DO
! SUMS(2)=SUMS(2)+ADC8(I,J,NVV)*SOER(NVV)*AREA*1.E-12
SUMS
(
1
)
=
SUMS
(
1
)
+
DEFR
(
NVV
)
*
AREA
!*1.E-12
SUMS
(
2
)
=
SUMS
(
2
)
+
SOER
(
NVV
)
*
AREA
!*1.E-12
! END DO
! END IF
! END IF
END
DO
END
DO
END
DO
END
DO
...
@@ -599,22 +602,28 @@ select case (n1)
...
@@ -599,22 +602,28 @@ select case (n1)
defor0b
=
defor0
-
defor0a
defor0b
=
defor0
-
defor0a
if
(
sc6
/
=
0.
)
then
if
(
sc6
/
=
0.
)
then
ddc6a
(
i
)
=
dc6
(
i
)
*
defr
(
i
)
*
defor0a
*
adefr
*
dt
/
yrs
/
sc6
! ddc6a(i) = dc6(i) * defr(i) * defor0a * adefr * dt / yrs / sc6
ddc6b
(
i
)
=
dc6
(
i
)
*
defr
(
i
)
*
defor0b
*
adefr
*
dt
/
yrs
/
sc6
! ddc6b(i) = dc6(i) * defr(i) * defor0b * adefr * dt / yrs / sc6
ddc6a
(
i
)
=
defr
(
i
)
/
sc6
*
defor0a
*
adefr
*
dt
/
yrs
ddc6b
(
i
)
=
defr
(
i
)
/
sc6
*
defor0b
*
adefr
*
dt
/
yrs
else
else
ddc6a
(
i
)
=
0.
ddc6a
(
i
)
=
0.
ddc6b
(
i
)
=
0.
ddc6b
(
i
)
=
0.
endif
endif
if
(
sc8
/
=
0.
)
then
if
(
sc8
/
=
0.
)
then
ddc8
(
i
)
=
dc8
(
i
)
*
soer
(
i
)
*
defor0
*
(
1.0
-
adefr
)
*
dt
/
yrs
/
sc8
! ddc8(i) = dc8(i) * soer(i) * defor0 * (1.0 - adefr) * dt / yrs / sc8
ddc8
(
i
)
=
soer
(
i
)
/
sc8
*
defor0
*
(
1.0
-
adefr
)
*
dt
/
yrs
else
else
ddc8
(
i
)
=
0.
ddc8
(
i
)
=
0.
endif
endif
ddc6a
(
i
)
=
ddc6a
(
i
)
*
area
/
(
4.
*
pi_loc
*
r_earth_loc
**
2
)
! ddc6a(i) = ddc6a(i) * area / (4.*pi_loc*r_earth_loc**2)
ddc6b
(
i
)
=
ddc6b
(
i
)
*
area
/
(
4.
*
pi_loc
*
r_earth_loc
**
2
)
! ddc6b(i) = ddc6b(i) * area / (4.*pi_loc*r_earth_loc**2)
ddc8
(
i
)
=
ddc8
(
i
)
*
area
/
(
4.
*
pi_loc
*
r_earth_loc
**
2
)
! ddc8(i) = ddc8(i) * area / (4.*pi_loc*r_earth_loc**2)
ddc6a
(
i
)
=
ddc6a
(
i
)
*
area
/
(
4.
*
pi_loc
*
r_earth_loc
**
2
)
*
1.e+12
ddc6b
(
i
)
=
ddc6b
(
i
)
*
area
/
(
4.
*
pi_loc
*
r_earth_loc
**
2
)
*
1.e+12
ddc8
(
i
)
=
ddc8
(
i
)
*
area
/
(
4.
*
pi_loc
*
r_earth_loc
**
2
)
*
1.e+12
case
default
case
default
ddc6a
(
i
)
=
1.
ddc6a
(
i
)
=
1.
...
@@ -649,9 +658,12 @@ select case (n3)
...
@@ -649,9 +658,12 @@ select case (n3)
amns
=
stemb
(
i
)/
znam
!< Tech variable
amns
=
stemb
(
i
)/
znam
!< Tech variable
amnr
=
rootb
(
i
)/
znam
!< Tech variable
amnr
=
rootb
(
i
)/
znam
!< Tech variable
frmf
(
i
)
=
1.00
*
amndf
(
i
)
*
rmf25
(
i
)
*
tlai
(
i
)
*
fnf
*
tf
*
rf
*
btran
(
i
)
! frmf(i) = 1.00 * amndf(i) * rmf25(i) * tlai(i) * fnf * tf * rf * btran(i)
frms
(
i
)
=
0.35
*
amndf
(
i
)
*
rms25
(
i
)
*
dc6
(
i
)
*
amns
*
tf
*
rf
! frms(i) = 0.35 * amndf(i) * rms25(i) * dc6(i) * amns * tf * rf
frmr
(
i
)
=
0.35
*
amndf
(
i
)
*
rmr25
(
i
)
*
dc6
(
i
)
*
amnr
*
tf
*
rf
! frmr(i) = 0.35 * amndf(i) * rmr25(i) * dc6(i) * amnr * tf * rf
frmf
(
i
)
=
1.00
*
amndf
(
i
)
*
rmf25
(
i
)
*
tlai
(
i
)
*
fnf
*
rf
*
btran
(
i
)
frms
(
i
)
=
0.35
*
amndf
(
i
)
*
rms25
(
i
)
*
amns
*
rf
frmr
(
i
)
=
0.35
*
amndf
(
i
)
*
rmr25
(
i
)
*
amnr
*
rf
frm
(
i
)
=
frmf
(
i
)
+
frms
(
i
)
+
frmr
(
i
)
frm
(
i
)
=
frmf
(
i
)
+
frms
(
i
)
+
frmr
(
i
)
! Growth respiration
! Growth respiration
...
@@ -671,8 +683,10 @@ select case (n3)
...
@@ -671,8 +683,10 @@ select case (n3)
end
if
end
if
! fswfst = fsw * fst
! fswfst = fsw * fst
fmicr
(
i
)
=
1.5
*
fsw
*
fst
*
amrp
(
i
)
*
dc8
(
i
)
! fmicr(i) = 1.5 * fsw * fst * amrp(i) * dc8(i)
fmicrb
(
i
)
=
1.5
*
fsw
*
fst
*
amrp
(
i
)
*
dc8b
(
i
)
*
cv81b
! fmicrb(i) = 1.5 * fsw * fst * amrp(i) * dc8b(i) * cv81b
fmicr
(
i
)
=
1.5
*
fsw
*
amrp
(
i
)
fmicrb
(
i
)
=
1.5
*
fsw
*
amrp
(
i
)
*
cv81b
!end do
!end do
case
default
case
default
...
@@ -687,7 +701,8 @@ end select
...
@@ -687,7 +701,8 @@ end select
! ----------------------------------------------------- Litterfall ---------------------------------------------------
! ----------------------------------------------------- Litterfall ---------------------------------------------------
select
case
(
n4
)
select
case
(
n4
)
case
(
1
)
!Type 1 (INMCM)
case
(
1
)
!Type 1 (INMCM)
dv68
(
i
)
=
dc6
(
i
)
/
(
al5
(
i
)
*
yrs
)
! dv68(i) = dc6(i) / (al5(i) * yrs)
dv68
(
i
)
=
1.
/
(
al5
(
i
)
*
yrs
)
case
default
case
default
dv68
(
i
)
=
1.
dv68
(
i
)
=
1.
end
select
end
select
...
...
This diff is collapsed.
Click to expand it.
my_carbon_model.f90
+
36
−
19
View file @
f9cf182e
...
@@ -86,7 +86,8 @@ contains
...
@@ -86,7 +86,8 @@ contains
! dv68(i) = dc6(i) / (al5(i) * yrs)
! dv68(i) = dc6(i) / (al5(i) * yrs)
f
=
1
f
=
1
nmult
(
n
,
m
,
f
)
=
1
nmult
(
n
,
m
,
f
)
=
1
call
set_fun
(
n
,
m
,
f
,
1
,
'lin'
,
x
=
Cveg
,
k
=
1.
/(
al5
(
nv
)
*
yrs
),
b
=
0.
)
! call set_fun(n, m, f, 1, 'lin', x = Cveg, k = 1./(al5(nv)*yrs), b = 0.)
call
set_fun
(
n
,
m
,
f
,
1
,
'const'
,
c
=
1.
/(
al5
(
nv
)
*
yrs
))
route
(
n
,
m
,
f
)
=
+1
route
(
n
,
m
,
f
)
=
+1
dv68_new
(
i0
:
i1
,
j0
:
j1
)
=>
flux
(:,:,
n
,
m
,
f
)
dv68_new
(
i0
:
i1
,
j0
:
j1
)
=>
flux
(:,:,
n
,
m
,
f
)
...
@@ -116,10 +117,12 @@ contains
...
@@ -116,10 +117,12 @@ contains
call
set_fun
(
n
,
m
,
f
,
3
,
'const'
,
c
=
rmf25
(
nv
))
call
set_fun
(
n
,
m
,
f
,
3
,
'const'
,
c
=
rmf25
(
nv
))
call
set_fun
(
n
,
m
,
f
,
4
,
'const_fict'
,
c
=
tlai
(
nv
))
call
set_fun
(
n
,
m
,
f
,
4
,
'const_fict'
,
c
=
tlai
(
nv
))
call
set_fun
(
n
,
m
,
f
,
5
,
'const'
,
c
=
min
(
foln
(
nv
)/
max
(
folnmx
(
nv
),
1.e-6
),
1.
))
call
set_fun
(
n
,
m
,
f
,
5
,
'const'
,
c
=
min
(
foln
(
nv
)/
max
(
folnmx
(
nv
),
1.e-6
),
1.
))
call
set_fun
(
n
,
m
,
f
,
6
,
'exp'
,
x
=
Temp
,
a
=
1.
,
k
=
0.1
*
log
(
arm
(
nv
)),
b
=
Kelvin0
-298.16
)
! call set_fun(n, m, f, 6, 'exp', x = Temp, a = 1., k = 0.1*log(arm(nv)), b = Kelvin0-298.16)
call
set_fun
(
n
,
m
,
f
,
6
,
'const'
,
c
=
1.
)
call
set_fun
(
n
,
m
,
f
,
7
,
'step'
,
x
=
igs_new
,
x0
=
0.
,
y0
=
0.5
,
y1
=
1.
)
call
set_fun
(
n
,
m
,
f
,
7
,
'step'
,
x
=
igs_new
,
x0
=
0.
,
y0
=
0.5
,
y1
=
1.
)
call
set_fun
(
n
,
m
,
f
,
8
,
'lin'
,
x
=
btran_new
,
k
=
1.
,
b
=
0.
)
call
set_fun
(
n
,
m
,
f
,
8
,
'lin'
,
x
=
btran_new
,
k
=
1.
,
b
=
0.
)
call
set_fun
(
n
,
m
,
f
,
9
,
'const'
,
c
=
umol2kg
*
veget_ich
(
nv
)
*
amsq
*
(
1.0
-
sq
(
4
)))
! call set_fun(n, m, f, 9, 'const', c = umol2kg * veget_ich(nv)*amsq*(1.0-sq(4)))
call
set_fun
(
n
,
m
,
f
,
9
,
'const'
,
c
=
1.
)
route
(
n
,
m
,
f
)
=
+1
route
(
n
,
m
,
f
)
=
+1
frmf_new
(
i0
:
i1
,
j0
:
j1
)
=>
flux
(:,:,
n
,
m
,
f
)
frmf_new
(
i0
:
i1
,
j0
:
j1
)
=>
flux
(:,:,
n
,
m
,
f
)
f
=
4
f
=
4
...
@@ -127,10 +130,13 @@ contains
...
@@ -127,10 +130,13 @@ contains
call
set_fun
(
n
,
m
,
f
,
1
,
'const'
,
c
=
0.35
)
call
set_fun
(
n
,
m
,
f
,
1
,
'const'
,
c
=
0.35
)
call
set_fun
(
n
,
m
,
f
,
2
,
'lin'
,
x
=
amndf3
(:,:,
nv
),
k
=
1.
,
b
=
0.
)
call
set_fun
(
n
,
m
,
f
,
2
,
'lin'
,
x
=
amndf3
(:,:,
nv
),
k
=
1.
,
b
=
0.
)
call
set_fun
(
n
,
m
,
f
,
3
,
'const'
,
c
=
rms25
(
nv
))
call
set_fun
(
n
,
m
,
f
,
3
,
'const'
,
c
=
rms25
(
nv
))
call
set_fun
(
n
,
m
,
f
,
4
,
'lin'
,
x
=
Cveg
,
k
=
stemb
(
nv
)/(
stemb
(
nv
)
+
rootb
(
nv
)),
b
=
0.
)
! call set_fun(n, m, f, 4, 'lin', x = Cveg, k = stemb(nv)/(stemb(nv)+rootb(nv)), b = 0.)
call
set_fun
(
n
,
m
,
f
,
5
,
'exp'
,
x
=
Temp
,
a
=
1.
,
k
=
0.1
*
log
(
arm
(
nv
)),
b
=
Kelvin0
-298.16
)
call
set_fun
(
n
,
m
,
f
,
4
,
'const'
,
c
=
stemb
(
nv
)/(
stemb
(
nv
)
+
rootb
(
nv
)))
! call set_fun(n, m, f, 5, 'exp', x = Temp, a = 1., k = 0.1*log(arm(nv)), b = Kelvin0-298.16)
call
set_fun
(
n
,
m
,
f
,
5
,
'const'
,
c
=
1.
)
call
set_fun
(
n
,
m
,
f
,
6
,
'step'
,
x
=
igs_new
,
x0
=
0.
,
y0
=
0.5
,
y1
=
1.
)
call
set_fun
(
n
,
m
,
f
,
6
,
'step'
,
x
=
igs_new
,
x0
=
0.
,
y0
=
0.5
,
y1
=
1.
)
call
set_fun
(
n
,
m
,
f
,
7
,
'const'
,
c
=
umol2kg
)
! call set_fun(n, m, f, 7, 'const', c = umol2kg)
call
set_fun
(
n
,
m
,
f
,
7
,
'const'
,
c
=
1.
)
route
(
n
,
m
,
f
)
=
+1
route
(
n
,
m
,
f
)
=
+1
frms_new
(
i0
:
i1
,
j0
:
j1
)
=>
flux
(:,:,
n
,
m
,
f
)
frms_new
(
i0
:
i1
,
j0
:
j1
)
=>
flux
(:,:,
n
,
m
,
f
)
f
=
5
f
=
5
...
@@ -138,10 +144,13 @@ contains
...
@@ -138,10 +144,13 @@ contains
call
set_fun
(
n
,
m
,
f
,
1
,
'const'
,
c
=
0.35
)
call
set_fun
(
n
,
m
,
f
,
1
,
'const'
,
c
=
0.35
)
call
set_fun
(
n
,
m
,
f
,
2
,
'lin'
,
x
=
amndf3
(:,:,
nv
),
k
=
1.
,
b
=
0.
)
call
set_fun
(
n
,
m
,
f
,
2
,
'lin'
,
x
=
amndf3
(:,:,
nv
),
k
=
1.
,
b
=
0.
)
call
set_fun
(
n
,
m
,
f
,
3
,
'const'
,
c
=
rmr25
(
nv
))
call
set_fun
(
n
,
m
,
f
,
3
,
'const'
,
c
=
rmr25
(
nv
))
call
set_fun
(
n
,
m
,
f
,
4
,
'lin'
,
x
=
Cveg
,
k
=
rootb
(
nv
)/(
stemb
(
nv
)
+
rootb
(
nv
)),
b
=
0.
)
! call set_fun(n, m, f, 4, 'lin', x = Cveg, k = rootb(nv)/(stemb(nv)+rootb(nv)), b = 0.)
call
set_fun
(
n
,
m
,
f
,
5
,
'exp'
,
x
=
Temp
,
a
=
1.
,
k
=
0.1
*
log
(
arm
(
nv
)),
b
=
Kelvin0
-298.16
)
call
set_fun
(
n
,
m
,
f
,
4
,
'const'
,
c
=
rootb
(
nv
)/(
stemb
(
nv
)
+
rootb
(
nv
)))
! call set_fun(n, m, f, 5, 'exp', x = Temp, a = 1., k = 0.1*log(arm(nv)), b = Kelvin0-298.16)
call
set_fun
(
n
,
m
,
f
,
5
,
'const'
,
c
=
1.
)
call
set_fun
(
n
,
m
,
f
,
6
,
'step'
,
x
=
igs_new
,
x0
=
0.
,
y0
=
0.5
,
y1
=
1.
)
call
set_fun
(
n
,
m
,
f
,
6
,
'step'
,
x
=
igs_new
,
x0
=
0.
,
y0
=
0.5
,
y1
=
1.
)
call
set_fun
(
n
,
m
,
f
,
7
,
'const'
,
c
=
umol2kg
)
! call set_fun(n, m, f, 7, 'const', c = umol2kg)
call
set_fun
(
n
,
m
,
f
,
7
,
'const'
,
c
=
1.
)
route
(
n
,
m
,
f
)
=
+1
route
(
n
,
m
,
f
)
=
+1
frmr_new
(
i0
:
i1
,
j0
:
j1
)
=>
flux
(:,:,
n
,
m
,
f
)
frmr_new
(
i0
:
i1
,
j0
:
j1
)
=>
flux
(:,:,
n
,
m
,
f
)
...
@@ -155,11 +164,14 @@ contains
...
@@ -155,11 +164,14 @@ contains
call
set_fun
(
n
,
m
,
f
,
1
,
'const'
,
c
=
1.5
)
call
set_fun
(
n
,
m
,
f
,
1
,
'const'
,
c
=
1.5
)
call
set_fun
(
n
,
m
,
f
,
2
,
'mm'
,
x
=
thetaSoilTop
,
k
=
1.
,
b
=
0.20
)
call
set_fun
(
n
,
m
,
f
,
2
,
'mm'
,
x
=
thetaSoilTop
,
k
=
1.
,
b
=
0.20
)
call
set_fun
(
n
,
m
,
f
,
3
,
'hyp'
,
x
=
thetaSoilTop
,
k
=
0.23
,
b
=
0.23
)
call
set_fun
(
n
,
m
,
f
,
3
,
'hyp'
,
x
=
thetaSoilTop
,
k
=
0.23
,
b
=
0.23
)
call
set_fun
(
n
,
m
,
f
,
4
,
'exp'
,
x
=
Tsoil
(:,:,
ms
+1
),
a
=
1.
,
k
=
0.1
*
log
(
2.
),
b
=
Kelvin0
-283.16
)
! call set_fun(n, m, f, 4, 'exp', x = Tsoil(:,:,ms+1), a = 1., k = 0.1*log(2.), b = Kelvin0-283.16)
my_label
(
n
,
m
,
f
,
4
)
=
'fst'
! my_label(n,m,f,4) = 'fst'
call
set_fun
(
n
,
m
,
f
,
4
,
'const'
,
c
=
1.
)
call
set_fun
(
n
,
m
,
f
,
5
,
'const'
,
c
=
amrp
(
nv
))
call
set_fun
(
n
,
m
,
f
,
5
,
'const'
,
c
=
amrp
(
nv
))
call
set_fun
(
n
,
m
,
f
,
6
,
'lin'
,
x
=
Csoil
,
k
=
1.
,
b
=
0.
)
! call set_fun(n, m, f, 6, 'lin', x = Csoil, k = 1., b = 0.)
call
set_fun
(
n
,
m
,
f
,
7
,
'const'
,
c
=
umol2kg
)
call
set_fun
(
n
,
m
,
f
,
6
,
'const'
,
c
=
1.
)
! call set_fun(n, m, f, 7, 'const', c = umol2kg)
call
set_fun
(
n
,
m
,
f
,
7
,
'const'
,
c
=
1.
)
route
(
n
,
m
,
f
)
=
+1
route
(
n
,
m
,
f
)
=
+1
fmicr_new
(
i0
:
i1
,
j0
:
j1
)
=>
flux
(:,:,
n
,
m
,
f
)
fmicr_new
(
i0
:
i1
,
j0
:
j1
)
=>
flux
(:,:,
n
,
m
,
f
)
...
@@ -173,12 +185,15 @@ contains
...
@@ -173,12 +185,15 @@ contains
call
set_fun
(
n
,
m
,
f
,
1
,
'const'
,
c
=
1.5
)
call
set_fun
(
n
,
m
,
f
,
1
,
'const'
,
c
=
1.5
)
call
set_fun
(
n
,
m
,
f
,
2
,
'mm'
,
x
=
thetaSoilTop
,
k
=
1.
,
b
=
0.20
)
call
set_fun
(
n
,
m
,
f
,
2
,
'mm'
,
x
=
thetaSoilTop
,
k
=
1.
,
b
=
0.20
)
call
set_fun
(
n
,
m
,
f
,
3
,
'hyp'
,
x
=
thetaSoilTop
,
k
=
0.23
,
b
=
0.23
)
call
set_fun
(
n
,
m
,
f
,
3
,
'hyp'
,
x
=
thetaSoilTop
,
k
=
0.23
,
b
=
0.23
)
call
set_fun
(
n
,
m
,
f
,
4
,
'exp'
,
x
=
Tsoil
(:,:,
ms
+1
),
a
=
1.
,
k
=
0.1
*
log
(
2.
),
b
=
Kelvin0
-283.16
)
! call set_fun(n, m, f, 4, 'exp', x = Tsoil(:,:,ms+1), a = 1., k = 0.1*log(2.), b = Kelvin0-283.16)
my_label
(
n
,
m
,
f
,
4
)
=
'fst'
! my_label(n,m,f,4) = 'fst'
call
set_fun
(
n
,
m
,
f
,
4
,
'const'
,
c
=
1.
)
call
set_fun
(
n
,
m
,
f
,
5
,
'const'
,
c
=
amrp
(
nv
))
call
set_fun
(
n
,
m
,
f
,
5
,
'const'
,
c
=
amrp
(
nv
))
call
set_fun
(
n
,
m
,
f
,
6
,
'lin'
,
x
=
Csoilb
,
k
=
1.
,
b
=
0.
)
! call set_fun(n, m, f, 6, 'lin', x = Csoilb, k = 1., b = 0.)
call
set_fun
(
n
,
m
,
f
,
6
,
'const'
,
c
=
1.
)
call
set_fun
(
n
,
m
,
f
,
7
,
'const'
,
c
=
cv81b
)
call
set_fun
(
n
,
m
,
f
,
7
,
'const'
,
c
=
cv81b
)
call
set_fun
(
n
,
m
,
f
,
8
,
'const'
,
c
=
umol2kg
)
! call set_fun(n, m, f, 8, 'const', c = umol2kg)
call
set_fun
(
n
,
m
,
f
,
8
,
'const'
,
c
=
1.
)
route
(
n
,
m
,
f
)
=
+1
route
(
n
,
m
,
f
)
=
+1
fmicrb_new
(
i0
:
i1
,
j0
:
j1
)
=>
flux
(:,:,
n
,
m
,
f
)
fmicrb_new
(
i0
:
i1
,
j0
:
j1
)
=>
flux
(:,:,
n
,
m
,
f
)
...
@@ -288,8 +303,10 @@ contains
...
@@ -288,8 +303,10 @@ contains
endif
endif
! --- sc6, sc8 ---
! --- sc6, sc8 ---
dfr_weight
(
ii
,
jj
)
=
pool
(
ii
,
jj
,
n_Cveg
)
*
defr
(
nv
)
*
area
! dfr_weight(ii,jj) = pool(ii,jj,n_Cveg) * defr(nv) * area
ers_weight
(
ii
,
jj
)
=
pool
(
ii
,
jj
,
n_Csoil
)
*
soer
(
nv
)
*
area
! ers_weight(ii,jj) = pool(ii,jj,n_Csoil) * soer(nv) * area
dfr_weight
(
ii
,
jj
)
=
defr
(
nv
)
*
area
ers_weight
(
ii
,
jj
)
=
soer
(
nv
)
*
area
enddo
enddo
enddo
enddo
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment