本文整理汇总了C++中Rational::positive方法的典型用法代码示例。如果您正苦于以下问题:C++ Rational::positive方法的具体用法?C++ Rational::positive怎么用?C++ Rational::positive使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Rational
的用法示例。
在下文中一共展示了Rational::positive方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main( int argc, char** argv )
{
// Command line options
bool help_mode_enabled{ false };
scalar end_time_override{ -1.0 };
unsigned output_frequency{ 0 };
std::string serialized_file_name;
// Attempt to load command line options
if( !parseCommandLineOptions( &argc, &argv, help_mode_enabled, end_time_override, output_frequency, serialized_file_name ) )
{
return EXIT_FAILURE;
}
// If the user requested help, print help and exit
if( help_mode_enabled )
{
printUsage( argv[0] );
return EXIT_SUCCESS;
}
// Check for impossible combinations of options
#ifdef USE_HDF5
if( g_output_forces && g_output_dir_name.empty() )
{
std::cerr << "Impulse output requires an output directory." << std::endl;
return EXIT_FAILURE;
}
#endif
#ifdef USE_PYTHON
// Initialize the Python interpreter
Py_SetProgramName( argv[0] );
Py_Initialize();
// Initialize a callback that will close down the interpreter
atexit( exitCleanup );
// Allow subsequent Python commands to use the sys module
PythonTools::pythonCommand( "import sys" );
// Prevent Python from intercepting the interrupt signal
PythonTools::pythonCommand( "import signal" );
PythonTools::pythonCommand( "signal.signal( signal.SIGINT, signal.SIG_DFL )" );
// Initialize the callbacks
PythonScripting::initializeCallbacks();
#endif
if( !serialized_file_name.empty() )
{
if( deserializeSystem( serialized_file_name ) == EXIT_FAILURE )
{
return EXIT_FAILURE;
}
return executeSimLoop();
}
// The user must provide the path to an xml scene file
if( argc != optind + 1 )
{
std::cerr << "Invalid arguments. Must provide a single xml scene file name." << std::endl;
return EXIT_FAILURE;
}
// Attempt to load the user-provided scene
if( !loadXMLScene( std::string{ argv[optind] } ) )
{
return EXIT_FAILURE;
}
// Override the default end time with the requested one, if provided
if( end_time_override > 0.0 )
{
g_end_time = end_time_override;
}
// Compute the data output rate
assert( g_dt.positive() );
// If the user provided an output frequency
if( output_frequency != 0 )
{
const Rational<std::intmax_t> potential_steps_per_frame{ std::intmax_t( 1 ) / ( g_dt * std::intmax_t( output_frequency ) ) };
if( !potential_steps_per_frame.isInteger() )
{
std::cerr << "Timestep and output frequency do not yield an integer number of timesteps for data output. Exiting." << std::endl;
return EXIT_FAILURE;
}
g_steps_per_save = unsigned( potential_steps_per_frame.numerator() );
}
// Otherwise default to dumping every frame
else
{
g_steps_per_save = 1;
}
assert( g_end_time > 0.0 );
g_save_number_width = MathUtilities::computeNumDigits( 1 + unsigned( ceil( g_end_time / scalar( g_dt ) ) ) / g_steps_per_save );
printCompileInfo( std::cout );
std::cout << "Geometry count: " << g_sim.state().ngeo() << std::endl;
//.........这里部分代码省略.........
示例2: deserializeSystem
static int deserializeSystem( const std::string& file_name )
{
std::cout << "Loading serialized simulation state file: " << file_name << std::endl;
// Attempt to open the input file
std::ifstream serial_stream{ file_name, std::ios::binary };
if( !serial_stream.is_open() )
{
std::cerr << "Failed to open serialization file: " << file_name << std::endl;
std::cerr << "Exiting." << std::endl;
return EXIT_FAILURE;
}
// Verify the magic number
if( Utilities::deserialize<unsigned>( serial_stream ) != MAGIC_BINARY_NUMBER )
{
std::cerr << "File " << file_name << " does not appear to be a serialized 3D SCISim simulation. Exiting." << std::endl;
return EXIT_FAILURE;
}
// Read the git revision
{
const std::string git_revision{ StringUtilities::deserialize( serial_stream ) };
if( CompileDefinitions::GitSHA1 != git_revision )
{
std::cerr << "Warning, resuming from data file for a different git revision." << std::endl;
std::cerr << " Serialized Git Revision: " << git_revision << std::endl;
std::cerr << " Current Git Revision: " << CompileDefinitions::GitSHA1 << std::endl;
}
std::cout << "Git Revision: " << git_revision << std::endl;
}
g_sim.deserialize( serial_stream );
g_iteration = Utilities::deserialize<unsigned>( serial_stream );
g_unconstrained_map = RigidBody3DUtilities::deserializeUnconstrainedMap( serial_stream );
g_dt = Utilities::deserialize<Rational<std::intmax_t>>( serial_stream );
assert( g_dt.positive() );
g_end_time = Utilities::deserialize<scalar>( serial_stream );
assert( g_end_time > 0.0 );
g_impact_operator = ConstrainedMapUtilities::deserializeImpactOperator( serial_stream );
g_CoR = Utilities::deserialize<scalar>( serial_stream );
assert( std::isnan(g_CoR) || g_CoR >= 0.0 ); assert( std::isnan(g_CoR) || g_CoR <= 1.0 );
g_friction_solver = ConstrainedMapUtilities::deserializeFrictionSolver( serial_stream );
g_mu = Utilities::deserialize<scalar>( serial_stream );
assert( std::isnan(g_mu) || g_mu >= 0.0 );
g_impact_friction_map = ConstrainedMapUtilities::deserializeImpactFrictionMap( serial_stream );
{
PythonScripting new_scripting{ serial_stream };
swap( g_scripting, new_scripting );
}
#ifdef USE_HDF5
g_output_dir_name = StringUtilities::deserialize( serial_stream );
g_output_forces = Utilities::deserialize<bool>( serial_stream );
#endif
g_steps_per_save = Utilities::deserialize<unsigned>( serial_stream );
g_output_frame = Utilities::deserialize<unsigned>( serial_stream );
g_dt_string_precision = Utilities::deserialize<unsigned>( serial_stream );
g_save_number_width = Utilities::deserialize<unsigned>( serial_stream );
g_serialize_snapshots = Utilities::deserialize<bool>( serial_stream );
g_overwrite_snapshots = Utilities::deserialize<bool>( serial_stream );
return EXIT_SUCCESS;
}