The TELEMAC-MASCARET system  trunk
fsprd1.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE fsprd1
3 ! *****************
4 !
5  &( fra , ndire , spred1, teta1 , spred2, teta2 , xlamda)
6 !
7 !***********************************************************************
8 ! TOMAWAC V6P1 15/06/2011
9 !***********************************************************************
10 !
11 !brief COMPUTES THE BIMODAL DIRECTIONAL SPREADING FUNCTION
12 !+ FOR A RANGE OF DIRECTIONS.
13 !code
14 !+ 2S
15 !+ COS (T-T0) WHERE T IN (T0-PI/2;T0+PI/2)
16 !
17 !history M. BENOIT
18 !+ 15/11/95
19 !+ V1P0
20 !+ CREATED
21 !
22 !history M. BENOIT
23 !+ 07/11/96
24 !+ V1P2
25 !+ MODIFIED
26 !
27 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
28 !+ 13/07/2010
29 !+ V6P0
30 !+ Translation of French comments within the FORTRAN sources into
31 !+ English comments
32 !
33 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
34 !+ 21/08/2010
35 !+ V6P0
36 !+ Creation of DOXYGEN tags for automated documentation and
37 !+ cross-referencing of the FORTRAN sources
38 !
39 !history G.MATTAROLO (EDF - LNHE)
40 !+ 15/06/2011
41 !+ V6P1
42 !+ Translation of French names of the variables in argument
43 !
44 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45 !| DIREC |-->| DISCRETIZED DIRECTION
46 !| FRA |<--| DIRECTIONAL SPREADING FUNCTION VALUES
47 !| NDIRE |-->| NUMBER OF DIRECTIONS
48 !| SPRED1 |-->| DIRECTIONAL SPREAD 1
49 !| SPRED2 |-->| DIRECTIONAL SPREAD 1
50 !| TETA1 |-->| MAIN DIRECTION 1
51 !| TETA2 |-->| MAIN DIRECTION 2
52 !| XLAMDA |-->| WEIGHTING FACTOR FOR FRA
53 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
54 !
55  USE declarations_tomawac, ONLY : teta
56 !
57  USE interface_tomawac, ex_fsprd1 => fsprd1
58  IMPLICIT NONE
59 !
60 !.....VARIABLES IN ARGUMENT
61 ! """"""""""""""""""""
62  INTEGER,INTENT(IN) :: NDIRE
63  DOUBLE PRECISION,INTENT(IN) :: SPRED1, TETA1 , SPRED2, TETA2
64  DOUBLE PRECISION,INTENT(IN) :: XLAMDA
65  DOUBLE PRECISION,INTENT(INOUT) :: FRA(ndire)
66 !
67 !.....LOCAL VARIABLES
68 ! """""""""""""""""
69  INTEGER JP
70  DOUBLE PRECISION DELT1 , DELT2 , FTH , FRA1 , FRA2 , ARGUM
71 !
72  delt1 = 1.d0/delfra(spred1)
73  delt2 = 1.d0/delfra(spred2)
74 !
75  DO jp=1, ndire
76  fth = teta(jp)
77 !
78  argum = cos(fth-teta1)
79  IF(argum.GT.0.d0) THEN
80  fra1=delt1*argum**(2.d0*spred1)
81  ELSE
82  fra1=0.d0
83  ENDIF
84 !
85  argum = cos(fth-teta2)
86  IF(argum.GT.0.d0) THEN
87  fra2=delt2*argum**(2.d0*spred2)
88  ELSE
89  fra2=0.d0
90  ENDIF
91 !
92  fra(jp)=xlamda*fra1+(1.d0-xlamda)*fra2
93  IF (fra(jp).LT.1.d-9) fra(jp)=0.d0
94  ENDDO ! JP
95 !
96  RETURN
97  END
subroutine fsprd1(FRA, NDIRE, SPRED1, TETA1, SPRED2, TETA2, XLAMDA)
Definition: fsprd1.f:7
double precision function delfra(SS)
Definition: delfra.f:7
double precision, dimension(:), pointer teta