Skip to content

Commit 383f7a3

Browse files
committed
Add option to specify the ratio of dt between levels
1 parent fbd6803 commit 383f7a3

File tree

2 files changed

+75
-48
lines changed

2 files changed

+75
-48
lines changed

Docs/sphinx_doc/Inputs.rst

Lines changed: 54 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -117,54 +117,60 @@ Resolution
117117
List of Parameters
118118
------------------
119119

120-
+-----------------------------------+-----------------+-----------------+-------------+
121-
| Parameter | Definition | Acceptable | Default |
122-
| | | Values | |
123-
+===================================+=================+=================+=============+
124-
| **amr.n_cell** | number of cells | Integer > 0 | must be set |
125-
| | in each | | |
126-
| | direction at | | |
127-
| | the coarsest | | |
128-
| | level | | |
129-
+-----------------------------------+-----------------+-----------------+-------------+
130-
| **amr.max_level** | number of | Integer >= 0 | must be set |
131-
| | levels of | | |
132-
| | refinement | | |
133-
| | above the | | |
134-
| | coarsest level | | |
135-
+-----------------------------------+-----------------+-----------------+-------------+
136-
| **amr.ref_ratio** | ratio of coarse | 2 / 3 / 4 | 2 for all |
137-
| | to fine grid | (one per level) | levels |
138-
| | spacing between | | |
139-
| | subsequent | | |
140-
| | levels | | |
141-
+-----------------------------------+-----------------+-----------------+-------------+
142-
| **amr.ref_ratio_vect** | ratio of coarse | 3 integers | 2 for all |
143-
| | to fine grid | (one per dir) | directions |
144-
| | spacing between | 2 / 3 / 4 | |
145-
| | subsequent | | |
146-
| | levels | | |
147-
+-----------------------------------+-----------------+-----------------+-------------+
148-
| **amr.regrid_int** | how often to | Integer > 0 | -1 |
149-
| | regrid | (if negative, | |
150-
| | | no regridding) | |
151-
+-----------------------------------+-----------------+-----------------+-------------+
152-
| **amr.regrid_on_restart** | should we | 0 or 1 | 0 |
153-
| | regrid | | |
154-
| | immediately | | |
155-
| | after | | |
156-
| | restarting | | |
157-
+-----------------------------------+-----------------+-----------------+-------------+
158-
| **amr.regrid_level_0_on_restart** | should we | true or false | false |
159-
| | regrid level | | |
160-
| | immediately | | |
161-
| | after | | |
162-
| | restarting | | |
163-
+-----------------------------------+-----------------+-----------------+-------------+
164-
| **amr.iterate_grids** | do we iterate | true, false | true |
165-
| | on the grids? | | |
166-
| | | | |
167-
+-----------------------------------+-----------------+-----------------+-------------+
120+
+-----------------------------------+--------------------+-----------------+-------------+
121+
| Parameter | Definition | Acceptable | Default |
122+
| | | Values | |
123+
+===================================+====================+=================+=============+
124+
| **amr.n_cell** | number of cells | Integer > 0 | must be set |
125+
| | in each | | |
126+
| | direction at | | |
127+
| | the coarsest | | |
128+
| | level | | |
129+
+-----------------------------------+--------------------+-----------------+-------------+
130+
| **amr.max_level** | number of | Integer >= 0 | must be set |
131+
| | levels of | | |
132+
| | refinement | | |
133+
| | above the | | |
134+
| | coarsest level | | |
135+
+-----------------------------------+--------------------+-----------------+-------------+
136+
| **amr.ref_ratio** | ratio of coarse | Integer >= 1 | 2 for all |
137+
| | to fine grid | (one per level) | levels |
138+
| | spacing between | | |
139+
| | subsequent | | |
140+
| | levels | | |
141+
+-----------------------------------+--------------------+-----------------+-------------+
142+
| **amr.ref_ratio_vect** | ratio of coarse | 3 integers >= 1 | 2 for all |
143+
| | to fine grid | (one per dir) | directions |
144+
| | spacing between | | |
145+
| | subsequent | | |
146+
| | levels | | |
147+
+-----------------------------------+--------------------+-----------------+-------------+
148+
| **amr.dt_ref_ratio** | ratio of coarse | Integer >= 1 | same as |
149+
| | to fine grid | (one per level) | ref_ratio |
150+
| | time steps between | | |
151+
| | subsequent | | |
152+
| | levels | | |
153+
+-----------------------------------+--------------------+-----------------+-------------+
154+
| **amr.regrid_int** | how often to | Integer > 0 | -1 |
155+
| | regrid | (if negative, | |
156+
| | | no regridding) | |
157+
+-----------------------------------+--------------------+-----------------+-------------+
158+
| **amr.regrid_on_restart** | should we | 0 or 1 | 0 |
159+
| | regrid | | |
160+
| | immediately | | |
161+
| | after | | |
162+
| | restarting | | |
163+
+-----------------------------------+--------------------+-----------------+-------------+
164+
| **amr.regrid_level_0_on_restart** | should we | true or false | false |
165+
| | regrid level | | |
166+
| | immediately | | |
167+
| | after | | |
168+
| | restarting | | |
169+
+-----------------------------------+--------------------+-----------------+-------------+
170+
| **amr.iterate_grids** | do we iterate | true, false | true |
171+
| | on the grids? | | |
172+
| | | | |
173+
+-----------------------------------+--------------------+-----------------+-------------+
168174

169175
Note: if **amr.max_level** = 0 then you do not need to set
170176
**amr.ref_ratio** or **amr.regrid_int**.

Source/ERF.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,10 +288,31 @@ ERF::ERF_shared ()
288288

289289
istep.resize(nlevs_max, 0);
290290
nsubsteps.resize(nlevs_max, 1);
291+
// This is the default
291292
for (int lev = 1; lev <= max_level; ++lev) {
292293
nsubsteps[lev] = MaxRefRatio(lev-1);
293294
}
294295

296+
if (max_level > 0) {
297+
ParmParse pp("erf");
298+
int count = pp.countval("dt_ref_ratio");
299+
if (count > 0) {
300+
Vector<int> nsub;
301+
nsub.resize(nlevs_max, 0);
302+
if (count == 1) {
303+
pp.queryarr("dt_ref_ratio", nsub, 0, 1);
304+
for (int lev = 1; lev <= max_level; ++lev) {
305+
nsubsteps[lev] = nsub[0];
306+
}
307+
} else {
308+
pp.queryarr("dt_ref_ratio", nsub, 0, max_level);
309+
for (int lev = 1; lev <= max_level; ++lev) {
310+
nsubsteps[lev] = nsub[lev-1];
311+
}
312+
}
313+
}
314+
}
315+
295316
t_new.resize(nlevs_max, 0.0);
296317
t_old.resize(nlevs_max, -1.e100);
297318
dt.resize(nlevs_max, std::min(1.e100,dt_max_initial));

0 commit comments

Comments
 (0)