diff options
author | siddhu8990 | 2016-06-06 09:18:33 +0530 |
---|---|---|
committer | siddhu8990 | 2016-06-06 09:18:33 +0530 |
commit | c75fb67154fb5679d6ede9a52d5f5ae15600f9f9 (patch) | |
tree | c2c950617ab555a0fa74a4f7e0c592ec80bcf3bd /src/c/differential_calculus/ode/dodes.c | |
parent | 212c54043e454e41ca4b23a5b965d4dbd4b683fe (diff) | |
download | scilab2c-c75fb67154fb5679d6ede9a52d5f5ae15600f9f9.tar.gz scilab2c-c75fb67154fb5679d6ede9a52d5f5ae15600f9f9.tar.bz2 scilab2c-c75fb67154fb5679d6ede9a52d5f5ae15600f9f9.zip |
File handling functions added
Diffstat (limited to 'src/c/differential_calculus/ode/dodes.c')
-rw-r--r-- | src/c/differential_calculus/ode/dodes.c | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/src/c/differential_calculus/ode/dodes.c b/src/c/differential_calculus/ode/dodes.c index ee6718bb..adef1ba7 100644 --- a/src/c/differential_calculus/ode/dodes.c +++ b/src/c/differential_calculus/ode/dodes.c @@ -1,13 +1,16 @@ -// Copyright (C) 2016 - IIT Bombay - FOSSEE -// -// This file must be used under the terms of the CeCILL. -// This source file is licensed as described in the file COPYING, which -// you should have received as part of this distribution. The terms -// are also available at -// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt -// Author: Siddhesh Wani -// Organization: FOSSEE, IIT Bombay -// Email: toolbox@scilab.in +/* Copyright (C) 2016 - IIT Bombay - FOSSEE + + This file must be used under the terms of the CeCILL. + This source file is licensed as described in the file COPYING, which + you should have received as part of this distribution. The terms + are also available at + http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt + Author: Siddhesh Wani + Organization: FOSSEE, IIT Bombay + Email: toolbox@scilab.in +*/ + +/*Function for solving ODEs using GSL library*/ #include "ode.h" #include "types.h" @@ -17,20 +20,29 @@ double dodes(double initial_value, double start_time, double end_time, \ - char *ode_function, double nequs, double eps_abs, double eps_rel, \ - double step_size) + int (*ode_function), char *solver_type, double nequs, double eps_abs, \ + double eps_rel, double step_size, int *params) { - double out = 0; + double out = 0, t = 0; //int status; + out = initial_value; + t = start_time; //Setup ODE related parameters - gsl_odeiv2_system sys = {ode_function, NULL, 2, NULL}; + gsl_odeiv2_system sys = {ode_function, NULL, nequs, NULL}; gsl_odeiv2_step *s = gsl_odeiv2_step_alloc (gsl_odeiv2_step_rkf45, nequs); gsl_odeiv2_control *c = gsl_odeiv2_control_y_new (eps_abs, eps_rel); gsl_odeiv2_evolve *e = gsl_odeiv2_evolve_alloc (nequs); - gsl_odeiv2_evolve_apply_fixed_step (e, c, s, &sys, &start_time, step_size, &out); - + while(t < end_time) + { + gsl_odeiv2_evolve_apply_fixed_step (e, c, s, &sys, &t, step_size, &out); + } + + gsl_odeiv2_evolve_free (e); + gsl_odeiv2_control_free (c); + gsl_odeiv2_step_free (s); + return out; } |