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