9.0
general documentation
Loading...
Searching...
No Matches
cs_lagr_injection.cpp File Reference
#include "base/cs_defs.h"
#include <limits.h>
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
#include <float.h>
#include <assert.h>
#include "bft/bft_printf.h"
#include "bft/bft_error.h"
#include "bft/bft_mem.h"
#include "base/cs_base.h"
#include "base/cs_math.h"
#include "base/cs_boundary_zone.h"
#include "base/cs_volume_zone.h"
#include "comb/cs_coal.h"
#include "mesh/cs_mesh.h"
#include "mesh/cs_mesh_quantities.h"
#include "base/cs_parall.h"
#include "base/cs_parameters.h"
#include "pprt/cs_physical_model.h"
#include "base/cs_physical_constants.h"
#include "base/cs_prototypes.h"
#include "base/cs_time_step.h"
#include "base/cs_field.h"
#include "base/cs_field_pointer.h"
#include "base/cs_random.h"
#include "lagr/cs_lagr.h"
#include "lagr/cs_lagr_tracking.h"
#include "lagr/cs_lagr_new.h"
#include "lagr/cs_lagr_precipitation_model.h"
#include "lagr/cs_lagr_prototypes.h"
#include "lagr/cs_lagr_injection.h"
Include dependency graph for cs_lagr_injection.cpp:

Functions

static cs_lnum_t _segment_binary_search (cs_lnum_t n, double x, const double a[])
 Binary search for a given local id in a given array of ordered values.
static cs_lnum_t _distribute_particles (cs_gnum_t n_g_particles, cs_lnum_t n_elts, const cs_lnum_t elt_id[], const cs_real_t elt_weight[], const cs_real_t *elt_profile, cs_lnum_t elt_particle_idx[])
 Distribute new particles in a given region.
static void _injection_check (const cs_lagr_injection_set_t *zis)
 Check injection parameters are valid.
static cs_lnum_t_get_particle_face_ids (cs_lnum_t n_faces, const cs_lnum_t face_ids[], const cs_lnum_t face_particle_idx[])
 Build particle injection face ids array for a given boundary zone and set.
static void _init_particles (cs_lagr_particle_set_t *p_set, const cs_lagr_injection_set_t *zis, int time_id, cs_lnum_t n_elts, const cs_lnum_t *face_ids, const cs_lnum_t elt_particle_idx[])
 Initialize particle values.
static void _check_particles (cs_lagr_particle_set_t *p_set, const cs_lagr_injection_set_t *zis, const cs_lnum_t particle_range[2])
 Check injected particle values.
void cs_lagr_injection (int time_id, const int itypfb[], cs_real_t visc_length[])
 Inject particles in the computational domain.

Function Documentation

◆ _check_particles()

void _check_particles ( cs_lagr_particle_set_t * p_set,
const cs_lagr_injection_set_t * zis,
const cs_lnum_t particle_range[2] )
static

Check injected particle values.

Parameters
[in,out]p_setparticle set
[in]zisinjection data for this zone and set
[in]particle_rangestart and past-the-end ids of new particles for this zone and class

◆ _distribute_particles()

cs_lnum_t _distribute_particles ( cs_gnum_t n_g_particles,
cs_lnum_t n_elts,
const cs_lnum_t elt_id[],
const cs_real_t elt_weight[],
const cs_real_t * elt_profile,
cs_lnum_t elt_particle_idx[] )
static

Distribute new particles in a given region.

Parameters
[in]n_g_particlesglobal number of particles to inject
[in]n_eltsnumber of elements in region
[in]elt_idelement ids (or nullptr)
[in]elt_weightparent element weights (i.e. all local surfaces or volumes)
[in]elt_profileoptional profile values for elements (or nullptr)
[out]elt_particle_idxstart index of added particles for each element (size: n_elts + 1)
Returns
number of particles added on local rank

◆ _get_particle_face_ids()

cs_lnum_t * _get_particle_face_ids ( cs_lnum_t n_faces,
const cs_lnum_t face_ids[],
const cs_lnum_t face_particle_idx[] )
static

Build particle injection face ids array for a given boundary zone and set.

The caller is responsible for freeing the returned array.

Parameters
[in]n_facesnumber of elements in zone
[in]face_idsmatching face ids
[in]face_particle_idxstarting id of new particles for a given face (size: n_faces+1)
Returns
array of ids of faces for injected particles (size: face_particle_idx[n_faces])

◆ _init_particles()

void _init_particles ( cs_lagr_particle_set_t * p_set,
const cs_lagr_injection_set_t * zis,
int time_id,
cs_lnum_t n_elts,
const cs_lnum_t * face_ids,
const cs_lnum_t elt_particle_idx[] )
static

Initialize particle values.

Parameters
[in,out]p_setparticle set
[in]zisinjection data for this zone and set
[in]time_idtime step indicator for fields 0: use fields at current time step 1: use fields at previous time step
[in]n_eltsnumber of elements in zone
[in]face_idsmatching face ids if zone is a boundary
[in]elt_particle_idxstarting id of new particles for a given element (size: n_elts+1)

◆ _injection_check()

void _injection_check ( const cs_lagr_injection_set_t * zis)
static

Check injection parameters are valid.

Parameters
[in]zispointer to injection data for a given zone and set

◆ _segment_binary_search()

cs_lnum_t _segment_binary_search ( cs_lnum_t n,
double x,
const double a[] )
inlinestatic

Binary search for a given local id in a given array of ordered values.

We assume the id is present in the array.

Parameters
[in]nnumber of values
[in]xvalue to locate
[in]aarray of ordered values (size n)
Returns
index of x in array (smallest i such that a[i] >= x)

◆ cs_lagr_injection()

void cs_lagr_injection ( int time_id,
const int itypfb[],
cs_real_t visc_length[] )

Inject particles in the computational domain.

Parameters
[in]time_idtime step indicator for fields 0: use fields at current time step 1: use fields at previous time step
[in]itypfbboundary face types
[in]visc_lengthviscous layer thickness (size: number of mesh boundary faces)