Blob Class Reference

#include <Blob.h>

Public Member Functions

 Blob ()
 
 ~Blob ()
 
int config (const int blob_index, const int conformation_index, string node_filename, string topology_filename, string surface_filename, string material_params_filename, string stokes_filename, string ssint_filename, string pin_filename, string binding_filename, string beads_filename, scalar scale, scalar calc_compress, scalar compress, int linear_solver, int blob_state, SimulationParams *params, PreComp_params *pc_params, SSINT_matrix *ssint_matrix, BindingSite_matrix *binding_matrix, RngStream rng[])
 
int init ()
 
int update_internal_forces ()
 
int check_inversion ()
 
int update_positions ()
 
int reset_solver ()
 
void translate_linear (vector3 *vec)
 
void rotate (float r11, float r12, float r13, float r21, float r22, float r23, float r31, float r32, float r33, bool beads=false)
 
void rotate (float xang, float yang, float zang, bool beads=false)
 
vector3 position (scalar x, scalar y, scalar z)
 
void position_beads (scalar x, scalar y, scalar z)
 
int forget_beads ()
 num_beads = 0; delete bead_type; delete bead_position. More...
 
void add_steric_nodes ()
 
void move (scalar dx, scalar dy, scalar dz)
 
void get_CoM (vector3 *com)
 
void get_centroid (vector3 *com)
 
void calc_and_store_centroid (vector3 &com)
 
vector3 calc_centroid ()
 
void set_pos_0 ()
 
void kinetically_set_faces (bool state)
 
int create_viewer_node_file (const char *node_filename, scalar scale)
 
void write_nodes_to_file (FILE *trajectory_out)
 
void pre_print ()
 
void write_pre_print_to_file (FILE *trajectory_out)
 
int read_nodes_from_file (FILE *trajectory_out)
 
void make_measurements ()
 
void write_measurements_to_file (FILE *fout)
 
int calculate_deformation ()
 
scalar calc_volume ()
 
void make_stress_measurements (FILE *stress_out, int blob_number)
 
void calc_centroids_and_normals_of_all_faces ()
 
void calc_all_centroids ()
 
int get_num_faces ()
 
Faceget_face (int i)
 
Faceabsolutely_get_face (int i)
 
tetra_element_linearget_element (int i)
 
void get_bead_position (int i, arr3 &v)
 returns the position of bead i. More...
 
int * get_bead_type_ptr ()
 returns the bead_type pointer. More...
 
int get_bead_type (int i)
 returns the bead_type of bead i. More...
 
vector< int > get_bead_assignment (int i)
 returns the list of nodes where bead i should be assigned to. More...
 
scalar get_ssint_area ()
 
int solve_poisson (scalar *phi_gamma_IN, scalar *J_Gamma_OUT)
 
int apply_ctforces ()
 
void zero_force ()
 
void set_forces_to_zero ()
 
void get_node (int index, arr3 &v)
 
void get_node_0 (int index, arr3 &v)
 
void copy_node_positions (vector3 *nodes)
 
vector3 ** get_actual_node_positions ()
 
void set_node_positions (vector3 *node_pos)
 
void add_force_to_node (vector3 f, int index)
 
void velocity_all (scalar vel_x, scalar vel_y, scalar vel_z)
 
void build_poisson_matrices ()
 
int build_linear_node_viscosity_matrix (Eigen::SparseMatrix< scalar > *K)
 
int build_linear_node_rp_diffusion_matrix (Eigen_MatrixX *D)
 
int build_linear_node_elasticity_matrix (Eigen::SparseMatrix< scalar > *A)
 
int build_linear_node_mass_matrix (Eigen::SparseMatrix< scalar > *M)
 
scalar get_mass ()
 
void enforce_box_boundaries (vector3 *box_dim)
 
void linearise_elements ()
 
void linearise_force ()
 
void compress_blob (scalar compress)
 
int get_num_nodes ()
 
int get_num_elements ()
 
int get_motion_state ()
 
scalar get_scale ()
 
scalar get_RandU01 ()
 
int get_num_linear_nodes ()
 
int get_num_beads ()
 
bool is_using_beads ()
 
scalar get_rmsd ()
 
int get_linear_solver ()
 
void get_stored_centroid (arr3 &cog)
 
int get_conformation_index ()
 
int get_previous_conformation_index ()
 
void set_previous_conformation_index (int index)
 
int get_state_index ()
 
void set_state_index (int index)
 
int get_previous_state_index ()
 
void set_previous_state_index (int index)
 
BindingSiteget_binding_site (int index)
 
scalar calculate_strain_energy ()
 
void get_min_max (vector3 *blob_min, vector3 *blob_max)
 
void pin_binding_site (set< int > node_indices)
 
void unpin_binding_site (set< int > node_indices)
 
void print_node_positions ()
 
void print_bead_positions ()
 
bool there_is_mass ()
 
void set_springs_on_blob (bool state)
 
bool there_are_springs ()
 
bool there_are_beads ()
 
bool there_is_ssint ()
 
scalar get_kinetic_energy ()
 
scalar get_strain_energy ()
 

Data Fields

int toBePrinted_conf [2]
 
int toBePrinted_state [2]
 
int blob_index
 
int conformation_index
 
int previous_conformation_index
 
int state_index
 
int previous_state_index
 
int num_binding_sites
 
BindingSitebinding_site
 
int pbc_count [3]
 

Private Member Functions

int load_nodes (const char *node_filename, scalar scale)
 
int load_topology (const char *topology_filename)
 
int load_surface (const char *surface_filename, SimulationParams *params)
 
int load_surface_no_topology (const char *surface_filename, SimulationParams *params)
 
int load_material_params (const char *material_params_filename)
 
int load_stokes_params (const char *stokes_filename, scalar scale)
 
int load_ssint (const char *ssint_filename, int num_ssint_face_types, string ssint_method)
 
int load_beads (const char *beads_filename, PreComp_params *pc_params, scalar scale)
 Read the beads_filename, loading beads position and types. More...
 
int load_ctforces (string ctforces_fname)
 
int load_binding_sites ()
 
int load_pinned_nodes (const char *pin_filename)
 
int create_pinned_nodes (set< int > list)
 
void calc_rest_state_info ()
 
int aggregate_forces_and_solve ()
 
void euler_integrate ()
 
int calculate_node_element_connectivity ()
 
int build_mass_matrix ()
 

Private Attributes

int num_nodes
 
int num_elements
 
int num_surface_elements
 
int num_interior_elements
 
int num_surface_faces
 
int num_surface_nodes
 
int num_interior_nodes
 
int num_pinned_nodes
 
int num_beads
 
int num_l_ctf
 
int num_r_ctf
 
int num_sltotal_ctf
 
int num_slsets_ctf
 number of surface sets, corresponding to the length of the ctf_sl_forces, num_slsurf_ctf array More...
 
int * ctf_slsurf_ndx
 
int blob_state
 
scalar mass
 
scalar ssint_bb_energy
 
mesh_nodenode
 
vector3 ** node_position
 
tetra_element_linearelem
 
Facesurface
 
int * pinned_nodes_list
 
set< int > bsite_pinned_nodes_list
 
scalarbead_position
 
vector< vector< int > > bead_assignment
 
int * bead_type
 
int * ctf_l_nodes
 
int * ctf_r_nodes
 
int * ctf_sl_faces
 
int * ctf_sl_surfsize
 
scalarctf_l_forces
 
scalarctf_r_forces
 
scalarctf_r_axis
 
char * ctf_r_type
 
scalarctf_sl_forces
 
string s_node_filename
 
string s_topology_filename
 
string s_surface_filename
 
string s_material_params_filename
 
string s_stokes_filename
 
string s_ssint_filename
 
string s_pin_filename
 
string s_binding_filename
 
string s_beads_filename
 
scalar scale
 
scalar calc_compress
 
scalar compress
 
SimulationParamsparams
 
PreComp_paramspc_params
 
BindingSite_matrixbinding_matrix
 
SSINT_matrixssint_matrix
 
Solversolver
 
int linear_solver
 
bool mass_in_blob
 
bool springs_on_blob
 
bool ssint_on_blob
 
bool beads_on_blob
 
vector3force
 
RngStreamrng
 
vector3 L
 
CG_solverpoisson_solver
 
SparseMatrixFixedPatternpoisson_surface_matrix
 
SparseMatrixFixedPatternpoisson_interior_matrix
 
scalarphi_Omega
 
scalarphi_Gamma
 
scalarq
 
scalarnodal_q
 
scalarpoisson_rhs
 
int * num_contributing_faces
 
connectivity_entryelement_connectivity_table
 
SparseMatrixFixedPatternM
 
scalartoBePrinted_nodes
 
scalar kineticenergy
 
scalar strainenergy
 
vector3 CoM
 
vector3 CoG
 
vector3 CoM_0
 
vector3 CoG_0
 
scalar rmsd
 

Constructor & Destructor Documentation

◆ Blob()

Blob::Blob ( )

Blob constructor: Initialises all variables and pointers to 0 (or NULL). Does not perform any memory allocation. Actual Blob initialisation is carried out by the init() method.

◆ ~Blob()

Blob::~Blob ( )

Blob destructor: Closes all open files, deallocates memory held by arrays, solvers etc. and sets everything to zero (NULL)

Member Function Documentation

◆ absolutely_get_face()

Face * Blob::absolutely_get_face ( int  i)

◆ add_force_to_node()

void Blob::add_force_to_node ( vector3  f,
int  index 
)

◆ add_steric_nodes()

void Blob::add_steric_nodes ( )

Add nodes to the face objects if and only if this blob is STATIC

Referenced by World::read_and_build_system().

◆ aggregate_forces_and_solve()

int Blob::aggregate_forces_and_solve ( )
private

Referenced by update_positions().

◆ apply_ctforces()

int Blob::apply_ctforces ( )

Apply the constant forces onto the corresponding nodes;

Referenced by update_internal_forces().

◆ build_linear_node_elasticity_matrix()

int Blob::build_linear_node_elasticity_matrix ( Eigen::SparseMatrix< scalar > *  A)

Linearises the elasticity vector and build a global elasticity matrix for this blob

◆ build_linear_node_mass_matrix()

int Blob::build_linear_node_mass_matrix ( Eigen::SparseMatrix< scalar > *  M)

Build the mass distribution matrix for this blob

◆ build_linear_node_rp_diffusion_matrix()

int Blob::build_linear_node_rp_diffusion_matrix ( Eigen_MatrixX D)

Builds a global diffusion matrix for this blob based on the work of Rotne and Prager (1969)

◆ build_linear_node_viscosity_matrix()

int Blob::build_linear_node_viscosity_matrix ( Eigen::SparseMatrix< scalar > *  K)

Builds a global viscosity matrix for this blob

◆ build_mass_matrix()

int Blob::build_mass_matrix ( )
private

Referenced by init().

◆ build_poisson_matrices()

void Blob::build_poisson_matrices ( )

Constructs the Poisson matrix for this Blob.

Referenced by World::do_es().

◆ calc_all_centroids()

void Blob::calc_all_centroids ( )

Get the centroid of all faces and elements in the blob

Referenced by World::init().

◆ calc_and_store_centroid()

void Blob::calc_and_store_centroid ( vector3 com)

Referenced by World::run().

◆ calc_centroid()

vector3 Blob::calc_centroid ( )

◆ calc_centroids_and_normals_of_all_faces()

void Blob::calc_centroids_and_normals_of_all_faces ( )

Get the centroid of all faces on the blob surface

Referenced by World::run().

◆ calc_rest_state_info()

void Blob::calc_rest_state_info ( )
private

Calculate some quantities such as the rest jacobian, rest volume etc.

Referenced by init().

◆ calc_volume()

scalar Blob::calc_volume ( )

◆ calculate_deformation()

int Blob::calculate_deformation ( )

Calculates the current jacobian and elasticity properties of the structure

Referenced by calculate_strain_energy().

◆ calculate_node_element_connectivity()

int Blob::calculate_node_element_connectivity ( )
private

Referenced by init().

◆ calculate_strain_energy()

scalar Blob::calculate_strain_energy ( )

◆ check_inversion()

int Blob::check_inversion ( )

Checks whether any of the elements have inverted or not

Referenced by World::change_kinetic_state().

◆ compress_blob()

void Blob::compress_blob ( scalar  compress)

compresses blob by compression factor specified in input script

Referenced by init().

◆ config()

int Blob::config ( const int  blob_index,
const int  conformation_index,
string  node_filename,
string  topology_filename,
string  surface_filename,
string  material_params_filename,
string  stokes_filename,
string  ssint_filename,
string  pin_filename,
string  binding_filename,
string  beads_filename,
scalar  scale,
scalar  calc_compress,
scalar  compress,
int  linear_solver,
int  blob_state,
SimulationParams params,
PreComp_params pc_params,
SSINT_matrix ssint_matrix,
BindingSite_matrix binding_matrix,
RngStream  rng[] 
)

Allocates the node, element and embedded charge arrays, initialised with the data read from the given node, element and embedded charge files. 'linear_solver' sets which type of linear solver is to be used: 0 for direct (forward/backward substitution) and 1 for iterative (preconditioned gonjugate gradient). Also takes the simulation parameters and the array of RNGs (for multiprocessor runs).

◆ copy_node_positions()

void Blob::copy_node_positions ( vector3 nodes)

◆ create_pinned_nodes()

int Blob::create_pinned_nodes ( set< int >  list)
private

Creates a new pinned nodes list from a given set

◆ create_viewer_node_file()

int Blob::create_viewer_node_file ( const char *  node_filename,
scalar  scale 
)

Writes a new node file for the case of an initially translated STATIC blob, so viewer doesn't read straight from node file

◆ enforce_box_boundaries()

void Blob::enforce_box_boundaries ( vector3 box_dim)

Applies the WALL_TYPE_HARD boundary conditions simply by finding all nodes that have "passed through" the wall, then zeroing any component of those nodes' velocities that points into the wall. This allows the Blob to "wobble" its way back out of the wall (and effectively prevents any penetration larger than dt * largest velocity, generally very small for sensible dt).

Referenced by World::run().

◆ euler_integrate()

void Blob::euler_integrate ( )
private

Referenced by update_positions().

◆ get_actual_node_positions()

vector3 ** Blob::get_actual_node_positions ( )

◆ get_binding_site()

BindingSite * Blob::get_binding_site ( int  index)

◆ get_centroid()

void Blob::get_centroid ( vector3 com)

Calculates and returns the centroid of this Blob

Referenced by calc_and_store_centroid(), compress_blob(), World::get_system_centroid(), and rotate().

◆ get_CoM()

void Blob::get_CoM ( vector3 com)

Calculates and returns the centre of mass of this Blob

Referenced by World::get_system_CoM(), and make_measurements().

◆ get_conformation_index()

int Blob::get_conformation_index ( )

◆ get_element()

tetra_element_linear * Blob::get_element ( int  i)

Return pointer to the ith Element of this Blob's surface

Referenced by rod::Rod_blob_interface::get_element_id(), PreComp_solver::init(), and rod::Rod_blob_interface::Rod_blob_interface().

◆ get_face()

Face * Blob::get_face ( int  i)

Return pointer to the ith Face of this Blob's surface

Referenced by World::init().

◆ get_kinetic_energy()

scalar Blob::get_kinetic_energy ( )

◆ get_linear_solver()

int Blob::get_linear_solver ( )

◆ get_mass()

scalar Blob::get_mass ( )

Returns the total mass of this Blob.

Referenced by World::get_system_CoM().

◆ get_min_max()

void Blob::get_min_max ( vector3 blob_min,
vector3 blob_max 
)

◆ get_motion_state()

int Blob::get_motion_state ( )

◆ get_node()

◆ get_node_0()

void Blob::get_node_0 ( int  index,
arr3 v 
)

◆ get_num_beads()

int Blob::get_num_beads ( )

Referenced by PreComp_solver::init().

◆ get_num_elements()

int Blob::get_num_elements ( )

◆ get_num_faces()

int Blob::get_num_faces ( )

◆ get_num_linear_nodes()

◆ get_num_nodes()

◆ get_previous_conformation_index()

int Blob::get_previous_conformation_index ( )

◆ get_previous_state_index()

int Blob::get_previous_state_index ( )

◆ get_RandU01()

scalar Blob::get_RandU01 ( )

◆ get_rmsd()

scalar Blob::get_rmsd ( )

◆ get_scale()

scalar Blob::get_scale ( )

◆ get_ssint_area()

scalar Blob::get_ssint_area ( )

◆ get_state_index()

◆ get_stored_centroid()

void Blob::get_stored_centroid ( arr3 cog)

◆ get_strain_energy()

scalar Blob::get_strain_energy ( )

◆ init()

int Blob::init ( )

◆ is_using_beads()

bool Blob::is_using_beads ( )

◆ kinetically_set_faces()

void Blob::kinetically_set_faces ( bool  state)

◆ linearise_elements()

void Blob::linearise_elements ( )

Referenced by translate_linear().

◆ linearise_force()

void Blob::linearise_force ( )

◆ load_binding_sites()

int Blob::load_binding_sites ( )
private

Opens and reads the given 'ffea binding site file', extracting all the kinetic binding sites (types and face lists) for this Blob.

Referenced by init().

◆ load_ctforces()

int Blob::load_ctforces ( string  ctforces_fname)
private

Opens and reads the given 'ffea ctforces file', and assigns the constant forces onto nodes for this Blob.

Referenced by init().

◆ load_material_params()

int Blob::load_material_params ( const char *  material_params_filename)
private

Opens and reads the given 'ffea material params file', extracting the material parameters for each element.

Referenced by init().

◆ load_nodes()

int Blob::load_nodes ( const char *  node_filename,
scalar  scale 
)
private

Opens and reads the given 'ffea node file', extracting all the nodes for this Blob. Records how many of these are surface nodes and how many are interior nodes.

Referenced by init().

◆ load_pinned_nodes()

int Blob::load_pinned_nodes ( const char *  pin_filename)
private

Opens and reads the given 'ffea pinned nodes file', extracting all the faces for this Blob.

Referenced by init().

◆ load_ssint()

int Blob::load_ssint ( const char *  ssint_filename,
int  num_ssint_face_types,
string  ssint_method 
)
private

Opens and reads the given 'ffea ssint file', extracting all the van der waals species for each face of this Blob.

Referenced by init().

◆ load_stokes_params()

int Blob::load_stokes_params ( const char *  stokes_filename,
scalar  scale 
)
private

Opens and reads the given 'ffea stokes params file', extracting the stokes radii for each node in the Blob.

Referenced by init().

◆ load_surface()

int Blob::load_surface ( const char *  surface_filename,
SimulationParams params 
)
private

Opens and reads the given 'ffea surface file', extracting all the faces for this Blob.

Referenced by init().

◆ load_surface_no_topology()

int Blob::load_surface_no_topology ( const char *  surface_filename,
SimulationParams params 
)
private

Opens and reads the given 'ffea surface file', extracting all the faces for this Blob, ignoring topology.

Referenced by init().

◆ load_topology()

int Blob::load_topology ( const char *  topology_filename)
private

Opens and reads the given 'ffea topology file', extracting all the elements for this Blob. Records how many of these are surface elements and how many are interior elements.

Referenced by init().

◆ make_measurements()

void Blob::make_measurements ( )

Takes measurements of system properties: KE, PE, Centre of Mass and Angular momentum etc

Referenced by World::print_trajectory_and_measurement_files().

◆ make_stress_measurements()

void Blob::make_stress_measurements ( FILE *  stress_out,
int  blob_number 
)

◆ move()

void Blob::move ( scalar  dx,
scalar  dy,
scalar  dz 
)

◆ pin_binding_site()

void Blob::pin_binding_site ( set< int >  node_indices)

Activates binding sites by adding nodes to the list

Referenced by World::change_kinetic_state().

◆ position()

vector3 Blob::position ( scalar  x,
scalar  y,
scalar  z 
)

Calculates the centroid of this Blob, then translates all nodes in the Blob so that the new centroid position is at the given (x,y,z) position, while returning a vector with the displacement (dx, dy, dz) applied to every node.

Referenced by World::change_kinetic_state(), and World::read_and_build_system().

◆ position_beads()

void Blob::position_beads ( scalar  x,
scalar  y,
scalar  z 
)

Moves the beads according to (dx, dy, dz). The name is to be related to "vector3 position(scalar x, scalar y, scalar z).

Referenced by World::read_and_build_system().

◆ pre_print()

void Blob::pre_print ( )

Dumps all the node positions (in order) from the node array to the given file stream in two steps.

Referenced by World::print_trajectory_and_measurement_files().

◆ print_bead_positions()

void Blob::print_bead_positions ( )

◆ print_node_positions()

void Blob::print_node_positions ( )

◆ read_nodes_from_file()

int Blob::read_nodes_from_file ( FILE *  trajectory_out)

Reads the node positions from the given trajectory file stream. This is useful for restarting simulations from trajectory files.

◆ reset_solver()

int Blob::reset_solver ( )

If the system changes mid run (binding event, say) we may need to reinitialise the solver

Referenced by World::change_kinetic_state().

◆ rotate() [1/2]

void Blob::rotate ( float  r11,
float  r12,
float  r13,
float  r21,
float  r22,
float  r23,
float  r31,
float  r32,
float  r33,
bool  beads = false 
)

Calculates the centroid of this Blob, then brings the Blob to the origin, rotates all nodes in the Blob, and brings back the Blob to the initial position. If beads = 1, then it rotates its own "bead_positions" too.

Referenced by rod::Rod_blob_interface::position_blob_from_rod(), World::read_and_build_system(), and rotate().

◆ rotate() [2/2]

void Blob::rotate ( float  xang,
float  yang,
float  zang,
bool  beads = false 
)

Performs rotation about x axis, then y axis, then z axis

◆ set_forces_to_zero()

void Blob::set_forces_to_zero ( )

Referenced by World::run().

◆ set_node_positions()

void Blob::set_node_positions ( vector3 node_pos)

◆ set_pos_0()

void Blob::set_pos_0 ( )

Referenced by World::init().

◆ set_previous_conformation_index()

void Blob::set_previous_conformation_index ( int  index)

◆ set_previous_state_index()

void Blob::set_previous_state_index ( int  index)

◆ set_springs_on_blob()

void Blob::set_springs_on_blob ( bool  state)

Referenced by World::load_springs().

◆ set_state_index()

void Blob::set_state_index ( int  index)

◆ solve_poisson()

int Blob::solve_poisson ( scalar phi_gamma_IN,
scalar J_Gamma_OUT 
)

Solves the poisson equation inside this Blob for a given fixed surface potential, and calculates the surface flux out of the protein

Referenced by World::do_es().

◆ there_are_beads()

bool Blob::there_are_beads ( )

◆ there_are_springs()

bool Blob::there_are_springs ( )

◆ there_is_mass()

bool Blob::there_is_mass ( )

◆ there_is_ssint()

bool Blob::there_is_ssint ( )

◆ translate_linear()

void Blob::translate_linear ( vector3 vec)

Translates the linear nodes, then linearises the secondary nodes

◆ unpin_binding_site()

void Blob::unpin_binding_site ( set< int >  node_indices)

Deactivates binding sites by removing nodes to the list

Referenced by World::change_kinetic_state().

◆ update_internal_forces()

int Blob::update_internal_forces ( )

Calculates all internal forces on the finite element mesh, storing them on the elements This requires the jacobian for each element, so if the mesh has inverted anywhere we will find out within this function

◆ update_positions()

int Blob::update_positions ( )

Solves the EOM on the finite element mesh, updating the node positions and velocities by one time step

Referenced by World::run().

◆ velocity_all()

void Blob::velocity_all ( scalar  vel_x,
scalar  vel_y,
scalar  vel_z 
)

Set all nodes on the Blob to the given velocity vector

Referenced by World::read_and_build_system().

◆ write_measurements_to_file()

void Blob::write_measurements_to_file ( FILE *  fout)

Writes only the detailed measurements local to this blob to file!

Referenced by World::print_trajectory_and_measurement_files().

◆ write_nodes_to_file()

void Blob::write_nodes_to_file ( FILE *  trajectory_out)

Dumps all the node positions (in order) from the node array to the given file stream.

Referenced by World::print_static_trajectory(), and World::print_trajectory_and_measurement_files().

◆ write_pre_print_to_file()

void Blob::write_pre_print_to_file ( FILE *  trajectory_out)

◆ zero_force()

void Blob::zero_force ( )

Set all forces on the blob to zero

Referenced by World::run().

Field Documentation

◆ bead_assignment

vector<vector<int> > Blob::bead_assignment
private

2D vector with the set of nodes where every bead should be assigned to. It will be removed after PreComp_solver is initialised [precomp]

Referenced by get_bead_assignment(), and load_beads().

◆ bead_position

scalar* Blob::bead_position
private

Array with bead positions xyzxyzxyz.... [precomp] will be NULL after info is loaded into PreComp_solver

Referenced by forget_beads(), get_bead_position(), load_beads(), position_beads(), print_bead_positions(), rotate(), and ~Blob().

◆ bead_type

int* Blob::bead_type
private

Array with bead types [precomp] will be NULL after info is loaded into PreComp_solver

Referenced by forget_beads(), get_bead_type(), get_bead_type_ptr(), load_beads(), and ~Blob().

◆ beads_on_blob

bool Blob::beads_on_blob
private

Are the preComp beads on this blob?

Referenced by Blob(), load_beads(), there_are_beads(), and ~Blob().

◆ binding_matrix

BindingSite_matrix* Blob::binding_matrix
private

A pointer to the same binding matrix configured in World

Referenced by config(), and load_binding_sites().

◆ binding_site

BindingSite* Blob::binding_site

◆ blob_index

◆ blob_state

int Blob::blob_state
private

Whether this Blob is DYNAMIC (movable; dynamics simulated) or STATIC (fixed; no simulation of dynamics; Blob is a perfectly solid object fixed in space)

Referenced by Blob(), calc_rest_state_info(), config(), get_motion_state(), init(), pre_print(), read_nodes_from_file(), update_internal_forces(), write_nodes_to_file(), write_pre_print_to_file(), and ~Blob().

◆ bsite_pinned_nodes_list

set<int> Blob::bsite_pinned_nodes_list
private

Additional pinned node list for binding processes

Referenced by aggregate_forces_and_solve(), Blob(), init(), pin_binding_site(), reset_solver(), unpin_binding_site(), and ~Blob().

◆ calc_compress

scalar Blob::calc_compress
private

Compression stuff:

Referenced by config(), and init().

◆ CoG

◆ CoG_0

vector3 Blob::CoG_0
private

Referenced by make_measurements(), and set_pos_0().

◆ CoM

vector3 Blob::CoM
private

Geometries

Referenced by make_measurements().

◆ CoM_0

vector3 Blob::CoM_0
private

◆ compress

scalar Blob::compress
private

Referenced by compress_blob(), config(), and init().

◆ conformation_index

◆ ctf_l_forces

scalar* Blob::ctf_l_forces
private

Array with the linear ctforces: FxFyFzFxFyFz..., being Fx, Fy, Fz the components of the force

Referenced by apply_ctforces(), Blob(), load_ctforces(), and ~Blob().

◆ ctf_l_nodes

int* Blob::ctf_l_nodes
private

Array with the nodes having linear ctforces assigned

Referenced by apply_ctforces(), Blob(), load_ctforces(), and ~Blob().

◆ ctf_r_axis

scalar* Blob::ctf_r_axis
private

Array with the rotational axis (given with point + unit vector) for ctforces: XYZxyzXYZxyzFxFyFz..., or BlobConfNodeBlobConfNode,BlobConfNodeBlobConfNode,... if using two nodes to define the axis.

Referenced by apply_ctforces(), Blob(), load_ctforces(), and ~Blob().

◆ ctf_r_forces

scalar* Blob::ctf_r_forces
private

Array with the magnitude of the rotational ctforces: FFF...,

Referenced by apply_ctforces(), Blob(), load_ctforces(), and ~Blob().

◆ ctf_r_nodes

int* Blob::ctf_r_nodes
private

Array with the nodes having rotational ctforces assigned

Referenced by apply_ctforces(), Blob(), load_ctforces(), and ~Blob().

◆ ctf_r_type

char* Blob::ctf_r_type
private

Array with the type of rotation force, 2 chars per node: where the first one can be n or p, depending of the axis defined by nodes or points and the second one can be f or t, depending on applying ctforce or cttorque.

Referenced by apply_ctforces(), Blob(), load_ctforces(), and ~Blob().

◆ ctf_sl_faces

int* Blob::ctf_sl_faces
private

Array with the faces having linear ctforces assigned

Referenced by apply_ctforces(), Blob(), load_ctforces(), and ~Blob().

◆ ctf_sl_forces

scalar* Blob::ctf_sl_forces
private

Array with the linear surface ctforces: FxFyFzFxFyFz..., being Fx, Fy, Fz the components of the force

Referenced by apply_ctforces(), Blob(), load_ctforces(), and ~Blob().

◆ ctf_sl_surfsize

int* Blob::ctf_sl_surfsize
private

array with the number of faces in every surface set.

Referenced by apply_ctforces(), Blob(), load_ctforces(), and ~Blob().

◆ ctf_slsurf_ndx

int* Blob::ctf_slsurf_ndx
private

Number of faces in every surface set:

Referenced by Blob(), and ~Blob().

◆ elem

◆ element_connectivity_table

connectivity_entry* Blob::element_connectivity_table
private

◆ force

◆ kineticenergy

scalar Blob::kineticenergy
private

◆ L

vector3 Blob::L
private

Momenta

Referenced by make_measurements().

◆ linear_solver

◆ M

SparseMatrixFixedPattern* Blob::M
private

Referenced by build_mass_matrix().

◆ mass

scalar Blob::mass
private

Total mass of Blob

Referenced by Blob(), calc_rest_state_info(), get_mass(), and ~Blob().

◆ mass_in_blob

bool Blob::mass_in_blob
private

And whether or not there is mass in this system

Referenced by Blob(), init(), there_is_mass(), and ~Blob().

◆ nodal_q

scalar* Blob::nodal_q
private

Referenced by Blob(), and ~Blob().

◆ node

◆ node_position

vector3** Blob::node_position
private

Array of node positions only

Referenced by Blob(), get_actual_node_positions(), load_nodes(), and ~Blob().

◆ num_beads

int Blob::num_beads
private

Amount of interacting beads within this Blob will be zero after info is loaded into PreComp_solver

Referenced by Blob(), forget_beads(), get_num_beads(), is_using_beads(), load_beads(), position_beads(), print_bead_positions(), rotate(), and ~Blob().

◆ num_binding_sites

int Blob::num_binding_sites

Binding sites must be known publicly

Referenced by Blob(), World::calculate_kinetic_rates(), load_binding_sites(), and ~Blob().

◆ num_contributing_faces

int* Blob::num_contributing_faces
private

Referenced by Blob(), init(), solve_poisson(), and ~Blob().

◆ num_elements

◆ num_interior_elements

int Blob::num_interior_elements
private

Total number of interior elements in Blob

Referenced by Blob(), load_topology(), and ~Blob().

◆ num_interior_nodes

int Blob::num_interior_nodes
private

Total number of nodes on Blob interior

Referenced by Blob(), build_poisson_matrices(), create_viewer_node_file(), init(), load_nodes(), solve_poisson(), and ~Blob().

◆ num_l_ctf

int Blob::num_l_ctf
private

Number of ctforces to be applied to this Blob

Referenced by apply_ctforces(), Blob(), load_ctforces(), and ~Blob().

◆ num_nodes

◆ num_pinned_nodes

int Blob::num_pinned_nodes
private

Number of 'pinned' nodes (nodes which are not able to move, removing degrees of freedom from system)

Referenced by aggregate_forces_and_solve(), Blob(), init(), load_pinned_nodes(), reset_solver(), update_internal_forces(), and ~Blob().

◆ num_r_ctf

int Blob::num_r_ctf
private

◆ num_slsets_ctf

int Blob::num_slsets_ctf
private

number of surface sets, corresponding to the length of the ctf_sl_forces, num_slsurf_ctf array

Referenced by apply_ctforces(), Blob(), load_ctforces(), and ~Blob().

◆ num_sltotal_ctf

int Blob::num_sltotal_ctf
private

Referenced by Blob(), load_ctforces(), and ~Blob().

◆ num_surface_elements

int Blob::num_surface_elements
private

Total number of surface elements in Blob

Referenced by Blob(), load_topology(), and ~Blob().

◆ num_surface_faces

◆ num_surface_nodes

int Blob::num_surface_nodes
private

Total number of nodes on Blob surface

Referenced by Blob(), create_viewer_node_file(), enforce_box_boundaries(), init(), load_nodes(), solve_poisson(), and ~Blob().

◆ params

◆ pbc_count

int Blob::pbc_count[3]

Referenced by Blob(), and World::run().

◆ pc_params

PreComp_params* Blob::pc_params
private

Referenced by config(), and init().

◆ phi_Gamma

scalar* Blob::phi_Gamma
private

Referenced by Blob(), init(), solve_poisson(), and ~Blob().

◆ phi_Omega

scalar* Blob::phi_Omega
private

Referenced by Blob(), init(), solve_poisson(), and ~Blob().

◆ pinned_nodes_list

int* Blob::pinned_nodes_list
private

◆ poisson_interior_matrix

SparseMatrixFixedPattern* Blob::poisson_interior_matrix
private

◆ poisson_rhs

scalar* Blob::poisson_rhs
private

Referenced by Blob(), init(), solve_poisson(), and ~Blob().

◆ poisson_solver

CG_solver* Blob::poisson_solver
private

Referenced by Blob(), init(), solve_poisson(), and ~Blob().

◆ poisson_surface_matrix

SparseMatrixFixedPattern* Blob::poisson_surface_matrix
private

◆ previous_conformation_index

int Blob::previous_conformation_index

◆ previous_state_index

int Blob::previous_state_index

◆ q

scalar* Blob::q
private

Referenced by Blob(), init(), solve_poisson(), and ~Blob().

◆ rmsd

scalar Blob::rmsd
private

◆ rng

RngStream* Blob::rng
private

The array of random number generators (needed for parallel runs)

Referenced by Blob(), config(), get_RandU01(), update_internal_forces(), and ~Blob().

◆ s_beads_filename

string Blob::s_beads_filename
private

Referenced by config(), and init().

◆ s_binding_filename

string Blob::s_binding_filename
private

Referenced by config(), and load_binding_sites().

◆ s_material_params_filename

string Blob::s_material_params_filename
private

Referenced by config(), and init().

◆ s_node_filename

string Blob::s_node_filename
private

Strings of all the files that contain input data:

Referenced by config(), and init().

◆ s_pin_filename

string Blob::s_pin_filename
private

Referenced by config(), and init().

◆ s_ssint_filename

string Blob::s_ssint_filename
private

Referenced by config(), and init().

◆ s_stokes_filename

string Blob::s_stokes_filename
private

Referenced by config(), and init().

◆ s_surface_filename

string Blob::s_surface_filename
private

Referenced by config(), and init().

◆ s_topology_filename

string Blob::s_topology_filename
private

Referenced by config(), and init().

◆ scale

scalar Blob::scale
private

Scale of the input coordinates to m:

Referenced by config(), get_scale(), init(), and load_stokes_params().

◆ solver

Solver* Blob::solver
private

A pointer to whatever Solver is being used for this Blob (eg SparseSubstitutionSolver or ConjugateGradientSolver). The Solver solves the equation Mx = f where M is the mass matrix of this Blob and f is the force vector.

Referenced by aggregate_forces_and_solve(), Blob(), init(), reset_solver(), and ~Blob().

◆ springs_on_blob

bool Blob::springs_on_blob
private

Are there springs on this blob?

Referenced by Blob(), set_springs_on_blob(), there_are_springs(), and ~Blob().

◆ ssint_bb_energy

scalar Blob::ssint_bb_energy
private

Total ssint energy between blobs

◆ ssint_matrix

SSINT_matrix* Blob::ssint_matrix
private

pointer to the ssint forcefield parameters (for some energy calcs)

Referenced by config(), and init().

◆ ssint_on_blob

bool Blob::ssint_on_blob
private

Are there ssint on this blob?

Referenced by Blob(), load_ssint(), there_is_ssint(), and ~Blob().

◆ state_index

int Blob::state_index

◆ strainenergy

scalar Blob::strainenergy
private

◆ surface

◆ toBePrinted_conf

int Blob::toBePrinted_conf[2]

Referenced by pre_print().

◆ toBePrinted_nodes

scalar* Blob::toBePrinted_nodes
private

◆ toBePrinted_state

int Blob::toBePrinted_state[2]

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