Skip to content

Commit 54d63b1

Browse files
committed
Synchronize with off-git version used for paper
1 parent 2e7d408 commit 54d63b1

25 files changed

+240
-269
lines changed

Makefile

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -126,20 +126,18 @@ install-nuopc: schism_nuopc_lib
126126
cp libschism_cap.a $(SCHISM_BUILD_DIR)/lib
127127
#cp $(SCHISM_NUOPC_MODS) $(DESTDIR)
128128
cp $(SCHISM_NUOPC_MODS) $(SCHISM_BUILD_DIR)/include/
129-
sed 's#@@SCHISM_BUILD_DIR@@#'$(SCHISM_BUILD_DIR)'#g' ./src/schism/schism_nuopc_cap.mk.in > $(DESTDIR)/schism.mk
130-
#sed 's#@@SCHISM_BUILD_DIR@@#'$(SCHISM_BUILD_DIR)'#g' ./src/schism/schism_nuopc_cap.mk.in > $(SCHISM_BUILD_DIR)/include/schism.mk
129+
sed 's#@@SCHISM_BUILD_DIR@@#'$(SCHISM_BUILD_DIR)'#g' ./src/schism/schism_cmi_nuopc.mk.in > $(DESTDIR)/schism.mk
130+
#sed 's#@@SCHISM_BUILD_DIR@@#'$(SCHISM_BUILD_DIR)'#g' ./src/schism/schism_cmi_nuopc.mk.in > $(SCHISM_BUILD_DIR)/include/schism.mk
131131

132132
##test: concurrent_esmf_test triple_schism multi_schism schism_pdaf
133133
test: pdaf
134134
pdaf: schism_pdaf
135135

136136
# Internal make targets for final linking
137-
SCHISM_NUOPC_MODS=$(addprefix src/schism/,schism_nuopc_util.mod schism_nuopc_cap.mod)
138-
SCHISM_NUOPC_OBJS=$(addprefix src/schism/,schism_nuopc_util.o schism_nuopc_cap.o)
139-
SCHISM_ESMF_MODS=$(addprefix src/schism/,schism_esmf_cap.mod)
140-
SCHISM_ESMF_OBJS=$(addprefix src/schism/,schism_esmf_cap.o)
141-
SCHISM_MODS=$(addprefix src/schism/,schism_bmi.mod schism_esmf_util.mod)
142-
SCHISM_OBJS=$(addprefix src/schism/,schism_bmi.o schism_esmf_util.o)
137+
SCHISM_NUOPC_MODS=$(addprefix src/schism/,schism_bmi.mod schism_nuopc_util.mod schism_esmf_util.mod schism_cmi_nuopc.mod)
138+
SCHISM_NUOPC_OBJS=$(addprefix src/schism/,schism_bmi.o schism_esmf_util.o schism_nuopc_util.o schism_cmi_nuopc.o)
139+
SCHISM_MODS=$(addprefix src/schism/,schism_bmi.mod schism_esmf_util.mod schism_cmi_esmf.mod)
140+
SCHISM_OBJS=$(addprefix src/schism/,schism_bmi.o schism_esmf_util.o schism_cmi_esmf.o)
143141
PDAF_OBJS=$(addprefix src/PDAF_bindings/,parser_mpi.o mod_parallel_pdaf.o mod_assimilation.o init_parallel_pdaf.o \
144142
init_pdaf.o init_pdaf_info.o finalize_pdaf.o init_ens_pdaf.o next_observation_pdaf.o \
145143
distribute_state_pdaf.o prepoststep_ens.o prepoststep_pdaf.o prepoststep_seek.o init_enkf.o init_seek.o init_seik.o \
@@ -152,14 +150,17 @@ PDAF_OBJS=$(addprefix src/PDAF_bindings/,parser_mpi.o mod_parallel_pdaf.o mod_as
152150
# $(F90) $(CPPFLAGS) $^ -o $@ $(LDFLAGS) $(LIBS)
153151

154152
ifdef USE_PDAF
155-
schism_pdaf: $(PDAF_OBJS) $(SCHISM_OBJS) $(SCHISM_ESMF_OBJS) schism_pdaf.o
153+
schism_pdaf: $(PDAF_OBJS) $(SCHISM_OBJS) schism_pdaf.o
156154
$(F90) $(CPPFLAGS) $^ -o $@ $(LDFLAGS) $(LIBS)
157155
endif
158156

159-
schism_esmf_lib: $(SCHISM_OBJS) $(SCHISM_ESMF_OBJS) $(EXPAND_TARGETS)
157+
#schism_esmf_lib: $(SCHISM_OBJS) $(MODEL_OBJS) $(EXPAND_TARGETS)
158+
# $(AR) crs libschism_esmf.a $(SCHISM_OBJS) $(MODEL_OBJS) .objs/*/*.o
159+
160+
schism_esmf_lib: $(SCHISM_OBJS) $(EXPAND_TARGETS)
160161
$(AR) crs libschism_esmf.a $(SCHISM_OBJS) .objs/*/*.o
161162

162-
schism_nuopc_lib: $(SCHISM_OBJS) $(SCHISM_NUOPC_OBJS) $(EXPAND_TARGETS)
163+
schism_nuopc_lib: $(SCHISM_NUOPC_OBJS) $(EXPAND_TARGETS)
163164
$(AR) crs libschism_cap.a $(SCHISM_NUOPC_OBJS) .objs/*/*.o
164165

165166
expand_schismlibs:
@@ -184,16 +185,9 @@ $(PDAF_OBJS):
184185
#endif
185186

186187
ifdef USE_PDAF
187-
$(SCHISM_ESMF_OBJS): $(PDAF_OBJS) $(SCHISM_OBJS)
188+
$(SCHISM_NUOPC_OBJS): $(PDAF_OBJS)
188189
else
189-
$(SCHISM_ESMF_OBJS): $(SCHISM_OBJS)
190-
endif
191-
make -C src/schism esmf
192-
193-
ifdef USE_PDAF
194-
$(SCHISM_NUOPC_OBJS): $(PDAF_OBJS) $(SCHISM_OBJS)
195-
else
196-
$(SCHISM_NUOPC_OBJS): $(SCHISM_OBJS)
190+
$(SCHISM_NUOPC_OBJS):
197191
endif
198192
make -C src/schism nuopc
199193

@@ -202,7 +196,7 @@ $(SCHISM_OBJS): $(PDAF_OBJS)
202196
else
203197
$(SCHISM_OBJS):
204198
endif
205-
make -C src/schism common
199+
make -C src/schism esmf
206200

207201
#$(MODEL_OBJS):
208202
# make -C src/model esmf

concurrent_esmf_test.F90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
program main
3333

3434
use esmf
35-
use schism_esmf_cap, only: schismSetServices => SetServices
35+
use schism_cmi_esmf, only: schismSetServices => SetServices
3636
use atmosphere_cmi_esmf, only: atmosSetServices => SetServices
3737

3838
implicit none

multi_schism.F90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
program main
3333

3434
use esmf
35-
use schism_esmf_cap, only: schismSetServices => SetServices
35+
use schism_cmi_esmf, only: schismSetServices => SetServices
3636
use schism_esmf_util, only: clockCreateFrmParam
3737

3838
implicit none

schism_pdaf.F90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
! This code is a main driver for a coupled SCHISM and PDAF
22
! program for running multiple schism components concurrently in flexible mode
33
! (i.e. multiple tasks can share same PET list). The coupling model interface is
4-
! schism_esmf_cap.F90 (and interfaces are defined in schism_bmi.F90)
4+
! schism_cmi_esmf.F90 (and interfaces are defined in schism_bmi.F90)
55
!
66
! @copyright (C) 2018, 2019, 2020-2021 Helmholtz-Zentrum Geesthacht
77
! @author Richard Hofmeister
@@ -36,7 +36,7 @@
3636
program main
3737

3838
use esmf
39-
use schism_esmf_cap, only: schismSetServices => SetServices
39+
use schism_cmi_esmf, only: schismSetServices => SetServices
4040
! use schism_msgp, only: parallel_abort,myrank
4141
! use schism_glbl, only: errmsg,tr_el
4242
! USE mod_assimilation, & ! Variables for assimilation

src/Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ endif
4141

4242
MODELS=atmosphere_cmi_nuopc.o
4343

44-
SCHISM_NUOPC=schism_nuopc_cap.o schism_esmf_util.o schism_nuopc_util.o schism_bmi.o
45-
SCHISM_ESMF=schism_nuopc_cap.o schism_esmf_util.o schism_bmi.o
44+
SCHISM_NUOPC=schism_cmi_nuopc.o schism_esmf_util.o schism_nuopc_util.o schism_bmi.o
45+
SCHISM_ESMF=schism_cmi_nuopc.o schism_esmf_util.o schism_bmi.o
4646
MODEL_OBJS:=$(addprefix ../model/,$(MODELS))
4747
SCHISM_NUOPC_OBJS:=$(addprefix ../schism/,$(SCHISM_NUOPC))
4848
SCHISM_ESMF_OBJS:=$(addprefix ../schism/,$(SCHISM_ESMF))
@@ -61,11 +61,11 @@ default: all
6161
$(ESMF_F90COMPILER) -c $(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILEFREECPP) $(ESMF_F90COMPILECPPFLAGS) $(F90FLAGS) -o $@ $<
6262

6363
main_esmf: main_esmf.o driver/toplevel_schism_netcdf.o model/atmosphere_cmi_nuopc.o \
64-
$(addprefix schism/,schism_esmf_cap.o schism_esmf_util.o schism_bmi.o)
64+
$(addprefix schism/,schism_cmi_esmf.o schism_esmf_util.o schism_bmi.o)
6565
$(ESMF_F90LINKER) $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) $(ESMF_F90LINKRPATHS) -I. -o $@ $^ $(ESMF_F90ESMFLINKLIBS) $(F90FLAGS) $(MOSSCO_LIB) $(LDFLAGS) $(LIBS)
6666

6767
main_nuopc: main_nuopc.o driver/driver_schism_atm.o model/atmosphere_cmi_nuopc.o \
68-
$(addprefix schism/,schism_nuopc_cap.o schism_esmf_util.o schism_nuopc_util.o schism_bmi.o)
68+
$(addprefix schism/,schism_cmi_nuopc.o schism_esmf_util.o schism_nuopc_util.o schism_bmi.o)
6969
$(ESMF_F90LINKER) $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) $(ESMF_F90LINKRPATHS) -I. -o $@ $^ $(ESMF_F90ESMFLINKLIBS) $(F90FLAGS) $(LDFLAGS) $(LIBS)
7070

7171
main_esmf.o: driver/toplevel_schism_atm.o main_esmf.F90 Makefile

src/Makefile.nuopc.bak

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ $(error ESMFMKFILE has to be set in environment.)
2222
endif
2323
include $(ESMFMKFILE)
2424

25-
include schism/schism_nuopc_cap.mk
25+
include schism/schism_cmi_nuopc.mk
2626
DEP_FRONTS:= $(DEP_FRONTS) -DFRONT_SCHISM=$(ESMF_DEP_FRONT)
2727
DEP_INCS:= $(DEP_INCS) $(addprefix -I, $(ESMF_DEP_INCPATH))
2828
DEP_CMPL_OBJS:= $(DEP_CMPL_OBJS) $(ESMF_DEP_CMPL_OBJS)

src/PDAF_bindings/Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ LDFLAGS+= -L$(SCHISM_BUILD_DIR)/lib -L$(PDAF_BUILD_DIR) -lpdaf-d
7272
%.o : %.F90
7373
$(ESMF_F90COMPILER) -c $(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILEFREECPP) $(ESMF_F90COMPILECPPFLAGS) $(F90FLAGS) $<
7474

75-
#schism_nuopc_cap.o: schism_esmf_util.o schism_bmi.o
76-
#schism_esmf_cap.o: schism_esmf_util.o schism_bmi.o
75+
#schism_cmi_nuopc.o: schism_esmf_util.o schism_bmi.o
76+
#schism_cmi_esmf.o: schism_esmf_util.o schism_bmi.o
7777
#schism_esmf_util.o: schism_bmi.o
7878

7979
.PHONY: clean default all
@@ -85,7 +85,7 @@ esmf: parser_mpi.o mod_parallel_pdaf.o mod_assimilation.o init_parallel_pdaf.o i
8585
collect_state_pdaf.o init_dim_obs_pdaf.o obs_op_pdaf.o init_obs_pdaf.o prodrinva_pdaf.o init_obsvar_pdaf.o assimilate_pdaf.o \
8686
init_dim_obs_f_pdaf.o init_dim_obs_l_pdaf.o obs_op_f_pdaf.o init_obs_f_pdaf.o init_obs_l_pdaf.o prodrinva_l_pdaf.o init_obsvar_l_pdaf.o \
8787
init_n_domains_pdaf.o init_dim_l_pdaf.o g2l_state_pdaf.o l2g_state_pdaf.o g2l_obs_pdaf.o
88-
nuopc: schism_nuopc_cap.o
88+
nuopc: schism_cmi_nuopc.o
8989

9090
clean:
9191
$(RM) PET*.ESMF_LogFile traceout *.nc *.stdout

src/PDAF_bindings/distribute_state_pdaf.F90

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ SUBROUTINE distribute_state_pdaf(dim_p, state_p)
2929
! !USES:
3030
use schism_glbl, only: nea,nsa,npa,nvrt,ntracers,idry_e,we,tr_el, &
3131
& idry_s,su2,sv2,idry,eta2,tr_nd,uu2,vv2,ww2, &
32-
& elnode,i34,rkind,kbe,kbs,isidenode,kbp
32+
& elnode,i34,rkind,kbe,kbs,isidenode,kbp, &
33+
& tempmin,tempmax,saltmin,saltmax
3334
! Check only
3435
use mod_parallel_pdaf, only: mype_model,task_id,filterpe
3536
use mod_assimilation, only: offset_field_p
@@ -81,6 +82,12 @@ SUBROUTINE distribute_state_pdaf(dim_p, state_p)
8182
do k=1,nvrt
8283
itot=itot+1
8384
tr_nd(j,k,i)=state_p(itot)
85+
! Add limiter to avoid weird analysis
86+
if (j==1) then
87+
if(tr_nd(j,k,i)<tempmin.or.tr_nd(j,k,i)>tempmax) tr_nd(j,k,i)=max(tempmin,min(tr_nd(j,k,i),tempmax))
88+
elseif (j==2) then
89+
if(tr_nd(j,k,i)<saltmin.or.tr_nd(j,k,i)>saltmax) tr_nd(j,k,i)=max(saltmin,min(tr_nd(j,k,i),saltmax))
90+
end if
8491
enddo !k
8592
if (ifill.eq.1) then
8693
! Fill -9999 to see difference of analysis

src/PDAF_bindings/init_dim_obs_f_pdaf.F90

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ SUBROUTINE init_dim_obs_f_pdaf(step, dim_obs_f)
2323
!
2424
! !USES:
2525
! SCHISM module
26-
use schism_glbl, only: nea,ne,ics,dp,elnode,rearth_eq,rearth_pole,xctr,yctr,zctr,eframe,i34,small2,pi,idry_e,rkind,nsteps_from_cold,dt,cumsum_eta
26+
use schism_glbl, only: nea,ne,ics,dp,elnode,rearth_eq,rearth_pole,xctr,yctr,zctr,eframe,i34,small2,pi,idry_e,rkind,nsteps_from_cold,dt,cumsum_eta,xnd,ynd
2727
use schism_msgp, only: parallel_abort
2828
! PDAF user define
2929
! new28 add in mod_assimilation, add in some schism_interpolation required here
@@ -45,6 +45,7 @@ SUBROUTINE init_dim_obs_f_pdaf(step, dim_obs_f)
4545
real(rkind), allocatable :: rmsval(:)
4646
integer nobs,i,l,itmp,ifl,iobs,istat,j,nd,ifiletype
4747
real(rkind) tmp,xtmp,ytmp,xobsl,yobsl,zcomp,xoblast,yoblast
48+
real(rkind) xndmax,xndmin,yndmax,yndmin
4849
logical fexist
4950

5051
! !CALLING SEQUENCE:
@@ -126,10 +127,38 @@ SUBROUTINE init_dim_obs_f_pdaf(step, dim_obs_f)
126127

127128
! Find parent elements in argumented
128129
iep_obs=0 !flag for no-parent
130+
!Find sub domain max/min
131+
! do i=1,ne
132+
! do j=1,i34(i)
133+
! if ((i.eq.1).and.(j.eq.1)) then ! initialize
134+
! xndmax=xnd(elnode(j,i))
135+
! xndmin=xnd(elnode(j,i))
136+
! yndmax=ynd(elnode(j,i))
137+
! yndmin=ynd(elnode(j,i))
138+
! end if
139+
! if (xnd(elnode(j,i)).gt.xndmax) xndmax=xnd(elnode(j,i))
140+
! if (xnd(elnode(j,i)).lt.xndmin) xndmin=xnd(elnode(j,i))
141+
! if (ynd(elnode(j,i)).gt.yndmax) yndmax=ynd(elnode(j,i))
142+
! if (ynd(elnode(j,i)).lt.yndmin) yndmin=ynd(elnode(j,i))
143+
! end do
144+
! end do
145+
! write(*,'(a,4f14.3)') 'Check sub domain!', xndmin, xndmax, yndmin, yndmax
146+
! !Pre-select to speed up
147+
! do l=1,nobs
148+
! xobsl=xobs(l)
149+
! yobsl=yobs(l)
150+
! if ((xobsl.gt.xndmin).and.(xobsl.lt.xndmax).and.&
151+
! &(yobsl.gt.yndmin).and.(yobsl.lt.yndmax)) then
152+
! iep_obs(l)=1
153+
! write(*,*) 'iep_obs=1',l,xobsl,yobsl
154+
! end if
155+
! end do
156+
129157
do i=1,ne ! search in resident domain to avoid overlap use of observations
130158
if(idry_e(i)==1) cycle ! skip dry points
131159
do l=1,nobs
132160
if(iep_obs(l)/=0) cycle
161+
! if(iep_obs(l)==0) cycle ! skip to speedup searching
133162

134163
if(ics==1) then
135164
xobsl=xobs(l)
@@ -169,7 +198,9 @@ SUBROUTINE init_dim_obs_f_pdaf(step, dim_obs_f)
169198
end if
170199
end do
171200
end if
172-
endif
201+
! else !tmp
202+
! iep_obs(l)=0
203+
endif !tmp
173204
else !quad
174205
call quad_shape(0,0,i,xobsl,yobsl,itmp,arco_obs(l,1:4)) !arco_sta are 4 shape functions
175206
if(itmp/=0) iep_obs(l)=i
@@ -195,6 +226,9 @@ SUBROUTINE init_dim_obs_f_pdaf(step, dim_obs_f)
195226
end if
196227
end do
197228
end if
229+
! else !itmp
230+
! iep_obs(l)=0
231+
! end if !itmp
198232
endif !i34
199233
!Check nsteps_from_cold for SSH-A, skip if nsteps_from_cold too small
200234
if ((obstype(l).eq.'a').or.(obstype(l).eq.'A')) then

src/PDAF_bindings/init_dim_obs_pdaf.F90

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ SUBROUTINE init_dim_obs_pdaf(step, dim_obs_p)
2323
!
2424
! !USES:
2525
! SCHISM module
26-
use schism_glbl, only: nea,ne,ics,dp,elnode,rearth_eq,rearth_pole,xctr,yctr,zctr,eframe,i34,small2,pi,idry_e,rkind,nsteps_from_cold,dt
26+
use schism_glbl, only: nea,ne,ics,dp,elnode,rearth_eq,rearth_pole,xctr,yctr,zctr,eframe,i34,small2,pi,idry_e,rkind,nsteps_from_cold,dt,xnd,ynd
2727
use schism_msgp, only: parallel_abort
2828
! PDAF user define
2929
! new28 add in mod_assimilation, add in some schism_interpolation required here
@@ -45,6 +45,7 @@ SUBROUTINE init_dim_obs_pdaf(step, dim_obs_p)
4545
real(rkind), allocatable :: rmsval(:)
4646
integer nobs,i,l,itmp,ifl,iobs,istat,j,nd
4747
real(rkind) tmp,xtmp,ytmp,xobsl,yobsl,zcomp
48+
real(rkind) xndmax,xndmin,yndmax,yndmin
4849
logical fexist
4950

5051
! !CALLING SEQUENCE:
@@ -108,10 +109,34 @@ SUBROUTINE init_dim_obs_pdaf(step, dim_obs_p)
108109

109110
! Find parent elements in argumented
110111
iep_obs=0 !flag for no-parent
112+
!Find sub domain max/min
113+
! do i=1,ne
114+
! do j=1,i34(i)
115+
! if ((i.eq.1).and.(j.eq.1)) then ! initialize
116+
! xndmax=xnd(elnode(j,i))
117+
! xndmin=xnd(elnode(j,i))
118+
! yndmax=ynd(elnode(j,i))
119+
! yndmin=ynd(elnode(j,i))
120+
! end if
121+
! if (xnd(elnode(j,i)).gt.xndmax) xndmax=xnd(elnode(j,i))
122+
! if (xnd(elnode(j,i)).lt.xndmin) xndmin=xnd(elnode(j,i))
123+
! if (ynd(elnode(j,i)).gt.yndmax) yndmax=ynd(elnode(j,i))
124+
! if (ynd(elnode(j,i)).lt.yndmin) yndmin=ynd(elnode(j,i))
125+
! end do
126+
! end do
127+
!Pre-select to speed up
128+
! do l=1,nobs
129+
! xobsl=xobs(l)
130+
! yobsl=yobs(l)
131+
! if ((xobsl.gt.xndmin).and.(xobsl.lt.xndmax).and.&
132+
! &(yobsl.gt.yndmin).and.(yobsl.lt.yndmax)) iep_obs(l)=1
133+
! end do
134+
111135
do i=1,ne ! search in resident domain to avoid overlap use of observations
112136
if(idry_e(i)==1) cycle ! skip dry points
113137
do l=1,nobs
114138
if(iep_obs(l)/=0) cycle
139+
! if(iep_obs(l)==0) cycle ! skip to speedup searching
115140

116141
if(ics==1) then
117142
xobsl=xobs(l)

0 commit comments

Comments
 (0)