Skip to content

Commit bbe58d8

Browse files
authored
Merge pull request #6220 from jdannberg/particle_initialization
re-generate particles in initial adaptive refinement
2 parents ae4290f + 409461c commit bbe58d8

File tree

31 files changed

+2729
-511
lines changed

31 files changed

+2729
-511
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Changed: ASPECT now re-generates particles in each initial
2+
adaptive refinement cycle instead of only once after global
3+
refinement. This means that particle locations during initial
4+
adaptive refinement are chosen according to the generator
5+
instead of randomly.
6+
<br>
7+
(Juliane Dannberg, 2025/01/29)

source/particle/manager.cc

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -574,9 +574,14 @@ namespace aspect
574574
void
575575
Manager<dim>::setup_initial_state ()
576576
{
577-
// If we are in the first adaptive refinement cycle generate particles
578-
if (this->get_pre_refinement_step() == 0)
579-
generate_particles();
577+
// We want to generate a new set of particles in each adaptive refinement
578+
// cycle to get the right number of particles per cell and to accurately
579+
// initialize their properties. Delete existing particles beforehand.
580+
if (this->get_pre_refinement_step() > 0)
581+
particle_handler->clear();
582+
583+
// Generate particles in each adaptive refinement cycle
584+
generate_particles();
580585

581586
// And initialize the particle properties according to the initial
582587
// conditions on the current mesh

tests/grain_size_crossed_transition/screen-output

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,40 +29,40 @@ Number of degrees of freedom: 5,285 (2,482+321+1,241+1,241)
2929

3030
Postprocessing:
3131
Writing graphical output: output-grain_size_crossed_transition/solution/solution-00001
32-
Compositions min/max/mass: 0.001313/0.002/5.938e+07
32+
Compositions min/max/mass: 0.00135/0.002/5.942e+07
3333
Writing particle output: output-grain_size_crossed_transition/particles/particles-00001
3434

35-
*** Timestep 2: t=6442.31 years, dt=3220.42 years
35+
*** Timestep 2: t=6439.33 years, dt=3217.44 years
3636
Solving temperature system... 0 iterations.
3737
Advecting particles... done.
3838
Rebuilding Stokes preconditioner...
3939
Solving Stokes system (AMG)... 29+0 iterations.
4040

4141
Postprocessing:
4242
Writing graphical output: output-grain_size_crossed_transition/solution/solution-00002
43-
Compositions min/max/mass: 0.001/0.002/5.876e+07
43+
Compositions min/max/mass: 0.001/0.002/5.879e+07
4444
Writing particle output: output-grain_size_crossed_transition/particles/particles-00002
4545

46-
*** Timestep 3: t=9648.75 years, dt=3206.45 years
46+
*** Timestep 3: t=9649.24 years, dt=3209.91 years
4747
Solving temperature system... 0 iterations.
4848
Advecting particles... done.
4949
Rebuilding Stokes preconditioner...
50-
Solving Stokes system (AMG)... 30+0 iterations.
50+
Solving Stokes system (AMG)... 29+0 iterations.
5151

5252
Postprocessing:
5353
Writing graphical output: output-grain_size_crossed_transition/solution/solution-00003
54-
Compositions min/max/mass: 0.001/0.002/5.816e+07
54+
Compositions min/max/mass: 0.001/0.002/5.822e+07
5555
Writing particle output: output-grain_size_crossed_transition/particles/particles-00003
5656

57-
*** Timestep 4: t=10000 years, dt=351.245 years
57+
*** Timestep 4: t=10000 years, dt=350.761 years
5858
Solving temperature system... 0 iterations.
5959
Advecting particles... done.
6060
Rebuilding Stokes preconditioner...
61-
Solving Stokes system (AMG)... 25+0 iterations.
61+
Solving Stokes system (AMG)... 24+0 iterations.
6262

6363
Postprocessing:
6464
Writing graphical output: output-grain_size_crossed_transition/solution/solution-00004
65-
Compositions min/max/mass: 0.001/0.002/5.81e+07
65+
Compositions min/max/mass: 0.001/0.002/5.815e+07
6666
Writing particle output: output-grain_size_crossed_transition/particles/particles-00004
6767

6868
Termination requested by criterion: end time

tests/grain_size_crossed_transition/statistics

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
# 16: Number of advected particles
1717
# 17: Particle file name
1818
0 0.000000000000e+00 0.000000000000e+00 264 2803 1241 1241 0 30 32 160 output-grain_size_crossed_transition/solution/solution-00000 2.00000000e-03 2.00000000e-03 6.00000000e+07 10000 output-grain_size_crossed_transition/particles/particles-00000
19-
1 3.221888105682e+03 3.221888105682e+03 264 2803 1241 1241 0 24 26 130 output-grain_size_crossed_transition/solution/solution-00001 1.31250000e-03 2.00000000e-03 5.93820271e+07 9956 output-grain_size_crossed_transition/particles/particles-00001
20-
2 6.442308952690e+03 3.220420847008e+03 264 2803 1241 1241 0 28 30 150 output-grain_size_crossed_transition/solution/solution-00002 1.00000000e-03 2.00000000e-03 5.87617466e+07 9890 output-grain_size_crossed_transition/particles/particles-00002
21-
3 9.648754753904e+03 3.206445801214e+03 264 2803 1241 1241 0 29 31 155 output-grain_size_crossed_transition/solution/solution-00003 1.00000000e-03 2.00000000e-03 5.81631659e+07 9815 output-grain_size_crossed_transition/particles/particles-00003
22-
4 1.000000000000e+04 3.512452460959e+02 264 2803 1241 1241 0 24 26 130 output-grain_size_crossed_transition/solution/solution-00004 1.00000000e-03 2.00000000e-03 5.81049139e+07 9811 output-grain_size_crossed_transition/particles/particles-00004
19+
1 3.221888105682e+03 3.221888105682e+03 264 2803 1241 1241 0 24 26 130 output-grain_size_crossed_transition/solution/solution-00001 1.35000000e-03 2.00000000e-03 5.94221251e+07 9877 output-grain_size_crossed_transition/particles/particles-00001
20+
2 6.439327373120e+03 3.217439267438e+03 264 2803 1241 1241 0 28 30 150 output-grain_size_crossed_transition/solution/solution-00002 1.00000000e-03 2.00000000e-03 5.87878710e+07 9750 output-grain_size_crossed_transition/particles/particles-00002
21+
3 9.649238592234e+03 3.209911219114e+03 264 2803 1241 1241 0 28 30 150 output-grain_size_crossed_transition/solution/solution-00003 1.00000000e-03 2.00000000e-03 5.82190312e+07 9604 output-grain_size_crossed_transition/particles/particles-00003
22+
4 1.000000000000e+04 3.507614077663e+02 264 2803 1241 1241 0 23 25 125 output-grain_size_crossed_transition/solution/solution-00004 1.00000000e-03 2.00000000e-03 5.81477550e+07 9593 output-grain_size_crossed_transition/particles/particles-00004
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Like particle_generator_reference_cell.prm but with initial adaptive
2+
# refinement to test correct particle initialization.
3+
# There should be 4 particles per direction within each cell.
4+
5+
set Dimension = 2
6+
7+
include $ASPECT_SOURCE_DIR/tests/particle_generator_reference_cell.prm
8+
9+
subsection Mesh refinement
10+
set Initial adaptive refinement = 1
11+
set Strategy = composition gradient
12+
set Initial global refinement = 3
13+
set Coarsening fraction = 0.6
14+
set Refinement fraction = 0.15
15+
set Adapt by fraction of cells = true
16+
end
17+
18+
subsection Particles
19+
set Load balancing strategy = remove and add particles
20+
set Minimum particles per cell = 16
21+
end

0 commit comments

Comments
 (0)