occ
Loading...
Searching...
No Matches
occ::mults::CrystalOptimizerSettings Struct Reference

Settings for crystal structure optimization. More...

#include <crystal_optimizer.h>

Public Attributes

OptimizationMethod method = OptimizationMethod::MSTMIN
 Optimization method.
 
double gradient_tolerance = 1e-4
 Convergence: ||g|| < tol.
 
double energy_tolerance = 1e-7
 Convergence: |ΔE| < tol.
 
int max_iterations = 200
 Maximum iterations.
 
double neighbor_radius = 20.0
 Cutoff for neighbor interactions (Angstrom)
 
ForceFieldType force_field = ForceFieldType::BuckinghamDE
 
bool use_cartesian_engine = true
 Use Cartesian T-tensor (vs S-functions)
 
bool fix_first_translation = true
 Legacy mode only (use_symmetry=false): fix translation of molecule 0.
 
bool fix_first_rotation = false
 Legacy mode only (use_symmetry=false): fix rotation of molecule 0.
 
int lbfgs_memory = 10
 L-BFGS history size.
 
double max_displacement = 0.05
 MSTMIN max component displacement per cycle.
 
double mst_step_tolerance = 1e-6
 MSTMIN convergence on max |step component|.
 
double mst_rotation_scale = 0.2
 Internal MSTMIN scale factor for rotational DOF.
 
double mst_cell_scale = 0.1
 Internal MSTMIN scale factor for cell strain DOF.
 
int max_hessian_updates = 1000
 MSTMIN updates before inverse-Hessian reset.
 
int mst_max_line_search = 40
 MSTMIN max line-search trial steps per cycle.
 
int mst_max_line_search_restarts = 2
 MSTMIN auto-restarts after line-search failure.
 
int mst_max_function_evaluations = 4000
 MSTMIN global objective-evaluation cap.
 
int mst_line_search_report_interval = 100
 Report line-search stalls every N trial evals.
 
double trust_region_radius = 1.0
 Initial trust region radius.
 
int hessian_update_interval = 5
 Recompute Hessian every N iterations (1=always, >1 uses SR1)
 
std::string trajectory_file
 If non-empty, write XYZ trajectory to this file.
 
bool require_exact_hessian = true
 If true, disable TrustRegion when exact Hessian is unavailable.
 
bool use_symmetry = true
 Use crystallographic symmetry to reduce DOF (Z' molecules instead of Z).
 
bool optimize_cell = false
 Optimize the unit cell with 6 Voigt strain DOF (E1..E6).
 
bool constrain_cell_strain_by_lattice = true
 Constrain cell strain components to match lattice system (default true).
 
bool adaptive_neighbor_rebuild = false
 Adaptive neighbor-list rebuild controls (for explicit neighbor mode).
 
double neighbor_rebuild_displacement = 0.25
 Angstrom COM threshold.
 
double neighbor_rebuild_rotation = 0.15
 Radians per-molecule threshold.
 
double neighbor_rebuild_cell_strain = 0.01
 Max Voigt strain change threshold.
 
int neighbor_rebuild_interval = 10
 Force rebuild every N objective calls.
 
bool freeze_neighbors_during_linesearch = true
 Keep neighbor list fixed for trial points within line search / trust steps, and only rebuild after accepted iterations (in optimizer callbacks).
 
int max_interaction_order = 4
 Max multipole interaction order (lA+lB); -1 = no truncation.
 
bool use_ewald = true
 Enable Ewald-split electrostatics.
 
double ewald_accuracy = 1e-6
 Target accuracy for eta/kmax auto choice.
 
double ewald_eta = 0.0
 Override Gaussian split (Ang^-1); 0 => auto.
 
int ewald_kmax = 0
 Override reciprocal cutoff integer extent; 0 => auto.
 
double external_pressure_gpa = 0.0
 

Detailed Description

Settings for crystal structure optimization.

Member Data Documentation

◆ adaptive_neighbor_rebuild

bool occ::mults::CrystalOptimizerSettings::adaptive_neighbor_rebuild = false

Adaptive neighbor-list rebuild controls (for explicit neighbor mode).

Default false for deterministic DMACRYS-style rebuild behavior.

◆ constrain_cell_strain_by_lattice

bool occ::mults::CrystalOptimizerSettings::constrain_cell_strain_by_lattice = true

Constrain cell strain components to match lattice system (default true).

Example: monoclinic -> only one shear component (single angle) is active.

◆ energy_tolerance

double occ::mults::CrystalOptimizerSettings::energy_tolerance = 1e-7

Convergence: |ΔE| < tol.

◆ ewald_accuracy

double occ::mults::CrystalOptimizerSettings::ewald_accuracy = 1e-6

Target accuracy for eta/kmax auto choice.

◆ ewald_eta

double occ::mults::CrystalOptimizerSettings::ewald_eta = 0.0

Override Gaussian split (Ang^-1); 0 => auto.

◆ ewald_kmax

int occ::mults::CrystalOptimizerSettings::ewald_kmax = 0

Override reciprocal cutoff integer extent; 0 => auto.

◆ external_pressure_gpa

double occ::mults::CrystalOptimizerSettings::external_pressure_gpa = 0.0

◆ fix_first_rotation

bool occ::mults::CrystalOptimizerSettings::fix_first_rotation = false

Legacy mode only (use_symmetry=false): fix rotation of molecule 0.

◆ fix_first_translation

bool occ::mults::CrystalOptimizerSettings::fix_first_translation = true

Legacy mode only (use_symmetry=false): fix translation of molecule 0.

◆ force_field

ForceFieldType occ::mults::CrystalOptimizerSettings::force_field = ForceFieldType::BuckinghamDE

◆ freeze_neighbors_during_linesearch

bool occ::mults::CrystalOptimizerSettings::freeze_neighbors_during_linesearch = true

Keep neighbor list fixed for trial points within line search / trust steps, and only rebuild after accepted iterations (in optimizer callbacks).

◆ gradient_tolerance

double occ::mults::CrystalOptimizerSettings::gradient_tolerance = 1e-4

Convergence: ||g|| < tol.

◆ hessian_update_interval

int occ::mults::CrystalOptimizerSettings::hessian_update_interval = 5

Recompute Hessian every N iterations (1=always, >1 uses SR1)

◆ lbfgs_memory

int occ::mults::CrystalOptimizerSettings::lbfgs_memory = 10

L-BFGS history size.

◆ max_displacement

double occ::mults::CrystalOptimizerSettings::max_displacement = 0.05

MSTMIN max component displacement per cycle.

◆ max_hessian_updates

int occ::mults::CrystalOptimizerSettings::max_hessian_updates = 1000

MSTMIN updates before inverse-Hessian reset.

◆ max_interaction_order

int occ::mults::CrystalOptimizerSettings::max_interaction_order = 4

Max multipole interaction order (lA+lB); -1 = no truncation.

◆ max_iterations

int occ::mults::CrystalOptimizerSettings::max_iterations = 200

Maximum iterations.

◆ method

OptimizationMethod occ::mults::CrystalOptimizerSettings::method = OptimizationMethod::MSTMIN

Optimization method.

◆ mst_cell_scale

double occ::mults::CrystalOptimizerSettings::mst_cell_scale = 0.1

Internal MSTMIN scale factor for cell strain DOF.

◆ mst_line_search_report_interval

int occ::mults::CrystalOptimizerSettings::mst_line_search_report_interval = 100

Report line-search stalls every N trial evals.

◆ mst_max_function_evaluations

int occ::mults::CrystalOptimizerSettings::mst_max_function_evaluations = 4000

MSTMIN global objective-evaluation cap.

◆ mst_max_line_search

int occ::mults::CrystalOptimizerSettings::mst_max_line_search = 40

MSTMIN max line-search trial steps per cycle.

◆ mst_max_line_search_restarts

int occ::mults::CrystalOptimizerSettings::mst_max_line_search_restarts = 2

MSTMIN auto-restarts after line-search failure.

◆ mst_rotation_scale

double occ::mults::CrystalOptimizerSettings::mst_rotation_scale = 0.2

Internal MSTMIN scale factor for rotational DOF.

◆ mst_step_tolerance

double occ::mults::CrystalOptimizerSettings::mst_step_tolerance = 1e-6

MSTMIN convergence on max |step component|.

◆ neighbor_radius

double occ::mults::CrystalOptimizerSettings::neighbor_radius = 20.0

Cutoff for neighbor interactions (Angstrom)

◆ neighbor_rebuild_cell_strain

double occ::mults::CrystalOptimizerSettings::neighbor_rebuild_cell_strain = 0.01

Max Voigt strain change threshold.

◆ neighbor_rebuild_displacement

double occ::mults::CrystalOptimizerSettings::neighbor_rebuild_displacement = 0.25

Angstrom COM threshold.

◆ neighbor_rebuild_interval

int occ::mults::CrystalOptimizerSettings::neighbor_rebuild_interval = 10

Force rebuild every N objective calls.

◆ neighbor_rebuild_rotation

double occ::mults::CrystalOptimizerSettings::neighbor_rebuild_rotation = 0.15

Radians per-molecule threshold.

◆ optimize_cell

bool occ::mults::CrystalOptimizerSettings::optimize_cell = false

Optimize the unit cell with 6 Voigt strain DOF (E1..E6).

◆ require_exact_hessian

bool occ::mults::CrystalOptimizerSettings::require_exact_hessian = true

If true, disable TrustRegion when exact Hessian is unavailable.

◆ trajectory_file

std::string occ::mults::CrystalOptimizerSettings::trajectory_file

If non-empty, write XYZ trajectory to this file.

◆ trust_region_radius

double occ::mults::CrystalOptimizerSettings::trust_region_radius = 1.0

Initial trust region radius.

◆ use_cartesian_engine

bool occ::mults::CrystalOptimizerSettings::use_cartesian_engine = true

Use Cartesian T-tensor (vs S-functions)

◆ use_ewald

bool occ::mults::CrystalOptimizerSettings::use_ewald = true

Enable Ewald-split electrostatics.

◆ use_symmetry

bool occ::mults::CrystalOptimizerSettings::use_symmetry = true

Use crystallographic symmetry to reduce DOF (Z' molecules instead of Z).

When true, only independent molecule DOF are optimized.


The documentation for this struct was generated from the following file: