Skip to content

Commit

Permalink
Merge pull request #6220 from jdannberg/particle_initialization
Browse files Browse the repository at this point in the history
re-generate particles in initial adaptive refinement
  • Loading branch information
jdannberg authored Feb 4, 2025
2 parents ae4290f + 409461c commit bbe58d8
Show file tree
Hide file tree
Showing 31 changed files with 2,729 additions and 511 deletions.
7 changes: 7 additions & 0 deletions doc/modules/changes/20250129_jdannberg
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Changed: ASPECT now re-generates particles in each initial
adaptive refinement cycle instead of only once after global
refinement. This means that particle locations during initial
adaptive refinement are chosen according to the generator
instead of randomly.
<br>
(Juliane Dannberg, 2025/01/29)
11 changes: 8 additions & 3 deletions source/particle/manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -574,9 +574,14 @@ namespace aspect
void
Manager<dim>::setup_initial_state ()
{
// If we are in the first adaptive refinement cycle generate particles
if (this->get_pre_refinement_step() == 0)
generate_particles();
// We want to generate a new set of particles in each adaptive refinement
// cycle to get the right number of particles per cell and to accurately
// initialize their properties. Delete existing particles beforehand.
if (this->get_pre_refinement_step() > 0)
particle_handler->clear();

// Generate particles in each adaptive refinement cycle
generate_particles();

// And initialize the particle properties according to the initial
// conditions on the current mesh
Expand Down
18 changes: 9 additions & 9 deletions tests/grain_size_crossed_transition/screen-output
Original file line number Diff line number Diff line change
Expand Up @@ -29,40 +29,40 @@ Number of degrees of freedom: 5,285 (2,482+321+1,241+1,241)

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

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

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

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

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

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

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

Termination requested by criterion: end time
Expand Down
8 changes: 4 additions & 4 deletions tests/grain_size_crossed_transition/statistics
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
# 16: Number of advected particles
# 17: Particle file name
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
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
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
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
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
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
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
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
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
21 changes: 21 additions & 0 deletions tests/particle_generator_reference_cell_adaptive.prm
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Like particle_generator_reference_cell.prm but with initial adaptive
# refinement to test correct particle initialization.
# There should be 4 particles per direction within each cell.

set Dimension = 2

include $ASPECT_SOURCE_DIR/tests/particle_generator_reference_cell.prm

subsection Mesh refinement
set Initial adaptive refinement = 1
set Strategy = composition gradient
set Initial global refinement = 3
set Coarsening fraction = 0.6
set Refinement fraction = 0.15
set Adapt by fraction of cells = true
end

subsection Particles
set Load balancing strategy = remove and add particles
set Minimum particles per cell = 16
end
Loading

0 comments on commit bbe58d8

Please sign in to comment.