ring_modulator Paul Cochrane Simulation of a ring modulator circuit in electrical analysis. The simulation describes the behaviour of the ring modulator, which, given a low-frequency signal, and a high frequency signal produces a mixed signal output. This script is adapted from the Intial Value Test Set http://www.dm.uniba.it/~testset t no yes yes yes yes main 1 main double y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15 RK4IP 1e-3 100000000 1000 main maxDeltaU) || (delta*UD2 > maxDeltaU) || (delta*UD3 > maxDeltaU) || (delta*UD4 > maxDeltaU) ) { printf("delta*U is greater than maxDeltaU, exiting\n"); printf("delta*UD1 = %g\tdelta*UD2 = %g\tdelta*UD3 = %g\tdelta*UD4 = %g\n", delta*UD1, delta*UD2, delta*UD3, delta*UD4); exit(255); } double qUD1 = gam*exp(delta*UD1 - 1.0); double qUD2 = gam*exp(delta*UD2 - 1.0); double qUD3 = gam*exp(delta*UD3 - 1.0); double qUD4 = gam*exp(delta*UD4 - 1.0); dy1_dt = (y8 - 0.5*y10 + 0.5*y11 + y14 - y1/R)/C; dy2_dt = (y9 - 0.5*y12 + 0.5*y13 + y15 - y2/R)/C; dy3_dt = (y10 - qUD1 + qUD4)/Cs; dy4_dt = (-y11 + qUD2 - qUD3)/Cs; dy5_dt = (y12 + qUD1 - qUD3)/Cs; dy6_dt = (-y13 - qUD2 + qUD4)/Cs; dy7_dt = (-y7/Rp + qUD1 + qUD2 - qUD3 - qUD4)/Cp; dy8_dt = -y1/Lh; dy9_dt = -y2/Lh; dy10_dt = (0.5*y1 - y3 - Rg2*y10)/Ls2; dy11_dt = (-0.5*y1 + y4 - Rg3*y11)/Ls3; dy12_dt = (0.5*y2 - y5 - Rg2*y12)/Ls2; dy13_dt = (-0.5*y2 + y6 - Rg3*y13)/Ls3; dy14_dt = (-y1 + Uin1 - (Ri + Rg1)*y14)/Ls1; dy15_dt = (-y2 - (Rc + Rg1)*y15)/Ls1; ]]> y1Out y2Out y3Out y4Out y5Out y6Out y7Out y8Out y9Out y10Out y11Out y12Out y13Out y14Out y15Out