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


Ignore:
Timestamp:
Oct 25, 1999, 12:36:22 PM (26 years ago)
Author:
ansari
Message:

Vector/Matrix OVector/OMatrix cmv 25/10/99

File:
1 edited

Legend:

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

    r307 r508  
    2828 
    2929  // Calcule les valeurs des derivees fpi a partir des valeurs des fonctions fi
    30   virtual void ComputeV(Vector& fpi, Vector const& fi)
     30  virtual void ComputeV(OVector& fpi, OVector const& fi)
    3131       { Compute(fpi(0), fi(0)); }
    3232
     
    4444  // Pour ajuster vecteur de depart quand il y a des fonctions a usage
    4545  // interne...
    46   virtual void AdjustStart(Vector& /*start*/, double /*tstart*/)
     46  virtual void AdjustStart(OVector& /*start*/, double /*tstart*/)
    4747    {}   
    4848protected:
     
    8787  // Implementation de Compute qui va utiliser la fonction fournie
    8888  // au constructeur.
    89   virtual void ComputeV(Vector& fpi, Vector const& fi);
     89  virtual void ComputeV(OVector& fpi, OVector const& fi);
    9090
    9191  // Implementation de AdjustStart qui gere la fonction a usage interne.
    92   virtual void AdjustStart(Vector& start, double tstart);
     92  virtual void AdjustStart(OVector& start, double tstart);
    9393protected:
    9494  DIFEQFCNT1 mFcn;
     
    102102  DiffEqFcn2(DIFEQFCN2);
    103103
    104   virtual void ComputeV(Vector& fpi, Vector const& fi);
     104  virtual void ComputeV(OVector& fpi, OVector const& fi);
    105105protected:
    106106  DIFEQFCN2 mFcn;
     
    121121  // Implementation de Compute qui va utiliser la fonction fournie
    122122  // au constructeur.
    123   virtual void ComputeV(Vector& fpi, Vector const& fi);
     123  virtual void ComputeV(OVector& fpi, OVector const& fi);
    124124
    125125  // Implementation de AdjustStart qui gere la fonction a usage interne.
    126   virtual void AdjustStart(Vector& start, double tstart);
     126  virtual void AdjustStart(OVector& start, double tstart);
    127127protected:
    128128  DIFEQFCNT2 mFcn;
     
    130130
    131131// Cas y'' = f(y',y) avec des 3-vecteurs
    132 typedef void(*DIFEQFCNV)(Vector&, Vector const&, Vector const&);
     132typedef void(*DIFEQFCNV)(OVector&, OVector const&, OVector const&);
    133133
    134134// <summary> y'' = f(y',y,t) </summary>
    135135// Cas y'' = f(y',y,t), on fournit la fonction f, sous la forme
    136 // double f(Vector), et ca construit la bonne DiffEqFunction
     136// double f(OVector), et ca construit la bonne DiffEqFunction
    137137class DiffEqFcnV : public DiffEqFunction {
    138138public:
    139   // Constructeur, on fournit une fonction (Vector)->double
     139  // Constructeur, on fournit une fonction (OVector)->double
    140140  // qui donne y'' en fonction du vecteur (t, y, y')
    141141  DiffEqFcnV(DIFEQFCNV);
     
    143143  // Implementation de Compute qui va utiliser la fonction fournie
    144144  // au constructeur.
    145   virtual void ComputeV(Vector& fpi, Vector const& fi);
     145  virtual void ComputeV(OVector& fpi, OVector const& fi);
    146146protected:
    147147  DIFEQFCNV mFcn;
    148   Vector tmp1, tmp2, tmp3;
     148  OVector tmp1, tmp2, tmp3;
    149149};
    150150
     
    176176  // Change les conditions initiales. Notation chainee possible.
    177177  // <group>
    178   DiffEqSolver& StartV(Vector const& yi, double t);
     178  DiffEqSolver& StartV(OVector const& yi, double t);
    179179  // si NFunc == 1
    180180  DiffEqSolver& Start1(double        yi, double t);
     
    184184  // Lance la resolution, avec ou sans conservation de n valeurs intermediaires
    185185  // <group>
    186   virtual void SolveV(Vector& yf, double tf);
     186  virtual void SolveV(OVector& yf, double tf);
    187187  // si NFunc == 1
    188188  virtual void Solve1(double& yf, double tf); 
    189189  virtual void Solve(double* yf, double tf);
    190   virtual void SolveArr(Matrix&  y, double* t, double tf, int n)=0;
     190  virtual void SolveArr(OMatrix&  y, double* t, double tf, int n)=0;
    191191  // si NFunc == 1
    192192  virtual void SolveArr1(double*  y, double* t, double tf, int n);   
     
    198198  bool mOwnFunc;
    199199
    200   Vector  mYStart;
     200  OVector  mYStart;
    201201  double  mXStart;
    202202  double  mStep;
     
    215215
    216216  // Implementation de RK4
    217   virtual void SolveArr(Matrix& y, double* t, double tf, int n);
     217  virtual void SolveArr(OMatrix& y, double* t, double tf, int n);
    218218
    219219protected:
    220220  // Un pas RK4
    221   void RKStep(Vector& newY, Vector const& y0, double dt);
     221  void RKStep(OVector& newY, OVector const& y0, double dt);
    222222  // Vecteurs utilises en interne, pour ne pas les reallouer.
    223   Vector k1, k2, k3, k4;
     223  OVector k1, k2, k3, k4;
    224224};
    225225
Note: See TracChangeset for help on using the changeset viewer.