Discussion Closed This discussion was created more than 6 months ago and has been closed. To start a new discussion with a link back to this one, click here.

Optimization of electro-acoustic eigen-problem

Please login with a confirmed email address before reporting spam

Hi all,

I'm trying to use optimization study to find the correct Young's modulus of diaphragm. I have a loudspeaker model and a target resonance frequency, let’s say it’s 200 Hz.

Then I used a study with two steps: optimization and eigenfrequency. In optimization, the objection function is (sqrt(realdot(freq,freq))-200[Hz])^2, the method is BOBYQA, and the control variable is DP_E which has lower-bound 5 [MPa] and upper-bound 500 [MPa]. In the characteristic frequency, I set it to find only one eigenfrequency which closest to 200 [Hz].

However, the optimized DP_E sometimes gave me the modulus that SECOND eigenfrequency is 200 [Hz] instead of FIRST eigenfrequency is 200 [Hz], so the DP_E always smaller than real value.

I'm wondering if there is a better way to use optimization to find Young's modulus, thank you.

P.S. Sorry that I'm not an English-native person so sometimes my grammer is not that good.


3 Replies Last Post 24.03.2022, 04:53 GMT-4
Acculution ApS Certified Consultant

Please login with a confirmed email address before reporting spam

Posted: 3 years ago 21.12.2021, 05:16 GMT-5

I think you need to use the 'with' operator to grab hold on the first eigenvalue; see documentation or below:

WITH • The with operator can access specific solutions during results evaluation. • For time-dependent problems, parametric problems, and eigenvalue problems, this makes it possible to use the solution at any of the time steps, any parameter value, or any eigensolution in an expression used for plotting or data evaluation. To evaluate a sum (average) of displacement for the first six eigenmodes above the rigid-body modes in a 3D solid mechanics model, for example, use sum(with(m,(1/(m+1))*solid.disp),m,7,12), where m is the summation index, summing the displacements, divided by m+1 to form the average, from eigenmode 7 to eigenmode 12. • Use the solution number as the first input argument. The second input argument is the expression that you want to evaluate using this solution. For example, with(3,u^2) provides the square of the third eigensolution for an eigenvalue problem. • You can also use 'first' or 'last' as the first argument to evaluate an expression at the first or last time of the simulation, respectively. • For example, you can use the with operator to verify that two eigensolutions are orthogonal or to compare two solutions at different time steps or parameter values. • If you want to use the with operator for a parametric problem, you should use a Parametric solver instead of a Parametric Sweep. • The with operator can only be used during results evaluation, so you cannot use it when setting up the model. See also withsol for a more general operator.

-------------------
René Christensen, PhD
Acculution ApS
www.acculution.com
info@acculution.com
I think you need to use the 'with' operator to grab hold on the first eigenvalue; see documentation or below: WITH • The with operator can access specific solutions during results evaluation. • For time-dependent problems, parametric problems, and eigenvalue problems, this makes it possible to use the solution at any of the time steps, any parameter value, or any eigensolution in an expression used for plotting or data evaluation. To evaluate a sum (average) of displacement for the first six eigenmodes above the rigid-body modes in a 3D solid mechanics model, for example, use sum(with(m,(1/(m+1))*solid.disp),m,7,12), where m is the summation index, summing the displacements, divided by m+1 to form the average, from eigenmode 7 to eigenmode 12. • Use the solution number as the first input argument. The second input argument is the expression that you want to evaluate using this solution. For example, with(3,u^2) provides the square of the third eigensolution for an eigenvalue problem. • You can also use 'first' or 'last' as the first argument to evaluate an expression at the first or last time of the simulation, respectively. • For example, you can use the with operator to verify that two eigensolutions are orthogonal or to compare two solutions at different time steps or parameter values. • If you want to use the with operator for a parametric problem, you should use a Parametric solver instead of a Parametric Sweep. • The with operator can only be used during results evaluation, so you cannot use it when setting up the model. See also withsol for a more general operator.

Please login with a confirmed email address before reporting spam

Posted: 3 years ago 02.01.2022, 22:35 GMT-5
Updated: 3 years ago 02.01.2022, 22:35 GMT-5

I'll try this way :) Thank you very much!

I'll try this way :) Thank you very much!

Please login with a confirmed email address before reporting spam

Posted: 3 years ago 24.03.2022, 04:53 GMT-4

Hello,

I tried this way but got some troubles:

My objective function is min. (withsol('sol1',freq,setind(lambda,1))-500[Hz])^2 and control parameter is DP_E which means Young's modulus of diaphragm. But the optimized result didn't change, it's still the same as the initial DP_E. Did I miss something?

Thank you in advanced.

Hello, I tried this way but got some troubles: My objective function is min. (withsol('sol1',freq,setind(lambda,1))-500[Hz])^2 and control parameter is DP_E which means Young's modulus of diaphragm. But the optimized result didn't change, it's still the same as the initial DP_E. Did I miss something? Thank you in advanced.

Note that while COMSOL employees may participate in the discussion forum, COMSOL® software users who are on-subscription should submit their questions via the Support Center for a more comprehensive response from the Technical Support team.