Skip to content

Commit 30a3510

Browse files
committed
Try using reformulated ARK timestepper
1 parent 5e31be2 commit 30a3510

File tree

8 files changed

+42
-8
lines changed

8 files changed

+42
-8
lines changed

.buildkite/longruns/pipeline.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@ steps:
1919
key: "init_cpu_env"
2020
command:
2121
- echo "--- Instantiate project"
22+
- "julia --project -e 'using Pkg; Pkg.add(;url=\"https://github.com/CliMA/ClimaTimeSteppers.jl\", rev=\"dy/reformulation\")'"
2223
- "julia --project -e 'using Pkg; Pkg.instantiate(;verbose=true)'"
2324
- "julia --project -e 'using Pkg; Pkg.precompile()'"
2425
- "julia --project -e 'using Pkg; Pkg.status()'"
2526

2627
- echo "--- Instantiate"
28+
- "julia --project=examples -e 'using Pkg; Pkg.add(;url=\"https://github.com/CliMA/ClimaTimeSteppers.jl\", rev=\"dy/reformulation\")'"
2729
- "julia --project=examples -e 'using Pkg; Pkg.instantiate(;verbose=true)'"
2830
- "julia --project=examples -e 'using Pkg; Pkg.precompile()'"
2931
- "julia --project=examples -e 'using CUDA; CUDA.precompile_runtime()'"
@@ -64,6 +66,17 @@ steps:
6466
slurm_time: 24:00:00
6567
env:
6668
JOB_NAME: "longrun_ssp_bw_rhoe_equil_highres"
69+
70+
- label: ":computer: SSP baroclinic wave (ρe_tot) no lim equilmoist high resolution centered diff"
71+
command:
72+
- "srun julia --project=examples examples/hybrid/driver.jl --config_file $CONFIG_PATH/$$JOB_NAME.yml"
73+
artifact_paths: "$$JOB_NAME/output_active/*"
74+
agents:
75+
slurm_ntasks: 32
76+
slurm_nodes: 2
77+
slurm_time: 24:00:00
78+
env:
79+
JOB_NAME: "longrun_ssp_bw_rhoe_equil_highres_no_lim"
6780

6881
- label: ":computer: aquaplanet equilmoist clearsky radiation + prognostic edmf diffusion only + 0M microphysics"
6982
command:

.buildkite/longruns_gpu/pipeline.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ steps:
2222
key: "init_gpu_env"
2323
command:
2424
- echo "--- Instantiate examples"
25+
- "julia --project=examples -e 'using Pkg; Pkg.add(;url=\"https://github.com/CliMA/ClimaTimeSteppers.jl\", rev=\"dy/reformulation\")'"
2526
- julia --project=examples -e 'using Pkg; Pkg.instantiate(;verbose=true)'
2627
- julia --project=examples -e 'using Pkg; Pkg.precompile()'
2728
- julia --project=examples -e 'using CUDA; CUDA.precompile_runtime()'

.buildkite/pipeline.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,20 @@ steps:
2424
- "echo $$JULIA_DEPOT_PATH"
2525

2626
- echo "--- Instantiate project"
27+
- "julia --project -e 'using Pkg; Pkg.add(;url=\"https://github.com/CliMA/ClimaTimeSteppers.jl\", rev=\"dy/reformulation\")'"
2728
- "julia --project -e 'using Pkg; Pkg.instantiate(;verbose=true)'"
2829
- "julia --project -e 'using Pkg; Pkg.precompile()'"
2930
- "julia --project -e 'using Pkg; Pkg.status()'"
3031

3132
- echo "--- Instantiate examples"
33+
- "julia --project=examples -e 'using Pkg; Pkg.add(;url=\"https://github.com/CliMA/ClimaTimeSteppers.jl\", rev=\"dy/reformulation\")'"
3234
- "julia --project=examples -e 'using Pkg; Pkg.instantiate(;verbose=true)'"
3335
- "julia --project=examples -e 'using Pkg; Pkg.precompile()'"
3436
- "julia --project=examples -e 'using CUDA; CUDA.precompile_runtime()'"
3537
- "julia --project=examples -e 'using Pkg; Pkg.status()'"
3638

3739
- echo "--- Instantiate perf"
40+
- "julia --project=perf -e 'using Pkg; Pkg.add(;url=\"https://github.com/CliMA/ClimaTimeSteppers.jl\", rev=\"dy/reformulation\")'"
3841
- "julia --project=perf -e 'using Pkg; Pkg.instantiate(;verbose=true)'"
3942
- "julia --project=perf -e 'using Pkg; Pkg.precompile()'"
4043
- "julia --project=perf -e 'using Pkg; Pkg.status()'"

config/longrun_configs/longrun_aquaplanet_clearsky_1M.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ surface_setup: "DefaultMoninObukhov"
1212
vert_diff: "FriersonDiffusion"
1313
implicit_diffusion: true
1414
approximate_linear_solve_iters: 2
15+
max_newton_iters_ode: 2
1516
rad: "clearsky"
1617
dt_rad: "6hours"
1718
job_id: "longrun_aquaplanet_clearsky_1M"

config/longrun_configs/longrun_aquaplanet_rhoe_equil_55km_nz63_clearsky_tvinsol_0M_slabocean.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ surface_setup: "DefaultMoninObukhov"
1313
vert_diff: "FriersonDiffusion"
1414
implicit_diffusion: true
1515
approximate_linear_solve_iters: 2
16+
max_newton_iters_ode: 2
1617
rad: "clearsky"
1718
idealized_insolation: false
1819
dt_rad: "1hours"

config/longrun_configs/longrun_bw_rhoe_equil_highres.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ h_elem: 16
88
precip_model: "0M"
99
job_id: "longrun_bw_rhoe_equil_highres"
1010
moist: "equil"
11+
max_newton_iters_ode: 2
1112
diagnostics:
1213
- short_name: [pfull, wa, va, rv, hus]
1314
period: 1days
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
dt_save_state_to_disk: "10days"
2+
initial_condition: "MoistBaroclinicWave"
3+
z_elem: 45
4+
dt: "150secs"
5+
t_end: "10days"
6+
dz_bottom: 30.0
7+
h_elem: 16
8+
ode_algo: "SSP333"
9+
precip_model: "0M"
10+
job_id: "longrun_ssp_bw_rhoe_equil_highres_no_lim"
11+
moist: "equil"
12+
apply_limiter: false
13+
diagnostics:
14+
- short_name: [pfull, wa, va, rv, hus]
15+
period: 1days

src/solver/type_getters.jl

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -360,14 +360,13 @@ function get_surface_setup(parsed_args)
360360
end
361361

362362
is_explicit_CTS_algo_type(alg_or_tableau) =
363-
alg_or_tableau <: CTS.ERKAlgorithmName
363+
alg_or_tableau <: CTS.RKAlgorithmName
364364

365-
is_imex_CTS_algo_type(alg_or_tableau) =
366-
alg_or_tableau <: CTS.IMEXARKAlgorithmName
365+
is_imex_CTS_algo_type(alg_or_tableau) = alg_or_tableau <: CTS.ARKAlgorithmName
367366

368367
is_implicit_type(alg_or_tableau) = is_imex_CTS_algo_type(alg_or_tableau)
369368

370-
is_imex_CTS_algo(::CTS.IMEXAlgorithm) = true
369+
is_imex_CTS_algo(::CTS.ARKAlgorithm) = true
371370
is_imex_CTS_algo(::SciMLBase.AbstractODEAlgorithm) = false
372371

373372
is_implicit(ode_algo) = is_imex_CTS_algo(ode_algo)
@@ -420,7 +419,7 @@ function ode_configuration(::Type{FT}, parsed_args) where {FT}
420419
@info "Using ODE config: `$alg_or_tableau`"
421420

422421
if is_explicit_CTS_algo_type(alg_or_tableau)
423-
return CTS.ExplicitAlgorithm(alg_or_tableau())
422+
return CTS.RKAlgorithm(alg_or_tableau())
424423
elseif !is_implicit_type(alg_or_tableau)
425424
return alg_or_tableau()
426425
elseif is_imex_CTS_algo_type(alg_or_tableau)
@@ -452,7 +451,7 @@ function ode_configuration(::Type{FT}, parsed_args) where {FT}
452451
nothing
453452
end,
454453
)
455-
return CTS.IMEXAlgorithm(alg_or_tableau(), newtons_method)
454+
return CTS.ARKAlgorithm(alg_or_tableau(), newtons_method)
456455
else
457456
return alg_or_tableau(; linsolve = linsolve!)
458457
end
@@ -518,8 +517,8 @@ function args_integrator(parsed_args, Y, p, tspan, ode_algo, callback)
518517
# Can we just pass implicit_tendency! and jac_prototype etc.?
519518
lim! = limiters_func!,
520519
dss!,
521-
post_explicit! = set_precomputed_quantities!,
522-
post_implicit! = set_precomputed_quantities!,
520+
pre_newton_iteration! = set_precomputed_quantities!, # TODO: set_implicit_precomputed_quantities!
521+
post_stage! = set_precomputed_quantities!,
523522
)
524523
else
525524
SciMLBase.SplitFunction(implicit_func, remaining_tendency!)

0 commit comments

Comments
 (0)