--- trunk/src/perturbations/UniformField.cpp 2014/09/22 19:18:35 2020 +++ trunk/src/perturbations/UniformField.cpp 2015/03/07 21:41:51 2071 @@ -50,22 +50,36 @@ namespace OpenMD { namespace OpenMD { - UniformField::UniformField(SimInfo* info) : info_(info), - doUniformField(false), - doParticlePot(false), - initialized(false) { + UniformField::UniformField(SimInfo* info) : initialized(false), + doUniformField(false), + doParticlePot(false), + info_(info) { simParams = info_->getSimParams(); } void UniformField::initialize() { + + std::vector ef; + if (simParams->haveElectricField()) { doUniformField = true; - EF = simParams->getElectricField(); + ef = simParams->getElectricField(); } if (simParams->haveUniformField()) { doUniformField = true; - EF = simParams->getUniformField(); + ef = simParams->getUniformField(); } + if (ef.size() != 3) { + sprintf(painCave.errMsg, + "UniformField: Incorrect number of parameters specified.\n" + "\tthere should be 3 parameters, but %lu were specified.\n", ef.size()); + painCave.isFatal = 1; + simError(); + } + EF.x() = ef[0]; + EF.y() = ef[1]; + EF.z() = ef[2]; + int storageLayout_ = info_->getSnapshotManager()->getStorageLayout(); if (storageLayout_ & DataStorage::dslParticlePot) doParticlePot = true; initialized = true;