Quantum 3xplorer (Q3)
An AI-native quantum simulation engine
Loading...
Searching...
No Matches
q3::BerkeleyGWRecordWriter Class Reference

Writes the records BerkeleyGW's files share; see the file comment. More...

#include <record_writer.hpp>

Public Member Functions

 BerkeleyGWRecordWriter (const MeanFieldRecord &&)=delete
 See the file writers' own deleted rvalue constructors: this holds a reference.
 
 BerkeleyGWRecordWriter (const MeanFieldRecord &record)
 
void write_charge_density_gvectors (std::ofstream &output_file) const
 [nrecord=1][ng][gvec(3,ng)] – the charge-density G-set, in the record's order.
 
void write_complex_block (std::ofstream &output_file, int32_t count, const Complex *values, size_t number_of_values) const
 [nrecord=1][count][values] – one data block of count complex values per spin.
 
void write_kpoint_coordinates (std::ofstream &output_file) const
 
void write_kpoint_gvectors (std::ofstream &output_file, int kpoint_index) const
 [nrecord=1][ngk][gvec_k(3,ngk)] – the plane waves of one k-point, in the record's order.
 
void write_normalized_kpoint_weights (std::ofstream &output_file) const
 
void write_plane_wave_counts (std::ofstream &output_file) const
 ngk(nk) – plane waves per k-point.
 

Detailed Description

Writes the records BerkeleyGW's files share; see the file comment.

Definition at line 28 of file record_writer.hpp.

Constructor & Destructor Documentation

◆ BerkeleyGWRecordWriter() [1/2]

q3::BerkeleyGWRecordWriter::BerkeleyGWRecordWriter ( const MeanFieldRecord &  record)
inlineexplicit

Definition at line 30 of file record_writer.hpp.

◆ BerkeleyGWRecordWriter() [2/2]

q3::BerkeleyGWRecordWriter::BerkeleyGWRecordWriter ( const MeanFieldRecord &&  )
explicitdelete

See the file writers' own deleted rvalue constructors: this holds a reference.

Member Function Documentation

◆ write_charge_density_gvectors()

void q3::BerkeleyGWRecordWriter::write_charge_density_gvectors ( std::ofstream &  output_file) const
inline

[nrecord=1][ng][gvec(3,ng)] – the charge-density G-set, in the record's order.

Definition at line 35 of file record_writer.hpp.

References q3::MeanFieldRecord::charge_density_miller_indices.

Referenced by q3::BerkeleyGWFieldFile::write(), q3::BerkeleyGWKleinmanBylanderProjectorFile::write_to_file(), and q3::BerkeleyGWWavefunctionFile::write_to_file().

◆ write_complex_block()

void q3::BerkeleyGWRecordWriter::write_complex_block ( std::ofstream &  output_file,
int32_t  count,
const Complex *  values,
size_t  number_of_values 
) const
inline

[nrecord=1][count][values] – one data block of count complex values per spin.

Definition at line 129 of file record_writer.hpp.

Referenced by q3::BerkeleyGWFieldFile::write().

◆ write_kpoint_coordinates()

void q3::BerkeleyGWRecordWriter::write_kpoint_coordinates ( std::ofstream &  output_file) const
inline

kpt(3,nk), crystal coordinates. Q3 holds k-points in crystal coordinates throughout (kpoint.hpp), so unlike the converter, which converts from Cartesian, nothing is transformed here.

Definition at line 95 of file record_writer.hpp.

References q3::MeanFieldRecord::kpoint_coordinates, q3::QEBinaryRecordFormat::write_record(), q3::Vector3D::x, q3::Vector3D::y, and q3::Vector3D::z.

Referenced by q3::BerkeleyGWKleinmanBylanderProjectorFile::write_to_file(), and q3::BerkeleyGWWavefunctionFile::write_to_file().

◆ write_kpoint_gvectors()

void q3::BerkeleyGWRecordWriter::write_kpoint_gvectors ( std::ofstream &  output_file,
int  kpoint_index 
) const
inline

[nrecord=1][ngk][gvec_k(3,ngk)] – the plane waves of one k-point, in the record's order.

Definition at line 110 of file record_writer.hpp.

References q3::MeanFieldRecord::charge_density_miller_indices, q3::MeanFieldRecord::kpoint_g_vector_indices, and q3::MeanFieldRecord::plane_waves_per_kpoint.

◆ write_normalized_kpoint_weights()

void q3::BerkeleyGWRecordWriter::write_normalized_kpoint_weights ( std::ofstream &  output_file) const
inline

kw(nk), normalized so sum(kw) = 1 as BerkeleyGW requires.

The converter gets there by writing the k-point weight times the number of spin components over 2, which leans on the invariant that the weights sum to 2. Q3's generated grids share that invariant (KPointsGrid::scale_weights()), but an explicit control.kpoints_list reaches here from the input verbatim – and a list written on BerkeleyGW's own sum-to-1 convention, the natural choice for the NSCF run BerkeleyGW is fed from, would land on disk as sum(kw) = 0.5. So the weights are divided by their actual sum: identical whenever the invariant holds, correct when it does not.

Definition at line 71 of file record_writer.hpp.

References q3::MeanFieldRecord::kpoint_weights, and q3::QEBinaryRecordFormat::write_record().

Referenced by q3::BerkeleyGWKleinmanBylanderProjectorFile::write_to_file(), and q3::BerkeleyGWWavefunctionFile::write_to_file().

◆ write_plane_wave_counts()

void q3::BerkeleyGWRecordWriter::write_plane_wave_counts ( std::ofstream &  output_file) const
inline

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