Message: Re: Porous Material : any Idea Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

None Re: Porous Material : any Idea 

Forum: Geometry
Re: Question Porous Material : any Idea (Guillaume Potdevin)
Date: 29 Nov, 2005
From: Marc Verderi <Marc Verderi>

Guillaume Potdevin wrote:

>*** Discussion title: Geometry
>Email replies to must include:
>  In-Reply-To: <"/geometry/472">
>  Subject: ...change this to be about your reply.
>Dear Geant4 users
>I have successfully used Geant4 for a number of simulations and now I
>would like to go one step ahead:
>I would like to be able to study porous materials, and more precisely
>powders. I know the code is certainly not made to handle with several
>objects of various shapes; but it would be already interesting to have a
>stack of radomly placed cubes for example...
>The problem is that I cannot use a kind of "random drop technique" for I
>am sure I will have problems of overlapping of objects.
>So does anybody have an idea to define such a geometry, even if I am to
>take 95% of the available gig of memory, and if simulations will last
>for days and days?
>Thanks in advance for your suggestions.
(If the parallel geometry capability would be available today, there 
would probably be easier solution than what is below (*)).

This does not look an easy problem and will probably be time consuming 
(especially if the number if volumes is large, of course).

About the overlaping question, I know that the G4VSolid class defines a 
"CalculateExtent" method which could be used, but this looks to require 
some expertise.

Maybe with spheres it could be less difficult ? That is assuming the 
powder is made of spheres of diameter R. It could be done something like 
shooting random (x,y,z) points and for each new point take care if this 
new point is at least at a distance > 2*R of any other sphere (and to 
avoid taking "sqrt" many times, check first if |x-x_new_point| > 2*R, if 
so accept the point, and if not check for y then z difference and only 
in the case the 3 previous tests failed, check the distance between the 
2 points. If this distance is < 2*R, reject the point). At some point, 
the fraction of rejected points might reach some asymptot.

Maybe a better way would be to apply above algorithm to some small 
space, say 5.R * 5.R * 5.R. And, in this small space, shoot points about 
the center in [-3R, +3R] ranges in each direction (3.R instead of 5.R/2 
= 2.5R to avoid depletion on the region boundary). Then move to the next 
region space, 10.R further in some direction. When filling this new 
space, only the neighbours of this region need to be tested, instead of 
the all volume. Of course, this requires somewhat management...

Not sure this helps...


(*): with parallel geometry capability, the problem could be solved as : 
particles are traced in an empty volume, but at the begining of the 
step, decide, randomly, at what distance will be the next powder grain, 
then limit the step to this distance and switch the tracking to a 
geometry containing only a powder grain. Let the interaction(s) occur 
and put back the primary and any secondaries in the first geometry. 
etc... Of course you would loose the exact grain placements, but I guess 
this is not relevant...

Inline Depth:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

1 None: Re: Porous Material : any Idea   (Guillaume Potdevin - 29 Nov, 2005)
 Add Message Add Message
to: "Re: Porous Material : any Idea"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews

[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]