CPP   57

ode1x1m

Guest on 8th July 2022 08:53:32 AM

  1. Numerical solution to the 1 x 1 ODE system by six
  2. integrators
  3.  
  4. */
  5.  
  6. /* Include headers */
  7. #include <math.h>
  8. #include <stdlib.h>
  9. #include <iostream.h>
  10. #include <fstream.h>
  11. #include "ode1x1.h"
  12. #include "Euler.h"
  13. #include "RK.h"  
  14.  
  15. /* Main program */
  16. void main()  
  17. {
  18.   /* Type variables */
  19.   double tp;
  20.   int i,j,ncase;
  21.  
  22.   /* Derive objects */
  23.   DEF o1;  
  24.   Euler e1;
  25.   RK rk;    
  26.  
  27.   /* Open a file for output */  
  28.   ofstream fout("ode1x1cpp.out",ios::out);
  29.  
  30.   /* Step through six integrators */
  31.   for(ncase=1;ncase<=6;ncase++)
  32.     {
  33.       /* ODE integration parameters */
  34.       o1.intpar();
  35.  
  36.       /* Initial condition */
  37.       o1.inital();
  38.  
  39.       /* Output interval */
  40.       tp=o1.tf-o1.t0;
  41.  
  42.       /* Step through nout grid points */      
  43.       for(j=1;j<=o1.nout;j++)
  44.         {
  45.           /* Print solution */
  46.           o1.fprint(fout,ncase,o1.neqn,o1.t0,o1.u0);
  47.  
  48.           /* Select ODE integrator */
  49.           switch(ncase)
  50.             {
  51.               /* Fixed step modified Euler integrator */
  52.               case 1:
  53.               e1.euler2a(o1.neqn,o1.t0,o1.tf,o1.u,o1.u0,o1.nsteps);
  54.               break;
  55.  
  56.               /* Variable step modified Euler integrator */
  57.               case 2:
  58.               e1.euler2b(o1.neqn,o1.t0,o1.tf,o1.u,o1.u0,o1.nsteps,o1.abserr,o1.relerr);
  59.               break;
  60.  
  61.               /* Fixed step classical fourth order
  62.               RK integrator */       
  63.               case 3:
  64.               rk.rkc4a(o1.neqn,o1.t0,o1.tf,o1.u,o1.u0,o1.nsteps);
  65.               break;
  66.  
  67.               /* Variable step classical fourth order
  68.               RK integrator */
  69.               case 4:
  70.               rk.rkc4b(o1.neqn,o1.t0,o1.tf,o1.u,o1.u0,o1.nsteps,o1.abserr,o1.relerr);
  71.               break;
  72.  
  73.               /* Fixed step RK Fehlberg

Raw Paste


Login or Register to edit or fork this paste. It's free.