mirror of
https://github.com/nasa/trick.git
synced 2024-12-24 15:26:41 +00:00
Tag code blocks as being C++ for proper code coloring. #1097
This commit is contained in:
parent
0facb73c7d
commit
7d9c0e00ff
@ -90,7 +90,7 @@ Functions ```CSV_header()``` and ```CSV_state``` produce comma separated value (
|
|||||||
|
|
||||||
In **main** the following line constructs the Integrator that will propogate our simulation state :
|
In **main** the following line constructs the Integrator that will propogate our simulation state :
|
||||||
|
|
||||||
```
|
```C++
|
||||||
SA::RK2Integrator integ(dt, 4, state_var_p, calc_derivs, NULL);
|
SA::RK2Integrator integ(dt, 4, state_var_p, calc_derivs, NULL);
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -106,7 +106,7 @@ The third specifies which variables comprise the state, to be updated by the Int
|
|||||||
|
|
||||||
The fourth argument of the constructor is a pointer to a function that is responsible for generating state derivatives. Its type is as follows:
|
The fourth argument of the constructor is a pointer to a function that is responsible for generating state derivatives. Its type is as follows:
|
||||||
|
|
||||||
```
|
```C++
|
||||||
typedef void (*DerivsFunc)( double x, double state[], double derivs[], void* udata);
|
typedef void (*DerivsFunc)( double x, double state[], double derivs[], void* udata);
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ The array ```double* state_var_p[4]```, specifies the state variables to be upda
|
|||||||
|
|
||||||
The cannon ball simulation implements the following ```DerivsFunc```:
|
The cannon ball simulation implements the following ```DerivsFunc```:
|
||||||
|
|
||||||
```
|
```C++
|
||||||
void calc_derivs( double t, double state[], double derivs[], void* udata) {
|
void calc_derivs( double t, double state[], double derivs[], void* udata) {
|
||||||
derivs[0] = state[2];
|
derivs[0] = state[2];
|
||||||
derivs[1] = state[3];
|
derivs[1] = state[3];
|
||||||
@ -143,7 +143,7 @@ For clarity here: state[0] and state[1] represent the cannonball position. state
|
|||||||
|
|
||||||
The while loop, at the bottom of [Cannonball.cpp](#listing-Cannonball.cpp) is where the integration happens.
|
The while loop, at the bottom of [Cannonball.cpp](#listing-Cannonball.cpp) is where the integration happens.
|
||||||
|
|
||||||
```
|
```C++
|
||||||
while (t < 5.1) {
|
while (t < 5.1) {
|
||||||
integ.integrate();
|
integ.integrate();
|
||||||
t = integ.getIndyVar();
|
t = integ.getIndyVar();
|
||||||
@ -164,7 +164,7 @@ The while loop, at the bottom of [Cannonball.cpp](#listing-Cannonball.cpp) is wh
|
|||||||
|
|
||||||
```integ.setIndyVar( double )``` sets the independent variable. So if we wanted to start our sim at t=4.0 seconds then we could replace ```double t = 0.0;``` with:
|
```integ.setIndyVar( double )``` sets the independent variable. So if we wanted to start our sim at t=4.0 seconds then we could replace ```double t = 0.0;``` with:
|
||||||
|
|
||||||
```
|
```C++
|
||||||
double t = 4.0;
|
double t = 4.0;
|
||||||
integ.setIndyVar(t);
|
integ.setIndyVar(t);
|
||||||
```
|
```
|
||||||
@ -179,7 +179,7 @@ This section demonstrates how to use a RootFinder with our integrator, using the
|
|||||||
|
|
||||||
The first code addition is to add the following line immediately after the instanciation of ```integ```.
|
The first code addition is to add the following line immediately after the instanciation of ```integ```.
|
||||||
|
|
||||||
```
|
```C++
|
||||||
integ.add_Rootfinder(1.0e-10, Negative, &impact);
|
integ.add_Rootfinder(1.0e-10, Negative, &impact);
|
||||||
```
|
```
|
||||||
The ```add_Rootfinder``` method tells ```integ``` to look for roots.
|
The ```add_Rootfinder``` method tells ```integ``` to look for roots.
|
||||||
@ -196,13 +196,13 @@ The second argument is the slope constraint. This can have one three values:
|
|||||||
|
|
||||||
The third argument is a pointer to a function responsible for estimating the error. It's type is:
|
The third argument is a pointer to a function responsible for estimating the error. It's type is:
|
||||||
|
|
||||||
```
|
```C++
|
||||||
typedef double (*RootErrorFunc)( double x, double state[], RootFinder* root_finder, void* udata);
|
typedef double (*RootErrorFunc)( double x, double state[], RootFinder* root_finder, void* udata);
|
||||||
```
|
```
|
||||||
|
|
||||||
The RootErrorFunc for BouncyCannonball is defined as:
|
The RootErrorFunc for BouncyCannonball is defined as:
|
||||||
|
|
||||||
```
|
```C++
|
||||||
double impact( double t, double state[], RootFinder* root_finder, void* udata) {
|
double impact( double t, double state[], RootFinder* root_finder, void* udata) {
|
||||||
double root_error = root_finder->find_roots(t, state[1]);
|
double root_error = root_finder->find_roots(t, state[1]);
|
||||||
if (root_error == 0.0) {
|
if (root_error == 0.0) {
|
||||||
@ -240,7 +240,7 @@ The EulerCromer algorithm is not a general-purpose integration algorithm like Ru
|
|||||||
|
|
||||||
**Listing - MassSpringDamper.cpp**
|
**Listing - MassSpringDamper.cpp**
|
||||||
|
|
||||||
```
|
```C++
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "SAIntegrator.hh"
|
#include "SAIntegrator.hh"
|
||||||
@ -429,7 +429,7 @@ This example demonstrates nested integration using the program in [examples/Doub
|
|||||||
<a id=listing-DoubleIntegral.cpp></a>
|
<a id=listing-DoubleIntegral.cpp></a>
|
||||||
### Listing - DoubleIntegral.cpp
|
### Listing - DoubleIntegral.cpp
|
||||||
|
|
||||||
```
|
```C++
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "SAIntegrator.hh"
|
#include "SAIntegrator.hh"
|
||||||
@ -503,7 +503,7 @@ In the [DefiniteIntegral](examples/DefiniteIntegral/README.md) example, we use
|
|||||||
|
|
||||||
This is the second of four available RK2Integrator constructors. This constructor interface is common to all of the Integrators derived from class ```SA::FirstOrderODEIntegrator```: ```SA::EulerIntegrator```, ```SA::HeunsMethod```, ```SA::RK2Integrator```, ```SA::RK4Integrator```, and ```SA::RK3_8Integrator```.
|
This is the second of four available RK2Integrator constructors. This constructor interface is common to all of the Integrators derived from class ```SA::FirstOrderODEIntegrator```: ```SA::EulerIntegrator```, ```SA::HeunsMethod```, ```SA::RK2Integrator```, ```SA::RK4Integrator```, and ```SA::RK3_8Integrator```.
|
||||||
|
|
||||||
```
|
```C++
|
||||||
RK2Integrator( double h,
|
RK2Integrator( double h,
|
||||||
int N,
|
int N,
|
||||||
double* in_out_vars[],
|
double* in_out_vars[],
|
||||||
@ -529,7 +529,7 @@ For more information, check out the SAIntegrator User's Guide, or even ```SAInte
|
|||||||
This typedef defines a type of C/C++ function whose purpose is to populate
|
This typedef defines a type of C/C++ function whose purpose is to populate
|
||||||
a state derivative array.
|
a state derivative array.
|
||||||
|
|
||||||
```
|
```C++
|
||||||
typedef void (*DerivsFunc)( double x, double state[], double derivs[], void* udata);
|
typedef void (*DerivsFunc)( double x, double state[], double derivs[], void* udata);
|
||||||
```
|
```
|
||||||
where:
|
where:
|
||||||
@ -559,7 +559,7 @@ where:
|
|||||||
This typedef defines a type of C/C++ function whose purpose is to populate
|
This typedef defines a type of C/C++ function whose purpose is to populate
|
||||||
an array of accelerations, given velocities and positions.
|
an array of accelerations, given velocities and positions.
|
||||||
|
|
||||||
```
|
```C++
|
||||||
typedef void (*Derivs2Func)( double t, double x[], double v[], double a[], void* udata);
|
typedef void (*Derivs2Func)( double t, double x[], double v[], double a[], void* udata);
|
||||||
```
|
```
|
||||||
where:
|
where:
|
||||||
@ -580,7 +580,7 @@ where:
|
|||||||
|
|
||||||
This typedef defines a type of C/C++ function whose purpose is to specify the job of a [```RootFinder```](#class-RootFinder).
|
This typedef defines a type of C/C++ function whose purpose is to specify the job of a [```RootFinder```](#class-RootFinder).
|
||||||
|
|
||||||
```
|
```C++
|
||||||
typedef double (*RootErrorFunc)( double x, double state[], RootFinder* root_finder, void* udata);
|
typedef double (*RootErrorFunc)( double x, double state[], RootFinder* root_finder, void* udata);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user