Peano
Loading...
Searching...
No Matches
swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest Class Reference

Simple particle with a fixed interaction radius h which moves according to leapfrog KDK scheme. More...

Inheritance diagram for swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest:
Collaboration diagram for swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest:

Public Member Functions

 __init__ (self, name, cfl_factor, initial_time_step_size, particle_particle_interaction_over_particle_sets_kernel="", touch_particles_of_set_first_time_kernel="", touch_particles_of_set_last_time_kernel="")
 algorithm_steps (self)
 Leapfrog consists basically of four steps per particle.
 initialisation_steps (self)
 No particular initialisation required.
Public Member Functions inherited from swift2.particle.Particle.Particle
 __init__ (self, name, particles_per_cell, min_h, max_h)
 Initialise the particle.
 readme_descriptor (self)
 Create default readme descriptor.
Public Member Functions inherited from peano4.toolbox.particles.Particle.Particle
 __init__ (self, name)
 Constructor.
Public Member Functions inherited from peano4.datamodel.DaStGen2.DaStGen2
 __init__ (self, name)
 Construct a DaStGen2 object.
 configure (self, namespace, association, subdirectory="")
 Configure output.
 additional_load_and_store_arguments (self)
 additional_load_and_store_arguments (self, new_arguments)
 hosts_smart_pointer_attribute (self)
 Does class host a smart pointer attribute.
Public Member Functions inherited from peano4.datamodel.DoF.DoF
 __init__ (self, name)
 Create a degree of freedom object.
 get_full_qualified_type (self)
 get_logical_type_name (self)
 What should the data type be called within the data repository, or within action sets.
 get_enumeration_type (self)
 What should the data type be called within the data repository.
 additional_load_and_store_arguments_for_other_dof (self, argument_name, use_dof_association=None)
 You can make Peano's store and load arguments of any DoF depend on other DoFs that you have loaded before.
 subnamespace (self)

Data Fields

 cfl_factor = cfl_factor
 initial_time_step_size = initial_time_step_size
 velocity = peano4.dastgen2.Peano4DoubleArray("v", "Dimensions")
 accelerator = peano4.dastgen2.Peano4DoubleArray("a", "Dimensions")
 v_full = peano4.dastgen2.Peano4DoubleArray("v_full", "Dimensions")
 u_full = dastgen2.attributes.Double("u_full")
 u = dastgen2.attributes.Double("u")
 density = dastgen2.attributes.Double("density")
 pressure = dastgen2.attributes.Double("pressure")
 soundSpeed = dastgen2.attributes.Double("soundSpeed")
 v_sig_AV = dastgen2.attributes.Double("v_sig_AV")
tuple particle_particle_interaction_over_particle_sets_kernel
tuple touch_particles_of_set_first_time_kernel
tuple touch_particles_of_set_last_time_kernel
Data Fields inherited from swift2.particle.Particle.Particle
 particles_per_cell = particles_per_cell
 min_h = min_h
 max_h = max_h
Data Fields inherited from peano4.toolbox.particles.Particle.Particle
 partid = dastgen2.attributes.Integer("partid", ifdefs=["PeanoDebug > 0"], initval="-1")
Data Fields inherited from peano4.datamodel.DaStGen2.DaStGen2
 generator = None
 data = dastgen2.DataModel(name)
 peano4_mpi_and_storage_aspect = peano4.dastgen2.MPIAndStorageAspect(peano4.datamodel.DoFAssociation.Undef)
Data Fields inherited from peano4.datamodel.DoF.DoF
 association = DoFAssociation.Undef
 name = name
list namespace = []
 subdirectory = subdirectory

Additional Inherited Members

Static Public Attributes inherited from swift2.particle.Particle.Particle
str DependencyChecks_Attribute_Prefix = "dependencyChecks"
list DependencyChecks_Ifdefs = ["PeanoDebug > 0"]
Static Public Attributes inherited from peano4.datamodel.DaStGen2.DaStGen2
str readme_package_descriptor
Protected Member Functions inherited from swift2.particle.Particle.Particle
 _dependency_checks_modify_steps (self, steplist, step_type_name, peano4_event_enum)
 Add dependency checks as well as mesh consistency checks to the algorithm steps.
 _add_dependency_checks (self)
 Add dependency (particle consistency) checks.
Protected Attributes inherited from swift2.particle.Particle.Particle
 _algorithm_steps = modified_steps
 _initialisation_steps = modified_steps
Protected Attributes inherited from peano4.datamodel.DoF.DoF
list _additional_load_and_store_arguments = []

Detailed Description

Simple particle with a fixed interaction radius h which moves according to leapfrog KDK scheme.

By default, it uses global time stepping, i.e. the combination of maximum velocity and minimal mesh size determines the time step size of the subsequent time step. Besides the default variables x and h, the particle has the following properties:

  • a vector a which is the acceleration;
  • a vector v which is the velocity.

You can add further properties via

   myparticle.data.add_attribute( peano4.dastgen2.Peano4DoubleArray("myFancyArray","Dimensions") )

in your code. Or you can create a subclass which adds additional fields after it has called the baseline constructor.

You will need to add further properties for any SPH project.

Force calculation

particle_particle_interaction_over_particle_sets_kernel is a C++ string which defines a force between two particles. It has access to three important objects:

  • localParticles is a container (list) over pointers to local particles
  • activeParticles is a container (list) over pointers to active particles
  • marker is a cell marker which identifies the current cell.

Please consult the guidebook for a definition of local and active particles but take into account that the local particles always are a subset of the active particles.

Besides the actual particle-to-particle calculation, i.e. a force calculation, users can also provide kernels that kick in when you touch particles for the first time before you actually compute any particle-particle interaction, and there is a plug-in point what you do just once the particle-particle interaction has terminated. The latter point is reached before we do the actual time stepping. In both plug-in points, you have a vertex marker which gives you the position of the vertex to which a particular is associated, and you have the localParticles. This is a vector of pointers in this particular case.

See also
peano4.datamanagement.CellMarker
peano4.datamanagement.VertexMarker

Definition at line 11 of file DisappearingParticleTest.py.

Constructor & Destructor Documentation

◆ __init__()

swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest.__init__ ( self,
name,
cfl_factor,
initial_time_step_size,
particle_particle_interaction_over_particle_sets_kernel = "",
touch_particles_of_set_first_time_kernel = "",
touch_particles_of_set_last_time_kernel = "" )

Definition at line 61 of file DisappearingParticleTest.py.

References __init__().

Referenced by __init__().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Function Documentation

◆ algorithm_steps()

swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest.algorithm_steps ( self)

Leapfrog consists basically of four steps per particle.

We first determine the force. Then we update the velocity by half a timestep and move the particle by a full timestep. Then the force is re-computed and the second half of the velocity update is done. Some variations of this KDK form re-arrange the steps executed per timestep to avoid a second force loop.

Reimplemented from swift2.particle.Particle.Particle.

Definition at line 111 of file DisappearingParticleTest.py.

References swift2.particle.ExplicitEulerDynamicSearchRadius.ExplicitEulerDynamicSearchRadius.cfl_factor, swift2.particle.ExplicitEulerFixedSearchRadius.ExplicitEulerFixedSearchRadius.cfl_factor, swift2.particle.LeapfrogFixedSearchRadius.LeapfrogFixedSearchRadius.cfl_factor, cfl_factor, swift2.particle.ExplicitEulerDynamicSearchRadius.ExplicitEulerDynamicSearchRadius.initial_time_step_size, swift2.particle.ExplicitEulerFixedSearchRadius.ExplicitEulerFixedSearchRadius.initial_time_step_size, swift2.particle.LeapfrogFixedSearchRadius.LeapfrogFixedSearchRadius.initial_time_step_size, initial_time_step_size, convert::data::Variable.name, exahype2.solvers.aderdg.kernels.Gemms.Gemms.name, peano4.datamodel.DoF.DoF.name, swift2.particle.ExplicitEulerDynamicSearchRadius.ExplicitEulerDynamicSearchRadius.particle_particle_interaction_over_particle_sets_kernel, particle_particle_interaction_over_particle_sets_kernel, swift2.particle.ExplicitEulerDynamicSearchRadius.ExplicitEulerDynamicSearchRadius.touch_particles_of_set_first_time_kernel, swift2.particle.ExplicitEulerFixedSearchRadius.ExplicitEulerFixedSearchRadius.touch_particles_of_set_first_time_kernel, swift2.particle.LeapfrogFixedSearchRadius.LeapfrogFixedSearchRadius.touch_particles_of_set_first_time_kernel, touch_particles_of_set_first_time_kernel, swift2.particle.ExplicitEulerDynamicSearchRadius.ExplicitEulerDynamicSearchRadius.touch_particles_of_set_last_time_kernel, swift2.particle.ExplicitEulerFixedSearchRadius.ExplicitEulerFixedSearchRadius.touch_particles_of_set_last_time_kernel, swift2.particle.LeapfrogFixedSearchRadius.LeapfrogFixedSearchRadius.touch_particles_of_set_last_time_kernel, and touch_particles_of_set_last_time_kernel.

◆ initialisation_steps()

swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest.initialisation_steps ( self)

No particular initialisation required.

Reimplemented from swift2.particle.Particle.Particle.

Definition at line 247 of file DisappearingParticleTest.py.

Field Documentation

◆ accelerator

swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest.accelerator = peano4.dastgen2.Peano4DoubleArray("a", "Dimensions")

Definition at line 77 of file DisappearingParticleTest.py.

◆ cfl_factor

swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest.cfl_factor = cfl_factor

Definition at line 72 of file DisappearingParticleTest.py.

Referenced by algorithm_steps().

◆ density

swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest.density = dastgen2.attributes.Double("density")

Definition at line 87 of file DisappearingParticleTest.py.

◆ initial_time_step_size

swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest.initial_time_step_size = initial_time_step_size

Definition at line 73 of file DisappearingParticleTest.py.

Referenced by algorithm_steps().

◆ particle_particle_interaction_over_particle_sets_kernel

tuple swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest.particle_particle_interaction_over_particle_sets_kernel
Initial value:
= (
particle_particle_interaction_over_particle_sets_kernel
)

Definition at line 99 of file DisappearingParticleTest.py.

Referenced by algorithm_steps(), and swift2.particle.tests.testLeapfrogFixedTimeStepSize.testLeapfrogFixedTimeStepSize.algorithm_steps().

◆ pressure

swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest.pressure = dastgen2.attributes.Double("pressure")

Definition at line 88 of file DisappearingParticleTest.py.

◆ soundSpeed

swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest.soundSpeed = dastgen2.attributes.Double("soundSpeed")

Definition at line 89 of file DisappearingParticleTest.py.

◆ touch_particles_of_set_first_time_kernel

tuple swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest.touch_particles_of_set_first_time_kernel
Initial value:
= (
touch_particles_of_set_first_time_kernel
)

Definition at line 102 of file DisappearingParticleTest.py.

Referenced by algorithm_steps(), and swift2.particle.tests.testLeapfrogFixedTimeStepSize.testLeapfrogFixedTimeStepSize.algorithm_steps().

◆ touch_particles_of_set_last_time_kernel

tuple swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest.touch_particles_of_set_last_time_kernel
Initial value:
= (
touch_particles_of_set_last_time_kernel
)

Definition at line 105 of file DisappearingParticleTest.py.

Referenced by algorithm_steps(), and swift2.particle.tests.testLeapfrogFixedTimeStepSize.testLeapfrogFixedTimeStepSize.algorithm_steps().

◆ u

swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest.u = dastgen2.attributes.Double("u")

Definition at line 86 of file DisappearingParticleTest.py.

◆ u_full

swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest.u_full = dastgen2.attributes.Double("u_full")

Definition at line 85 of file DisappearingParticleTest.py.

◆ v_full

swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest.v_full = peano4.dastgen2.Peano4DoubleArray("v_full", "Dimensions")

Definition at line 84 of file DisappearingParticleTest.py.

◆ v_sig_AV

swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest.v_sig_AV = dastgen2.attributes.Double("v_sig_AV")

Definition at line 90 of file DisappearingParticleTest.py.

◆ velocity

swift2.particle.tests.DisappearingParticleTest.DisappearingParticleTest.velocity = peano4.dastgen2.Peano4DoubleArray("v", "Dimensions")

Definition at line 76 of file DisappearingParticleTest.py.


The documentation for this class was generated from the following file: