9.0
general documentation
Loading...
Searching...
No Matches
cs_ibm.cpp File Reference
#include "base/cs_defs.h"
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "bft/bft_mem.h"
#include "bft/bft_error.h"
#include "bft/bft_printf.h"
#include "fvm/fvm_writer.h"
#include "base/cs_array.h"
#include "alge/cs_cell_to_vertex.h"
#include "base/cs_field_operator.h"
#include "base/cs_field_pointer.h"
#include "base/cs_medcoupling_intersector.h"
#include "meg/cs_meg_prototypes.h"
#include "mesh/cs_mesh_adjacencies.h"
#include "base/cs_parameters.h"
#include "base/cs_post.h"
#include "base/cs_prototypes.h"
#include "mesh/cs_stl.h"
#include "base/cs_turbomachinery.h"
#include "base/cs_velocity_pressure.h"
#include "alge/cs_vertex_to_cell.h"
#include "base/cs_zone.h"
#include "base/cs_ibm.h"
Include dependency graph for cs_ibm.cpp:

Functions

static cs_real_t _geom_face_fraction (cs_real_t alphai, cs_real_t alphaj, cs_real_t sizei, cs_real_t sizej)
 Compute the face porosity depending on the neighbouring cells porosities based on geometry.
static cs_real_t _imm_lgth_cutcell (cs_real_3_t x1, cs_real_3_t x2, cs_real_t t, int num_object)
 Compute by dichotomy the length of the immersed part of a line between two points (i.e. the distance between the point in the solid and the immersed boundary) based on the cut-cell method.
static cs_real_t _imm_lgth_poro (cs_real_3_t x1, cs_real_t por1, cs_real_3_t x2, cs_real_t por2)
 Compute by dichotomy the length of the immersed part of a line between two points (i.e. the distance between the point in the solid and the immersed boundary) based on the input porosities.
static cs_real_t _tetra_vol (cs_real_3_t x1, cs_real_3_t x2, cs_real_3_t x3, cs_real_3_t x4)
 Compute the volume of a tetrahedron described by its vertices (x1,x2,x3,x4).
static cs_real_t _pyram_vol (cs_real_3_t x1, cs_real_3_t x2, cs_real_3_t x3, cs_real_3_t x4, cs_real_3_t x5)
 Compute the volume of a pyramid with a quadrangle base (x1,x2,x3,x4) and apex (x5).
static cs_real_t _prism_vol (cs_real_3_t x1, cs_real_3_t x2, cs_real_3_t x3, cs_real_3_t x4, cs_real_3_t x5, cs_real_3_t x6)
 Compute the volume of a prism with a quadrangle base (x3,x4,x5,x6) and edge (x1 x2).
static void _tetra_vol_poro (cs_real_t *vol, cs_real_3_t cog, cs_real_3_t x1, cs_real_t por1, cs_real_3_t x2, cs_real_t por2, cs_real_3_t x3, cs_real_t por3, cs_real_3_t x4, cs_real_t por4, int icut)
 Compute the volume and center of gravity of a tetrahedron described by its vertices (x1,x2,x3,x4) but truncated due to solid parts identified with porosities, through a recursive approach.
static cs_real_t _tri_surf_trunc (cs_real_3_t x1, cs_real_t por1, cs_real_3_t x2, cs_real_t por2, cs_real_3_t x3, cs_real_t por3, int icut)
 Compute by dichotomy the area of the immersed part of a triangle (x1,x2,x3) based on the input porosities at its vertices through a recursive approach.
static void _tetra_vol_cutcell (cs_real_t *vol, cs_real_3_t x1, cs_real_3_t x2, cs_real_3_t x3, cs_real_3_t x4, cs_real_t t, int icut, int num_object)
 Compute (using bisection) the volume of the immersed part of a tetrahedron described by its vertices (x1,x2,x3,x4) based on the cut-cell method and recursive approach.
static int _penal_glob (const cs_lnum_t c_id, const cs_real_3_t xyz, const cs_real_t t, const int num_object)
 Call to user function to know whether we are in the solid or not.
static void _compute_cell_cut_porosity (const cs_mesh_t *mesh, const cs_mesh_quantities_t *mesh_quantities, int *comp_cell)
 Compute cell porosity using the cut cell method.
static void _compute_cell_cog (const cs_mesh_t *mesh, const cs_mesh_quantities_t *mesh_quantities, cs_real_t *v_poro, cs_real_t *por_init, int *comp_cell)
 Compute cell cog (and cell porosity from porosity at vertices) Cut method into sub-tetras.
static void _compute_b_fac_porosity (const cs_mesh_t *mesh, const cs_mesh_quantities_t *mesh_quantities, cs_real_t *c_poro, cs_real_t *v_poro, cs_real_t *bfpro_poro)
 Compute boundary faces porosity.
static void _compute_i_fac_porosity (const cs_mesh_t *mesh, const cs_mesh_quantities_t *mesh_quantities, cs_real_t *c_poro, cs_real_t *v_poro, cs_real_t *ifpro_poro)
 Compute internal faces porosity.
static void _compute_iso_vol_porosity (const cs_mesh_t *mesh, const cs_mesh_quantities_t *mesh_quantities, cs_real_t *c_poro, int *comp_cell)
 Iso-volume porosity check.
static void _compute_solid_porosity (const cs_mesh_t *mesh, const cs_mesh_quantities_t *mesh_quantities, cs_real_t *c_poro, int *comp_cell)
 Take into account internal solid porosity.
static void _compute_cell_list_porosity (const cs_mesh_t *mesh, const cs_mesh_quantities_t *mesh_quantities, cs_lnum_t *comp_cell)
 Compute list of cells for porosity computing.
static void _compute_solid_surface_vector (const cs_mesh_t *mesh, const cs_mesh_quantities_t *mesh_quantities, cs_real_t *i_poro, cs_real_t *b_poro)
 Compute porosity solid surface.
static void _compute_solid_surface_cog (const cs_mesh_t *mesh, const cs_mesh_quantities_t *mesh_quantities, cs_real_t *c_poro, cs_real_t *v_poro, cs_real_t *i_poro, cs_real_t *b_poro)
 Compute porosity solid surface cog (dist and ponderation coeff)
static cs_ibm_object_t_create_ibm_object (const char *name, cs_ibm_algo_type_t method)
 Create a new immersed boundary object with a given name and method.
static int _add_ibm_object (const char *name, cs_ibm_algo_type_t method)
 Adds a new immersed boundary object with a given name and method.
static void _free_ibm_object (cs_ibm_object_t *obj)
 Free a cs_ibm_object_t structure.
static void _ibm_object_define_property_def (cs_ibm_object_t *obj, cs_ibm_object_property_type_t ppty_id, int n_vals, cs_real_t *vals)
 Define a new property definition for an object.
static void _ibm_object_define_initial_val_def (cs_ibm_object_t *obj, cs_ibm_object_init_param_t p_id, int n_vals, cs_real_t *vals)
 Set initial value xdef for an object.
static cs_real_t _get_xdef_val_at_object_elt (const cs_xdef_t *def, const int elt_id)
 Get xdef value at object element.
cs_ibm_object_tcs_ibm_object_by_id (int obj_id)
 Get an object based on its id.
cs_ibm_object_tcs_ibm_object_by_name_try (const char *name)
 Try to get an object based on its name. Returns null if not found.
cs_ibm_object_tcs_ibm_object_by_name (const char *name)
 Get an object based on its name. Error if not found.
cs_ibm_tcs_ibm_create (void)
void cs_ibm_finalize (void)
void cs_immersed_boundaries (const cs_mesh_t *mesh, const cs_mesh_quantities_t *mesh_quantities)
 Define immersed boundaries in time and space (solid(s) interior part).
int cs_ibm_object_compute_cut_porosity (const cs_lnum_t c_id, const cs_real_3_t xyz, const cs_real_t t, const int num_object)
 Check if a point is solid or fluid based on the cut-cell method.
void cs_ibm_add_object_from_file (const char *name, cs_ibm_algo_type_t method, const char *file_name, bool solve_fsi)
 Define an object from a file using STL or MED formats.
void cs_ibm_add_object_from_func (const char *name, cs_cutcell_func_t *cutcell_func, bool solve_fsi, int n_nodes)
 Define an object from a function used in the cutcell algorithm.
void cs_ibm_stl_define_ext_points (const char *name, const int n_pts, cs_real_t *pts_coords)
 Define exterior points for an stl object.
void cs_ibm_object_rotate (const char *name, cs_real_t angle, cs_real_t axis[3], cs_real_t center[3])
 Rotate an object based on the STL or MED algorithms.
void cs_ibm_object_set_property_const (cs_ibm_object_t *obj, cs_ibm_object_property_type_t ppty_id, cs_real_t val)
 Define a new constant property definition for an object.
void cs_ibm_object_translate (const char *name, cs_real_t vector[3])
 Translate an object based on the STL or MED algorithms.
void cs_ibm_object_scale (const char *name, cs_real_t factor)
 Scale an object based on a factor.
void cs_ibm_user_parameters (void)
 Apply user parameters.
void cs_ibm_init_writer (void)
 Init writers for STL or MED objects.
void cs_ibm_object_transform_from_init (cs_ibm_object_t *obj, cs_real_34_t matrix)
 Transform an object from its initial state using a transformation matrix.
void cs_ibm_object_compute_intersect_vol (cs_ibm_object_t *obj, const cs_mesh_t *m, const cs_real_t *cell_vol, cs_real_t *obj_frac_tot, int *indic)
 Compute the volume fraction of an object over all cells.
void cs_ibm_volumic_zone (const cs_mesh_quantities_t *mesh_quantities)
 Define space immersed boundaries on a set of zones defined by the user in the GUI.

Variables

static cs_porosity_ibm_opt_t _porosity_ibm_opt
cs_porosity_ibm_opt_tcs_glob_porosity_ibm_opt = &(_porosity_ibm_opt)
cs_ibm_tcs_ibm = nullptr
const char * _ibm_algo_names []
const char * _ibm_obj_property_names []
const char * _ibm_obj_init_vals_names []

Detailed Description

Define immersed boundaries based on user inputs (experimental). Cloud of points are dealt with porosity from scan files.

Function Documentation

◆ _add_ibm_object()

int _add_ibm_object ( const char * name,
cs_ibm_algo_type_t method )
static

Adds a new immersed boundary object with a given name and method.

Parameters
[in]namename of the new object
[in]methodmethod used to compute the object porosity
Returns
id of the new object (int)

◆ _compute_b_fac_porosity()

void _compute_b_fac_porosity ( const cs_mesh_t * mesh,
const cs_mesh_quantities_t * mesh_quantities,
cs_real_t * c_poro,
cs_real_t * v_poro,
cs_real_t * bfpro_poro )
static

Compute boundary faces porosity.

Parameters
[in]meshpointer to associated mesh structure
[in]mesh_quantitiespointer to associated mesh quantities
[in]c_porocell porosity
[in]v_porovertex porosity
[out]bfpro_poroboundary face porosity

◆ _compute_cell_cog()

void _compute_cell_cog ( const cs_mesh_t * mesh,
const cs_mesh_quantities_t * mesh_quantities,
cs_real_t * v_poro,
cs_real_t * por_init,
int * comp_cell )
static

Compute cell cog (and cell porosity from porosity at vertices) Cut method into sub-tetras.

Parameters
[in]meshpointer to associated mesh structure
[in]mesh_quantitiespointer to associated mesh quantities
[in]por_vtxvertex porosity
[in]por_initinitialization porosity
[in]comp_celllist of cells to recompute porosity

◆ _compute_cell_cut_porosity()

void _compute_cell_cut_porosity ( const cs_mesh_t * mesh,
const cs_mesh_quantities_t * mesh_quantities,
int * comp_cell )
static

Compute cell porosity using the cut cell method.

Parameters
[in]meshpointer to associated mesh structure
[in]mesh_quantitiespointer to associated mesh quantities
[in]comp_celllist of cells to recompute porosity

◆ _compute_cell_list_porosity()

void _compute_cell_list_porosity ( const cs_mesh_t * mesh,
const cs_mesh_quantities_t * mesh_quantities,
cs_lnum_t * comp_cell )
static

Compute list of cells for porosity computing.

Parameters
[in]meshpointer to associated mesh structure
[in]mesh_quantitiespointer to associated mesh quantities
[out]comp_celllist of cells to recompute porosity

◆ _compute_i_fac_porosity()

void _compute_i_fac_porosity ( const cs_mesh_t * mesh,
const cs_mesh_quantities_t * mesh_quantities,
cs_real_t * c_poro,
cs_real_t * v_poro,
cs_real_t * ifpro_poro )
static

Compute internal faces porosity.

Parameters
[in]meshpointer to associated mesh structure
[in]mesh_quantitiespointer to associated mesh quantities
[in]c_porocell porosity
[in]v_porovertex porosity
[out]ifpro_porointernal face porosity

◆ _compute_iso_vol_porosity()

void _compute_iso_vol_porosity ( const cs_mesh_t * mesh,
const cs_mesh_quantities_t * mesh_quantities,
cs_real_t * c_poro,
int * comp_cell )
static

Iso-volume porosity check.

Parameters
[in]meshpointer to associated mesh structure
[in]mesh_quantitiespointer to associated mesh quantities
[in]c_porocell porosity
[in]comp_celllist of cells to recompute porosity

◆ _compute_solid_porosity()

void _compute_solid_porosity ( const cs_mesh_t * mesh,
const cs_mesh_quantities_t * mesh_quantities,
cs_real_t * c_poro,
int * comp_cell )
static

Take into account internal solid porosity.

Parameters
[in]meshpointer to associated mesh structure
[in]mesh_quantitiespointer to associated mesh quantities
[in]c_porocell porosity
[in]comp_celllist of cells to recompute porosity

◆ _compute_solid_surface_cog()

void _compute_solid_surface_cog ( const cs_mesh_t * mesh,
const cs_mesh_quantities_t * mesh_quantities,
cs_real_t * c_poro,
cs_real_t * v_poro,
cs_real_t * i_poro,
cs_real_t * b_poro )
static

Compute porosity solid surface cog (dist and ponderation coeff)

Parameters
[in]meshpointer to associated mesh structure
[in]mesh_quantitiespointer to associated mesh quantities
[in]c_porocell porosity
[in]v_porovertex porosity
[in]i_porointernal face porosity
[in]b_poroboundary face porosity

◆ _compute_solid_surface_vector()

void _compute_solid_surface_vector ( const cs_mesh_t * mesh,
const cs_mesh_quantities_t * mesh_quantities,
cs_real_t * i_poro,
cs_real_t * b_poro )
static

Compute porosity solid surface.

Parameters
[in]meshpointer to associated mesh structure
[in]mesh_quantitiespointer to associated mesh quantities
[in]i_porointernal face porosity
[in]b_poroboundary face porosity

◆ _create_ibm_object()

cs_ibm_object_t * _create_ibm_object ( const char * name,
cs_ibm_algo_type_t method )
static

Create a new immersed boundary object with a given name and method.

Parameters
[in]namename of the new object
[in]methodmethod used to compute the object porosity
Returns
pointer to new object structure

◆ _free_ibm_object()

void _free_ibm_object ( cs_ibm_object_t * obj)
static

Free a cs_ibm_object_t structure.

Parameters
[in]objpointer to structure to free

◆ _geom_face_fraction()

cs_real_t _geom_face_fraction ( cs_real_t alphai,
cs_real_t alphaj,
cs_real_t sizei,
cs_real_t sizej )
static

Compute the face porosity depending on the neighbouring cells porosities based on geometry.

Parameters
[in]alphaivalue at neighbouring cell i
[in]alphajvalue at neighbouring cell j
[in]sizeidistance face - center of gravity cell i
[in]sizejdistance face - center of gravity cell j

◆ _get_xdef_val_at_object_elt()

cs_real_t _get_xdef_val_at_object_elt ( const cs_xdef_t * def,
const int elt_id )
inlinestatic

Get xdef value at object element.

Parameters
[in]defPointer to cs_xdef_t definition
[in]elt_idElement id (int)

◆ _ibm_object_define_initial_val_def()

void _ibm_object_define_initial_val_def ( cs_ibm_object_t * obj,
cs_ibm_object_init_param_t p_id,
int n_vals,
cs_real_t * vals )
static

Set initial value xdef for an object.

Parameters
[in]objPointer to object
[in]p_idProperty id (enum)
[in]n_valsNumber of values (array size)
[in]valsValues array (size n_vals)

◆ _ibm_object_define_property_def()

void _ibm_object_define_property_def ( cs_ibm_object_t * obj,
cs_ibm_object_property_type_t ppty_id,
int n_vals,
cs_real_t * vals )
static

Define a new property definition for an object.

Parameters
[in]objpointer to object
[in]ppty_idproperty id (si enum for list)
[in]n_valsnumber of values (array size)
[in]valsarray of values

◆ _imm_lgth_cutcell()

cs_real_t _imm_lgth_cutcell ( cs_real_3_t x1,
cs_real_3_t x2,
cs_real_t t,
int num_object )
static

Compute by dichotomy the length of the immersed part of a line between two points (i.e. the distance between the point in the solid and the immersed boundary) based on the cut-cell method.

Parameters
[in]x1point 1
[in]x2point 2
[in]ttime value for the current time step
[in]num_objectnum of fsi object (if fsi activated)

◆ _imm_lgth_poro()

cs_real_t _imm_lgth_poro ( cs_real_3_t x1,
cs_real_t por1,
cs_real_3_t x2,
cs_real_t por2 )
inlinestatic

Compute by dichotomy the length of the immersed part of a line between two points (i.e. the distance between the point in the solid and the immersed boundary) based on the input porosities.

Parameters
[in]x1point 1
[in]por1porosity at 1
[in]x2point 2
[in]por2porosity at 2

◆ _penal_glob()

int _penal_glob ( const cs_lnum_t c_id,
const cs_real_3_t xyz,
const cs_real_t t,
const int num_object )
static

Call to user function to know whether we are in the solid or not.

Parameters
[in]c_idlocal cell number
[in]xyzx, y, z coordinates of the current position
[in]ttime value for the current time step
[in]num_objectnum of fsi object (if fsi activated)

◆ _prism_vol()

cs_real_t _prism_vol ( cs_real_3_t x1,
cs_real_3_t x2,
cs_real_3_t x3,
cs_real_3_t x4,
cs_real_3_t x5,
cs_real_3_t x6 )
static

Compute the volume of a prism with a quadrangle base (x3,x4,x5,x6) and edge (x1 x2).

Parameters
[in]x1point 1
[in]x2point 2
[in]x3point 3
[in]x4point 4
[in]x5point 5
[in]x6point 6

◆ _pyram_vol()

cs_real_t _pyram_vol ( cs_real_3_t x1,
cs_real_3_t x2,
cs_real_3_t x3,
cs_real_3_t x4,
cs_real_3_t x5 )
static

Compute the volume of a pyramid with a quadrangle base (x1,x2,x3,x4) and apex (x5).

Parameters
[in]x1point 1
[in]x2point 2
[in]x3point 3
[in]x4point 4
[in]x5point 5 (apex)

◆ _tetra_vol()

cs_real_t _tetra_vol ( cs_real_3_t x1,
cs_real_3_t x2,
cs_real_3_t x3,
cs_real_3_t x4 )
inlinestatic

Compute the volume of a tetrahedron described by its vertices (x1,x2,x3,x4).

Parameters
[in]x1point 1
[in]x2point 2
[in]x3point 3
[in]x4point 4

◆ _tetra_vol_cutcell()

void _tetra_vol_cutcell ( cs_real_t * vol,
cs_real_3_t x1,
cs_real_3_t x2,
cs_real_3_t x3,
cs_real_3_t x4,
cs_real_t t,
int icut,
int num_object )
static

Compute (using bisection) the volume of the immersed part of a tetrahedron described by its vertices (x1,x2,x3,x4) based on the cut-cell method and recursive approach.

Parameters
[out]volvolume
[in]x1point 1
[in]x2point 2
[in]x3point 3
[in]x4point 4
[in]ttime value for the current time step
[in]icutnumber of bisections
[in]num_objectnum of fsi object (if fsi activated)

◆ _tetra_vol_poro()

void _tetra_vol_poro ( cs_real_t * vol,
cs_real_3_t cog,
cs_real_3_t x1,
cs_real_t por1,
cs_real_3_t x2,
cs_real_t por2,
cs_real_3_t x3,
cs_real_t por3,
cs_real_3_t x4,
cs_real_t por4,
int icut )
static

Compute the volume and center of gravity of a tetrahedron described by its vertices (x1,x2,x3,x4) but truncated due to solid parts identified with porosities, through a recursive approach.

Parameters
[out]volvolume
[out]cogcenter of gravity
[in]x1point 1
[in]por1porosity at point 1
[in]x2point 2
[in]por2porosity at point 2
[in]x3point 3
[in]por3porosity at point 3
[in]x4point 4
[in]por4porosity at point 4
[in]icutnumber of sub-cut for cells in cut-cells algorithm

◆ _tri_surf_trunc()

cs_real_t _tri_surf_trunc ( cs_real_3_t x1,
cs_real_t por1,
cs_real_3_t x2,
cs_real_t por2,
cs_real_3_t x3,
cs_real_t por3,
int icut )
static

Compute by dichotomy the area of the immersed part of a triangle (x1,x2,x3) based on the input porosities at its vertices through a recursive approach.

Parameters
[in]x1point 1
[in]por1porosity at 1
[in]x2point 2
[in]por2porosity at 2
[in]x3point 3
[in]por3porosity at 3
[in]icutnumber of sub-cut for cells in cut-cells algorithm

◆ cs_ibm_add_object_from_file()

void cs_ibm_add_object_from_file ( const char * name,
cs_ibm_algo_type_t method,
const char * file_name,
bool solve_fsi )

Define an object from a file using STL or MED formats.

Parameters
[in]namename of the object
[in]methodPorosity computation method
[in]file_namefile name
[in]solve_fsiIs the object used in the FSI resolution ? (currently ignored)

◆ cs_ibm_add_object_from_func()

void cs_ibm_add_object_from_func ( const char * name,
cs_cutcell_func_t * cutcell_func,
bool solve_fsi,
int n_nodes )

Define an object from a function used in the cutcell algorithm.

Parameters
[in]namename of the object
[in]cutcell_funcpointer to the cutcell function of the object
[in]solve_fsiIs the object used in the FSI resolution ? (currently ignored)
[in]n_nodesNumber of nodes if the object is deformable (currently ignored)

◆ cs_ibm_create()

cs_ibm_t * cs_ibm_create ( void )

◆ cs_ibm_finalize()

void cs_ibm_finalize ( void )

◆ cs_ibm_init_writer()

void cs_ibm_init_writer ( void )

Init writers for STL or MED objects.

◆ cs_ibm_object_by_id()

cs_ibm_object_t * cs_ibm_object_by_id ( int obj_id)

Get an object based on its id.

Parameters
[in]obj_idid of the object
Returns
pointer to object structure.

◆ cs_ibm_object_by_name()

cs_ibm_object_t * cs_ibm_object_by_name ( const char * name)

Get an object based on its name. Error if not found.

Parameters
[in]namename of the object to get
Returns
pointer to object structure, null if not found

◆ cs_ibm_object_by_name_try()

cs_ibm_object_t * cs_ibm_object_by_name_try ( const char * name)

Try to get an object based on its name. Returns null if not found.

Try to get an object based on its name. Returns NULL if not found.

Get an object based on its name.

Parameters
[in]namename of the object to get
Returns
pointer to object structure, null if not found
Parameters
[in]namename of the object to get
Returns
pointer to object structure.

◆ cs_ibm_object_compute_cut_porosity()

int cs_ibm_object_compute_cut_porosity ( const cs_lnum_t c_id,
const cs_real_3_t xyz,
const cs_real_t t,
const int num_object )

Check if a point is solid or fluid based on the cut-cell method.

Parameters
[in]c_idlocal cell number
[in]xyzx, y, z coordinates of the current position
[in]ttime value for the current time step
[in]num_objectnum of fsi object (if fsi activated)

◆ cs_ibm_object_compute_intersect_vol()

void cs_ibm_object_compute_intersect_vol ( cs_ibm_object_t * obj,
const cs_mesh_t * m,
const cs_real_t * cell_vol,
cs_real_t * obj_frac_tot,
int * indic )

Compute the volume fraction of an object over all cells.

Parameters
[in]objpointer to object structure
[in]mpointer to mesh structure
[in]cell_volpointer to cell volume array
[out]obj_frac_totarray containing the total vol fraction of solids
[in]indicindicator array (currently ignored)

◆ cs_ibm_object_rotate()

void cs_ibm_object_rotate ( const char * name,
cs_real_t angle,
cs_real_t axis[3],
cs_real_t center[3] )

Rotate an object based on the STL or MED algorithms.

Parameters
[in]namename of the object
[in]angleangle of rotation
[in]axisaxis of rotation
[in]centercenter of rotation

◆ cs_ibm_object_scale()

void cs_ibm_object_scale ( const char * name,
cs_real_t factor )

Scale an object based on a factor.

Parameters
[in]namename of the object
[in]factorscaling factor

◆ cs_ibm_object_set_property_const()

void cs_ibm_object_set_property_const ( cs_ibm_object_t * obj,
cs_ibm_object_property_type_t ppty_id,
cs_real_t val )

Define a new constant property definition for an object.

Parameters
[in]objpointer to object
[in]ppty_idproperty id (si enum for list)
[in]valproperty constant value

◆ cs_ibm_object_transform_from_init()

void cs_ibm_object_transform_from_init ( cs_ibm_object_t * obj,
cs_real_34_t matrix )

Transform an object from its initial state using a transformation matrix.

Parameters
[in]objpointer to object structure
[in]matrixtransformation matrix

◆ cs_ibm_object_translate()

void cs_ibm_object_translate ( const char * name,
cs_real_t vector[3] )

Translate an object based on the STL or MED algorithms.

Parameters
[in]namename of the object
[in]vectortranslation vector

◆ cs_ibm_stl_define_ext_points()

void cs_ibm_stl_define_ext_points ( const char * name,
const int n_pts,
cs_real_t * pts_coords )

Define exterior points for an stl object.

Define exterior points for an STL object.

Parameters
[in]namename of the object
[in]n_ptsnumber of points
[in]pts_coordscoordinates of the points

◆ cs_ibm_user_parameters()

void cs_ibm_user_parameters ( void )

Apply user parameters.

◆ cs_ibm_volumic_zone()

void cs_ibm_volumic_zone ( const cs_mesh_quantities_t * mesh_quantities)

Define space immersed boundaries on a set of zones defined by the user in the GUI.

Parameters
[in]mesh_quantitiespointer to associated mesh quantities structure

◆ cs_immersed_boundaries()

void cs_immersed_boundaries ( const cs_mesh_t * mesh,
const cs_mesh_quantities_t * mesh_quantities )

Define immersed boundaries in time and space (solid(s) interior part).

This function is called several times during each time step.

Ipenal: 1 means only solid and 0 only fluid.

Warning, porosity values have to be 0 or 1.

The solid(s) velocities and porosity are prescirbed within the user function (cs_user_ibm).

Parameters
[in]meshpointer to associated mesh structure
[in]mesh_quantitiespointer to associated mesh quantities

Variable Documentation

◆ _ibm_algo_names

const char* _ibm_algo_names[]
Initial value:
= {"CS_IBM_ALGO_NONE",
"CS_IBM_ALGO_CUT_CELLS",
"CS_IBM_ALGO_MEDCOUPLING",
"CS_IBM_ALGO_STL"}

◆ _ibm_obj_init_vals_names

const char* _ibm_obj_init_vals_names[]
Initial value:
= {"Equilibrium Center of gravity",
"Center of gravity",
"Angle",
"Velocity",
"Acceleration",
"Angular velocity",
"Fluid force"}

◆ _ibm_obj_property_names

const char* _ibm_obj_property_names[]
Initial value:
= {"density",
"mass",
"inertia matrix",
"cp",
"lambda",
"stiffness",
"damping",
"Young module",
"Inertia momentum",
"cross section",
"rayleigh_coeff_a",
"rayleigh_coeff_b"}

◆ _porosity_ibm_opt

cs_porosity_ibm_opt_t _porosity_ibm_opt
static
Initial value:
= {
.porosity_mode = 0
}

◆ cs_glob_porosity_ibm_opt

cs_porosity_ibm_opt_t* cs_glob_porosity_ibm_opt = &(_porosity_ibm_opt)

◆ cs_ibm

cs_ibm_t* cs_ibm = nullptr