Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Smith, Naomi
CTDAS
Commits
ead46230
Commit
ead46230
authored
Sep 24, 2015
by
ivar
Browse files
latest revisions from ivar. fixed scalefac alignment and added log statements
parent
db708dbc
Changes
1
Hide whitespace changes
Inline
Side-by-side
da/stilt/stilt.co2.simu.2015.Sep.bc.r
View file @
ead46230
...
...
@@ -24,7 +24,7 @@ procs= as.integer(args[1])
#inputs and outputs
stiltfile
=
paste
(
"stilt_"
,
procs
,
".rc"
,
sep
=
""
)
curdir
=
"
/Storage/CO2/wei/ctdas-stilt-cofiltered-bioSiBCASA-bcCTNA-bcaircraft-fixedstilt
/exec/da/stilt/"
curdir
=
"
TYPE PATH HERE
/exec/da/stilt/"
fn
=
paste
(
curdir
,
stiltfile
,
sep
=
""
)
conf
=
as.matrix
(
read.table
(
fn
,
header
=
FALSE
))
...
...
@@ -166,10 +166,13 @@ for(yy in 1:length(uyr))
# read needed event ids from sample_coordinates files
ncf
<-
nc_open
(
paste
(
samdir
,
"sample_coordinates_"
,
tb2
,
"00"
,
"_"
,
tb3
,
"00"
,
"-"
,
procs
,
".nc"
,
sep
=
""
))
eventidarr
<-
ncvar_get
(
ncf
,
"obs_num"
)
obs_id
<-
ncvar_get
(
ncf
,
"obs_id"
)
# filter before loop
pfbfns
=
NULL
fn
=
NULL
eventids
=
NULL
obsids
=
NULL
for
(
mm
in
1
:
length
(
fns
))
{
...
...
@@ -179,6 +182,8 @@ for(mm in 1:length(fns))
if
(
eid
==
eventidarr
[
i
])
{
pfbfns
=
c
(
pfbfns
,
fns
[
mm
])
obsids
=
c
(
obsids
,
obs_id
[
i
])
eventids
=
c
(
eventids
,
eventidarr
[
i
])
break
}
}
...
...
@@ -213,6 +218,8 @@ for(mm in 1:length(pfbfns))
#--------------------------------------------
# STEP 1: Read footprints
#--------------------------------------------
flog.info
(
'obsids: %s'
,
obsids
[
mm
],
name
=
'logger.b'
)
flog.info
(
'eventids: %s'
,
eventids
[
mm
],
name
=
'logger.b'
)
#June 23
yr
=
substring
(
pfbfns
[
mm
],
6
,
9
)
mo
=
substring
(
pfbfns
[
mm
],
11
,
12
)
fn
=
paste
(
footpdir
,
yr
,
"/"
,
mo
,
"/"
,
pfbfns
[
mm
],
sep
=
""
)
...
...
@@ -389,6 +396,7 @@ for(mm in 1:length(pfbfns))
gpp
[
d
,,,]
=
biof
$
gpp
rec
[
d
,,,]
=
biof
$
resp
remove
(
list
=
c
(
"biof"
))
flog.info
(
'd: %s, yr: %s, mn: %s, dy: %s'
,
d
,
yr
,
mn
,
dy
,
name
=
'logger.b'
)
}
#flog.info("mean gpp= %f", mean(gpp[d,,,]), name='logger.b')
...
...
@@ -478,6 +486,7 @@ for(mm in 1:length(pfbfns))
{
gppflux
[,,
ntimes
-
hh
+1
]
=
gpp
[
inxd
,
52
:
117
,
113
:
152
,
inxh
]
recflux
[,,
ntimes
-
hh
+1
]
=
rec
[
inxd
,
52
:
117
,
113
:
152
,
inxh
]
flog.info
(
'gppflux: %s, gpp: %s, %s, %s, %s'
,
gppflux
[
30
,
30
,
ntimes
-
hh
+1
],
gpp
[
inxd
,
82
,
143
,
inxh
],
ntimes
-
hh
+1
,
inxd
,
inxh
,
name
=
'logger.b'
)
}
if
(
bioflux_flag
==
"CT_OPT"
)
...
...
@@ -519,23 +528,50 @@ for(mm in 1:length(pfbfns))
#print("XXXdateall")
#print(dateall) #reversed order
# note: ixflux should not be from 1:ntimes, should be more accurate in hours
#dd=as.character(min(yy))
dd
=
as.character
(
xx
)
#yrlist=substring(dd,1,4)
#monlist=substring(dd,6,7)
#daylist=substring(dd,9,10)
hr
=
substring
(
dd
,
12
,
13
)
mi
=
substring
(
dd
,
15
,
16
)
n
=
24
-
floor
(
as.numeric
(
hr
)
+
as.numeric
(
mi
)
/
60
)
print
(
"XXXn"
)
print
(
n
)
datevalid
=
dateall
[
1
]
+0.5
*
3600
-
(
0
:
(
ntimes
-1
))
*
3600
#ixflux=(1:ntimes)[(datevalid<=xx)][1:endtime] #time backward
ixflux
=
(
1
:
ntimes
)[(
datevalid
<=
xx
)][
n
:
(
endtime
+
n
-1
)]
print
(
ixflux
)
# # note: ixflux should not be from 1:ntimes, should be more accurate in hours
# dd=as.character(min(yy))
# #yrlist=substring(dd,1,4)
# #monlist=substring(dd,6,7)
# #daylist=substring(dd,9,10)
# hr=substring(dd,12,13)
# mi=substring(dd,15,16)
# n = floor(as.numeric(hr) + as.numeric(mi)/60)
# n = 24-n
# print("XXXn")
# print(n)
# datevalid=dateall[1]+0.5*3600-(0:(ntimes-1))*3600
# #ixflux=(1:ntimes)[(datevalid<=xx)][1:endtime] #time backward
# #ixflux=(ntimes:1)[(datevalid<=xx)][(endtime+n-1):n]
# #ixflux=(ntimes:1)[(datevalid<=xx)][(endtime+n-1):(n)]
# ixflux<-c(n:endtime+n-1)
## ixflux=(1:ntimes)[(datevalid<=xx)][n:(endtime+n-1)]
#dd=as.character(min(yy))
dd
=
as.character
(
xx
)
#yrlist=substring(dd,1,4)
#monlist=substring(dd,6,7)
#daylist=substring(dd,9,10)
hr
=
substring
(
dd
,
12
,
13
)
mi
=
substring
(
dd
,
15
,
16
)
n
=
24
-
floor
(
as.numeric
(
hr
)
+
as.numeric
(
mi
)
/
60
)
print
(
"XXXn"
)
print
(
n
)
datevalid
=
dateall
[
1
]
+0.5
*
3600
-
(
0
:
(
ntimes
-1
))
*
3600
#ixflux=(1:ntimes)[(datevalid<=xx)][1:endtime] #time backward
#ixflux=(1:ntimes)[(datevalid<=xx)][1:(endtime+n)]
ixflux
<-
array
(
n
:
(
endtime
+
n
-1
),
dim
=
c
(
240
))
flog.info
(
'ixflux endtime: %s,%s,%s'
,
endtime
,
n
,
as.numeric
(
hr
)
+
(
as.numeric
(
hr
)
/
60
),
name
=
'logger.b'
)
for
(
ttt
in
1
:
240
)
flog.info
(
'ixflux: %s,%s'
,
ttt
,
ixflux
[
ttt
],
name
=
'logger.b'
)
if
(
bioflux_flag
==
"SiB3"
)
#footprint is backward
{
gpptmp
=
foot
*
gppflux
[,,
ixflux
]
...
...
@@ -571,30 +607,33 @@ for(mm in 1:length(pfbfns))
{
if
(
xxleft
<
b2
)
#flux with scaling factors located in first lag
{
diff
=
abs
(
as.numeric
(
difftime
(
b2
,
xxleft
,
units
=
'hours'
)))
diff
=
abs
(
as.numeric
(
difftime
(
b2
,
xxleft
,
units
=
'hours'
)))
+24
#if(bioflux_flag == "SiBCASA" || bioflux_flag == "CT_OPT")
# diff = diff/3.0
diff
=
ceiling
(
diff
)
align
=
24
*
ceiling
((
ntimes
-
diff
)
/
24
)
#-(ntimes-diff)
if
(
i
==
1
)
flog.info
(
'diff: %s, align: %s'
,
diff
,
align
,
name
=
'logger.b'
)
#if(ident=="2010x01x22x19x27x40.0500Nx105.0040Wx00300")
# flog.info("after diff = %f", diff, name='logger.b')
for
(
hh
in
1
:
(
ntimes
-
diff
))
if
(
hh
<=
ntimes
-
diff
&&
hh
>=
1
)
for
(
hh
in
1
:
(
align
))
if
(
hh
<=
align
&&
hh
>=
1
)
{
#if(i==1 && ident=="2010x01x22x19x27x40.0500Nx105.0040Wx00300")
# flog.info("neeflux[,,hh]=%f, scalefacarr1 = %f ",neeflux[,,hh], scalefacarr1[,,i], name='logger.b')
if
(
i
==
1
)
flog.info
(
"hh: %s, neeflux[,,hh]=%f, scalefacarr2 = %f "
,
hh
,
neeflux
[
30
,
30
,
hh
],
scalefacarr2
[
30
,
30
,
i
],
name
=
'logger.b'
)
neeflux1
[,,
hh
]
=
neeflux
[,,
hh
]
*
(
scalefacarr2
[,,
i
])
#delete "t" transform
bc1
[
hh
]
=
scalefacarr_bc2
[
i
]
}
for
(
hh
in
(
(
ntimes
-
diff
+1
)
:
ntimes
)
)
if
(
hh
<=
ntimes
&&
hh
>=
ntimes
-
diff
+1
)
for
(
hh
in
(
(
align
+1
)
:
ntimes
)
)
if
(
hh
<=
ntimes
&&
hh
>=
align
+1
)
{
#
if(i==1
&& ident=="2010x01x22x19x27x40.0500Nx105.0040Wx00300"
)
#
flog.info("neeflux[,,hh]=%f, scalefacarr
2
= %f",neeflux[
,
,hh], scalefacarr
2[,
,i],name='logger.b')
if
(
i
==
1
)
flog.info
(
"
hh: %s,
neeflux[,,hh]=%f, scalefacarr
1
= %f"
,
hh
,
neeflux
[
30
,
30
,
hh
],
scalefacarr
1
[
30
,
30
,
i
],
name
=
'logger.b'
)
neeflux1
[,,
hh
]
=
neeflux
[,,
hh
]
*
(
scalefacarr1
[,,
i
])
bc1
[
hh
]
=
scalefacarr_bc1
[
i
]
}
...
...
@@ -630,8 +669,10 @@ for(mm in 1:length(pfbfns))
for
(
i
in
1
:
nsam
)
{
neetmp
=
foot
*
neefluxarr
[,,
ixflux
,
i
]
#if(ident=="2010x01x22x19x27x40.0500Nx105.0040Wx00300")
# flog.info("neetmp = %f",neetmp, name='logger.b')
neetmp2
=
foot
*
neefluxarr
[,,
6
:
245
,
i
]
if
(
i
==
1
)
flog.info
(
"neetmp = %f, %f"
,
sum
(
neetmp
,
na.rm
=
TRUE
),
sum
(
neetmp2
,
na.rm
=
TRUE
),
name
=
'logger.b'
)
neeout
=
sum
(
neetmp
,
na.rm
=
TRUE
)
neeoutarr
[
i
]
=
neeout
...
...
@@ -673,6 +714,7 @@ for(mm in 1:length(pfbfns))
bioout
=
sum
(
biotmp
,
na.rm
=
TRUE
)
}
foot2
=
foot
remove
(
list
=
c
(
"ocnflux"
,
"fosflux"
,
"firflux"
,
"ocntmp"
,
"fostmp"
,
"firtmp"
,
"foot"
,
"dateall"
))
gc
()
...
...
@@ -767,6 +809,9 @@ for(mm in 1:length(pfbfns))
print
(
"hpos"
)
print
(
hpos
)
flog.info
(
'p3:, %s, pbou: %s, dy: %s, i: %s, j: %s, k: %s, hpos: %s'
,
p
,
pbou
,
dy
,
i
,
j
,
k
,
hpos
,
name
=
'logger.b'
)
tt
=
bouarr
[
dy
,
i
,
j
,
k
,
hpos
]
#notice bouarr not be reversed
if
(
length
(
tt
)
==
1
)
#why sometimes we get a unnormal array?
...
...
@@ -820,12 +865,46 @@ for(mm in 1:length(pfbfns))
fsimuarr
[
i
]
=
(
fbou
+
bcoutarr
[
i
]
+
deltaco2
)
*
1e-6
#fsimuarr[i]=(fbouarr[i]+deltaco2)*1e-6
#
if(i
dent=="2010x01x22x19x27x40.0500Nx105.0040Wx00300"
)
#
flog.info("fsimuarr[i] = %f
",fsimu
arr[i], name='logger.b')
if
(
i
==
1
)
flog.info
(
"fsimuarr[i] = %f
, fbou = %f, neeoutarr[i] = %f, bcoutarr[i] = %f"
,
fsimuarr
[
i
]
*
1e6
,
fbou
,
neeoutarr
[
i
],
bcout
arr
[
i
],
name
=
'logger.b'
)
outlist
<-
c
(
outlist
,
fsimuarr
[
i
])
}
# if (eventids[mm] ==289997 || eventids[mm] ==300326)
# {
# output_fname=paste("/Storage/ivar/run_test_allsites_bcopt_stiltout_wei/exec","/","lefdata_",eventids[mm],".nc",sep="")
#
# if (file.exists(output_fname)== FALSE)
#
# {
#
# xdim <- ncdim_def( 'Lon', 'degree', 1:ncol2 )
# ydim <- ncdim_def( 'Lat', 'degree', 1:nrow2 )
# timedim <- ncdim_def( 'time', 'degree', 1:240 )
# ensdim <- ncdim_def( 'ensemble', 'degree', 1:100 )
#
#
#
# mv <- 0 # missing value
# var_nee <- ncvar_def( name="nee", units="-", dim=list(xdim,ydim,timedim,ensdim), longname="nee",missval=mv )
# var_neeco2 <- ncvar_def( name="neeco2", units="-", dim=list(ensdim), longname="neeco2",missval=mv )
# var_foot <- ncvar_def( name="foot", units="-", dim=list(xdim,ydim,timedim), longname="foot",missval=mv )
#
#
# ncid_new <- nc_create( output_fname, list(var_nee,var_neeco2,var_foot))
# ncvar_put( ncid_new,var_nee, neefluxarr, start=c(1,1,1,1), count=c(ncol2,nrow2,240,100))
# ncvar_put( ncid_new,var_neeco2, neeoutarr, start=c(1), count=c(100))
# ncvar_put( ncid_new,var_foot, foot2, start=c(1,1,1), count=c(ncol2,nrow2,240))
#
# nc_close( ncid_new )
#
# }
# }
#add component varibles:gpp,reco,ocn,fos,fir,boundary
#outlist<-c(outlist,gppout,recoout,ocnout,fosout,firout,fbou,bioout)
if
(
bioflux_flag
==
"SiB3"
||
bioflux_flag
==
"SiBCASA"
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment