Forum Navigation
You need to log in to create posts and topics.

Volume of the defect mesh

Dear Ovito Developers,

I am interested in measuring the void volume in the deformed crystalline system. At first, I thought to give a try with Ovito. To a great extent, the defect mesh generation feature within the Dislocation analysis module correctly (visually) captures the target (bad) regions very well. However, I would like to know whether there is an established way to access or compute the volume (approximation) of the defect (bad region) topology. Technically, the defect meshes are 2D triangular elements wrapping the irregular 3D bad region within. I would appreciate any clarification or pointers.





Hello, Hariprasath

If you can attach some pictures what you already tried. It would really help to answer your question. Also if I understand correctly maybe you can use Construct Surface Mesh modifier where you can get the volume, surface area, etc.

Thank you


Dear Prashant,

Thank you for giving the swift response and a useful pointer indeed. The Construct Surface Mesh modifier seems to realize the task of computing the volume bounded by spatial manifolds, i.e., triangular elements, here. I also see that this modifier offers the extended capabilities only with Pro version of Ovito. Please find the attached snapshot showing the interested 'void region' bounded by the triangular surface elements.





Uploaded files:
  • VoidVolume_Demo.png

Dear Hari,

welcome to the OVITO user forum! I can confirm that the Construct Surface Mesh Modifier available in our OVITO Pro version has an option "Identify volumetric regions", which will allow you to access the surface area and volume of the identified regions.
Simply click on "List of identified regions" and find the corresponding information in the "Surfaces Tab" in the Data Inspector.

I have processed your trial license request through the mail support just a couple of minutes ago, so you should be able to test this feature with the latest version of OVITO Pro.

-Constanze (OVITO Team)

Dear Constanze,

Thank you again for endorsing the Construct Surface Mesh (CSM) modifier's functionality and for providing the license key for the trial version. I activated a while ago, and the module is working as expected from a quick test. However, I have a specific question.
I would be interested in measuring the volumes of the identified regions, specifically within a subdomain (local region) of the global simulation box. Therefore, I deleted the atoms outside the subdomain using 'expression select' and 'freeze property.' But the challenge here is that the CSM modifier recognizes the regions of deleted atoms as 'empty' volumes giving a quantity in total for the global simulation box. Although I can access the individual identified regions from the surface tab, I wonder how I can calculate only the identified volume quantifications within a subdomain, so that I can export the textfile for data-intensive simulations.





If I understand the problem correctly, a possible solution could be to (1) use an Affine Transformation Cell Modifier to reduce the size of the simulation cell to your desired subdomain and (2) turn off the periodic boundary conditions in the simulation cell settings panel. Void or empty regions will be clipped at the simulation cell boundary, so only the empty volume that is inside the simulation cell will be counted.

First, use the Affine Transformation Modifier to change the simulation cell geometry to the size of the subdomain in question (with options: "Transform to target box" and "Operate on": Simulation cell (not Particles)).

"EDIT: Removed unnecessary steps".

Please make sure, the periodic boundary conditions are turned off. If your dataset consist of more than one simulation frame, you should use a Python script modifier instead of doing it manually in the simulation cell settings panel in the GUI.  You can copy the following code snippet into the Code editor in the GUI.

def modify(frame, data):  
    data.cell_.pbc = (False, False, False)

Then in a last step, apply the CSM modifier.

Does that work for you?

Let me add to Constanze's answer the following explanation:

The Construct Surface Mesh modifier is implemented such that it will not count parts of an empty region (for example a pore) that are located outside of the finite bounds of the (non-periodic) simulation box. That makes sense, because a finite simulation cell is surrounded by infinite empty space. In other words, the calculated volume of pores will only reflect that part of a pore that overlaps with the simulation cell volume. You should be able to exploit this behavior to measure pore volume only in a specific subregion, which you define by setting the simulation cell geometry.

Your system seems to use periodic boundary conditions. Turning them off before reducing the simulation cell to the desired subregion is important, because otherwise the Construct Surface Mesh modifier would implicitly map all atoms back into that smaller cell, which is certainly not what you want.