00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef MECHSYS_LABTESTSIM_TTX_H
00023 #define MECHSYS_LABTESTSIM_TTX_H
00024
00025 #ifdef HAVE_CONFIG_H
00026 #include "config.h"
00027 #else
00028 #ifndef REAL
00029 #define REAL double
00030 #endif
00031 #endif
00032
00033 #include "tensors/functions.h"
00034 #include "util/string.h"
00035 #include "labtestsim/equipment.h"
00036
00037 #ifndef ZERO
00038 #define ZERO 1.0e-10
00039 #endif
00040
00041 namespace LabTestSim
00042 {
00043
00044 template<typename T_Model>
00045 class TTX : public Equipment<T_Model>
00046 {
00047 public:
00048 TTX (T_Model * pModel, String const & strEquipment, bool StopOnFailure, bool SaveIntStates, bool Silent=false)
00049 : Equipment<T_Model>(pModel, strEquipment, StopOnFailure, SaveIntStates, Silent)
00050 {}
00051
00052 private:
00053 int _exx_idx() const { return 0; }
00054 bool _do_update_one_increment(State const & DeltaState);
00055 };
00056
00057
00059
00060
00061 template<typename T_Model>
00062 inline bool TTX<T_Model>::_do_update_one_increment(State const & DeltaState)
00063 {
00064 Tensors::Tensor2 dSig; dSig = DeltaState.Sa, DeltaState.Sr, DeltaState.St, 0.0,0.0,0.0;
00065 REAL dPp; dPp = DeltaState.Pp;
00066 Tensors::Tensor2 dEps;
00067 try
00068 {
00069 #ifdef USE_COUPLEDMODEL
00070 REAL DnSr;
00071 Equipment<T_Model>::_model->Actualize(dSig, dPp, dEps, DnSr);
00072 #else
00073 Equipment<T_Model>::_model->Actualize(dSig, dEps);
00074 #endif
00075 return true;
00076 }
00077 catch (Exception * e)
00078 {
00079 if (e->IsFatal ()) throw;
00080 else if (e->IsWarning()) { if (!Equipment<T_Model>::_silent) e->Cout(); delete e; return false; }
00081 else { if (!Equipment<T_Model>::_silent) e->Cout(); delete e; return true; }
00082 }
00083 }
00084
00085 };
00086
00087 #endif // MECHSYS_LABTESTSIM_TTX_H