00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef SUNDANCE_H
00032 #define SUNDANCE_H
00033
00034
00035 #include "SundanceDefs.hpp"
00036 #include "SundanceOut.hpp"
00037 #include "SundancePathUtils.hpp"
00038 #include "Teuchos_Time.hpp"
00039 #include "Teuchos_GlobalMPISession.hpp"
00040 #include "Teuchos_TimeMonitor.hpp"
00041 #include "Teuchos_ParameterList.hpp"
00042 #include "Teuchos_ParameterXMLFileReader.hpp"
00043 #include "Teuchos_CommandLineProcessor.hpp"
00044
00045
00046 #include "SundanceTestFunction.hpp"
00047 #include "SundanceUnknownFunction.hpp"
00048 #include "SundanceUnknownParameter.hpp"
00049 #include "SundanceDiscreteSpace.hpp"
00050 #include "SundanceDiscreteFunction.hpp"
00051 #include "SundanceEssentialBC.hpp"
00052 #include "SundanceIntegral.hpp"
00053 #include "SundanceDerivative.hpp"
00054 #include "SundanceCoordExpr.hpp"
00055 #include "SundanceCellDiameterExpr.hpp"
00056 #include "SundanceCurveNormExpr.hpp"
00057 #include "SundanceCellVectorExpr.hpp"
00058 #include "SundanceStdMathOps.hpp"
00059 #include "SundanceParameter.hpp"
00060 #include "SundancePointwiseUserDefFunctor.hpp"
00061 #include "SundanceUserDefFunctor.hpp"
00062 #include "SundanceUserDefOp.hpp"
00063 #include "SundanceVectorCalculus.hpp"
00064 #include "SundanceCurveExpr.hpp"
00065
00066
00067 #include "SundanceCircle.hpp"
00068 #include "SundanceBox2D.hpp"
00069 #include "SundanceBox3D.hpp"
00070 #include "SundanceLine2D.hpp"
00071 #include "SundancePlane3D.hpp"
00072 #include "SundanceEllipse2D.hpp"
00073 #include "SundanceSphere.hpp"
00074 #include "SundancePolygon2D.hpp"
00075 #include "SundanceTriangleSurf3D.hpp"
00076 #include "SundanceDummyParametrizedCurve.hpp"
00077 #include "SundanceParamCurveIntegral.hpp"
00078 #include "SundanceParametrizedCurve.hpp"
00079 #include "SundanceCurveIntegralCalc.hpp"
00080 #include "SundanceCurveCollection.hpp"
00081
00082
00083 #include "SundanceMesh.hpp"
00084 #include "SundanceMeshType.hpp"
00085 #include "SundanceBasicSimplicialMeshType.hpp"
00086 #include "SundanceMeshSource.hpp"
00087 #include "SundanceMeshTransformation.hpp"
00088 #include "SundancePartitionedLineMesher.hpp"
00089 #include "SundanceExtrusionMeshTransformation.hpp"
00090 #include "SundancePartitionedRectangleMesher.hpp"
00091 #include "SundanceSerialPartitionerBase.hpp"
00092 #include "SundanceFileIOChacoPartitioner.hpp"
00093 #include "SundanceTriangleMeshReader.hpp"
00094 #include "SundanceExodusNetCDFMeshReader.hpp"
00095 #include "SundanceExodusMeshReader.hpp"
00096 #include "SundanceMeshBuilder.hpp"
00097 #include "SundanceBamgMeshReader.hpp"
00098 #include "SundanceHNMesher2D.hpp"
00099 #include "SundanceHNMeshType2D.hpp"
00100 #include "SundanceHNMesher3D.hpp"
00101 #include "SundanceHNMeshType3D.hpp"
00102
00103
00104 #ifdef HAVE_SUNDANCE_PEANO
00105 #ifdef HAVE_SUNDANCE_PEANO_NO_2D
00106 #else
00107 #include "SundancePeanoMeshType2D.hpp"
00108 #include "SundancePeanoMesher2D.hpp"
00109 #endif
00110 #ifdef HAVE_SUNDANCE_PEANO_NO_3D
00111 #else
00112 #include "SundancePeanoMeshType3D.hpp"
00113 #include "SundancePeanoMesher3D.hpp"
00114 #endif
00115 #endif
00116
00117
00118 #include "SundanceRefinementBase.hpp"
00119 #include "SundanceRefinementClass.hpp"
00120
00121
00122 #include "SundanceCellFilter.hpp"
00123 #include "SundanceMaximalCellFilter.hpp"
00124 #include "SundanceBoundaryCellFilter.hpp"
00125 #include "SundanceDimensionalCellFilter.hpp"
00126 #include "SundancePositionalCellPredicate.hpp"
00127 #include "SundanceDomainDefinition.hpp"
00128
00129
00130 #include "SundanceFieldWriter.hpp"
00131 #include "SundanceMatlabWriter.hpp"
00132 #include "SundanceDSVWriter.hpp"
00133 #include "SundanceVerboseFieldWriter.hpp"
00134 #include "SundanceTriangleWriter.hpp"
00135 #include "SundanceVTKWriter.hpp"
00136 #include "SundanceExodusWriter.hpp"
00137
00138
00139
00140 #include "SundanceBasisFamily.hpp"
00141 #include "SundanceBernstein.hpp"
00142 #include "SundanceQuadratureFamily.hpp"
00143 #include "SundanceLagrange.hpp"
00144 #include "SundanceLegendre.hpp"
00145 #include "SundanceGaussianQuadrature.hpp"
00146 #include "SundanceFeketeQuadrature.hpp"
00147 #include "SundanceTrapesoidQuadrature.hpp"
00148 #include "SundanceGaussLobattoQuadrature.hpp"
00149 #include "SundancePolygonQuadrature.hpp"
00150 #include "SundanceSurfQuadrature.hpp"
00151
00152
00153 #include "SundanceHermiteSpectralBasis.hpp"
00154
00155
00156 #include "SundanceCoordinateSystem.hpp"
00157 #include "SundanceLinearProblem.hpp"
00158 #include "SundanceLinearEigenproblem.hpp"
00159 #include "SundanceL2Projector.hpp"
00160 #include "SundanceNonlinearProblem.hpp"
00161 #include "SundanceFunctionalEvaluator.hpp"
00162 #include "SundanceFunctional.hpp"
00163 #include "SundanceRivaraDriver.hpp"
00164 #include "SundanceExprFieldWrapper.hpp"
00165 #include "SundanceNitscheBC.hpp"
00166 #include "SundanceBlock.hpp"
00167
00168
00169
00170 #include "PlayaVectorType.hpp"
00171 #include "PlayaEpetraVectorType.hpp"
00172 #include "PlayaEpetraMatrixMatrixProduct.hpp"
00173 #include "PlayaEpetraMatrixMatrixSum.hpp"
00174 #include "PlayaEpetraMatrixOps.hpp"
00175 #include "PlayaBICGSTABSolverDecl.hpp"
00176 #include "PlayaAztecSolver.hpp"
00177 #include "PlayaLinearSolverImpl.hpp"
00178 #include "PlayaLinearCombinationImpl.hpp"
00179 #include "PlayaLinearSolverBuilder.hpp"
00180 #include "PlayaMLOperator.hpp"
00181 #include "PlayaParameterListPreconditionerFactory.hpp"
00182 #include "SundancePCDPreconditioner.hpp"
00183 #include "PlayaEpetraMatrixMatrixProduct.hpp"
00184 #include "PlayaEpetraMatrixMatrixSum.hpp"
00185 #include "PlayaEpetraMatrixOps.hpp"
00186
00187
00188
00189
00190 #include "NOX.H"
00191 #include "NOX_Common.H"
00192 #include "NOX_Utils.H"
00193 #include "PlayaNOXSolver.hpp"
00194 #include "PlayaNonlinearSolver.hpp"
00195
00196
00197
00198 #include "PlayaAnasaziEigensolverDecl.hpp"
00199 #include "PlayaEigensolver.hpp"
00200
00201
00202
00203 #include "SundanceAToCDensitySampler.hpp"
00204 #include "SundanceCToAInterpolator.hpp"
00205
00206
00207
00208
00209
00210
00211 namespace Sundance
00212 {
00213
00214 using namespace PlayaExprTemplates;
00215 using namespace Playa;
00216 using namespace Teuchos;
00217 using Sundance::List;
00218
00219
00220
00221
00222
00223
00224
00225
00226 class SundanceGlobal
00227 {
00228 public:
00229
00230
00231 static void setOption(const std::string& optionName,
00232 int& value,
00233 const std::string& helpMsg);
00234
00235
00236 static void setOption(const std::string& optionName,
00237 std::string& value,
00238 const std::string& helpMsg);
00239
00240
00241 static void setOption(const std::string& optionName,
00242 double& value,
00243 const std::string& helpMsg);
00244
00245
00246 static void setOption(const std::string& optionTrueName,
00247 const std::string& optionFalseName,
00248 bool& value,
00249 const std::string& helpMsg);
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262 static int init(int* argc, char*** argv);
00263
00264
00265
00266
00267
00268 static int finalize();
00269
00270
00271 static void handleException(std::exception& e);
00272
00273
00274 static Teuchos::FancyOStream& os() ;
00275
00276
00277
00278 static bool passFailTest(bool pass);
00279
00280
00281 static bool passFailTest(double error, double tol);
00282
00283
00284 static bool passFailTest(const std::string& statusMsg,
00285 bool status, double error, double tol);
00286
00287
00288
00289
00290 static bool& showStartupMessage();
00291
00292
00293
00294 static bool& skipTimingOutput()
00295 {static bool rtn=false; return rtn;}
00296
00297
00298 static int& testStatus() {static int rtn = -1; return rtn;}
00299
00300
00301
00302 static CommandLineProcessor& clp()
00303 {static CommandLineProcessor rtn; return rtn;}
00304 private:
00305 static bool checkTest(double error, double tol);
00306
00307
00308 static RCP<GlobalMPISession> globalMPISession(int* argc, char*** argv)
00309 {
00310 static RCP<GlobalMPISession> rtn
00311 = rcp(new GlobalMPISession(argc, argv, &std::cerr));
00312 return rtn;
00313 }
00314 };
00315
00316
00317
00318 void handleException(std::exception& e);
00319
00320
00321 bool passFailTest(bool pass);
00322
00323
00324 bool passFailTest(double error, double tol);
00325
00326
00327 bool passFailTest(const std::string& statusMsg,
00328 bool status, double error, double tol);
00329
00330
00331 int& testStatus() ;
00332
00333
00334 CommandLineProcessor& clp() ;
00335
00336
00337 int init(int* argc, char*** argv);
00338
00339
00340 int finalize();
00341
00342
00343
00344 void setOption(const std::string& optionName,
00345 int& value,
00346 const std::string& helpMsg);
00347
00348
00349 void setOption(const std::string& optionName,
00350 std::string& value,
00351 const std::string& helpMsg);
00352
00353
00354 void setOption(const std::string& optionName,
00355 double& value,
00356 const std::string& helpMsg);
00357
00358
00359 void setOption(const std::string& optionTrueName,
00360 const std::string& optionFalseName,
00361 bool& value,
00362 const std::string& helpMsg);
00363
00364 }
00365
00366
00367
00368
00369 #endif
00370