← Back to team overview

yade-users team mailing list archive

[Question #707170]: Accessing Periodic Corner Volume Vectors for Porosity Calcs


New question #707170 on Yade:


I would like to use the utils.voxelPorosity function to calculate the porosity during shear with the periTriaxController.

I've looked at how the it's called in the voxelPorosityTriaxial function when using the TriaxialCompressionEngine (https://yade-dem.org/doc/_modules/yade/utils.html#voxelPorosityTriaxial). I would like to do something similar with constructing the start & end corner volume vectors, or better yet, if I can access those vectors directly for the periodic box.

Any suggestions for the best way to do this? 

I've tried to search for in-built methods to get the corner volume vectors. However, I do not see any relevant methods for the periTriaxController engine, nor do I see any in the attributes list:

$ triax.dict()

{'dynCell': True,
 'goal': Vector3(-100000,-100000,-0.08500000000000000611),
 'stressMask': 3,
 'maxStrainRate': Vector3(1,1,0.01000000000000000021),
 'maxUnbalanced': 0.0001,
 'absStressTol': 1000.0,
 'relStressTol': 1e-05,
 'growDamping': 0.02,
 'globUpdate': 5,
 'doneHook': 'startShear()',
 'maxBodySpan': Vector3(0.3299479602263399869,0.3299479602263399869,0.3299479602263399869),
 'stressTensor': Matrix3(-99963.54100982047385,-416.9096773468117476,947.1616456979805889, -416.9059248743672583,-99926.43189555486606,1916.34198760193226, 947.1606227379483016,1916.34353571466886,-339235.7392003837158),
 'stress': Vector3(-99963.54100982047385,-99926.43189555486606,-339235.7392003837158),
 'strain': Vector3(0.0333987704360113255,0.03432776936677979507,-0.08500000000000008937),
 'strainRate': Vector3(0.001929208573328795211,0.001775921719427966819,0),
 'stiff': Vector3(0,0,0),
 'currUnbalanced': 2.9477521076913686e-06,
 'prevGrow': Vector3(0.001929208573328795211,0.001775921719427966819,0),
 'mass': 15380.193739519347,
 'externalWork': 413315.24427129014,
 'dead': False,
 'ompThreads': -1,
 'label': 'triax'}

With `O.cell`, I seem to at least be able to get the dimensions with the `size` attribute, but I feel like this is incomplete without at least one corner. There is also an `hSize` attribute, but as far as I can tell, it seems O.cell.hSize is just O.cell.trsf * O.cell.refHSize.

I think otherwise, I would need to estimate the box based on the strains and initial dimensions, or approximate it based on the min/max limits of the body centers--but wanted to check if there is an out of box solution first. 


You received this question notification because your team yade-users is
an answer contact for Yade.