Skip to content

Commit

Permalink
doc/examples/simul_ns3d_forced_isotropic.py and co
Browse files Browse the repository at this point in the history
  • Loading branch information
paugier committed Jun 12, 2024
1 parent e48bbd0 commit d9a7da5
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 6 deletions.
84 changes: 84 additions & 0 deletions doc/examples/simul_ns3d_forced_isotropic.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import argparse
import os

from fluiddyn.util.mpi import printby0

from fluidsim.solvers.ns3d.solver import Simul

parser = argparse.ArgumentParser()

parser.add_argument(
"--nx",
type=int,
default=96,
help="Number of grid points in the x direction.",
)
parser.add_argument(
"--t_end", type=float, default=8.0, help="End time of the simulation"
)
parser.add_argument(
"--order",
type=int,
default=4,
help="Order of the viscosity (`2` corresponds to standard viscosity)",
)

args = parser.parse_args()

if "FLUIDSIM_TESTS_EXAMPLES" in os.environ:
t_end = 1.0
nx = 24
else:
t_end = args.t_end
nx = args.nx

params = Simul.create_default_params()

params.output.sub_directory = "examples"

ny = nz = nx
Lx = 3
params.oper.nx = nx
params.oper.ny = ny
params.oper.nz = nz
params.oper.Lx = Lx
params.oper.Ly = Ly = Lx / nx * ny
params.oper.Lz = Lz = Lx / nx * nz

params.time_stepping.USE_T_END = True
params.time_stepping.t_end = t_end

order_visco = args.order
dx = Lx / nx
epsilon = 1.0
C = 1.0
nu = (dx / C) ** ((3 * order_visco - 2) / 3) * epsilon ** (1 / 3)
setattr(params, f"nu_{order_visco}", nu)

printby0(f"nu_{order_visco} = {nu:.3e}")

params.init_fields.type = "noise"
params.init_fields.noise.length = 1.0
params.init_fields.noise.velo_max = 0.1

params.forcing.enable = True
params.forcing.type = "tcrandom"
params.forcing.normalized.constant_rate_of = None
params.forcing.nkmin_forcing = 3
params.forcing.nkmax_forcing = 4
# solenoidal field (toroidal + poloidal)
params.forcing.key_forced = ["vt_fft", "vp_fft"]
# forcing rate **per key forced**
params.forcing.forcing_rate = 0.5 * epsilon

params.output.periods_print.print_stdout = 1e-1

params.output.periods_save.phys_fields = 0.5
params.output.periods_save.spatial_means = 0.1
params.output.periods_save.spectra = 0.1
params.output.periods_save.spect_energy_budg = 0.1

params.output.spectra.kzkh_periodicity = 1

sim = Simul(params)
sim.time_stepping.start()
4 changes: 2 additions & 2 deletions fluidsim/base/forcing/specific.py
Original file line number Diff line number Diff line change
Expand Up @@ -489,11 +489,11 @@ def compute(self):
a_fft = self.oper.coarse_seq_from_fft_loc(
a_fft, self.shapeK_loc_coarse
)
except IndexError:
except IndexError as error:
raise ValueError(
f"rank={self.oper.rank}; {self.shapeK_loc_coarse = }; "
f"{self.oper.shapeK_loc = }"
)
) from error

if mpi.rank == 0:
fa_fft = self.forcingc_raw_each_time(a_fft)
Expand Down
2 changes: 1 addition & 1 deletion fluidsim/util/scripts/turb_trandom_anisotropic.py
Original file line number Diff line number Diff line change
Expand Up @@ -497,7 +497,7 @@ def main(args=None, **defaults):
# To visualize with fluidsim:
cd {sim.output.path_run}; fluidsim-ipy-load
fluidsim-ipy-load {sim.output.path_run}
# in IPython:
Expand Down
2 changes: 1 addition & 1 deletion lib/fluidsim_core/scripts/restart.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ def restart(self, args=None, **defaults):
"""
# To visualize with IPython:
cd {path_run}; fluidsim-ipy-load
fluidsim-ipy-load {path_run}
"""
)

Expand Down
9 changes: 7 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -163,9 +163,9 @@ dev = [
]

[tool.pdm.scripts]
black = 'black -l 82 fluidsim scripts bench doc lib --exclude "/(__pythran__|__python__|__numba__|doc/_build|\.ipynb_checkpoints/*)/"'
black = 'black fluidsim scripts bench doc lib --exclude "/(__pythran__|__python__|__numba__|doc/_build|\.ipynb_checkpoints/*)/"'
lint = {shell="pylint -rn --rcfile=pylintrc --jobs=$(nproc) fluidsim --exit-zero"}
black_check = 'black --check -l 82 fluidsim scripts bench doc lib --exclude "/(__pythran__|__python__|__numba__|doc/_build|\.ipynb_checkpoints/*)/"'
black_check = 'black --check fluidsim scripts bench doc lib --exclude "/(__pythran__|__python__|__numba__|doc/_build|\.ipynb_checkpoints/*)/"'
validate_code = {composite = ["black_check", "lint"]}

[tool.pdm.options]
Expand Down Expand Up @@ -254,3 +254,8 @@ showcontent = true
directory = "security"
name = "Security"
showcontent = true

[tool.black]
line-length = 82
target-version = ["py39"]
extend-exclude = "/(__pythran__|__python__|__numba__|build|doc/_build|\\.ipynb_checkpoints/*)/"

0 comments on commit d9a7da5

Please sign in to comment.