From a1ca4d6ebc5f8c4d4959e1c7789b3cf2ad5032e4 Mon Sep 17 00:00:00 2001
From: Orestis <orestis.malaspinas@pm.me>
Date: Wed, 18 Jan 2023 00:08:56 +0100
Subject: [PATCH] added a todo

---
 practical_work/rc_circuit/main.c | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/practical_work/rc_circuit/main.c b/practical_work/rc_circuit/main.c
index 9ff6949..5f602c6 100644
--- a/practical_work/rc_circuit/main.c
+++ b/practical_work/rc_circuit/main.c
@@ -3,7 +3,7 @@
 #include <math.h>
 #include <plplot.h>
 
-#define NSIZE 500
+#define NSIZE 5000
 
 double PI = 4.0 * atan(1.0);
 
@@ -33,6 +33,12 @@ double solve_vc(rc_circuit rc, double v0, double v_in, double dt)
     return (v_in - v0) / (rc.c * rc.r) * dt + v0;
 }
 
+// TODO: try to do the high pass filter.
+// double solve_vr(rc_circuit rc, double v0, double dv_in_dt, double dt)
+// {
+//     return (dv_in_dt * (rc.c * rc.r) - v0) / (rc.c * rc.r) * dt + v0;
+// }
+
 double solve_vr(double v_in, double vc)
 {
     return v_in - vc;
@@ -181,8 +187,8 @@ void compute_sin(int size, PLFLT time[size], PLFLT vc[size], PLFLT vr[size], PLF
     double max_t = size * dt;
     double v = v0;
     double v_in_time = v_in;
-    double omega1 = 1.0 / (0.1 * rc.r * rc.c);
-    double omega2 = 1.0 / (10.0 * rc.r * rc.c);
+    double omega1 = 1.0 / (0.01 * rc.r * rc.c);
+    double omega2 = 1.0 / (2.0 * rc.r * rc.c);
 
     int i = 0;
     for (double t = 0.0; t < max_t && i < size; t += dt)
@@ -194,7 +200,7 @@ void compute_sin(int size, PLFLT time[size], PLFLT vc[size], PLFLT vr[size], PLF
         vr[i] = solve_vr(v_in_time, v);
         v_input[i] = v_in_time;
         v = solve_vc(rc, v, v_in_time, dt);
-        v_in_time = v_in * sin(2 * PI * omega1 * t);
+        v_in_time = v_in * sin(2 * PI * omega1 * t) + v_in * sin(2 * PI * omega2 * t);
         i += 1;
     }
 }
@@ -210,7 +216,7 @@ int main(int argc, char *argv[])
     // Parse and process command line arguments
     plparseopts(&argc, argv, PL_PARSE_FULL);
     plsetopt("dev", "wxwidgets");
-    plssub(2, 2);
+    plssub(1, 3);
 
     // Initialize plplot
     plinit();
@@ -218,13 +224,15 @@ int main(int argc, char *argv[])
     double v0 = 0.0;
     double v_in = 1.0;
     PLFLT t[NSIZE], vc[NSIZE], vr[NSIZE], v_input[NSIZE];
-    // compute_charge(NSIZE, t, vc, vr, rc, v0, v_in);
-    compute_sin(NSIZE, t, vc, vr, v_input, rc, v0, v_in);
+    compute_charge(NSIZE, t, vc, vr, v_input, rc, v0, v_in);
     plot_data(NSIZE, t, vc, vr, v_input, "t", "v", "The charge of a capacitor");
 
     compute_discharge(NSIZE, t, vc, vr, v_input, rc, v_in, v0);
     plot_data(NSIZE, t, vc, vr, v_input, "t", "v", "The discharge of a capacitor");
 
+    compute_sin(NSIZE, t, vc, vr, v_input, rc, v0, v_in);
+    plot_data(NSIZE, t, vc, vr, v_input, "t", "v", "The discharge of a capacitor");
+
     // Close PLplot library
     plend();
 
-- 
GitLab