Changed Chem.pm to link
This commit is contained in:
@ -1,663 +0,0 @@
|
||||
# This file is part of TrimSPGUI.
|
||||
#
|
||||
# TrimSPGUI is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# TrimSPGUI is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Foobar. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Copyright 2009 by Zaher Salman and the LEM Group.
|
||||
|
||||
package Chem;
|
||||
|
||||
sub parse_formula {
|
||||
my ($formula) = @_;
|
||||
# print STDOUT "formula=$formula\n";
|
||||
my (%elements);
|
||||
|
||||
#check balancing
|
||||
return %elements if (!ParensBalanced($formula));
|
||||
|
||||
# replace other grouping with normal parens
|
||||
$formula =~ tr/<>{}[]/()()()/;
|
||||
|
||||
# get rid of any spaces
|
||||
$formula =~ s/\s+//g;
|
||||
|
||||
# perform macro expansion
|
||||
foreach (keys(%macros)) {
|
||||
$formula =~ s/$_/$macros{$_}/g;
|
||||
}
|
||||
|
||||
# determine initial compound coeficent
|
||||
my $coef = ($formula =~ s/^(\d+\.?\d*)//) ? $1 : 1.0;
|
||||
|
||||
# recursively process rest of formula
|
||||
return internal_formula_parser($formula, $coef, %elements);
|
||||
}
|
||||
|
||||
|
||||
sub internal_formula_parser {
|
||||
use Text::Balanced qw(extract_bracketed);
|
||||
|
||||
my ($formula, $coef, %form) = @_;
|
||||
my $tmp_coef;
|
||||
|
||||
my ($extract, $remainder, $prefix) =
|
||||
extract_bracketed($formula, '()', '[^(]*');
|
||||
|
||||
if (defined($extract) and $extract ne '') {
|
||||
$extract =~ s/^\((.*)\)$/$1/;
|
||||
if ($remainder =~ s/^(\d+\.?\d*)(.*)$/$2/) {
|
||||
$tmp_coef = $1 * $coef;
|
||||
} else {
|
||||
$tmp_coef = $coef;
|
||||
}
|
||||
|
||||
# get formula of prefix ( it has no parens)
|
||||
%form = add_formula_strings($prefix, $coef, %form) if ($prefix ne '');
|
||||
|
||||
# check remainder for more parens
|
||||
%form = internal_formula_parser($remainder, $coef, %form)
|
||||
if ($remainder ne '');
|
||||
|
||||
# check extract for more parens
|
||||
%form =
|
||||
internal_formula_parser($extract, $tmp_coef, %form);
|
||||
## we already know this is ne ''
|
||||
} else { # get formula of complete string
|
||||
%form = add_formula_strings($remainder, $coef, %form)
|
||||
if ($remainder ne '');
|
||||
}
|
||||
return %form;
|
||||
}
|
||||
|
||||
|
||||
sub add_formula_strings {
|
||||
my ($formula, $coef, %elements) = @_;
|
||||
|
||||
# print "Getting Formula of $formula\n";
|
||||
$formula =~ /^(?:([A-Z][a-z]*)(\d+\.?\d*)?)+$/o # XXX new
|
||||
or die "Invalid Portion of Formula $formula";
|
||||
while ($formula =~ m/([A-Z][a-z]*)(\d+\.?\d*)?/go) { # XXX new
|
||||
my ($elm, $count) = ($1, $2);
|
||||
$count = 1 unless defined $count;
|
||||
if (defined $elements{$elm}) {
|
||||
$elements{$elm} += $count * $coef;
|
||||
} else {
|
||||
$elements{$elm} = $count * $coef;
|
||||
}
|
||||
}
|
||||
return %elements;
|
||||
}
|
||||
|
||||
sub ParensBalanced {
|
||||
my ($form) = @_;
|
||||
my @stack = ();
|
||||
my %pairs = (
|
||||
'<' => '>',
|
||||
'{' => '}',
|
||||
'[' => ']',
|
||||
'(' => ')'
|
||||
);
|
||||
|
||||
while ($form =~ m/([<>(){}\]\[])/go) {
|
||||
my $current = $1;
|
||||
if ($current =~ /[<({\[]/) {
|
||||
push(@stack, $current);
|
||||
next;
|
||||
}
|
||||
return 0 if (scalar(@stack) == 0);
|
||||
return 0 if ($current ne $pairs{ pop @stack});
|
||||
}
|
||||
return @stack ? 0 : 1;
|
||||
}
|
||||
|
||||
sub Zof {
|
||||
my ($El) = @_;
|
||||
|
||||
my %ElementsZ = (
|
||||
"Muon",1,
|
||||
"Li8", 3,
|
||||
"B12", 5,
|
||||
"H",1,
|
||||
"He", 2,
|
||||
"Li", 3,
|
||||
"Be", 4,
|
||||
"B", 5,
|
||||
"C", 6,
|
||||
"N", 7,
|
||||
"O", 8,
|
||||
"F", 9,
|
||||
"Ne", 10,
|
||||
"Na", 11,
|
||||
"Mg", 12,
|
||||
"Al", 13,
|
||||
"Si", 14,
|
||||
"P", 15,
|
||||
"S", 16,
|
||||
"Cl", 17,
|
||||
"Ar", 18,
|
||||
"K", 19,
|
||||
"Ca", 20,
|
||||
"Sc", 21,
|
||||
"Ti", 22,
|
||||
"V", 23,
|
||||
"Cr", 24,
|
||||
"Mn", 25,
|
||||
"Fe", 26,
|
||||
"Co", 27,
|
||||
"Ni", 28,
|
||||
"Cu", 29,
|
||||
"Zn", 30,
|
||||
"Ga", 31,
|
||||
"Ge", 32,
|
||||
"As", 33,
|
||||
"Se", 34,
|
||||
"Br", 35,
|
||||
"Kr", 36,
|
||||
"Rb", 37,
|
||||
"Sr", 38,
|
||||
"Y", 39,
|
||||
"Zr", 40,
|
||||
"Nb", 41,
|
||||
"Mo", 42,
|
||||
"Tc", 43,
|
||||
"Ru", 44,
|
||||
"Rh", 45,
|
||||
"Pd", 46,
|
||||
"Ag", 47,
|
||||
"Cd", 48,
|
||||
"In", 49,
|
||||
"Sn", 50,
|
||||
"Sb", 51,
|
||||
"Te", 52,
|
||||
"I", 53,
|
||||
"Xe", 54,
|
||||
"Cs", 55,
|
||||
"Ba", 56,
|
||||
"La", 57,
|
||||
"Ce", 58,
|
||||
"Pr", 59,
|
||||
"Nd", 60,
|
||||
"Pm", 61,
|
||||
"Sm", 62,
|
||||
"Eu", 63,
|
||||
"Gd", 64,
|
||||
"Tb", 65,
|
||||
"Dy", 66,
|
||||
"Ho", 67,
|
||||
"Er", 68,
|
||||
"Tm", 69,
|
||||
"Yb", 70,
|
||||
"Lu", 71,
|
||||
"Hf", 72,
|
||||
"Ta", 73,
|
||||
"W", 74,
|
||||
"Re", 75,
|
||||
"Os", 76,
|
||||
"Ir", 77,
|
||||
"Pt", 78,
|
||||
"Au", 79,
|
||||
"Hg", 80,
|
||||
"Tl", 81,
|
||||
"Pb", 82,
|
||||
"Bi", 83,
|
||||
"Po", 84,
|
||||
"At", 85,
|
||||
"Rn", 86,
|
||||
"Fr", 87,
|
||||
"Ra", 88,
|
||||
"Ac", 89,
|
||||
"Th", 90,
|
||||
"Pa", 91,
|
||||
"U", 92,
|
||||
"", 0.0000
|
||||
);
|
||||
return $ElementsZ{$El};
|
||||
}
|
||||
|
||||
sub Massof {
|
||||
my ($El) = @_;
|
||||
|
||||
my %ElementsA = (
|
||||
"Muon",0.113,
|
||||
"Li8", 8.0,
|
||||
"B12", 12.0,
|
||||
"H", 1.00800,
|
||||
"He", 4.00300,
|
||||
"Li", 6.93900,
|
||||
"Be", 9.01200,
|
||||
"B", 10.81100,
|
||||
"C", 12.01100,
|
||||
"N", 14.00700,
|
||||
"O", 15.99900,
|
||||
"F", 18.99800,
|
||||
"Ne", 20.18300,
|
||||
"Na", 22.99000,
|
||||
"Mg", 24.31200,
|
||||
"Al", 26.98200,
|
||||
"Si", 28.08600,
|
||||
"P", 30.97400,
|
||||
"S", 32.06400,
|
||||
"Cl", 35.45300,
|
||||
"Ar", 39.94800,
|
||||
"K", 39.10200,
|
||||
"Ca", 40.08000,
|
||||
"Sc", 44.95600,
|
||||
"Ti", 47.90000,
|
||||
"V", 50.94200,
|
||||
"Cr", 51.99600,
|
||||
"Mn", 54.93800,
|
||||
"Fe", 55.84700,
|
||||
"Co", 58.93300,
|
||||
"Ni", 58.71000,
|
||||
"Cu", 63.54000,
|
||||
"Zn", 65.37000,
|
||||
"Ga", 69.72000,
|
||||
"Ge", 72.59000,
|
||||
"As", 74.92200,
|
||||
"Se", 78.96000,
|
||||
"Br", 79.90900,
|
||||
"Kr", 83.80000,
|
||||
"Rb", 85.47000,
|
||||
"Sr", 87.62000,
|
||||
"Y", 88.90500,
|
||||
"Zr", 91.22000,
|
||||
"Nb", 92.90600,
|
||||
"Mo", 95.94000,
|
||||
"Tc", 98.00000,
|
||||
"Ru", 101.07000,
|
||||
"Rh", 102.90500,
|
||||
"Pd", 106.40000,
|
||||
"Ag", 107.87000,
|
||||
"Cd", 112.40000,
|
||||
"In", 114.82000,
|
||||
"Sn", 118.69000,
|
||||
"Sb", 121.75000,
|
||||
"Te", 127.60000,
|
||||
"I", 126.90400,
|
||||
"Xe", 131.30000,
|
||||
"Cs", 132.90500,
|
||||
"Ba", 137.34000,
|
||||
"La", 138.91000,
|
||||
"Ce", 140.12000,
|
||||
"Pr", 140.90700,
|
||||
"Nd", 144.24001,
|
||||
"Pm", 147.00000,
|
||||
"Sm", 150.35001,
|
||||
"Eu", 151.96001,
|
||||
"Gd", 157.25000,
|
||||
"Tb", 158.92400,
|
||||
"Dy", 162.50000,
|
||||
"Ho", 164.92999,
|
||||
"Er", 167.25999,
|
||||
"Tm", 168.93401,
|
||||
"Yb", 173.03999,
|
||||
"Lu", 174.97000,
|
||||
"Hf", 178.49001,
|
||||
"Ta", 180.94800,
|
||||
"W", 183.85001,
|
||||
"Re", 186.20000,
|
||||
"Os", 190.20000,
|
||||
"Ir", 192.20000,
|
||||
"Pt", 195.09000,
|
||||
"Au", 196.96700,
|
||||
"Hg", 200.59000,
|
||||
"Tl", 204.37000,
|
||||
"Pb", 207.19000,
|
||||
"Bi", 208.98000,
|
||||
"Po", 210.00000,
|
||||
"At", 210.00000,
|
||||
"Rn", 222.00000,
|
||||
"Fr", 223.00000,
|
||||
"Ra", 226.00000,
|
||||
"Ac", 227.00000,
|
||||
"Th", 232.03799,
|
||||
"Pa", 231.00000,
|
||||
"U", 238.03000,
|
||||
"", 0.0000
|
||||
);
|
||||
return $ElementsA{$El};
|
||||
|
||||
}
|
||||
|
||||
sub Elastof {
|
||||
my ($El) = @_;
|
||||
|
||||
my %Elast = (
|
||||
"H", 0.10000,
|
||||
"He", 0.10000,
|
||||
"Li", 1.63000,
|
||||
"Be", 3.32000,
|
||||
"B", 5.77000,
|
||||
"C", 7.37000,
|
||||
"N", 4.92000,
|
||||
"O", 2.60000,
|
||||
"F", 0.84000,
|
||||
"Ne", 0.02000,
|
||||
"Na", 1.11000,
|
||||
"Mg", 1.51000,
|
||||
"Al", 3.39000,
|
||||
"Si", 4.63000,
|
||||
"P", 3.43000,
|
||||
"S", 2.85000,
|
||||
"Cl", 1.40000,
|
||||
"Ar", 0.08000,
|
||||
"K", 0.93000,
|
||||
"Ca", 1.84000,
|
||||
"Sc", 3.90000,
|
||||
"Ti", 4.85000,
|
||||
"V", 5.31000,
|
||||
"Cr", 4.10000,
|
||||
"Mn", 2.92000,
|
||||
"Fe", 4.28000,
|
||||
"Co", 4.39000,
|
||||
"Ni", 4.44000,
|
||||
"Cu", 3.49000,
|
||||
"Zn", 1.35000,
|
||||
"Ga", 2.81000,
|
||||
"Ge", 3.85000,
|
||||
"As", 2.96000,
|
||||
"Se", 2.25000,
|
||||
"Br", 1.22000,
|
||||
"Kr", 0.12000,
|
||||
"Rb", 0.85000,
|
||||
"Sr", 1.72000,
|
||||
"Y", 4.37000,
|
||||
"Zr", 6.25000,
|
||||
"Nb", 7.57000,
|
||||
"Mo", 6.82000,
|
||||
"Tc", 6.85000,
|
||||
"Ru", 6.74000,
|
||||
"Rh", 5.75000,
|
||||
"Pd", 3.89000,
|
||||
"Ag", 2.95000,
|
||||
"Cd", 1.16000,
|
||||
"In", 2.52000,
|
||||
"Sn", 3.14000,
|
||||
"Sb", 2.75000,
|
||||
"Te", 2.23000,
|
||||
"I", 1.11000,
|
||||
"Xe", 0.16000,
|
||||
"Cs", 0.80000,
|
||||
"Ba", 1.90000,
|
||||
"La", 4.47000,
|
||||
"Ce", 4.32000,
|
||||
"Pr", 3.70000,
|
||||
"Nd", 3.40000,
|
||||
"Pm", 0.10000,
|
||||
"Sm", 2.14000,
|
||||
"Eu", 1.86000,
|
||||
"Gd", 4.14000,
|
||||
"Tb", 4.05000,
|
||||
"Dy", 3.04000,
|
||||
"Ho", 3.14000,
|
||||
"Er", 3.29000,
|
||||
"Tm", 2.42000,
|
||||
"Yb", 1.60000,
|
||||
"Lu", 4.43000,
|
||||
"Hf", 6.44000,
|
||||
"Ta", 8.10000,
|
||||
"W", 8.90000,
|
||||
"Re", 8.03000,
|
||||
"Os", 8.17000,
|
||||
"Ir", 6.94000,
|
||||
"Pt", 5.84000,
|
||||
"Au", 3.81000,
|
||||
"Hg", 0.67000,
|
||||
"Tl", 1.88000,
|
||||
"Pb", 2.03000,
|
||||
"Bi", 2.18000,
|
||||
"Po", 1.50000,
|
||||
"At", 0.10000,
|
||||
"Rn", 0.20000,
|
||||
"Fr", 0.10000,
|
||||
"Ra", 1.66000,
|
||||
"Ac", 4.25000,
|
||||
"Th", 6.20000,
|
||||
"Pa", 0.10000,
|
||||
"U", 5.55000,
|
||||
"", 0.00000
|
||||
);
|
||||
return $Elast{$El};
|
||||
}
|
||||
|
||||
sub Stopicru {
|
||||
# Given the element it returns "A-1, A-2, A-3, A-4, A-5" of the ziegler tables
|
||||
my ($El) = @_;
|
||||
|
||||
my %Stopicru = (
|
||||
"H", "1.25400,1.44000,242.60001,12000.00000,0.11590",
|
||||
"He", "1.22900,1.39700,484.50000,5873.00000,0.05225",
|
||||
"Li", "1.41100,1.60000,725.59998,3013.00000,0.04578",
|
||||
"Be", "2.24800,2.59000,966.00000,153.80000,0.03475",
|
||||
"B", "2.47400,2.81500,1206.00000,1060.00000,0.02855",
|
||||
"C", "2.60100,2.60100,1701.00000,1279.00000,0.01638",
|
||||
"N", "2.95400,3.35000,1683.00000,1900.00000,0.02513",
|
||||
"O", "2.65200,3.00000,1920.00000,2000.00000,0.02230",
|
||||
"F", "2.08500,2.35200,2157.00000,2634.00000,0.01816",
|
||||
"Ne", "1.95100,2.19900,2393.00000,2699.00000,0.01568",
|
||||
"Na", "2.54200,2.86900,2628.00000,1854.00000,0.01472",
|
||||
"Mg", "3.79100,4.29300,2862.00000,1009.00000,0.01397",
|
||||
"Al", "4.15400,4.73900,2766.00000,164.50000,0.02023",
|
||||
"Si", "4.91400,5.59800,3193.00000,232.70000,0.01419",
|
||||
"P", "3.23200,3.64700,3561.00000,1560.00000,0.01267",
|
||||
"S", "3.44700,3.89100,3792.00000,1219.00000,0.01211",
|
||||
"Cl", "5.30100,6.00800,3969.00000,645.09998,0.01183",
|
||||
"Ar", "5.73100,6.50000,4253.00000,530.00000,0.01123",
|
||||
"K", "5.15200,5.83300,4482.00000,545.70001,0.01129",
|
||||
"Ca", "5.52100,6.25200,4710.00000,553.29999,0.01120",
|
||||
"Sc", "5.20100,5.88400,4938.00000,560.90002,0.01000",
|
||||
"Ti", "4.85800,5.48900,5260.00000,651.09998,0.00893",
|
||||
"V", "4.47900,5.05500,5391.00000,952.29999,0.00912",
|
||||
"Cr", "3.98300,4.48900,5616.00000,1336.00000,0.00841",
|
||||
"Mn", "3.46900,3.90700,5725.00000,1461.00000,0.00883",
|
||||
"Fe", "3.51900,3.96300,6065.00000,1243.00000,0.00778",
|
||||
"Co", "3.14000,3.53500,6288.00000,1372.00000,0.00736",
|
||||
"Ni", "3.55300,4.00400,6205.00000,555.09998,0.00876",
|
||||
"Cu", "3.69600,4.19400,4649.00000,81.13000,0.02242",
|
||||
"Zn", "4.21000,4.75000,6953.00000,295.20001,0.00681",
|
||||
"Ga", "5.04100,5.69700,7137.00000,202.60001,0.00673",
|
||||
"Ge", "5.55400,6.30000,6496.00000,110.00000,0.00969",
|
||||
"As", "5.32300,6.01200,7611.00000,292.50000,0.00645",
|
||||
"Se", "5.87400,6.65600,7395.00000,117.50000,0.00768",
|
||||
"Br", "6.65800,7.53600,7694.00000,222.30000,0.00651",
|
||||
"Kr", "6.41300,7.24000,11850.00000,153.70000,0.00288",
|
||||
"Rb", "5.69400,6.42900,8478.00000,292.89999,0.00609",
|
||||
"Sr", "6.33900,7.15900,8693.00000,330.29999,0.00600",
|
||||
"Y", "6.40700,7.23400,8907.00000,367.79999,0.00589",
|
||||
"Zr", "6.73400,7.60300,9120.00000,405.20001,0.00576",
|
||||
"Nb", "6.90100,7.79100,9333.00000,442.70001,0.00559",
|
||||
"Mo", "6.42400,7.24800,9545.00000,480.20001,0.00538",
|
||||
"Tc", "6.79900,7.67100,9756.00000,517.59998,0.00532",
|
||||
"Ru", "6.10900,6.88700,9966.00000,555.09998,0.00515",
|
||||
"Rh", "5.92400,6.67700,10180.00000,592.50000,0.00492",
|
||||
"Pd", "5.23800,5.90000,10380.00000,630.00000,0.00476",
|
||||
"Ag", "5.34500,6.03800,6790.00000,397.79999,0.01676",
|
||||
"Cd", "5.81400,6.55400,10800.00000,355.50000,0.00463",
|
||||
"In", "6.22900,7.02400,11010.00000,370.89999,0.00454",
|
||||
"Sn", "6.40900,7.22700,11210.00000,386.39999,0.00447",
|
||||
"Sb", "7.50000,8.48000,8608.00000,348.00000,0.00907",
|
||||
"Te", "6.97900,7.87100,11620.00000,392.39999,0.00440",
|
||||
"I", "7.72500,8.71600,11830.00000,394.79999,0.00438",
|
||||
"Xe", "8.33700,9.42500,10510.00000,269.60001,0.00621",
|
||||
"Cs", "7.28700,8.21800,12230.00000,399.70001,0.00445",
|
||||
"Ba", "7.89900,8.91100,12430.00000,402.10001,0.00451",
|
||||
"La", "8.04100,9.07100,12630.00000,404.50000,0.00454",
|
||||
"Ce", "7.48800,8.44400,12830.00000,406.89999,0.00442",
|
||||
"Pr", "7.29100,8.21900,13030.00000,409.29999,0.00430",
|
||||
"Nd", "7.09800,8.00000,13230.00000,411.79999,0.00418",
|
||||
"Pm", "6.90900,7.78600,13430.00000,414.20001,0.00406",
|
||||
"Sm", "6.72800,7.58000,13620.00000,416.60001,0.00398",
|
||||
"Eu", "6.55100,7.38000,13820.00000,419.00000,0.00388",
|
||||
"Gd", "6.73900,7.59200,14020.00000,421.39999,0.00386",
|
||||
"Tb", "6.21200,6.99600,14210.00000,423.89999,0.00372",
|
||||
"Dy", "5.51700,6.21000,14400.00000,426.29999,0.00363",
|
||||
"Ho", "5.22000,5.87400,14600.00000,428.70001,0.00350",
|
||||
"Er", "5.07100,5.70600,14790.00000,433.00000,0.00341",
|
||||
"Tm", "4.92600,5.54200,14980.00000,433.50000,0.00334",
|
||||
"Yb", "4.78800,5.38600,15170.00000,435.89999,0.00329",
|
||||
"Lu", "4.89300,5.50500,15360.00000,438.29999,0.00324",
|
||||
"Hf", "5.02800,5.65700,15550.00000,440.79999,0.00320",
|
||||
"Ta", "4.73800,5.32900,15740.00000,443.20001,0.00319",
|
||||
"W", "4.58700,5.16000,15410.00000,415.29999,0.00341",
|
||||
"Re", "5.20100,5.85100,16120.00000,441.60001,0.00312",
|
||||
"Os", "5.07100,5.70400,16300.00000,440.89999,0.00308",
|
||||
"Ir", "4.94600,5.56300,16490.00000,440.10001,0.00296",
|
||||
"Pt", "4.47700,5.03400,16670.00000,439.29999,0.00287",
|
||||
"Au", "4.84400,5.45800,7852.00000,975.79999,0.02077",
|
||||
"Hg", "4.30700,4.84300,17040.00000,487.79999,0.00288",
|
||||
"Tl", "4.72300,5.31100,17220.00000,537.00000,0.00291",
|
||||
"Pb", "5.31900,5.98200,17400.00000,586.29999,0.00287",
|
||||
"Bi", "5.95600,6.70000,17800.00000,677.00000,0.00266",
|
||||
"Po", "6.15800,6.92800,17770.00000,586.29999,0.00281",
|
||||
"At", "6.20300,6.97900,17950.00000,586.29999,0.00278",
|
||||
"Rn", "6.18100,6.95400,18120.00000,586.29999,0.00275",
|
||||
"Fr", "6.94900,7.82000,18300.00000,586.29999,0.00274",
|
||||
"Ra", "7.50600,8.44800,18480.00000,586.29999,0.00273",
|
||||
"Ac", "7.64800,8.60900,18660.00000,586.29999,0.00270",
|
||||
"Th", "7.71100,8.67900,18830.00000,586.29999,0.00264",
|
||||
"Pa", "7.40700,8.33600,19010.00000,586.29999,0.00260",
|
||||
"U", "7.29000,8.20400,19180.00000,586.29999,0.00267",
|
||||
"", "0.00000,0.00000,0.00000,0.00000,0.00000"
|
||||
);
|
||||
return $Stopicru{$El};
|
||||
}
|
||||
|
||||
sub Densities {
|
||||
# Database of densities for different compounds and elements
|
||||
my ($Compound) = @_;
|
||||
|
||||
my %Densities = (
|
||||
"NbN",8.47,
|
||||
"Bi2Se3",7.51,
|
||||
"N2",1.145,
|
||||
"ZnO",5.61,
|
||||
"ZnSe",5.26,
|
||||
"ZnS",4.09,
|
||||
"ZrO",6.0,
|
||||
"Gd3Ga5O12",7.08,
|
||||
"MgAl2O4",3.60,
|
||||
"NdGaO3",7.57,
|
||||
"YAlO3",4.88,
|
||||
"Y3Al5O12",4.55,
|
||||
"LiF",2.60,
|
||||
"CaF2",3.18,
|
||||
"BaFe",4.83,
|
||||
"MgF2",3.18,
|
||||
"SiO2",2.65,
|
||||
"TiO2",4.26,
|
||||
"KTaO3",6.967,
|
||||
"LaAlO3",6.70,
|
||||
"Al2O3",3.98,
|
||||
"SrTiO3",5.12,
|
||||
"SrLaGaO4",6.389,
|
||||
"SrLaAlO4",5.924,
|
||||
"NbSe2",6.30,
|
||||
"MgO",3.58,
|
||||
"YBa2Cu3O7",6.54,
|
||||
"GaAs",5.32,
|
||||
"Mn12-Acetate",1.65,
|
||||
"C60",1.65,
|
||||
"H",0.08,
|
||||
"He",0.12,
|
||||
"Li",0.53,
|
||||
"Be",1.85,
|
||||
"B",2.34,
|
||||
"C",2.26,
|
||||
"N",1.03,
|
||||
"O",2.00,
|
||||
"F",1.11,
|
||||
"Ne",1.50,
|
||||
"Na",0.97,
|
||||
"Mg",1.74,
|
||||
"Al",2.7,
|
||||
"Si",2.33,
|
||||
"P",1.00,
|
||||
"S",2.07,
|
||||
"Cl",2.03,
|
||||
"Ar",1.77,
|
||||
"K",0.86,
|
||||
"Ca",1.55,
|
||||
"Sc",2.99,
|
||||
"Ti",4.54,
|
||||
"V",6.11,
|
||||
"Cr",7.19,
|
||||
"Mn",7.43,
|
||||
"Fe",7.87,
|
||||
"Co",8.9,
|
||||
"Ni",8.9,
|
||||
"Cu",8.96,
|
||||
"Zn",7.13,
|
||||
"Ga",5.91,
|
||||
"Ge",5.32,
|
||||
"As",5.72,
|
||||
"Se",4.79,
|
||||
"Br",3.14,
|
||||
"Kr",3.10,
|
||||
"Rb",1.53,
|
||||
"Sr",2.54,
|
||||
"Y",4.47,
|
||||
"Zr",6.51,
|
||||
"Nb",8.57,
|
||||
"Mo",10.22,
|
||||
"Tc",11.5,
|
||||
"Ru",12.37,
|
||||
"Rh",12.41,
|
||||
"Pd",12.02,
|
||||
"Ag",10.5,
|
||||
"Cd",8.65,
|
||||
"In",7.31,
|
||||
"Sn",7.31,
|
||||
"Sb",6.68,
|
||||
"Te",6.24,
|
||||
"I",4.93,
|
||||
"Xe",3.80,
|
||||
"Cs",1.90,
|
||||
"Ba",3.59,
|
||||
"La",6.15,
|
||||
"Ce",6.77,
|
||||
"Pr",6.77,
|
||||
"Nd",7.01,
|
||||
"Pm",7.22,
|
||||
"Sm",7.52,
|
||||
"Eu",5.24,
|
||||
"Gd",7.9,
|
||||
"Tb",8.23,
|
||||
"Dy",8.55,
|
||||
"Ho",8.8,
|
||||
"Er",9.07,
|
||||
"Tm",9.32,
|
||||
"Yb",6.9,
|
||||
"Lu",9.84,
|
||||
"Hf",13.31,
|
||||
"Ta",16.65,
|
||||
"W",19.35,
|
||||
"Re",21.04,
|
||||
"Os",22.6,
|
||||
"Ir",22.4,
|
||||
"Pt",21.45,
|
||||
"Au",19.32,
|
||||
"Hg",13.55,
|
||||
"Tl",11.85,
|
||||
"Pb",11.35,
|
||||
"Bi",9.75,
|
||||
"Po",9.3,
|
||||
"Th",11.72,
|
||||
"Pa",15.4,
|
||||
"U",18.95,
|
||||
"",""
|
||||
);
|
||||
return $Densities{$Compound};
|
||||
}
|
||||
|
||||
1;
|
||||
|
1
trimsp/src/TrimSPGUI4/Chem.pm
Symbolic link
1
trimsp/src/TrimSPGUI4/Chem.pm
Symbolic link
@ -0,0 +1 @@
|
||||
../TrimSPGUI/Chem.pm
|
@ -592,7 +592,7 @@ sub StartSequenceOne()
|
||||
my $iScan=0;
|
||||
foreach (@SValues) {
|
||||
if ($All{"comboScan"}==5) {
|
||||
layerTable->setText($All{"ScandL"},2,$_);
|
||||
layerTable->setText($All{"ScandL"}-1,2,$_);
|
||||
} else {
|
||||
$ScanAttrib->setText($_);
|
||||
}
|
||||
|
Reference in New Issue
Block a user