pub struct ParamDocument {Show 18 fields
pub general: GeneralParams,
pub electronic: ElectronicParams,
pub basis_set: BasisSetParams,
pub exchange_correlation: ExchangeCorrelationParams,
pub electronic_minimisation: ElectronicMinimisationParams,
pub geometry_optimization: GeometryOptimizationParams,
pub phonon: PhononParams,
pub band_structure: BandStructureParams,
pub molecular_dynamics: MolecularDynamicsParams,
pub electric_field: ElectricFieldParams,
pub pseudopotential: PseudopotentialParams,
pub density_mixing: DensityMixingParams,
pub population_analysis: PopulationAnalysisParams,
pub optics: OpticsParams,
pub nmr: NmrParams,
pub solvation: SolvationParams,
pub electronic_excitations: ElectronicExcitationsParams,
pub transition_state: TransitionStateParams,
}Expand description
Complete representation of a CASTEP .param file.
This is the primary type for working with CASTEP parameter files. It organizes the 100+ CASTEP parameters into 18 logical groups, making it easier to discover related parameters and maintain the codebase.
§Organization
Each field represents a group of related parameters. All groups default to empty
(all parameters None), allowing you to specify only the parameters you need.
§Validation
The document automatically validates inter-group constraints during parsing:
- Band count parameters (
NBANDS,NEXTRA_BANDS,PERC_EXTRA_BANDS) are mutually exclusive - Band structure parameters (
BS_NBANDS,BS_NEXTRA_BANDS,BS_PERC_EXTRA_BANDS) are mutually exclusive - Optics parameters (
OPTICS_NBANDS,OPTICS_NEXTRA_BANDS,OPTICS_PERC_EXTRA_BANDS) are mutually exclusive
Each parameter group also validates its own internal constraints.
§Construction
Use the builder pattern (via bon):
use castep_cell_io::ParamDocument;
let doc = ParamDocument::builder()
.general(Default::default())
.electronic(Default::default())
.basis_set(Default::default())
.exchange_correlation(Default::default())
.electronic_minimisation(Default::default())
.geometry_optimization(Default::default())
.phonon(Default::default())
.band_structure(Default::default())
.molecular_dynamics(Default::default())
.electric_field(Default::default())
.pseudopotential(Default::default())
.density_mixing(Default::default())
.population_analysis(Default::default())
.optics(Default::default())
.nmr(Default::default())
.solvation(Default::default())
.electronic_excitations(Default::default())
.transition_state(Default::default())
.build();Or use Default for an empty document:
use castep_cell_io::ParamDocument;
let doc = ParamDocument::default();
assert!(doc.general.task.is_none());§Parsing and Serialization
Implements FromCellFile for parsing and ToCellFile for serialization.
Parsing automatically applies validation.
See the module-level documentation for examples.
Fields§
§general: GeneralParamsGeneral calculation parameters.
Controls task type, output verbosity, continuation, and runtime limits.
See GeneralParams for available parameters.
electronic: ElectronicParamsElectronic structure parameters.
Controls charge, spin, band counts, and electronic smearing.
See ElectronicParams for available parameters.
basis_set: BasisSetParamsBasis set parameters.
Controls plane-wave cutoff energy and finite basis corrections.
See BasisSetParams for available parameters.
exchange_correlation: ExchangeCorrelationParamsExchange-correlation functional parameters.
Controls XC functional choice, spin polarization, and DFT+U.
See ExchangeCorrelationParams for available parameters.
electronic_minimisation: ElectronicMinimisationParamsElectronic minimization (SCF) parameters.
Controls SCF convergence criteria and mixing schemes.
See ElectronicMinimisationParams for available parameters.
geometry_optimization: GeometryOptimizationParamsGeometry optimization parameters.
Controls optimization method and convergence criteria.
See GeometryOptimizationParams for available parameters.
phonon: PhononParamsPhonon calculation parameters.
Controls phonon calculation settings and convergence.
See PhononParams for available parameters.
band_structure: BandStructureParamsBand structure calculation parameters.
Controls band structure calculation settings.
See BandStructureParams for available parameters.
molecular_dynamics: MolecularDynamicsParamsMolecular dynamics parameters.
Controls MD ensemble, timestep, temperature, and thermostat.
See MolecularDynamicsParams for available parameters.
electric_field: ElectricFieldParamsElectric field parameters.
Controls finite electric field calculations.
See ElectricFieldParams for available parameters.
pseudopotential: PseudopotentialParamsPseudopotential parameters.
Controls pseudopotential generation and testing.
See PseudopotentialParams for available parameters.
density_mixing: DensityMixingParamsDensity mixing parameters.
Controls charge density mixing during SCF.
See DensityMixingParams for available parameters.
population_analysis: PopulationAnalysisParamsPopulation analysis parameters.
Controls Mulliken and Hirshfeld population analysis.
See PopulationAnalysisParams for available parameters.
optics: OpticsParamsOptical properties parameters.
Controls optical property calculations.
See OpticsParams for available parameters.
nmr: NmrParamsNMR parameters.
Controls NMR chemical shift calculations.
See NmrParams for available parameters.
solvation: SolvationParamsSolvation parameters.
Controls implicit solvent models.
See SolvationParams for available parameters.
electronic_excitations: ElectronicExcitationsParamsElectronic excitations parameters.
Controls excited state calculations.
See ElectronicExcitationsParams for available parameters.
transition_state: TransitionStateParamsTransition state search parameters.
Controls transition state search methods.
See TransitionStateParams for available parameters.
Implementations§
Source§impl ParamDocument
impl ParamDocument
Sourcepub fn builder() -> ParamDocumentBuilder
pub fn builder() -> ParamDocumentBuilder
Create an instance of ParamDocument using the builder syntax
Trait Implementations§
Source§impl Clone for ParamDocument
impl Clone for ParamDocument
Source§fn clone(&self) -> ParamDocument
fn clone(&self) -> ParamDocument
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ParamDocument
impl Debug for ParamDocument
Source§impl Default for ParamDocument
impl Default for ParamDocument
Source§fn default() -> ParamDocument
fn default() -> ParamDocument
Source§impl FromCellFile for ParamDocument
impl FromCellFile for ParamDocument
Source§fn from_cell_file(tokens: &[Cell<'_>]) -> CResult<Self>
fn from_cell_file(tokens: &[Cell<'_>]) -> CResult<Self>
Parse a ParamDocument from a slice of parsed Cell tokens.
This method is called by [castep_cell_fmt::parse] after tokenizing the input text.
It delegates parsing to each parameter group, then validates the complete document.
§Parsing Strategy
Each parameter group independently scans the token stream for its keywords. This allows parameters to appear in any order in the file. Unknown keywords are silently ignored (CASTEP’s behavior).
§Validation
After parsing all groups, validation is automatically called to check inter-group and intra-group constraints.
§Errors
Returns Error if:
- Any parameter value is malformed
- Validation constraints are violated
- Required parameter combinations are missing
§Example
use castep_cell_io::ParamDocument;
let input = r#"
TASK : GeometryOptimization
XC_FUNCTIONAL : PBE
CUT_OFF_ENERGY : 500 eV
"#;
let doc = castep_cell_fmt::parse::<ParamDocument>(input)?;Source§impl ToCellFile for ParamDocument
impl ToCellFile for ParamDocument
Source§fn to_cell_file(&self) -> Vec<Cell<'_>>
fn to_cell_file(&self) -> Vec<Cell<'_>>
Serialize this document to a vector of Cell tokens.
Converts the structured document back to the token representation used by
castep_cell_fmt. The tokens can then be formatted to text with
castep_cell_fmt::format.
§Group Order
Parameters are emitted in a standard order matching the field declaration order:
- General parameters
- Electronic structure
- Basis set
- Exchange-correlation
- Electronic minimization
- Geometry optimization
- Phonon calculations
- Band structure
- Molecular dynamics
- Electric field
- Pseudopotentials
- Density mixing
- Population analysis
- Optics
- NMR
- Solvation
- Electronic excitations
- Transition state search
Parameters that are None are omitted from the output.
§Example
use castep_cell_io::ParamDocument;
use castep_cell_fmt::{ToCellFile, format::to_string_many_spaced};
let doc = ParamDocument::default();
let cells = doc.to_cell_file();
let output = to_string_many_spaced(&cells);Auto Trait Implementations§
impl Freeze for ParamDocument
impl RefUnwindSafe for ParamDocument
impl Send for ParamDocument
impl Sync for ParamDocument
impl Unpin for ParamDocument
impl UnsafeUnpin for ParamDocument
impl UnwindSafe for ParamDocument
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);