diff --git a/core/component/Capacitor.m b/core/component/Capacitor.m index f4f787beca3d3662c02cd874a7702a94c5dfe861..93d6efb8f697396381e6eecb3c74344dd8ad1846 100644 --- a/core/component/Capacitor.m +++ b/core/component/Capacitor.m @@ -11,6 +11,7 @@ classdef Capacitor < Component properties (Dependent) gap0 c0 + area end methods @@ -55,8 +56,11 @@ classdef Capacitor < Component end function c = get.c0(obj) - area = min(obj.electrodeA.area,obj.electrodeB.area); - c = obj.eps0 * area/obj.gap0; + c = obj.eps0 * obj.area/obj.gap0; + end + + function a = get.area(obj) + a = min(obj.electrodeA.area,obj.electrodeB.area); end function f = force(obj, V) @@ -66,6 +70,27 @@ classdef Capacitor < Component function v = voltage_from_force(obj, f) v = sqrt(f * 2* obj.gap0/obj.c0 ); end + + function F = force_from_CPD(obj, varargin) + %CPDNOISE Summary of this function goes here + % see Speake & Trenkel 2003 + varvoltrms = 100e-3; + + if length(varargin) == 1 + varvoltrms = varargin{1}; + end + + kpeak = 1.3/obj.gap0; + kmax = 1.2*kpeak; + kmin = 0.8*kpeak; + + func = @(k) k.^3 ./(sinh(obj.gap0.*k)).^2; + intr = integral(func,kmin,kmax); + + fp = -2*obj.eps0*(varvoltrms)^2*intr/(kmax^2 - kmin^2); + F = abs(fp*obj.area); + end end end + diff --git a/core/component/TIA.slx b/core/component/TIA.slx index 37f58913a44dce7c0220ded2fcdc40526fb2ea69..0eb04088d2c6b958642d8e6aeb1eb34b866f6285 100644 Binary files a/core/component/TIA.slx and b/core/component/TIA.slx differ diff --git a/core/component/capBridge.slx b/core/component/capBridge.slx index 3da9713153bce64484758e365561627dc6c8d6ff..5324e863b3cfd5944e540fc8817b8f819f0090d7 100644 Binary files a/core/component/capBridge.slx and b/core/component/capBridge.slx differ diff --git a/core/component/electrode.slx b/core/component/electrode.slx index f70e792e624f733ef122f48e9b10700ba158ce4a..e7f7ed1cafec168188be0c63873014bd28c2bc6a 100644 Binary files a/core/component/electrode.slx and b/core/component/electrode.slx differ diff --git a/core/component/ifo.slx b/core/component/ifo.slx index 988be24f79efad50fdaca4362884159adbd6249f..779059456bada1de41bac4d70d9b42f881e7e5ac 100644 Binary files a/core/component/ifo.slx and b/core/component/ifo.slx differ diff --git a/core/component/planeCapacitor.slx b/core/component/planeCapacitor.slx index cd2fc830f92a1dfa25e30670808e9fc88f82c2b7..2d870056372b16cb103ad6750d293ae5c41b1bbd 100644 Binary files a/core/component/planeCapacitor.slx and b/core/component/planeCapacitor.slx differ diff --git a/core/dynamics/dblIntTransFS.slx b/core/dynamics/dblIntTransFS.slx index 1065dd24c16016689b7e0ab01af06c15423a4871..92dd87dda29c09f7a2f5eca76c72b9c35a8b892a 100644 Binary files a/core/dynamics/dblIntTransFS.slx and b/core/dynamics/dblIntTransFS.slx differ diff --git a/core/dynamics/dblIntTransVS.slx b/core/dynamics/dblIntTransVS.slx index 035ffc5eec72dcd8cac83535355b3d7fd6416597..ca93343c5ed28e43ffa78e6f29e4a104d4cadaaa 100644 Binary files a/core/dynamics/dblIntTransVS.slx and b/core/dynamics/dblIntTransVS.slx differ diff --git a/core/libAcme.slx b/core/libAcme.slx index d7067c661c7de9410895b17c6e6fc2c27922a841..3cc0fa3e35e58c529357d4de240caa27ca9a34c3 100644 Binary files a/core/libAcme.slx and b/core/libAcme.slx differ diff --git a/core/noises/CPDnoise.m b/core/noises/CPDnoise.m new file mode 100644 index 0000000000000000000000000000000000000000..1031a142100ae593acb281d9680fc370aa5045cd --- /dev/null +++ b/core/noises/CPDnoise.m @@ -0,0 +1,19 @@ +function fp = CPDnoise(varvoltrms, gap) +%CPDNOISE Summary of this function goes here +% Detailed explanation goes here +eps0 = 8.8e-12; + +kpeak = 1.3/gap; + +kmax = 1.2*kpeak; +kmin = 0.8*kpeak; + +func = @(k) k.^3./(sinh(gap.*k)).^2; + +intr = integral(func,kmin,kmax); + +fp = -2*eps0*(varvoltrms)^2*intr/(kmax^2 - kmin^2); + + +end + diff --git a/core/sensors/diffTransformer.slx b/core/sensors/diffTransformer.slx index d3926c3b8c37386847ada5490a4836c086e1402e..ed44eed35b7439c19253d24335c3b28104a935e8 100644 Binary files a/core/sensors/diffTransformer.slx and b/core/sensors/diffTransformer.slx differ diff --git a/core/sensors/lockIn.slx b/core/sensors/lockIn.slx index 6e77f2a669c34d4f4e36c171dbcf66e82419ad9e..3ae4b39b807c27da8b565e9a012dfbb09964e90a 100644 Binary files a/core/sensors/lockIn.slx and b/core/sensors/lockIn.slx differ diff --git a/simulations/Gradiometer/goceGradiometer.slx b/simulations/Gradiometer/goceGradiometer.slx index a47a116508e725c6bf5a93fca90e8940f373b262..f52ee460a1407b4c968c0e50bc017e0dda0e4195 100644 Binary files a/simulations/Gradiometer/goceGradiometer.slx and b/simulations/Gradiometer/goceGradiometer.slx differ diff --git a/simulations/LISA_EA/GRS.slx b/simulations/LISA_EA/GRS.slx index 573c63a335c5241334d83c54335ddca6580cc385..142a648abb4dfac215492496d910795a3b5cf6f0 100644 Binary files a/simulations/LISA_EA/GRS.slx and b/simulations/LISA_EA/GRS.slx differ diff --git a/simulations/LISA_EA/capSensor_complete.slx b/simulations/LISA_EA/capSensor_complete.slx index 32361ad22f7987ae19d479bed8c5b6bebc510b11..6ae6e1e7ce5867ef3e3e09427e69eee2d7a6a6f6 100644 Binary files a/simulations/LISA_EA/capSensor_complete.slx and b/simulations/LISA_EA/capSensor_complete.slx differ diff --git a/simulations/LISA_EA/capSensor_simplified.slx b/simulations/LISA_EA/capSensor_simplified.slx index 1a4dd052e2710ce2dc6a1fe2521038e5d4dc31f9..4c0af01d4c057da4924bd1488441ef5462a7bf84 100644 Binary files a/simulations/LISA_EA/capSensor_simplified.slx and b/simulations/LISA_EA/capSensor_simplified.slx differ diff --git a/simulations/SGRS/sgrs_acc.slx b/simulations/SGRS/sgrs_acc.slx index b2d64817ba0d0221945d53e8db0f7f292cebd289..200025e5a759830293d9f13d5fef9132fd8e3b9c 100644 Binary files a/simulations/SGRS/sgrs_acc.slx and b/simulations/SGRS/sgrs_acc.slx differ diff --git a/simulations/SGRS/sgrs_acc_script.m b/simulations/SGRS/sgrs_acc_script.m index b9150562fd97f43948d7ca1e49dd545b550bc800..1b76d639973d819ac94acc04c30623753942e3ab 100644 --- a/simulations/SGRS/sgrs_acc_script.m +++ b/simulations/SGRS/sgrs_acc_script.m @@ -6,18 +6,19 @@ % email: arthur.reis@aei.mpg.de % last review: 30.01.2023 clear; -acme = AcmeSim('sgrs_acc',1000,1000); +acme = AcmeSim('sgrs_acc',1e5,1e5); %% Accelerometer Parameters -side = 0.02; +side = 0.03; gap = 0.001; elSides = [side, side]; -% % If is drag-free: +density = 20099; +% % % If is drag-free: % driverGain = 0; % V_TM = 0.5; % Vp = 0; %V polarizing % Vx0 = 0; %V rms -% If is non-drag-free: +% If is non-drag-free:1000 driverGain = -20; V_TM = 0.5; Vp = 0; %V polarizing @@ -30,7 +31,7 @@ el2 = acme.addElectrode('electrode2', elSides, -side/2 , 0, V_TM, fCar); el3 = acme.addElectrode('electrode3', elSides, side/2 , 0, V_TM, fCar); el4 = acme.addElectrode('electrode4', elSides, +(side/2 + gap), 0, 0, fCar); -TM = acme.addTestMass('dblInt',0.4,gap,'mass',0.5); +TM = acme.addTestMass('dblInt',side,gap,'density',density); cap1 = acme.addCapacitor('planeCapacitor1', 'ElectrodePair', [el1, el2]); cap2 = acme.addCapacitor('planeCapacitor2', 'ElectrodePair', [el3, el4]); @@ -40,12 +41,16 @@ cap2 = acme.addCapacitor('planeCapacitor2', 'ElectrodePair', [el3, el4]); CapNoiseASD = @(f) 51e-9.*f.^0; %F/sqrt(hz) CapNoiseTS = acme.noiseTS(CapNoiseASD); +CPDnoiseASD = @(f) cap1.force_from_CPD(10e-3)*f.^0; %worst case +CPDnoiseTS = acme.noiseTS(CPDnoiseASD); Cf = 10e-12; %F -getSGRSCapSensorASD(acme, TM,1e-12,Cf,40,51e-9) +%getSGRSCapSensorASD(acme, TM,1e-12,Cf,40,51e-9) -f_nongrav = fxx_input_forces; -a_nongrav = axx_input_accelerations; +load('fxx_input_forces.mat'); +load('axx_input_accelerations'); +f_nongrav = fxx_input_forces; +a_nongrav = axx_input_accelerations; [a, v] = actuationRequirement(f_nongrav,a_nongrav,TM,cap1); ActuationNoiseASD = @(f) v * 1e-6*f.^0; %V/sqrt(hz) diff --git a/simulations/SGRS/sgrs_capSensor.slx b/simulations/SGRS/sgrs_capSensor.slx index 5536a3c55a2edf5af881acc2777bcc6b10f996fa..b631a94f133c31c102779c5befc2d1987b1dff43 100644 Binary files a/simulations/SGRS/sgrs_capSensor.slx and b/simulations/SGRS/sgrs_capSensor.slx differ diff --git a/simulations/Torsion Balance/untitled1.slx b/simulations/Torsion Balance/untitled1.slx index d4a8b22eee64a3e9b57206709205bb79c83f1fb4..741f3d88ffb885f6a5d77527f14d512c1d710e9d 100644 Binary files a/simulations/Torsion Balance/untitled1.slx and b/simulations/Torsion Balance/untitled1.slx differ diff --git a/simulations/Tutorial/ex_01_time_domain.slx b/simulations/Tutorial/ex_01_time_domain.slx index eb833047b6db87cb140eec2fd51acda6756e910c..59387c4f3616c8bdc636a31aa39b79caeacdef9a 100644 Binary files a/simulations/Tutorial/ex_01_time_domain.slx and b/simulations/Tutorial/ex_01_time_domain.slx differ diff --git a/simulations/Tutorial/ex_02_noise_generation.slx b/simulations/Tutorial/ex_02_noise_generation.slx index 52deb5f8f58da2b1f54e8312f0bd6ee35a6ce975..3a05d05153ea3ef1f5ec3cf92ff32c2f220a8311 100644 Binary files a/simulations/Tutorial/ex_02_noise_generation.slx and b/simulations/Tutorial/ex_02_noise_generation.slx differ diff --git a/simulations/Tutorial/ex_03_parametrization.slx b/simulations/Tutorial/ex_03_parametrization.slx index 7ee6729d26c5b7ce6f13910047be6a32b23cbea2..ee4c89fae138d1ecb519d7b806f653de4d584b21 100644 Binary files a/simulations/Tutorial/ex_03_parametrization.slx and b/simulations/Tutorial/ex_03_parametrization.slx differ diff --git a/simulations/Tutorial/ex_04_noisy_sensor.slx b/simulations/Tutorial/ex_04_noisy_sensor.slx index ddbbf84e4dc02f5ab0e7595da5b8d69c363a8638..4dba371777877dca62b5002f31d0f012a98d195c 100644 Binary files a/simulations/Tutorial/ex_04_noisy_sensor.slx and b/simulations/Tutorial/ex_04_noisy_sensor.slx differ diff --git a/simulations/Tutorial/ex_05a_noise_budget.slx b/simulations/Tutorial/ex_05a_noise_budget.slx index 559399e417cc86067af99701eae5d87ea3c1c70c..53e61c8086ba3dcfb08aedc0ade9474152603adc 100644 Binary files a/simulations/Tutorial/ex_05a_noise_budget.slx and b/simulations/Tutorial/ex_05a_noise_budget.slx differ diff --git a/simulations/Tutorial/ex_05b_noisebudget.slx b/simulations/Tutorial/ex_05b_noisebudget.slx index 8e84724460befc4fa578750403e6828662fd11cb..1d9c0dae2badfce7689485e4c87ea76a906b3a1e 100644 Binary files a/simulations/Tutorial/ex_05b_noisebudget.slx and b/simulations/Tutorial/ex_05b_noisebudget.slx differ diff --git a/simulations/ifoSGRS/sgrs_capSensor.slx b/simulations/ifoSGRS/sgrs_capSensor.slx index 3cf6e0204c79dfb8cd6b76ef921ac33db5ce1fc8..19ffeedcac6a945f9afb8ac74a3441fdcd636e9d 100644 Binary files a/simulations/ifoSGRS/sgrs_capSensor.slx and b/simulations/ifoSGRS/sgrs_capSensor.slx differ diff --git a/simulations/ifoSGRS/sgrs_ifoacc.slx b/simulations/ifoSGRS/sgrs_ifoacc.slx index 418bf7a90bcf48f394548e24d2cebb001f59752b..cc10e4cf859366acb96fefa5de2f6c6bc3a83c86 100644 Binary files a/simulations/ifoSGRS/sgrs_ifoacc.slx and b/simulations/ifoSGRS/sgrs_ifoacc.slx differ diff --git a/utils/SimulinkNbLite/SimulinkNb/NbLibrary.mdl b/utils/SimulinkNbLite/SimulinkNb/NbLibrary.mdl index f428b0061b2b5bfe15aeb2f72dec2598c08d9e3d..2d5a7435a538ce35dd86ea34ecb88e5c2c2404dd 100644 Binary files a/utils/SimulinkNbLite/SimulinkNb/NbLibrary.mdl and b/utils/SimulinkNbLite/SimulinkNb/NbLibrary.mdl differ diff --git a/utils/SimulinkNbLite/SimulinkNb/example/OLvsCL/OLvsCL.mdl b/utils/SimulinkNbLite/SimulinkNb/example/OLvsCL/OLvsCL.mdl index cd43bfb270557089a2fcf4ed3bb3953a775d5a13..c8a638fc9feff13364de15f9360106b3104647f6 100644 Binary files a/utils/SimulinkNbLite/SimulinkNb/example/OLvsCL/OLvsCL.mdl and b/utils/SimulinkNbLite/SimulinkNb/example/OLvsCL/OLvsCL.mdl differ diff --git a/utils/convert2OlderMatlab.m b/utils/convert2OlderMatlab.m index efc90d207feb3d8944b640a695ce21d9bd31debd..536b5137f1448d4d280e2c94d8fd2f292d4098c9 100644 --- a/utils/convert2OlderMatlab.m +++ b/utils/convert2OlderMatlab.m @@ -12,14 +12,14 @@ Simulink.exportToVersion(proj,'Acme_R2020a','R2020a'); unzip("Acme_R2020a.zip","acme-public") -commit_message = "v 0.2.2 changed constructor of TestMass and AcmeSim"; - -cd('acme-public/') +commit_message = "v 0.2.4 added CPD noise calculation"; +%% +cd('~/Documents/acme-public/') system('git add .') system(strcat('git commit -m "', commit_message, ' "')) system('git push') - -cd('../acme/') +%% +cd('~/Documents/acme/') system('git add .') system(strcat('git commit -m "', commit_message, ' "')) system('git push')