Note: This discussion is about an older version of the COMSOL Multiphysics® software. The information provided may be out of date.

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.

Thermal Dispersion in a Poreus Medium Module Problem

Please login with a confirmed email address before reporting spam

Hi,

I am working on simulation an Aquifer Thermal Energy Storage (ATES) [1] system. In this I am trying to use thermal dispersion, which is part of the heat transfer module. However I cant get it to work. I have tried the manual and the internet, but I cant figure out what the problem is and let alone solve it. Maybe one of you guys can see what the problem is, and how I would be able to solve it?

I've included the error log and the model, which is a 4.0a model.

Greetings Nick

[1] www.iftech.co.uk/index.php?option=com_content&task=view&id=21&Itemid=33

Attempt to evaluate negative power of zero.
- Function: ^
Failed to evaluate temporary symbolic derivative variable.
- Variable: mod1.ht2.k_dispxx@VDN$mod1.py
- Defined as: (((1/max(sqrt((((mod1.ht2.ux^2)+(mod1.ht2.uy^2))+(mod1.ht2.uz^2))),eps))*((mod1.ht2.rho*mod1.ht2.Cp)*(((((1/(mod1.dl.g*mod1.dl.rho))*(-mod1.dl.Kyy))))*(mod1.ht2.uy*2))))+((((((((mod1.ht2.ux^2)+(mod1.ht2.uy^2))+(mod1.ht2.uz^2))^-0.5)*0.5)*(((((1/(mod1.dl.g*mod1.dl.rho))*(-mod1.dl.Kyy))))*(mod1.ht2.uy*2)))*(sqrt((((mod1.ht2.ux^2)+(mod1.ht2.uy^2))+(mod1.ht2.uz^2)))>eps))*((-((mod1.ht2.rho*mod1.ht2.Cp)*(((mod1.ht2.ux^2)+(mod1.ht2.uy^2))+(mod1.ht2.uz^2))))/(max(sqrt((((mod1.ht2.ux^2)+(mod1.ht2.uy^2))+(mod1.ht2.uz^2))),eps)^2))))
Failed to evaluate temporary symbolic derivative variable.
- Variable: mod1.ht2.k_eqxx@VDN$mod1.py
- Defined as: ((((1/max(sqrt((((mod1.ht2.ux^2)+(mod1.ht2.uy^2))+(mod1.ht2.uz^2))),eps))*((mod1.ht2.rho*mod1.ht2.Cp)*(((((1/(mod1.dl.g*mod1.dl.rho))*(-mod1.dl.Kyy))))*(mod1.ht2.uy*2))))+((((((((mod1.ht2.ux^2)+(mod1.ht2.uy^2))+(mod1.ht2.uz^2))^-0.5)*0.5)*(((((1/(mod1.dl.g*mod1.dl.rho))*(-mod1.dl.Kyy))))*(mod1.ht2.uy*2)))*(sqrt((((mod1.ht2.ux^2)+(mod1.ht2.uy^2))+(mod1.ht2.uz^2)))>eps))*((-((mod1.ht2.rho*mod1.ht2.Cp)*(((mod1.ht2.ux^2)+(mod1.ht2.uy^2))+(mod1.ht2.uz^2))))/(max(sqrt((((mod1.ht2.ux^2)+(mod1.ht2.uy^2))+(mod1.ht2.uz^2))),eps)^2)))))
Failed to evaluate temporary symbolic derivative variable.
- Variable: mod1.ht2.k_effxx@VDN$mod1.py
- Defined as: (((((1/max(sqrt((((mod1.ht2.ux^2)+(mod1.ht2.uy^2))+(mod1.ht2.uz^2))),eps))*((mod1.ht2.rho*mod1.ht2.Cp)*(((((1/(mod1.dl.g*mod1.dl.rho))*(-mod1.dl.Kyy))))*(mod1.ht2.uy*2))))+((((((((mod1.ht2.ux^2)+(mod1.ht2.uy^2))+(mod1.ht2.uz^2))^-0.5)*0.5)*(((((1/(mod1.dl.g*mod1.dl.rho))*(-mod1.dl.Kyy))))*(mod1.ht2.uy*2)))*(sqrt((((mod1.ht2.ux^2)+(mod1.ht2.uy^2))+(mod1.ht2.uz^2)))>eps))*((-((mod1.ht2.rho*mod1.ht2.Cp)*(((mod1.ht2.ux^2)+(mod1.ht2.uy^2))+(mod1.ht2.uz^2))))/(max(sqrt((((mod1.ht2.ux^2)+(mod1.ht2.uy^2))+(mod1.ht2.uz^2))),eps)^2))))))
Failed to evaluate expression.
- Expression: d(d((-mod1.ht2.k_effxx*mod1.T2x*test(mod1.T2x)-mod1.ht2.k_effyy*mod1.T2y*test(mod1.T2y))*(dvol),{test@3}),mod1.py)


2 Replies Last Post Jun 4, 2012, 8:49 a.m. EDT

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago Jun 1, 2012, 1:24 p.m. EDT
Hi Nick,

It seems like there is a problem with your 'wave' variable. You can't use the waveform directly in your physics nodes and also the units should be consistent.

Create two analytical functions; one for Darcy's Law node (an1) and one for Heat Transfer (an2). Try these settings:

--> an1
Parameters - Expression: wv1(t)
Parameters - Arguments: t
Units - Arguments: s
Units - Function: kg/(m^2*s)
Plot Parameters - Argument: t, Lower limit: 0, Upper limit: 157500000

--> an2
Parameters - Expression: wv1(t)
Parameters - Arguments: t
Units - Arguments: s
Units - Function: W/m^2
Plot Parameters - Argument: t, Lower limit: 0, Upper limit: 157500000

Then,
In Darcy's Law - Mass Flux nodes, use -/+1.77*an1(t)
In Heat Transfer - Inflow Heat Flux nodes, use 63662*an2(t)

This should resolve the problem. Good luck!

--
Tolga
Hi Nick, It seems like there is a problem with your 'wave' variable. You can't use the waveform directly in your physics nodes and also the units should be consistent. Create two analytical functions; one for Darcy's Law node (an1) and one for Heat Transfer (an2). Try these settings: --> an1 Parameters - Expression: wv1(t) Parameters - Arguments: t Units - Arguments: s Units - Function: kg/(m^2*s) Plot Parameters - Argument: t, Lower limit: 0, Upper limit: 157500000 --> an2 Parameters - Expression: wv1(t) Parameters - Arguments: t Units - Arguments: s Units - Function: W/m^2 Plot Parameters - Argument: t, Lower limit: 0, Upper limit: 157500000 Then, In Darcy's Law - Mass Flux nodes, use -/+1.77*an1(t) In Heat Transfer - Inflow Heat Flux nodes, use 63662*an2(t) This should resolve the problem. Good luck! -- Tolga

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago Jun 4, 2012, 8:49 a.m. EDT
Hi Tolga,

Thanks for your response. The thing you point out was indeed also flaw, which is already solved. It did not however solve the thermal dispersion issue. Eventually I did find out what the problem was.

The problem was that there was no initial fluid flow in the model domain. This apparently is essential for the thermal dispersion to work properly. Due to the fact that there was no initial flow, the solver was trying to divide by zero somewhere.

I resolved this by defining a very small head gradient in the domain, which practically still means no flow, but tricks the solver into thinking there is, and therefore being able to solve for thermal dispersion.
Hi Tolga, Thanks for your response. The thing you point out was indeed also flaw, which is already solved. It did not however solve the thermal dispersion issue. Eventually I did find out what the problem was. The problem was that there was no initial fluid flow in the model domain. This apparently is essential for the thermal dispersion to work properly. Due to the fact that there was no initial flow, the solver was trying to divide by zero somewhere. I resolved this by defining a very small head gradient in the domain, which practically still means no flow, but tricks the solver into thinking there is, and therefore being able to solve for thermal dispersion.

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.