28 #ifndef BLOB_H_INCLUDED 29 #define BLOB_H_INCLUDED 39 #include <Eigen/Sparse> 59 #ifdef USE_DOUBLE_LESS 117 int config(
const int blob_index,
const int conformation_index,
string node_filename,
118 string topology_filename,
string surface_filename,
string material_params_filename,
119 string stokes_filename,
string ssint_filename,
string pin_filename,
120 string binding_filename,
string beads_filename,
scalar scale,
scalar calc_compress,
130 int update_internal_forces();
135 int check_inversion();
140 int update_positions();
150 void translate_linear(
vector3 *vec);
157 void rotate(
float r11,
float r12,
float r13,
float r21,
float r22,
float r23,
float r31,
float r32,
float r33,
bool beads=
false);
162 void rotate(
float xang,
float yang,
float zang,
bool beads=
false);
187 void add_steric_nodes();
202 void get_centroid(
vector3 *com);
203 void calc_and_store_centroid(
vector3 &com);
207 void kinetically_set_faces(
bool state);
211 int create_viewer_node_file(
const char *node_filename,
scalar scale);
216 void write_nodes_to_file(FILE *trajectory_out);
222 void write_pre_print_to_file(FILE *trajectory_out);
223 int toBePrinted_conf[2];
224 int toBePrinted_state[2];
230 int read_nodes_from_file(FILE *trajectory_out);
235 void make_measurements();
240 void write_measurements_to_file(FILE *fout);
245 int calculate_deformation();
249 void make_stress_measurements(FILE *stress_out,
int blob_number);
259 void calc_centroids_and_normals_of_all_faces();
264 void calc_all_centroids();
274 Face *get_face(
int i);
276 Face *absolutely_get_face(
int i);
284 void get_bead_position(
int i,
arr3 &v);
287 int *get_bead_type_ptr();
290 int get_bead_type(
int i);
297 vector<int> get_bead_assignment(
int i);
311 int solve_poisson(
scalar *phi_gamma_IN,
scalar *J_Gamma_OUT);
316 int apply_ctforces();
324 void set_forces_to_zero();
328 void get_node(
int index,
arr3 &v);
330 void get_node_0(
int index,
arr3 &v);
332 void copy_node_positions(
vector3 *nodes);
334 vector3 ** get_actual_node_positions();
336 void set_node_positions(
vector3 *node_pos);
338 void add_force_to_node(
vector3 f,
int index);
352 void build_poisson_matrices();
359 int build_linear_node_viscosity_matrix(Eigen::SparseMatrix<scalar> *K);
369 int build_linear_node_elasticity_matrix(Eigen::SparseMatrix<scalar> *A);
374 int build_linear_node_mass_matrix(Eigen::SparseMatrix<scalar> *M);
387 void enforce_box_boundaries(
vector3 *box_dim);
395 void linearise_elements();
397 void linearise_force();
402 void compress_blob(
scalar compress);
406 int get_num_elements();
408 int get_motion_state();
414 int get_num_linear_nodes();
417 bool is_using_beads();
421 int get_linear_solver();
425 void get_stored_centroid(
arr3 &cog);
427 int get_conformation_index();
428 int get_previous_conformation_index();
429 void set_previous_conformation_index(
int index);
430 int get_state_index();
431 void set_state_index(
int index);
432 int get_previous_state_index();
433 void set_previous_state_index(
int index);
436 scalar calculate_strain_energy();
456 void pin_binding_site(set<int> node_indices);
459 void unpin_binding_site(set<int> node_indices);
461 void print_node_positions();
462 void print_bead_positions();
463 bool there_is_mass();
464 void set_springs_on_blob(
bool state);
465 bool there_are_springs();
466 bool there_are_beads();
467 bool there_is_ssint();
469 scalar get_kinetic_energy();
470 scalar get_strain_energy();
582 s_material_params_filename, s_stokes_filename, s_ssint_filename,
583 s_pin_filename, s_binding_filename, s_beads_filename;
670 int load_nodes(
const char *node_filename,
scalar scale);
676 int load_topology(
const char *topology_filename);
687 int load_surface_no_topology(
const char *surface_filename,
SimulationParams *params);
692 int load_material_params(
const char *material_params_filename);
697 int load_stokes_params(
const char *stokes_filename,
scalar scale);
703 int load_ssint(
const char *ssint_filename,
int num_ssint_face_types,
string ssint_method);
714 int load_ctforces(
string ctforces_fname);
720 int load_binding_sites();
725 int load_pinned_nodes(
const char *pin_filename);
730 int create_pinned_nodes(set<int> list);
735 void calc_rest_state_info();
740 int aggregate_forces_and_solve();
745 void euler_integrate();
750 int calculate_node_element_connectivity();
752 int build_mass_matrix();
int num_pinned_nodes
Definition: Blob.h:498
int * num_contributing_faces
Definition: Blob.h:652
Definition: tetra_element_linear.h:136
int * ctf_sl_faces
Definition: Blob.h:558
int num_beads
Definition: Blob.h:502
scalar * poisson_rhs
Definition: Blob.h:650
Definition: BindingSite.h:41
static const int z
Definition: rod_math_v9.h:54
int * ctf_sl_surfsize
Definition: Blob.h:560
Eigen::Vector3d Eigen_Vector3
Definition: Blob.h:68
string states
Definition: Blob.h:84
scalar * ctf_r_axis
Definition: Blob.h:571
SparseMatrixFixedPattern * M
Definition: Blob.h:659
connectivity_entry * element_connectivity_table
Definition: Blob.h:654
scalar * q
Definition: Blob.h:648
scalar * ctf_r_forces
Definition: Blob.h:566
bool mass_in_blob
Definition: Blob.h:612
Eigen::MatrixXd Eigen_MatrixX
Definition: Blob.h:65
scalar scale
Definition: Blob.h:587
PreComp_params * pc_params
Definition: Blob.h:594
int num_interior_elements
Definition: Blob.h:486
set< int > bsite_pinned_nodes_list
Definition: Blob.h:538
Eigen::VectorXd Eigen_VectorX
Definition: Blob.h:66
int blob_state
Definition: Blob.h:514
string rates
Definition: Blob.h:84
SimulationParams * params
Definition: Blob.h:593
vector3 * force
Definition: Blob.h:624
Definition: LJ_matrix.h:59
SparseMatrixFixedPattern * poisson_interior_matrix
Definition: Blob.h:645
scalar * phi_Omega
Definition: Blob.h:646
int * ctf_l_nodes
Definition: Blob.h:554
Definition: SimulationParams.h:66
int num_surface_elements
Definition: Blob.h:483
static const int y
Definition: rod_math_v9.h:53
scalar rmsd
Definition: Blob.h:640
static const int x
Definition: rod_math_v9.h:52
scalar * phi_Gamma
Definition: Blob.h:647
scalar compress
Definition: Blob.h:590
int linear_solver
Definition: Blob.h:609
int num_sltotal_ctf
Definition: Blob.h:507
int set_centroid
Definition: Blob.h:75
scalar * ctf_sl_forces
Definition: Blob.h:578
Definition: SparseMatrixFixedPattern.h:36
scalar arr3[3]
Definition: mat_vec_types.h:70
scalar centroid[3]
Definition: Blob.h:76
tetra_element_linear * elem
Definition: Blob.h:529
vector3 L
Definition: Blob.h:635
bool ssint_on_blob
Definition: Blob.h:618
int * pinned_nodes_list
Definition: Blob.h:535
int state_index
Definition: Blob.h:443
scalar * ctf_l_forces
Definition: Blob.h:564
int * ctf_slsurf_ndx
Definition: Blob.h:511
mesh_node * node
Definition: Blob.h:523
Definition: RngStream.h:43
int set_rotation
Definition: Blob.h:79
int num_r_ctf
Definition: Blob.h:506
int set_velocity
Definition: Blob.h:77
Definition: CG_solver.h:34
SparseMatrixFixedPattern * poisson_surface_matrix
Definition: Blob.h:644
vector< string > maps
Definition: Blob.h:85
int num_nodes
Definition: Blob.h:477
int * bead_type
Definition: Blob.h:551
Definition: mesh_node.h:39
scalar rotation[9]
Definition: Blob.h:81
vector< int > maps_conf_index_to
Definition: Blob.h:86
Definition: SimulationParams.h:75
scalar * bead_position
Definition: Blob.h:542
int num_surface_faces
Definition: Blob.h:489
string s_topology_filename
Definition: Blob.h:581
Definition: ConnectivityTypes.h:27
bool beads_on_blob
Definition: Blob.h:621
int num_surface_nodes
Definition: Blob.h:492
int num_slsets_ctf
number of surface sets, corresponding to the length of the ctf_sl_forces, num_slsurf_ctf array ...
Definition: Blob.h:508
Face * surface
Definition: Blob.h:532
scalar ssint_bb_energy
Definition: Blob.h:520
int num_interior_nodes
Definition: Blob.h:495
int rotation_type
Definition: Blob.h:80
RngStream * rng
Definition: Blob.h:627
Eigen::Matrix3d Eigen_Matrix3
Definition: Blob.h:67
int blob_index
Definition: Blob.h:441
int num_elements
Definition: Blob.h:480
static const int i
index of ith thing
Definition: rod_math_v9.h:63
Solver * solver
Definition: Blob.h:606
char * ctf_r_type
Definition: Blob.h:575
CG_solver * poisson_solver
Definition: Blob.h:643
BindingSite_matrix * binding_matrix
Definition: Blob.h:597
scalar strainenergy
Definition: Blob.h:631
scalar * toBePrinted_nodes
Definition: Blob.h:664
vector< vector< int > > bead_assignment
Definition: Blob.h:546
scalar mass
Definition: Blob.h:517
int num_binding_sites
Definition: Blob.h:446
BindingSite * binding_site
Definition: Blob.h:447
vector3 ** node_position
Definition: Blob.h:526
Definition: mat_vec_types.h:90
vector3 CoM_0
Definition: Blob.h:639
double scalar
Definition: mat_vec_types.h:36
int * ctf_r_nodes
Definition: Blob.h:556
int num_l_ctf
Definition: Blob.h:505
bool springs_on_blob
Definition: Blob.h:615
int previous_conformation_index
Definition: Blob.h:442
scalar * nodal_q
Definition: Blob.h:649
scalar velocity[3]
Definition: Blob.h:78
Definition: BindingSite.h:82
SSINT_matrix * ssint_matrix
Definition: Blob.h:600
vector< int > maps_conf_index_from
Definition: Blob.h:86