6 & shp,imseg,x2dv,y2dv,distor,ikles,
7 & elem,nc2dv,npoin2,nelem2,ncou,fformat,im,jm,
8 & titcas,nva3,tab,textlu,ienre)
77 INTEGER,
INTENT(IN) :: NPOIN2,NELEM2,IM,JM,NC2DV
78 INTEGER,
INTENT(INOUT) :: NCOU(nc2dv)
79 DOUBLE PRECISION ,
INTENT(IN) ::AT
80 DOUBLE PRECISION ,
INTENT(INOUT) :: SHP(im,3,nc2dv)
81 type(bief_obj),
INTENT(INOUT) :: tab
82 INTEGER ,
INTENT(IN) :: IENRE
83 DOUBLE PRECISION,
INTENT(IN) :: U(npoin2,jm),V(npoin2,jm)
84 DOUBLE PRECISION,
INTENT(IN) :: Z(npoin2,jm),W(npoin2,jm)
85 INTEGER,
INTENT(IN) :: IKLES(3,nelem2)
86 INTEGER,
INTENT(IN) :: ELEM(im,nc2dv)
87 INTEGER,
INTENT(INOUT) :: NVA3
88 INTEGER,
INTENT(IN) :: IMSEG(49,nc2dv)
89 DOUBLE PRECISION,
INTENT(IN) :: X2DV(50,nc2dv),Y2DV(50,nc2dv)
90 DOUBLE PRECISION,
INTENT(IN) :: DISTOR(nc2dv)
91 CHARACTER(LEN=8),
INTENT(INOUT) :: FFORMAT
92 CHARACTER(LEN=32),
INTENT(IN) ::TEXTLU(100)
93 CHARACTER(LEN=72),
INTENT(IN) ::TITCAS
98 DOUBLE PRECISION TAB1(im,jm),TAB2(im,jm),TAB3(im,jm)
99 DOUBLE PRECISION LGDEB,LGSEG,ALFA,COST,SINT,A1,A2,A3,U1,V1
101 INTEGER IB(10),IC,N1,N2,N3,I,J,K,CANAL
102 INTEGER ISEG,IDSEG,IFSEG
106 INTEGER IKLE(((im-1)*(jm-1))*2,3),IPOBO(im*jm),NUMELEM
114 CHARACTER(LEN=32) :: VAR_NAME
116 INTEGER DATE(3),TIME(3)
138 CALL ecrdeb(ncou(ic),fformat,titcas,nva3,.false.,
155 IF (i.GT.ifseg.OR.i.EQ.1)
THEN 158 ifseg = ifseg + imseg(iseg,ic)
159 lgdeb = lgdeb + lgseg
160 lgseg = sqrt((x2dv(iseg+1,ic)-x2dv(iseg,ic))**2
161 & +(y2dv(iseg+1,ic)-y2dv(iseg,ic))**2)
164 tab1(i,1) = lgdeb + float(i-idseg)*lgseg/float(ifseg-idseg)
170 tab1(i,j) = tab1(i,1)
171 tab2(i,j) = ( shp(i,1,ic)*z(ikles(1,elem(i,ic)),j)
172 & + shp(i,2,ic)*z(ikles(2,elem(i,ic)),j)
173 & + shp(i,3,ic)*z(ikles(3,elem(i,ic)),j) )
187 ikle(numelem,1) = ((j-1)*im)+i
188 ikle(numelem,2) = ((j-1)*im)+i+1
189 ikle(numelem,3) = ((j)*im)+i+1
191 ikle(numelem,1) = ((j-1)*im)+i
192 ikle(numelem,2) = ((j)*im)+i+1
193 ikle(numelem,3) = ((j)*im)+i
199 ib(1) = ((im-1)*(jm-1)) * 2
213 & ib(2),ikle,ipobo,ipobo,tab1,tab2,0,
214 & date,time,0,0,ierr)
215 CALL check_call(ierr,
'COUPEV:SET_MESH')
226 ifseg = 1 + imseg(1,ic)
227 alfa = atan2(y2dv(2,ic)-y2dv(1,ic),x2dv(2,ic)-x2dv(1,ic))
232 IF (flag) cost = cos(alfa)
233 IF (flag) sint = sin(alfa)
236 IF (i.EQ.ifseg.AND.i.NE.im)
THEN 239 ifseg = ifseg + imseg(iseg,ic)
241 alfa = atan2(y2dv(iseg+1,ic)-y2dv(iseg,ic),
242 & x2dv(iseg+1,ic)-x2dv(iseg,ic))
243 cost = cos(0.5d0*(alfa+a1))
244 sint = sin(0.5d0*(alfa+a1))
247 n1 = ikles(1,elem(i,ic))
248 n2 = ikles(2,elem(i,ic))
249 n3 = ikles(3,elem(i,ic))
256 u1 = a1*u(n1,j) + a2*u(n2,j) + a3*u(n3,j)
257 v1 = a1*v(n1,j) + a2*v(n2,j) + a3*v(n3,j)
261 tab1(i,j) = cost*u1 + sint*v1
265 tab2(i,j) = (a1*w(n1,j)+a2*w(n2,j)+a3*w(n3,j))*distor(ic)
269 tab3(i,j) = -sint*u1 + cost*v1
278 CALL add_data(fformat,canal,var_name,at,irec,.true.,tab1,
280 CALL check_call(ierr,
'COUPEV:ADD_DATA:UT')
285 CALL add_data(fformat,canal,var_name,at,irec,.false.,tab2,
287 CALL check_call(ierr,
'COUPEV:ADD_DATA:W')
292 CALL add_data(fformat,canal,var_name,at,irec,.false.,tab3,
294 CALL check_call(ierr,
'COUPEV:ADD_DATA:UN')
300 tab1(i,j) = shp(i,1,ic)
301 & *prez(ikles(1,elem(i,ic))+(j-1)*npoin2)
303 & *prez(ikles(2,elem(i,ic))+(j-1)*npoin2)
305 & *prez(ikles(3,elem(i,ic))+(j-1)*npoin2)
309 CALL add_data(fformat,canal,var_name,at,irec,.false.,tab1,
311 CALL check_call(ierr,
'COUPEV:ADD_DATA:Z')
319 tab1(i,j) = shp(i,1,ic)
320 & *tab%ADR(k-4)%P%R(ikles(1,elem(i,ic))+(j-1)*npoin2)
322 & *tab%ADR(k-4)%P%R(ikles(2,elem(i,ic))+(j-1)*npoin2)
324 & *tab%ADR(k-4)%P%R(ikles(3,elem(i,ic))+(j-1)*npoin2)
328 CALL add_data(fformat,canal,var_name,at,irec,.false.,tab1,
330 CALL check_call(ierr,
'COUPEV:ADD_DATA:K')
335 CALL check_call(ierr,
'COUPEV:CLOSE_MESH')
subroutine add_data(FFORMAT, FILE_ID, VAR_NAME, TIME, RECORD, FIRST_VAR, VAR_VALUE, N, IERR)
subroutine close_mesh(FFORMAT, FILE_ID, IERR, MESH_NUMBER)
subroutine set_mesh(FFORMAT, FILE_ID, MESH_DIM, TYPELM, NDP, NPTFR, NPTIR, NELEM, NPOIN, IKLE, IPOBO, KNOLG, X, Y, NPLAN, DATE, TIME, X_ORIG, Y_ORIG, IERR, Z, IN_PLACE)
integer, parameter lng_en
subroutine ecrdeb(CANAL, FFORMAT, TITCAS, NBVAR, C2DH, TEXTLU, IC, N)
integer, parameter triangle_elt_type
integer, parameter lng_fr
Y. AUDOUIN & J-M HERVOUET (EDF LAB, LNHE) 09/05/2014 V7P0 First version.
double precision, dimension(:), pointer z
subroutine coupev(AT, Z, U, V, W, SHP, IMSEG, X2DV, Y2DV, DISTOR, IKLES, ELEM, NC2DV, NPOIN2, NELEM2, NCOU, FFORMAT, IM, JM, TITCAS, NVA3, TAB, TEXTLU, IENRE)