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.

Two different solvers act simultaneously in one multiphysics model

Please login with a confirmed email address before reporting spam

I have a Multiphysics model consisting of a solid stress-strain subdomain to be solved in frequency domain (Eigenfrequency analysis) and a Time-dependent PDE (subdomain) in general form which is supposed to be solved in time domain. In fact the solution of Eigenfrequency analysis gives the initial conditions of the PDE in different time steps.

Now, my big problem is that I cannot define two different solvers for my problem. I am force to choose either Eigenfrequency solver or Time dependent solver (NOT both). So I cannot solve my problem, because I need eigenfrequency solver for solving the first part, and then time dependent solver for solving the PDE.

Could you please let me know how I can fix this problem? I mean how I can specify different solvers for different subdomains, involved in a multiphysics model.

Thank you

4 Replies Last Post 18 lug 2009, 18:47 GMT-4

Please login with a confirmed email address before reporting spam

Posted: 2 decades ago 14 lug 2009, 04:42 GMT-4
Dear Masoud,
if I have correctly understood, your problem is only one-way coupled, that is, the solution of the eigenfrequency analysis becomes the starting point of the time dependent problem.
If this is your case, then there is no need to solve the problem simultaneously, but just in a sequential fashion.
You first solve the eigenfrequency problem and its solution will become the "current solution".
Then you go in the solver manager and choose the current solution option. In this way, the time dependent solver will start from the eigenvalue solution.
In case you want to start, for instance, from the third eigenvector instead of the first one, once you have obtained the eigenvalue solution, you have to go in the solver manager and press the command "store solution...". In this way you can choose which is the eigenvector you want to start from.
Then select the stored solution option and go in "solve/get initial value" to make the stored solution become the current one. After that, make the time dependent solver start from the current solution as I have reported above.
Pay attention anyway to the fact that that eigenvalues and eigenvectors are normalized which means that probably the displacements and so on, have no physical meaning and therefore they cannot be employed as they are in the time dependent step.
You need in fact to first re-normalize the eigensolution to get the desired displacements in order to make the time-dependent solver start with initial values with a "physical" meaning.
If you are interested in this point, I can give you some hints in some next post.
Hi.

Alessandro

Dear Masoud, if I have correctly understood, your problem is only one-way coupled, that is, the solution of the eigenfrequency analysis becomes the starting point of the time dependent problem. If this is your case, then there is no need to solve the problem simultaneously, but just in a sequential fashion. You first solve the eigenfrequency problem and its solution will become the "current solution". Then you go in the solver manager and choose the current solution option. In this way, the time dependent solver will start from the eigenvalue solution. In case you want to start, for instance, from the third eigenvector instead of the first one, once you have obtained the eigenvalue solution, you have to go in the solver manager and press the command "store solution...". In this way you can choose which is the eigenvector you want to start from. Then select the stored solution option and go in "solve/get initial value" to make the stored solution become the current one. After that, make the time dependent solver start from the current solution as I have reported above. Pay attention anyway to the fact that that eigenvalues and eigenvectors are normalized which means that probably the displacements and so on, have no physical meaning and therefore they cannot be employed as they are in the time dependent step. You need in fact to first re-normalize the eigensolution to get the desired displacements in order to make the time-dependent solver start with initial values with a "physical" meaning. If you are interested in this point, I can give you some hints in some next post. Hi. Alessandro

Please login with a confirmed email address before reporting spam

Posted: 2 decades ago 14 lug 2009, 11:27 GMT-4
Hi Alessandro!

Thank you very much for your very interesting points.

You are totally right. I do not need to solve the problem simultaneously. But since I want to solve the PDE for a fairly long time, I need to do this process automatically, and I cannot do it step by step by hand. I have not worked with COMSOL script, but I think I need to program my problem with COMSOL script. Do you have any clue about the commands I need to use?
You also pointed out a very great point about normalized modes. Because I want to compare say the largest displacement of the system in the first mode for different conditions (I will change one specific parameter of the system to check its effects on the vibration of the system). If the modes get normalized, I will not have a meaningful touchstone for doing my comparison. Is there any way that I prevent COMSOL from normalizing the modes? the other remedy, hoe can I re-normalize the eigensolution to get the desired displacements?

I am very much interested in your points, so I will greatly appreciate it, if you could please give me some more hints in the next post.

Regards,
Masoud
Hi Alessandro! Thank you very much for your very interesting points. You are totally right. I do not need to solve the problem simultaneously. But since I want to solve the PDE for a fairly long time, I need to do this process automatically, and I cannot do it step by step by hand. I have not worked with COMSOL script, but I think I need to program my problem with COMSOL script. Do you have any clue about the commands I need to use? You also pointed out a very great point about normalized modes. Because I want to compare say the largest displacement of the system in the first mode for different conditions (I will change one specific parameter of the system to check its effects on the vibration of the system). If the modes get normalized, I will not have a meaningful touchstone for doing my comparison. Is there any way that I prevent COMSOL from normalizing the modes? the other remedy, hoe can I re-normalize the eigensolution to get the desired displacements? I am very much interested in your points, so I will greatly appreciate it, if you could please give me some more hints in the next post. Regards, Masoud

Please login with a confirmed email address before reporting spam

Posted: 2 decades ago 15 lug 2009, 05:15 GMT-4
Dear Masoud,
I think that, with the latest version of Comsol (i.e. Comsol 3.5a), you can make the automation you want without using an external script. Just go in the solver manager and select the sequence tab. Set the solver properly according to your problem and then save the sequence and drag in on the right (in the solver sequence field). Once you have set all your sequences, you activate the option "solve using solver sequence". Then press "solve" and the problem is solved according to your specification. In any case, within Comsol, there is some good tutorial about how to use the sequence tab.
For what concerns eigenvalue normalization, I think there's no way to avoid it. You simply have to re-normalize your solution.
Suppose that you want the maximum displacement of the third eigenmode to be equal, let's say, to 10 cm.
You first run your eigenfrequency analysis normally and then manipulate the solution. To do this you have first to make the third eigenmode be your current solution (to do this look at my previous post).
After that you go in init tab the subdomain settings of your structural mechanics appl. mode. If you are working in 3d, you will probably have u v w as displacement components. Now, in the u field (as well as in the other fields related to displacement) you write: u/max(u)*1e-2, where max(u) is the value, that you can read in the post-processing, of the maximum displacement of your mode.
After having scaled all your displacements you go in the solver mager and select "initial value expression evaluated using current solution" and then do "solve/get initial value".
In this way the software reads the init tab of your structural mechanics module and scales the solution accordingly.
Now your current solution is still the third eigenmode, but it is scaled according to your specifications.
That'all.
I hope this help.

Hi!

Alessandro
Dear Masoud, I think that, with the latest version of Comsol (i.e. Comsol 3.5a), you can make the automation you want without using an external script. Just go in the solver manager and select the sequence tab. Set the solver properly according to your problem and then save the sequence and drag in on the right (in the solver sequence field). Once you have set all your sequences, you activate the option "solve using solver sequence". Then press "solve" and the problem is solved according to your specification. In any case, within Comsol, there is some good tutorial about how to use the sequence tab. For what concerns eigenvalue normalization, I think there's no way to avoid it. You simply have to re-normalize your solution. Suppose that you want the maximum displacement of the third eigenmode to be equal, let's say, to 10 cm. You first run your eigenfrequency analysis normally and then manipulate the solution. To do this you have first to make the third eigenmode be your current solution (to do this look at my previous post). After that you go in init tab the subdomain settings of your structural mechanics appl. mode. If you are working in 3d, you will probably have u v w as displacement components. Now, in the u field (as well as in the other fields related to displacement) you write: u/max(u)*1e-2, where max(u) is the value, that you can read in the post-processing, of the maximum displacement of your mode. After having scaled all your displacements you go in the solver mager and select "initial value expression evaluated using current solution" and then do "solve/get initial value". In this way the software reads the init tab of your structural mechanics module and scales the solution accordingly. Now your current solution is still the third eigenmode, but it is scaled according to your specifications. That'all. I hope this help. Hi! Alessandro

Please login with a confirmed email address before reporting spam

Posted: 2 decades ago 18 lug 2009, 18:47 GMT-4
Thanks a lot Alessandro. I really appreciate your valuable points.

I will try to see if I can solve my problem without scripting. However, about normalized modes, I think re-normalizing is not a remedy for my issue, since I need to know the strain energy of un-normalized system. So renormalization of the modes does not return them to the un-normalized condition. I may change my problem (objective) in a way that I can work with normalized modes.

Thank you again.

All the best,
Masoud
Thanks a lot Alessandro. I really appreciate your valuable points. I will try to see if I can solve my problem without scripting. However, about normalized modes, I think re-normalizing is not a remedy for my issue, since I need to know the strain energy of un-normalized system. So renormalization of the modes does not return them to the un-normalized condition. I may change my problem (objective) in a way that I can work with normalized modes. Thank you again. All the best, Masoud

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.