occ
Loading...
Searching...
No Matches
occ::mults::CrystalOptimizer Class Reference

Rigid molecule crystal structure optimizer. More...

#include <crystal_optimizer.h>

Public Types

using IterationCallback = std::function< bool(int, double, double)>
 Callback for iteration monitoring: callback(iter, energy, gradient_norm) -> continue?
 

Public Member Functions

 CrystalOptimizer (CrystalEnergySetup setup, const CrystalOptimizerSettings &settings={})
 Construct optimizer for a crystal structure.
 
 CrystalOptimizer (const crystal::Crystal &crystal, std::vector< MultipoleSource > multipoles, const CrystalOptimizerSettings &settings={})
 Legacy constructor from Crystal + MultipleSources.
 
CrystalOptimizerResult optimize ()
 Run optimization.
 
CrystalOptimizerResult optimize (IterationCallback callback)
 Run optimization with iteration callback.
 
Vec get_parameters () const
 Get current parameters as flat vector.
 
void set_parameters (const Vec &params)
 Set parameters from flat vector.
 
const std::vector< MoleculeState > & states () const
 Get current molecular states (all Z UC molecules).
 
const std::vector< MoleculeState > & initial_states () const
 Get initial molecular states (before optimization).
 
crystal::Crystal build_optimized_crystal () const
 Build optimized crystal from current states.
 
CrystalEnergyResult compute_energy_gradient ()
 Compute energy and gradient at current state.
 
void reinitialize_states ()
 Re-sync optimizer's states from the energy calculator.
 
CrystalEnergyenergy_calculator ()
 Access underlying energy calculator.
 
const CrystalEnergyenergy_calculator () const
 
const CrystalOptimizerSettingssettings () const
 Access settings.
 
const SymmetryMappingsymmetry_mapping () const
 Access symmetry mapping (valid when use_symmetry=true).
 
int num_parameters () const
 Number of optimizable parameters.
 

Detailed Description

Rigid molecule crystal structure optimizer.

Optimizes molecular positions and orientations to minimize the crystal lattice energy. Can operate in two modes:

  1. Symmetry-aware (use_symmetry=true, default): Optimizes only Z' independent molecule DOF and generates the remaining Z molecules via symmetry operations. For Z'<1, site symmetry constraints further reduce DOF.
  2. All-molecule (use_symmetry=false): Treats all Z molecules as independent (legacy behavior). Useful for debugging.

Member Typedef Documentation

◆ IterationCallback

using occ::mults::CrystalOptimizer::IterationCallback = std::function<bool(int, double, double)>

Callback for iteration monitoring: callback(iter, energy, gradient_norm) -> continue?

Constructor & Destructor Documentation

◆ CrystalOptimizer() [1/2]

occ::mults::CrystalOptimizer::CrystalOptimizer ( CrystalEnergySetup  setup,
const CrystalOptimizerSettings settings = {} 
)

Construct optimizer for a crystal structure.

Parameters
crystalInput crystal structure
multipolesBody-frame multipoles for each unique molecule
settingsOptimization settings Construct from explicit molecule data. Preferred constructor.

◆ CrystalOptimizer() [2/2]

occ::mults::CrystalOptimizer::CrystalOptimizer ( const crystal::Crystal crystal,
std::vector< MultipoleSource multipoles,
const CrystalOptimizerSettings settings = {} 
)

Legacy constructor from Crystal + MultipleSources.

Member Function Documentation

◆ build_optimized_crystal()

crystal::Crystal occ::mults::CrystalOptimizer::build_optimized_crystal ( ) const

Build optimized crystal from current states.

◆ compute_energy_gradient()

CrystalEnergyResult occ::mults::CrystalOptimizer::compute_energy_gradient ( )

Compute energy and gradient at current state.

◆ energy_calculator() [1/2]

CrystalEnergy & occ::mults::CrystalOptimizer::energy_calculator ( )
inline

Access underlying energy calculator.

◆ energy_calculator() [2/2]

const CrystalEnergy & occ::mults::CrystalOptimizer::energy_calculator ( ) const
inline

◆ get_parameters()

Vec occ::mults::CrystalOptimizer::get_parameters ( ) const

Get current parameters as flat vector.

◆ initial_states()

const std::vector< MoleculeState > & occ::mults::CrystalOptimizer::initial_states ( ) const
inline

Get initial molecular states (before optimization).

◆ num_parameters()

int occ::mults::CrystalOptimizer::num_parameters ( ) const
inline

Number of optimizable parameters.

◆ optimize() [1/2]

CrystalOptimizerResult occ::mults::CrystalOptimizer::optimize ( )

Run optimization.

Returns
Optimization result including optimized structure

◆ optimize() [2/2]

CrystalOptimizerResult occ::mults::CrystalOptimizer::optimize ( IterationCallback  callback)

Run optimization with iteration callback.

Parameters
callbackCalled after each iteration
Returns
Optimization result

◆ reinitialize_states()

void occ::mults::CrystalOptimizer::reinitialize_states ( )

Re-sync optimizer's states from the energy calculator.

Call this after modifying the energy calculator externally (e.g., via CrystalEnergySetup).

◆ set_parameters()

void occ::mults::CrystalOptimizer::set_parameters ( const Vec params)

Set parameters from flat vector.

◆ settings()

const CrystalOptimizerSettings & occ::mults::CrystalOptimizer::settings ( ) const
inline

Access settings.

◆ states()

const std::vector< MoleculeState > & occ::mults::CrystalOptimizer::states ( ) const
inline

Get current molecular states (all Z UC molecules).

◆ symmetry_mapping()

const SymmetryMapping & occ::mults::CrystalOptimizer::symmetry_mapping ( ) const
inline

Access symmetry mapping (valid when use_symmetry=true).


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