# | Line 9 | Line 9 | |
---|---|---|
9 | #include "parse_me.h" | |
10 | #include "Integrator.hpp" | |
11 | #include "simError.h" | |
12 | < | #include "ConjugateMinimizer.hpp" |
12 | > | //#include "ConjugateMinimizer.hpp" |
13 | > | #include "OOPSEMinimizer.hpp" |
14 | ||
15 | #ifdef IS_MPI | |
16 | #include "mpiBASS.h" | |
# | Line 28 | Line 29 | |
29 | #define FF_DUFF 0 | |
30 | #define FF_LJ 1 | |
31 | #define FF_EAM 2 | |
32 | < | #define FF_H2O 3 |
32 | > | #define FF_H2O 3 |
33 | ||
34 | using namespace std; | |
35 | ||
# | Line 1663 | Line 1664 | void SimSetup::setupZConstraint(SimInfo& theInfo){ | |
1664 | ||
1665 | theInfo.addProperty(zconsForcePolicy); | |
1666 | ||
1667 | + | //set zcons gap |
1668 | + | DoubleData* zconsGap = new DoubleData(); |
1669 | + | zconsGap->setID(ZCONSGAP_ID); |
1670 | + | |
1671 | + | if (globals->haveZConsGap()){ |
1672 | + | zconsGap->setData(globals->getZconsGap()); |
1673 | + | theInfo.addProperty(zconsGap); |
1674 | + | } |
1675 | + | |
1676 | + | //set zcons fixtime |
1677 | + | DoubleData* zconsFixtime = new DoubleData(); |
1678 | + | zconsFixtime->setID(ZCONSFIXTIME_ID); |
1679 | + | |
1680 | + | if (globals->haveZConsFixTime()){ |
1681 | + | zconsFixtime->setData(globals->getZconsFixtime()); |
1682 | + | theInfo.addProperty(zconsFixtime); |
1683 | + | } |
1684 | + | |
1685 | + | |
1686 | //Determine the name of ouput file and add it into SimInfo's property list | |
1687 | //Be careful, do not use inFileName, since it is a pointer which | |
1688 | //point to a string at master node, and slave nodes do not contain that string | |
# | Line 1712 | Line 1732 | void SimSetup::makeMinimizer(){ | |
1732 | } | |
1733 | ||
1734 | void SimSetup::makeMinimizer(){ | |
1735 | < | /* |
1736 | < | OOPSEMinimizerBase* myOOPSEMinimizerBase; |
1717 | < | ObjFunctor1 * objFunc; |
1718 | < | OutputFunctor* outputFunc; |
1719 | < | ConcreteNLModel1* nlp; |
1735 | > | |
1736 | > | OOPSEMinimizer* myOOPSEMinimizer; |
1737 | MinimizerParameterSet* param; | |
1738 | < | ConjugateMinimizerBase* minimizer; |
1722 | < | int dim; |
1738 | > | char minimizerName[100]; |
1739 | ||
1740 | for (int i = 0; i < nInfo; i++){ | |
1741 | < | //creat |
1726 | < | myOOPSEMinimizerBase = new OOPSEMinimizerBase(&(info[i]), the_ff); |
1727 | < | |
1728 | < | //creat the object functor; |
1729 | < | objFunc = (ObjFunctor1*) new ClassMemObjFunctor1<OOPSEMinimizerBase> |
1730 | < | (myOOPSEMinimizerBase, &OOPSEMinimizerBase::calcGradient); |
1731 | < | |
1732 | < | //creat output functor; |
1733 | < | outputFunc = new ClassMemOutputFunctor<OOPSEMinimizerBase> |
1734 | < | (myOOPSEMinimizerBase, &OOPSEMinimizerBase::output); |
1735 | < | |
1736 | < | //creat nonlinear model |
1737 | < | dim = myOOPSEMinimizerBase->getDim(); |
1738 | < | nlp = new ConcreteNLModel1(dim, objFunc); |
1739 | < | |
1741 | > | |
1742 | //prepare parameter set for minimizer | |
1743 | param = new MinimizerParameterSet(); | |
1744 | param->setDefaultParameter(); | |
# | Line 1761 | Line 1763 | void SimSetup::makeMinimizer(){ | |
1763 | param->setWriteFrq(globals->getMinWriteFrq()); | |
1764 | } | |
1765 | ||
1766 | < | if (globals->haveMinResetFrq()){ |
1767 | < | param->setResetFrq(globals->getMinResetFrq()); |
1766 | > | if (globals->haveMinStepSize()){ |
1767 | > | param->setStepSize(globals->getMinStepSize()); |
1768 | } | |
1769 | ||
1770 | if (globals->haveMinLSMaxIter()){ | |
# | Line 1772 | Line 1774 | void SimSetup::makeMinimizer(){ | |
1774 | if (globals->haveMinLSTol()){ | |
1775 | param->setLineSearchTol(globals->getMinLSTol()); | |
1776 | } | |
1775 | – | |
1776 | – | //creat the minimizer |
1777 | – | minimizer = new PRCGMinimizer(nlp, param); |
1778 | – | minimizer->setLineSearchStrategy(nlp, GoldenSection); |
1779 | – | minimizer->setOutputFunctor(outputFunc); |
1777 | ||
1778 | + | strcpy(minimizerName, globals->getMinimizer()); |
1779 | + | |
1780 | + | if (!strcasecmp(minimizerName, "CG")){ |
1781 | + | myOOPSEMinimizer = new PRCGMinimizer(&(info[i]), the_ff, param); |
1782 | + | } |
1783 | + | else if (!strcasecmp(minimizerName, "SD")){ |
1784 | + | //myOOPSEMinimizer = MinimizerFactory.creatMinimizer("", &(info[i]), the_ff, param); |
1785 | + | myOOPSEMinimizer = new SDMinimizer(&(info[i]), the_ff, param); |
1786 | + | } |
1787 | + | else{ |
1788 | + | sprintf(painCave.errMsg, |
1789 | + | "SimSetup error: Unrecognized Minimizer, use Conjugate Gradient \n"); |
1790 | + | painCave.isFatal = 0; |
1791 | + | simError(); |
1792 | + | |
1793 | + | myOOPSEMinimizer = new PRCGMinimizer(&(info[i]), the_ff, param); |
1794 | + | } |
1795 | + | info[i].the_integrator = myOOPSEMinimizer; |
1796 | + | |
1797 | //store the minimizer into simInfo | |
1798 | < | info[i].the_minimizer = minimizer; |
1798 | > | info[i].the_minimizer = myOOPSEMinimizer; |
1799 | info[i].has_minimizer = true; | |
1800 | } | |
1801 | < | */ |
1801 | > | |
1802 | } |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |