SPEED
READ_SYSTEM_POSITION.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine read_system_position ()
 Reads oscillator position and writes SYSLST.input file.
 

Function/Subroutine Documentation

◆ read_system_position()

subroutine read_system_position

Reads oscillator position and writes SYSLST.input file.

Author
Aline Herlin, Srihari Sangaraju
Date
February, 2021
Version
1.0

Definition at line 24 of file READ_SYSTEM_POSITION.f90.

25
26 use speed_par
27 use speed_sci, only : sdofnum, rot_sin, rot_cos
28
29 implicit none
30
31 include 'SPEED.MPI'
32
33 real*8, dimension(:), allocatable :: rot_theta
34
35 if (sys_lst.eq.1) then
36 if (nelem_loc .gt. 0) then
38 endif
42 endif
43
44
45 if (mpi_id.eq.0) then
46 write(*,'(A)')
47 write(*,'(A)') '--------------------SDOF System location--------------------'
48 endif
49
50
51!*****************************************************************************************
52! OSCILLATOR POSITION
53!*****************************************************************************************
54
55 sdofnum = 0
56
57 if (sys_lst .eq. 1) then
58
59 file_sys = 'SYS.input'
61
62 if (sdofnum.gt.0) then
63
66 allocate(rot_sin(sdofnum), rot_cos(sdofnum), rot_theta(sdofnum))
68
70
71 !Modified, so that In a simulation both types of Point sources (usual point sources and SDOF Oscillators) can be used (-SS)
72 ! do i=1,SDOFnum
73 ! do j=1,nload_poiX_el
74 ! if(system_label(i).eq.building_id_x(j)) then
75 ! val_poiX_el(j,1) = x_system_lst(i); val_poiX_el(j,2) = y_system_lst(i); val_poiX_el(j,3) = z_system_lst(i);
76 ! endif
77 ! enddo
78 ! do j=1,nload_poiY_el
79 ! if(system_label(i).eq.building_id_y(j)) then
80 ! val_poiY_el(j,1) = x_system_lst(i); val_poiY_el(j,2) = y_system_lst(i); val_poiY_el(j,3) = z_system_lst(i);
81 ! endif
82 ! enddo
83 ! do j=1,nload_poiZ_el
84 ! if(system_label(i).eq.building_id_z(j)) then
85 ! val_poiZ_el(j,1) = x_system_lst(i); val_poiZ_el(j,2) = y_system_lst(i); val_poiZ_el(j,3) = z_system_lst(i);
86 ! endif
87 ! enddo
88 ! enddo
89
90 if (file_sys_lst.eq.0) then ! NO input file with the position of oscillators
92
93 do i = 1,sdofnum
94
98
107
108
114
115 enddo
116
117 j = 1
118
119 do while(j .le. sdofnum)
123
124 call mpi_barrier(mpi_comm, mpi_ierr)
125 call mpi_allgather(dist_system_lst(j), 1, speed_double, dist_system_glo, 1, speed_double, mpi_comm, mpi_ierr)
126 call mpi_allgather(xr_system_lst(j), 1, speed_double, xr_system_glo, 1, speed_double, mpi_comm, mpi_ierr)
127 call mpi_allgather(yr_system_lst(j), 1, speed_double, yr_system_glo, 1, speed_double, mpi_comm, mpi_ierr)
128 call mpi_allgather(zr_system_lst(j), 1, speed_double, zr_system_glo, 1, speed_double, mpi_comm, mpi_ierr)
129 call mpi_allgather(n_system_lst(j), 1, speed_integer, n_system_glo, 1, speed_integer, mpi_comm, mpi_ierr)
130 call mpi_allgather(el_system_lst(j), 1, speed_integer, el_system_glo, 1, speed_integer, mpi_comm, mpi_ierr)
131 call mpi_allgather(x_system_real(j), 1, speed_double, x_system_glo_real, 1, speed_double, mpi_comm, mpi_ierr)
132 call mpi_allgather(y_system_real(j), 1, speed_double, y_system_glo_real, 1, speed_double, mpi_comm, mpi_ierr)
133 call mpi_allgather(z_system_real(j), 1, speed_double, z_system_glo_real, 1, speed_double, mpi_comm, mpi_ierr)
134
136
137 ! Do we really need this step? the partition containing nearest node is already saved in n_system_lst
139
147
148 j=j+1
149
152 enddo
153
154 deallocate(dist_system_lst)
155
156 if(mpi_id.eq. 0) then
157
158 file_syslst = 'SLST.input'
159 call write_file_mpgm_sys(file_syslst, sdofnum, n_system_lst, el_system_lst, &
161
162 sys_filename = 'SLST.position'
163 call write_file_mpgm_sys(sys_filename, sdofnum, n_system_lst, el_system_lst, &
165
166 endif
167
169
170 else ! YES, it exists an input file with the position of LST monitors
171
172 file_syslst = 'SLST.input'
175
176 endif
177
178 deallocate(highest_sys_lst_loc)
179
180 endif
181 else
182 write(*,'(A)') 'SYSLST key not found!'
183
184 endif
185
186 if (mpi_id.eq.0) then
187 write(*,'(A)')
188 write(*,'(A,I10)') 'SYStem positionLST: ',sdofnum
189 write(*,'(A,I2)') 'File SYSLST : ',file_sys_lst
190 endif
191
192 call mpi_barrier(mpi_comm, mpi_ierr)
193
194 do i=1,sdofnum
195 rot_sin(i) = dsin(rot_theta(i))
196 rot_cos(i) = dcos(rot_theta(i))
197 enddo
198 deallocate(rot_theta)
199
200 !-----------------------------------------------------------------------------------
201 ! Mapping SDOF oscillators to nearest LGL nodes
202 !------------------------------------------------------------------------------------
203 ! node_counter_sdof = number of partitions sharing the LGL node where SDOF point load is applied
208
209 !----------------------------------------------------------------------------------
210 ! WRITING SDOF_SYSTEM.INFO
211 !----------------------------------------------------------------------------------
212
213 if(mpi_id .eq. 0) then
214
215 allocate(system_files(mpi_np))
216 system_files = 0
217
218 do i = 1, sdofnum
219 !write(*,*) 'el_system_lst(i) ', el_system_lst(i), 'elem_domain ', elem_domain(el_system_lst(i)), 'system files ', system_files(elem_domain(el_system_lst(i))+1)
221 enddo
222
223 if(len_trim(monitor_file) .ne. 70) then
224 monitor_file_new = monitor_file(1:len_trim(monitor_file)) // '/SDOF_SYSTEM.INFO'
225 else
226 monitor_file_new = 'SDOF_SYSTEM.INFO'
227 endif
228
229
230 open(unit=50,file=monitor_file_new)
231 write(50,*) mpi_np
232 write(50,*) sdofnum
233 do i = 1, mpi_np
234 write(50,*) system_files(i)
235 enddo
236 close(50)
237
238 deallocate(system_files)
239 endif
240
241
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 make_system_position_lglnodes(nn_loc, local_node_num, cs_nnz_loc, cs_loc, xs_loc, ys_loc, zs_loc, nsdof, sys_label, x_system_lst, y_system_lst, z_system_lst, mpi_id, mpi_comm, mpi_np)
Reads oscillator position from SYS.input, and finds to which local-LGL node it should be applied.
subroutine read_dime_filepg(filec, num_nodes)
Reads dimension of monitor files.
subroutine read_filesys(filec, num_nodes, label, x, y, z, axis_rot)
Reads SYS.input file.
subroutine read_file_mpgm_sys(filec, sdofnum, n_monitor_pgm, el_monitor_pgm, xr_monitor_pgm, yr_monitor_pgm, zr_monitor_pgm, axi
Reads files such as MLST.input, MLST.position or MPGM.input.
Contains SPEED PARAMETERS used in (SPEED, READ_INPUT_FILES, MAKE_PARTION_AND_MPI_FILES,...
Definition MODULES.f90:207
real *8, dimension(:), allocatable yr_system_glo
Definition MODULES.f90:417
real *8, dimension(:), allocatable x_system_real
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 z_system_glo_real
Definition MODULES.f90:417
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
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
integer *4 sys_lst
Definition MODULES.f90:269
real *8, dimension(:), allocatable z_system_real
Definition MODULES.f90:417
real *8, dimension(:), allocatable zr_system_glo
Definition MODULES.f90:417
real *8, dimension(:), allocatable beta21
Definition MODULES.f90:408
real *8, dimension(:), allocatable delta1
Definition MODULES.f90:408
character *70 file_syslst
Definition MODULES.f90:243
real *8, dimension(:), allocatable beta23
Definition MODULES.f90:408
character *70 file_sys
Definition MODULES.f90:243
real *8, dimension(:), allocatable zz_spx_loc
Definition MODULES.f90:408
integer *4 i
Definition MODULES.f90:263
integer *4, dimension(:), allocatable el_system_lst
Definition MODULES.f90:358
real *8, dimension(:), allocatable y_system_lst
Definition MODULES.f90:417
real *8, dimension(:), allocatable yr_system_lst
Definition MODULES.f90:417
integer *4 ic
Definition MODULES.f90:263
real *8, dimension(:), allocatable yy_spx_loc
Definition MODULES.f90:408
integer *4, dimension(:), allocatable n_system_glo
Definition MODULES.f90:322
real *8, dimension(:), allocatable alfa13
Definition MODULES.f90:408
real *8, dimension(:), allocatable beta12
Definition MODULES.f90:408
character *70 monitor_file
Definition MODULES.f90:243
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, dimension(:), allocatable dist_system_glo
Definition MODULES.f90:417
integer *4 mpi_ierr
Definition MODULES.f90:298
real *8, dimension(:), allocatable zr_system_lst
Definition MODULES.f90:417
integer *4, dimension(:), allocatable system_files
Definition MODULES.f90:358
real *8 depth_search_sys_lst
Definition MODULES.f90:393
integer *4, dimension(:), allocatable sdeg_mat
Definition MODULES.f90:335
real *8, dimension(:), allocatable x_system_lst
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
integer *4, dimension(:), allocatable con_spx_loc
Definition MODULES.f90:322
real *8, dimension(:), allocatable alfa21
Definition MODULES.f90:408
real *8, dimension(:), allocatable x_system_glo_real
Definition MODULES.f90:417
character *70 sys_filename
Definition MODULES.f90:243
integer *4, dimension(:), allocatable el_system_glo
Definition MODULES.f90:322
real *8, dimension(:), allocatable alfa22
Definition MODULES.f90:408
real *8, dimension(:), allocatable beta33
Definition MODULES.f90:408
integer *4, dimension(:), allocatable tag_mat
Definition MODULES.f90:335
real *8, dimension(:), allocatable xr_system_glo
Definition MODULES.f90:417
real *8, dimension(:), allocatable gamma1
Definition MODULES.f90:408
real *8, dimension(:), allocatable y_system_real
Definition MODULES.f90:417
real *8, dimension(:), allocatable xr_system_lst
Definition MODULES.f90:417
real *8, dimension(:), allocatable dist_system_lst
Definition MODULES.f90:417
integer *4 mpi_np
Definition MODULES.f90:308
real *8, dimension(:), allocatable y_system_glo_real
Definition MODULES.f90:417
integer *4 mpi_id
Definition MODULES.f90:308
real *8, dimension(:), allocatable alfa32
Definition MODULES.f90:408
integer *4 nnod_loc
Definition MODULES.f90:269
integer *4, dimension(:), allocatable system_label
Definition MODULES.f90:322
real *8, dimension(:), allocatable xx_spx_loc
Definition MODULES.f90:408
integer *4, dimension(:), allocatable n_system_lst
Definition MODULES.f90:358
real *8, dimension(:), allocatable beta32
Definition MODULES.f90:408
integer *4 file_sys_lst
Definition MODULES.f90:298
integer *4, dimension(:), allocatable elem_domain
Definition MODULES.f90:322
real *8, dimension(:), allocatable z_system_lst
Definition MODULES.f90:417
real *8, dimension(:), allocatable alfa12
Definition MODULES.f90:408
real *8, dimension(:), allocatable highest_sys_lst_loc
Definition MODULES.f90:417
Contains parameters for MDOF.
Definition MODULES.f90:725
real *8, dimension(:), allocatable rot_sin
Definition MODULES.f90:780
real *8, dimension(:), allocatable rot_cos
Definition MODULES.f90:780
integer *4 sdofnum
Definition MODULES.f90:772

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::depth_search_sys_lst, speed_par::dist_system_glo, speed_par::dist_system_lst, speed_par::el_system_glo, speed_par::el_system_lst, speed_par::elem_domain, speed_par::file_sys, speed_par::file_sys_lst, speed_par::file_syslst, 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_sys_lst_loc, speed_par::i, speed_par::ic, speed_par::j, speed_par::local_el_num, speed_par::local_node_num, make_system_position_lglnodes(), 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_system_glo, speed_par::n_system_lst, speed_par::nelem_loc, speed_par::nmat, speed_par::nnod_loc, read_dime_filepg(), read_file_mpgm_sys(), read_filesys(), speed_sci::rot_cos, speed_sci::rot_sin, speed_par::sdeg_mat, speed_sci::sdofnum, speed_par::sys_filename, speed_par::sys_lst, speed_par::system_files, speed_par::system_label, speed_par::tag_mat, speed_par::x_system_glo_real, speed_par::x_system_lst, speed_par::x_system_real, speed_par::xr_system_glo, speed_par::xr_system_lst, speed_par::xx_spx_loc, speed_par::y_system_glo_real, speed_par::y_system_lst, speed_par::y_system_real, speed_par::yr_system_glo, speed_par::yr_system_lst, speed_par::yy_spx_loc, speed_par::z_system_glo_real, speed_par::z_system_lst, speed_par::z_system_real, speed_par::zr_system_glo, speed_par::zr_system_lst, and speed_par::zz_spx_loc.

Here is the call graph for this function: