The TELEMAC-MASCARET system  trunk
mod_handle_friction_zones.f
Go to the documentation of this file.
1 ! ********************************
3 ! ********************************
4 !
5 !***********************************************************************
6 ! PARTEL
7 !***********************************************************************
8 !
9 !BRIEF Treatment of sections
10 !
11 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
12 
13  IMPLICIT NONE
14  CONTAINS
15 ! ********************************
16  SUBROUTINE handle_friction_zones
17 ! ********************************
18 !
19  & (namezfi, nparts, npoin, npoin_p, max_npoin_p, knolg)
20 !
21 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22 !| NAMEZFI |<--| Name of friction zones file
23 !| NPARTS |<--| Number of partitions
24 !| NPOIN |<--| Number of points
25 !| NPOIN_P |<--| Number of points per partition
26 !| MAX_NPOIN_P |<--| Maxw Number of points on a partition
27 !| KNOLG |<--| Local to global numbering
28 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
29 !
32 !
33 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
34 !
35  CHARACTER(LEN=PATH_LEN), INTENT(IN) :: NAMEZFI
36  INTEGER, INTENT(IN) :: NPARTS
37  INTEGER, INTENT(IN) :: NPOIN
38  INTEGER, INTENT(IN) :: MAX_NPOIN_P
39  INTEGER, INTENT(IN) :: NPOIN_P(nparts)
40  INTEGER, INTENT(IN) :: KNOLG(max_npoin_p, nparts)
41 !
42 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
43 !
44  INTEGER, ALLOCATABLE :: FRICTION(:)
45  INTEGER :: NZFI,I_GLOB,VAL_ZFI
46  CHARACTER(LEN=11) :: EXTENS
47  EXTERNAL extens
48  INTEGER I, J, N, IERR
49  CHARACTER(LEN=PATH_LEN) :: NAMEOUT
50 !
51 ! READING THE FRICTION INFORMATIONS
52  CALL get_free_id(nzfi)
53  OPEN(nzfi,file=trim(namezfi),form='FORMATTED',status='OLD')
54  ALLOCATE (friction(npoin), stat=ierr)
55  CALL check_allocate(ierr, 'FRICTION')
56  friction(:) = 0
57  DO j=1,npoin
58  READ(nzfi,*,end=304,err=303) i, val_zfi
59  friction(i) = val_zfi
60  ENDDO
61  CLOSE(nzfi)
62 !
63  DO n=1,nparts
64  nameout=trim(namezfi)//extens(nparts-1,n-1)
65 
66  WRITE(lu,*) 'WRITING: ', trim(nameout)
67 
68  OPEN (nzfi,file=trim(nameout),form='FORMATTED',status='NEW')
69  DO i=1,npoin_p(n)
70  i_glob = knolg(i,n)
71  WRITE(nzfi,*) i, friction(i_glob)
72  END DO
73  CLOSE(nzfi)
74  END DO
75  DEALLOCATE(friction)
76  RETURN
77 !
78  303 WRITE(lu,*) 'ERROR WITH ZONE FILE FORMAT'
79  GO TO 999
80  304 WRITE(lu,*) 'ABNORMAL END OF FILE'
81  GO TO 999
82  999 CALL plante(1)
83  stop
84  END SUBROUTINE
85  END MODULE
subroutine handle_friction_zones(NAMEZFI, NPARTS, NPOIN, NPOIN_P, MAX_NPOIN_P, KNOLG)