Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
0b2e4f3
refactoring bitsea imports
gbolzon Dec 4, 2024
ce56ff6
Setting PYTHONPATH in Float_misfit_gen.sh
gbolzon Dec 18, 2024
0bf8f2b
domdec_generator uses new mask syntax
gbolzon Jan 27, 2025
e7e0686
Using Path in float_preproc section
Jan 29, 2025
d57a0db
Bug fix
Jan 30, 2025
f8b268a
Typo
Feb 4, 2025
69cd336
Ed, Eu, Es and PAR propagate value from 500m to bottom
Sep 9, 2024
fc47e52
Update trc3streams.f90, bug fix on bottom light below optical model c…
plazzari Dec 6, 2024
75e51ab
Correct propagation of Ed,Es,Eu (defined on a wgrid) when sea floor b…
plazzari Apr 17, 2025
2de51e0
Merge pull request #14 from inogs/V12C
gbolzon Jul 14, 2025
1f5dea7
now with 2x Detritus classes, R6 nd R8, both sinking with their own v…
Aug 29, 2024
50f5c9f
Exposing vsedR6,vsedR8 into namelist.init
Jul 14, 2025
e51045a
namelist.passivetrc with 58 bfm vars
gbolzon Jul 14, 2025
0e17ab5
Updated ogstm python scripts to be compatible with the "main" branch …
spiani Feb 18, 2025
a69d444
RANKS_PER_NODE has now 4 digits, useful for leonardo (112 cores per n…
Sep 24, 2025
0ba5394
Updated ogstm python scripts to be compatible with the "main" branch …
spiani Feb 18, 2025
1e5e8cc
Don't use netcdf modules, use V10C installations
Oct 21, 2025
ead1ba1
add GSW functions inside PHYS
Mar 31, 2026
ca11aec
compute in situ temperature in physics loading
JackBlueBird Mar 31, 2026
f00f4bb
Merge pull request #25 from inogs/20-introduction-of-in-situ-temperature
gbolzon Apr 13, 2026
35718c2
Merge branch 'bioptimod_merge' into 15-merging-neccton-in-bioptimod_m…
Apr 13, 2026
373ee85
merging from neccton, forcings and optics are in yyyy/mm dirs, tco3 a…
Apr 13, 2026
c3d4ca4
merging testcase from neccton branch
Apr 14, 2026
7b59969
cleaning
plazzari Jul 22, 2025
255a61c
Merge pull request #16 from inogs/15-merging-neccton-in-bioptimod_merge
gbolzon Apr 14, 2026
e008194
wind stress are defined on T mask
gbolzon Apr 15, 2026
094c974
renaming w10 --> wsp10 for wind speed at 10m
gbolzon Apr 15, 2026
b5844d1
Fixing horrible hard_open.f90 bug
Apr 27, 2026
c624233
printing all the forcing filename
gbolzon Apr 29, 2026
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
13 changes: 5 additions & 8 deletions compilers/machine_modules/g100.intel
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,14 @@ 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

# 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 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
4 changes: 2 additions & 2 deletions preproc/domdec/domdec_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ def argument():
max_proc_j = args.max_proc_j

from domdec import *
from commons.mask import Mask
from bitsea.commons.mask import Mask

TheMask = Mask(args.maskfile, dzvarname="e3t_0")
TheMask = Mask.from_file(args.maskfile, e3t_var_name="e3t_0")
tmask = TheMask.mask_at_level(0)
jpjglo, jpiglo = tmask.shape

Expand Down
2 changes: 1 addition & 1 deletion src/BC/hard_open.f90
Original file line number Diff line number Diff line change
Expand Up @@ -544,7 +544,7 @@ subroutine apply_dirichlet(self)
! 2nd loop: provided variables on neighbors
do j = 1, self%m_size

idx_i = self%m_neighbors(1, i)
idx_i = self%m_neighbors(1, j)
idx_j = self%m_neighbors(2, j)
idx_k = self%m_neighbors(3, j)

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 ! 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
20 changes: 13 additions & 7 deletions src/BIO/trcsed.f90
Original file line number Diff line number Diff line change
Expand Up @@ -133,39 +133,45 @@ 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))
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,jpkm1
zwork(jk,js,1) = -vsedR8 * trn(jk-1,jj,ji, sed_idx(js))
END DO
END DO
! Diatoms
DO js =5,9
DO js =9,13
DO jk = 2,jpkm1
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 js =14,17
DO jk = 2,jpkm1
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 js =18,21
DO jk = 2,jpkm1
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 js =22,25
DO jk = 2,jpkm1
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 js =26,26
DO jk = 2,jpkm1
zwork(jk,js,1) = - vsedO5c * trn(jk-1,jj,ji, sed_idx(js))
END DO
Expand Down
2 changes: 1 addition & 1 deletion src/DA/external_scripts/float_postproc/makeplots_postDA.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@


def plot_floatvsmodel(modelvarname,idate1,AllProfiles,AllChl, NewPres, Float,wmolist):
TheMask=Mask("/pico/home/usera07ogs/a07ogs00/OPA/V2C/etc/static-data/MED1672_cut/MASK/meshmask.nc")
TheMask=Mask.from_file("/pico/home/usera07ogs/a07ogs00/OPA/V2C/etc/static-data/MED1672_cut/MASK/meshmask.nc")
nav_lev = TheMask.zlevels
dz= TheMask.dz

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ def argument():
read_adjusted = [True] #,False,False]

# MASK of the domain
TheMask=Mask("/pico/home/usera07ogs/a07ogs00/OPA/V2C/etc/static-data/MED1672_cut/MASK/meshmask.nc")
TheMask=Mask.from_file("/pico/home/usera07ogs/a07ogs00/OPA/V2C/etc/static-data/MED1672_cut/MASK/meshmask.nc")
nav_lev = TheMask.zlevels

layer=Layer(0,200) #layer of the Float profile????
Expand Down
2 changes: 1 addition & 1 deletion src/DA/external_scripts/float_postproc/var_aggregator.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def addsep(string):

SingleVar_filelist=glob.glob(PATH_NAME)
SingleVar_filelist.sort()
TheMask=Mask(args.maskfile)
TheMask=Mask.from_file(args.maskfile)

for N1pfile in SingleVar_filelist[rank::nranks]:
dailyAve = os.path.basename(N1pfile)
Expand Down
2 changes: 1 addition & 1 deletion src/DA/external_scripts/float_preproc/CheckFloatperDate.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ def argument():
read_adjusted = [True] #,False,False]

# MASK of the domain
TheMask=Mask("/pico/home/usera07ogs/a07ogs00/OPA/V2C/etc/static-data/MED1672_cut/MASK/meshmask.nc")
TheMask=Mask.from_file("/pico/home/usera07ogs/a07ogs00/OPA/V2C/etc/static-data/MED1672_cut/MASK/meshmask.nc")
nav_lev = TheMask.zlevels

layer=Layer(0,200) #layer of the Float profile????
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def argument():
read_adjusted = [True] #,False,False]

# MASK of the domain
TheMask=Mask("/pico/home/usera07ogs/a07ogs00/OPA/V2C/etc/static-data/MED1672_cut/MASK/meshmask.nc")
TheMask=Mask.from_file("/pico/home/usera07ogs/a07ogs00/OPA/V2C/etc/static-data/MED1672_cut/MASK/meshmask.nc")
nav_lev = TheMask.zlevels

layer=Layer(0,200) #layer of the Float profile????
Expand Down
2 changes: 1 addition & 1 deletion src/DA/external_scripts/float_preproc/Float_misfit_gen.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ echo "Float_misfit_gen.sh start "
source ${OPA_SCRDIR}/opa_profile.inc
#opa_prex "module unload numpy"
opa_prex "source $OPA_VENV_1/bin/activate"
export PYTHONPATH=${PYTHONPATH}:$OPA_BITSEA
export PYTHONPATH=$OPA_BITSEA:${PYTHONPATH}

while [ True ] ; do
while [ True ] ; do
Expand Down
18 changes: 9 additions & 9 deletions src/DA/external_scripts/float_preproc/float_extractor.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,15 @@ def argument():

args = argument()

from commons.time_interval import TimeInterval
from commons.Timelist import TimeList
from instruments.matchup_manager import Matchup_Manager
import basins.OGS as OGS
from instruments.var_conversions import FLOATVARS
from commons.utils import addsep
from bitsea.commons.time_interval import TimeInterval
from bitsea.commons.Timelist import TimeList
from bitsea.instruments.matchup_manager import Matchup_Manager
import bitsea.basins.OGS as OGS
from bitsea.instruments.var_conversions import FLOATVARS
from bitsea.commons.utils import addsep
from datetime import timedelta
from datetime import datetime
from commons import timerequestors
from bitsea.commons import timerequestors
import numpy as np
import os,sys

Expand All @@ -56,9 +56,9 @@ def argument():
sys.exit(1)
assert profilesource in ["superfloat", "ppcon"]
if profilesource=="superfloat":
from instruments import superfloat as bio_float
from bitsea.instruments import superfloat as bio_float
if profilesource=="ppcon":
from instruments import float_ppcon as bio_float
from bitsea.instruments import float_ppcon as bio_float


meantime=datetime.strptime(args.time,'%Y%m%d')
Expand Down
Loading