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

added stuff

parent 58e9d422
No related branches found
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.
Finish editing this message first!
Please register or to comment