Changeset 514 in Sophya for trunk/SophyaLib/NTools/difeq.h


Ignore:
Timestamp:
Oct 25, 1999, 6:43:04 PM (26 years ago)
Author:
ansari
Message:

elimination des OVector/OMatrix au profit des TVector/TMatrix cmv 25/10/99

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/NTools/difeq.h

    r508 r514  
    55#include "machdefs.h"
    66#include "pexceptions.h"
    7 #include "cvector.h"
    8 
    9 namespace PlanckDPC {class GeneralFunction;}
     7#include "tvector.h"
     8
     9namespace PlanckDPC {
     10
     11class GeneralFunction;
    1012
    1113// <summary> fonction pour equadifs </summary>
     
    2830 
    2931  // Calcule les valeurs des derivees fpi a partir des valeurs des fonctions fi
    30   virtual void ComputeV(OVector& fpi, OVector const& fi)
     32  virtual void ComputeV(Vector& fpi, Vector const& fi)
    3133       { Compute(fpi(0), fi(0)); }
    3234
     
    4446  // Pour ajuster vecteur de depart quand il y a des fonctions a usage
    4547  // interne...
    46   virtual void AdjustStart(OVector& /*start*/, double /*tstart*/)
     48  virtual void AdjustStart(Vector& /*start*/, double /*tstart*/)
    4749    {}   
    4850protected:
     
    8789  // Implementation de Compute qui va utiliser la fonction fournie
    8890  // au constructeur.
    89   virtual void ComputeV(OVector& fpi, OVector const& fi);
     91  virtual void ComputeV(Vector& fpi, Vector const& fi);
    9092
    9193  // Implementation de AdjustStart qui gere la fonction a usage interne.
    92   virtual void AdjustStart(OVector& start, double tstart);
     94  virtual void AdjustStart(Vector& start, double tstart);
    9395protected:
    9496  DIFEQFCNT1 mFcn;
     
    102104  DiffEqFcn2(DIFEQFCN2);
    103105
    104   virtual void ComputeV(OVector& fpi, OVector const& fi);
     106  virtual void ComputeV(Vector& fpi, Vector const& fi);
    105107protected:
    106108  DIFEQFCN2 mFcn;
     
    121123  // Implementation de Compute qui va utiliser la fonction fournie
    122124  // au constructeur.
    123   virtual void ComputeV(OVector& fpi, OVector const& fi);
     125  virtual void ComputeV(Vector& fpi, Vector const& fi);
    124126
    125127  // Implementation de AdjustStart qui gere la fonction a usage interne.
    126   virtual void AdjustStart(OVector& start, double tstart);
     128  virtual void AdjustStart(Vector& start, double tstart);
    127129protected:
    128130  DIFEQFCNT2 mFcn;
     
    130132
    131133// Cas y'' = f(y',y) avec des 3-vecteurs
    132 typedef void(*DIFEQFCNV)(OVector&, OVector const&, OVector const&);
     134typedef void(*DIFEQFCNV)(Vector&, Vector const&, Vector const&);
    133135
    134136// <summary> y'' = f(y',y,t) </summary>
    135137// Cas y'' = f(y',y,t), on fournit la fonction f, sous la forme
    136 // double f(OVector), et ca construit la bonne DiffEqFunction
     138// double f(Vector), et ca construit la bonne DiffEqFunction
    137139class DiffEqFcnV : public DiffEqFunction {
    138140public:
    139   // Constructeur, on fournit une fonction (OVector)->double
     141  // Constructeur, on fournit une fonction (Vector)->double
    140142  // qui donne y'' en fonction du vecteur (t, y, y')
    141143  DiffEqFcnV(DIFEQFCNV);
     
    143145  // Implementation de Compute qui va utiliser la fonction fournie
    144146  // au constructeur.
    145   virtual void ComputeV(OVector& fpi, OVector const& fi);
     147  virtual void ComputeV(Vector& fpi, Vector const& fi);
    146148protected:
    147149  DIFEQFCNV mFcn;
    148   OVector tmp1, tmp2, tmp3;
     150  Vector tmp1, tmp2, tmp3;
    149151};
    150152
     
    176178  // Change les conditions initiales. Notation chainee possible.
    177179  // <group>
    178   DiffEqSolver& StartV(OVector const& yi, double t);
     180  DiffEqSolver& StartV(Vector const& yi, double t);
    179181  // si NFunc == 1
    180182  DiffEqSolver& Start1(double        yi, double t);
     
    184186  // Lance la resolution, avec ou sans conservation de n valeurs intermediaires
    185187  // <group>
    186   virtual void SolveV(OVector& yf, double tf);
     188  virtual void SolveV(Vector& yf, double tf);
    187189  // si NFunc == 1
    188190  virtual void Solve1(double& yf, double tf); 
    189191  virtual void Solve(double* yf, double tf);
    190   virtual void SolveArr(OMatrix&  y, double* t, double tf, int n)=0;
     192  virtual void SolveArr(Matrix&  y, double* t, double tf, int n)=0;
    191193  // si NFunc == 1
    192194  virtual void SolveArr1(double*  y, double* t, double tf, int n);   
     
    198200  bool mOwnFunc;
    199201
    200   OVector  mYStart;
     202  Vector  mYStart;
    201203  double  mXStart;
    202204  double  mStep;
     
    215217
    216218  // Implementation de RK4
    217   virtual void SolveArr(OMatrix& y, double* t, double tf, int n);
     219  virtual void SolveArr(Matrix& y, double* t, double tf, int n);
    218220
    219221protected:
    220222  // Un pas RK4
    221   void RKStep(OVector& newY, OVector const& y0, double dt);
     223  void RKStep(Vector& newY, Vector const& y0, double dt);
    222224  // Vecteurs utilises en interne, pour ne pas les reallouer.
    223   OVector k1, k2, k3, k4;
    224 };
    225 
    226 
     225  Vector k1, k2, k3, k4;
     226};
     227
     228
     229} // Fin du namespace
    227230
    228231#endif
Note: See TracChangeset for help on using the changeset viewer.