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.

Dilution of Chemical Species in Deformed Geometry Simulation

Please login with a confirmed email address before reporting spam

Hi All,

I am attempting to simulate some biological processes in which domains have a time-dependant volume change leading to dilution of chemical species. Building from simple to more complex models, I have produced a system which has two domains sharing a stationary boundary through which an exchangeable chemical can flux while another 'test' chemical species is sequestered in the deforming domain and acts as a 'probe' to ensure appropriate dilution/concentration due to volume changes. To study the effect of volume changes, a single boundary in one domain is free to move using the Deformed Geometry interface. This should result in flux of the exchangeable species and dilution the test species.

I noticed that when I ran the basic simulation, I was not getting any dilution of test species in the domain that is deforming. Further reading led me to believe that I need to specify the dilution explicitly using rate laws which couple the species concentration to the time-dependant area/volume of the domain. I was able to access what I hope is the time dependant volume variable using "Mass Properties" under the definitions node. In my simple case I use "mass1.area" (working in 2D) in the rate expressions and hope this is the appropriate parameter.

When specifying the moving boundary using the "Prescribed Normal Mesh Velocity", I worked out a rate expression for the dilution term for a given species, assuming a rectangular domain which expands along the y-axis ('height' changes) and stays constant in the x-axis ('width' is constant). The expression, which I enter as a reaction rate for the test species using tds interface, is: - (concentration x mass1.area) / (mass1.area^2) x width mesh_velocity. Here I have access to the parameter mesh_velocity because I set it as a global parameter and it is constant. When I run the simulation and expand the domain to 150% of its original area, I get a reasonable dilution of about 2/3. Likewise, when I double the domain area I get half the concentration at the end. I am hoping someone from the community can let me know if this is the general approach I would take when specifying the normal velocity of the moving boundary as a constant. It would be supremely helpful if I could do this 'under the hood' with the Deforming Geometry and/or Moving Mesh interfaces as I plan to have the velocity be a time dependant function of the concentrations.

Moving forward, however, I want to implement this same strategy but using "Prescribed Normal Mesh Displacement" in which the displacement will be expressed as some time-dependant function of parameters and variables. For now I am simply expressing it as concentration of exchangeable species multiplied by an arbitrary constant to ensure the moving boundary doesn't move too far. In other words, the mesh displacement will not be a constant parameter but will be changing magnitude and/or direction in time as the system evolves.

I have set up a similar simple test simulation where I express the displacement as some arbitrary function of a freely exchangeable chemical species and monitor the change in concentration of my test species which should only be affected by the area/volume changes. As the exchangeable species accumulates in the deforming domain, I get a reasonable displacement of the moving boundary, however, I cannot get the dilution of my test species to work out correctly. Since I do not have access to a constant parameter for the normal velocity of the moving boundary, my dilution rate expression for the test species is: - (concentration x mass1.area) / (mass1.area^2) x width x d(material.Y_internal, TIME), where d(material.Y_internal,TIME) should be the velocity of the moving boundary. If I start with a concentration of 100 mol/m^3 and an initial area of 2e-12 m^2 the system evolves to yield a final area of 2.8891e-12 m^2 however the final concentration of the test species is 83 mol/m^3 whereas I expect the final concentration to be 100 * 2/2.889 = 69.2 mol/m^3.

I have checked and triple checked to make sure that the test species has no flux boundary conditions in the deforming domain and there are no other rate expressions which should affect the concentration of my test species apart from the dilution term. The exchangeable species appears to be fluxing correctly between the domains and properly causing expansion of the deforming domain however I haven't checked for numerical accuracy yet, only looked grossly at the general trends.

Can anyone suggest any reading on this topic or know what I am doing wrong? I have done a lot of searching online and haven't found any example cases which deal with this specific issue anywhere.

Thank you all in advance!


1 Reply Last Post Mar 15, 2022, 2:28 p.m. EDT

Please login with a confirmed email address before reporting spam

Posted: 2 years ago Mar 15, 2022, 2:28 p.m. EDT
Updated: 2 years ago Mar 15, 2022, 2:40 p.m. EDT

Posting this here in case anyone might need some help with this situation.

I was able to get the appropriate behavior using "dvol" to access the time-dependant volume of the system.

Dilution term in rate expression: - (concentration * dvol/dvol^2) * d(dvol, TIME) NB: use mesh time "TIME", not "t" for the differential operator.

My test case starts with an area of 2.0E-12 m^2 and evolves to a final area of 2.456E12 m^2. My test species evolves from 200 mol/m^3 to 162.7 mol/m^3 at equilibrium. This compares quite well with the expected value which is given by c_final = (c_initial * area_in) / area_final = 200 * 2 / 2.456 = 162.9. I will guess that the small difference is due to rounding errors somwhere along the way.

Edit for clarity: In my case dvol scales identically with the area and gives reasonable numbers. I assume this is likely due to the mesh stretching to accomodate the evolving geometry. I get the same behavior using dvol_spatial however meshvol and meshvol_spatial, which I would assume would be a safer parameter to use to calculate dVolume/dt, does not give any change in test species concentration.

Thanks again. Hope this is helpful to someone.

Posting this here in case anyone might need some help with this situation. I was able to get the appropriate behavior using "dvol" to access the time-dependant volume of the system. Dilution term in rate expression: - (concentration * dvol/dvol^2) * d(dvol, TIME) NB: use mesh time "TIME", not "t" for the differential operator. My test case starts with an area of 2.0E-12 m^2 and evolves to a final area of 2.456E12 m^2. My test species evolves from 200 mol/m^3 to 162.7 mol/m^3 at equilibrium. This compares quite well with the expected value which is given by c_final = (c_initial * area_in) / area_final = 200 * 2 / 2.456 = 162.9. I will guess that the small difference is due to rounding errors somwhere along the way. Edit for clarity: In my case dvol scales identically with the area and gives reasonable numbers. I assume this is likely due to the mesh stretching to accomodate the evolving geometry. I get the same behavior using dvol_spatial however meshvol and meshvol_spatial, which I would assume would be a safer parameter to use to calculate dVolume/dt, does not give any change in test species concentration. Thanks again. Hope this is helpful to someone.

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.