|
NPSpec
0.2.0
Solve for the spectral properties of nanoparticles easily
|
Class to hold nanoparticle definition and calculate its spectrum. The interface for Python is the same as this C++ API. More...
#include <nanoparticle.hpp>
Public Member Functions | |
| Nanoparticle () | |
| Constructor. More... | |
| int | calculateSpectrum () |
| Calculate the spectra. More... | |
| void | getSpectrum (double spec[NPSpec::NLAMBDA]) const |
| Get the calculated spectrum. More... | |
| void | getRGB (double &r, double &g, double &b) const |
| Get the color associated with the calculated spectrum in RGB color space. More... | |
| void | getHSV (double &h, double &s, double &v) const |
| Get the color associated with the calculated spectrum in HSV color space. More... | |
| double | getOpacity () const |
| Get the opacity of the color associated with the calculated spectrum. More... | |
| int | getNLayers () const |
| Get the number of layers currently in the nanoparticle. More... | |
| NPSpec::NanoparticleShape | getShape () const |
| Get the current shape of the nanoparticle. More... | |
| NPSpec::SpectraType | getSpectraType () const |
| Get the current spectra type of the nanoparticle. More... | |
| NPSpec::SpectraProperty | getSpectraProperty () const |
| Get the current spectra property of the nanoparticle. More... | |
| double | getSphereRadius () const |
| Get the current sphere radius. More... | |
| double | getEllipsoidZRadius () const |
| Get the current Z-component of the ellipsoid radius in nm. More... | |
| double | getEllipsoidXYRadius () const |
| Get the current XY-component of the ellipsoid radius in nm. More... | |
| double | getSphereLayerRelativeRadius (int layer_num) const |
| Get the sphere's relative radius in nm of a particular layer. More... | |
| double | getEllipsoidLayerZRelativeRadius (int layer_num) const |
| Get the ellipsoid's relative radius of a particular layer in the Z-direction. More... | |
| double | getEllipsoidLayerXYRelativeRadius (int layer_num) const |
| Get the ellipsoid's relative radius of a particular layer in the XY-direction. More... | |
| std::string | getLayerMaterial (int layer_num) const |
| Get the material for the given layer. More... | |
| int | getLayerIndex (int layer_num) const |
| Get the index corresponding to the material for the given layer. More... | |
| int | getIncrement () const |
| Get the increment used when calculating the spectrum. More... | |
| double | getPathLength () const |
| Get the Beer's law path length in centimeters. More... | |
| double | getConcentration () const |
| Get the Beer's law concentration in molarity. More... | |
| bool | getSizeCorrect () const |
| Get the size correction flag. More... | |
| double | getMediumRefractiveIndex () const |
| Get the refractive index of the surrounding medium. More... | |
| void | setNLayers (int nlay) |
| Sets the number of layers currently in the nanoparticle. More... | |
| void | setShape (NPSpec::NanoparticleShape npshape) |
| Sets the current nanoparticle shape. | |
| void | setSpectraType (NPSpec::SpectraType stype) |
| Sets the type of spectrum to calculate. More... | |
| void | setSpectraProperty (NPSpec::SpectraProperty spec) |
| Sets the property of the spectrum for which to calculate. More... | |
| void | setSphereRadius (double rad) |
| Sets the current spherical radius in nm. More... | |
| void | setEllipsoidRadius (double zrad, double xyrad) |
| Sets the current ellipsoid radius in nm. More... | |
| void | setSphereLayerRelativeRadius (int layer_num, double rrad) |
| Sets the spherical relative radius for the given layer. More... | |
| void | setEllipsoidLayerRelativeRadius (int layer_num, double zrrad, double xyrrad) |
| Sets the ellipsoid relative radiis for the given layer. More... | |
| void | setLayerMaterial (int layer_num, std::string mat) |
| Sets the material for a particular layer of the nanoparticle. More... | |
| void | setIncrement (int i) |
| Sets the increment used when calculating the spectrum. More... | |
| void | setPathLength (double len) |
| Sets the Beer's law path length in centimeters. More... | |
| void | setConcentration (double conc) |
| Sets the Beer's law concentration in molarity. More... | |
| void | setSizeCorrect (bool corr) |
| Sets whether size correction will be used in the spectrum calculation or not. More... | |
| void | setMediumRefractiveIndex (double mref) |
| Sets the refractive index of the surrounding medium. More... | |
Class to hold nanoparticle definition and calculate its spectrum. The interface for Python is the same as this C++ API.
Currently, the following materials are implemented: Ag, AlAs, AlSb, Au, Be, CdS, CdSe, Co, Cr, Cu, Cu2O, CuO, Diamond, Diamond_film, GaAs, GaP, Ge, Glass, Graphite, InAs, InP, InSb, Ir, K, Li, Mo, Na, Nb, Ni, Os, PbS, PbSe, PbTe, Pd, Pt, Quartz, Rh, Si, SiC, SiO, Ta, Te, TiO2, V, W, ZnS, ZnSe, ZnTe
A maximum of 10 nanoparticle layers is allowed (layer numbers are 1 - 10).
| Nanoparticle::Nanoparticle | ( | ) |
Constructor.
The constructor makes the following initiallizations:
| int Nanoparticle::calculateSpectrum | ( | ) |
Calculate the spectra.
This should only be used after the nanoparticle is defined.
| std::out_of_range | This is thrown if the number of layers is out of range |
| std::invalid_argument | Unknown material or invalid increment |
| std::domain_error | Radii, path length, concentration, or refractive index is negative, relative radii don't sum to 1.0 |
| double Nanoparticle::getConcentration | ( | ) | const |
Get the Beer's law concentration in molarity.
| double Nanoparticle::getEllipsoidLayerXYRelativeRadius | ( | int | layer_num | ) | const |
Get the ellipsoid's relative radius of a particular layer in the XY-direction.
| layer_num | The layer of which you wish to know the relative radius. |
| std::out_of_range | The layer number is invalid. |
| double Nanoparticle::getEllipsoidLayerZRelativeRadius | ( | int | layer_num | ) | const |
Get the ellipsoid's relative radius of a particular layer in the Z-direction.
| layer_num | The layer of which you wish to know the relative radius. |
| std::out_of_range | The layer number is invalid. |
| double Nanoparticle::getEllipsoidXYRadius | ( | ) | const |
Get the current XY-component of the ellipsoid radius in nm.
| double Nanoparticle::getEllipsoidZRadius | ( | ) | const |
Get the current Z-component of the ellipsoid radius in nm.
| void Nanoparticle::getHSV | ( | double & | h, |
| double & | s, | ||
| double & | v | ||
| ) | const |
Get the color associated with the calculated spectrum in HSV color space.
This should only be used after calling getSpectrum.
TODO: Calculate the color for absorbtion and transmission differently.
| h | The HUE of the color space, between 0 and 360 (inclusive). |
| s | The SATURATION part of the color space, between 0 and 1 (inclusive). |
| v | The VALUE part of the color space, between 0 and 1 (inclusive). |
h, s, and v are returned as a 3-tuple, so this would be called as h, s, v = Nanoparticle.getHSV(). | int Nanoparticle::getIncrement | ( | ) | const |
Get the increment used when calculating the spectrum.
| int Nanoparticle::getLayerIndex | ( | int | layer_num | ) | const |
Get the index corresponding to the material for the given layer.
| layer_num | The material index of which you wish to know the relative radius. |
| std::out_of_range | The layer number is invalid. |
| std::string Nanoparticle::getLayerMaterial | ( | int | layer_num | ) | const |
Get the material for the given layer.
| layer_num | The layer of which you wish to know the relative radius. |
| std::out_of_range | The layer number is invalid. |
| double Nanoparticle::getMediumRefractiveIndex | ( | ) | const |
Get the refractive index of the surrounding medium.
| int Nanoparticle::getNLayers | ( | ) | const |
Get the number of layers currently in the nanoparticle.
| double Nanoparticle::getOpacity | ( | ) | const |
Get the opacity of the color associated with the calculated spectrum.
This should only be used after calling getSpectrum.
| double Nanoparticle::getPathLength | ( | ) | const |
Get the Beer's law path length in centimeters.
| void Nanoparticle::getRGB | ( | double & | r, |
| double & | g, | ||
| double & | b | ||
| ) | const |
Get the color associated with the calculated spectrum in RGB color space.
This should only be used after calling getSpectrum.
TODO: Calculate the color for absorbtion and transmission differently.
| r | The RED part of the color space, between 0 and 1 (inclusive). |
| g | The GREEN part of the color space, between 0 and 1 (inclusive). |
| b | The BLUE part of the color space, between 0 and 1 (inclusive). |
r, g, and b are returned as a 3-tuple, so this would be called as r, g, b = Nanoparticle.getRGB(). | NanoparticleShape Nanoparticle::getShape | ( | ) | const |
Get the current shape of the nanoparticle.
| bool Nanoparticle::getSizeCorrect | ( | ) | const |
Get the size correction flag.
| SpectraProperty Nanoparticle::getSpectraProperty | ( | ) | const |
Get the current spectra property of the nanoparticle.
| SpectraType Nanoparticle::getSpectraType | ( | ) | const |
Get the current spectra type of the nanoparticle.
| void Nanoparticle::getSpectrum | ( | double | spec[NPSpec::NLAMBDA] | ) | const |
Get the calculated spectrum.
This should only be used after calling calculateSpectrum.
| spec | The calculated spectrum. |
spec is a numpy array that is returned by the function, so this would be called as spec = Nanoparticle.calculateSpectrum(). | double Nanoparticle::getSphereLayerRelativeRadius | ( | int | layer_num | ) | const |
Get the sphere's relative radius in nm of a particular layer.
| layer_num | The layer of which you wish to know the relative radius. |
| std::out_of_range | The layer number is invalid. |
| double Nanoparticle::getSphereRadius | ( | ) | const |
Get the current sphere radius.
| void Nanoparticle::setConcentration | ( | double | conc | ) |
Sets the Beer's law concentration in molarity.
| conc | When calculating absorption, this is the Beer's law path concentration in molarity to use. The default is \(10^{-6}\) M. |
| void Nanoparticle::setEllipsoidLayerRelativeRadius | ( | int | layer_num, |
| double | zrrad, | ||
| double | xyrrad | ||
| ) |
Sets the ellipsoid relative radiis for the given layer.
| layer_num | The layer of which you wish to change the relative radius. |
| zrrad | The new Z-component relative radius of the given layer. The relative radius must be between 0 and 1. |
| xyrrad | The new XY-component relative radius of the given layer. The relative radius must be between 0 and 1. |
| std::out_of_range | The requested number of layers is illegal. |
| std::domain_error | A non-positive relative radius was given. |
| void Nanoparticle::setEllipsoidRadius | ( | double | zrad, |
| double | xyrad | ||
| ) |
Sets the current ellipsoid radius in nm.
| zrad | The Z-component radius to set for a spherical nanoparticle. |
| xyrad | The XY-component radius to set for a spherical nanoparticle. |
| std::domain_error | A non-positive radius was given. |
| void Nanoparticle::setIncrement | ( | int | i | ) |
Sets the increment used when calculating the spectrum.
| i | This is the increment to use when looping over the wavelengths. There are 800 wavelengths in increments of 1 nm. This value must be a factor 800. This is useful if you have to repeatedly calculate the spectrum such as in a real-time GUI. The default is 1. |
| void Nanoparticle::setLayerMaterial | ( | int | layer_num, |
| std::string | mat | ||
| ) |
Sets the material for a particular layer of the nanoparticle.
| layer_num | The layer to set the material for. |
| mat | String specifying the material to set. The default for all layers is "Ag". |
| std::out_of_range | The requested number of layers is illegal. |
| std::invalid_argument | Unknown material. |
| void Nanoparticle::setMediumRefractiveIndex | ( | double | mref | ) |
Sets the refractive index of the surrounding medium.
| mref | The refracive index of the surrounding medium. The default is 1.0. |
| void Nanoparticle::setNLayers | ( | int | nlay | ) |
Sets the number of layers currently in the nanoparticle.
| nlay | The number of layers you wish the nanoparticle to have. The default is 1. |
| std::out_of_range | The requested number of layers is illegal. |
| void Nanoparticle::setPathLength | ( | double | len | ) |
Sets the Beer's law path length in centimeters.
| len | When calculating absorption, this is the Beer's law path length in cm to use. The default is 1.0 cm. |
| void Nanoparticle::setSizeCorrect | ( | bool | corr | ) |
Sets whether size correction will be used in the spectrum calculation or not.
| corr | If true size correction will be enabled, if false it will not. The default is false. |
| void Nanoparticle::setSpectraProperty | ( | NPSpec::SpectraProperty | spec | ) |
Sets the property of the spectrum for which to calculate.
| spec | The property of the spectrum you wish to calculate. |
| void Nanoparticle::setSpectraType | ( | NPSpec::SpectraType | stype | ) |
Sets the type of spectrum to calculate.
| stype | The type of the spectrum you wish to calculate. |
| void Nanoparticle::setSphereLayerRelativeRadius | ( | int | layer_num, |
| double | rrad | ||
| ) |
Sets the spherical relative radius for the given layer.
| layer_num | The layer of which you wish to change the relative radius. |
| rrad | The new relative radius of the given layer. The relative radius must be between 0 and 1. |
| std::out_of_range | The requested number of layers is illegal. |
| std::domain_error | A non-positive relative radius was given. |
| void Nanoparticle::setSphereRadius | ( | double | rad | ) |
Sets the current spherical radius in nm.
| rad | The radius to set for a spherical nanoparticle. |
| std::domain_error | A non-positive radius was given. |
1.8.3.1