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
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
140
141
142
143 impl_->contact_interface_ = {};
144
145
146
147 FinalizeSubsystems();
148
149 return status;
150}