Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
3e79a73
1. tclw and tco3 are high frequency (hourly) variables, managed by fo…
Aug 6, 2024
8d8fde8
now with 2x Detritus classes, R6 nd R8, both sinking with their own v…
Aug 29, 2024
223e335
Merge branch 'bioptimod_2xDetritus' into neccton
Sep 9, 2024
8b84b20
Ed, Eu, Es and PAR propagate value from 500m to bottom
Sep 9, 2024
feb573d
Replacing vsed with vsedR6 and vsedR8 in namelist.init
Sep 9, 2024
dd4f998
Forcings and OPTICS HF atm.date17.files are now supposed to be in yyy…
Sep 11, 2024
a79960e
Using fortran format to compose filenames in yyyy/mm/ dirs
Sep 23, 2024
ffa1475
Use V10C libraries instead of g100 netcdf(f) modules
Sep 25, 2024
e710b00
Update trc3streams.f90, bug fix on bottom light below optical model c…
plazzari Dec 6, 2024
fb143ae
Correct propagation of Ed,Es,Eu (defined on a wgrid) when sea floor b…
plazzari Apr 17, 2025
c7375a9
Update trcsed.f90: bug fix problem with sinking on the deeper cells. …
plazzari Jun 19, 2025
2217553
update to recent python standard e.g. np.int --> int
plazzari Jul 22, 2025
2793acf
add new profiles for initialization set to low concentrations
plazzari Jul 22, 2025
55675af
cleaning
plazzari Jul 22, 2025
4d18858
update testcase to new neccton implementation, in particular for opti…
plazzari Jul 27, 2025
0c080f7
adding organisms optical parameters
plazzari Jul 27, 2025
de52f52
adding oasim configuration file
plazzari Jul 27, 2025
3fdc7d8
update code to include correct namelist configuration for testcase
plazzari Jul 27, 2025
f4b9ee5
de-comment all the calls to create testcase files
plazzari Jul 27, 2025
aea9547
removing imp module because deprecated in favour of importlib.util
plazzari Jul 31, 2025
8a44d36
removing pylab plotting
plazzari Jul 31, 2025
0451879
correct sedimentation over the last layer near bottom.
plazzari Sep 2, 2025
5f549bd
Propagate last value of light at 500m depth till bottom.
plazzari Sep 2, 2025
45638aa
Merge branch 'neccton' of github.com:inogs/ogstm into neccton
plazzari Sep 2, 2025
a242f91
RANKS_PER_NODE has now 4 digits, useful for leonardo (112 cores per n…
Sep 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions bfmv5/BFMtab.xml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@
<var name="R6n" maxvalue="4" highfreq="false" dump="false" ></var>
<var name="R6p" maxvalue="0.5" highfreq="false" dump="false" ></var>
<var name="R6s" maxvalue="3" highfreq="false" dump="false" ></var>
<var name="R8c" maxvalue="200" highfreq="false" dump="false" ></var>
<var name="R8n" maxvalue="4" highfreq="false" dump="false" ></var>
<var name="R8p" maxvalue="0.5" highfreq="false" dump="false" ></var>
<var name="R8s" maxvalue="3" highfreq="false" dump="false" ></var>
<var name="R7c" maxvalue="3000" highfreq="false" dump="false" ></var>
<var name="R3c" maxvalue="100000" highfreq="false" comment="max inventato" dump="false" ></var>
<var name="O3c" maxvalue="200000" highfreq="false" dump="false" ></var>
Expand Down Expand Up @@ -93,6 +97,7 @@
<var name="flN4N3n" highfreq="false" dump="false" ></var>
<var name="sediR2" highfreq="false" dump="false" ></var>
<var name="sediR6" highfreq="false" dump="false" ></var>
<var name="sediR8" highfreq="false" dump="false" ></var>
<var name="sediO5" highfreq="false" dump="false" ></var>
<var name="xEPS" highfreq="false" dump="false" ></var>
<var name="ABIO_eps" highfreq="false" dump="false" ></var>
Expand Down Expand Up @@ -124,14 +129,17 @@
<var name="qpcOMT_iiR2" highfreq="false" dump="false" ></var>
<var name="qpcOMT_iiR3" highfreq="false" dump="false" ></var>
<var name="qpcOMT_iiR6" highfreq="false" dump="false" ></var>
<var name="qpcOMT_iiR8" highfreq="false" dump="false" ></var>
<var name="qncOMT_iiR1" highfreq="false" dump="false" ></var>
<var name="qncOMT_iiR2" highfreq="false" dump="false" ></var>
<var name="qncOMT_iiR3" highfreq="false" dump="false" ></var>
<var name="qncOMT_iiR6" highfreq="false" dump="false" ></var>
<var name="qncOMT_iiR8" highfreq="false" dump="false" ></var>
<var name="qscOMT_iiR1" highfreq="false" dump="false" ></var>
<var name="qscOMT_iiR2" highfreq="false" dump="false" ></var>
<var name="qscOMT_iiR3" highfreq="false" dump="false" ></var>
<var name="qscOMT_iiR6" highfreq="false" dump="false" ></var>
<var name="qscOMT_iiR8" highfreq="false" dump="false" ></var>
<var name="qpcPBA_iiB1" highfreq="false" dump="false" ></var>
<var name="qncPBA_iiB1" highfreq="false" dump="false" ></var>
<var name="sediPPY_iiP1" highfreq="false" dump="false" ></var>
Expand Down Expand Up @@ -218,6 +226,7 @@
<var name="qlcOMT_iiR2" highfreq="false" dump="false" ></var>
<var name="qlcOMT_iiR3" highfreq="false" dump="false" ></var>
<var name="qlcOMT_iiR6" highfreq="false" dump="false" ></var>
<var name="qlcOMT_iiR8" highfreq="false" dump="false" ></var>

</Diagnostics>

Expand Down
17 changes: 11 additions & 6 deletions compilers/machine_modules/g100.intel
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,22 @@ module load intel/oneapi-2021--binary
module load intelmpi/oneapi-2021--binary
module load mkl/oneapi-2021--binary
module load cmake/3.21.4
module load netcdf/4.7.4--oneapi--2021.2.0-ifort
module load netcdff/4.5.3--oneapi--2021.2.0-ifort
#module load netcdf/4.7.4--oneapi--2021.2.0-ifort
#module load netcdff/4.5.3--oneapi--2021.2.0-ifort

# modules define these $.._HOME env variable
export NETCDF_INC=$NETCDF_C_HOME/include
export NETCDF_LIB=$NETCDF_C_HOME/lib
export NETCDFF_INC=$NETCDF_FORTRAN_HOME/include
export NETCDFF_LIB=$NETCDF_FORTRAN_HOME/lib
#export NETCDF_INC=$NETCDF_C_HOME/include
#export NETCDF_LIB=$NETCDF_C_HOME/lib
#export NETCDFF_INC=$NETCDF_FORTRAN_HOME/include
#export NETCDFF_LIB=$NETCDF_FORTRAN_HOME/lib

export OPA_HOME=/g100_work/OGS23_PRACE_IT/COPERNICUS/V10C
export OPA_HOSTNAME=g100
export NETCDF_LIB=$OPA_HOME/HOST/$OPA_HOSTNAME/lib
export NETCDF_INC=$OPA_HOME/HOST/$OPA_HOSTNAME/include
export NETCDFF_LIB=$OPA_HOME/HOST/$OPA_HOSTNAME/lib
export NETCDFF_INC=$OPA_HOME/HOST/$OPA_HOSTNAME/include

export PNETCDF_LIB=$OPA_HOME/HOST/$OPA_HOSTNAME/lib
export PNETCDF_INC=$OPA_HOME/HOST/$OPA_HOSTNAME/include
export PETSC_LIB=$OPA_HOME/HOST/$OPA_HOSTNAME/lib
Expand Down
92 changes: 46 additions & 46 deletions preproc/domdec/domdec.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import numpy as np
import pylab as pl
#import pylab as pl

def riparto(lenglo,nprocs):
''' Uniform decomposition of a 1d array of size lenglo in nprocs subdomains
Expand Down Expand Up @@ -212,51 +212,51 @@ def neighbors(M,nproc,nproci,nprocj):



def plot_decomposition(tmask, nproci, nprocj):
'''
Plots the domain decomposition scheme

Arguments :
* tmask * a 2d logical array, the surface tmask
* nproci * integer, number of longitudinal subdivisions
* nprocj * integer, number of latitudinal subdivisions

Returns:
fig, ax : matplotlib handles
'''
jpjglo, jpiglo = tmask.shape
M,C = get_wp_matrix(tmask, nprocj, nproci)
J,I = M.nonzero()
nproc = len(I)

JPI = riparto(jpiglo,nproci)
Start_I = get_startpoints(JPI)
End_I = Start_I + JPI -1

JPJ = riparto(jpjglo,nprocj)
Start_J = get_startpoints(JPJ)
End_J = Start_J + JPJ -1

fig,ax = pl.subplots()
ax.imshow(tmask)
for i in range(1,nproci):
x=Start_I[i]
ax.plot([x,x],[0,jpjglo],'w')

for j in range(1,nprocj):
y=Start_J[j]
ax.plot([0,jpiglo],[y,y],'w')

for rank in range(nproc):
j = J[rank]
i = I[rank]
x = Start_I[i] + JPI[0]/2
y = Start_J[j] + JPJ[0]/2
ax.text(x,y,str(rank), color='w', ha='center', va='center', fontsize=8)


ax.invert_yaxis()
return fig, ax
#def plot_decomposition(tmask, nproci, nprocj):
# '''
# Plots the domain decomposition scheme
#
# Arguments :
# * tmask * a 2d logical array, the surface tmask
# * nproci * integer, number of longitudinal subdivisions
# * nprocj * integer, number of latitudinal subdivisions
#
# Returns:
# fig, ax : matplotlib handles
# '''
# jpjglo, jpiglo = tmask.shape
# M,C = get_wp_matrix(tmask, nprocj, nproci)
# J,I = M.nonzero()
# nproc = len(I)
#
# JPI = riparto(jpiglo,nproci)
# Start_I = get_startpoints(JPI)
# End_I = Start_I + JPI -1
#
# JPJ = riparto(jpjglo,nprocj)
# Start_J = get_startpoints(JPJ)
# End_J = Start_J + JPJ -1
#
# fig,ax = pl.subplots()
# ax.imshow(tmask)
# for i in range(1,nproci):
# x=Start_I[i]
# ax.plot([x,x],[0,jpjglo],'w')
#
# for j in range(1,nprocj):
# y=Start_J[j]
# ax.plot([0,jpiglo],[y,y],'w')
#
# for rank in range(nproc):
# j = J[rank]
# i = I[rank]
# x = Start_I[i] + JPI[0]/2
# y = Start_J[j] + JPJ[0]/2
# ax.text(x,y,str(rank), color='w', ha='center', va='center', fontsize=8)
#
#
# ax.invert_yaxis()
# return fig, ax



Expand Down
21 changes: 18 additions & 3 deletions src/BIO-OPTICS/trc3streams.f90
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ SUBROUTINE trc3streams(datestring)

#if defined key_trc_nnpzddom || defined key_trc_npzd || key_trc_bfm

INTEGER :: jk,jj,ji,jl,bottom
INTEGER :: jk,jj,ji,jl,bottom, phys_bottom
INTEGER :: day_of_year
INTEGER :: MODE ! 0-exact, 1-approx
INTEGER :: year, month, day, ihr
Expand Down Expand Up @@ -66,8 +66,8 @@ SUBROUTINE trc3streams(datestring)
if (bfmmask(1,jj,ji) == 0) CYCLE


bottom = mbathy(jj,ji)
bottom = min(bottom,jpk_opt) ! Stop at approx 500 mt
phys_bottom = mbathy(jj,ji)
bottom = min(phys_bottom,jpk_opt) ! Stop at approx 500 mt

allocate( E(3,bottom+1,nlt))
allocate( PARz(bottom,nchl+1))
Expand Down Expand Up @@ -164,12 +164,27 @@ SUBROUTINE trc3streams(datestring)
Eu(jk,jj,ji,jl) = E(3,jk,jl)

enddo

if ((bottom+1).lt.phys_bottom) then

do jk=bottom+1, phys_bottom+1 ! propagation 500m --> phys_bottom of last value
Ed(jk,jj,ji,jl) = Ed(bottom+1, jj,ji, jl)
Es(jk,jj,ji,jl) = Es(bottom+1, jj,ji, jl)
Eu(jk,jj,ji,jl) = Eu(bottom+1, jj,ji, jl)
enddo
endif
enddo

do jl=1, nchl+1
do jk =1, bottom
PAR(jk,jj,ji,jl) = PARz(jk,jl)
enddo
if (bottom.lt.phys_bottom) then
do jk=bottom+1, phys_bottom ! propagation of last value
PAR(jk,jj,ji,jl) = PARz(bottom,jl)
enddo
endif

enddo


Expand Down
49 changes: 27 additions & 22 deletions src/BIO/SED_mem.f90
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ MODULE SED_mem


INTEGER :: dimen_jvsed
INTEGER :: nsed=22
INTEGER :: nsed=26
INTEGER, allocatable :: sed_idx(:)
INTEGER, allocatable :: jarr_sed(:,:),jarr_sed_flx(:,:)
double precision, allocatable :: ztra(:,:)
Expand Down Expand Up @@ -54,27 +54,32 @@ subroutine myalloc_SED()
sed_idx(3) = ppR6p
sed_idx(4) = ppR6s

sed_idx(5) = ppP1c
sed_idx(6) = ppP1n
sed_idx(7) = ppP1p
sed_idx(8) = ppP1s
sed_idx(9) = ppP1l

sed_idx(10) = ppP2c
sed_idx(11) = ppP2n
sed_idx(12) = ppP2p
sed_idx(13) = ppP2l

sed_idx(14) = ppP3c
sed_idx(15) = ppP3n
sed_idx(16) = ppP3p
sed_idx(17) = ppP3l

sed_idx(18) = ppP4c
sed_idx(19) = ppP4n
sed_idx(20) = ppP4p
sed_idx(21) = ppP4l
sed_idx(22) = ppO5c
sed_idx(5) = ppR8c
sed_idx(6) = ppR8n
sed_idx(7) = ppR8p
sed_idx(8) = ppR8s

sed_idx(9) = ppP1c
sed_idx(10) = ppP1n
sed_idx(11) = ppP1p
sed_idx(12) = ppP1s
sed_idx(13) = ppP1l

sed_idx(14) = ppP2c
sed_idx(15) = ppP2n
sed_idx(16) = ppP2p
sed_idx(17) = ppP2l

sed_idx(18) = ppP3c
sed_idx(19) = ppP3n
sed_idx(20) = ppP3p
sed_idx(21) = ppP3l

sed_idx(22) = ppP4c
sed_idx(23) = ppP4n
sed_idx(24) = ppP4p
sed_idx(25) = ppP4l
sed_idx(26) = ppO5c
allocate(jarr_sed(2, jpi*jpj))
jarr_sed = huge(jarr_sed(1,1))
allocate(jarr_sed_flx(jpk,jpi*jpj))
Expand Down
50 changes: 36 additions & 14 deletions src/BIO/trcsed.f90
Original file line number Diff line number Diff line change
Expand Up @@ -133,40 +133,46 @@ SUBROUTINE trcsed



! Particulate
! Small Particulate
DO js =1,4
DO jk = 2,jpkm1
zwork(jk,js,1) = -vsed * trn(jk-1,jj,ji, sed_idx(js))
DO jk = 2,jpk
zwork(jk,js,1) = -vsedR6 * trn(jk-1,jj,ji, sed_idx(js))
END DO
END DO
! Large Particulate
DO js =5,8
DO jk = 2,jpk
zwork(jk,js,1) = -vsedR8 * trn(jk-1,jj,ji, sed_idx(js))
END DO
END DO
! Diatoms
DO js =5,9
DO jk = 2,jpkm1
DO js =9,13
DO jk = 2,jpk
zwork(jk,js,1) = -ogstm_sedipi(jk-1,jj,ji,1) * trn(jk-1,jj,ji, sed_idx(js))
END DO
END DO
! Flagellates
DO js =10,13
DO jk = 2,jpkm1
DO js =14,17
DO jk = 2,jpk
zwork(jk,js,1) = -ogstm_sedipi(jk-1,jj,ji,2) * trn(jk-1,jj,ji, sed_idx(js))
END DO
END DO
! Picophytoplankton
DO js =14,17
DO jk = 2,jpkm1
DO js =18,21
DO jk = 2,jpk
zwork(jk,js,1) = -ogstm_sedipi(jk-1,jj,ji,3) * trn(jk-1,jj,ji, sed_idx(js))
END DO
END DO
! Dinoflagellates
DO js =18,21
DO jk = 2,jpkm1
DO js =22,25
DO jk = 2,jpk
zwork(jk,js,1) = -ogstm_sedipi(jk-1,jj,ji,4) * trn(jk-1,jj,ji, sed_idx(js))
END DO
END DO

! Calcite
DO js =22,22
DO jk = 2,jpkm1
DO js =26,26
DO jk = 2,jpk
zwork(jk,js,1) = - vsedO5c * trn(jk-1,jj,ji, sed_idx(js))
END DO
END DO
Expand All @@ -175,11 +181,23 @@ SUBROUTINE trcsed

! 1.3 tracer flux divergence at t-point added to the general trend

!N DO js =1,nsed
!N if ((ji .EQ. 3) .AND. (jj .EQ. 3 )) then
!N write(*,*) ' Check trcsed'
!N write(*,*)'Sedimenting variable',js
!N write(*,*)'e3t',e3t(jpk,jj,ji), e3t(jpk-1,jj,ji), e3t(jpk-2,jj,ji)
!N write(*,*)'zwork at above above bottom:', zwork(jpk-2,js,1)
!N write(*,*)'zwork at above bottom:', zwork(jpk-1,js,1)
!N write(*,*)'zwork at bottom:', zwork(jpk,js,1)
!N write(*,*) ' ******************* '
!N endif
!N ENDDO

DO jk = 1,jpkm1
jf= jarr_sed_flx(jk,jV)

ze3tr = 1./e3t(jk,jj,ji)

DO js =1,nsed
ztra(js,1) = -ze3tr * (zwork(jk,js,1) - zwork(jk+1,js,1))
IF ((Fsize .GT. 0) .AND. (jf .GT. 0)) THEN
Expand All @@ -191,6 +209,10 @@ SUBROUTINE trcsed
!!! d2s convert speed from (m/day) to (m/s)
tra(jk,jj,ji,sed_idx(js)) = tra(jk,jj,ji,sed_idx(js)) + ztra(js,1)*d2s
END DO
!N if ((ji .EQ. 3) .AND. (jj .EQ. 3 )) then
!N if (jk .EQ. jpk-1) write(*,*) 'R6c at bottom:', tra(jk,jj,ji,sed_idx(1))
!N if (jk .EQ. jpk-1) write(*,*) 'ztra at bottom:', ztra(1,1)
!N endif

#ifdef key_trc_diabio
trbio(jk,jj,ji,8) = ztra
Expand Down
3 changes: 2 additions & 1 deletion src/General/memory.f90
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,8 @@ MODULE myalloc
LOGICAL atlantic_bfm ! atlantic buffer biology activation

# if defined key_trc_bfm
double precision vsed ! sedimentation speed (NAMELIST)
double precision vsedR6 ! sedimentation speed of small detritus (NAMELIST)
double precision vsedR8 ! sedimentation speed of large detritus (NAMELIST)
double precision vsedO5c ! sedimentation speed of calcite(NAMELIST)
double precision bottom_flux ! (NAMELIST)

Expand Down
Loading