本文整理汇总了C++中libutilities::SessionReaderSharedPtr::LoadSolverInfo方法的典型用法代码示例。如果您正苦于以下问题:C++ SessionReaderSharedPtr::LoadSolverInfo方法的具体用法?C++ SessionReaderSharedPtr::LoadSolverInfo怎么用?C++ SessionReaderSharedPtr::LoadSolverInfo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类libutilities::SessionReaderSharedPtr
的用法示例。
在下文中一共展示了SessionReaderSharedPtr::LoadSolverInfo方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char *argv[])
{
LibUtilities::SessionReaderSharedPtr session;
string vDriverModule;
DriverSharedPtr drv;
try
{
// Create session reader.
session = LibUtilities::SessionReader::CreateInstance(argc, argv);
// Create driver
session->LoadSolverInfo("Driver", vDriverModule, "Standard");
drv = GetDriverFactory().CreateInstance(vDriverModule, session);
// Execute driver
drv->Execute();
// Finalise session
session->Finalise();
}
catch (const std::runtime_error& e)
{
return 1;
}
catch (const std::string& eStr)
{
cout << "Error: " << eStr << endl;
}
return 0;
}
示例2: main
int main(int argc, char *argv[])
{
string fname = std::string(argv[2]);
int fdot = fname.find_last_of('.');
if (fdot != std::string::npos)
{
string ending = fname.substr(fdot);
// If .chk or .fld we exchange the extension in the output file.
// For all other files (e.g. .bse) we append the extension to avoid
// conflicts.
if (ending == ".chk" || ending == ".fld")
{
fname = fname.substr(0,fdot);
}
}
fname = fname + ".txt";
int cnt;
int id1, id2;
int i, j, n, e, b;
Array<OneD, NekDouble> auxArray;
int nBndEdgePts, nBndEdges, nBndRegions;
if (argc < 3)
{
fprintf(stderr,
"Usage: ExtractSurface3DCFS meshfile fieldFile\n");
fprintf(stderr,
"Extracts a surface from a 3D fld file"
"(only for CompressibleFlowSolver and purely 3D .fld files)\n");
exit(1);
}
LibUtilities::SessionReaderSharedPtr vSession
= LibUtilities::SessionReader::CreateInstance(3, argv);
std::string m_ViscosityType;
NekDouble m_gamma;
NekDouble m_pInf;
NekDouble m_rhoInf;
NekDouble m_uInf;
NekDouble m_vInf;
NekDouble m_wInf;
NekDouble m_gasConstant;
NekDouble m_Twall;
NekDouble m_mu;
NekDouble m_thermalConductivity;
int m_spacedim = 3;
int nDimensions = m_spacedim;
int phys_offset;
// Get gamma parameter from session file.
ASSERTL0(vSession->DefinesParameter("Gamma"),
"Compressible flow sessions must define a Gamma parameter.");
vSession->LoadParameter("Gamma", m_gamma, 1.4);
// Get E0 parameter from session file.
ASSERTL0(vSession->DefinesParameter("pInf"),
"Compressible flow sessions must define a pInf parameter.");
vSession->LoadParameter("pInf", m_pInf, 101325);
// Get rhoInf parameter from session file.
ASSERTL0(vSession->DefinesParameter("rhoInf"),
"Compressible flow sessions must define a rhoInf parameter.");
vSession->LoadParameter("rhoInf", m_rhoInf, 1.225);
// Get uInf parameter from session file.
ASSERTL0(vSession->DefinesParameter("uInf"),
"Compressible flow sessions must define a uInf parameter.");
vSession->LoadParameter("uInf", m_uInf, 0.1);
// Get vInf parameter from session file.
if (m_spacedim == 2 || m_spacedim == 3)
{
ASSERTL0(vSession->DefinesParameter("vInf"),
"Compressible flow sessions must define a vInf parameter"
"for 2D/3D problems.");
vSession->LoadParameter("vInf", m_vInf, 0.0);
}
// Get wInf parameter from session file.
if (m_spacedim == 3)
{
ASSERTL0(vSession->DefinesParameter("wInf"),
"Compressible flow sessions must define a wInf parameter"
"for 3D problems.");
vSession->LoadParameter("wInf", m_wInf, 0.0);
}
vSession->LoadParameter ("GasConstant", m_gasConstant, 287.058);
vSession->LoadParameter ("Twall", m_Twall, 300.15);
vSession->LoadSolverInfo("ViscosityType", m_ViscosityType, "Constant");
vSession->LoadParameter ("mu", m_mu, 1.78e-05);
vSession->LoadParameter ("thermalConductivity",
m_thermalConductivity, 0.0257);
//.........这里部分代码省略.........
示例3: main
int main(int argc, char *argv[])
{
if(argc != 2)
{
fprintf(stderr,"Usage: ./Aliasing file.xml \n");
fprintf(stderr,"\t Method will read intiial conditions section of .xml file for input \n");
exit(1);
}
LibUtilities::SessionReaderSharedPtr session;
string vDriverModule;
DriverSharedPtr drv;
try
{
// Create session reader.
session = LibUtilities::SessionReader::CreateInstance(argc, argv);
// Create driver
session->LoadSolverInfo("Driver", vDriverModule, "Standard");
drv = GetDriverFactory().CreateInstance(vDriverModule, session);
EquationSystemSharedPtr EqSys = drv->GetEqu()[0];
IncNavierStokesSharedPtr IncNav = EqSys->as<IncNavierStokes>();
IncNav->SetInitialConditions(0.0,false);
Array<OneD, MultiRegions::ExpListSharedPtr> fields = IncNav->UpdateFields();
int i;
int nConvectiveFields = IncNav->GetNConvectiveFields();
int nphys = fields[0]->GetTotPoints();
Array<OneD, Array<OneD, NekDouble> > VelFields(nConvectiveFields);
Array<OneD, Array<OneD, NekDouble> > NonLinear(nConvectiveFields);
Array<OneD, Array<OneD, NekDouble> > NonLinearDealiased(nConvectiveFields);
for(i = 0; i < nConvectiveFields; ++i)
{
VelFields[i] = fields[i]->UpdatePhys();
NonLinear[i] = Array<OneD, NekDouble> (nphys);
NonLinearDealiased[i] = Array<OneD, NekDouble> (nphys);
}
boost::shared_ptr<NavierStokesAdvection> A
= boost::dynamic_pointer_cast<NavierStokesAdvection>(IncNav->GetAdvObject());
if (!A)
{
cout << "Must use non-linear Navier-Stokes advection" << endl;
exit(-1);
}
// calculate non-linear terms without dealiasing
A->SetSpecHPDealiasing(false);
A->Advect(nConvectiveFields, fields,
VelFields, VelFields,
NonLinear, 0.0);
// calculate non-linear terms with dealiasing
A->SetSpecHPDealiasing(true);
A->Advect(nConvectiveFields, fields,
VelFields, VelFields,
NonLinearDealiased, 0.0);
// Evaulate Difference and put into fields;
for(i = 0; i < nConvectiveFields; ++i)
{
Vmath::Vsub(nphys,NonLinearDealiased[i],1,NonLinear[i],1,NonLinear[i],1);
fields[i]->FwdTrans_IterPerExp(NonLinear[i],fields[i]->UpdateCoeffs());
// Need to reset varibale name for output
string name = "NL_Aliasing_"+session->GetVariable(i);
session->SetVariable(i,name.c_str());
}
// Reset session name for output file
std::string outname = IncNav->GetSessionName();
outname += "_NonLinear_Aliasing";
IncNav->ResetSessionName(outname);
IncNav->Output();
}
catch (const std::runtime_error&)
{
return 1;
}
catch (const std::string& eStr)
{
cout << "Error: " << eStr << endl;
}
return 0;
}
示例4: main
int main(int argc, char *argv[])
{
SpatialDomains::PointGeomSharedPtr vPoint;
MultiRegions::ExpListSharedPtr vExp;
LibUtilities::SessionReaderSharedPtr vSession;
std::string vCellModel;
CellModelSharedPtr vCell;
std::vector<StimulusSharedPtr> vStimulus;
Array<OneD, Array<OneD, NekDouble> > vWsp(1);
Array<OneD, Array<OneD, NekDouble> > vSol(1);
NekDouble vDeltaT;
NekDouble vTime;
unsigned int nSteps;
// Create a session reader to read pacing parameters
vSession = LibUtilities::SessionReader::CreateInstance(argc, argv);
try
{
// Construct a field consisting of a single vertex
vPoint = MemoryManager<SpatialDomains::PointGeom>
::AllocateSharedPtr(3, 0, 0.0, 0.0, 0.0);
vExp = MemoryManager<MultiRegions::ExpList0D>
::AllocateSharedPtr(vPoint);
// Get cell model name and create it
vSession->LoadSolverInfo("CELLMODEL", vCellModel, "");
ASSERTL0(vCellModel != "", "Cell Model not specified.");
vCell = GetCellModelFactory().CreateInstance(
vCellModel, vSession, vExp);
vCell->Initialise();
// Load the stimuli
vStimulus = Stimulus::LoadStimuli(vSession, vExp);
// Set up solution arrays, workspace and read in parameters
vSol[0] = Array<OneD, NekDouble>(1, 0.0);
vWsp[0] = Array<OneD, NekDouble>(1, 0.0);
vDeltaT = vSession->GetParameter("TimeStep");
vTime = 0.0;
nSteps = vSession->GetParameter("NumSteps");
LibUtilities::EquationSharedPtr e =
vSession->GetFunction("InitialConditions", "u");
vSol[0][0] = e->Evaluate(0.0, 0.0, 0.0, 0.0);
// Time integrate cell model
for (unsigned int i = 0; i < nSteps; ++i)
{
// Compute J_ion
vCell->TimeIntegrate(vSol, vWsp, vTime);
// Add stimuli J_stim
for (unsigned int i = 0; i < vStimulus.size(); ++i)
{
vStimulus[i]->Update(vWsp, vTime);
}
// Time-step with forward Euler
Vmath::Svtvp(1, vDeltaT, vWsp[0], 1, vSol[0], 1, vSol[0], 1);
// Increment time
vTime += vDeltaT;
// Output current solution to stdout
cout << vTime << " " << vSol[0][0] << endl;
}
for (unsigned int i = 0; i < vCell->GetNumCellVariables(); ++i)
{
cout << "# " << vCell->GetCellVarName(i) << " "
<< vCell->GetCellSolution(i)[0] << endl;
}
}
catch (...)
{
cerr << "An error occured" << endl;
}
return 0;
}