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.

Failed to evaluate Jacobian of operator

Please login with a confirmed email address before reporting spam

Hi there

I encounted this problem when I was trying to implement the same file in the new 5.6 version. Everything is fine when I was implementing my model in the old 5.5 version. But when I duplicated the model file and opened it in 5.6 and tried to implement it, suddenly this problem arised. Could anyone tell me what this error means? what is this 'laginterpdiff' operator refers to?

My equations are defined in General form PDE.

Failed to evaluate Jacobian of operator.
- Operator: laginterpdiff
- Geometry: geom1
- Domain: 1
Failed to evaluate Jacobian of expression.
- Expression: dvol_spatial*(-((D*comp1.hxi)*(comp1.cx-((((comp1.c*(1-comp1.c))*(OmegaL-OmegaV))*d(comp1.sigh,x))/(R_a*T)))))
Failed to evaluate Jacobian of expression.
- Expression: (-comp1.ct*test(comp1.c)-D*comp1.hxi*(comp1.cx-comp1.c*(1-comp1.c)*(OmegaL-OmegaV)*d(comp1.sigh,x)/(R_a*T))*test(comp1.cx)-D*comp1.hxi*(comp1.cy-comp1.c*(1-comp1.c)*(OmegaL-OmegaV)*d(comp1.sigh,y)/(R_a*T))*test(comp1.cy))*(dvol_spatial)


7 Replies Last Post Jan 12, 2021, 6:54 a.m. EST

Please login with a confirmed email address before reporting spam

Posted: 3 years ago Dec 14, 2020, 10:58 a.m. EST

And why couldn't I define a gradient operator in the new 5.6 version? When I tried to define a parameter with operator 'gradient()', it always turns yellow and give an warning of 'Unknow operator or functions'.

And why couldn't I define a gradient operator in the new 5.6 version? When I tried to define a parameter with operator 'gradient()', it always turns yellow and give an warning of 'Unknow operator or functions'.

Daniel Weston COMSOL Employee

Please login with a confirmed email address before reporting spam

Posted: 3 years ago Dec 15, 2020, 5:00 a.m. EST

The laginterpdiff operator is used to evaluate spatial derivatives of the laginterp operator, which has been added in 5.6. Normally you would not use the laginterpdiff operator directly; rather, it will automatically be used to evaluate an expression that is a spatial derivative of a laginterp operator, such as ‘d(laginterp(order, expr), x)’. The error means that the evaluation of the Jacobian of such an expression has failed. Unfortunately, I can’t tell what has caused this failure from the information provided.

The laginterpdiff operator is used to evaluate spatial derivatives of the laginterp operator, which has been added in 5.6. Normally you would not use the laginterpdiff operator directly; rather, it will automatically be used to evaluate an expression that is a spatial derivative of a laginterp operator, such as ‘d(laginterp(order, expr), x)’. The error means that the evaluation of the Jacobian of such an expression has failed. Unfortunately, I can’t tell what has caused this failure from the information provided.

Please login with a confirmed email address before reporting spam

Posted: 3 years ago Dec 15, 2020, 12:21 p.m. EST

Thank you for your reply Daniel! I have solved this problem by changing the differential term 'd(expr,x), d(expr,y)' in my equations into 'd(expr, X), d(expr,Y)'. But I don't know why this worked. Maybe something related to the coodinate system?

Thank you for your reply Daniel! I have solved this problem by changing the differential term 'd(expr,x), d(expr,y)' in my equations into 'd(expr, X), d(expr,Y)'. But I don't know why this worked. Maybe something related to the coodinate system?

Please login with a confirmed email address before reporting spam

Posted: 3 years ago Jan 7, 2021, 12:08 p.m. EST
Updated: 3 years ago Jan 7, 2021, 12:09 p.m. EST

What exactly does the laginterp operator do? If I forcefully remove the laginterp from the default equations (where it is causing the problems), will it change the results too? For me this is occurring in the smsld.T function (smsld->linear material->thermal expansion), where I am taking its value solved in the tds module.

It was not there in the previous versions though.

I have read that "The new operator laginterp(order,expression) evaluates the given expression, in the Lagrange nodes of the given order, within each mesh element, and then interpolates. There are many uses for this operator. One example is to reduce the interpolation order of a field, such as from quadratic to linear shape functions. Another example use is to compute spatial derivatives of an expression for which spatial derivatives are not implemented." ~ I gathered here that if I don't use this it will take the default shape functions => more time but not necessarily the wrong results???

What exactly does the *laginterp* operator do? If I forcefully remove the *laginterp* from the default equations (where it is causing the problems), will it change the results too? For me this is occurring in the *smsld.T* function (smsld->linear material->thermal expansion), where I am taking its value solved in the *tds* module. It was not there in the previous versions though. I have read that "The new operator *laginterp*(order,expression) evaluates the given expression, in the Lagrange nodes of the given order, within each mesh element, and then interpolates. There are many uses for this operator. One example is to reduce the interpolation order of a field, such as from quadratic to linear shape functions. Another example use is to compute spatial derivatives of an expression for which spatial derivatives are not implemented." ~ I gathered here that if I don't use this it will take the default shape functions => more time but not necessarily the wrong results???

Henrik Sönnerlind COMSOL Employee

Please login with a confirmed email address before reporting spam

Posted: 3 years ago Jan 11, 2021, 1:57 a.m. EST

In the case you are referring to (thermal expansion), the laginterp operator is used to ensure that the thermal strains (proportional to temperature) are of the same polynomial order as the total strains (derived from the displacement shape functions). It the temperature field has a too high order, then the elastic strains (= total strain - thermal strain) may exhibit oscillations within the elements.

The fact that your features have tags like 'smsld' indicates that your model originates in version 3.5a or earlier. If there is a problem, I would suggest re-creating it in version 5.6.

-------------------
Henrik Sönnerlind
COMSOL
In the case you are referring to (thermal expansion), the laginterp operator is used to ensure that the thermal strains (proportional to temperature) are of the same polynomial order as the total strains (derived from the displacement shape functions). It the temperature field has a too high order, then the elastic strains (= total strain - thermal strain) may exhibit oscillations within the elements. The fact that your features have tags like 'smsld' indicates that your model originates in version 3.5a or earlier. If there is a problem, I would suggest re-creating it in version 5.6.

Please login with a confirmed email address before reporting spam

Posted: 3 years ago Jan 12, 2021, 3:24 a.m. EST
Updated: 3 years ago Jan 12, 2021, 5:02 a.m. EST

Thank you for your prompt reply Mr. Sönnerlind! Yes, I am solving for thermal expansion (thermal strains) in the structural mechanics module. I have already selected the same order for both temp and disp fields ~ quadratic.

Firstly, my question is the same: if this is some kind of a new method to improve the accuracy of solution in v5.6. And if I forcefully remove it, then it will create the solutions like in v5.5. Or do I have to use this to avoid incorrect results altogether?

Secondly, even if I change the order of displacement field or temperature the default equation remains the same:

smsld.T = laginterp(1,smsld.lemm1.te1.minputtemperature)

Does this means, it is forcing the temperature to be taken as linear to solve for thermal strains regardless of the order in which the temp or disp are being solved?

Thirdly, I believe the model was build in 5.0. I will try to rebuild it in 5.6. I will post if building the model again in latest version solves this issue. As for as smsld and solid tag names are concerned. I change every time to smsld to keep it old fashion way where I can manipulate things more easily.

Updated = "Issue is not resolved even re-creating the model in v5.6. "

Thank You! Noman

Thank you for your prompt reply Mr. Sönnerlind! Yes, I am solving for *thermal expansion* (*thermal strains*) in the structural mechanics module. I have already selected the same order for both temp and disp fields ~ **quadratic**. Firstly, my question is the same: if this is some kind of a new method to improve the accuracy of solution in v5.6. And if I forcefully remove it, then it will create the solutions like in v5.5. Or do I have to use this to avoid incorrect results altogether? Secondly, even if I change the order of displacement field or temperature the default equation remains the same: *smsld.T = laginterp(1,smsld.lemm1.te1.minputtemperature)* Does this means, it is forcing the temperature to be taken as **linear** to solve for thermal strains regardless of the order in which the temp or disp are being solved? Thirdly, I believe the model was build in 5.0. I will try to rebuild it in 5.6. I will post if building the model again in latest version solves this issue. As for as *smsld* and *solid* tag names are concerned. I change every time to *smsld* to keep it old fashion way where I can manipulate things more easily. Updated = "Issue is not resolved even re-creating the model in v5.6. " Thank You! Noman

Henrik Sönnerlind COMSOL Employee

Please login with a confirmed email address before reporting spam

Posted: 3 years ago Jan 12, 2021, 6:54 a.m. EST

Hi Noman,

Yes, this is new in 5.6. If you remove it, you will go back to 5.5 behavior.

When a Thermal Stress multiphysics interface was added in version 5.5 and earlier, the shape functions for the temperature were, as a default, set to linear to obtain this effect. From version 5.6, quadratic shape functions are used for the temperature field.

The first argument to the laginterp operator is set to (order_of_displacement_shape function - 1), so the temperature field is reinterpolated to linear if displacements are quadratic. If you choose for example cubic shape functions, then the reinterpolated temperature field will be quadratic. This should be possible to see in Equation View.

Regards

-------------------
Henrik Sönnerlind
COMSOL
Hi Noman, Yes, this is new in 5.6. If you remove it, you will go back to 5.5 behavior. When a Thermal Stress multiphysics interface was added in version 5.5 and earlier, the shape functions for the temperature were, as a default, set to linear to obtain this effect. From version 5.6, quadratic shape functions are used for the temperature field. The first argument to the laginterp operator is set to (order_of_displacement_shape function - 1), so the temperature field is reinterpolated to linear if displacements are quadratic. If you choose for example cubic shape functions, then the reinterpolated temperature field will be quadratic. This should be possible to see in Equation View. 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.