35 project_on_tracer_properties_kernel,
36 projection_kernel_arguments="""
39 repositories::{{SOLVER_INSTANCE}}.QuadraturePoints1d,
40 {{NUMBER_OF_UNKNOWNS}}+{{NUMBER_OF_AUXILIARY_VARIABLES}},
41 fineGridCell{{SOLVER_NAME}}Q.value,
47 @see FiniteVolumesTracing.__init()__.
52 # Don't overwrite hte dictionary of hte superclass. We'll need it
53 self.tracerDict["PARTICLE"] = particle_set.particle_model.name
54 self.tracerDict["PARTICLES_CONTAINER"] = particle_set.name
55 self.tracerDict["SOLVER_NAME"] = solver._name
56 self.tracerDict["SOLVER_INSTANCE"] = solver.get_name_of_global_instance()
57 self.tracerDict["ORDER"] = solver._basis.order
58 self.tracerDict["NUMBER_OF_UNKNOWNS"] = solver._unknowns
59 self.tracerDict["NUMBER_OF_AUXILIARY_VARIABLES"] = solver._auxiliary_variables
60 self.tracerDict["PROJECTION_KERNEL"] = project_on_tracer_properties_kernel
61 self.tracerDict["PROJECTION_KERNEL_ARGUMENTS"] = jinja2.Template(
62 projection_kernel_arguments
63 ).render(**self.tracerDict)
65 cell_compute_kernel = """
67 fineGridCell{{SOLVER_NAME}}CellLabel.getHasUpdated()
70 repositories::{{SOLVER_INSTANCE}}.isLastGridSweepOfTimeStep()
72 repositories::{{SOLVER_INSTANCE}}.getSolverState()=={{SOLVER_NAME}}::SolverState::GridInitialisation
75 for (auto* p: localParticles) {
77 p->getMoveState()==globaldata::{{PARTICLE}}::MoveState::NotMovedYet
and marker.isContained(p->getX())
79 {{PROJECTION_KERNEL}}(
80 {{PROJECTION_KERNEL_ARGUMENTS}}
83 p->setMoveState( globaldata::{{PARTICLE}}::MoveState::Moved );
89 touch_vertex_first_time_compute_kernel = """
90 for (auto* p: assignedParticles) {
91 p->setMoveState(globaldata::{{PARTICLE}}::MoveState::NotMovedYet);
95 super(DiscontinuousGalerkinTracing,self).__init__(
97 jinja2.Template(cell_compute_kernel).render(**self.tracerDict),
98 jinja2.Template(touch_vertex_first_time_compute_kernel).render(