NimbleSM
NimbleSM is a solid mechanics simulation code for dynamic systems
Loading...
Searching...
No Matches
nimble::NimbleApplication Class Reference

#include <nimble.h>

Classes

struct  impl
 

Public Member Functions

 NimbleApplication ()
 
 NimbleApplication (const NimbleApplication &)=delete
 
 NimbleApplication (NimbleApplication &&) noexcept
 
virtual ~NimbleApplication ()
 
NimbleApplicationoperator= (const NimbleApplication &)=delete
 
NimbleApplicationoperator= (NimbleApplication &&) noexcept
 
int Run (int argc, char **argv)
 
int Rank () const noexcept
 
int NumRanks () const noexcept
 
std::shared_ptr< ContactInterfaceGetContactInterface ()
 
ParserGetParser ()
 

Constructor & Destructor Documentation

◆ NimbleApplication() [1/3]

nimble::NimbleApplication::NimbleApplication ( )
93 : impl_{ std::make_unique< impl >() }
94{
95
96}

◆ NimbleApplication() [2/3]

nimble::NimbleApplication::NimbleApplication ( const NimbleApplication & )
delete

◆ NimbleApplication() [3/3]

nimble::NimbleApplication::NimbleApplication ( NimbleApplication && )
defaultnoexcept

◆ ~NimbleApplication()

nimble::NimbleApplication::~NimbleApplication ( )
virtualdefault

Member Function Documentation

◆ GetContactInterface()

std::shared_ptr< ContactInterface > nimble::NimbleApplication::GetContactInterface ( )
166{
167 return impl_->contact_interface_;
168}

◆ GetParser()

Parser & nimble::NimbleApplication::GetParser ( )
172{
173 return *impl_->parser_;
174}

◆ NumRanks()

int nimble::NimbleApplication::NumRanks ( ) const
noexcept
160{
161 return impl_->num_ranks_;
162}

◆ operator=() [1/2]

NimbleApplication & nimble::NimbleApplication::operator= ( const NimbleApplication & )
delete

◆ operator=() [2/2]

NimbleApplication & nimble::NimbleApplication::operator= ( NimbleApplication && )
defaultnoexcept

◆ Rank()

int nimble::NimbleApplication::Rank ( ) const
noexcept
154{
155 return impl_->rank_;
156}

◆ Run()

int nimble::NimbleApplication::Run ( int argc,
char ** argv )
106 {
107 impl_->cli_config_ = CreateCLI(argc, argv);
108
109 impl_->cli_config_->ConfigureCommandLineArguments();
110 int err = impl_->cli_config_->ParseAndGetErrorCode();
111 if (err != 0)
112 return err;
113
114 impl_->parser_ = CreateParser();
115
116 if (impl_->cli_config_->UseTpetra())
117 impl_->parser_->SetToUseTpetra();
118 if (impl_->cli_config_->UseVT())
119 impl_->parser_->SetToUseVT();
120 if (impl_->cli_config_->UseUQ())
121 impl_->parser_->SetToUseUQ();
122
123 impl_->parser_->SetInputFilename(impl_->cli_config_->InputFilename());
124
125 InitializeSubsystems();
126
127 // Run main; if using VT this will run it in an epoch
128 int status = 0;
129 try {
130 status = ExecMain();
131 } catch (std::exception& e) {
132 std::cerr << "Standard exception: " << e.what() << std::endl;
133 return 1;
134 } catch (...) {
135 std::cerr << "\n !!! NimbleSM Simulation did not end correctly !!!\n\n";
136 return 1;
137 }
138
139 // Run is technically re-entrant so make sure contact interface is de-initialized
140 // because if the parser changes it could end up with strange results
141 // We don't need to do it for the factories since they will be overwritten if
142 // run() is called again
143 impl_->contact_interface_ = {};
144
145
146 // We're done, finalize
147 FinalizeSubsystems();
148
149 return status;
150}

The documentation for this class was generated from the following files: