Discussion Locked This discussion was locked by a forum moderator.
Variables & Functions in Comsol 4.1
Posted Mar 22, 2011, 6:56 p.m. EDT Version 5.2a 14 Replies
Please login with a confirmed email address before reporting spam
I am trying to do something very simple that worked perfectly in 3.5a, but that I cannot reproduce in 4.1. I have the feeling that I am totally missing something, but I do not know what.
I define a global variable, myVar, and want to use it in a global function, myFun. The function myFun does not recognize the variable myVar (when plotting the function). Why???
Next, I want to use this function (which is a function of time) to define a boundary load (Model 1>Solid Mechanics>Boundary load 1). But the function is not recognized (it stays orange). Why???
I have put the example as attachment.
Thanks for any help.
Alois Pfenniger
Attachments:
Please login with a confirmed email address before reporting spam
there are the color code that Mostly works OK, but sometimes need a solve initialisation, or a refresch such as exciting and reentering a node to get updated.
The colors are orange for unit errors, and red for typos (missing (), undefined variables ...)
Then there are a few things to learn:
operators and functions require unitless entries (and return unitless)
hence if you wanf to use myFunc(myVar) as a force input in Newtons, you should write:
1[N]*myfunc(myVar[1/myVar_Units])
or just
myfunc(myVar[1/myVar_Units])[N]
if myVar are in microns, and you write myVar[1/m] then the microns are scaled to meters and entered into the function as meter value, but without units
Then another point: if you have solved a model, and you add some operators, these are not understood by the Results section before you have "updated the solver" or done a full new "Solve". Therefore they are not accessible and flagged as unknown in a postprocessing sequence.
Finally, if you leave the mouse pointer over a variable field with an error, normally COMSOL will tell you the error it detected, in a small popup
--
Good luck
Ivar
Please login with a confirmed email address before reporting spam
Thanks for your answer. I get the point with the use of functions that require unitless entries :-)
The point concerning the use of a variable in a function was maybe not explained correctly. Here is what I want to do:
In global variables:
myVar=100
In global functions:
myFun(t)=myVar*t
Now when I want to plot the function myFun over the interval [0 1], I get the following error message:
Undefined variable
-Variable: myVar
-Function: myFun
-Plot: previewplot1 (Line graph)
-Function: myFun
If you open the file attached to my first post, you should be able to reproduce this behaviour. It seems that it is not possible to define a variable and to use it as a constant in a function?
Thanks.
Alois
Please login with a confirmed email address before reporting spam
The problem is the use of a Global Variable in the Analytic function. Analytic functions take one or more argument that you define directly in the Settings window for the Analytic function. That is, you can define it without specifying the actual names of the arguments that you will use when calling it. For defining analytic functions you can use any predefined mathematical functions and also Global Parameters but not Global Variables. That is because a Global Variable can have an explicit dependence on the time t, for example. So, in your model, define myVar as a Global Parameter instead.
If the definition of myVar*t means "a constant times the time t" you can define it directly as Global Variable, where "t" is a predefined variable for time. If you define it as analytic function, you can call it with "t" for time or any other input argument.
Best regards,
Magnus Ringh, COMSOL
Please login with a confirmed email address before reporting spam
Thanks for the explanation. Now I understand better how Comsol 4.1 deals with variables and functions :-)
Regards,
Alois Pfenniger
Please login with a confirmed email address before reporting spam
May I add to the question with my query: how can I define a function of a function (in 4.2)?
I defined functions:
epc = e1 - j*s1/(2*pi*freq)
emc = e2 - j*s2/(2*pi*freq)
Arguments: freq [Hz}
When I try to define and then plot the third function, F=(epc(freq)-emc(freq))/(epc(freq)+2*emc(freq)), I get the error message
"Unknown function: epc".
I tried using synthax epc(freq[1/Hz]) - I still get the "unknown function" error, or just simply epc-emc/(epc+2*emc) without arguments but then COMSOL interprets it as a variable.
Any ideas how I could do this?
Many thanks!
Please login with a confirmed email address before reporting spam
I'm not sure what it could be, but I expect you are aware that many of the short names are already used by COMSOL such as s1 and s2, perhaps some of the others too. This is not necessarily flagged by COMSOL, as certain redefinitions are allowed, but when done by error strange things comes out of your solver ;)
--
Good luck
Ivar
Please login with a confirmed email address before reporting spam
My name is Arsene. I would need your help to solve a COMSOL problem.
I have a data table of specific heat (Cp) of Gadolinium. Those data variate with temperature (T) and magnetic field (H) (see attached file).
I would like to import this data into my comsol model and define a two-dimensional interpolation function, so that, for any value of T and H calculated by the model I could find a value of Cp.
How could i do it
Thankyou in advance for you precious help
Attachments:
Please login with a confirmed email address before reporting spam
I believe its the format that is not correct, you need to order it in columns and not in a matrix (check user 4.3a guide p 194++)
But then also, look at the material from the material data base that is using T and or Pa dependence. For materials you need to define a blanc material, add the interpolation function, read from file, and check that its the correct format "T, H, data" in columns (there is an example to in the User guide, and more in the materials doc, if you have that one)
--
Good luck
Ivar
Please login with a confirmed email address before reporting spam
Ben
Please login with a confirmed email address before reporting spam
would you mind to share your model in 3,5 version? i believe i had the same problem as yours.
Tq
Please login with a confirmed email address before reporting spam
I regret but I do not have the 3.5 file anymore.
Best,
Alois
Please login with a confirmed email address before reporting spam
the study is stationary, so how can it solve for myVar*t
Please login with a confirmed email address before reporting spam
Please login with a confirmed email address before reporting spam
This thread seems to be spanning several different topics and is loosing focus. In the interests of keeping each thread focused around a single subject, we are closing this thread for further comments. If there are any other related questions, please open a new thread, and reference this one, if it is relevant.
With respect to the latest question, about the tangential derivatives and components: please see the section on "Predefined and built-in variables" in the COMSOL Multiphysics Reference Manual.
Best Regards,
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.
Suggested Content
- BLOG How to Define Load Cycles in Battery Models
- KNOWLEDGE BASE Understanding, and changing, the element order
- FORUM How to define recursive functions similar to loops in the components of COMSOL
- FORUM What is the functions of ec.normJ?
- FORUM How to access global functions defined in COMSOL with matlab?