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 vdw_filename,
string pin_filename,
120 string binding_filename,
string beads_filename,
scalar scale,
scalar calc_compress,
130 int update_internal_forces();
135 int update_positions();
145 void translate_linear(
vector3 *vec);
152 void rotate(
float r11,
float r12,
float r13,
float r21,
float r22,
float r23,
float r31,
float r32,
float r33,
bool beads=
false);
157 void rotate(
float xang,
float yang,
float zang,
bool beads=
false);
182 void add_steric_nodes();
197 void get_centroid(
vector3 *com);
198 void calc_and_store_centroid(
vector3 &com);
202 void kinetically_set_faces(
bool state);
206 int create_viewer_node_file(
const char *node_filename,
scalar scale);
211 void write_nodes_to_file(FILE *trajectory_out);
217 void write_pre_print_to_file(FILE *trajectory_out);
218 int toBePrinted_conf[2];
219 int toBePrinted_state[2];
225 int read_nodes_from_file(FILE *trajectory_out);
230 void make_measurements();
235 void write_measurements_to_file(FILE *fout);
240 int calculate_deformation();
244 void make_stress_measurements(FILE *stress_out,
int blob_number);
254 void calc_centroids_and_normals_of_all_faces();
259 void calc_all_centroids();
269 Face *get_face(
int i);
271 Face *absolutely_get_face(
int i);
279 void get_bead_position(
int i,
arr3 &v);
282 int *get_bead_type_ptr();
285 int get_bead_type(
int i);
292 vector<int> get_bead_assignment(
int i);
306 int solve_poisson(
scalar *phi_gamma_IN,
scalar *J_Gamma_OUT);
311 int apply_ctforces();
319 void set_forces_to_zero();
323 void get_node(
int index,
arr3 &v);
325 void copy_node_positions(
vector3 *nodes);
327 vector3 ** get_actual_node_positions();
329 void set_node_positions(
vector3 *node_pos);
331 void add_force_to_node(
vector3 f,
int index);
345 void build_poisson_matrices();
352 int build_linear_node_viscosity_matrix(Eigen::SparseMatrix<scalar> *K);
362 int build_linear_node_elasticity_matrix(Eigen::SparseMatrix<scalar> *A);
367 int build_linear_node_mass_matrix(Eigen::SparseMatrix<scalar> *M);
380 void enforce_box_boundaries(
vector3 *box_dim);
388 void linearise_elements();
390 void linearise_force();
395 void compress_blob(
scalar compress);
399 int get_num_elements();
401 int get_motion_state();
407 int get_num_linear_nodes();
410 bool is_using_beads();
414 int get_linear_solver();
418 void get_stored_centroid(
arr3 &cog);
420 int get_conformation_index();
421 int get_previous_conformation_index();
422 void set_previous_conformation_index(
int index);
423 int get_state_index();
424 void set_state_index(
int index);
425 int get_previous_state_index();
426 void set_previous_state_index(
int index);
429 scalar calculate_strain_energy();
449 void pin_binding_site(set<int> node_indices);
452 void unpin_binding_site(set<int> node_indices);
454 void print_node_positions();
455 void print_bead_positions();
456 bool there_is_mass();
457 void set_springs_on_blob(
bool state);
458 bool there_are_springs();
459 bool there_are_beads();
462 scalar get_kinetic_energy();
463 scalar get_strain_energy();
574 string s_node_filename, s_topology_filename, s_surface_filename,
576 s_pin_filename, s_binding_filename, s_beads_filename;
663 int load_nodes(
const char *node_filename,
scalar scale);
669 int load_topology(
const char *topology_filename);
680 int load_surface_no_topology(
const char *surface_filename,
SimulationParams *params);
685 int load_material_params(
const char *material_params_filename);
690 int load_stokes_params(
const char *stokes_filename,
scalar scale);
696 int load_vdw(
const char *vdw_filename,
int num_vdw_face_types,
string vdw_method);
707 int load_ctforces(
string ctforces_fname);
713 int load_binding_sites();
718 int load_pinned_nodes(
const char *pin_filename);
723 int create_pinned_nodes(set<int> list);
728 void calc_rest_state_info();
733 int aggregate_forces_and_solve();
738 void euler_integrate();
743 int calculate_node_element_connectivity();
745 int build_mass_matrix();
int num_pinned_nodes
Definition: Blob.h:491
int * num_contributing_faces
Definition: Blob.h:645
Definition: tetra_element_linear.h:136
int * ctf_sl_faces
Definition: Blob.h:551
int num_beads
Definition: Blob.h:495
scalar * poisson_rhs
Definition: Blob.h:643
Definition: BindingSite.h:41
int * ctf_sl_surfsize
Definition: Blob.h:553
Eigen::Vector3d Eigen_Vector3
Definition: Blob.h:68
string states
Definition: Blob.h:84
scalar * ctf_r_axis
Definition: Blob.h:564
SparseMatrixFixedPattern * M
Definition: Blob.h:652
connectivity_entry * element_connectivity_table
Definition: Blob.h:647
scalar * q
Definition: Blob.h:641
scalar * ctf_r_forces
Definition: Blob.h:559
bool mass_in_blob
Definition: Blob.h:605
Eigen::MatrixXd Eigen_MatrixX
Definition: Blob.h:65
scalar scale
Definition: Blob.h:580
PreComp_params * pc_params
Definition: Blob.h:587
int num_interior_elements
Definition: Blob.h:479
set< int > bsite_pinned_nodes_list
Definition: Blob.h:531
Eigen::VectorXd Eigen_VectorX
Definition: Blob.h:66
int blob_state
Definition: Blob.h:507
string rates
Definition: Blob.h:84
SimulationParams * params
Definition: Blob.h:586
vector3 * force
Definition: Blob.h:617
SparseMatrixFixedPattern * poisson_interior_matrix
Definition: Blob.h:638
scalar * phi_Omega
Definition: Blob.h:639
int * ctf_l_nodes
Definition: Blob.h:547
Definition: SimulationParams.h:66
int num_surface_elements
Definition: Blob.h:476
scalar rmsd
Definition: Blob.h:633
scalar * phi_Gamma
Definition: Blob.h:640
scalar compress
Definition: Blob.h:583
int linear_solver
Definition: Blob.h:602
int num_sltotal_ctf
Definition: Blob.h:500
int set_centroid
Definition: Blob.h:75
scalar * ctf_sl_forces
Definition: Blob.h:571
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:522
vector3 L
Definition: Blob.h:628
int * pinned_nodes_list
Definition: Blob.h:528
int state_index
Definition: Blob.h:436
scalar * ctf_l_forces
Definition: Blob.h:557
int * ctf_slsurf_ndx
Definition: Blob.h:504
mesh_node * node
Definition: Blob.h:516
Definition: RngStream.h:43
int set_rotation
Definition: Blob.h:79
int num_r_ctf
Definition: Blob.h:499
int set_velocity
Definition: Blob.h:77
Definition: CG_solver.h:34
SparseMatrixFixedPattern * poisson_surface_matrix
Definition: Blob.h:637
vector< string > maps
Definition: Blob.h:85
int num_nodes
Definition: Blob.h:470
int * bead_type
Definition: Blob.h:544
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:535
int num_surface_faces
Definition: Blob.h:482
Definition: ConnectivityTypes.h:27
bool beads_on_blob
Definition: Blob.h:614
int num_surface_nodes
Definition: Blob.h:485
int num_slsets_ctf
number of surface sets, corresponding to the length of the ctf_sl_forces, num_slsurf_ctf array ...
Definition: Blob.h:501
Face * surface
Definition: Blob.h:525
int num_interior_nodes
Definition: Blob.h:488
int rotation_type
Definition: Blob.h:80
RngStream * rng
Definition: Blob.h:620
string s_vdw_filename
Definition: Blob.h:574
Eigen::Matrix3d Eigen_Matrix3
Definition: Blob.h:67
int blob_index
Definition: Blob.h:434
int num_elements
Definition: Blob.h:473
Solver * solver
Definition: Blob.h:599
char * ctf_r_type
Definition: Blob.h:568
CG_solver * poisson_solver
Definition: Blob.h:636
BindingSite_matrix * binding_matrix
Definition: Blob.h:590
scalar strainenergy
Definition: Blob.h:624
scalar vdw_bb_energy
Definition: Blob.h:513
scalar * toBePrinted_nodes
Definition: Blob.h:657
vector< vector< int > > bead_assignment
Definition: Blob.h:539
scalar mass
Definition: Blob.h:510
LJ_matrix * lj_matrix
Definition: Blob.h:593
int num_binding_sites
Definition: Blob.h:439
BindingSite * binding_site
Definition: Blob.h:440
vector3 ** node_position
Definition: Blob.h:519
Definition: mat_vec_types.h:90
vector3 CoM_0
Definition: Blob.h:632
Definition: LJ_matrix.h:46
double scalar
Definition: mat_vec_types.h:36
int * ctf_r_nodes
Definition: Blob.h:549
int num_l_ctf
Definition: Blob.h:498
bool springs_on_blob
Definition: Blob.h:608
int previous_conformation_index
Definition: Blob.h:435
scalar * nodal_q
Definition: Blob.h:642
bool vdw_on_blob
Definition: Blob.h:611
scalar velocity[3]
Definition: Blob.h:78
Definition: BindingSite.h:82
vector< int > maps_conf_index_from
Definition: Blob.h:86