return m_mass/m_number;
}
+const QString Element::adjustRadius( RADIUSTYPE rtype )
+{
+ double val = 0.0;
+ QString v;
+
+ switch ( rtype )
+ {
+ case ATOMIC:
+ val = m_RadiusAR;
+ break;
+ case IONIC:
+ val = m_RadiusIon;
+ break;
+ case COVALENT:
+ val = m_RadiusCR;
+ break;
+ case VDW:
+ val = m_RadiusVDW;
+ break;
+ }
+
+ if ( val <= 0 )
+ v = i18n( "Value unknown" );
+ else
+ {
+ switch ( Prefs::units() )
+ {
+ case 0://use SI-values (meter for length)
+ v = i18n( "%1 10<sup>-12</sup> m" ).arg( QString::number( val ) );
+ break;
+ case 1://use picometer, the most common unit for radii
+ v = i18n( "%1 pm" ).arg( QString::number( val ) );
+ break;
+ }
+ }
+ return v;
+}
+
const QString Element::adjustUnits( const int type, double value )
{
QString v;
else
v = QString::number( val );
}
-//X else if ( type == RADIUS || type == IONICRADIUS ) // its a length
-//X {
-//X if ( type == RADIUS )
-//X val = radius();
-//X else if ( type == IONICRADIUS )
-//X val = ionicValue();
-//X
-//X if ( val <= 0 )
-//X v = i18n( "Value unknown" );
-//X else
-//X {
-//X switch ( Prefs::units() )
-//X {
-//X case 0://use SI-values (meter for length)
-//X v = i18n( "%1 10<sup>-12</sup> m" ).arg( QString::number( val ) );
-//X break;
-//X case 1://use picometer, the most common unit for radii
-//X v = i18n( "%1 pm" ).arg( QString::number( val ) );
-//X break;
-//X }
-//X }
-//X }
else if ( type == MASS ) // its a mass
{
val = mass();
void Element::setRadius( RADIUSTYPE type, double value, const QString& name )
{
+ switch ( type )
+ {
+ case ATOMIC:
+ m_RadiusAR = value;
+ break;
+ case IONIC:
+ m_RadiusIon = value;
+ m_ionvalue = name;
+ break;
+ case COVALENT:
+ m_RadiusCR = value;
+ break;
+ case VDW:
+ m_RadiusVDW = value;
+ break;
+ }
+}
+double Element::getRadius( RADIUSTYPE type )
+{
+ switch ( type )
+ {
+ case ATOMIC:
+ return m_RadiusAR;
+ break;
+ case IONIC:
+ return m_RadiusIon;
+ break;
+ case COVALENT:
+ return m_RadiusCR;
+ break;
+ case VDW:
+ return m_RadiusVDW;
+ break;
+ }
+ return 0.0;
}
KalziumDataObject::KalziumDataObject()
double mp = domElement.namedItem( "meltingpoint" ).toElement().text().toDouble();
double bp = domElement.namedItem( "boilingpoint" ).toElement().text().toDouble();
double density = domElement.namedItem( "density" ).toElement().text().toDouble();
-//X double covalent_radius = domElement.namedItem( "radius" ).namedItem( "covalent" ).toElement().text().toDouble();
-//X double ionic_radius = domElement.namedItem( "radius" ).namedItem( "ionic" ).toElement().text().toDouble();
-//X QString ionic_charge = domElement.namedItem( "radius" ).namedItem( "ionic" ).toElement().attributeNode( "charge" ).value();
+ double covalent_radius = domElement.namedItem( "radius" ).namedItem( "covalent" ).toElement().text().toDouble();
+ //van der Walls-Radius
+ double vdw_radius = domElement.namedItem( "radius" ).namedItem( "vdw" ).toElement().text().toDouble();
+ double atomic_radius = domElement.namedItem( "radius" ).namedItem( "atomic" ).toElement().text().toDouble();
+ double ionic_radius = domElement.namedItem( "radius" ).namedItem( "ionic" ).toElement().text().toDouble();
+ QString ionic_charge = domElement.namedItem( "radius" ).namedItem( "ionic" ).toElement().attributeNode( "charge" ).value();
int bio = domElement.namedItem( "biologicalmeaning" ).toElement().text().toInt();
int az = domElement.namedItem( "aggregation" ).toElement().text().toInt();
e->setBiologicalMeaning(bio);
e->setAggregation(az);
e->setNumber( number );
-// e->setIonicValues( ionic_radius, ionic_charge );
+ e->setRadius( Element::ATOMIC, atomic_radius );
+ e->setRadius( Element::IONIC, ionic_radius, ionic_charge );
+ e->setRadius( Element::COVALENT, covalent_radius );
+ e->setRadius( Element::VDW, vdw_radius );
e->setScientist(scientist);
e->setCrysatalstructure( crystal );
e->setMeltingpoint( mp );
e->setBoilingpoint( bp );
e->setDensity( density );
-// e->setCovalentRadius( covalent_radius );
e->setupXY();
* the ion (for example, +2 or -3 )
*/
void setRadius( RADIUSTYPE type, double value, const QString& name = 0 );
+
+ /**
+ * @return the value of the radius of the type @p type
+ */
+ double getRadius( RADIUSTYPE type );
void setDate( int date ) { m_date = date; }
void setBiologicalMeaning( int value ) { m_biological = value; }
QString elname() const {
return m_name;
}
+
+ //FIXME I need to add a way to have more than one ionic radius
+ QString ioncharge() const{
+ return m_ionvalue;
+ }
+
/**
* @return the chemical block (s, p, d, f) of the element
*/
*/
const QString adjustUnits( const int type );
+ const QString adjustRadius( RADIUSTYPE rtype );
+
+
/**
* needed for values stored in a QValueList<double>
*/
m_MP,
m_BP,
m_EN,
- m_Density;
+ m_Density,
+ m_RadiusAR,
+ m_RadiusCR,
+ m_RadiusVDW,
+ m_RadiusIon;
+
int m_number,
m_date,
m_orbits,
m_isotopes,
m_scientist,
- m_crystalstructure;
+ m_crystalstructure,
+ m_ionvalue;
doubleList m_ionenergies;