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


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.cc

    r508 r514  
    106106//++
    107107DiffEqSolver&
    108 DiffEqSolver::StartV(OVector const& yi, double t)
     108DiffEqSolver::StartV(Vector const& yi, double t)
    109109//
    110110//      Spécifie le point de départ de l'intégration de l'équadif.
     
    169169
    170170//++
    171 // virtual void DiffEqSolver::SolveArr(OMatrix&  y, double* t, double tf, int n)=0
     171// virtual void DiffEqSolver::SolveArr(Matrix&  y, double* t, double tf, int n)=0
    172172//      Lance la résolution de l'équadif, jusqu'à la valeur
    173173//      tf du temps. N valeurs intermédiaires sont retournées dans
     
    189189//++
    190190void
    191 DiffEqSolver::SolveV(OVector& yf, double tf)
     191DiffEqSolver::SolveV(Vector& yf, double tf)
    192192//
    193193//      Lance la résolution de l'équadif, jusqu'à la valeur
     
    201201{
    202202  double t;
    203   OMatrix m(1, mFunc->NFuncReal());
     203  Matrix m(1, mFunc->NFuncReal());
    204204  SolveArr(m, &t, tf, 1);
    205205  yf.Realloc(mFunc->NFunc());
     
    219219  ASSERT(mFunc->NFunc() == 1);
    220220  double t;
    221   OMatrix m(1,mFunc->NFuncReal());
     221  Matrix m(1,mFunc->NFuncReal());
    222222  SolveArr(m, &t, tf, 1);
    223223  yf = m(0,0);
     
    238238{
    239239  double t;
    240   OMatrix m(1, mFunc->NFuncReal());
     240  Matrix m(1, mFunc->NFuncReal());
    241241  SolveArr(m, &t, tf, 1);
    242242  for (int i=0; i<mFunc->NFunc(); i++)
     
    258258{
    259259  ASSERT(mFunc->NFunc() == 1);
    260   OMatrix m(n, mFunc->NFuncReal());
     260  Matrix m(n, mFunc->NFuncReal());
    261261  SolveArr(m, t, tf, n);
    262262  for (int i=0; i<n; i++)
     
    281281//--
    282282{
    283    OMatrix m(n, mFunc->NFuncReal());
     283   Matrix m(n, mFunc->NFuncReal());
    284284   SolveArr(m, t, tf, n);
    285285   for (int i=0; i<n; i++)
     
    318318
    319319//++
    320 //  virtual void ComputeV(OVector& fpi, OVector const& fi)
     320//  virtual void ComputeV(Vector& fpi, Vector const& fi)
    321321//      Calcule les valeurs des dérivées fpi à partir des valeurs
    322322//      des fonctions fi. A redéfinir.
     
    340340
    341341//++
    342 // virtual void AdjustStart(OVector& start, double tstart)
     342// virtual void AdjustStart(Vector& start, double tstart)
    343343//      Pour ajuster le vecteur de départ quand il y a des
    344344//      fonctions à usage interne...
     
    405405
    406406void
    407 DiffEqFcnT1::ComputeV(OVector& fpi, OVector const& fi)
     407DiffEqFcnT1::ComputeV(Vector& fpi, Vector const& fi)
    408408{
    409409  fpi(0) = (*mFcn)(fi(0), fi(1));
     
    412412
    413413void
    414 DiffEqFcnT1::AdjustStart(OVector& start, double tstart)
     414DiffEqFcnT1::AdjustStart(Vector& start, double tstart)
    415415{
    416416  start.Realloc(2);
     
    446446
    447447void
    448 DiffEqFcn2::ComputeV(OVector& fpi, OVector const& fi)
     448DiffEqFcn2::ComputeV(Vector& fpi, Vector const& fi)
    449449{
    450450  fpi(0) = fi(1);
     
    481481
    482482void
    483 DiffEqFcnT2::ComputeV(OVector& fpi, OVector const& fi)
     483DiffEqFcnT2::ComputeV(Vector& fpi, Vector const& fi)
    484484{
    485485  fpi(0) = fi(1);
     
    489489
    490490void
    491 DiffEqFcnT2::AdjustStart(OVector& start, double tstart)
     491DiffEqFcnT2::AdjustStart(Vector& start, double tstart)
    492492{
    493493  start.Realloc(3);
     
    505505//      un vecteur de dimension 3.
    506506//      On fournit une fonction de type
    507 //|     typedef void(*DIFEQFCNV)(OVector& y2, OVector const& y1,
    508 //|                              OVector const& y);
     507//|     typedef void(*DIFEQFCNV)(Vector& y2, Vector const& y1,
     508//|                              Vector const& y);
    509509//      qui retourne y'' en fonction de y' et y.
    510510//      Note : le système résolu est alors en fait
     
    527527
    528528void
    529 DiffEqFcnV::ComputeV(OVector& fpi, OVector const& fi)
     529DiffEqFcnV::ComputeV(Vector& fpi, Vector const& fi)
    530530{
    531531  fpi(0) = fi(3);
     
    582582
    583583void
    584 RK4DiffEq::SolveArr(OMatrix& y, double* t, double tf, int n)
     584RK4DiffEq::SolveArr(Matrix& y, double* t, double tf, int n)
    585585{
    586586  //TIMEF;
     
    592592   double dx = (tf - mXStart)/(n*nStep);
    593593   
    594    OVector yt = mYStart;
     594   Vector yt = mYStart;
    595595
    596596   k1.Realloc(mFunc->NFuncReal());
     
    610610
    611611void
    612 RK4DiffEq::RKStep(OVector& newY, OVector const& y0, double dt)
     612RK4DiffEq::RKStep(Vector& newY, Vector const& y0, double dt)
    613613{
    614614    mFunc->ComputeV(k1, y0);
    615615    k1 *= dt;
    616     mFunc->ComputeV(k2, y0 + k1/2);
     616    mFunc->ComputeV(k2, y0 + k1/2.);
    617617    k2 *= dt;
    618     mFunc->ComputeV(k3, y0 + k2/2);
     618    mFunc->ComputeV(k3, y0 + k2/2.);
    619619    k3 *= dt;
    620620    mFunc->ComputeV(k4, y0 + k3);
    621621    k4 *= dt;
    622622   
    623     newY = y0 + (k1 + k2*2. + k3*2. + k4)/6;
    624 }
    625 
     623    newY = y0 + (k1 + k2*2. + k3*2. + k4)/6.;
     624}
     625
Note: See TracChangeset for help on using the changeset viewer.