annotate lib/PeriodicTable.pm @ 0:4816e4a8ae95 draft default tip

Uploaded
author deepakjadmin
date Wed, 20 Jan 2016 09:23:18 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1 package PeriodicTable;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
2 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
3 # $RCSfile: PeriodicTable.pm,v $
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
4 # $Date: 2015/02/28 20:47:18 $
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
5 # $Revision: 1.37 $
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
6 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
7 # Author: Manish Sud <msud@san.rr.com>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
8 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
9 # Copyright (C) 2015 Manish Sud. All rights reserved.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
10 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
11 # This file is part of MayaChemTools.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
12 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
13 # MayaChemTools is free software; you can redistribute it and/or modify it under
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
14 # the terms of the GNU Lesser General Public License as published by the Free
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
15 # Software Foundation; either version 3 of the License, or (at your option) any
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
16 # later version.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
17 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
18 # MayaChemTools is distributed in the hope that it will be useful, but without
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
19 # any warranty; without even the implied warranty of merchantability of fitness
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
20 # for a particular purpose. See the GNU Lesser General Public License for more
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
21 # details.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
22 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
23 # You should have received a copy of the GNU Lesser General Public License
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
24 # along with MayaChemTools; if not, see <http://www.gnu.org/licenses/> or
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
25 # write to the Free Software Foundation Inc., 59 Temple Place, Suite 330,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
26 # Boston, MA, 02111-1307, USA.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
27 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
28
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
29 use strict;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
30 use Carp;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
31 use Text::ParseWords;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
32 use TextUtil;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
33 use FileUtil;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
34
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
35 use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
36
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
37 @ISA = qw(Exporter);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
38 @EXPORT = qw();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
39 @EXPORT_OK = qw(GetElements GetElementsByGroupName GetElementsByGroupNumber GetElementsByAmericanStyleGroupLabel GetElementsByEuropeanStyleGroupLabel GetElementsByPeriodNumber GetElementMostAbundantNaturalIsotopeData GetElementNaturalIsotopeCount GetElementNaturalIsotopesData GetElementNaturalIsotopeAbundance GetElementMostAbundantNaturalIsotopeMass GetElementMostAbundantNaturalIsotopeMassNumber GetElementNaturalIsotopeMass GetElementPropertiesData GetElementPropertiesNames GetElementPropertiesNamesAndUnits GetElementPropertyUnits GetIUPACGroupNumberFromAmericanStyleGroupLabel GetIUPACGroupNumberFromEuropeanStyleGroupLabel IsElement IsElementNaturalIsotopeMassNumber IsElementProperty);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
40
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
41 %EXPORT_TAGS = (all => [@EXPORT, @EXPORT_OK]);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
42
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
43 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
44 # Load atomic properties and isotope data for elements...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
45 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
46 my(%ElementDataMap, %ElementIsotopeDataMap, %ElementSymbolMap, @ElementPropertyNames, %ElementPropertyNamesMap, %ElementIsotopeDerivedDataMap);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
47 _LoadPeriodicTableElementData();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
48
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
49 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
50 # Get a list of all known element symbols...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
51 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
52 sub GetElements {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
53 my($AtomicNumber, @ElementSymbols);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
54
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
55 @ElementSymbols = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
56 for $AtomicNumber (sort {$a <=> $b} keys %ElementDataMap) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
57 push @ElementSymbols, $ElementDataMap{$AtomicNumber}{ElementSymbol};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
58 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
59 return (wantarray ? @ElementSymbols : \@ElementSymbols);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
60 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
61
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
62 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
63 # Get element symbols of elements with a specific group name. Valid group
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
64 # names are: Alkali metals, Alkaline earth metals, Coinage metals, Pnictogens,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
65 # Chalcogens, Halogens, Noble gases; Additionally, usage of Lanthanides (Lanthanoids)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
66 # and Actinides (Actinoids) is also supported.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
67 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
68 sub GetElementsByGroupName {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
69 my($SpecifiedGroupName) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
70 my($AtomicNumber, @ElementSymbols, $GroupName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
71
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
72 if (IsEmpty($SpecifiedGroupName)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
73 return (wantarray ? () : undef);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
74 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
75 if ($SpecifiedGroupName =~ /Lanthanide/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
76 $SpecifiedGroupName = 'Lanthanoids';
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
77 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
78 elsif ($SpecifiedGroupName =~ /Actinide/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
79 $SpecifiedGroupName = 'Actinoids';
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
80 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
81 @ElementSymbols = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
82 for $AtomicNumber (sort {$a <=> $b} keys %ElementDataMap) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
83 $GroupName = $ElementDataMap{$AtomicNumber}{GroupName};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
84 if ($SpecifiedGroupName =~ /$GroupName/i ) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
85 push @ElementSymbols, $ElementDataMap{$AtomicNumber}{ElementSymbol};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
86 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
87 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
88 return (wantarray ? @ElementSymbols : \@ElementSymbols);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
89 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
90
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
91 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
92 # Get element symbols of elements in a specific IUPAC group number.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
93 # A reference to an array containing element symbols is returned.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
94 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
95 sub GetElementsByGroupNumber {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
96 my($GroupNumber) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
97 my($AtomicNumber, @ElementSymbols);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
98
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
99 if (!IsInteger($GroupNumber)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
100 return (wantarray ? () : undef);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
101 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
102
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
103 @ElementSymbols = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
104 for $AtomicNumber (sort {$a <=> $b} keys %ElementDataMap) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
105 if ($GroupNumber eq $ElementDataMap{$AtomicNumber}{GroupNumber}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
106 push @ElementSymbols, $ElementDataMap{$AtomicNumber}{ElementSymbol};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
107 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
108 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
109 return (wantarray ? @ElementSymbols : \@ElementSymbols);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
110 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
111
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
112 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
113 # Get element symbols of elements in a specific American style group label.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
114 # A reference to an array containing element symbols is returned.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
115 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
116 sub GetElementsByAmericanStyleGroupLabel {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
117 my($GroupLabel) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
118
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
119 return _GetElementsByGroupLabel($GroupLabel, 'AmericanStyle');
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
120 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
121
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
122 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
123 # Get element symbols of elements in a specific European style group label.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
124 # A reference to an array containing element symbols is returned.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
125 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
126 sub GetElementsByEuropeanStyleGroupLabel {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
127 my($GroupLabel) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
128
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
129 return _GetElementsByGroupLabel($GroupLabel, 'EuropeanStyle');
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
130 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
131
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
132 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
133 # Get IUPAC group number from American style group label. A comma delimited
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
134 # string is returned for group VIII or VIIIB.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
135 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
136 sub GetIUPACGroupNumberFromAmericanStyleGroupLabel {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
137 my($GroupLabel) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
138 my($GroupNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
139
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
140 if (IsEmpty($GroupLabel)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
141 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
142 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
143 $GroupNumber = "";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
144 SWITCH: {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
145 if ($GroupLabel =~ /^IA$/) { $GroupNumber = 1; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
146 if ($GroupLabel =~ /^IIA$/) { $GroupNumber = 2; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
147 if ($GroupLabel =~ /^IIIB$/) { $GroupNumber = 3; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
148 if ($GroupLabel =~ /^IVB$/) { $GroupNumber = 4; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
149 if ($GroupLabel =~ /^VB$/) { $GroupNumber = 5; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
150 if ($GroupLabel =~ /^VIB$/) { $GroupNumber = 6; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
151 if ($GroupLabel =~ /^VIIB$/) { $GroupNumber = 7; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
152 if ($GroupLabel =~ /^(VIII|VIIIB)$/) { $GroupNumber = '8,9,10'; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
153 if ($GroupLabel =~ /^IB$/) { $GroupNumber = 11; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
154 if ($GroupLabel =~ /^IIB$/) { $GroupNumber = 12; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
155 if ($GroupLabel =~ /^IIIA$/) { $GroupNumber = 13; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
156 if ($GroupLabel =~ /^IVA$/) { $GroupNumber = 14; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
157 if ($GroupLabel =~ /^VA$/) { $GroupNumber = 15; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
158 if ($GroupLabel =~ /^VIA$/) { $GroupNumber = 16; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
159 if ($GroupLabel =~ /^VIIA$/) { $GroupNumber = 17; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
160 if ($GroupLabel =~ /^VIIIA$/) { $GroupNumber = 18; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
161 $GroupNumber = "";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
162 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
163 if (!$GroupNumber) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
164 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
165 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
166 return $GroupNumber;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
167 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
168
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
169 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
170 # Get IUPAC group number from European style group label. A comma delimited
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
171 # string is returned for group VIII or VIIIA
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
172 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
173 sub GetIUPACGroupNumberFromEuropeanStyleGroupLabel {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
174 my($GroupLabel) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
175 my($GroupNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
176
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
177 if (IsEmpty($GroupLabel)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
178 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
179 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
180 $GroupNumber = "";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
181 SWITCH: {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
182 if ($GroupLabel =~ /^IA$/) { $GroupNumber = 1; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
183 if ($GroupLabel =~ /^IIA$/) { $GroupNumber = 2; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
184 if ($GroupLabel =~ /^IIIA$/) { $GroupNumber = 3; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
185 if ($GroupLabel =~ /^IVA$/) { $GroupNumber = 4; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
186 if ($GroupLabel =~ /^VA$/) { $GroupNumber = 5; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
187 if ($GroupLabel =~ /^VIA$/) { $GroupNumber = 6; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
188 if ($GroupLabel =~ /^VIIA$/) { $GroupNumber = 7; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
189 if ($GroupLabel =~ /^(VIII|VIIIA)$/) { $GroupNumber = '8,9,10'; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
190 if ($GroupLabel =~ /^IB$/) { $GroupNumber = 11; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
191 if ($GroupLabel =~ /^IIB$/) { $GroupNumber = 12; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
192 if ($GroupLabel =~ /^IIIB$/) { $GroupNumber = 13; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
193 if ($GroupLabel =~ /^IVB$/) { $GroupNumber = 14; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
194 if ($GroupLabel =~ /^VB$/) { $GroupNumber = 15; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
195 if ($GroupLabel =~ /^VIB$/) { $GroupNumber = 16; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
196 if ($GroupLabel =~ /^VIIB$/) { $GroupNumber = 17; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
197 if ($GroupLabel =~ /^VIIIB$/) { $GroupNumber = 18; last SWITCH;}
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
198 $GroupNumber = "";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
199 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
200 if (!$GroupNumber) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
201 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
202 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
203 return $GroupNumber;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
204 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
205
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
206 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
207 # Get element symbols of elements in a specific period number.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
208 # A reference to an array containing element symbols is returned.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
209 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
210 sub GetElementsByPeriodNumber {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
211 my($SpecifiedPeriodNumber) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
212 my($AtomicNumber, $PeriodNumber, @ElementSymbols);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
213
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
214 if (!IsInteger($SpecifiedPeriodNumber)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
215 return (wantarray ? () : undef);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
216 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
217
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
218 @ElementSymbols = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
219 for $AtomicNumber (sort {$a <=> $b} keys %ElementDataMap) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
220 $PeriodNumber = $ElementDataMap{$AtomicNumber}{PeriodNumber};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
221 if ($PeriodNumber =~ /\(/) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
222 # Lanthanides and Actinides...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
223 ($PeriodNumber) = split /\(/, $PeriodNumber;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
224 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
225 if ($PeriodNumber == $SpecifiedPeriodNumber) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
226 push @ElementSymbols, $ElementDataMap{$AtomicNumber}{ElementSymbol};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
227 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
228 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
229 return (wantarray ? @ElementSymbols : \@ElementSymbols);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
230 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
231
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
232 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
233 # Get data for most abundant isotope of an element using element symbol or atomic number.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
234 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
235 sub GetElementMostAbundantNaturalIsotopeData {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
236 my($ElementID) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
237 my($AtomicNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
238
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
239 if (!($AtomicNumber = _ValidateElementID($ElementID))) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
240 return (wantarray ? () : undef);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
241 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
242
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
243 my(@IsotopeData, $IsotopeSymbol, $MassNumber, $RelativeAtomicMass, $NaturalAbundance);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
244 $MassNumber = $ElementIsotopeDerivedDataMap{$AtomicNumber}{MostAbundantMassNumber};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
245 $IsotopeSymbol = $ElementIsotopeDataMap{$AtomicNumber}{$MassNumber}{IsotopeSymbol};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
246 $RelativeAtomicMass = $ElementIsotopeDataMap{$AtomicNumber}{$MassNumber}{RelativeAtomicMass};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
247 $NaturalAbundance = $ElementIsotopeDataMap{$AtomicNumber}{$MassNumber}{NaturalAbundance};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
248 @IsotopeData = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
249 @IsotopeData = ($AtomicNumber, $IsotopeSymbol, $MassNumber, $RelativeAtomicMass, $NaturalAbundance);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
250
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
251 return (wantarray ? @IsotopeData : \@IsotopeData);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
252
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
253 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
254 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
255 # Get natural isotope count for an element...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
256 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
257 sub GetElementNaturalIsotopeCount {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
258 my($ElementID) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
259 my($AtomicNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
260
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
261 if ($AtomicNumber = _ValidateElementID($ElementID)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
262 return $ElementIsotopeDerivedDataMap{$AtomicNumber}{IsotopeCount};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
263 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
264 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
265 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
266 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
267 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
268
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
269 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
270 # Get all available isotope data for an element using element symbol or atomic number or
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
271 # data for a specific mass number using one of these two invocation methods:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
272 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
273 # $HashRef = GetElementNaturalIsotopesData($ElementID);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
274 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
275 # $HashRef = GetElementNaturalIsotopesData($ElementID, $MassNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
276 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
277 # In the first mode, a reference to a two-dimensional hash array is return where first
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
278 # and second dimension keys correspond to mass number and isotope data labels.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
279 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
280 # And in the second mode, a refernce to one-dimensional hash array is returned with
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
281 # keys and values corresponding to isotope data label and values.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
282 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
283 sub GetElementNaturalIsotopesData {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
284 my($ElementID, $MassNumber, $InvocationMode, $AtomicNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
285
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
286 if (@_ == 2) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
287 ($ElementID, $MassNumber) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
288 $InvocationMode = 2;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
289 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
290 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
291 ($ElementID) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
292 $InvocationMode = 1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
293 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
294 if (!($AtomicNumber = _ValidateElementID($ElementID))) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
295 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
296 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
297 if ($InvocationMode == 1) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
298 return \%{$ElementIsotopeDataMap{$AtomicNumber}};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
299 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
300 elsif ($InvocationMode == 2) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
301 if (exists $ElementIsotopeDataMap{$AtomicNumber}{$MassNumber}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
302 return \%{$ElementIsotopeDataMap{$AtomicNumber}{$MassNumber}};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
303 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
304 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
305 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
306 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
307 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
308 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
309 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
310 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
311 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
312
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
313 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
314 # Get relative atomic mass for an element with specfic mass number.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
315 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
316 sub GetElementNaturalIsotopeMass {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
317 my($ElementID, $MassNumber) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
318 my($AtomicNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
319
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
320 if (!($AtomicNumber = _ValidateElementID($ElementID))) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
321 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
322 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
323 if (exists $ElementIsotopeDataMap{$AtomicNumber}{$MassNumber}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
324 return $ElementIsotopeDataMap{$AtomicNumber}{$MassNumber}{RelativeAtomicMass};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
325 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
326 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
327 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
328 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
329 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
330
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
331 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
332 # Get relative atomic mass of most abundant isotope for an element...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
333 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
334 sub GetElementMostAbundantNaturalIsotopeMass {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
335 my($ElementID) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
336 my($AtomicNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
337
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
338 if (!($AtomicNumber = _ValidateElementID($ElementID))) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
339 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
340 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
341 my($MassNumber, $RelativeAtomicMass);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
342
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
343 $MassNumber = $ElementIsotopeDerivedDataMap{$AtomicNumber}{MostAbundantMassNumber};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
344 $RelativeAtomicMass = $ElementIsotopeDataMap{$AtomicNumber}{$MassNumber}{RelativeAtomicMass};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
345
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
346 return $RelativeAtomicMass;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
347 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
348
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
349 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
350 # Get mass number of most abundant isotope for an element...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
351 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
352 sub GetElementMostAbundantNaturalIsotopeMassNumber {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
353 my($ElementID) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
354 my($AtomicNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
355
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
356 if (!($AtomicNumber = _ValidateElementID($ElementID))) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
357 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
358 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
359 my($MassNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
360
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
361 $MassNumber = $ElementIsotopeDerivedDataMap{$AtomicNumber}{MostAbundantMassNumber};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
362
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
363 return $MassNumber;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
364 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
365 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
366 # Get % natural abundance of natural isotope for an element with specfic mass number.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
367 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
368 sub GetElementNaturalIsotopeAbundance {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
369 my($ElementID, $MassNumber) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
370 my($AtomicNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
371
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
372 if (!($AtomicNumber = _ValidateElementID($ElementID))) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
373 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
374 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
375 if (exists $ElementIsotopeDataMap{$AtomicNumber}{$MassNumber}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
376 return $ElementIsotopeDataMap{$AtomicNumber}{$MassNumber}{NaturalAbundance};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
377 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
378 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
379 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
380 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
381 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
382
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
383 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
384 # Get all available properties data for an element using element symbol or atomic number.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
385 # A reference to a hash array is returned with keys and values representing property
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
386 # name and its values respectively.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
387 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
388 sub GetElementPropertiesData {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
389 my($ElementID) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
390 my($AtomicNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
391
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
392 if ($AtomicNumber = _ValidateElementID($ElementID)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
393 return \%{$ElementDataMap{$AtomicNumber}};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
394 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
395 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
396 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
397 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
398 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
399
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
400 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
401 # Get names of all available element properties. A reference to an array containing
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
402 # names of all available properties is returned.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
403 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
404 sub GetElementPropertiesNames {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
405 my($Mode);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
406 my($PropertyName, @PropertyNames);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
407
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
408 $Mode = 'ByGroup';
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
409 if (@_ == 1) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
410 ($Mode) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
411 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
412
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
413 @PropertyNames = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
414 if ($Mode =~ /^Alphabetical$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
415 # AtomicNumber, ElementSymbol and ElementName are always listed first...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
416 push @PropertyNames, qw(AtomicNumber ElementSymbol ElementName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
417 for $PropertyName (sort keys %ElementPropertyNamesMap) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
418 if ($PropertyName !~ /^(AtomicNumber|ElementSymbol|ElementName)$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
419 push @PropertyNames, $PropertyName;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
420 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
421 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
422 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
423 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
424 push @PropertyNames, @ElementPropertyNames;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
425 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
426 return (wantarray ? @PropertyNames : \@PropertyNames);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
427 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
428
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
429 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
430 # Get names and units of all available element properties...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
431 # A reference to a hash array is returned with keys and values representing property
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
432 # name and its units respectively. Names with no units contains empty strings as hash
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
433 # values.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
434 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
435 sub GetElementPropertiesNamesAndUnits {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
436
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
437 return \%ElementPropertyNamesMap;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
438 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
439
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
440 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
441 # Get units for a specific element property. An empty string is returned for a property
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
442 # with no units.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
443 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
444 sub GetElementPropertyUnits {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
445 my($PropertyName) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
446 my($PropertyUnits);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
447
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
448 $PropertyUnits = (exists($ElementPropertyNamesMap{$PropertyName})) ? $ElementPropertyNamesMap{$PropertyName} : undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
449
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
450 return $PropertyUnits;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
451 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
452
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
453 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
454 # Is it a known element? Input is either an element symol or a atomic number.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
455 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
456 sub IsElement {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
457 my($ElementID) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
458 my($Status);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
459
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
460 $Status = (_ValidateElementID($ElementID)) ? 1 : 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
461
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
462 return $Status;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
463 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
464
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
465 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
466 # Is it a valid mass number for an element? Element ID is either an element symol or a atomic number.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
467 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
468 sub IsElementNaturalIsotopeMassNumber {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
469 my($ElementID, $MassNumber) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
470 my($AtomicNumber, $Status);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
471
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
472 $Status = 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
473 if (!($AtomicNumber = _ValidateElementID($ElementID))) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
474 return $Status;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
475 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
476 if (exists $ElementIsotopeDataMap{$AtomicNumber}{$MassNumber}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
477 $Status = 1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
478 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
479
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
480 return $Status;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
481 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
482
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
483 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
484 # Is it an available element property?
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
485 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
486 sub IsElementProperty {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
487 my($PropertyName) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
488 my($Status);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
489
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
490 $Status = (exists($ElementPropertyNamesMap{$PropertyName})) ? 1 : 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
491
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
492 return $Status;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
493 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
494
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
495 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
496 # Implents GetElement<PropertyName> for a valid proprty name.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
497 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
498 sub AUTOLOAD {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
499 my($ElementID) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
500 my($FunctionName, $PropertyName, $PropertyValue, $AtomicNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
501
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
502 $PropertyValue = undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
503
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
504 use vars qw($AUTOLOAD);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
505 $FunctionName = $AUTOLOAD;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
506 $FunctionName =~ s/.*:://;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
507
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
508 # Only Get<PropertyName> functions are supported...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
509 if ($FunctionName !~ /^GetElement/) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
510 croak "Error: Function, PeriodicTable::$FunctionName, is not supported by AUTOLOAD in PeriodicTable module: Only GetElement<PropertyName> functions are implemented...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
511 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
512
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
513 $PropertyName = $FunctionName;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
514 $PropertyName =~ s/^GetElement//;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
515 if (!exists $ElementPropertyNamesMap{$PropertyName}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
516 croak "Error: Function, PeriodicTable::$FunctionName, is not supported by AUTOLOAD in PeriodicTable module: Unknown element property name, $PropertyName, specified...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
517 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
518
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
519 if (!($AtomicNumber = _ValidateElementID($ElementID))) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
520 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
521 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
522 $PropertyValue = $ElementDataMap{$AtomicNumber}{$PropertyName};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
523 return $PropertyValue;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
524 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
525
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
526 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
527 # Get elements labels for group name specified using American or European style...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
528 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
529 sub _GetElementsByGroupLabel {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
530 my($GroupLabel, $LabelStyle) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
531 my($GroupNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
532
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
533 if ($LabelStyle =~ /^AmericanStyle$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
534 $GroupNumber = GetIUPACGroupNumberFromAmericanStyleGroupLabel($GroupLabel);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
535 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
536 elsif ($LabelStyle =~ /^EuropeanStyle$/i) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
537 $GroupNumber = GetIUPACGroupNumberFromEuropeanStyleGroupLabel($GroupLabel);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
538 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
539
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
540 if (IsEmpty($GroupNumber)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
541 return (wantarray ? () : undef);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
542 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
543
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
544 my($AtomicNumber, @GroupElements, @ElementSymbols);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
545 @ElementSymbols = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
546 if ($GroupNumber =~ /\,/) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
547 my(@GroupNumbers);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
548
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
549 @GroupNumbers = split /\,/, $GroupNumber;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
550 for $GroupNumber (@GroupNumbers) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
551 @GroupElements = GetElementsByGroupNumber($GroupNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
552 push @ElementSymbols, @GroupElements;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
553 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
554 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
555 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
556 @GroupElements = GetElementsByGroupNumber($GroupNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
557 push @ElementSymbols, @GroupElements;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
558 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
559 return (wantarray ? @ElementSymbols : \@ElementSymbols);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
560 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
561
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
562 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
563 # Load PeriodicTableElementData.csv and PeriodicTableIsotopeData.csv files from
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
564 # <MayaChemTools>/lib directory...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
565 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
566 sub _LoadPeriodicTableElementData {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
567 my($ElementDataFile, $ElementIsotopeDataFile, $MayaChemToolsLibDir);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
568
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
569 $MayaChemToolsLibDir = GetMayaChemToolsLibDirName();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
570
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
571 $ElementDataFile = "$MayaChemToolsLibDir" . "/data/PeriodicTableElementData.csv";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
572 $ElementIsotopeDataFile = "$MayaChemToolsLibDir" . "/data/PeriodicTableIsotopeData.csv";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
573
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
574 if (! -e "$ElementDataFile") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
575 croak "Error: MayaChemTools package file, $ElementDataFile, is missing: Possible installation problems...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
576 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
577 if (! -e "$ElementIsotopeDataFile") {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
578 croak "Error: MayaChemTools package file, $ElementIsotopeDataFile, is missing: Possible installation problems...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
579 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
580
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
581 _LoadElementData($ElementDataFile);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
582 _LoadElementIsotopeData($ElementIsotopeDataFile);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
583 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
584
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
585 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
586 # Load PeriodicTableElementData.csv file from <MayaChemTools>/lib directory...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
587 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
588 sub _LoadElementData {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
589 my($ElementDataFile) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
590
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
591 %ElementDataMap = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
592 @ElementPropertyNames = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
593 %ElementPropertyNamesMap = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
594 %ElementSymbolMap = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
595
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
596 # Load atomic properties data for all elements...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
597 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
598 # File Format:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
599 #"AtomicNumber","ElementSymbol","ElementName","AtomicWeight","GroupNumber","GroupName","PeriodNumber","Block","GroundStateConfiguration","ValenceElectrons","GroundStateLevel","StandardState","CommonValences","LowestCommonValence","HighestCommonValence","CommonOxidationNumbers","LowestCommonOxidationNumber","HighestCommonOxidationNumber","BondLength(pm)","AtomicRadiusEmpirical(pm)","AtomicRadiusCalculated(pm)","CovalentRadiusEmpirical(pm)","VanderWaalsRadius(pm)","ElectronAffinity(kJ mol-1)","FirstIonizationEnergy(kJ mol-1)","PaulingElectronegativity(Pauling units)","SandersonElectronegativity(Pauling units)","AllredRochowElectronegativity(Pauling units)","MullikenJaffeElectronegativity(Pauling units)","AllenElectronegativity(Pauling units)","DensityOfSolid(kg m-3)","MolarVolume(cm3)","VelocityOfSound(m s-1)","YoungsModulus(GPa)","RigidityModulus(GPa)","BulkModulus(GPa)","PoissonsRatio(No units)","MineralHardness(No units)","BrinellHardness(MN m-2)","VickersHardness(MN m-2)","ElectricalResistivity(10-8 omega m)","Reflectivity(%)","RefractiveIndex(No units)","MeltingPoint(Celsius)","BoilingPoint(Celsius)","CriticalTemperature(Celsius)","SuperconductionTemperature(Celsius)","ThermalConductivity(W m-1 K-1)","CoefficientOfLinearExpansion(K-1 x 10^6)","EnthalpyOfFusion(kJ mol-1)","EnthalpyOfVaporization(kJ mol-1)","EnthalpyOfAtmization(kJ mol-1)","Color","Classification","DiscoveredBy","DiscoveredAt","DiscoveredWhen","OriginOfName"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
600 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
601 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
602 my($AtomicNumber, $ElementSymbol, $Line, $NumOfCols, $InDelim, $Index, $Name, $Value, $Units, @LineWords, @ColLabels);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
603
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
604 $InDelim = "\,";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
605 open ELEMENTDATAFILE, "$ElementDataFile" or croak "Couldn't open $ElementDataFile: $! ...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
606
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
607 # Skip lines up to column labels...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
608 LINE: while ($Line = GetTextLine(\*ELEMENTDATAFILE)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
609 if ($Line !~ /^#/) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
610 last LINE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
611 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
612 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
613 @ColLabels= quotewords($InDelim, 0, $Line);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
614 $NumOfCols = @ColLabels;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
615
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
616 # Extract property names from column labels - and unit names where appropriate...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
617 @ElementPropertyNames = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
618 for $Index (0 .. $#ColLabels) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
619 $Name = $ColLabels[$Index];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
620 $Units = "";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
621 if ($Name =~ /\(/) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
622 ($Name, $Units) = split /\(/, $Name;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
623 $Units =~ s/\)//g;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
624 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
625 push @ElementPropertyNames, $Name;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
626
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
627 # Store element names and units...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
628 $ElementPropertyNamesMap{$Name} = $Units;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
629 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
630
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
631 # Process element data...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
632 LINE: while ($Line = GetTextLine(\*ELEMENTDATAFILE)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
633 if ($Line =~ /^#/) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
634 next LINE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
635 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
636 @LineWords = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
637 @LineWords = quotewords($InDelim, 0, $Line);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
638 if (@LineWords != $NumOfCols) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
639 croak "Error: The number of data fields, @LineWords, in $ElementDataFile must be $NumOfCols.\nLine: $Line...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
640 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
641 $AtomicNumber = $LineWords[0]; $ElementSymbol = $LineWords[1];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
642 if (exists $ElementDataMap{$AtomicNumber}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
643 carp "Warning: Ignoring data for element $ElementSymbol: It has already been loaded.\nLine: $Line....";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
644 next LINE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
645 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
646
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
647 # Store all the values...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
648 %{$ElementDataMap{$AtomicNumber}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
649 for $Index (0 .. $#LineWords) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
650 $Name = $ElementPropertyNames[$Index];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
651 $Value = $LineWords[$Index];
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
652 $ElementDataMap{$AtomicNumber}{$Name} = $Value;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
653 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
654 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
655 close ELEMENTDATAFILE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
656
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
657 # Setup the element symbol map as well...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
658 _SetupElementSymbolMap();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
659 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
660
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
661 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
662 # Load PeriodicTableIsotopeData.csv files from <MayaChemTools>/lib directory...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
663 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
664 sub _LoadElementIsotopeData {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
665 my($ElementIsotopeDataFile) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
666
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
667 %ElementIsotopeDataMap = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
668 %ElementIsotopeDerivedDataMap = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
669
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
670 # Load isotope data for all elements...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
671 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
672 # File format:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
673 # "Atomic Number","Isotope Symbol","Mass Number","Relative Atomic Mass","% Natural Abundnace"
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
674 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
675 # Empty values for "Relative Atomic Mass" and "% Natural Abundnace" imply absence of any
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
676 # naturally occuring isotopes for the element.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
677 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
678 my($InDelim, $Line, $NumOfCols, @ColLabels, @LineWords);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
679
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
680 $InDelim = "\,";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
681 open ISOTOPEDATAFILE, "$ElementIsotopeDataFile" or croak "Couldn't open $ElementIsotopeDataFile: $! ...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
682
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
683 # Skip lines up to column labels...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
684 LINE: while ($Line = GetTextLine(\*ISOTOPEDATAFILE)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
685 if ($Line !~ /^#/) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
686 last LINE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
687 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
688 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
689 @ColLabels= quotewords($InDelim, 0, $Line);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
690 $NumOfCols = @ColLabels;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
691
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
692 my($AtomicNumber, $IsotopeSymbol, $MassNumber, $RelativeAtomicMass, $NaturalAbundance, %ZeroNaturalAbundanceMap);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
693 %ZeroNaturalAbundanceMap = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
694
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
695 # Process element data...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
696 LINE: while ($Line = GetTextLine(\*ISOTOPEDATAFILE)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
697 if ($Line =~ /^#/) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
698 next LINE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
699 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
700 @LineWords = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
701 @LineWords = quotewords($InDelim, 0, $Line);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
702 if (@LineWords != $NumOfCols) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
703 croak "Error: The number of data fields, @LineWords, in $ElementIsotopeDataFile must be $NumOfCols.\nLine: $Line...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
704 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
705 ($AtomicNumber, $IsotopeSymbol, $MassNumber, $RelativeAtomicMass, $NaturalAbundance) = @LineWords;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
706 if (exists $ZeroNaturalAbundanceMap{$AtomicNumber}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
707 # Only one isotope data line allowed for elements with no natural isotopes...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
708 carp "Warning: Ignoring isotope data for element with atomic number $AtomicNumber: Only one data line allowed for an element with no natural isotopes.\nLine: $Line...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
709 next LINE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
710 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
711 if (IsEmpty($NaturalAbundance)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
712 $RelativeAtomicMass = 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
713 $NaturalAbundance = 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
714 $ZeroNaturalAbundanceMap{$AtomicNumber} = 1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
715 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
716 if (exists $ElementIsotopeDataMap{$AtomicNumber}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
717 # Additional data for an existing element...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
718 if (exists $ElementIsotopeDataMap{$AtomicNumber}{$MassNumber}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
719 carp "Warning: Ignoring isotope data for element with atomic number $AtomicNumber: It has already been loaded.\nLine: $Line...";
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
720 next LINE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
721 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
722 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
723 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
724 # Data for a new element...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
725 %{$ElementIsotopeDataMap{$AtomicNumber}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
726 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
727 %{$ElementIsotopeDataMap{$AtomicNumber}{$MassNumber}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
728 $ElementIsotopeDataMap{$AtomicNumber}{$MassNumber}{IsotopeSymbol} = $IsotopeSymbol;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
729 $ElementIsotopeDataMap{$AtomicNumber}{$MassNumber}{RelativeAtomicMass} = $RelativeAtomicMass;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
730 $ElementIsotopeDataMap{$AtomicNumber}{$MassNumber}{NaturalAbundance} = $NaturalAbundance;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
731 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
732 close ISOTOPEDATAFILE;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
733
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
734 _SetupElementIsotopeDerivedDataMap();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
735 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
736
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
737 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
738 # Map mass number of most abundant isotope for each element; additionally,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
739 # count number of isotopes as well.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
740 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
741 sub _SetupElementIsotopeDerivedDataMap {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
742 my($AtomicNumber, $MassNumber, $NaturalAbundance, $MostNaturalAbundance, $MostAbundantMassNumber, $IsotopeCount);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
743
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
744 %ElementIsotopeDerivedDataMap = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
745
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
746 for $AtomicNumber (sort {$a <=> $b} keys %ElementIsotopeDataMap) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
747 $IsotopeCount = 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
748 $MostAbundantMassNumber = 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
749 $MostNaturalAbundance = 0;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
750 MASSNUMBER: for $MassNumber (sort {$a <=> $b} keys %{$ElementIsotopeDataMap{$AtomicNumber}}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
751 $NaturalAbundance = $ElementIsotopeDataMap{$AtomicNumber}{$MassNumber}{NaturalAbundance};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
752 if (IsEmpty($NaturalAbundance)) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
753 # No natural isotopes available...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
754 $MostAbundantMassNumber = $MassNumber;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
755 last MASSNUMBER;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
756 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
757 if ($NaturalAbundance == 0) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
758 # Not a natural isotope; Listed in periodic table data file to support non-natural
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
759 # elements such as T. It's not included in natural isotope count...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
760 next MASSNUMBER;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
761 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
762 $IsotopeCount++;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
763 if ($NaturalAbundance > $MostNaturalAbundance) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
764 $MostAbundantMassNumber = $MassNumber;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
765 $MostNaturalAbundance = $NaturalAbundance;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
766 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
767 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
768 %{$ElementIsotopeDerivedDataMap{$AtomicNumber}} = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
769 $ElementIsotopeDerivedDataMap{$AtomicNumber}{IsotopeCount} = $IsotopeCount;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
770 $ElementIsotopeDerivedDataMap{$AtomicNumber}{MostAbundantMassNumber} = $MostAbundantMassNumber;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
771 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
772 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
773
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
774 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
775 # Setup element symbol map...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
776 #
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
777 sub _SetupElementSymbolMap {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
778 my($AtomicNumber, $ElementSymbol);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
779
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
780 %ElementSymbolMap = ();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
781
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
782 for $AtomicNumber (keys %ElementDataMap) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
783 $ElementSymbol = $ElementDataMap{$AtomicNumber}{ElementSymbol};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
784 $ElementSymbolMap{$ElementSymbol} = $AtomicNumber;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
785 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
786 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
787
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
788 # Validate element ID...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
789 sub _ValidateElementID {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
790 my($ElementID) = @_;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
791 my($ElementSymbol, $AtomicNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
792
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
793 if ($ElementID =~ /[^0-9]/) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
794 # Assume atomic symbol...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
795 $ElementSymbol = $ElementID;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
796 if (exists $ElementSymbolMap{$ElementSymbol}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
797 $AtomicNumber = $ElementSymbolMap{$ElementSymbol};
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
798 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
799 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
800 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
801 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
802 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
803 else {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
804 # Assume atomic number...
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
805 $AtomicNumber = $ElementID;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
806 if (!exists $ElementDataMap{$AtomicNumber}) {
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
807 return undef;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
808 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
809 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
810 return $AtomicNumber;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
811 }
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
812
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
813 1;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
814
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
815 __END__
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
816
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
817 =head1 NAME
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
818
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
819 PeriodicTable
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
820
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
821 =head1 SYNOPSIS
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
822
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
823 use PeriodicTable;
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
824
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
825 use PeriodicTable qw(:all);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
826
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
827 =head1 DESCRIPTION
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
828
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
829 B<PeriodicTable> module provides the following functions:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
830
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
831 GetElementMostAbundantNaturalIsotopeData,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
832 GetElementMostAbundantNaturalIsotopeMass,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
833 GetElementMostAbundantNaturalIsotopeMassNumber, GetElementNaturalIsotopeAbundance,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
834 GetElementNaturalIsotopeCount, GetElementNaturalIsotopeMass,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
835 GetElementNaturalIsotopesData, GetElementPropertiesData,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
836 GetElementPropertiesNames, GetElementPropertiesNamesAndUnits,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
837 GetElementPropertyUnits, GetElements, GetElementsByAmericanStyleGroupLabel,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
838 GetElementsByEuropeanStyleGroupLabel, GetElementsByGroupName,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
839 GetElementsByGroupNumber, GetElementsByPeriodNumber,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
840 GetIUPACGroupNumberFromAmericanStyleGroupLabel,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
841 GetIUPACGroupNumberFromEuropeanStyleGroupLabel, IsElement,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
842 IsElementNaturalIsotopeMassNumber, IsElementProperty
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
843
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
844 =head1 METHODS
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
845
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
846 =over 4
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
847
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
848 =item B<GetElements>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
849
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
850 @ElementSymbols = GetElements();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
851 $ElementSymbolsRef = GetElements();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
852
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
853 Returns an array or a reference to an array of known element symbols
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
854
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
855 =item B<GetElementsByGroupName>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
856
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
857 @ElementSymbols = GetElementsByGroupName($GroupName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
858 $ElementSymbolsRef = GetElementsByGroupName($GroupName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
859
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
860 Returns an array or a reference to an array of element symbols for a specified I<GroupName>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
861 Supported I<GroupName> values are: I<Alkali metals, Alkaline earth metals, Coinage metals, Pnictogens,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
862 Chalcogens, Halogens, Noble gases>; Additionally, usage of I<Lanthanides> (Lanthanoids)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
863 and I<Actinides> (Actinoids) is also supported.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
864
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
865 =item B<GetElementsByGroupNumber>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
866
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
867 @ElementSymbols = GetElementsByGroupNumber($GroupNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
868 $ElementSymbolsRef = GetElementsByGroupNumber($GroupNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
869
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
870 Returns an array or a reference to an array of element symbols for a specified I<GroupNumber>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
871
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
872 =item B<GetElementsByAmericanStyleGroupLabel>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
873
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
874 @ElementSymbols = GetElementsByAmericanStyleGroupLabel($GroupLabel);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
875 $ElementSymbolsRef = GetElementsByAmericanStyleGroupLabel($GroupLabel);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
876
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
877 Returns an array or a reference to an array of element symbols for a specified American
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
878 style I<GroupLabel>. Valid values for Amercian style group labels: I<IA to VIIIA, IB to VIIIB, VIII>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
879
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
880 =item B<GetElementsByEuropeanStyleGroupLabel>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
881
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
882 @ElementSymbols = GetElementsByEuropeanStyleGroupLabel($GroupLabel);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
883 $ElementSymbolsRef = GetElementsByEuropeanStyleGroupLabel($GroupLabel);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
884
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
885 Returns an array or a reference to an array of element symbols for a specified European
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
886 style I<GroupLabel>. Valid values for European style group labels: I<IA to VIIIA, IB to VIIIB, VIII>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
887
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
888 =item B<GetElementsByPeriodNumber>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
889
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
890 @ElementSymbols = GetElementsByPeriodNumber($PeriodNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
891 $ElementSymbolsRef = GetElementsByPeriodNumber($PeriodNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
892
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
893 Returns an array or a reference to an array of element symbols for a specified I<PeriodNumber>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
894
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
895 =item B<GetElementMostAbundantNaturalIsotopeData>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
896
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
897 @IsotopeData = GetElementMostAbundantNaturalIsotopeData(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
898 $ElementID);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
899 $IsotopeDataRef = GetElementMostAbundantNaturalIsotopeData(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
900 $ElementID);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
901
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
902 Returns an array or reference to an array containing data for most abundant isotope of
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
903 an element specfied by element symbol or atomic number. Isotope data arrays contain these
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
904 values: I<AtomicNumber, IsotopeSymbol, MassNumber, RelativeAtomicMass, and NaturalAbundance>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
905
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
906 =item B<GetElementMostAbundantNaturalIsotopeMassNumber>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
907
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
908 $MassNumber = GetElementMostAbundantNaturalIsotopeMassNumber($ElementID);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
909
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
910 Returns mass number of most abundant natural isotope of an element specfied by element
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
911 symbol or atomic number
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
912
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
913 =item B<GetElementNaturalIsotopeCount>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
914
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
915 $IsotopeCount = GetElementNaturalIsotopeCount($ElementID);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
916
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
917 Returns natural isotope count for an element specfied by element symbol or
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
918 atomic number
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
919
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
920 =item B<GetElementNaturalIsotopesData>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
921
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
922 $DataHashRef = GetElementNaturalIsotopesData($ElementID,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
923 [$MassNumber]);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
924
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
925 Reurns a reference to a hash containingall available isotope data for an element specified
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
926 using element symbol or aromic number; an optional mass number indicates retrieve data
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
927 for a specific isotope
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
928
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
929 =item B<GetElementNaturalIsotopeAbundance>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
930
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
931 $Abundance = GetElementNaturalIsotopeAbundance($ElementID,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
932 $MassNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
933
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
934 Returns percent abundance of natural isotope for an element with specfic mass
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
935 number.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
936
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
937 =item B<GetElementMostAbundantNaturalIsotopeMass>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
938
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
939 $RelativeAtomicMass = GetElementMostAbundantNaturalIsotopeMass(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
940 $ElementID);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
941
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
942 Returns relative atomic mass of most abundant isotope for an element specified using
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
943 element symbol or aromic number.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
944
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
945 =item B<GetElementNaturalIsotopeMass>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
946
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
947 $RelativeAtomicMass = GetElementNaturalIsotopeMass($ElementID,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
948 $MassNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
949
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
950 Returns relative atomic mass of an element with specfic mass number.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
951
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
952 =item B<GetElementPropertiesData>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
953
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
954 $PropertyDataHashRef = GetElementPropertiesData($ElementID);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
955
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
956 Returns a reference to a hash containing all available properties data for an element
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
957 specified using element symbol or atomic number.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
958
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
959 =item B<GetElementPropertyName>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
960
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
961 $PropertyValue = GetElement<PropertyName>($ElementID);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
962
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
963 Returns value of an element for a element specified using element symbol or atomic number.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
964
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
965 These functions are not defined in this modules; these are implemented on-the-fly using
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
966 Perl's AUTOLOAD funcionality.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
967
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
968 Here is the list of known element I<property names>: AllenElectronegativity,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
969 AllredRochowElectronegativity, AtomicNumber, AtomicRadiusCalculated,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
970 AtomicRadiusEmpirical, AtomicWeight, Block, BoilingPoint, BondLength,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
971 BrinellHardness, BulkModulus, Classification, CoefficientOfLinearExpansion, Color,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
972 CommonValences, LowestCommonValence, HighestCommonValence,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
973 CommonOxidationNumbers, LowestCommonOxidationNumber, HighestCommonOxidationNumber,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
974 CovalentRadiusEmpirical, CriticalTemperature, DensityOfSolid, DiscoveredAt, DiscoveredBy,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
975 DiscoveredWhen, ElectricalResistivity, ElectronAffinity, ElementName, ElementSymbol, EnthalpyOfAtmization,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
976 EnthalpyOfFusion, EnthalpyOfVaporization, FirstIonizationEnergy, GroundStateConfiguration, GroundStateLevel,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
977 GroupName, GroupNumber, NaturalIsotopeData, MeltingPoint, MineralHardness, MolarVolume,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
978 MullikenJaffeElectronegativity, OriginOfName, PaulingElectronegativity, PeriodNumber, PoissonsRatio,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
979 Reflectivity, RefractiveIndex, RigidityModulus, SandersonElectronegativity, StandardState,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
980 SuperconductionTemperature, ThermalConductivity, VanderWaalsRadius, VelocityOfSound, VickersHardness,
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
981 YoungsModulus.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
982
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
983 =item B<GetElementPropertiesNames>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
984
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
985 @PropertyNames = GetElementPropertiesNames([$Mode]);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
986 $PropertyNamesRef = GetElementPropertiesNames([$Mode]);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
987
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
988 Returns names of all available element properties. Optional mode parameter controls
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
989 grouping of property names; Possible values: I<ByGroup or Alphabetical>. Default:
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
990 I<ByGroup>.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
991
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
992 =item B<GetElementPropertiesNamesAndUnits>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
993
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
994 $NameUnitsHashRef = GetElementPropertiesNamesAndUnits();
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
995
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
996 Returns a reference to a hash of property names and units of all available element
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
997 properties. Names with no units contains empty strings.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
998
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
999 =item B<GetElementPropertyUnits>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1000
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1001 $Units = GetElementPropertyUnits($PropertyName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1002
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1003 Returns units for a specific element property name. An empty string is returned for
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1004 a property with no units.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1005
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1006 =item B<GetIUPACGroupNumberFromAmericanStyleGroupLabel>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1007
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1008 $GroupNumber = GetIUPACGroupNumberFromAmericanStyleGroupLabel(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1009 $GroupLabel);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1010
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1011 Returns IUPAC group numbers of a specific American style group label. A comma delimited
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1012 string is returned for group VIII or VIIIB.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1013
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1014 =item B<GetIUPACGroupNumberFromEuropeanStyleGroupLabel>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1015
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1016 $GroupNumber = GetIUPACGroupNumberFromEuropeanStyleGroupLabel(
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1017 $GroupLabel);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1018
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1019 Returns IUPAC group numbers of a specific European style group label. A comma delimited
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1020 string is returned for group VIII or VIIIA.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1021
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1022 =item B<IsElement>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1023
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1024 $Status = IsElement($ElementID);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1025
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1026 Returns 1 or 0 based on whether it's a known element symbol or atomic number.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1027
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1028 =item B<IsElementNaturalIsotopeMassNumber>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1029
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1030 $Status = IsElementNaturalIsotopeMassNumber($ElementID, $MassNumber);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1031
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1032 Returns 1 or 0 based on whether it's a valid mass number for an element symbol
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1033 or atomic number.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1034
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1035 =item B<IsElementProperty>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1036
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1037 $Status = IsElementProperty($PropertyName);
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1038
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1039 Returns 1 or 0 based on whether it's a valid property name.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1040
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1041 =back
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1042
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1043 =head1 AUTHOR
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1044
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1045 Manish Sud <msud@san.rr.com>
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1046
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1047 =head1 SEE ALSO
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1048
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1049 AminoAcids.pm, NucleicAcids.pm
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1050
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1051 =head1 COPYRIGHT
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1052
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1053 Copyright (C) 2015 Manish Sud. All rights reserved.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1054
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1055 This file is part of MayaChemTools.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1056
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1057 MayaChemTools is free software; you can redistribute it and/or modify it under
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1058 the terms of the GNU Lesser General Public License as published by the Free
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1059 Software Foundation; either version 3 of the License, or (at your option)
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1060 any later version.
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1061
4816e4a8ae95 Uploaded
deepakjadmin
parents:
diff changeset
1062 =cut