- Contemporary messages sorted: [ by date ] [ by thread ] [ by subject ] [ by author ] [ by messages with attachments ]

From: Andrea Fontana <andrea.fontana_at_pv.infn.it>

Date: Sat, 16 Sep 2017 10:45:43 +0200 (CEST)

Hello Arghya,

the idea is to save the x coordinates of the five centers in the

array CENTERS and then to randomly generate the index in the interval

1:5 to select a random center among the five. The array looks like:

ARRAY(1) = -10.

ARRAY(2) = -5.

ARRAY(3) = 0.

ARRAY(4) = 5.

ARRAY(5) = 10.

Actually, if you check in the manual of FLUKA, FLRNDM returns a

uniform random number in the interval [0,1), i.e. with 1 excluded:

so it would be better to write 1+5*FLRNDM(XDUMMY) to have a random

index among 1,2,3,4,5.

In Fortran you can use the implicit type declaration (as in the FLUKA

user routines) and so you can skip both REAL*4 or REAL*8 instructions

and simply write a DIMENSION instruction. FLRNDM returns a 64-bit

number and the conversion is done automatically: in your case I think

this is not relevant since you round your numbers...

So a better version of the code is:

DIMENSION CENTERS(5)

DATA CENTERS/-10.,-5.,0.,5.,10./

INDEX = FLOOR(1+5*FLRNDM(XDUMMY))

X0 = CENTERS(INDEX)

CALL RACO(TXX, TYY, TZZ)

RADIUS = R*FLRNDM(XDUMMY)

XFLK (NPFLKA) = X0 + RADIUS*TXX

YFLK (NPFLKA) = RADIUS*TYY

ZFLK (NPFLKA) = RADIUS*TZZ

I hope that now it is more clear. Please test it in your simulation

and let us know in case of other doubts.

Best regards,

Andrea

*> On 2017-09-15 20:10, Andrea Fontana wrote:
*

*>> Dear Arghya,
*

*>> what about choosing randomly among the 5 sphere centers?
*

*>> Let us say with a code like:
*

*>>
*

*>> REAL*4 CENTERS(5), X0
*

*>> DATA CENTERS/-10.,-5.,0.,5.,10./
*

*>>
*

*>> X0 = CENTERS(FLOOR(6*FLRNDM(XDUMMY)))
*

*>>
*

*>> where X0 is the center of your current sphere and then:
*

*>>
*

*>> CALL RACO(TXX, TYY, TZZ)
*

*>> RADIUS = R*FLRNDM(XDUMMY)
*

*>> XFLK (NPFLKA) = X0 + RADIUS*TXX
*

*>> YFLK (NPFLKA) = RADIUS*TYY
*

*>> ZFLK (NPFLKA) = RADIUS*TZZ
*

*>>
*

*>> You have to generate 5 times histories, but the result should be
*

*>> the one you are looking for. I hope this helps.
*

*>>
*

*>> Kind regards,
*

*>> Andrea
*

*>>
*

*>> Il 15/09/2017 14:15, arghyac_at_barc.gov.in ha scritto:
*

*>>> Dear Experts,
*

*>>>
*

*>>> I need to simulate 5 spherical sources with different spatial
*

*>>> co-ordinate in a single source.f card.
*

*>>>
*

*>>> I model one sphere (centre at (0,0,0) in source.f card as follows
*

*>>>
*

*>>> *particle corodinate
*

*>>> CALL RACO(TXX, TYY, TZZ)
*

*>>> RADIUS = R*FLRNDM(XDUMMY)
*

*>>> XFLK (NPFLKA) = RADIUS*TXX
*

*>>> YFLK (NPFLKA) = RADIUS*TYY
*

*>>> ZFLK (NPFLKA) = RADIUS*TZZ
*

*>>>
*

*>>> I guess I need to edit XFLK (NPFLKA), YFLK (NPFLKA), ZFLK (NPFLKA) to
*

*>>> sample 5 spherical sources in single subroutine.
*

*>>> Co-ordinate of other 4 sphere's centre are (-10,0,0), (-5,0,0),(5,0,0)
*

*>>> and (10,0,0). radius of each = 1.5 cm.
*

*>>>
*

*>>> Now how to sample other spheres here or how to edit it to accommodate
*

*>>> all the 5 sources at the same time.
*

*>>>
*

*>>> Kindly give some suggestions.
*

*>>>
*

*>>> Thanking you in advance.
*

*>>>
*

*>>> With regards,
*

*>>> Arghya
*

*>>>
*

*>>> __________________________________________________________________________
*

*>>> You can manage unsubscription from this mailing list at
*

*>>> https://www.fluka.org/fluka.php?id=acc_info
*

*>>>
*

*> Dear Sir/Madam,
*

*> Thank you very much for quick reply.
*

*> I am beginner and not much excellence in Fortran programming. So I
*

*> have few doubts. Kindly reply me.
*

*>
*

*> I need to choose all 5 sources randomly with equal probability i.e as
*

*> if detector are exposed by all 5 sources simultaneously.
*

*>
*

*> Since I am using 64 bit computer,
*

*> can I use REAL*8 instead of REAL*4
*

*> CENTERS(5) and below that declared centers values as DATA
*

*> CENTERS/-10.,-5.,0.,5.,10./
*

*>
*

*> Then use X0 = CENTERS(FLOOR(6*FLRNDM(XDUMMY)))
*

*> here FLOOR(6*FLRNDM(XDUMMY) will produce integer number 0,1,2,3,4,5,6
*

*> I am not getting how it will produce -5 and -10 and 10 co-ordinates ?
*

*> and why FLRNDM(XDUMMY) is multiplied by 6 only.
*

*>
*

*> Thanking you in advance
*

*>
*

*> __________________________________________________________________________
*

*> You can manage unsubscription from this mailing list at
*

*> https://www.fluka.org/fluka.php?id=acc_info
*

*>
*

*>
*

Date: Sat, 16 Sep 2017 10:45:43 +0200 (CEST)

Hello Arghya,

the idea is to save the x coordinates of the five centers in the

array CENTERS and then to randomly generate the index in the interval

1:5 to select a random center among the five. The array looks like:

ARRAY(1) = -10.

ARRAY(2) = -5.

ARRAY(3) = 0.

ARRAY(4) = 5.

ARRAY(5) = 10.

Actually, if you check in the manual of FLUKA, FLRNDM returns a

uniform random number in the interval [0,1), i.e. with 1 excluded:

so it would be better to write 1+5*FLRNDM(XDUMMY) to have a random

index among 1,2,3,4,5.

In Fortran you can use the implicit type declaration (as in the FLUKA

user routines) and so you can skip both REAL*4 or REAL*8 instructions

and simply write a DIMENSION instruction. FLRNDM returns a 64-bit

number and the conversion is done automatically: in your case I think

this is not relevant since you round your numbers...

So a better version of the code is:

DIMENSION CENTERS(5)

DATA CENTERS/-10.,-5.,0.,5.,10./

INDEX = FLOOR(1+5*FLRNDM(XDUMMY))

X0 = CENTERS(INDEX)

CALL RACO(TXX, TYY, TZZ)

RADIUS = R*FLRNDM(XDUMMY)

XFLK (NPFLKA) = X0 + RADIUS*TXX

YFLK (NPFLKA) = RADIUS*TYY

ZFLK (NPFLKA) = RADIUS*TZZ

I hope that now it is more clear. Please test it in your simulation

and let us know in case of other doubts.

Best regards,

Andrea

-- ======================================================================== Dr. Andrea Fontana tel: +39 0382 987991 Istituto Nazionale fax: +39 0382 423241 di Fisica Nucleare Sezione di Pavia e-mail: andrea.fontana_at_pv.infn.it Via Bassi 6 web : www.pv.infn.it/~fontana 27100 PAVIA, Italy ======================================================================== __________________________________________________________________________ You can manage unsubscription from this mailing list at https://www.fluka.org/fluka.php?id=acc_infoReceived on Sat Sep 16 2017 - 11:50:37 CEST

*
This archive was generated by hypermail 2.3.0
: Sat Sep 16 2017 - 11:50:38 CEST
*