History

added resistance port changing

Jeff Snyder committed 7 years ago

Commit 4fa07021 parent f0d8ded3 files · +28 −5Browse files

Unified · Split

3 files
  1. LEAF/Inc/leaf-WDF.h +3 −1
  2. LEAF/Src/leaf-WDF.c +24 −4
  3. LEAF/leaf.h +1 −0
LEAF/Inc/leaf-WDF.h+3−1
@@ -24,6 +24,7 @@ typedef struct _tWDFresistor · 23 unmodified lines
24 24
25void tWDFresistor_init(tWDFresistor* const r, float electrical_resistance);25void tWDFresistor_init(tWDFresistor* const r, float electrical_resistance);
26float tWDFresistor_getPortResistance(tWDFresistor* const r);26float tWDFresistor_getPortResistance(tWDFresistor* const r);
27void tWDFresistor_setElectricalResistance(tWDFresistor* const r, float electrical_resistance);
27void tWDFresistor_setIncidentWave(tWDFresistor* const r, float incident_wave);28void tWDFresistor_setIncidentWave(tWDFresistor* const r, float incident_wave);
28float tWDFresistor_getReflectedWave(tWDFresistor* const r);29float tWDFresistor_getReflectedWave(tWDFresistor* const r);
29float tWDFresistor_getVoltage(tWDFresistor* const r);30float tWDFresistor_getVoltage(tWDFresistor* const r);
@@ -95,7 +96,8 @@ typedef struct _tWDFseriesAdaptor · 65 unmodified lines
95 96
96void tWDFseriesAdaptor_init(tWDFseriesAdaptor* const r, tWDFresistor* const rL, tWDFcapacitor* const rR);97void tWDFseriesAdaptor_init(tWDFseriesAdaptor* const r, tWDFresistor* const rL, tWDFcapacitor* const rR);
97float tWDFseriesAdaptor_getPortResistance(tWDFseriesAdaptor* const r);98float tWDFseriesAdaptor_getPortResistance(tWDFseriesAdaptor* const r);
98void tWDFseriesAdaptor_setIncidentWaves(tWDFseriesAdaptor* const r, float incident_wave);99void tWDFseriesAdaptor_setPortResistances(tWDFseriesAdaptor* const r);
100void tWDFseriesAdaptor_setIncidentWave(tWDFseriesAdaptor* const r, float incident_wave);
99float tWDFseriesAdaptor_getReflectedWave(tWDFseriesAdaptor* const r);101float tWDFseriesAdaptor_getReflectedWave(tWDFseriesAdaptor* const r);
100float tWDFseriesAdaptor_getVoltage(tWDFseriesAdaptor* const r);102float tWDFseriesAdaptor_getVoltage(tWDFseriesAdaptor* const r);
101float tWDFseriesAdaptor_getCurrent(tWDFseriesAdaptor* const r);103float tWDFseriesAdaptor_getCurrent(tWDFseriesAdaptor* const r);
LEAF/Src/leaf-WDF.c+24−4
@@ -17,6 +17,12 @@ void tWDFresistor_init(tWDFresistor* const r, float electrical_resistance) · 16 unmodified lines
17 r->incident_wave = 0.0f;17 r->incident_wave = 0.0f;
18 r->reflected_wave = 0.0f;18 r->reflected_wave = 0.0f;
19}19}
20void tWDFresistor_setElectricalResistance(tWDFresistor* const r, float electrical_resistance)
21{
22 r->port_resistance = electrical_resistance;
23 r->port_conductance = 1.0f / electrical_resistance;
24 r->electrical_resistance = electrical_resistance;
25}
20float tWDFresistor_getPortResistance(tWDFresistor* const r)26float tWDFresistor_getPortResistance(tWDFresistor* const r)
21{27{
22 return r->port_resistance;28 return r->port_resistance;
@@ -82,7 +88,7 @@ void tWDFresistiveSource_setSourceVoltage(tWDFresistiveSource* const r, float so · 59 unmodified lines
82 88
83void tWDFcapacitor_init(tWDFcapacitor* const r, float electrical_capacitance, float sample_rate)89void tWDFcapacitor_init(tWDFcapacitor* const r, float electrical_capacitance, float sample_rate)
84{90{
85 r->port_resistance = 1.0f / (sample_rate * electrical_capacitance); //based on trapezoidal discretization91 r->port_resistance = 1.0f / (sample_rate * 2.0f * electrical_capacitance); //based on trapezoidal discretization
86 r->port_conductance = (1.0f / r->port_resistance);92 r->port_conductance = (1.0f / r->port_resistance);
87 r->electrical_capacitance = electrical_capacitance;93 r->electrical_capacitance = electrical_capacitance;
88 r->incident_wave = 0.0f;94 r->incident_wave = 0.0f;
@@ -134,16 +140,30 @@ void tWDFseriesAdaptor_init(tWDFseriesAdaptor* const r, tWDFresistor* const rL, · 45 unmodified lines
134 140
135 r->gamma_zero = 1.0f / (r->port_resistance_right + r->port_resistance_left);141 r->gamma_zero = 1.0f / (r->port_resistance_right + r->port_resistance_left);
136}142}
143
144void tWDFseriesAdaptor_setPortResistances(tWDFseriesAdaptor* const r)
145{
146 r->port_resistance_left = tWDFresistor_getPortResistance(r->rL);
147 r->port_resistance_right = tWDFcapacitor_getPortResistance(r->rR);
148 r->port_resistance_up = r->port_resistance_left + r->port_resistance_right;
149 r->port_conductance_up = 1.0f / r->port_resistance_up;
150 r->port_conductance_left = 1.0f / r->port_resistance_left;
151 r->port_conductance_right = 1.0f / r->port_resistance_right;
152 r->gamma_zero = 1.0f / (r->port_resistance_right + r->port_resistance_left);
153}
154
137float tWDFseriesAdaptor_getPortResistance(tWDFseriesAdaptor* const r)155float tWDFseriesAdaptor_getPortResistance(tWDFseriesAdaptor* const r)
138{156{
139 return r->port_resistance_up;157 return r->port_resistance_up;
140}158}
141void tWDFseriesAdaptor_setIncidentWaves(tWDFseriesAdaptor* const r, float incident_wave)159void tWDFseriesAdaptor_setIncidentWave(tWDFseriesAdaptor* const r, float incident_wave)
142{160{
143 float gamma_left = r->port_resistance_left * r->gamma_zero;161 float gamma_left = r->port_resistance_left * r->gamma_zero;
144 float gamma_right = r->port_resistance_right * r->gamma_zero;162 float gamma_right = r->port_resistance_right * r->gamma_zero;
145 tWDFresistor_setIncidentWave(r->rL, (-1.0f * gamma_left * incident_wave) + ((1.0f - gamma_left) * tWDFresistor_getReflectedWave(r->rL)) - (gamma_left * tWDFcapacitor_getReflectedWave(r->rR)));163 float left_wave = tWDFresistor_getReflectedWave(r->rL);
146 tWDFcapacitor_setIncidentWave(r->rR, (-1.0f * gamma_right * incident_wave) + ((-1.0f * gamma_right) * tWDFresistor_getReflectedWave(r->rL)) + (1.0f - gamma_right * tWDFcapacitor_getReflectedWave(r->rR)));164 float right_wave = tWDFcapacitor_getReflectedWave(r->rR);
165 tWDFresistor_setIncidentWave(r->rL, (-1.0f * gamma_left * incident_wave) + ((1.0f - gamma_left) * left_wave) - (gamma_left * right_wave));
166 tWDFcapacitor_setIncidentWave(r->rR, (-1.0f * gamma_right * incident_wave) + ((-1.0f * gamma_right) * left_wave) + ((1.0f - gamma_right) * right_wave));
147}167}
148 168
149float tWDFseriesAdaptor_getReflectedWave(tWDFseriesAdaptor* const r)169float tWDFseriesAdaptor_getReflectedWave(tWDFseriesAdaptor* const r)
LEAF/leaf.h+1−0
@@ -58,6 +58,7 @@ · 57 unmodified lines
58#include "./Inc/leaf-crusher.h"58#include "./Inc/leaf-crusher.h"
59#include "./Inc/leaf-wavefolder.h"59#include "./Inc/leaf-wavefolder.h"
60#include "./Inc/leaf-tables.h"60#include "./Inc/leaf-tables.h"
61#include "./Inc/leaf-WDF.h"
61 62
62#endif63#endif
63 64

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t