10 #if !defined(KRATOS_EXPLICIT_HAMILTON_SCHEME_H_INCLUDED)
11 #define KRATOS_EXPLICIT_HAMILTON_SCHEME_H_INCLUDED
19 #include "boost/smart_ptr.hpp"
59 template<
class TSparseSpace,
100 const double rDeltaTimeFraction,
101 const double rDeltaTimePredictionLevel,
102 const bool rRayleighDamping)
103 :
Scheme<TSparseSpace,TDenseSpace>()
146 KRATOS_THROW_ERROR(std::logic_error,
"Insufficient buffer size for Central Difference Scheme. It has to be 2",
"")
168 rCurrentProcessInfo[COMPUTE_DYNAMIC_TANGENT] =
true;
221 int number_of_threads = omp_get_max_threads();
223 int number_of_threads = 1;
226 vector<unsigned int> node_partition;
227 OpenMPUtils::CreatePartition(number_of_threads, pNodes.size(), node_partition);
229 #pragma omp parallel for
230 for(
int k=0;
k<number_of_threads;
k++)
232 typename NodesArrayType::iterator i_begin=pNodes.ptr_begin()+node_partition[
k];
233 typename NodesArrayType::iterator i_end=pNodes.ptr_begin()+node_partition[
k+1];
237 (
i)->FastGetSolutionStepValue(FORCE_RESIDUAL).clear();
238 (
i)->FastGetSolutionStepValue(MOMENT_RESIDUAL).clear();
256 int number_of_threads = omp_get_max_threads();
258 int number_of_threads = 1;
261 vector<unsigned int> node_partition;
262 OpenMPUtils::CreatePartition(number_of_threads, pNodes.size(), node_partition);
264 #pragma omp parallel for
265 for(
int k=0;
k<number_of_threads;
k++)
267 typename NodesArrayType::iterator i_begin=pNodes.ptr_begin()+node_partition[
k];
268 typename NodesArrayType::iterator i_end=pNodes.ptr_begin()+node_partition[
k+1];
273 if( (
i->pGetDof(ROTATION_X))->IsFree() )
274 CurrentStepRotation[0] = 0;
275 if( (
i->pGetDof(ROTATION_Y))->IsFree() )
276 CurrentStepRotation[1] = 0;
277 if( (
i->pGetDof(ROTATION_Z))->IsFree() )
278 CurrentStepRotation[2] = 0;
306 ElementsArrayType::iterator ElementsBegin = rElements.begin() + ElementPartition[
k];
307 ElementsArrayType::iterator ElementsEnd = rElements.begin() + ElementPartition[
k + 1];
309 for (ElementsArrayType::iterator itElem = ElementsBegin; itElem != ElementsEnd; ++itElem)
311 itElem->FinalizeSolutionStep(CurrentProcessInfo);
324 ConditionsArrayType::iterator ConditionsBegin = rConditions.begin() + ConditionPartition[
k];
325 ConditionsArrayType::iterator ConditionsEnd = rConditions.begin() + ConditionPartition[
k + 1];
327 for (ConditionsArrayType::iterator itCond = ConditionsBegin; itCond != ConditionsEnd; ++itCond)
329 itCond->FinalizeSolutionStep(CurrentProcessInfo);
347 int number_of_threads = omp_get_max_threads();
349 int number_of_threads = 1;
353 vector<unsigned int> element_partition;
354 OpenMPUtils::CreatePartition(number_of_threads, pElements.size(), element_partition);
358 Vector delta_times(number_of_threads);
360 double stable_delta_time = 0.00;
362 for(
int i = 0;
i < number_of_threads;
i++)
365 #pragma omp parallel
for private(stable_delta_time)
366 for(
int k=0;
k<number_of_threads;
k++)
368 typename ElementsArrayType::iterator it_begin=pElements.ptr_begin()+element_partition[
k];
369 typename ElementsArrayType::iterator it_end=pElements.ptr_begin()+element_partition[
k+1];
370 for(ElementsArrayType::iterator it=it_begin; it!= it_end; ++it)
374 double length = it->GetGeometry().Length();
375 double alpha = it->GetProperties()[RAYLEIGH_ALPHA];
376 double beta = it->GetProperties()[RAYLEIGH_BETA];
377 double E = it->GetProperties()[YOUNG_MODULUS];
378 double v = it->GetProperties()[POISSON_RATIO];
379 double ro = it->GetProperties()[DENSITY];
382 double bulk =
E/(3.0*(1.0-2.0*
v));
383 double wavespeed = sqrt(bulk/ro);
384 double w = 2.0*wavespeed/length;
388 stable_delta_time = (2.0/
w)*(sqrt(1.0 +
psi*
psi)-
psi);
390 if(stable_delta_time > 0.00){
391 if(stable_delta_time < delta_times[
k]){
392 delta_times[
k] = stable_delta_time;
399 stable_delta_time = *std::min_element(delta_times.
begin(), delta_times.
end());
405 rCurrentProcessInfo[DELTA_TIME] = stable_delta_time;
407 std::cout<<
" New computed stable Time step = "<< stable_delta_time <<
" "<< std::endl;
408 std::cout<<
" " << std::endl;
425 int number_of_threads = omp_get_max_threads();
427 int number_of_threads = 1;
430 vector<unsigned int> node_partition;
431 OpenMPUtils::CreatePartition(number_of_threads, pNodes.size(), node_partition);
433 #pragma omp parallel for
434 for(
int k=0;
k<number_of_threads;
k++)
436 typename NodesArrayType::iterator i_begin = pNodes.ptr_begin()+node_partition[
k];
437 typename NodesArrayType::iterator i_end = pNodes.ptr_begin()+node_partition[
k+1];
441 i->FastGetSolutionStepValue(POSITION_MOMENTUM).clear();
442 i->FastGetSolutionStepValue(ROTATION_MOMENTUM).clear();
444 i->FastGetSolutionStepValue(FORCE_RESIDUAL).clear();
445 i->FastGetSolutionStepValue(MOMENT_RESIDUAL).clear();
447 i->FastGetSolutionStepValue(DISPLACEMENT).clear();
448 i->FastGetSolutionStepValue(ROTATION).clear();
514 mTime.
Delta = rCurrentProcessInfo[DELTA_TIME];
516 double Alpha = rCurrentProcessInfo[ALPHA_TRAPEZOIDAL_RULE];
519 int number_of_threads = omp_get_max_threads();
521 int number_of_threads = 1;
524 vector<unsigned int> node_partition;
525 OpenMPUtils::CreatePartition(number_of_threads, pNodes.size(), node_partition);
527 #pragma omp parallel for
528 for(
int k=0;
k<number_of_threads;
k++)
530 typename NodesArrayType::iterator i_begin=pNodes.ptr_begin()+node_partition[
k];
531 typename NodesArrayType::iterator i_end=pNodes.ptr_begin()+node_partition[
k+1];
537 bool node_is_active =
true;
538 if( (
i)->IsDefined(ACTIVE) )
539 node_is_active = (
i)->Is(ACTIVE);
545 const double& nodal_mass =
i->FastGetSolutionStepValue(NODAL_MASS);
554 ReferenceDisplacement = CurrentDisplacement;
560 if( (
i->pGetDof(DISPLACEMENT_X))->IsFree() ){
562 CurrentDisplacement[0] = ReferenceDisplacement[0] + (
mTime.
Delta / nodal_mass ) * ( position_momentum[0] +
Alpha *
mTime.
Delta * force_residual[0] );
567 if( (
i->pGetDof(DISPLACEMENT_Y))->IsFree() ){
569 CurrentDisplacement[1] = ReferenceDisplacement[1] + (
mTime.
Delta / nodal_mass ) * ( position_momentum[1] +
Alpha *
mTime.
Delta * force_residual[1] );
574 if(
i->HasDofFor(DISPLACEMENT_Z) ){
576 if( (
i->pGetDof(DISPLACEMENT_Z))->IsFree() ){
578 CurrentDisplacement[2] = ReferenceDisplacement[2] + (
mTime.
Delta / nodal_mass ) * ( position_momentum[2] +
Alpha *
mTime.
Delta * force_residual[2] );
595 PreviousVelocity = CurrentVelocity;
627 mTime.
Delta = rCurrentProcessInfo[DELTA_TIME];
633 int number_of_threads = omp_get_max_threads();
635 int number_of_threads = 1;
638 vector<unsigned int> node_partition;
639 OpenMPUtils::CreatePartition(number_of_threads, pNodes.size(), node_partition);
641 #pragma omp parallel for
642 for(
int k=0;
k<number_of_threads;
k++)
644 typename NodesArrayType::iterator i_begin=pNodes.ptr_begin()+node_partition[
k];
645 typename NodesArrayType::iterator i_end=pNodes.ptr_begin()+node_partition[
k+1];
651 bool node_is_active =
true;
652 if( (
i)->IsDefined(ACTIVE) )
653 node_is_active = (
i)->Is(ACTIVE);
674 for(
unsigned int j=0;
j<3;
j++)
677 TotalRotationVector[
j] = ReferenceRotation[
j];
678 StepRotationVector[
j] = CurrentStepRotation[
j];
686 CurrentRotationQuaternion = StepRotationQuaternion * ReferenceRotationQuaternion;
690 for(
unsigned int j=0;
j<3;
j++)
692 CurrentRotation[
j] = TotalRotationVector[
j];
700 array_1d<double, 3 > & CurrentAngularAcceleration = (
i)->FastGetSolutionStepValue(ANGULAR_ACCELERATION, 0);
702 PreviousAngularVelocity = CurrentAngularVelocity;
734 mTime.
Delta = rCurrentProcessInfo[DELTA_TIME];
736 double Alpha = rCurrentProcessInfo[ALPHA_TRAPEZOIDAL_RULE];
739 int number_of_threads = omp_get_max_threads();
741 int number_of_threads = 1;
744 vector<unsigned int> node_partition;
745 OpenMPUtils::CreatePartition(number_of_threads, pNodes.size(), node_partition);
747 #pragma omp parallel for
748 for(
int k=0;
k<number_of_threads;
k++)
750 typename NodesArrayType::iterator i_begin=pNodes.ptr_begin()+node_partition[
k];
751 typename NodesArrayType::iterator i_end=pNodes.ptr_begin()+node_partition[
k+1];
756 bool node_is_active =
true;
757 if( (
i)->IsDefined(ACTIVE) )
758 node_is_active = (
i)->Is(ACTIVE);
763 array_1d<double,3>& previous_force_residual =
i->FastGetSolutionStepValue(FORCE_RESIDUAL,1);
764 array_1d<double,3>& previous_moment_residual =
i->FastGetSolutionStepValue(MOMENT_RESIDUAL,1);
769 array_1d<double,3>& previous_position_momentum =
i->FastGetSolutionStepValue(POSITION_MOMENTUM,1);
770 array_1d<double,3>& previous_rotation_momentum =
i->FastGetSolutionStepValue(ROTATION_MOMENTUM,1);
777 position_momentum = previous_position_momentum +
mTime.
Delta * ( (1.0 -
Alpha) * previous_force_residual +
Alpha * force_residual );
779 rotation_momentum = previous_rotation_momentum +
mTime.
Delta * ( (1.0 -
Alpha) * previous_moment_residual +
Alpha * moment_residual );
796 Element::Pointer rCurrentElement,
804 (rCurrentElement) -> CalculateSecondDerivativesContributions(LHS_Contribution,RHS_Contribution,rCurrentProcessInfo);
807 (rCurrentElement) -> AddExplicitContribution(LHS_Contribution, TANGENT_MATRIX, TANGENT_LYAPUNOV, rCurrentProcessInfo);
810 (rCurrentElement) -> AddExplicitContribution(RHS_Contribution, RESIDUAL_VECTOR, RESIDUAL_LYAPUNOV, rCurrentProcessInfo);
839 Condition::Pointer rCurrentCondition,
888 (rCurrentElement) -> CalculateRightHandSide(RHS_Contribution, rCurrentProcessInfo);
893 (rCurrentElement) -> AddExplicitContribution(RHS_Contribution, RESIDUAL_VECTOR, FORCE_RESIDUAL, rCurrentProcessInfo);
896 (rCurrentElement) -> AddExplicitContribution(RHS_Contribution, RESIDUAL_VECTOR, MOMENT_RESIDUAL, rCurrentProcessInfo);
917 (rCurrentCondition) -> CalculateRightHandSide(RHS_Contribution, rCurrentProcessInfo);
922 (rCurrentCondition) -> AddExplicitContribution(RHS_Contribution, RESIDUAL_VECTOR, FORCE_RESIDUAL, rCurrentProcessInfo);
925 (rCurrentCondition) -> AddExplicitContribution(RHS_Contribution, RESIDUAL_VECTOR, MOMENT_RESIDUAL, rCurrentProcessInfo);
962 std::vector< Matrix >
D;
967 std::vector< Vector >
v;
1026 const double& rDeltaTime)
1028 noalias(rCurrentVelocity) = (1.0/rDeltaTime) * rDeltaDisplacement;
1038 const double& rDeltaTime)
1040 noalias(rCurrentAcceleration) = (1.0/rDeltaTime) * rDeltaVelocity;
1049 const double& rDeltaTime)
1051 noalias(rCurrentVelocity) = (1.0/rDeltaTime) * rDeltaRotation;
1061 const double& rDeltaTime)
1063 noalias(rCurrentAcceleration) = (1.0/rDeltaTime) * rDeltaVelocity;
std::vector< std::size_t > EquationIdVectorType
Definition: element.h:98
Definition: explicit_hamilton_scheme.hpp:63
void UpdateVelocity(array_1d< double, 3 > &rCurrentVelocity, const array_1d< double, 3 > &rDeltaDisplacement, const double &rDeltaTime)
Definition: explicit_hamilton_scheme.hpp:1024
virtual void Update(ModelPart &r_model_part, DofsArrayType &rDofSet, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b)
Definition: explicit_hamilton_scheme.hpp:459
void Condition_CalculateSystemContributions(Condition::Pointer rCurrentCondition, LocalSystemMatrixType &LHS_Contribution, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &rEquationId, ProcessInfo &rCurrentProcessInfo)
Definition: explicit_hamilton_scheme.hpp:838
BaseType::TSystemMatrixType TSystemMatrixType
Definition: explicit_hamilton_scheme.hpp:77
DeltaTimeParameters mDeltaTime
Definition: explicit_hamilton_scheme.hpp:1000
BaseType::DofsArrayType DofsArrayType
Definition: explicit_hamilton_scheme.hpp:75
ModelPart::ConditionsContainerType ConditionsArrayType
Definition: explicit_hamilton_scheme.hpp:86
ModelPart::NodesContainerType NodesArrayType
Definition: explicit_hamilton_scheme.hpp:88
virtual ~ExplicitHamiltonScheme()
Definition: explicit_hamilton_scheme.hpp:130
void UpdateAngularVelocity(array_1d< double, 3 > &rCurrentVelocity, const array_1d< double, 3 > &rDeltaRotation, const double &rDeltaTime)
Definition: explicit_hamilton_scheme.hpp:1047
void UpdateNodalRotation(ModelPart &r_model_part)
Definition: explicit_hamilton_scheme.hpp:619
virtual void Condition_Calculate_RHS_Contribution(Condition::Pointer rCurrentCondition, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &EquationId, ProcessInfo &rCurrentProcessInfo)
Definition: explicit_hamilton_scheme.hpp:909
void CalculateDeltaTime(ModelPart &r_model_part)
Definition: explicit_hamilton_scheme.hpp:338
ModelPart::ElementsContainerType ElementsArrayType
Definition: explicit_hamilton_scheme.hpp:84
void Calculate_RHS_Contribution(Element::Pointer rCurrentElement, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &EquationId, ProcessInfo &rCurrentProcessInfo)
Definition: explicit_hamilton_scheme.hpp:878
bool mSchemeIsInitialized
Definition: explicit_hamilton_scheme.hpp:996
bool mRayleighDamping
Definition: explicit_hamilton_scheme.hpp:1001
void InitializeMovements(ModelPart &r_model_part)
Definition: explicit_hamilton_scheme.hpp:248
bool mUpdatePositionFlag
Definition: explicit_hamilton_scheme.hpp:1003
Scheme< TSparseSpace, TDenseSpace > BaseType
Definition: explicit_hamilton_scheme.hpp:71
GeneralVectors mVector
Definition: explicit_hamilton_scheme.hpp:994
void UpdateAcceleration(array_1d< double, 3 > &rCurrentAcceleration, const array_1d< double, 3 > &rDeltaVelocity, const double &rDeltaTime)
Definition: explicit_hamilton_scheme.hpp:1036
GeneralMatrices mMatrix
Definition: explicit_hamilton_scheme.hpp:993
BaseType::TDataType TDataType
Definition: explicit_hamilton_scheme.hpp:73
KRATOS_CLASS_POINTER_DEFINITION(ExplicitHamiltonScheme)
BaseType::LocalSystemVectorType LocalSystemVectorType
Definition: explicit_hamilton_scheme.hpp:81
void InitializeExplicitScheme(ModelPart &r_model_part)
Definition: explicit_hamilton_scheme.hpp:416
ExplicitHamiltonScheme(const double rMaximumDeltaTime, const double rDeltaTimeFraction, const double rDeltaTimePredictionLevel, const bool rRayleighDamping)
Definition: explicit_hamilton_scheme.hpp:99
void UpdateNodalPosition(ModelPart &r_model_part)
Definition: explicit_hamilton_scheme.hpp:506
BaseType::TSystemVectorType TSystemVectorType
Definition: explicit_hamilton_scheme.hpp:79
BaseType::LocalSystemMatrixType LocalSystemMatrixType
Definition: explicit_hamilton_scheme.hpp:82
TimeVariables mTime
Definition: explicit_hamilton_scheme.hpp:999
void CalculateSystemContributions(Element::Pointer rCurrentElement, LocalSystemMatrixType &LHS_Contribution, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &rEquationId, ProcessInfo &rCurrentProcessInfo)
Definition: explicit_hamilton_scheme.hpp:795
void FinalizeSolutionStep(ModelPart &rModelPart, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b)
Function called once at the end of a solution step, after convergence is reached if an iterative proc...
Definition: explicit_hamilton_scheme.hpp:288
virtual void Initialize(ModelPart &r_model_part)
This is the place to initialize the Scheme.
Definition: explicit_hamilton_scheme.hpp:155
virtual int Check(ModelPart &r_model_part)
Definition: explicit_hamilton_scheme.hpp:138
bool mUpdateMomentumFlag
Definition: explicit_hamilton_scheme.hpp:1005
Quaternion< double > QuaternionType
Definition: explicit_hamilton_scheme.hpp:90
void InitializeSolutionStep(ModelPart &r_model_part, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b)
Function called once at the beginning of each solution step.
Definition: explicit_hamilton_scheme.hpp:180
void UpdateAngularAcceleration(array_1d< double, 3 > &rCurrentAcceleration, const array_1d< double, 3 > &rDeltaVelocity, const double &rDeltaTime)
Definition: explicit_hamilton_scheme.hpp:1059
void InitializeResidual(ModelPart &r_model_part)
Definition: explicit_hamilton_scheme.hpp:213
void UpdateNodalMomentum(ModelPart &r_model_part)
Definition: explicit_hamilton_scheme.hpp:726
bool mUpdateRotationFlag
Definition: explicit_hamilton_scheme.hpp:1004
iterator end()
Definition: amatrix_interface.h:243
iterator begin()
Definition: amatrix_interface.h:241
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
MeshType::ConditionsContainerType ConditionsContainerType
Condintions container. A vector set of Conditions with their Id's as key.
Definition: model_part.h:183
MeshType::ElementsContainerType ElementsContainerType
Element container. A vector set of Elements with their Id's as key.
Definition: model_part.h:168
IndexType GetBufferSize() const
This method gets the suffer size of the model part database.
Definition: model_part.h:1876
ConditionsContainerType & Conditions(IndexType ThisIndex=0)
Definition: model_part.h:1381
ProcessInfo & GetProcessInfo()
Definition: model_part.h:1746
MeshType::NodeIterator NodeIterator
Definition: model_part.h:134
ElementsContainerType & Elements(IndexType ThisIndex=0)
Definition: model_part.h:1189
MeshType::NodesContainerType NodesContainerType
Nodes container. Which is a vector set of nodes with their Id's as key.
Definition: model_part.h:128
NodesContainerType & Nodes(IndexType ThisIndex=0)
Definition: model_part.h:507
static void DivideInPartitions(const int NumTerms, const int NumThreads, PartitionVector &Partitions)
Divide an array of length NumTerms between NumThreads threads.
Definition: openmp_utils.h:158
static int ThisThread()
Wrapper for omp_get_thread_num().
Definition: openmp_utils.h:108
std::vector< int > PartitionVector
Vector type for the output of DivideInPartitions method.
Definition: openmp_utils.h:53
static int GetNumThreads()
Returns the current number of threads.
Definition: parallel_utilities.cpp:34
A sorted associative container similar to an STL set, but uses a vector to store pointers to its data...
Definition: pointer_vector_set.h:72
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
void ToRotationVector(T &rx, T &ry, T &rz) const
Definition: quaternion.h:262
static Quaternion FromRotationVector(double rx, double ry, double rz)
Definition: quaternion.h:427
This class provides the implementation of the basic tasks that are needed by the solution strategy.
Definition: scheme.h:56
typename TSparseSpace::MatrixType TSystemMatrixType
Matrix type definition.
Definition: scheme.h:71
ModelPart::ElementsContainerType ElementsArrayType
Elements containers definition.
Definition: scheme.h:89
virtual void EquationId(const Element &rElement, Element::EquationIdVectorType &rEquationId, const ProcessInfo &rCurrentProcessInfo)
This method gets the eqaution id corresponding to the current element.
Definition: scheme.h:636
typename TSparseSpace::VectorType TSystemVectorType
Vector type definition.
Definition: scheme.h:74
typename TDenseSpace::VectorType LocalSystemVectorType
Local system vector type definition.
Definition: scheme.h:80
virtual void InitializeSolutionStep(ModelPart &rModelPart, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b)
Function called once at the beginning of each solution step.
Definition: scheme.h:272
typename TSparseSpace::DataType TDataType
Data type definition.
Definition: scheme.h:68
typename TDenseSpace::MatrixType LocalSystemMatrixType
Local system matrix type definition.
Definition: scheme.h:77
virtual int Check(const ModelPart &rModelPart) const
This function is designed to be called once to perform all the checks needed on the input provided....
Definition: scheme.h:508
ModelPart::ConditionsContainerType ConditionsArrayType
Conditions containers definition.
Definition: scheme.h:92
#define KRATOS_THROW_ERROR(ExceptionType, ErrorMessage, MoreInfo)
Definition: define.h:77
#define KRATOS_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
KratosZeroVector< double > ZeroVector
Definition: amatrix_interface.h:561
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
safety_factor
Definition: edgebased_PureConvection.py:110
v
Definition: generate_convection_diffusion_explicit_element.py:114
w
Definition: generate_convection_diffusion_explicit_element.py:108
alpha
Definition: generate_convection_diffusion_explicit_element.py:113
E
Definition: generate_hyper_elastic_simo_taylor_neo_hookean.py:26
tuple psi
Definition: generate_hyper_elastic_simo_taylor_neo_hookean.py:34
b
Definition: generate_total_lagrangian_mixed_volumetric_strain_element.py:31
def Alpha(n, j)
Definition: quadrature.py:93
int k
Definition: quadrature.py:595
int j
Definition: quadrature.py:648
A
Definition: sensitivityMatrix.py:70
integer i
Definition: TensorModule.f:17
Definition: explicit_hamilton_scheme.hpp:974
double Fraction
Definition: explicit_hamilton_scheme.hpp:978
double PredictionLevel
Definition: explicit_hamilton_scheme.hpp:975
double Maximum
Definition: explicit_hamilton_scheme.hpp:977
Definition: explicit_hamilton_scheme.hpp:960
std::vector< Matrix > D
Definition: explicit_hamilton_scheme.hpp:962
Definition: explicit_hamilton_scheme.hpp:966
std::vector< Vector > v
Definition: explicit_hamilton_scheme.hpp:967
Definition: explicit_hamilton_scheme.hpp:983
double Previous
Definition: explicit_hamilton_scheme.hpp:985
double PreviousMiddle
Definition: explicit_hamilton_scheme.hpp:984
double Current
Definition: explicit_hamilton_scheme.hpp:987
double Delta
Definition: explicit_hamilton_scheme.hpp:989
double Middle
Definition: explicit_hamilton_scheme.hpp:986