Skip to content
Snippets Groups Projects
Unverified Commit 6336b792 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

added stuff

parent 58e9d422
Branches
No related tags found
No related merge requests found
*.o
main
*.gch
CC=clang
OPTS=-g -O3 -Wall -Wextra -fsanitize=address -fsanitize=leak -std=c11
LINK=-lm -fsanitize=address -fsanitize=leak
# OPTS=-g -O3 -Wall -Wextra -std=c11
# LINK=-lm
main: main.o rc.o ode_o1.o
$(CC) $(OPTS) -o $@ $^ $(LINK)
main.o: main.c
$(CC) $(OPTS) -c $^
ode_o1.o: ode_o1.c ode_o1.h
$(CC) $(OPTS) -c $^
rc.o: rc.c rc.h
$(CC) $(OPTS) -c $^
test:
make -C tests test
clean:
rm -f *.o main
make -C tests clean
#include "ode_o1.h"
// a * df/dt + b * f = c
// (f(t + dt) - f(t)) / dt = g(f(t)) => f(t + dt) = f(t) + dt * g(f(t)).
double advance(double (*g)(double, void *), double f0, double dt, void *state) {
return f0 + dt * g(f0, state);
}
#ifndef _ODE_O1_H_
#define _ODE_O1_H_
// a * df/dt + b * f = c
// (f(t + dt) - f(t)) / dt = g(f(t)) => f(t + dt) = f(t) + dt * g(f(t)).
double advance(double (*g)(double, void *), double f0, double dt, void *state);
#endif
#ifndef _RC_H_
#define _RC_H_
// rc ode:
// R * C * dV_c/dt + V_c = epsilon
// dV_c / dt = (epsilon - V_c) / R * C // g is the R.h.s of this equation
// V_c(t + dt) = V_c(t) + dt / (R * C) * (epsilon - V_c)
typedef struct _rc_state {
double r, c, eps;
} rc_state;
rc_state rc_state_create(double r, double c, double eps);
double rc_g(double v, void *rc);
double rc_advance(double v0, double dt, rc_state *state);
double exact_solution(double t, double v_ini, rc_state *state);
#endif
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment