SPEED
FIND_MONITOR_POSITION.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine find_monitor_position ()
 Find monitor position an writes MLST.input or MPGM.
 

Function/Subroutine Documentation

◆ find_monitor_position()

subroutine find_monitor_position

Find monitor position an writes MLST.input or MPGM.

input files.

Author
Ilario Mazzieri
Date
September, 2013
Version
1.0

Definition at line 25 of file FIND_MONITOR_POSITION.f90.

26
27 use max_var
28 use speed_par
29
30
31 implicit none
32
33 include 'SPEED.MPI'
34
35! if (num_pgm.eq.1) then
36! if (nelem_loc .gt. 0) then
37! allocate (highest_pgm_loc(nelem_loc))
38! endif
39! call GET_HIGHEST_NODE(nnod_loc, nelem_loc, zz_spx_loc,&
40! local_node_num, con_nnz_loc, con_spx_loc, &
41! nmat, tag_mat, sdeg_mat, highest_pgm_loc)
42! endif
43
44 if (num_lst.eq.1) then
45 if (nelem_loc .gt. 0) then
46 allocate (highest_lst_loc(nelem_loc))
47 endif
51 endif
52
53
54 if (mpi_id.eq.0) then
55 write(*,'(A)')
56 write(*,'(A)') '--------------------Monitored points------------------'
57 endif
58
59!****************************************************************************************************
60! MONITORED NODES - Peak Ground Map -
61!****************************************************************************************************
62
64! if (num_pgm.eq.1) then
65 !ATTENTION THIS PART SHUOLD BE MODIFIED ACCORDING TO THE CORRESPONDING LS.input PART
66 !IN ORDER TO AVOID MEMORY OVERFLOW
67! file_PG = 'PG.input'
68! call READ_DIME_FILEPG(file_PG,nmonitors_pgm)
69
70! allocate(n_monitor_pgm(nmonitors_pgm),el_monitor_pgm(nmonitors_pgm),dist_monitor_pgm(nmonitors_pgm))
71! allocate(x_monitor_pgm(nmonitors_pgm),y_monitor_pgm(nmonitors_pgm),z_monitor_pgm(nmonitors_pgm))
72! allocate(xr_monitor_pgm(nmonitors_pgm),yr_monitor_pgm(nmonitors_pgm),zr_monitor_pgm(nmonitors_pgm))
73
74
75
76! call READ_FILEPG(file_PG,nmonitors_pgm,x_monitor_pgm,y_monitor_pgm,z_monitor_pgm)
77
78! if (file_mon_pgm.eq.0) then ! NO input file with the position of LST monitors
79
80! do i = 1,nmonitors_pgm
81! call GET_NEAREST_NODE_PGM(nnod_loc, xx_spx_loc, yy_spx_loc, zz_spx_loc,&
82! x_monitor_pgm(i), y_monitor_pgm(i), z_monitor_pgm(i),&
83! n_monitor_pgm(i), dist_monitor_pgm(i), depth_search_mon_pgm)
84
85
86! call GET_PNT_POS_PGM(nelem_loc,&
87! alfa11,alfa12,alfa13,alfa21,alfa22,alfa23,&
88! alfa31,alfa32,alfa33,beta11,beta12,beta13,&
89! beta21,beta22,beta23,beta31,beta32,beta33,&
90! gamma1,gamma2,gamma3,delta1,delta2,delta3,&
91! x_monitor_pgm(i),y_monitor_pgm(i),z_monitor_pgm(i),&
92! el_monitor_pgm(i),xr_monitor_pgm(i),yr_monitor_pgm(i),zr_monitor_pgm(i),&
93! highest_pgm_loc, depth_search_mon_pgm)
94
95
96! xr_monitor_pgm(i) = xx_spx_loc(n_monitor_pgm(i))
97! yr_monitor_pgm(i) = yy_spx_loc(n_monitor_pgm(i))
98! zr_monitor_pgm(i) = zz_spx_loc(n_monitor_pgm(i))
99! n_monitor_pgm(i) = local_node_num(n_monitor_pgm(i))
100! el_monitor_pgm(i) = local_el_num(el_monitor_pgm(i))
101
102! enddo
103
104! allocate(dist_glo(nmonitors_pgm*mpi_np),n_glo(nmonitors_pgm*mpi_np), el_glo(nmonitors_pgm*mpi_np))
105! allocate(xr_glo(nmonitors_pgm*mpi_np), yr_glo(nmonitors_pgm*mpi_np), zr_glo(nmonitors_pgm*mpi_np))
106
107! call MPI_BARRIER(mpi_comm, mpi_ierr)
108
109! call MPI_ALLGATHER(dist_monitor_pgm, nmonitors_pgm, SPEED_DOUBLE, dist_glo, nmonitors_pgm, &
110! SPEED_DOUBLE, mpi_comm, mpi_ierr)
111! call MPI_ALLGATHER(xr_monitor_pgm, nmonitors_pgm, SPEED_DOUBLE, xr_glo, nmonitors_pgm, &
112! SPEED_DOUBLE, mpi_comm, mpi_ierr)
113! call MPI_ALLGATHER(yr_monitor_pgm, nmonitors_pgm, SPEED_DOUBLE, yr_glo, nmonitors_pgm, &
114! SPEED_DOUBLE, mpi_comm, mpi_ierr)
115! call MPI_ALLGATHER(zr_monitor_pgm, nmonitors_pgm, SPEED_DOUBLE, zr_glo, nmonitors_pgm, &
116! SPEED_DOUBLE, mpi_comm, mpi_ierr)
117
118! call MPI_ALLGATHER(n_monitor_pgm, nmonitors_pgm, SPEED_INTEGER, n_glo, nmonitors_pgm, &
119! SPEED_INTEGER, mpi_comm, mpi_ierr)
120! call MPI_ALLGATHER(el_monitor_pgm, nmonitors_pgm, SPEED_INTEGER, el_glo, nmonitors_pgm, &
121! SPEED_INTEGER, mpi_comm, mpi_ierr)
122
123! call GET_MINVALUES(n_glo, dist_glo, nmonitors_pgm*mpi_np, n_monitor_pgm, nmonitors_pgm, mpi_np)
124
125
126! j = 1
127! do while(j .le. nmonitors_pgm)
128! call GET_INDLOC_FROM_INDGLO(n_glo, nmonitors_pgm*mpi_np, n_monitor_pgm(j), ic)
129! xr_monitor_pgm(j) = xr_glo(ic)
130! yr_monitor_pgm(j) = yr_glo(ic)
131! zr_monitor_pgm(j) = zr_glo(ic)
132! el_monitor_pgm(j) = el_glo(ic)
133! j=j+1
134! enddo
135
136! deallocate(dist_glo, n_glo, el_glo, xr_glo, yr_glo, zr_glo, dist_monitor_pgm)
137
138! file_MPGM = 'MPGM.input'
139! call WRITE_FILE_MPGM(file_MPGM, nmonitors_pgm, n_monitor_pgm, el_monitor_pgm,&
140! xr_monitor_pgm, yr_monitor_pgm, zr_monitor_pgm)
141
142! else ! YES, it exists an input file with the position of PGM monitors
143
144! file_MPGM = 'MPGM.input'
145! call READ_FILE_MPGM(file_MPGM, nmonitors_pgm, n_monitor_pgm, el_monitor_pgm,&
146! xr_monitor_pgm, yr_monitor_pgm, zr_monitor_pgm)
147
148! endif
149
150! deallocate(highest_pgm_loc)
151
152
153! if (nmonitors_pgm .gt. 0) then
154! allocate(max_u(nmonitors_pgm,9))
155! allocate(max_v(nmonitors_pgm,9))
156! allocate(max_a(nmonitors_pgm,9))
157! allocate(max_o(nmonitors_pgm,3))
158! max_u = 0.0d0
159! max_v = 0.0d0
160! max_a = 0.0d0
161! max_o = 0.0d0
162! endif
163
164! endif
165
166
167 if (mpi_id.eq.0) then
168 write(*,'(A)')
169 write(*,'(A,I10)') 'Monitored points Peak Ground Map: ',nmonitors_pgm
170 write(*,'(A,I2)') 'File MPGM : ',file_mon_pgm
171 endif
172
173
174
175!*****************************************************************************************
176! MONITORED NODES - Monitor LiST -
177!*****************************************************************************************
178
179
180 nmonitors_lst = 0
181 if (num_lst .eq. 1) then
182
183
184 file_ls = 'LS.input'
186
190
191
193
194 if (file_mon_lst.eq.0) then ! NO input file with the position of LST monitors
196
197 do i = 1,nmonitors_lst
198
199 ! write(*,*) 'mon' ,i
203
212
213
219
220
221 enddo
222
223
224
225
226 j = 1
227 do while(j .le. nmonitors_lst)
228 ! write(*,*) 'monitor numero', j
229
231 allocate(xr_glo(mpi_np), yr_glo(mpi_np), zr_glo(mpi_np))
233
234 call mpi_barrier(mpi_comm, mpi_ierr)
235
236 call mpi_allgather(dist_monitor_lst(j), 1, speed_double, dist_glo, 1, speed_double, mpi_comm, mpi_ierr)
237 call mpi_allgather(xr_monitor_lst(j), 1, speed_double, xr_glo, 1, speed_double, mpi_comm, mpi_ierr)
238 call mpi_allgather(yr_monitor_lst(j), 1, speed_double, yr_glo, 1, speed_double, mpi_comm, mpi_ierr)
239 call mpi_allgather(zr_monitor_lst(j), 1, speed_double, zr_glo, 1, speed_double, mpi_comm, mpi_ierr)
240 call mpi_allgather(n_monitor_lst(j), 1, speed_integer, n_glo, 1, speed_integer, mpi_comm, mpi_ierr)
241 call mpi_allgather(el_monitor_lst(j), 1, speed_integer, el_glo, 1, speed_integer, mpi_comm, mpi_ierr)
242 call mpi_allgather(x_monitor_real(j), 1, speed_double, x_glo_real, 1, speed_double, mpi_comm, mpi_ierr)
243 call mpi_allgather(y_monitor_real(j), 1, speed_double, y_glo_real, 1, speed_double, mpi_comm, mpi_ierr)
244 call mpi_allgather(z_monitor_real(j), 1, speed_double, z_glo_real, 1, speed_double, mpi_comm, mpi_ierr)
245
246
247
249
250 ! write(*,*) mpi_id, n_monitor_lst(j)
251 ! call MPI_BARRIER(mpi_comm, mpi_ierr)
252
254
262 j=j+1
263
264 deallocate(dist_glo, n_glo, el_glo, xr_glo, yr_glo, zr_glo, &
266 enddo
267 deallocate(dist_monitor_lst)
268
269 if(mpi_id.eq. 0) then
270 file_mlst = 'MLST.input'
271 call write_file_mpgm(file_mlst, nmonitors_lst, n_monitor_lst, el_monitor_lst, &
273 filename = 'MLST.position'
274 call write_file_mpgm(filename, nmonitors_lst, n_monitor_lst, el_monitor_lst, &
276
277
278 endif
280
281 else ! YES, it exists an input file with the position of LST monitors
282
283 file_mlst = 'MLST.input'
286
287 endif
288
289
290 deallocate(highest_lst_loc)
291
292 else
293 write(*,'(A)') 'MLST key not found!'
294
295 endif
296
297
298 if (mpi_id.eq.0) then
299 write(*,'(A)')
300 write(*,'(A,I10)') 'Monitored points LST: ',nmonitors_lst
301 write(*,'(A,I2)') 'File MLST : ',file_mon_lst
302 endif
303
304 call mpi_barrier(mpi_comm, mpi_ierr)
305
306!----------------------------------------------------------------------------------
307! WRITING MONITOR.INFO
308!----------------------------------------------------------------------------------
309
310 if(mpi_id .eq. 0) then
311
312 allocate(monit_files(mpi_np))
313 monit_files = 0
314
315 do i = 1, nmonitors_lst
317 enddo
318
319 if(len_trim(monitor_file) .ne. 70) then
320 monitor_file_new = monitor_file(1:len_trim(monitor_file)) // '/MONITOR.INFO'
321 else
322 monitor_file_new = 'MONITOR.INFO'
323 endif
324
325
326 open(unit=50,file=monitor_file_new)
327 write(50,*) tstop
328 write(50,*) deltat
329 write(50,*) ndt_mon_lst
330 write(50,*) mpi_np
331 do i = 1, mpi_np
332 write(50,*) monit_files(i)
333 enddo
334 close(50)
335
336 deallocate(monit_files)
337 endif
338
339
340
341
subroutine get_highest_node(nn_loc, ne_loc, zz_loc, loc_n_num, nnz
Computes the highest node of the mesh (z-dir)
subroutine get_indloc_from_indglo(local_el, nel_loc, ie, ic)
Returns local id from global id.
subroutine get_minvalues(i_glo, v_glo, n_glo, i_loc, n_loc, np)
Computes positions of minimum values.
subroutine get_nearest_node_pgm(nloc, xs, ys, zs, xt, yt, zt, nt, dist_min
Computes the nearest node with respet to (xt,yt,zt) starting from a given elevation.
subroutine get_pnt_pos_pgm(nb_el, aa11, aa12, aa13, aa21, aa22, aa23, aa31, aa32, aa33, bb11, bb12, bb13, bb21, bb22, bb23, bb31, bb32, bb33, gg1, gg2, gg3, dd1, dd2, dd3, x_true, y_true, z_true, el, xref, yref, zref,
Findes node coordinates in the reference element.
subroutine read_dime_filepg(filec, num_nodes)
Reads dimension of monitor files.
subroutine read_filepg(filec, num_nodes, x, y, z)
Reads LS.input file.
subroutine read_file_mpgm(filec, nmonitors_pgm, n_monitor_pgm, el_monitor_pgm, xr_monitor_pgm, yr_monitor_pgm, zr_monitor_pgm)
Reads files such as MLST.input, MLST.position or MPGM.input.
Set maximal bounds.
Definition MODULES.f90:54
Contains SPEED PARAMETERS used in (SPEED, READ_INPUT_FILES, MAKE_PARTION_AND_MPI_FILES,...
Definition MODULES.f90:207
real *8, dimension(:), allocatable y_monitor_lst
Definition MODULES.f90:417
real *8, dimension(:), allocatable x_monitor_lst
Definition MODULES.f90:417
real *8, dimension(:), allocatable dist_glo
Definition MODULES.f90:417
real *8, dimension(:), allocatable delta2
Definition MODULES.f90:408
integer *4 nmat
Definition MODULES.f90:269
real *8, dimension(:), allocatable gamma3
Definition MODULES.f90:408
integer *4, dimension(:), allocatable local_el_num
Definition MODULES.f90:322
real *8, dimension(:), allocatable gamma2
Definition MODULES.f90:408
real *8, dimension(:), allocatable delta3
Definition MODULES.f90:408
real *8, dimension(:), allocatable alfa23
Definition MODULES.f90:408
real *8, dimension(:), allocatable beta13
Definition MODULES.f90:408
integer *4 j
Definition MODULES.f90:263
character *70 monitor_file_new
Definition MODULES.f90:243
integer *4 file_mon_lst
Definition MODULES.f90:298
real *8, dimension(:), allocatable alfa33
Definition MODULES.f90:408
real *8, dimension(:), allocatable alfa11
Definition MODULES.f90:408
integer *4 con_nnz_loc
Definition MODULES.f90:269
real *8, dimension(:), allocatable beta21
Definition MODULES.f90:408
integer *4 nmonitors_pgm
Definition MODULES.f90:269
real *8, dimension(:), allocatable yr_glo
Definition MODULES.f90:417
real *8, dimension(:), allocatable dist_monitor_lst
Definition MODULES.f90:417
real *8, dimension(:), allocatable delta1
Definition MODULES.f90:408
real *8, dimension(:), allocatable zr_monitor_lst
Definition MODULES.f90:417
real *8, dimension(:), allocatable beta23
Definition MODULES.f90:408
real *8, dimension(:), allocatable zz_spx_loc
Definition MODULES.f90:408
integer *4 i
Definition MODULES.f90:263
real *8, dimension(:), allocatable z_glo_real
Definition MODULES.f90:417
character *70 file_ls
Definition MODULES.f90:243
integer *4 ic
Definition MODULES.f90:263
real *8, dimension(:), allocatable yy_spx_loc
Definition MODULES.f90:408
real *8, dimension(:), allocatable alfa13
Definition MODULES.f90:408
integer *4, dimension(:), allocatable el_monitor_lst
Definition MODULES.f90:358
real *8, dimension(:), allocatable y_glo_real
Definition MODULES.f90:417
real *8, dimension(:), allocatable beta12
Definition MODULES.f90:408
real *8, dimension(:), allocatable xr_glo
Definition MODULES.f90:417
character *70 monitor_file
Definition MODULES.f90:243
real *8 deltat
Definition MODULES.f90:393
integer *4 ndt_mon_lst
Definition MODULES.f90:308
real *8, dimension(:), allocatable beta11
Definition MODULES.f90:408
real *8, dimension(:), allocatable alfa31
Definition MODULES.f90:408
integer *4 mpi_comm
Definition MODULES.f90:308
integer *4, dimension(:), allocatable local_node_num
Definition MODULES.f90:322
real *8 tstop
Definition MODULES.f90:393
integer *4 mpi_ierr
Definition MODULES.f90:298
integer *4, dimension(:), allocatable el_glo
Definition MODULES.f90:322
integer *4, dimension(:), allocatable sdeg_mat
Definition MODULES.f90:335
real *8, dimension(:), allocatable x_glo_real
Definition MODULES.f90:417
real *8, dimension(:), allocatable beta22
Definition MODULES.f90:408
real *8, dimension(:), allocatable beta31
Definition MODULES.f90:408
integer *4 nelem_loc
Definition MODULES.f90:269
real *8, dimension(:), allocatable x_monitor_real
Definition MODULES.f90:417
integer *4, dimension(:), allocatable con_spx_loc
Definition MODULES.f90:322
real *8, dimension(:), allocatable alfa21
Definition MODULES.f90:408
real *8, dimension(:), allocatable zr_glo
Definition MODULES.f90:417
integer *4, dimension(:), allocatable n_monitor_lst
Definition MODULES.f90:358
real *8, dimension(:), allocatable z_monitor_lst
Definition MODULES.f90:417
character *70 filename
Definition MODULES.f90:243
real *8, dimension(:), allocatable alfa22
Definition MODULES.f90:408
real *8, dimension(:), allocatable highest_lst_loc
Definition MODULES.f90:417
real *8, dimension(:), allocatable beta33
Definition MODULES.f90:408
integer *4 file_mon_pgm
Definition MODULES.f90:298
integer *4, dimension(:), allocatable tag_mat
Definition MODULES.f90:335
integer *4, dimension(:), allocatable n_glo
Definition MODULES.f90:322
real *8, dimension(:), allocatable z_monitor_real
Definition MODULES.f90:417
real *8, dimension(:), allocatable gamma1
Definition MODULES.f90:408
integer *4 num_lst
Definition MODULES.f90:269
integer *4 mpi_np
Definition MODULES.f90:308
integer *4 nmonitors_lst
Definition MODULES.f90:269
character *70 file_mlst
Definition MODULES.f90:243
real *8, dimension(:), allocatable xr_monitor_lst
Definition MODULES.f90:417
integer *4 mpi_id
Definition MODULES.f90:308
real *8, dimension(:), allocatable alfa32
Definition MODULES.f90:408
real *8, dimension(:), allocatable y_monitor_real
Definition MODULES.f90:417
integer *4 nnod_loc
Definition MODULES.f90:269
real *8, dimension(:), allocatable yr_monitor_lst
Definition MODULES.f90:417
real *8, dimension(:), allocatable xx_spx_loc
Definition MODULES.f90:408
integer *4, dimension(:), allocatable monit_files
Definition MODULES.f90:358
real *8, dimension(:), allocatable beta32
Definition MODULES.f90:408
real *8 depth_search_mon_lst
Definition MODULES.f90:393
integer *4, dimension(:), allocatable elem_domain
Definition MODULES.f90:322
real *8, dimension(:), allocatable alfa12
Definition MODULES.f90:408

References speed_par::alfa11, speed_par::alfa12, speed_par::alfa13, speed_par::alfa21, speed_par::alfa22, speed_par::alfa23, speed_par::alfa31, speed_par::alfa32, speed_par::alfa33, speed_par::beta11, speed_par::beta12, speed_par::beta13, speed_par::beta21, speed_par::beta22, speed_par::beta23, speed_par::beta31, speed_par::beta32, speed_par::beta33, speed_par::con_nnz_loc, speed_par::con_spx_loc, speed_par::delta1, speed_par::delta2, speed_par::delta3, speed_par::deltat, speed_par::depth_search_mon_lst, speed_par::dist_glo, speed_par::dist_monitor_lst, speed_par::el_glo, speed_par::el_monitor_lst, speed_par::elem_domain, speed_par::file_ls, speed_par::file_mlst, speed_par::file_mon_lst, speed_par::file_mon_pgm, speed_par::filename, speed_par::gamma1, speed_par::gamma2, speed_par::gamma3, get_highest_node(), get_indloc_from_indglo(), get_minvalues(), get_nearest_node_pgm(), get_pnt_pos_pgm(), speed_par::highest_lst_loc, speed_par::i, speed_par::ic, speed_par::j, speed_par::local_el_num, speed_par::local_node_num, speed_par::monit_files, speed_par::monitor_file, speed_par::monitor_file_new, speed_par::mpi_comm, speed_par::mpi_id, speed_par::mpi_ierr, speed_par::mpi_np, speed_par::n_glo, speed_par::n_monitor_lst, speed_par::ndt_mon_lst, speed_par::nelem_loc, speed_par::nmat, speed_par::nmonitors_lst, speed_par::nmonitors_pgm, speed_par::nnod_loc, speed_par::num_lst, read_dime_filepg(), read_file_mpgm(), read_filepg(), speed_par::sdeg_mat, speed_par::tag_mat, speed_par::tstop, speed_par::x_glo_real, speed_par::x_monitor_lst, speed_par::x_monitor_real, speed_par::xr_glo, speed_par::xr_monitor_lst, speed_par::xx_spx_loc, speed_par::y_glo_real, speed_par::y_monitor_lst, speed_par::y_monitor_real, speed_par::yr_glo, speed_par::yr_monitor_lst, speed_par::yy_spx_loc, speed_par::z_glo_real, speed_par::z_monitor_lst, speed_par::z_monitor_real, speed_par::zr_glo, speed_par::zr_monitor_lst, and speed_par::zz_spx_loc.

Here is the call graph for this function: