57 USE user_interface_mod
62#include
"implicit_f.inc"
66 INTEGER,
INTENT(IN) :: NUMBER_USERNODS
67 INTEGER,
INTENT(IN),
DIMENSION(NUMBER_USERNODS) :: USERNODS
71 INTEGER I,NOD,INTERNAL_NOD,USERWI_ID
72 INTEGER,
DIMENSION(:),
ALLOCATABLE::WORK,USER_NDS,IDX,SORT
73 CHARACTER(len=40) :: MESS
74 DATA mess/
'USER WINDOWS '/
79 userwi_id = user_windows%USER_WINDOWS_ID
80 user_windows%N_USERNODS = number_usernods
82 CALL my_alloc(user_nds,number_usernods)
83 CALL my_alloc(user_windows%USERNODS,number_usernods)
88 DO i=1,number_usernods
90 internal_nod = usr2sys(nod,
itabm1,mess,userwi_id )
91 user_nds(i) = internal_nod
95 CALL my_alloc(work,70000)
96 CALL my_alloc(idx,2*number_usernods)
97 CALL my_alloc(sort,number_usernods)
98 DO i=1,number_usernods
102 CALL my_orders(0,work,sort,idx,number_usernods,1)
103 DO i=1,number_usernods
104 user_windows%USERNODS(i) = sort(idx(i))
181 ! -----------------------------------------------
207#include "implicit_f.inc"
212 INTEGER,
DIMENSION(1:NUMNOD),
INTENT(IN) :: NODLOCAL
213 INTEGER ,
INTENT(IN) :: P,NSPMD,NUMNOD,NUMNOD_L
217 INTEGER,
DIMENSION(:),
ALLOCATABLE::FR_USERWI_L
218 INTEGER,
DIMENSION(:),
ALLOCATABLE::IAD_USERW,IAD_USERW2,USERNODS_L
219 INTEGER,
DIMENSION(:),
ALLOCATABLE::PLIST
221 INTEGER SFR_USERWI_L,SPLIST,NP,K
222 my_real,
DIMENSION(:),
ALLOCATABLE :: dum_sav
229 CALL write_i_c(user_windows%HAS_USER_WINDOW,1)
230 IF(user_windows%HAS_USER_WINDOW /= 0 )
THEN
236 CALL my_alloc(iad_userw,nspmd+1)
237 CALL my_alloc(plist,nspmd)
238 iad_userw(1:nspmd+1)=0
240 DO ii=1,user_windows%N_USERNODS
241 i = user_windows%USERNODS(ii)
246 iad_userw(np+1)=iad_userw(np+1)+1
253 iad_userw(np)=iad_userw(np) + iad_userw(np-1)
255 sfr_userwi_l = iad_userw(nspmd+1)-1
256 CALL my_alloc(fr_userwi_l,sfr_userwi_l)
257 CALL my_alloc(iad_userw2,nspmd+1)
258 iad_userw2(1:nspmd+1) = iad_userw(1:nspmd+1)
260 DO ii=1,user_windows%N_USERNODS
261 i = user_windows%USERNODS(ii)
266 fr_userwi_l(k) = nodlocal(k)
267 iad_userw2(np) = iad_userw2(np) + 1
273 CALL my_alloc(usernods_l,user_windows%N_USERNODS)
274 DO i=1,user_windows%N_USERNODS
275 usernods_l(i) = nodlocal(user_windows%USERNODS(i))
285 CALL write_i_c(user_windows%N_USERNODS,1)
286 CALL write_i_c(user_windows%IUSER,user_windows%S_IUSER)
287 CALL write_db(user_windows%USREINT,1)
288 CALL write_db(user_windows%USER,user_windows%S_USER)
289 CALL write_i_c(usernods_l,user_windows%N_USERNODS)
295 IF(
ALLOCATED(usernods_l))
DEALLOCATE(usernods_l)
296 IF(
ALLOCATED(iad_userw))
DEALLOCATE(iad_userw)
297 IF(
ALLOCATED(fr_userwi_l))
DEALLOCATE(fr_userwi_l)
300 ALLOCATE(dum_sav(3*numnod_l))
301 dum_sav(1:3*numnod_l)=zero
307 CALL my_alloc(fr_userwi_l,user_windows%N_USERNODS)
308 fr_userwi_l(1:user_windows%N_USERNODS)=0
310 DO ii=1,user_windows%N_USERNODS
312 i = user_windows%USERNODS(ii)
314 sfr_userwi_l = sfr_userwi_l +1
315 fr_userwi_l(sfr_userwi_l) = nodlocal(i)
325 IF(
ALLOCATED(fr_userwi_l))
DEALLOCATE(fr_userwi_l)