[Gmsh] Composite RVE (Hossam Ragheb)
Baptiste DURAND
baptiste.durand at enpc.fr
Mon Dec 14 08:59:51 CET 2020
–––––
Baptiste Durand
Doctorant – Laboratoire Navier
baptiste.durand at enpc.fr – 01 64 15 37 21 ( 06 58 88 05 41 ) – linkedin.com/in/ bd1747
De: "Baptiste DURAND" <baptiste.durand at enpc.fr>
À: "gmsh" <gmsh at ace20.montefiore.ulg.ac.be>
Envoyé: Vendredi 11 Décembre 2020 15:26:44
Objet: Re: Composite RVE (Hossam Ragheb)
Hi Hossam,
Controlling the mesh density with the options "Mesh.CharacteristicLengthMin" and "Mesh.CharacteristicLengthMax" may be too stringent. It may be better to use the "mesh size field" feature if you want to impose a mesh density.
Also, (I'm not sure about that) the last fragment operation with "Delete" specified might mess up the physical group.
I convert your .geo file to a python script in order to test your code via the gmsh python API. You can find attached this .py file.
What you are trying to do seems somehow similar to what I do with gmsh and FEniCS (periodic homogenization for linear elasticity). You could be interested by some features of the python package HO-homog that we develop ( https://gitlab.enpc.fr/baptiste.durand/HO_homog ).
Regards,
Baptiste Durand
–––––
Baptiste Durand
Doctorant – Laboratoire Navier
baptiste.durand at enpc.fr – 01 64 15 37 21 ( 06 58 88 05 41 ) – linkedin.com/in/ bd1747
De: gmsh-request at ace20.montefiore.ulg.ac.be
À: gmsh at onelab.info
Envoyé: Vendredi 11 Décembre 2020 12:00:02
Objet: gmsh Digest, Vol 215, Issue 9
Send gmsh mailing list submissions to
gmsh at onelab.info
To subscribe or unsubscribe via the World Wide Web, visit
http://onelab.info/mailman/listinfo/gmsh
or, via email, send a message with subject or body 'help' to
gmsh-request at onelab.info
You can reach the person managing the list at
gmsh-owner at onelab.info
When replying, please edit your Subject line so it is more specific
than "Re: Contents of gmsh digest..."
Today's Topics:
1. Composite RVE (Hossam Ragheb)
----------------------------------------------------------------------
Message: 1
Date: Thu, 10 Dec 2020 13:34:34 +0000
From: Hossam Ragheb <har1g15 at soton.ac.uk>
To: gmsh at onelab.info
Subject: [Gmsh] Composite RVE
Message-ID: <8b4e55e8-f24a-5e9e-b0da-b21288631289 at soton.ac.uk>
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Hi,
I am new to gmsh, so apologies if the answer to my question is obvious.
I coded a .geo file (Attached) to create 3D RVE with fibers in a matrix
that includes voids.
The process simply is :
??? 1- Create box of the matrix material.
??? 2- Create voids using Sphere command and BooleanDifference to
remove these from the matrix material.
??? 3- Create fibers as Cylinders and and utilise BooleanFragments to
include the cylinders in the matrix.
I have one persistent problem, once the mesh is created the fibers are
meshed as hollow cylinders, however i need them to be solid.
Its interesting behavior. Last thing to note that mesh size affects the
outcome, for example when the min/max mesh size is 2, the result is
solid cylinders, but with mesh size of 1, it becomes hollow.
It there a way to force the meshing algorithm to mesh the cylinder as
solid object?
I have attached the .geo file, please let me know if you can help.
Any suggestions?
Thanks,
Hossam Ragheb
-------------- next part --------------
//------------------------------------------------------------------------------
//
// Gmsh Stochastic Composite RVE
//
// Constructive Solid Geometry, OpenCASCADE geometry kernel
//
//------------------------------------------------------------------------------
SetFactory("OpenCASCADE");
Mesh.Tetrahedra = 1;
Mesh.Triangles = 1;
fac = 1;
Mesh.CharacteristicLengthMin = 2*fac;
Mesh.CharacteristicLengthMax = 2*fac;
voiden = 0.01;
Vf = 0.7;
// Coefficent of variation of the fibre diameter
cvf = 0.17;
Vlratio = 20;
Cube = 75*fac;
frmean = 5.0 * fac;
frmin = frmean - (frmean*cvf);
frmax = frmean + (frmean*cvf);
vrmin = 2.5*fac;
vrmax = 5.0*fac;
R = Cube;
nSvoid = Floor((voiden*2*R*2*R*2*R)/((4/3)*3.1415926*vrmax*vrmax*vrmax));
nFibre = Floor((Vf*2*R*2*R*2*R)/(3.1415926*frmax*frmax*2*R));
dims = Floor(Sqrt(nFibre));
Box(1) = {-R,-R,-R, 2*R,2*R,2*R};
For s In {2:nSvoid}
If (s < nSvoid)
r = vrmin +Rand(vrmax-vrmin);
x = -R + Rand(2*R);
y = -R + Rand(2*R);
z = -R + Rand(2*R);
Sphere(s) = {x, y, z, r};
EndIf
If (s == nSvoid)
r = vrmin +Rand(vrmax-vrmin);
x = -R + Rand(2*R);
y = -R + Rand(2*R);
z = -R + Rand(2*R);
Sphere(s) = {x, y, z, r};
Dilate {{x, y, z}, {Vlratio, 1, 0.5}} { Volume{s}; }
EndIf
Physical Volume(s) = {s};
EndFor
BooleanDifference(nSvoid+1) = { Volume{1}; Delete; }{ Volume{2:nSvoid}; Delete; };
dx = (2*R)/dims;
count = 0;
For i In {0:dims-1}
For j In {0:dims-1}
// Fibre diameter
Fr = frmin +Rand(frmax-frmin);
// Center of grid box in the RVE
cgx = (-R + 0.5*dx) + j * dx;
cgy = (-R + 0.5*dx) + i * dx;
// Center of cylinder base
xF = (cgx - 0.5*dx + Fr) + Rand(dx-2*Fr);
yF = (cgy - 0.5*dx + Fr) + Rand(dx-2*Fr);
zF = -R;
// Cylinder axis dx,dy,dz
dxF = 0;
dyF = 0;
dzF = 2*R;
Cylinder(nSvoid+2+count) = {xF,yF,zF,dxF,dyF,dzF,Fr};
Physical Volume(nSvoid+2+count) = {nSvoid+2+count};
count = count +1;
EndFor
EndFor
BooleanDifference(1000) = {Volume{nSvoid+1};Delete;}{Volume{nSvoid+2:nSvoid+1+count};};
Physical Volume("Matrix") = {1000};
Physical Volume("Fibres") = {nSvoid+2:nSvoid+1+count};
f() = BooleanFragments{Volume{1000};Delete;}{Volume{nSvoid+2:nSvoid+1+count};Delete;};
------------------------------
Subject: Digest Footer
_______________________________________________
gmsh mailing list
gmsh at onelab.info
http://onelab.info/mailman/listinfo/gmsh
------------------------------
End of gmsh Digest, Vol 215, Issue 9
************************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://onelab.info/pipermail/gmsh/attachments/20201214/a0462273/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mwe_composite_RVE.py
Type: text/x-python
Size: 3662 bytes
Desc: not available
URL: <http://onelab.info/pipermail/gmsh/attachments/20201214/a0462273/attachment-0001.py>
More information about the gmsh
mailing list