Package org.jmol.quantum
Class NMRCalculation
java.lang.Object
org.jmol.quantum.NMRCalculation
- All Implemented Interfaces:
JmolNMRInterface
-
Field Summary
FieldsModifier and TypeFieldDescriptionCalculate an H-X-X-H or C-X-X-H coupling constant.private static final double
private static final double
private static final double
private static final double
isotopeData keyed by nnnSym, for example: 1H, 19F, etc.; and also by element name itself: H, F, etc., for defaultprivate static final double
static final String
static final String
static final String
static final String
private static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
(package private) static double[][]
private static final double
private static final int
private static final String
NOTE! Do not change this txt file! Instead, edit trunk/Jmol/_documents/nmr_data.xls and then clip its contents to org/jmol/quantum/nmr_data.txt.private Viewer
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static double[]
static double[]
calc2or3JorNOE
(Viewer viewer, Atom[] atoms, String CHEquation, int mode) Calculate a 2-bond (geminal) or 3-bond (vicinal) coupling constant or an NOE;static double
private static double
calc3JHHOnly
(String[][] subElements, javajs.util.V3[][] subVectors, javajs.util.V3 v21, javajs.util.V3 v34, javajs.util.V3 v23, double theta, boolean is23Double) static double
calcJKarplus
(double theta) static double[]
private static double[]
calcNOEImpl
(Viewer viewer, Atom atom1, Atom atom2) private javajs.util.BS
getAtomSiteBS
(javajs.util.BS bsA) Interaction tensors are not repeated for every possible combination.static int
getCalcType
(Atom[] atoms, String[] elementsToFill, int mode) float
getChemicalShift
(Atom atom) If shift reference has not been set, it defaults to 0 and just displays the negative of magnetic shieldingprivate void
getData()
Creates the data set necessary for doing NMR calculations.float
getDipolarConstantHz
(Atom a1, Atom a2) float
getDipolarCouplingHz
(Atom a1, Atom a2, javajs.util.V3 vField) private static double
getIncrementalJValue
(int nNonH, String element, javajs.util.V3 sA_cA, javajs.util.V3 v21, javajs.util.V3 v23, double theta, int f) private static double
getInitialJValue
(int nNonH, double theta) private javajs.util.Lst<Tensor>
getInteractionTensorList
(String type, javajs.util.BS bsA) Returns a list of tensors that are of the specified type and have both atomIndex1 and atomIndex2 in bsA.private String
getISCtype
(Atom a1, String type) float
getIsoOrAnisoHz
(boolean isIso, Atom a1, Atom a2, String units, Tensor isc) If t is null, then a1, a2, and type are used to find the appropriate tensor.private double
getIsotopeData
(Atom a, int iType) Get magnetogyricRatio (gamma/10^7 rad s^-1 T^-1) and quadrupoleMoment (Q/10^-2 fm^2) for a given isotope or for the default isotope of an element.float
getJCouplingHz
(Atom a1, Atom a2, String type, Tensor isc) float
getMagneticShielding
(Atom atom) double[]
getNOEorJHH
(Atom[] atoms, int mode) float
Quadrupolar constant, directly proportional to Vzz and dependent on the quadrupolar moment of the isotope consideredboolean
getState
(javajs.util.SB sb) private static int
getSubSign
(javajs.util.V3 sA_cA, javajs.util.V3 v21, javajs.util.V3 v23, int f) Look for sign of (v23 x v21).dot.(sA_cA).javajs.util.Lst<Object>
getTensorInfo
(String tensorType, String infoType, javajs.util.BS bs) javajs.util.BS
getUniqueTensorSet
(javajs.util.BS bsAtoms) An attempt to find unique atoms using tensors.boolean
setChemicalShiftReference
(String element, float value)
-
Field Details
-
MAGNETOGYRIC_RATIO
private static final int MAGNETOGYRIC_RATIO- See Also:
-
QUADRUPOLE_MOMENT
private static final int QUADRUPOLE_MOMENT- See Also:
-
e_charge
private static final double e_charge- See Also:
-
h_planck
private static final double h_planck- See Also:
-
h_bar_planck
private static final double h_bar_planck- See Also:
-
DIPOLAR_FACTOR
private static final double DIPOLAR_FACTOR- See Also:
-
J_FACTOR
private static final double J_FACTOR- See Also:
-
Q_FACTOR
private static final double Q_FACTOR- See Also:
-
MODE_CALC_INVALID
public static final int MODE_CALC_INVALID- See Also:
-
MODE_CALC_2JHH
public static final int MODE_CALC_2JHH- See Also:
-
MODE_CALC_3JHH
public static final int MODE_CALC_3JHH- See Also:
-
MODE_CALC_JHH
public static final int MODE_CALC_JHH- See Also:
-
MODE_CALC_3JCH
public static final int MODE_CALC_3JCH- See Also:
-
MODE_CALC_J
public static final int MODE_CALC_J- See Also:
-
MODE_CALC_NOE
public static final int MODE_CALC_NOE- See Also:
-
MODE_CALC_ALL
public static final int MODE_CALC_ALL- See Also:
-
vwr
-
isotopeData
isotopeData keyed by nnnSym, for example: 1H, 19F, etc.; and also by element name itself: H, F, etc., for default -
resource
NOTE! Do not change this txt file! Instead, edit trunk/Jmol/_documents/nmr_data.xls and then clip its contents to org/jmol/quantum/nmr_data.txt.- See Also:
-
shiftRefsPPM
-
deltaElectro
Calculate an H-X-X-H or C-X-X-H coupling constant. Use Altoona equation (Tetrahedron 36, 2783-2792) If there are fewer than three substituents on each central atom, or if either central atom is not carbon, defaults to general Karplus equation. -
pAltona
static double[][] pAltona -
JCH3_NONE
- See Also:
-
JCH3_WASYLISHEN_SCHAEFER
- See Also:
-
JCH3_TVAROSKA_TARAVEL
- See Also:
-
JCH3_AYDIN_GUETHER
- See Also:
-
-
Constructor Details
-
NMRCalculation
public NMRCalculation()
-
-
Method Details
-
setViewer
- Specified by:
setViewer
in interfaceJmolNMRInterface
-
getQuadrupolarConstant
Description copied from interface:JmolNMRInterface
Quadrupolar constant, directly proportional to Vzz and dependent on the quadrupolar moment of the isotope considered- Specified by:
getQuadrupolarConstant
in interfaceJmolNMRInterface
- Returns:
- float value
-
getInteractionTensorList
Returns a list of tensors that are of the specified type and have both atomIndex1 and atomIndex2 in bsA. If there is just one atom specified, then the list is "all tensors involving this atom". We have to use atom sites, because interaction tensors are not duplicated.- Parameters:
type
-bsA
-- Returns:
- list of Tensors
-
getAtomSiteBS
private javajs.util.BS getAtomSiteBS(javajs.util.BS bsA) Interaction tensors are not repeated for every possible combination. They are just for the base atom set. These are identified as a.atomIndex == models[b.modelIndex].firstAtomIndex + b.atomSite - 1- Parameters:
bsA
-- Returns:
- new bs in terms of atom sites
-
getUniqueTensorSet
public javajs.util.BS getUniqueTensorSet(javajs.util.BS bsAtoms) Description copied from interface:JmolNMRInterface
An attempt to find unique atoms using tensors.- Specified by:
getUniqueTensorSet
in interfaceJmolNMRInterface
- Returns:
- bitset of atoms
-
getJCouplingHz
-
getIsoOrAnisoHz
Description copied from interface:JmolNMRInterface
If t is null, then a1, a2, and type are used to find the appropriate tensor.- Specified by:
getIsoOrAnisoHz
in interfaceJmolNMRInterface
- Returns:
- 0 if not found
-
getISCtype
-
getDipolarConstantHz
- Specified by:
getDipolarConstantHz
in interfaceJmolNMRInterface
- Returns:
- desired constant
-
getDipolarCouplingHz
- Specified by:
getDipolarCouplingHz
in interfaceJmolNMRInterface
- Returns:
- projected value
-
getIsotopeData
Get magnetogyricRatio (gamma/10^7 rad s^-1 T^-1) and quadrupoleMoment (Q/10^-2 fm^2) for a given isotope or for the default isotope of an element.- Parameters:
a
-iType
-- Returns:
- g or Q
-
getData
private void getData()Creates the data set necessary for doing NMR calculations. Values are retrievable using getProperty "nmrInfo" "Xx"; each entry is float[+/-isotopeNumber, g, Q], where [0] < 0 for the default value. -
getInfo
- Specified by:
getInfo
in interfaceJmolNMRInterface
- Parameters:
what
- "C" or "14C" or "all"- Returns:
- list of double[isotopeNumber,g,Q] if no isotope number is given, or a single double[] if it does.
-
getChemicalShift
Description copied from interface:JmolNMRInterface
If shift reference has not been set, it defaults to 0 and just displays the negative of magnetic shielding- Specified by:
getChemicalShift
in interfaceJmolNMRInterface
- Returns:
- value
-
getMagneticShielding
- Specified by:
getMagneticShielding
in interfaceJmolNMRInterface
-
getState
public boolean getState(javajs.util.SB sb) - Specified by:
getState
in interfaceJmolNMRInterface
-
setChemicalShiftReference
- Specified by:
setChemicalShiftReference
in interfaceJmolNMRInterface
-
getTensorInfo
- Specified by:
getTensorInfo
in interfaceJmolNMRInterface
-
getMinDistances
- Specified by:
getMinDistances
in interfaceJmolNMRInterface
-
calcJKarplus
public static double calcJKarplus(double theta) -
getInitialJValue
private static double getInitialJValue(int nNonH, double theta) -
getIncrementalJValue
private static double getIncrementalJValue(int nNonH, String element, javajs.util.V3 sA_cA, javajs.util.V3 v21, javajs.util.V3 v23, double theta, int f) -
getSubSign
private static int getSubSign(javajs.util.V3 sA_cA, javajs.util.V3 v21, javajs.util.V3 v23, int f) Look for sign of (v23 x v21).dot.(sA_cA). But note that for the second carbon, we must reverse this.- Parameters:
sA_cA
- C to subv21
- C to Hv23
- C to other Cf
- 1 for carbon A; -1 for carbon B- Returns:
- f or -f (+1 or -1)
-
calc3JHHOnly
private static double calc3JHHOnly(String[][] subElements, javajs.util.V3[][] subVectors, javajs.util.V3 v21, javajs.util.V3 v34, javajs.util.V3 v23, double theta, boolean is23Double) - Parameters:
subElements
- int[2][3] with element namessubVectors
- V3[2][4] with vectors TO these substituents from their respective centersv21
- vector from cA to hAv34
- vector from cB to hBv23
- vector from cA to cBtheta
- dihedral angle hA-cA-cB-hBis23Double
-- Returns:
- estimated coupling constant
-
calc3JCH
- Parameters:
CHequation
- 'was' Simple equation for 3JCH, from Wasylishen and Schaefer Can J Chem (1973) 51 961 used in Kozerski et al. J Chem Soc Perkin 2, (1997) 1811 'tva' Tvaroska and Taravel Adv. Carbohydrate Chem. Biochem. (1995) 51, 15-61 'ayd' Aydin and Guether Mag. Res. Chem. (1990) 28, 448-457theta
- dihedralis23Double
-- Returns:
- 3JCH prediction
-
calcNOE
-
calc2or3JorNOE
Calculate a 2-bond (geminal) or 3-bond (vicinal) coupling constant or an NOE;- Parameters:
viewer
-atoms
- required Atom[4]; can be just two atoms, then in atom[0] and atom[4]CHEquation
- 'none' or 'was' or 'tva' or 'ayd'mode
-- Returns:
- [theta, jvalue, atom2.i, atom3.i] for 3JHH; [theta, jvalue, center.i] for 2JHH; [distance, noe] for NOE
-
getCalcType
-
calc2JHH
-
calcNOEImpl
-
getNOEorJHH
- Specified by:
getNOEorJHH
in interfaceJmolNMRInterface
-