RE: [fluka-discuss]: Writting SOURCE user routine generating from file with mixture of particles?

From: Fasso, Alberto <fasso_at_slac.stanford.edu>
Date: Wed, 13 Nov 2013 22:35:40 -0800

Sorry Mina,
I wrote in a hurry, and I miscalculated the total number figures needed. Instead of E20.16, write E23.16 (16, plus one for the sign, one for the decimal point, 3 for the exponent, and a couple for some separation blanks). About the latter, add some spaces also between the other numbers.

Apologies

Alberto
________________________________________
From: Mina Nozar [nozarm_at_triumf.ca]
Sent: Wednesday, November 13, 2013 5:34 PM
To: Fasso, Alberto; fluka-discuss_at_fluka.org
Cc: Andrea.Mairani_at_mi.infn.it; Vahan Petrosyan
Subject: Re: [fluka-discuss]: Writting SOURCE user routine generating from file with mixture of particles?

Hi Alberto,

Do you know why the output from mgdraw looks like this now?

  8
-.2635E+030.6864E+020.2944E+04************************************************************0.6606E-060.6400E-05
  7
-.2635E+030.6589E+020.2946E+04************************************************************0.8389E-030.2133E-06
  7
-.2635E+030.7252E+020.2941E+04************************************************************0.1702E-030.2133E-06
  8
-.2635E+030.7615E+020.2963E+04************************************************************0.4350E-040.6400E-05

The format statement I have is:
  100 FORMAT(I2,1X,3(E10.4),3(E20.16),2(E10.4),1X)

Do I need to force a new line after so many characters?

Thank you,
Mina

On 13-11-13 02:09 AM, Alberto Fasso' wrote:
> Dear Mina,
>
> those lines you report are not written "by FLUKA"! (ENTRY BXDRAW in the
> mgdraw.f routine does not produce any output by default). They are
> written by you, probably using a WRITE(...,*) statement. While the
> values of the variables
> have in the code 16 significant figures, what they have in that output is
> only 4 figures: the sum of the squares of the cosines, which is
> exactly = 1.0
> (within 16 significant figures!) in the code, is now 1.0 within only 4
> figures,
> as you can see from your test.
>
> There are two ways you can fix this problem.
> 1) write the cosines with 16 significant figures, using
> FORMAT(...,E20.16,...)
> 2) read COSX, COSY and COSZ, calculate COSNEW as
> SQRT(ONEONE - COSX**2 - COSY**2), give it the sign of COSZ
> using the Fortran function SIGN(COSNEW,COSZ), and set COSZ = COSNEW
>
> Alberto
>
> On Tue, 12 Nov 2013, Mina Nozar wrote:
>
>> Here is the first few lines from the data file written out by FLUKA,
>> containg x,y,z, cosx,cosy,cosz, E, weight of neutrons and photons.
>>
>>
>> 8 -.2635E+03 0.6864E+02 0.2944E+04 -.6333E+00 -.3722E+00 -.6785E+00
>> 0.6606E-06 0.6400E-05
>> 7 -.2635E+03 0.6589E+02 0.2946E+04 -.4823E+00 -.8048E+00 0.3460E+00
>> 0.8389E-03 0.2133E-06
>> 7 -.2635E+03 0.7252E+02 0.2941E+04 -.7275E+00 0.1437E+00 -.6709E+00
>> 0.1702E-03 0.2133E-06
>> 8 -.2635E+03 0.7615E+02 0.2963E+04 -.6198E+00 0.3405E+00 0.7071E+00
>> 0.4350E-04 0.6400E-05
>> 8 -.2635E+03 0.8386E+02 0.2965E+04 -.9698E+00 -.2337E+00 0.7025E-01
>> 0.7173E-04 0.6400E-05
>> 7 -.2635E+03 0.7403E+02 0.2909E+04 -.9050E+00 0.4251E+00 0.1854E-01
>> 0.2451E-02 0.1030E-07
>> 7 -.2635E+03 0.6947E+02 0.2910E+04 -.6588E+00 0.4806E+00 0.5788E+00
>> 0.8012E-03 0.1031E-07
>> 7 -.2635E+03 0.7410E+02 0.2914E+04 -.8432E+00 -.2508E+00 0.4755E+00
>> 0.5228E-03 0.1840E-07
>> ...
>> ...
>> ...
>>
>> and sqrt(cosx^2 + cosy^2 + cosz^2):
>>
>> sqrt(.6333E+00^2 + .3722E+00^2 + .6785E+00^2) = 0.99998198...
>> sqrt(.4823E+00^2 + .8048E+00^2 + .3460E+00^2) = 1.00000161648...
>> sqrt(.7275E+00^2 + .1437E+00^2 + .6709E+00^2) = 1.00000637497...
>> sqrt(.6198E+00^2 + .3405E+00^2 + .7071E+00^2) = 1.000041349...
>> sqrt(.9698E+00^2 + .2337E+00^2 + .7025E-01^2) = 1.0000313957...
>> sqrt(.9050E+00^2 + .4251E+00^2 + .1854E-01^2) = 1.000003937...
>> sqrt(.6588E+00^2 + .4806E+00^2 + .5788E+00^2) = 1.000001619...
>> sqrt(.8432E+00^2 + .2508E+00^2 + .4755E+00^2) = 0.99999356...
>>
>>
>> Mina
>>
>> On 13-11-12 04:57 PM, Mina Nozar wrote:
>>> Hello Andrea,
>>>
>>> But I get the same problem with an output file writtin by FLUKA
>>> (through usrdump and mgdraw.f). What is the solution then?
>>>
>>> thanks,
>>> Mina
>>>
>>>
>>> On 13-11-12 12:41 PM, Andrea.Mairani_at_mi.infn.it wrote:
>>>> Dear Vahan,
>>>> What are the columns #5,6 and 7?
>>>> As Mina wrote,
>>>>> The problem seems to be in the following line:
>>>>>
>>>>> * TZFLK (NPFLKA) = SQRT ( ONEONE - TXFLK (NPFLKA)**2
>>>>> * & - TYFLK (NPFLKA)**2 )
>>>> but you should NOT change it, the problem is that TXFLK (NPFLKA)**2 +
>>>> TYFLK (NPFLKA)**2 is greater than 1 (!) in your case and you have the
>>>> floating exception....
>>>> Cheers,
>>>> Andrea
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>> I commented it out and added:
>>>>>
>>>>> TZFLK (NPFLKA) = COSZ(I)
>>>>>
>>>>>
>>>>> The above fix gets rid of the core dump but again, I don't know
>>>>> why the
>>>>> original line causes a core dump. I have run into this problem
>>>>> before.
>>>>> I am sending this response to the list. Maybe someone has an
>>>>> explanation (I am neither a FLUKA nor a FORTRAN expert).
>>>>>
>>>>>
>>>>> I ran your project with the 'test.dat' file and produced output files
>>>>> (please check the numbers, I didn't look at the source file in
>>>>> detail).
>>>>> 3 0.2 0.3 -0.9 -0.2 -0.4 -0.9 0.003
>>>>> 1 0.3 -0.3 -0.6 0.5 0.5 -0.3 0.007
>>>>> 3 -0.3 -0.3 -0.5 -0.5 -0.9 0.8 0.006
>>>>>
>>>>>
>>>>> I don't think you need the data file to be in the D+/-xx format (from
>>>>> your 'test-correct.dat' file). FLUKA itself doesn't write output
>>>>> from
>>>>> the first step (scoring particles crossing a boundary (boundaries) in
>>>>> this format.
>>>>> 1 20D-01 1D-02 -1D+00 -1D-01 1D-01 1D-01 1D-04
>>>>> 3 10.2D-01 1.3D-02 -14D+00 -8D-01 1.2D-01 1D-01 1D-03
>>>>> 8 20D-01 1D-02 -1D+00 -1.1D-01 1D-01 1D-01 200D-04
>>>>> 3 19D-01 10D-02 -18D+00 -1D-01 -1D-01 -1D-01 1D-04
>>>>>
>>>>> Again, I am not an expert, so I'll leave it to the experts to
>>>>> comment.
>>>>>
>>>>> Best wishes,
>>>>> Mina
>>>>>
>>>>>
>>>>> On 13-11-09 06:36 AM, Vahan Petrosyan wrote:
>>>>>> Thanks for reply your answer helped me very much.
>>>>>> But I revised my source code and found many LOGICAL mistakes because
>>>>>> of which my source routine didn't work at all. Yes it run but it
>>>>>> didn't take beam from data file. So.... I corrected my mistakes and
>>>>>> now it works as I want.
>>>>>>
>>>>>> But I have SMALL Problem! Can you help me please?
>>>>>> I have DATA FILE in this format: 3 0.2 0.3 -0.9 -0.2
>>>>>> -0.4 -0.9 0.003
>>>>>> but when I run it crashes with ERROR: "Floating point exception
>>>>>> (core
>>>>>> dumped)"
>>>>>> I read the the lecture
>>>>>> https://www.fluka.org/free_download/course/triumf2012/Lectures/AdvancedFluka2012.pdf
>>>>>>
>>>>>>
>>>>>>
>>>>>> Where it SAYS:
>>>>>> "The code works under IMPLICIT DOUBLE PRECISION for variables in the
>>>>>> range (A-H,O-Z). Don?t forget ..D+/-xx (eg
>>>>>> 2.3D+00, 7.8D-03) in all numerical settings in user routines, and be
>>>>>> careful in passing variables to/from Fluka"
>>>>>> ie passed number should be in this form "2.3D+00".
>>>>>> So...... I manually crated DATA FILE with this format: 1 20D-01
>>>>>> 1D-02 -1D+00 -1D-01 1D-01 1D-01 1D-04
>>>>>> and my code worked as I expected.
>>>>>> ..................
>>>>>> I tried to use DBLE() function in order to convert my array elements
>>>>>> to DOUBlE PRECISION when I assign it to the FLUKA variables but it
>>>>>> doesn't help...... again the same error appears.
>>>>>> ....I do like this....
>>>>>> TXFLK (NPFLKA) = DBLE(COSX(I))
>>>>>> .....................
>>>>>> When I use another DATA FILE where numbers are like this "2.3D+00"
>>>>>> format My code WORKS JUST FINE!!!
>>>>>>
>>>>>> Now I try to convert data in form "2.3D+00" myself using this doc.
>>>>>> http://docs.oracle.com/cd/E19957-01/805-4939/z40007437a2e/index.html
>>>>>> but can't implement.... the same error appears.....
>>>>>> So question how can I convert my DATA file numbers to this "2.3D+00"
>>>>>> format using FORTRAN77?
>>>>>>
>>>>>> Thank You!
>>>>>>
>>>>>> On 11/8/2013 10:47 PM, nozarm_at_triumf.ca wrote:
>>>>>>> Hello Vahan,
>>>>>>>
>>>>>>> I just tried compiling and running the executable and it worked
>>>>>>> just
>>>>>>> fine.
>>>>>>> I defined a new run in your flair project, named testroutine-A with
>>>>>>> 1000
>>>>>>> primaries per cycle and 5 cycles.
>>>>>>>
>>>>>>>
>>>>>>> Cmd: /usr/bin/nohup
>>>>>>> /triumfcs/linux/fluka/fluka/default/flutil/rfluka
>>>>>>> -M 5
>>>>>>> testroutine-A
>>>>>>>
>>>>>>> produced:
>>>>>>>
>>>>>>>
>>>>>>> -rw-rw-r-- 1 nozarm nozarm 4000238 Nov 8 10:39stroutine-A001.log
>>>>>>> -rw-rw-r-- 1 nozarm nozarm 4000238 Nov 8 10:39
>>>>>>> testroutine-A001_fort.32
>>>>>>> -rw-rw-r-- 1 nozarm nozarm 114352 Nov 8 10:39
>>>>>>> testroutine-A001.out
>>>>>>> -rw-rw-r-- 1 nozarm nozarm 22470 Nov 8 10:39
>>>>>>> testroutine-A001.err
>>>>>>>
>>>>>>> and similar files for A002 through A005.
>>>>>>>
>>>>>>> I even looked at your usrbin plot and it looks fine.
>>>>>>>
>>>>>>> I am attaching the flair project file with the run definition. I
>>>>>>> think
>>>>>>> your problem was with the way you were running fluka at the end.
>>>>>>>
>>>>>>> Best wishes,
>>>>>>> Mina
>>>>>>>
>>>>>>>
>>>>>>>> Hi everyone!
>>>>>>>> I am wrtitting a custom SOURCE routine that generates beam with
>>>>>>>> mixture
>>>>>>>> of particles for example electrons and protons from DATA FILE.
>>>>>>>> I read the FLUKA help part 13.2.19 and fluka discuss thread from
>>>>>>>> Alberto
>>>>>>>> Fasso
>>>>>>>> http://www.fluka.org/web_archive/earchive/new-fluka-discuss/2887.html.
>>>>>>>>
>>>>>>>>
>>>>>>>> I was able to write the routine and compile it with success!!! But
>>>>>>>> when
>>>>>>>> I run FLUKA It starts to work in a moment and crashes with
>>>>>>>> "Finished
>>>>>>>> with ERRORS".
>>>>>>>> In my source.f routine:
>>>>>>>> 1) I read file using OPEN command
>>>>>>>> 2) I use READ command inside DO loop in order to fill arrays of
>>>>>>>> particle-ID, coordinates, cosines and energy.
>>>>>>>> 3) I put particle intanialization from input file in DO loop.
>>>>>>>> DO 20 I = 1, NLINES
>>>>>>>> NPFLKA = NPFLKA + 1
>>>>>>>> WTFLK (NPFLKA) = ONEONE
>>>>>>>> WEIPRI = WEIPRI + WTFLK (NPFLKA)
>>>>>>>> IJBEAM = PARTID(I)
>>>>>>>> TXFLK (NPFLKA) = COSX(I)
>>>>>>>> TYFLK (NPFLKA) = COSX(I)
>>>>>>>>
>>>>>>>> ****** etc. ******
>>>>>>>> 20 CONTINUE
>>>>>>>> RETURN
>>>>>>>> CALL SOEVSV
>>>>>>>>
>>>>>>>> I can't undertand why it happens because in my nohup.out file
>>>>>>>> there is
>>>>>>>> only one single line
>>>>>>>>
>>>>>>>> ======================= Running FLUKA for cycle # 1
>>>>>>>> =======================
>>>>>>>> /usr/local/fluka/flutil/rfluka: line 358: 1926 Aborted
>>>>>>>> (core dumped) "${EXE}" < "$INPN" 2> "$LOGF" > "$LOGF"
>>>>>>>>
>>>>>>>> If someone has time PLEASE take a look and say why my SOURCE
>>>>>>>> doesn't
>>>>>>>> work.......
>>>>>>>> I am attached files that I got after run.
>>>>>>>>
>>>>>>>> Thank You.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>
>>>
>>
>>
>
Received on Thu Nov 14 2013 - 09:44:42 CET

This archive was generated by hypermail 2.3.0 : Thu Nov 14 2013 - 09:44:43 CET