Mantid
Loading...
Searching...
No Matches
CrystalElectricField.h
Go to the documentation of this file.
1// Mantid Repository : https://github.com/mantidproject/mantid
2//
3// Copyright © 2018 ISIS Rutherford Appleton Laboratory UKRI,
4// NScD Oak Ridge National Laboratory, European Spallation Source,
5// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
6// SPDX - License - Identifier: GPL - 3.0 +
7#pragma once
8
9#include "MantidCurveFitting/DllConfig.h"
11
12namespace Mantid {
13namespace CurveFitting {
14namespace Functions {
15
16void MANTID_CURVEFITTING_DLL calculateEigensystem(DoubleFortranVector &eigenvalues, ComplexFortranMatrix &eigenvectors,
17 ComplexFortranMatrix &hamiltonian, ComplexFortranMatrix &hzeeman,
18 int nre, const DoubleFortranVector &bmol,
19 const DoubleFortranVector &bext, const ComplexFortranMatrix &bkq,
20 double alpha_euler = 0.0, double beta_euler = 0.0,
21 double gamma_euler = 0.0);
22
23inline void MANTID_CURVEFITTING_DLL calculateEigensystem(
24 DoubleFortranVector &eigenvalues, ComplexFortranMatrix &eigenvectors, ComplexFortranMatrix &hamiltonian, int nre,
25 const DoubleFortranVector &bmol, const DoubleFortranVector &bext, const ComplexFortranMatrix &bkq,
26 double alpha_euler = 0.0, double beta_euler = 0.0, double gamma_euler = 0.0) {
28 calculateEigensystem(eigenvalues, eigenvectors, hamiltonian, hzeeman, nre, bmol, bext, bkq, alpha_euler, beta_euler,
29 gamma_euler);
30}
31
32void MANTID_CURVEFITTING_DLL calculateZeemanEigensystem(DoubleFortranVector &eigenvalues,
33 ComplexFortranMatrix &eigenvectors,
34 const ComplexFortranMatrix &hamiltonian, int nre,
35 const DoubleFortranVector &bext);
36
37void MANTID_CURVEFITTING_DLL calculateIntensities(int nre, const DoubleFortranVector &energies,
38 const ComplexFortranMatrix &wavefunctions, double temperature,
39 double de, IntFortranVector &degeneration,
40 DoubleFortranVector &e_energies, DoubleFortranMatrix &i_energies);
41
42void MANTID_CURVEFITTING_DLL calculateExcitations(const DoubleFortranVector &e_energies,
43 const DoubleFortranMatrix &i_energies, double de, double di,
44 DoubleFortranVector &e_excitations,
45 DoubleFortranVector &i_excitations);
46
47void MANTID_CURVEFITTING_DLL calculateMagneticMoment(const ComplexFortranMatrix &ev, const DoubleFortranVector &Hmag,
48 const int nre, DoubleFortranVector &moment);
49
50void MANTID_CURVEFITTING_DLL calculateMagneticMomentMatrix(const ComplexFortranMatrix &ev,
51 const std::vector<double> &Hdir, const int nre,
53
54} // namespace Functions
55} // namespace CurveFitting
56} // namespace Mantid
void MANTID_CURVEFITTING_DLL calculateMagneticMoment(const ComplexFortranMatrix &ev, const DoubleFortranVector &Hmag, const int nre, DoubleFortranVector &moment)
Calculate the diagonal matrix elements of the magnetic moment operator in a particular eigenvector ba...
void MANTID_CURVEFITTING_DLL calculateEigensystem(DoubleFortranVector &eigenvalues, ComplexFortranMatrix &eigenvectors, ComplexFortranMatrix &hamiltonian, ComplexFortranMatrix &hzeeman, int nre, const DoubleFortranVector &bmol, const DoubleFortranVector &bext, const ComplexFortranMatrix &bkq, double alpha_euler=0.0, double beta_euler=0.0, double gamma_euler=0.0)
Calculate eigenvalues and eigenvectors of the crystal field hamiltonian.
void MANTID_CURVEFITTING_DLL calculateExcitations(const DoubleFortranVector &e_energies, const DoubleFortranMatrix &i_energies, double de, double di, DoubleFortranVector &e_excitations, DoubleFortranVector &i_excitations)
Calculate the excitations (transition energies) and their intensities.
void MANTID_CURVEFITTING_DLL calculateZeemanEigensystem(DoubleFortranVector &eigenvalues, ComplexFortranMatrix &eigenvectors, const ComplexFortranMatrix &hamiltonian, int nre, const DoubleFortranVector &bext)
Calculates the eigenvalues/vectors of a crystal field Hamiltonian in a specified external magnetic fi...
void MANTID_CURVEFITTING_DLL calculateMagneticMomentMatrix(const ComplexFortranMatrix &ev, const std::vector< double > &Hdir, const int nre, ComplexFortranMatrix &mumat)
Calculate the full magnetic moment matrix in a particular eigenvector basis.
void MANTID_CURVEFITTING_DLL calculateIntensities(int nre, const DoubleFortranVector &energies, const ComplexFortranMatrix &wavefunctions, double temperature, double de, IntFortranVector &degeneration, DoubleFortranVector &e_energies, DoubleFortranMatrix &i_energies)
Calculate the intensities of transitions.
FortranMatrix< ComplexMatrix > ComplexFortranMatrix
FortranVector< EigenVector > DoubleFortranVector
Helper class which provides the Collimation Length for SANS instruments.