65 AtomGraphStage(
int atom_count_in = 0,
const std::vector<int> &residue_limits_in = {},
66 ExceptionResponse policy_in = ExceptionResponse::DIE);
124 const std::vector<char4> &solute_included_residue_names = {},
125 double hmass_repartition_factor = 1.0)
const;
130 void setTitle(
const std::string &title_in);
149 const char4 atom_i_type = unknown_atom_type,
150 const char4 atom_k_type = unknown_atom_type);
166 const char4 atom_i_type = unknown_atom_type,
167 const char4 atom_j_type = unknown_atom_type,
168 const char4 atom_k_type = unknown_atom_type,
169 const char4 atom_l_type = unknown_atom_type);
188 void addCmapParameters(
const int dimension_in,
const std::vector<double> &surf_in,
189 const char4 atom_i_type = unknown_atom_type,
190 const char4 atom_j_type = unknown_atom_type,
191 const char4 atom_k_type = unknown_atom_type,
192 const char4 atom_l_type = unknown_atom_type,
193 const char4 atom_m_type = unknown_atom_type);
206 const char4 atom_i_type = unknown_atom_type,
207 const char4 atom_j_type = unknown_atom_type);
221 const char4 atom_i_type = unknown_atom_type,
222 const char4 atom_j_type = unknown_atom_type,
223 const char4 atom_k_type = unknown_atom_type);
239 const char4 atom_i_type = unknown_atom_type,
240 const char4 atom_j_type = unknown_atom_type,
241 const char4 atom_k_type = unknown_atom_type,
242 const char4 atom_l_type = unknown_atom_type);
271 std::vector<int>
addAtoms(
const std::vector<int> &z_numbers,
int placement = -1,
272 const std::vector<int> &added_residue_limits = {},
273 const std::vector<char4> &added_atom_names = {},
274 const std::vector<char4> &added_atom_types = {},
275 const std::vector<char4> &added_residue_names = {},
276 const std::vector<int> &added_charge_indices = {},
277 const std::vector<int> &added_lennard_jones_indices = {},
278 const std::vector<double> &added_atomic_charges = {});
296 int addAtom(
int z_number,
int placement = -1,
const char4 atom_name = {
'U',
'N',
'K',
' ' },
297 const char4 atom_type = {
'U',
'N',
'K',
' ' },
298 const char4 res_name = {
'U',
'N',
'K',
' ' },
int charge_index = -1,
299 int lennard_jones_index = -1,
double atomic_charge = 0.0);
315 std::vector<int>
addVirtualSites(
const std::vector<int> ¶meter_indices,
316 const std::vector<int> &frame1_atoms,
317 const std::vector<int> &frame2_atoms,
318 const std::vector<int> &frame3_atoms,
319 const std::vector<int> &frame4_atoms);
331 int addVirtualSite(
int parameter_index,
int frame1_atom,
int frame2_atom,
int frame3_atom = -1,
332 int frame4_atom = -1);
340 void setBonds(
const std::vector<int> &atom_i,
const std::vector<int> &atom_j,
341 const std::vector<int> ¶meter_index);
349 void setBond(
int atom_i,
int atom_j,
int parameter_index);
364 ExceptionResponse policy;
366 std::string output_file;
372 std::vector<Citation> force_fields;
380 std::vector<int> residue_limits;
381 std::vector<int> molecule_limits;
384 std::vector<int> molecule_membership;
386 std::vector<int> molecule_contents;
390 std::vector<int> atomic_numbers;
393 std::vector<char4> atom_names;
394 std::vector<char4> atom_types;
397 std::vector<char4> residue_names;
400 int urey_bradley_term_count;
401 int charmm_impr_term_count;
403 int urey_bradley_parameter_count;
404 int charmm_impr_parameter_count;
405 int cmap_surface_count;
408 std::vector<int> urey_bradley_i_atoms;
409 std::vector<int> urey_bradley_k_atoms;
410 std::vector<int> urey_bradley_parameter_indices;
412 std::vector<int> charmm_impr_i_atoms;
413 std::vector<int> charmm_impr_j_atoms;
414 std::vector<int> charmm_impr_k_atoms;
415 std::vector<int> charmm_impr_l_atoms;
416 std::vector<int> charmm_impr_parameter_indices;
418 std::vector<int> cmap_i_atoms;
419 std::vector<int> cmap_j_atoms;
420 std::vector<int> cmap_k_atoms;
421 std::vector<int> cmap_l_atoms;
422 std::vector<int> cmap_m_atoms;
423 std::vector<int> cmap_surface_indices;
426 std::vector<int> cmap_surface_dimensions;
429 std::vector<int> cmap_surface_bounds;
432 std::vector<double> urey_bradley_stiffnesses;
434 std::vector<double> urey_bradley_equilibria;
436 std::vector<double> charmm_impr_stiffnesses;
437 std::vector<double> charmm_impr_phase_angles;
438 std::vector<double> cmap_surfaces;
440 std::vector<char4> urey_bradley_i_atom_types;
449 std::vector<char4> urey_bradley_k_atom_types;
451 std::vector<char4> charmm_impr_i_atom_types;
453 std::vector<char4> charmm_impr_j_atom_types;
455 std::vector<char4> charmm_impr_k_atom_types;
457 std::vector<char4> charmm_impr_l_atom_types;
459 std::vector<char4> cmap_i_atom_types;
461 std::vector<char4> cmap_j_atom_types;
463 std::vector<char4> cmap_k_atom_types;
465 std::vector<char4> cmap_l_atom_types;
467 std::vector<char4> cmap_m_atom_types;
474 int bond_parameter_count;
475 int angl_parameter_count;
476 int dihe_parameter_count;
477 int attenuated_14_type_count;
478 int inferred_14_attenuations;
489 std::vector<int> bond_i_atoms;
490 std::vector<int> bond_j_atoms;
491 std::vector<int> bond_parameter_indices;
492 std::vector<int> angl_i_atoms;
493 std::vector<int> angl_j_atoms;
494 std::vector<int> angl_k_atoms;
495 std::vector<int> angl_parameter_indices;
496 std::vector<int> dihe_i_atoms;
497 std::vector<int> dihe_j_atoms;
498 std::vector<int> dihe_k_atoms;
499 std::vector<int> dihe_l_atoms;
500 std::vector<int> dihe_parameter_indices;
501 std::vector<int> dihe14_parameter_indices;
503 std::vector<int> infr14_i_atoms;
505 std::vector<int> infr14_l_atoms;
507 std::vector<int> infr14_parameter_indices;
513 std::vector<char4> bond_modifiers;
514 std::vector<char4> angl_modifiers;
515 std::vector<char4> dihe_modifiers;
518 std::vector<double> bond_stiffnesses;
519 std::vector<double> bond_equilibria;
520 std::vector<double> angl_stiffnesses;
521 std::vector<double> angl_equilibria;
522 std::vector<double> dihe_amplitudes;
523 std::vector<double> dihe_periodicities;
524 std::vector<double> dihe_phase_angles;
525 std::vector<char4> bond_i_atom_types;
533 std::vector<char4> bond_j_atom_types;
535 std::vector<char4> angl_i_atom_types;
537 std::vector<char4> angl_j_atom_types;
539 std::vector<char4> angl_k_atom_types;
541 std::vector<char4> dihe_i_atom_types;
543 std::vector<char4> dihe_j_atom_types;
545 std::vector<char4> dihe_k_atom_types;
547 std::vector<char4> dihe_l_atom_types;
551 int virtual_site_count;
552 int virtual_site_parameter_set_count;
556 std::vector<int> virtual_site_atoms;
558 std::vector<VirtualSiteKind> vs_frame_types;
560 std::vector<int> virtual_site_frame1_atoms;
562 std::vector<int> virtual_site_frame2_atoms;
563 std::vector<int> virtual_site_frame3_atoms;
565 std::vector<int> virtual_site_frame4_atoms;
567 std::vector<int> virtual_site_parameter_indices;
574 std::vector<double> virtual_site_frame_dim1;
575 std::vector<double> virtual_site_frame_dim2;
577 std::vector<double> virtual_site_frame_dim3;
581 int charge_type_count;
583 int total_exclusions;
584 UnitCellType periodic_box_class;
586 double coulomb_constant;
589 double elec14_screening_factor;
592 double vdw14_screening_factor;
596 std::vector<int> charge_indices;
597 std::vector<int> lennard_jones_indices;
598 std::vector<int> nb11_exclusion_bounds;
599 std::vector<int> nb11_exclusion_list;
601 std::vector<int> nb12_exclusion_bounds;
602 std::vector<int> nb12_exclusion_list;
603 std::vector<int> nb13_exclusion_bounds;
604 std::vector<int> nb13_exclusion_list;
605 std::vector<int> nb14_exclusion_bounds;
606 std::vector<int> nb14_exclusion_list;
608 std::vector<double> atomic_charges;
609 std::vector<double> charge_parameters;
612 std::vector<double> lj_a_values;
613 std::vector<double> lj_b_values;
614 std::vector<double> lj_c_values;
615 std::vector<double> lj_14_a_values;
616 std::vector<double> lj_14_b_values;
617 std::vector<double> lj_14_c_values;
618 std::vector<double> lj_sigma_values;
621 std::vector<double> lj_epsilon_values;
625 std::vector<double> lj_14_sigma_values;
627 std::vector<double> lj_14_epsilon_values;
636 std::vector<ScreeningFactorTag> attn14_tags;
639 std::vector<char4> atom_overflow_names;
640 std::vector<char4> atom_overflow_types;
641 std::vector<char4> residue_overflow_names;
646 void validateAtomIndex(
int atom_index)
const;
651 void validateFrameIndex(
int set_index)
const;
673 std::vector<int> insertParticles(
const std::vector<int> &z_numbers,
674 const std::vector<int> &residue_homes,
675 const std::vector<int> &added_vs_parameter_indices = {},
676 const std::vector<int> &added_vs_frame1_atoms = {},
677 const std::vector<int> &added_vs_frame2_atoms = {},
678 const std::vector<int> &added_vs_frame3_atoms = {},
679 const std::vector<int> &added_vs_frame4_atoms = {});
685 std::vector<int> addConnections(
const std::vector<int> &atom_i,
const std::vector<int> &atom_j);
699 int addConnection(
int atom_i,
int atom_j);
708 bool applyProperty(
int array_size,
int added_count,
const std::string &desc);
717 maskSoluteAtoms(
int minimum_solute_size = default_minimum_solute_atoms,
718 const std::vector<char4> &solute_included_residue_names = {})
const;
730 std::vector<int> createPrmtopDescriptors(
int largest_residue_atoms,
731 int total_exclusions)
const;
737 std::vector<double> computeAtomicMasses(
double hmass_repartition_factor)
const;
753 void buildNonbonded14Screen(std::vector<double> *attn14_elec_factors,
754 std::vector<double> *attn14_vdw_factors)
const;