--- trunk/OOPSE-4/src/types/AtomType.cpp 2005/01/12 22:41:40 1930 +++ trunk/OOPSE-4/src/types/AtomType.cpp 2005/04/15 22:04:00 2204 @@ -1,4 +1,4 @@ - /* +/* * Copyright (c) 2005 The University of Notre Dame. All Rights Reserved. * * The University of Notre Dame grants you ("Licensee") a @@ -50,7 +50,7 @@ #include "UseTheForce/DarkSide/atype_interface.h" #include "UseTheForce/DarkSide/lj_interface.h" #include "UseTheForce/DarkSide/eam_interface.h" -#include "UseTheForce/DarkSide/charge_interface.h" +#include "UseTheForce/DarkSide/electrostatic_interface.h" namespace oopse { AtomType::AtomType(){ @@ -65,6 +65,7 @@ namespace oopse { atp.is_LennardJones = 0; atp.is_Charge = 0; atp.is_Dipole = 0; + atp.is_SplitDipole = 0; atp.is_Quadrupole = 0; atp.is_Sticky = 0; atp.is_GayBerne = 0; @@ -109,134 +110,145 @@ void AtomType::complete() { } -void AtomType::complete() { + void AtomType::complete() { int isError; GenericData* data; //notify a new LJtype atom type is created if (isLennardJones()) { - data = getPropertyByName("LennardJones"); - if (data != NULL) { - LJParamGenericData* ljData = dynamic_cast(data); + data = getPropertyByName("LennardJones"); + if (data != NULL) { + LJParamGenericData* ljData = dynamic_cast(data); - if (ljData != NULL) { - LJParam ljParam = ljData->getData(); + if (ljData != NULL) { + LJParam ljParam = ljData->getData(); - newLJtype(&atp.ident, &ljParam.sigma, &ljParam.epsilon, &isError); + newLJtype(&atp.ident, &ljParam.sigma, &ljParam.epsilon, &ljParam.soft_pot, &isError); - if (isError != 0) { - sprintf( painCave.errMsg, - "Fortran rejected newLJtype\n"); - painCave.severity = OOPSE_ERROR; - painCave.isFatal = 1; - simError(); - } + if (isError != 0) { + sprintf( painCave.errMsg, + "Fortran rejected newLJtype\n"); + painCave.severity = OOPSE_ERROR; + painCave.isFatal = 1; + simError(); + } - } else { - sprintf( painCave.errMsg, - "Can not cast GenericData to LJParam\n"); - painCave.severity = OOPSE_ERROR; - painCave.isFatal = 1; - simError(); - } - } else { - sprintf( painCave.errMsg, "Can not find Parameters for LennardJones\n"); - painCave.severity = OOPSE_ERROR; - painCave.isFatal = 1; - simError(); - } + } else { + sprintf( painCave.errMsg, + "Can not cast GenericData to LJParam\n"); + painCave.severity = OOPSE_ERROR; + painCave.isFatal = 1; + simError(); + } + } else { + sprintf( painCave.errMsg, "Can not find Parameters for LennardJones\n"); + painCave.severity = OOPSE_ERROR; + painCave.isFatal = 1; + simError(); + } } + if (isElectrostatic()) { + newElectrostaticType(&atp, &isError); + if (isError != 0) { + sprintf( painCave.errMsg, + "Fortran rejected newElectrostaticType\n"); + painCave.severity = OOPSE_ERROR; + painCave.isFatal = 1; + simError(); + } + } + if (isCharge()) { - data = getPropertyByName("Charge"); - if (data != NULL) { - DoubleGenericData* doubleData= dynamic_cast(data); + data = getPropertyByName("Charge"); + if (data != NULL) { + DoubleGenericData* doubleData= dynamic_cast(data); - if (doubleData != NULL) { - double charge = doubleData->getData(); - newChargeType(&atp.ident, &charge, &isError); - - if (isError != 0) { - sprintf( painCave.errMsg, - "Fortran rejected newChargeType\n"); - painCave.severity = OOPSE_ERROR; - painCave.isFatal = 1; - simError(); - } - } else { - sprintf( painCave.errMsg, - "Can not cast GenericData to DoubleGenericData\n"); - painCave.severity = OOPSE_ERROR; - painCave.isFatal = 1; - simError(); - } - } else { - sprintf( painCave.errMsg, "Can not find Charge Parameters\n"); - painCave.severity = OOPSE_ERROR; - painCave.isFatal = 1; - simError(); - } + if (doubleData != NULL) { + double charge = doubleData->getData(); + setCharge(&atp.ident, &charge, &isError); + + if (isError != 0) { + sprintf( painCave.errMsg, + "Fortran rejected setCharge\n"); + painCave.severity = OOPSE_ERROR; + painCave.isFatal = 1; + simError(); + } + } else { + sprintf( painCave.errMsg, + "Can not cast GenericData to DoubleGenericData\n"); + painCave.severity = OOPSE_ERROR; + painCave.isFatal = 1; + simError(); + } + } else { + sprintf( painCave.errMsg, "Can not find Charge Parameters\n"); + painCave.severity = OOPSE_ERROR; + painCave.isFatal = 1; + simError(); + } } if (isEAM()) { - data = getPropertyByName("EAM"); - if (data != NULL) { - EAMParamGenericData* eamData = dynamic_cast(data); + data = getPropertyByName("EAM"); + if (data != NULL) { + EAMParamGenericData* eamData = dynamic_cast(data); - if (eamData != NULL) { + if (eamData != NULL) { - EAMParam eamParam = eamData->getData(); + EAMParam eamParam = eamData->getData(); - newEAMtype(&eamParam.latticeConstant, &eamParam.nrho, &eamParam.drho, &eamParam.nr, &eamParam.dr, &eamParam.rcut, - &eamParam.rvals[0], &eamParam.rhovals[0], &eamParam.Frhovals[0], &atp.ident, &isError ); + newEAMtype(&eamParam.latticeConstant, &eamParam.nrho, &eamParam.drho, &eamParam.nr, &eamParam.dr, &eamParam.rcut, + &eamParam.rvals[0], &eamParam.rhovals[0], &eamParam.Frhovals[0], &atp.ident, &isError ); - if (isError != 0) { - sprintf( painCave.errMsg, - "Fortran rejected newEAMtype\n"); - painCave.severity = OOPSE_ERROR; - painCave.isFatal = 1; - simError(); - } - } else { - sprintf( painCave.errMsg, - "Can not cast GenericData to EAMParam\n"); - painCave.severity = OOPSE_ERROR; - painCave.isFatal = 1; - simError(); - } - } else { - sprintf( painCave.errMsg, "Can not find EAM Parameters\n"); - painCave.severity = OOPSE_ERROR; - painCave.isFatal = 1; - simError(); - } + if (isError != 0) { + sprintf( painCave.errMsg, + "Fortran rejected newEAMtype\n"); + painCave.severity = OOPSE_ERROR; + painCave.isFatal = 1; + simError(); + } + } else { + sprintf( painCave.errMsg, + "Can not cast GenericData to EAMParam\n"); + painCave.severity = OOPSE_ERROR; + painCave.isFatal = 1; + simError(); + } + } else { + sprintf( painCave.errMsg, "Can not find EAM Parameters\n"); + painCave.severity = OOPSE_ERROR; + painCave.isFatal = 1; + simError(); + } } -} + } -void AtomType::addProperty(GenericData* genData) { + void AtomType::addProperty(GenericData* genData) { properties_.addProperty(genData); -} + } -void AtomType::removeProperty(const std::string& propName) { + void AtomType::removeProperty(const std::string& propName) { properties_.removeProperty(propName); -} + } -void AtomType::clearProperties() { + void AtomType::clearProperties() { properties_.clearProperties(); -} + } -std::vector AtomType::getPropertyNames() { + std::vector AtomType::getPropertyNames() { return properties_.getPropertyNames(); -} + } -std::vector AtomType::getProperties() { + std::vector AtomType::getProperties() { return properties_.getProperties(); -} + } -GenericData* AtomType::getPropertyByName(const std::string& propName) { + GenericData* AtomType::getPropertyByName(const std::string& propName) { return properties_.getPropertyByName(propName); -} + } }