From 048e9d67ab721e9ded4ca4c441218acd3eb6608e Mon Sep 17 00:00:00 2001 From: mongi bellili Date: Tue, 14 May 2024 13:37:16 +0200 Subject: [PATCH] changed macro to function...not fully tested --- ...)_0.0001_ _ft_0.001_2024_5_14_13_36_34.png | Bin 0 -> 43660 bytes src/Interface/indexMacro.jl | 2 +- src/QuantizedSystemSolver.jl | 2 +- src/Utils/rootfinders/SimUtils.jl | 2 +- .../NL_integrators/NL_mLiQSS_Integrator.jl | 7 +- .../NL_nmLiQSS_discreteIntegrator.jl | 59 +++-- src/dense/Quantizers/LiQSS_quantizer1.jl | 3 +- src/dense/Quantizers/LiQSS_quantizer2.jl | 4 +- .../commonTests/globalTest_ord1tol-2-5.jl | 2 +- test/systemsTests/converters/boost.jl | 2 +- test/systemsTests/converters/buck copy.jl | 29 +++ test/systemsTests/converters/buck.jl | 4 +- ...ilgunElectrical_AllCircuit_2stages copy.jl | 32 ++- ...ilgunElectrical_AllCircuit_3stages copy.jl | 26 +- .../railgunElectrical_AllCircuit_4stages.jl | 26 +- .../railgunElectrical_AllCircuit_5stages.jl | 59 +++-- ...ilgunElectrical_AllCircuit_6stages copy.jl | 211 +++++++++++++++++ .../railgunElectrical_AllCircuit_6stages.jl | 224 ++++++++++++++++++ test/systemsTests/trashTest/trashtest.jl | 4 +- 19 files changed, 599 insertions(+), 99 deletions(-) create mode 100644 plot_buck_nmLiqss2_()_0.0001_ _ft_0.001_2024_5_14_13_36_34.png create mode 100644 test/systemsTests/converters/buck copy.jl create mode 100644 test/systemsTests/railGun/railgunElectrical_AllCircuit_6stages copy.jl create mode 100644 test/systemsTests/railGun/railgunElectrical_AllCircuit_6stages.jl diff --git a/plot_buck_nmLiqss2_()_0.0001_ _ft_0.001_2024_5_14_13_36_34.png b/plot_buck_nmLiqss2_()_0.0001_ _ft_0.001_2024_5_14_13_36_34.png new file mode 100644 index 0000000000000000000000000000000000000000..4056426e527552be2bdfa39c03b2b964e49a60a5 GIT binary patch literal 43660 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 maxErr ? maxErr : quantum[i] - updateQ(Val(O),i,x,q,quantum,exacteA,cacheA,dxaux,qaux,tx,tq,initTime,ft,nextStateTime) + updateQ(Val(O),i,x,q,quantum,exacteA,d,cacheA,dxaux,qaux,tx,tq,initTime,ft,nextStateTime) + end for i = 1:T clearCache(taylorOpsCache,Val(CS),Val(O));f(i,q,t,taylorOpsCache); @@ -106,7 +107,7 @@ end elapsedq = simt - tq[b] ; if elapsedq>0 integrateState(Val(O-1),q[b],elapsedq);tq[b]=simt end end - firstguess=updateQ(Val(O),index,x,q,quantum,exacteA,cacheA,dxaux,qaux,tx,tq,simt,ft,nextStateTime) ;tq[index] = simt + firstguess=updateQ(Val(O),index,x,q,quantum,exacteA,d,cacheA,dxaux,qaux,tx,tq,simt,ft,nextStateTime) ;tq[index] = simt #----------------------------------------------------check dependecy cycles--------------------------------------------- for j in SD(index) for b in (jac(j) ) # update Qb: to be used to calculate exacte Ajb diff --git a/src/dense/NL_integrators/NL_nmLiQSS_discreteIntegrator.jl b/src/dense/NL_integrators/NL_nmLiQSS_discreteIntegrator.jl index 6a894b2..b4e9ac8 100644 --- a/src/dense/NL_integrators/NL_nmLiQSS_discreteIntegrator.jl +++ b/src/dense/NL_integrators/NL_nmLiQSS_discreteIntegrator.jl @@ -26,7 +26,7 @@ function integrate(Al::QSSAlgorithm{:nmliqss,O},CommonqssData::CommonQSS_data{Z} qaux=liqssdata.qaux;dxaux=liqssdata.dxaux#= olddx=liqssdata.olddx; ; olddxSpec=liqssdata.olddxSpec =# - savedDers = Vector{Vector{Float64}}(undef, T) + #savedDers = Vector{Vector{Float64}}(undef, T) # savedVarsQ = Vector{Vector{Float64}}(undef, T) #= setprecision(BigFloat,80) @@ -72,9 +72,9 @@ end for i = 1:T numSteps[i]=0 - savedDers[i]=Vector{Float64}() + #savedDers[i]=Vector{Float64}() push!(savedVars[i],x[i][0]) - push!(savedDers[i],x[i][1]) + # push!(savedDers[i],x[i][1]) push!(savedTimes[i],0.0) quantum[i] = relQ * abs(x[i].coeffs[1]) ;quantum[i]=quantum[i] < absQ ? absQ : quantum[i];quantum[i]=quantum[i] > maxErr ? maxErr : quantum[i] @@ -122,22 +122,30 @@ while simt< ft && totalSteps < 50000000 t[0]=simt - DEBUG_time=DEBUG && 0.0002<=simt<=0.00022 + DEBUG_time=DEBUG && #= (29750 <=totalSteps<=29750) =# (0.0003557 <=simt<=0.0003559 ) ##########################################state######################################## if stepType == :ST_STATE statestep+=1 - + if DEBUG_time #&& (index!=13 && index!=15) + println("at simt=$simt x $index at begining of state step = $(x)") + println("-------------q begining of state step = $q") + @show totalSteps + + end xitemp=x[index][0] numSteps[index]+=1; elapsed = simt - tx[index];integrateState(Val(O),x[index],elapsed);tx[index] = simt ; dirI=x[index][0]-xitemp - if abs(dirI)>3*quantum[index] x[index][0]= 2*quantum[index] *sign(dirI) end # this is a rare case where dxi gets changed a lot by an event + #= if abs(dirI)>3*quantum[index] + x[index][0]=xitemp+ 3*quantum[index] *sign(dirI) + println("at start of state step, x moved more than 2 deltas") + end # this is a rare case where dxi gets changed a lot by an event =# quantum[index] = relQ * abs(x[index].coeffs[1]) ;quantum[index]=quantum[index] < absQ ? absQ : quantum[index];quantum[index]=quantum[index] > maxErr ? maxErr : quantum[index] - if abs(x[index].coeffs[2])>1e9 quantum[index]=10*quantum[index] end # i added this for the case a function is climbing (up/down) fast + #if abs(x[index].coeffs[2])>1e9 quantum[index]=10*quantum[index] end # i added this for the case a function is climbing (up/down) fast @@ -257,18 +265,18 @@ while simt< ft && totalSteps < 50000000 computeNextEventTime(Val(O),j,taylorOpsCache[1],oldsignValue,simt, nextEventTime, quantum,absQ) end#end for SZ - #= if DEBUG_time - println("at simt=$simt x end of state step = $x") + if DEBUG_time #&& (index!=13 && index!=15) + println("at simt=$simt x $index at end of state step = $(x)") println("-------------q end of state step = $q") - - end =# + @show totalSteps + end - if DEBUG_time && (index==3 || index==4) + #= if DEBUG_time #&& (index==3 || index==6) println("========end state=======") @show index,simt - @show x,q - @show nextStateTime,quantum - end + @show x[] + # @show nextStateTime,quantum + end =# ##################################input######################################## elseif stepType == :ST_INPUT # time of change has come to a state var that does not depend on anything...no one will give you a chance to change but yourself @@ -320,8 +328,8 @@ else if DEBUG_time println("x at start of event simt=$simt index=$index") - - # println("-------------q start of event = $q") + println("-------------x start of event = $x") + println("-------------q start of event = $q") #@show index,d end @@ -397,7 +405,7 @@ else firstguess=updateQ(Val(O),i,x,q,quantum,exactA,d,cacheA,dxaux,qaux,tx,tq,simt,ft,nextStateTime) # computeNextTime(Val(O), i, simt, nextStateTime, x, quantum) tx[i] = simt;tq[i] = simt - #Liqss_reComputeNextTime(Val(O), i, simt, nextStateTime, x, q, quantum) + Liqss_reComputeNextTime(Val(O), i, simt, nextStateTime, x, q, quantum) #= if DEBUG_time println("x end evcont simt=$simt x2=$(x[2])") println("q end evcont simt=$simt q2=$(q[2])") @@ -421,7 +429,10 @@ else elapsedq = simt - tq[b];if elapsedq>0 integrateState(Val(O-1),q[b],elapsedq);tq[b]=simt;#= @show q[b] =# end end end - + if DEBUG_time + println("q $j after intgratestate") + @show x[j],q[j] + end clearCache(taylorOpsCache,Val(CS),Val(O));f(j,-1,-1,q,d,t,taylorOpsCache);computeDerivative(Val(O), x[j], taylorOpsCache[1]) @@ -450,10 +461,10 @@ else if DEBUG_time - println("x at end of event simt=$simt x2=$(x)") + # println("x at end of event simt=$simt x=$(x)") println("q at end of event simt=$simt q2=$(q)") @show countEvents,totalSteps,statestep - @show nextStateTime,quantum + # @show nextStateTime,quantum end #= if 9.236846540089048e-5<=simt<9.237519926276279e-5 println("-------------end of event------------") @@ -474,7 +485,7 @@ else #= for i =1:T push!(savedVars[i],x[i][0]) - push!(savedDers[i],x[i][1]) + # push!(savedDers[i],x[i][1]) push!(savedTimes[i],simt) end =# else @@ -485,7 +496,9 @@ else push!(savedVars[j],x[j][0]) #push!(savedDers[j],x[j][1]) push!(savedTimes[j],simt) - + #= if simt==0.00035 + @show j,x[j][0] + end =# end # end end diff --git a/src/dense/Quantizers/LiQSS_quantizer1.jl b/src/dense/Quantizers/LiQSS_quantizer1.jl index 97153ce..08e4ea9 100644 --- a/src/dense/Quantizers/LiQSS_quantizer1.jl +++ b/src/dense/Quantizers/LiQSS_quantizer1.jl @@ -451,7 +451,8 @@ end =# function Liqss_reComputeNextTime(::Val{1}, i::Int, simt::Float64, nextStateTime::Vector{Float64}, xv::Vector{Taylor0},qv::Vector{Taylor0}, quantum::Vector{Float64}#= ,a::Vector{Vector{Float64}} =#) dt=0.0; q=qv[i][0];x=xv[i][0];x1=xv[i][1] if abs(q-x) >= 2*quantum[i] # this happened when var i and j s turns are now...var i depends on j, j is asked here for next time...or if you want to increase quant*10 later it can be put back to normal and q & x are spread out by 10quan - nextStateTime[i] = simt+1e-15 + nextStateTime[i] = simt+1e-12 + @show simt,i else if x1 !=0.0 #&& abs(q-x)>quantum[i]/10 dt=(q-x)/x1 diff --git a/src/dense/Quantizers/LiQSS_quantizer2.jl b/src/dense/Quantizers/LiQSS_quantizer2.jl index 2e818f2..e741ebf 100644 --- a/src/dense/Quantizers/LiQSS_quantizer2.jl +++ b/src/dense/Quantizers/LiQSS_quantizer2.jl @@ -362,10 +362,10 @@ function Liqss_reComputeNextTime(::Val{2}, i::Int, simt::Float64, nextStateTime: β=0 if abs(q-x) >= 2*quani # this happened when var i and j s turns are now...var i depends on j, j is asked here for next time...or if you want to increase quant*10 later it can be put back to normal and q & x are spread out by 10quan nextStateTime[i] = simt+1e-12 - if simt==2.500745083181994e-5 + #= if simt==2.500745083181994e-5 println("quantizer-recomputeNext: abs(q-x) >= 2*quani") @show simt,i,x,q,abs(q-x),quani - end + end =# #= if simt>3.486047550372409 @show djsksfs end =# diff --git a/test/systemsTests/commonTests/globalTest_ord1tol-2-5.jl b/test/systemsTests/commonTests/globalTest_ord1tol-2-5.jl index 287082f..6edd51d 100644 --- a/test/systemsTests/commonTests/globalTest_ord1tol-2-5.jl +++ b/test/systemsTests/commonTests/globalTest_ord1tol-2-5.jl @@ -121,5 +121,5 @@ function test(case,solvr) end case="order1_" -test(case,nmliqss1()) +test(case,nmliqss2()) #test(case,nmliqss2()) \ No newline at end of file diff --git a/test/systemsTests/converters/boost.jl b/test/systemsTests/converters/boost.jl index 8fa391e..c577272 100644 --- a/test/systemsTests/converters/boost.jl +++ b/test/systemsTests/converters/boost.jl @@ -47,7 +47,7 @@ function test() end =# end - tspan=(0.0,0.001) + tspan=(0.0,0.0025) sol= solve(odeprob,nmliqss2(),abstol=1e-4,reltol=1e-3,tspan) save_Sol(sol) diff --git a/test/systemsTests/converters/buck copy.jl b/test/systemsTests/converters/buck copy.jl new file mode 100644 index 0000000..9332e26 --- /dev/null +++ b/test/systemsTests/converters/buck copy.jl @@ -0,0 +1,29 @@ +using QuantizedSystemSolver +function test() + odeprob = NLodeProblem( + quote + name=(buck,) + C = 1e-4; L = 1e-4; R = 10.0;U = 24.0; T = 1e-4; DC = 0.5; ROn = 1e-5;ROff = 1e5; + discrete = [1e5,1e-5,1e-4,0.0,0.0];u = [0.0,0.0] + rd=discrete[1];rs=discrete[2];nextT=discrete[3];lastT=discrete[4];diodeon=discrete[5] + il=u[1] ;uc=u[2] + id=(il*rs-U)/(rd+rs) # diode's current + du[1] =(-id*rd-uc)/L + du[2]=(il-uc/R)/C + if t-nextT>0.0 + lastT=nextT;nextT=nextT+T;rs=ROn + end + if t-lastT-DC*T>0.0 + rs=ROff + end + if diodeon*(id)+(1.0-diodeon)*(id*rd-0.6)>0 + rd=ROn;diodeon=1.0 + else + rd=ROff;diodeon=0.0 + end + end) + tspan = (0.0, 0.001) + sol= solve(odeprob,nmliqss2(),tspan,abstol=1e-4,reltol=1e-3) + save_Sol(sol) +end +test() diff --git a/test/systemsTests/converters/buck.jl b/test/systemsTests/converters/buck.jl index 9e4d7dd..13e2ade 100644 --- a/test/systemsTests/converters/buck.jl +++ b/test/systemsTests/converters/buck.jl @@ -15,14 +15,14 @@ function test() if t-lastT-DC*T>0.0 rs=ROff end - if diodeon*(id)+(1.0-diodeon)*(id*rd)>0 + if diodeon*(id)+(1.0-diodeon)*(id*rd-0.6)>0 rd=ROn;diodeon=1.0 else rd=ROff;diodeon=0.0 end end tspan = (0.0, 0.001) - sol= solve(odeprob,nmliqss1(),tspan,abstol=1e-4,reltol=1e-3) + sol= solve(odeprob,nmliqss2(),tspan,abstol=1e-4,reltol=1e-3) save_Sol(sol) end test() diff --git a/test/systemsTests/railGun/railgunElectrical_AllCircuit_2stages copy.jl b/test/systemsTests/railGun/railgunElectrical_AllCircuit_2stages copy.jl index 936c108..faa78bc 100644 --- a/test/systemsTests/railGun/railgunElectrical_AllCircuit_2stages copy.jl +++ b/test/systemsTests/railGun/railgunElectrical_AllCircuit_2stages copy.jl @@ -4,11 +4,11 @@ function testRailGun() odeprob = @NLodeProblem begin name=(RG2Cap,) #parameters - ROn = 1e-5;ROff = 1e5; Lpr = 4.2*1e-9 ; L1 = 0.6*1e-4 #L2 = 4.0e-6;L3 = 1.1*1e-6 #L23=5.1e-6 + ROn = 1e-5;ROff = 1e0; Lpr = 4.2*1e-9 ; L1 = 0.6*1e-4 #L2 = 4.0e-6;L3 = 1.1*1e-6 #L23=5.1e-6 R1= 4.0e-3; R2 = 0.28*1e-3;R3 = 3.6*1e-3;C = 3.08*1e-3;m=0.12 - γ = 50.0*1e6; w = 15.0*1e-3; μ = 4.0*3.14*1e-7;Rpr0 = 15.5*1e-6; FNmec = 680.0; α = 0.154; t0=1.0 + γ = 50.0*1e6; w = 15.0*1e0; μ = 4.0*3.14*1e-7;Rpr0 = 1.5*1e-6; FNmec = 680.0; α = 0.154; t0=1.0; #continuous and discrete vars - discrete = [1e5,1e-5,1.0,1e5,1e-5,1.0,1.0,0.0,1e-3];u = [0.0,80000.75,0.0,0.0,80000.75,0.0,0.0,0.0] + discrete = [1e5,1e-5,1.0,1e5,1e-5,1.0,1.0,0.0,1e-3];u = [0.0,10000.75,0.0,0.0,10000.75,0.0,0.0,0.0] rd1=discrete[1];rs1=discrete[2];charge1=discrete[3]; rd2=discrete[4];rs2=discrete[5];charge2=discrete[6];start2=discrete[7]; manualIntg=discrete[8]; nextT=discrete[9] is1=u[1] ;uc1=u[2]; il1=u[3] ;is2=u[4] ;uc2=u[5]; il2=u[6] ;x=u[7]; v=u[8] #helper functions @@ -28,20 +28,30 @@ function testRailGun() du[8]=F/m #events if -(uc1)>0.0 - #= rs1=ROff; =#charge1=0.0 # rs off not needed since charge=0 + rs1=ROff;charge1=0.0 # rs off not needed since charge=0 rd1=ROn; end if -(uc2)>0.0 - #= rs2=ROff; =#charge2=0.0 + rs2=ROff;charge2=0.0 rd2=ROn; end - #= if -(is1)>0.0 - rs1=ROff;charge1=0.0 # rs off not needed since charge=0 - rd1=ROn; + #= if -(il1)>0.0 + end - if -(is2)>0.0 - rs2=ROff;charge2=0.0 - rd2=ROn; + if -(il2)>0.0 + + end =# + #= if rs1*((il1-is1))+(1.0-rs1)*((il1-is1)*rd1-0.6)>0 + # rs off not needed since charge=0 + rd1=ROn;rs1=1.0 + else + rd1=ROff;rs1=0.0 + end + if rs2*((il2-is2))+(1.0-rs2)*((il2-is2)*rd2-0.6)>0 + # rs off not needed since charge=0 + rd2=ROn;rs2=1.0 + else + rd2=ROff;rs2=0.0 end =# if t-nextT>0 manualIntg=manualIntg+v/sqrt(t[0]) diff --git a/test/systemsTests/railGun/railgunElectrical_AllCircuit_3stages copy.jl b/test/systemsTests/railGun/railgunElectrical_AllCircuit_3stages copy.jl index 744ca2c..cb13e29 100644 --- a/test/systemsTests/railGun/railgunElectrical_AllCircuit_3stages copy.jl +++ b/test/systemsTests/railGun/railgunElectrical_AllCircuit_3stages copy.jl @@ -4,7 +4,7 @@ function test() odeprob = @NLodeProblem begin name=(RGElectrical3,) - ROn = 1e-5;ROff = 1e5; + ROn = 1e-5;ROff = 1e1; Lpr = 4.2*1e-9#0.48*1e-6#0.45 * 1e-6 L1 = 0.6*1e-4 #28.0*1e-6#0.6*1e-6 #L2 = 4.0e-6;L3 = 1.1*1e-6 @@ -15,9 +15,9 @@ L23=5.1e-6 C = 3.08*1e-3#3.08*1e-3 m=0.12 -γ = 50.0*1e6; w = 15.0*1e-3#25.0*1e-3#15.0*1e-3 +γ = 50.0*1e6; w = 15.0*1e0#25.0*1e-3#15.0*1e-3 μ = 4.0*3.14*1e-7 -Rpr0 = 15.5*1e-6 +Rpr0 = 1.5*1e-6 FNmec = 680.0; α = 0.154 rs11=1e-5;rs21=1e-5;rs31=1e-5; t0=1.0 @@ -39,18 +39,18 @@ t0=1.0 I=il1+il2+il3 uf=0.1+0.2*exp(-v/100) F=0.5*0.453e-6*I*I*(1-uf*0.124)-uf*FNmec - du[1] =((-(R1+rs11+rd1)*is1+rd1*il1+uc1)/L1)#*charge1 - du[2]=(-is1/C)*charge1 + du[1] =((-(R1+rs1+rd1)*is1+rd1*il1+uc1)/L1)*operate1 + du[2]=(-is1/C)*charge1*operate1 # du[3]=((-rd1-R2-R3)*il1-RR*(I)+rd1*is1)/(L2+L3)#((L2+L3+α)*β)/Δ du[3]=operate1*1e6*((-I*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*((5.1042 + 0.453x)^2 - ((0.0042 + 0.453x)^2))+ ((-I*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*((0.0042 + 0.453x)^2 - (0.0042 + 0.453x)*(5.1042 + 0.453x))) +((-I*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*((0.0042 + 0.453x)^2 - (0.0042 + 0.453x)*(5.1042 + 0.453x))) )/(132.97872599999997 + 35.34758999999999x) - du[4] =((-(R1+rs21+rd2)*is2+rd2*il2+uc2)/L1)#*charge2*start2 - du[5]=(-is2/C)*charge2*start2 + du[4] =((-(R1+rs2+rd2)*is2+rd2*il2+uc2)/L1)*operate2 + du[5]=(-is2/C)*charge2*operate2 #du[6]=start2*(((-rd2-R2-R3)*il2-RR*(I)+rd2*is2)/(L2+L3))#((L2+L3+α)*β)/Δ du[6]=operate2*1e6*(((-I*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*((5.1042 + 0.453x)^2 - ((0.0042 + 0.453x)^2)))+((-I*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*((0.0042 + 0.453x)^2 - (0.0042 + 0.453x)*(5.1042 + 0.453x)))+((-I*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*((0.0042 + 0.453x)^2 - (0.0042 + 0.453x)*(5.1042 + 0.453x))) )/(132.97872599999997 + 35.34758999999999x) - du[7] =((-(R1+rs31+rd3)*is3+rd3*il3+uc3)/L1)*operate3#*charge3 + du[7] =((-(R1+rs3+rd3)*is3+rd3*il3+uc3)/L1)*operate3#*charge3 du[8]=((-is3/C)*charge3)*operate3 # du[9]=start3*(((-rd3-R2-R3)*il3-RR*(I)+rd3*is3)/(L2+L3))#((L2+L3+α)*β)/Δ du[9]=operate3*1e6*(((-I*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*((5.1042 + 0.453x)^2 - ((0.0042 + 0.453x)^2)))+((-I*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*((0.0042 + 0.453x)^2 - (0.0042 + 0.453x)*(5.1042 + 0.453x)))+(-I*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*((0.0042 + 0.453x)^2 - (0.0042 + 0.453x)*(5.1042 + 0.453x))) /(132.97872599999997 + 35.34758999999999x) @@ -80,7 +80,7 @@ t0=1.0 #divT(mulTT(d[16], 1.0e6, addT, cache[2], cache[3]), addt, cache[1]) if -(uc1)>0.0 charge1=0.0 # rs off not needed since charge=0 - #rs1=ROff; + rs1=ROff; rd1=ROn; uc1=0.0 #= uc1=0.0; @@ -88,7 +88,7 @@ t0=1.0 end if -(uc2)>0.0 charge2=0.0 - #rs2=ROff; + rs2=ROff; rd2=ROn; #@show rd2 uc2=0.0 @@ -97,7 +97,7 @@ t0=1.0 if -(uc3)>0.0 charge3=0.0 - # rs3=ROff; + rs3=ROff; rd3=ROn; uc3=0.0 @@ -157,7 +157,7 @@ t0=1.0 # @show odeprob tspan = (0.0, 4.0e-3) sol= solve(odeprob,nmliqss1(),tspan,abstol=1e-3,reltol=1e-2) - #= save_Sol(sol,1) + save_Sol(sol,1) save_Sol(sol,2) save_Sol(sol,3) save_Sol(sol,4) @@ -166,7 +166,7 @@ t0=1.0 save_Sol(sol,7) save_Sol(sol,8) - save_Sol(sol,9) =# + save_Sol(sol,9) # save_Sol(sol,9,note="z1",xlims=(0.0,0.2e-8),ylims=(-0.005,0.005)) save_SolSum(sol,3,6,9) #add interpl preference save_Sol(sol,10) diff --git a/test/systemsTests/railGun/railgunElectrical_AllCircuit_4stages.jl b/test/systemsTests/railGun/railgunElectrical_AllCircuit_4stages.jl index 6d565b5..2716f2f 100644 --- a/test/systemsTests/railGun/railgunElectrical_AllCircuit_4stages.jl +++ b/test/systemsTests/railGun/railgunElectrical_AllCircuit_4stages.jl @@ -4,7 +4,7 @@ function test() odeprob = @NLodeProblem begin name=(RGElectrical4,) - ROn = 1e-5;ROff = 1e5; + ROn = 1e-5;ROff = 1e1; Lpr = 4.2*1e-9#0.48*1e-6#0.45 * 1e-6 L1 = 0.6*1e-4 #28.0*1e-6#0.6*1e-6 #L2 = 4.0e-6;L3 = 1.1*1e-6 @@ -15,20 +15,20 @@ L23=5.1e-6 C = 3.08*1e-3#3.08*1e-3 m=0.12 -γ = 50.0*1e6; w = 15.0*1e-3#25.0*1e-3#15.0*1e-3 +γ = 50.0*1e6; w = 15.0*1e0#25.0*1e-3#15.0*1e-3 μ = 4.0*3.14*1e-7 -Rpr0 = 15.5*1e-6 +Rpr0 = 1.5*1e-6 FNmec = 680.0; α = 0.154 rs11=1e-5;rs21=1e-5;rs31=1e-5;rs41=1e-5; t0=1.0 - discrete = [1e5,1.0,1.0,1e5,1.0,1.0,1e5,1.0,1.0,1e5,1.0,1.0,0.0,1e-3];u = [0.0,20005.75,0.0,0.0,21003.75,0.0,0.0,20001.75,0.0,0.0,20001.75,0.0,0.0,0.0] + discrete = [1e5,1.0,1.0,1e5,1.0,1.0,1e5,1.0,1.0,1e5,1.0,1.0,0.0,1e-3,1e-5,1e-5,1e-5,1e-5];u = [0.0,20005.75,0.0,0.0,20003.75,0.0,0.0,20001.75,0.0,0.0,20001.75,0.0,0.0,0.0] rd1=discrete[1]; operate1=discrete[2];charge1=discrete[3]; rd2=discrete[4];operate2=discrete[5];charge2=discrete[6]; rd3=discrete[7];operate3=discrete[8]; charge3=discrete[9]; rd4=discrete[10];operate4=discrete[11]; charge4=discrete[12]; - manualIntg=discrete[13]; nextT=discrete[14] + manualIntg=discrete[13]; nextT=discrete[14];rs1=discrete[15];rs2=discrete[16];rs3=discrete[17];rs4=discrete[18]; is1=u[1] ;uc1=u[2]; il1=u[3] ;is2=u[4] ;uc2=u[5]; il2=u[6] ;is3=u[7] ;uc3=u[8]; il3=u[9] ;is4=u[10] ;uc4=u[11]; il4=u[12] ;x=u[13]; v=u[14] #α=LR+Lpr; # RR=4.0e-5 @@ -43,19 +43,19 @@ t0=1.0 I=il1+il2+il3+il4 uf=0.1+0.2*exp(-v/100) F=0.5*0.453e-6*I*I*(1-uf*0.124)-uf*FNmec - du[1] =((-(R1+rs11+rd1)*is1+rd1*il1+uc1)/L1)#*charge1 + du[1] =((-(R1+rs1+rd1)*is1+rd1*il1+uc1)/L1)#*charge1 du[2]=(-is1/C)*charge1 du[3]=operate1*1e6* ((-I*rrpp+ il1*rd11 + is1*rd1)*x1+ ((-3*I*rrpp+ il2*rd22 + is2*rd2) + ( il3*rd33 + is3*rd3) + ( il4*rd44 + is4*rd4))*x2) / x3 - du[4] =((-(R1+rs21+rd2)*is2+rd2*il2+uc2)/L1)#*charge2 + du[4] =((-(R1+rs2+rd2)*is2+rd2*il2+uc2)/L1)#*charge2 du[5]=(-is2/C)*charge2 du[6]=operate2*1e6* ((-I*rrpp+ il2*rd22 + is2*rd2)*x1 + ((-3*I*rrpp+ il3*rd33 + is3*rd3)+ ( il1*rd11 + is1*rd1) + ( il4*rd44 + is4*rd4))*x2) / x3 - du[7] =((-(R1+rs31+rd3)*is3+rd3*il3+uc3)/L1)*operate3#*charge3 + du[7] =((-(R1+rs3+rd3)*is3+rd3*il3+uc3)/L1)*operate3#*charge3 du[8]=((-is3/C)*charge3)*operate3 du[9]=operate3*1e6* ((-I*rrpp+ il3*rd33 + is3*rd3)*x1 + ((-3*I*rrpp+ il1*rd11 + is1*rd1)+ ( il4*rd44 + is4*rd4) + ( il2*rd22 + is2*rd2))*x2 )/ x3 - du[10] =((-(R1+rs41+rd4)*is4+rd4*il4+uc4)/L1)*operate4#*charge3 + du[10] =((-(R1+rs4+rd4)*is4+rd4*il4+uc4)/L1)*operate4#*charge3 du[11]=((-is4/C)*charge4)*operate4 du[12]=operate4*1e6* ( (-I*rrpp+ il4*rd44 + is4*rd4)*x1 + ((-3*I*rrpp+ il1*rd11 + is1*rd1) + ( il3*rd33 + is3*rd3) + ( il2*rd22 + is2*rd2))*x2 )/ x3 @@ -74,7 +74,7 @@ t0=1.0 if -(uc1)>0.0 charge1=0.0 # rs off not needed since charge=0 - #rs1=ROff; + rs1=ROff; rd1=ROn; uc1=0.0 #= uc1=0.0; @@ -82,7 +82,7 @@ t0=1.0 end if -(uc2)>0.0 charge2=0.0 - #rs2=ROff; + rs2=ROff; rd2=ROn; #@show rd2 uc2=0.0 @@ -91,14 +91,14 @@ t0=1.0 if -(uc3)>0.0 charge3=0.0 - # rs3=ROff; + rs3=ROff; rd3=ROn; uc3=0.0 end if -(uc4)>0.0 charge4=0.0 - # rs3=ROff; + rs3=ROff; rd4=ROn; uc4=0.0 diff --git a/test/systemsTests/railGun/railgunElectrical_AllCircuit_5stages.jl b/test/systemsTests/railGun/railgunElectrical_AllCircuit_5stages.jl index aecaf25..90b42e9 100644 --- a/test/systemsTests/railGun/railgunElectrical_AllCircuit_5stages.jl +++ b/test/systemsTests/railGun/railgunElectrical_AllCircuit_5stages.jl @@ -4,8 +4,8 @@ function test() odeprob = @NLodeProblem begin name=(RGElectrical5,) - ROn = 1e-5;ROff = 1e5; - Lpr = 4.2*1e-9#0.48*1e-6#0.45 * 1e-6 + ROn = 1e-5;ROff = 1e1; + Lpr = 4.2*1e-9#0.48*1e-6#0.45 * 1e-6 L1 = 0.6*1e-4 #28.0*1e-6#0.6*1e-6 #L2 = 4.0e-6;L3 = 1.1*1e-6 L23=5.1e-6 @@ -15,21 +15,21 @@ R1= 4.0e-3; R2 = 0.28*1e-3;R3 = 3.6*1e-3 C = 3.08*1e-3#3.08*1e-3 m=0.12 -γ = 50.0*1e6; w = 15.0*1e-3#25.0*1e-3#15.0*1e-3 +γ = 50.0*1e6; w = 15.0*1e0#25.0*1e-3#15.0*1e-3 μ = 4.0*3.14*1e-7 -Rpr0 = 15.5*1e-6 +Rpr0 = 1.5*1e-6 FNmec = 680.0; α = 0.154 rs11=1e-5;rs21=1e-5;rs31=1e-5;rs41=1e-5;;rs51=1e-5; t0=1.0 - discrete = [1e5,1.0,1.0,1e5,1.0,1.0,1e5,1.0,1.0,1e5,0.0,1.0,1e5,0.0,1.0,0.0,1e-3];u = [0.0,20005.75,0.0,0.0,21003.75,0.0,0.0,20001.75,0.0,0.0,20001.75,0.0,0.0,20001.75,0.0,0.0,0.0] + discrete = [1e5,1.0,1.0,1e5,1.0,1.0,1e5,1.0,1.0,1e5,0.0,1.0,1e5,0.0,1.0,0.0,1e-3,1e-5,1e-5,1e-5,1e-5,1e-5];u = [0.0,20005.75,0.0,0.0,21003.75,0.0,0.0,20001.75,0.0,0.0,20001.75,0.0,0.0,20001.75,0.0,0.0,0.0] rd1=discrete[1]; operate1=discrete[2];charge1=discrete[3]; rd2=discrete[4];operate2=discrete[5];charge2=discrete[6]; rd3=discrete[7];operate3=discrete[8]; charge3=discrete[9]; rd4=discrete[10];operate4=discrete[11]; charge4=discrete[12]; rd5=discrete[13];operate5=discrete[14]; charge5=discrete[15]; - manualIntg=discrete[16]; nextT=discrete[17] + manualIntg=discrete[16]; nextT=discrete[17];rs1=discrete[18];rs2=discrete[19];rs3=discrete[20];rs4=discrete[21];rs5=discrete[22]; is1=u[1] ;uc1=u[2]; il1=u[3] ;is2=u[4] ;uc2=u[5]; il2=u[6] ;is3=u[7] ;uc3=u[8]; il3=u[9] ;is4=u[10] ;uc4=u[11]; il4=u[12];is5=u[13] ;uc5=u[14]; il5=u[15] ;x=u[16]; v=u[17] #α=LR+Lpr; # RR=4.0e-5 @@ -44,24 +44,24 @@ t0=1.0 Il=il1+il2+il3+il4+il5 uf=0.1+0.2*exp(-v/100) F=0.5*0.453e-6*Il*Il*(1-uf*0.124)-uf*FNmec - du[1] =((-(R1+rs11+rd1)*is1+rd1*il1+uc1)/L1)#*charge1 + du[1] =((-(R1+rs1+rd1)*is1+rd1*il1+uc1)/L1)#*charge1 du[2]=(-is1/C)*charge1 du[3]=operate1*1e6* ( -(-Il*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) - (-Il*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) - (-Il*(rpr + rr + 4.53e-7v) + il4*(-0.00388 - rd4) + is4*rd4)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) - (-Il*(rpr + rr + 4.53e-7v) + il5*(-0.00388 - rd5) + is5*rd5)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) + (-Il*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*(0.19607843137254904 + (-0.0042 - 0.453x) / (5.1(5.1209999999999996 + 2.265x)))) - du[4] =((-(R1+rs21+rd2)*is2+rd2*il2+uc2)/L1)#*charge2 + du[4] =((-(R1+rs2+rd2)*is2+rd2*il2+uc2)/L1)#*charge2 du[5]=(-is2/C)*charge2 du[6]=operate2*1e6* (-(-Il*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) - (-Il*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) - (-Il*(rpr + rr + 4.53e-7v) + il4*(-0.00388 - rd4) + is4*rd4)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) - (-Il*(rpr + rr + 4.53e-7v) + il5*(-0.00388 - rd5) + is5*rd5)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) + (-Il*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*(0.19607843137254904 + (-0.0042 - 0.453x) / (5.1(5.1209999999999996 + 2.265x))) ) - du[7] =((-(R1+rs31+rd3)*is3+rd3*il3+uc3)/L1)*operate3#*charge3 + du[7] =((-(R1+rs3+rd3)*is3+rd3*il3+uc3)/L1)*operate3#*charge3 du[8]=((-is3/C)*charge3)*operate3 du[9]=operate3*1e6* ( -(-Il*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) - (-Il*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) - (-Il*(rpr + rr + 4.53e-7v) + il4*(-0.00388 - rd4) + is4*rd4)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) - (-Il*(rpr + rr + 4.53e-7v) + il5*(-0.00388 - rd5) + is5*rd5)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) + (-Il*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*(0.19607843137254904 + (-0.0042 - 0.453x) / (5.1(5.1209999999999996 + 2.265x))) ) - du[10] =((-(R1+rs41+rd4)*is4+rd4*il4+uc4)/L1)*operate4#*charge3 + du[10] =((-(R1+rs4+rd4)*is4+rd4*il4+uc4)/L1)*operate4#*charge3 du[11]=((-is4/C)*charge4)*operate4 du[12]=operate4*1e6* (-(-Il*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) - (-Il*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) - (-Il*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) - (-Il*(rpr + rr + 4.53e-7v) + il5*(-0.00388 - rd5) + is5*rd5)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) + (-Il*(rpr + rr + 4.53e-7v) + il4*(-0.00388 - rd4) + is4*rd4)*(0.19607843137254904 + (-0.0042 - 0.453x) / (5.1(5.1209999999999996 + 2.265x)))) - du[13] =((-(R1+rs51+rd5)*is5+rd5*il5+uc5)/L1)*operate5#*charge3 + du[13] =((-(R1+rs5+rd5)*is5+rd5*il5+uc5)/L1)*operate5#*charge3 du[14]=((-is5/C)*charge5)*operate5 du[15]=operate5*1e6* ( -(-Il*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) - (-Il*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) - (-Il*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) - (-Il*(rpr + rr + 4.53e-7v) + il4*(-0.00388 - rd4) + is4*rd4)*((0.0042 + 0.453x) / (5.1(5.1209999999999996 + 2.265x))) + (-Il*(rpr + rr + 4.53e-7v) + il5*(-0.00388 - rd5) + is5*rd5)*(0.19607843137254904 + (-0.0042 - 0.453x) / (5.1(5.1209999999999996 + 2.265x)))) @@ -69,17 +69,22 @@ t0=1.0 du[16]=v du[17]=F/m - if t-0.00025>0.0 - operate4=1.0 - end + #= if t-0.00025>0.0 + operate3=1.0 + end =# if t-0.0003>0.0 + operate4=1.0 + end + if t-0.0006>0.0 operate5=1.0 + #= @show Il,rr,v,x,il1,is1,il2,is2,il3,is3,il4,is4,il5,is5 + @show Rpr0*(sqrt(t0/(t[0]+1e-4))+(t[0]/t0)^16)/(1.0+(t[0]/t0)^16) =# end if -(uc1)>0.0 charge1=0.0 # rs off not needed since charge=0 - #rs1=ROff; + rs1=ROff; rd1=ROn; uc1=0.0 #= uc1=0.0; @@ -87,7 +92,7 @@ t0=1.0 end if -(uc2)>0.0 charge2=0.0 - #rs2=ROff; + rs2=ROff; rd2=ROn; #@show rd2 uc2=0.0 @@ -96,14 +101,14 @@ t0=1.0 if -(uc3)>0.0 charge3=0.0 - # rs3=ROff; + rs3=ROff; rd3=ROn; uc3=0.0 end if -(uc4)>0.0 charge4=0.0 - # rs3=ROff; + rs4=ROff; rd4=ROn; uc4=0.0 @@ -111,7 +116,7 @@ t0=1.0 if -(uc5)>0.0 charge5=0.0 - # rs3=ROff; + rs5=ROff; rd5=ROn; uc5=0.0 @@ -149,10 +154,11 @@ t0=1.0 end # @show odeprob - tspan = (0.0, 4.0e-3) + tspan = (0.0, 0.004) sol= solve(odeprob,nmliqss1(),tspan,abstol=1e-3,reltol=1e-2) - # sol= solve(odeprob,nmliqss1(),tspan,abstol=1e-3,reltol=1e-2) - save_Sol(sol,1) + # sol= solve(odeprob,nmliqss1(),tspan,abstol=1e-3,reltol=1e-2) + + #= save_Sol(sol,1) save_Sol(sol,2) save_Sol(sol,3) @@ -170,12 +176,15 @@ t0=1.0 save_Sol(sol,13) save_Sol(sol,14) - save_Sol(sol,15) + save_Sol(sol,15) =# # save_Sol(sol,9,note="z1",xlims=(0.0,0.2e-8),ylims=(-0.005,0.005)) save_SolSum(sol,3,6,9,12,15,interp=0.00001) #add interpl preference - save_Sol(sol,16) - save_Sol(sol,17) +#= save_Sol(sol,16) + save_Sol(sol,17) =# +#= save_Sol(sol,1,3,note="x1_3_saveall",xlims=(0.0003555,0.000356),ylims=(9.2e4,9.6e4)) + save_Sol(sol,4,6,note="x4_6_saveall",xlims=(0.0003555,0.000356),ylims=(9.7e4,1.02e5)) + save_Sol(sol,7,9,note="x7_9_saveall",xlims=(0.0003555,0.000356),ylims=(9.2e4,9.6e4)) =# end #@btime diff --git a/test/systemsTests/railGun/railgunElectrical_AllCircuit_6stages copy.jl b/test/systemsTests/railGun/railgunElectrical_AllCircuit_6stages copy.jl new file mode 100644 index 0000000..68e9f52 --- /dev/null +++ b/test/systemsTests/railGun/railgunElectrical_AllCircuit_6stages copy.jl @@ -0,0 +1,211 @@ +using QuantizedSystemSolver +using BenchmarkTools +function test(Lpr) + + odeprob = NLodeProblem( + quote + + + name=(RGElectrical6,) + ROn = 1e-5;ROff = 1e1; + #Lpr = 4.2*1e-9#0.48*1e-6#0.45 * 1e-6 +L1 = 0.6*1e-4 #28.0*1e-6#0.6*1e-6 +#L2 = 4.0e-6;L3 = 1.1*1e-6 +L23=5.1e-6 + +R1= 4.0e-3; R2 = 0.28*1e-3;R3 = 3.6*1e-3 + +C = 3.08*1e-3#3.08*1e-3 + +m=0.12 +γ = 50.0*1e6; w = 15.0*1e0#25.0*1e-3#15.0*1e-3 +μ = 4.0*3.14*1e-7 +Rpr0 = 1.5*1e-6 +FNmec = 680.0; α = 0.154 +rs11=1e-5;rs21=1e-5;rs31=1e-5;rs41=1e-5;;rs51=1e-5;rs61=1e-5; +t0=1.0 + + discrete = [1e5,1.0,1.0,1e5,1.0,1.0,1e5,1.0,1.0,1e5,0.0,1.0,1e5,0.0,1.0,1e5,0.0,1.0,0.0,1e-3,1e-5,1e-5,1e-5,1e-5,1e-5,1e-5];u = [0.0,10750.0,0.0,0.0,10750.0,0.0,0.0,10750.0,0.0,0.0,10750.0,0.0,0.0,10750.0,0.0,0.0,10750.0,0.0,0.0,0.0] + + rd1=discrete[1]; operate1=discrete[2];charge1=discrete[3]; + rd2=discrete[4];operate2=discrete[5];charge2=discrete[6]; + rd3=discrete[7];operate3=discrete[8]; charge3=discrete[9]; + rd4=discrete[10];operate4=discrete[11]; charge4=discrete[12]; + rd5=discrete[13];operate5=discrete[14]; charge5=discrete[15]; + rd6=discrete[16];operate6=discrete[17]; charge6=discrete[18]; + manualIntg=discrete[19]; nextT=discrete[20];rs1=discrete[21];rs2=discrete[22];rs3=discrete[23];rs4=discrete[24];rs5=discrete[25];rs6=discrete[26]; + is1=u[1] ;uc1=u[2]; il1=u[3] ;is2=u[4] ;uc2=u[5]; il2=u[6] ;is3=u[7] ;uc3=u[8]; il3=u[9] ;is4=u[10] ;uc4=u[11]; il4=u[12];is5=u[13] ;uc5=u[14]; il5=u[15] ;is6=u[16] ;uc6=u[17]; il6=u[18] ;x=u[19]; v=u[20] + #α=LR+Lpr; + # RR=4.0e-5 + rr=manualIntg*2.0*sqrt(μ/(3.14*γ))/w + rpr=Rpr0*(sqrt(t0/(t+1e-4))+(t/t0)^16)/(1.0+(t/t0)^16) + + #= rrpp=(rpr + rr + 4.53e-7v) + x1=(132.97872599999997 + 35.34758999999999x) + x2=(-0.10924199999999998 - 11.782529999999998x) + x3=678.7486367999996 + 240.3636119999999x - 8.881784197001252e-16(x^2) + rd11=(-0.00388 - rd1);rd22=(-0.00388 - rd2);rd33=(-0.00388 - rd3);rd44=(-0.00388 - rd4) =# + Il=il1+il2+il3+il4+il5+il6 + uf=0.1+0.2*exp(-v/100) + F=0.5*0.453e-6*Il*Il*(1-uf*0.124)-uf*FNmec + du[1] =((-(R1+rs1+rd1)*is1+rd1*il1+uc1)/L1)#*operate1 + du[2]=(-is1/C)*charge1#*operate1 + du[3]=operate1*1e6* ( -(-Il*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il4*(-0.00388 - rd4) + is4*rd4)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il5*(-0.00388 - rd5) + is5*rd5)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il6*(-0.00388 - rd6) + is6*rd6)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) + (-Il*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*(0.19607843137254904 + (-0.0042 - 0.453x) / (5.1(5.1251999999999995 + 2.718x)))) + + + du[4] =((-(R1+rs2+rd2)*is2+rd2*il2+uc2)/L1)*operate2 + du[5]=(-is2/C)*charge2*operate2 + du[6]=operate2*1e6* ( -(-Il*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il4*(-0.00388 - rd4) + is4*rd4)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il5*(-0.00388 - rd5) + is5*rd5)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il6*(-0.00388 - rd6) + is6*rd6)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) + (-Il*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*(0.19607843137254904 + (-0.0042 - 0.453x) / (5.1(5.1251999999999995 + 2.718x))) ) + + du[7] =((-(R1+rs3+rd3)*is3+rd3*il3+uc3)/L1)*operate3#*charge3 + du[8]=((-is3/C)*charge3)*operate3 + du[9]=operate3*1e6* (-(-Il*(rpr + rr + 4.53e-7v) + il4*(-0.00388 - rd4) + is4*rd4)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il5*(-0.00388 - rd5) + is5*rd5)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il6*(-0.00388 - rd6) + is6*rd6)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) + (-Il*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*(0.19607843137254904 + (-0.0042 - 0.453x) / (5.1(5.1251999999999995 + 2.718x))) ) + + du[10] =((-(R1+rs4+rd4)*is4+rd4*il4+uc4)/L1)*operate4#*charge3 + du[11]=((-is4/C)*charge4)*operate4 + du[12]=operate4*1e6* (-(-Il*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il5*(-0.00388 - rd5) + is5*rd5)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il6*(-0.00388 - rd6) + is6*rd6)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) + (-Il*(rpr + rr + 4.53e-7v) + il4*(-0.00388 - rd4) + is4*rd4)*(0.19607843137254904 + (-0.0042 - 0.453x) / (5.1(5.1251999999999995 + 2.718x)))) + + du[13] =((-(R1+rs5+rd5)*is5+rd5*il5+uc5)/L1)*operate5#*charge3 + du[14]=((-is5/C)*charge5)*operate5 + du[15]=operate5*1e6* (-(-Il*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il4*(-0.00388 - rd4) + is4*rd4)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il6*(-0.00388 - rd6) + is6*rd6)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) + (-Il*(rpr + rr + 4.53e-7v) + il5*(-0.00388 - rd5) + is5*rd5)*(0.19607843137254904 + (-0.0042 - 0.453x) / (5.1(5.1251999999999995 + 2.718x)))) + + du[16] =((-(R1+rs6+rd6)*is6+rd6*il6+uc6)/L1)*operate6#*charge3 + du[17]=((-is6/C)*charge6)*operate6 + du[18]=operate6*1e6* (-(-Il*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il4*(-0.00388 - rd4) + is4*rd4)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il5*(-0.00388 - rd5) + is5*rd5)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) + (-Il*(rpr + rr + 4.53e-7v) + il6*(-0.00388 - rd6) + is6*rd6)*(0.19607843137254904 + (-0.0042 - 0.453x) / (5.1(5.1251999999999995 + 2.718x)))) + + + du[19]=v # =u[20] + du[20]=F/m + + if t-0.0003>0.0 + operate4=1.0 + end + + if t-0.0007>0.0 + operate5=1.0 + end + if t-0.001>0.0 + operate6=1.0 + end + + if -(uc1)>0.0 + charge1=0.0 # rs off not needed since charge=0 + rs1=ROff; + rd1=ROn; + uc1=0.0 + #= uc1=0.0; + is1=0.0 =# + end + if -(uc2)>0.0 + charge2=0.0 + rs2=ROff; + rd2=ROn; + #@show rd2 + uc2=0.0 + + end + + if -(uc3)>0.0 + charge3=0.0 + rs3=ROff; + rd3=ROn; + uc3=0.0 + + end + if -(uc4)>0.0 + charge4=0.0 + rs4=ROff; + rd4=ROn; + uc4=0.0 + + end + + if -(uc5)>0.0 + charge5=0.0 + rs5=ROff; + rd5=ROn; + uc5=0.0 + + end + if -(uc6)>0.0 + charge6=0.0 + rs6=ROff; + rd6=ROn; + uc6=0.0 + + end + + if -(il1)>0.0 + operate1=0.0 + il1=0.0 + end + if -(il2)>0.0 + operate2=0.0 + il2=0.0 + end + if -(il3)>0.0 + operate3=0.0 + il3=0.0 + end + if -(il4)>0.0 + operate4=0.0 + il4=0.0 + end + + if -(il5)>0.0 + operate5=0.0 + il5=0.0 + end + if -(il6)>0.0 + operate6=0.0 + il6=0.0 + end + + + + + if t-nextT>0 + manualIntg=manualIntg+v/sqrt(t[0]) + nextT=nextT+1e-3 + + end + + end + + ) + # @show odeprob + println("start solving") + tspan = (0.0, 5.0e-3) + sol= solve(odeprob,nmliqss1(),tspan,abstol=1e-3,reltol=1e-2) + # sol= solve(odeprob,nmliqss1(),tspan,abstol=1e-3,reltol=1e-2) + save_Sol(sol,1) + save_Sol(sol,2) + save_Sol(sol,3) + + save_Sol(sol,4) + save_Sol(sol,5) + save_Sol(sol,6) + + save_Sol(sol,7) + save_Sol(sol,8) + save_Sol(sol,9) + + save_Sol(sol,10) + save_Sol(sol,11) + save_Sol(sol,12) + + save_Sol(sol,13) + save_Sol(sol,14) + save_Sol(sol,15) + save_Sol(sol,16) + save_Sol(sol,17) + save_Sol(sol,18) + # save_Sol(sol,9,note="z1",xlims=(0.0,0.2e-8),ylims=(-0.005,0.005)) + save_SolSum(sol,3,6,9,12,15,18,interp=0.00001) #add interpl preference + + save_Sol(sol,19) + save_Sol(sol,20) + +end +#@btime +test(4.2*1e-9) diff --git a/test/systemsTests/railGun/railgunElectrical_AllCircuit_6stages.jl b/test/systemsTests/railGun/railgunElectrical_AllCircuit_6stages.jl new file mode 100644 index 0000000..32933bc --- /dev/null +++ b/test/systemsTests/railGun/railgunElectrical_AllCircuit_6stages.jl @@ -0,0 +1,224 @@ +using QuantizedSystemSolver +using BenchmarkTools +function test() + + odeprob = @NLodeProblem begin + name=(RGElectrical6,) + ROn = 1e-5;ROff = 1e1; + Lpr = 4.2*1e-9#0.48*1e-6#0.45 * 1e-6 +L1 = 0.6*1e-4 #28.0*1e-6#0.6*1e-6 +#L2 = 4.0e-6;L3 = 1.1*1e-6 +L23=5.1e-6 + +R1= 4.0e-3; R2 = 0.28*1e-3;R3 = 3.6*1e-3 + +C = 3.08*1e-3#3.08*1e-3 + +m=0.12 +γ = 50.0*1e6; w = 15.0*1e0#25.0*1e-3#15.0*1e-3 +μ = 4.0*3.14*1e-7 +Rpr0 = 1.5*1e-6 +FNmec = 680.0; α = 0.154 +rs11=1e-5;rs21=1e-5;rs31=1e-5;rs41=1e-5;;rs51=1e-5;rs61=1e-5; +t0=1.0 + + discrete = [1e5,1.0,1.0,1e5,1.0,1.0,1e5,1.0,1.0,1e5,0.0,1.0,1e5,0.0,1.0,1e5,0.0,1.0,0.0,1e-3,1e-5,1e-5,1e-5,1e-5,1e-5,1e-5];u = [0.0,10750.0,0.0,0.0,10750.0,0.0,0.0,10750.0,0.0,0.0,10750.0,0.0,0.0,10750.0,0.0,0.0,10750.0,0.0,0.0,0.0] + + rd1=discrete[1]; operate1=discrete[2];charge1=discrete[3]; + rd2=discrete[4];operate2=discrete[5];charge2=discrete[6]; + rd3=discrete[7];operate3=discrete[8]; charge3=discrete[9]; + rd4=discrete[10];operate4=discrete[11]; charge4=discrete[12]; + rd5=discrete[13];operate5=discrete[14]; charge5=discrete[15]; + rd6=discrete[16];operate6=discrete[17]; charge6=discrete[18]; + manualIntg=discrete[19]; nextT=discrete[20];rs1=discrete[21];rs2=discrete[22];rs3=discrete[23];rs4=discrete[24];rs5=discrete[25];rs6=discrete[26]; + is1=u[1] ;uc1=u[2]; il1=u[3] ;is2=u[4] ;uc2=u[5]; il2=u[6] ;is3=u[7] ;uc3=u[8]; il3=u[9] ;is4=u[10] ;uc4=u[11]; il4=u[12];is5=u[13] ;uc5=u[14]; il5=u[15] ;is6=u[16] ;uc6=u[17]; il6=u[18] ;x=u[19]; v=u[20] + #α=LR+Lpr; + # RR=4.0e-5 + rr=manualIntg*2.0*sqrt(μ/(3.14*γ))/w + rpr=Rpr0*(sqrt(t0/(t+1e-4))+(t/t0)^16)/(1.0+(t/t0)^16) + + #= rrpp=(rpr + rr + 4.53e-7v) + x1=(132.97872599999997 + 35.34758999999999x) + x2=(-0.10924199999999998 - 11.782529999999998x) + x3=678.7486367999996 + 240.3636119999999x - 8.881784197001252e-16(x^2) + rd11=(-0.00388 - rd1);rd22=(-0.00388 - rd2);rd33=(-0.00388 - rd3);rd44=(-0.00388 - rd4) =# + Il=il1+il2+il3+il4+il5+il6 + uf=0.1+0.2*exp(-v/100) + F=0.5*0.453e-6*Il*Il*(1-uf*0.124)-uf*FNmec + du[1] =((-(R1+rs1+rd1)*is1+rd1*il1+uc1)/L1)#*operate1 + du[2]=(-is1/C)*charge1#*operate1 + du[3]=operate1*1e6* ( -(-Il*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il4*(-0.00388 - rd4) + is4*rd4)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il5*(-0.00388 - rd5) + is5*rd5)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il6*(-0.00388 - rd6) + is6*rd6)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) + (-Il*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*(0.19607843137254904 + (-0.0042 - 0.453x) / (5.1(5.1251999999999995 + 2.718x)))) + + + du[4] =((-(R1+rs2+rd2)*is2+rd2*il2+uc2)/L1)*operate2 + du[5]=(-is2/C)*charge2*operate2 + du[6]=operate2*1e6* ( -(-Il*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il4*(-0.00388 - rd4) + is4*rd4)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il5*(-0.00388 - rd5) + is5*rd5)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il6*(-0.00388 - rd6) + is6*rd6)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) + (-Il*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*(0.19607843137254904 + (-0.0042 - 0.453x) / (5.1(5.1251999999999995 + 2.718x))) ) + + du[7] =((-(R1+rs3+rd3)*is3+rd3*il3+uc3)/L1)*operate3#*charge3 + du[8]=((-is3/C)*charge3)*operate3 + du[9]=operate3*1e6* (-(-Il*(rpr + rr + 4.53e-7v) + il4*(-0.00388 - rd4) + is4*rd4)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il5*(-0.00388 - rd5) + is5*rd5)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il6*(-0.00388 - rd6) + is6*rd6)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) + (-Il*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*(0.19607843137254904 + (-0.0042 - 0.453x) / (5.1(5.1251999999999995 + 2.718x))) ) + + du[10] =((-(R1+rs4+rd4)*is4+rd4*il4+uc4)/L1)*operate4#*charge3 + du[11]=((-is4/C)*charge4)*operate4 + du[12]=operate4*1e6* (-(-Il*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il5*(-0.00388 - rd5) + is5*rd5)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il6*(-0.00388 - rd6) + is6*rd6)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) + (-Il*(rpr + rr + 4.53e-7v) + il4*(-0.00388 - rd4) + is4*rd4)*(0.19607843137254904 + (-0.0042 - 0.453x) / (5.1(5.1251999999999995 + 2.718x)))) + + du[13] =((-(R1+rs5+rd5)*is5+rd5*il5+uc5)/L1)*operate5#*charge3 + du[14]=((-is5/C)*charge5)*operate5 + du[15]=operate5*1e6* (-(-Il*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il4*(-0.00388 - rd4) + is4*rd4)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il6*(-0.00388 - rd6) + is6*rd6)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) + (-Il*(rpr + rr + 4.53e-7v) + il5*(-0.00388 - rd5) + is5*rd5)*(0.19607843137254904 + (-0.0042 - 0.453x) / (5.1(5.1251999999999995 + 2.718x)))) + + du[16] =((-(R1+rs6+rd6)*is6+rd6*il6+uc6)/L1)*operate6#*charge3 + du[17]=((-is6/C)*charge6)*operate6 + du[18]=operate6*1e6* (-(-Il*(rpr + rr + 4.53e-7v) + il3*(-0.00388 - rd3) + is3*rd3)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il4*(-0.00388 - rd4) + is4*rd4)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il5*(-0.00388 - rd5) + is5*rd5)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il1*(-0.00388 - rd1) + is1*rd1)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) - (-Il*(rpr + rr + 4.53e-7v) + il2*(-0.00388 - rd2) + is2*rd2)*((0.0042 + 0.453x) / (5.1(5.1251999999999995 + 2.718x))) + (-Il*(rpr + rr + 4.53e-7v) + il6*(-0.00388 - rd6) + is6*rd6)*(0.19607843137254904 + (-0.0042 - 0.453x) / (5.1(5.1251999999999995 + 2.718x)))) + + + du[19]=v # =u[20] + du[20]=F/m + + if t-0.0003>0.0 + operate4=1.0 + end + + if t-0.0007>0.0 + operate5=1.0 + end + if t-0.001>0.0 + operate6=1.0 + end + + if -(uc1)>0.0 + charge1=0.0 # rs off not needed since charge=0 + rs1=ROff; + rd1=ROn; + uc1=0.0 + #= uc1=0.0; + is1=0.0 =# + end + if -(uc2)>0.0 + charge2=0.0 + rs2=ROff; + rd2=ROn; + #@show rd2 + uc2=0.0 + + end + + if -(uc3)>0.0 + charge3=0.0 + rs3=ROff; + rd3=ROn; + uc3=0.0 + + end + if -(uc4)>0.0 + charge4=0.0 + rs4=ROff; + rd4=ROn; + uc4=0.0 + + end + + if -(uc5)>0.0 + charge5=0.0 + rs5=ROff; + rd5=ROn; + uc5=0.0 + + end + if -(uc6)>0.0 + charge6=0.0 + rs6=ROff; + rd6=ROn; + uc6=0.0 + + end + + if -(il1)>0.0 + operate1=0.0 + il1=0.0 + end + if -(il2)>0.0 + operate2=0.0 + il2=0.0 + end + if -(il3)>0.0 + operate3=0.0 + il3=0.0 + end + if -(il4)>0.0 + operate4=0.0 + il4=0.0 + end + + if -(il5)>0.0 + operate5=0.0 + il5=0.0 + end + if -(il6)>0.0 + operate6=0.0 + il6=0.0 + end + + + + + if t-nextT>0 + manualIntg=manualIntg+v/sqrt(t[0]) + nextT=nextT+1e-3 + + end + + + + end + # @show odeprob + println("start solving") + tspan = (0.0, 5.0e-3) + sol= solve(odeprob,nmliqss1(),tspan,abstol=1e-3,reltol=1e-2) + # sol= solve(odeprob,nmliqss1(),tspan,abstol=1e-3,reltol=1e-2) + save_Sol(sol,1) + save_Sol(sol,2) + save_Sol(sol,3) + + save_Sol(sol,4) + save_Sol(sol,5) + save_Sol(sol,6) + + save_Sol(sol,7) + save_Sol(sol,8) + save_Sol(sol,9) + + save_Sol(sol,10) + save_Sol(sol,11) + save_Sol(sol,12) + + save_Sol(sol,13) + save_Sol(sol,14) + save_Sol(sol,15) + save_Sol(sol,16) + save_Sol(sol,17) + save_Sol(sol,18) + # save_Sol(sol,9,note="z1",xlims=(0.0,0.2e-8),ylims=(-0.005,0.005)) + save_SolSum(sol,3,6,9,12,15,18,interp=0.00001) #add interpl preference + + save_Sol(sol,19) + save_Sol(sol,20) + +end +#@btime +test() + +function convert(par) + exp_as_str = " a = $par" + + exp = Meta.parse(exp_as_str) + + return exp +end + +exp = convert(156) + +function test(exp) + println(exp) +end + +test(convert(6)) \ No newline at end of file diff --git a/test/systemsTests/trashTest/trashtest.jl b/test/systemsTests/trashTest/trashtest.jl index 59de4ed..8f8eedc 100644 --- a/test/systemsTests/trashTest/trashtest.jl +++ b/test/systemsTests/trashTest/trashtest.jl @@ -1,7 +1,9 @@ -using Symbolics +#= using Symbolics @variables t x y D = Differential(t) z = t + t^2 @show D(z) # symbolic representation of derivative(t + t^2, t) + =# +