SPEED
MAKE_LOAD_MATRIX.f90
Go to the documentation of this file.
1! Copyright (C) 2012 The SPEED FOUNDATION
2! Author: Ilario Mazzieri
3!
4! This file is part of SPEED.
5!
6! SPEED is free software; you can redistribute it and/or modify it
7! under the terms of the GNU Affero General Public License as
8! published by the Free Software Foundation, either version 3 of the
9! License, or (at your option) any later version.
10!
11! SPEED is distributed in the hope that it will be useful, but
12! WITHOUT ANY WARRANTY; without even the implied warranty of
13! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14! Affero General Public License for more details.
15!
16! You should have received a copy of the GNU Affero General Public License
17! along with SPEED. If not, see <http://www.gnu.org/licenses/>.
18
23
24 subroutine make_load_matrix()
25
26 use max_var
27 use speed_par
28
29
30 implicit none
31
32 include 'SPEED.MPI'
33
34
35
36 if (nfunc.le.0) nfunc = 1
37
38
39 allocate (fel(nfunc,3*nnod_loc))
40
41
75 n_test,fun_test, & !val_fun_test, &
77 fel,&
78 con,nelem,&
88
89
90
91 ! length_check_node_sism = total number of seismic nodes for each processors
92
93 if (mpi_id.eq.0) write(*,'(A)')'Load matrix built.'
94 if (mpi_id.eq.0) write(*,'(A)')
95 deallocate(con)
96
97! do i = 1, nfunc
98! do j = 1, 3*nnod_loc
99! if (Fel(i,j) .ne. 0) then
100! print*, i,j, Fel(i,j)
101! endif
102! enddo
103! enddo
104! read(*,*)
105
106!**********************************************************************************************************
107! SEISMIC MOMENT
108!**********************************************************************************************************
109! check_node_sism, check_dist_node_sism are local vector
110! check_node_sism(i,1) = global node index
111! check_node_sism(i,2) = time function number
112! check_node_sism(i,3) = fault number
113! check_node_sism(i,4) = global element index
114! check_dist_node_sism(i,1) = distance from hypocenter
115
116 if (nload_sism_el.gt.0) then
117
118
119! if (mpi_id.eq.0) then
120! write(*,'(A)')'------------------Make Seismic Moment------------------'
121! write(*,*) 'Seismic moment tensor for each sub fault'
122! do i = 1, nload_sism_el
123! write(*,*) 'Subfault :', i
124! ! write(*,*)'Mxx : ', factor_seismic_moment(i,1)
125! write(*,*) 'Myy : ', factor_seismic_moment(i,2)
126! write(*,*) 'Mzz : ', factor_seismic_moment(i,3)
127! write(*,*) 'Myz : ', factor_seismic_moment(i,4)
128! write(*,*) 'Mzx : ', factor_seismic_moment(i,5)
129! write(*,*) 'Mxy : ', factor_seismic_moment(i,6)
130! write(*,*) 'Target seismic moment : ', val_sism_el(i,20)
131! write(*,*) 'Assigned seismic moment : ', sum(factor_seismic_moment(i,1:6))
132! write(*,*) '(Target - Assigned) seismic moment : ', &
133! val_sism_el(i,20)-sum(factor_seismic_moment(i,1:6))
134! write(*,*) '----------------------------------------------------------'
135! enddo
136! endif
137
141
142
144 nmat, tag_mat, sdeg_mat, &
154
155! uncomment this to check kinematic source parameters
156! filename = 'SISM00000.dat';
157! if (mpi_id .lt. 10) then
158! write(filename(9:9),'(i1)') mpi_id;
159! else if (mpi_id .lt. 100) then
160! write(filename(8:9),'(i2)') mpi_id;
161! else if (mpi_id .lt. 1000) then
162! write(filename(7:9),'(i3)') mpi_id;
163! else if (mpi_id .lt. 10000) then
164! write(filename(6:9),'(i4)') mpi_id;
165! endif
166
167
168 !write(*,*) mpi_id, filename
169! open(1000+mpi_id, file=filename,position='APPEND')
170
171! do i = 1, length_check_node_sism
172! ! fault num - node index - coordinates xyz - rise time - rupture time -
173! write(1000+mpi_id,*) check_node_sism(i,3), check_node_sism(i,1), check_pos_sism(i,1), &
174! check_pos_sism(i,2), check_pos_sism(i,3) , &
175! tau_seismic_moment(check_node_sism(i,3),1), check_dist_node_sism(i,1)
176! enddo
177!
178! close(1000+mpi_id)
179
180
181 deallocate (sour_node_sism)
182 deallocate (dist_sour_node_sism)
184
185 endif
186
187!**********************************************************************************************************
188! EXPLOSIVE SOURCE
189!**********************************************************************************************************
190! check_node_expl, check_dist_node_expl are local vector
191! check_node_expl(i,1) = global node index
192! check_node_expl(i,2) = time function number
193! check_node_expl(i,3) = fault number
194! check_node_expl(i,4) = global element index
195! check_dist_node_expl(i,1) = distance from hypocenter
196
197 if (nload_expl_el.gt.0) then
198 if (mpi_id.eq.0) write(*,'(A)')'-----------------Make explosive source-----------------'
201
211
212 deallocate (sour_node_expl)
213 deallocate (dist_sour_node_expl)
214
215 endif
216
217
218
219
220 end subroutine make_load_matrix
subroutine check_expl(cs_nnz, cs, nm, tm, sd, nl_expl, num_ne, max_num_ne, sour_ne, dist_sour_ne, check_ne, check_dist_ne, length_cne, fun_expl, nf, tag_func, val_expl, nn_loc, local_n_num)
Fills array check_ns for explosive force.
subroutine check_sism(cs_nnz, cs, nm, tm, sd, nl_sism, num_ns, max_num_ns, sour_ns, dist_sour_ns, pos_sour_nx, pos_sour_ny, pos_sour_nz, check_ns, check_dist_ns, length_cns, check_pos_ns, fun_sism, nf, tag_func, val_sism, nn_loc, local_n_num, srcmodflag, szsism)
Fills array check_ns for seismic force.
subroutine make_extint_forces(nnod_loc, xs_loc, ys_loc, zs_loc, local
Computes external loads.
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 val_poiz_el
Definition MODULES.f90:463
integer *4 nload_poiy_el
Definition MODULES.f90:269
integer *4, dimension(:), allocatable fun_poiz_el
Definition MODULES.f90:335
integer *4 nload_sism_el
Definition MODULES.f90:269
integer *4 nfunc_data
Definition MODULES.f90:269
integer *4 nload_dirz_el
Definition MODULES.f90:269
integer *4 nload_forz_el
Definition MODULES.f90:269
integer *4 nload_forx_el
Definition MODULES.f90:269
real *8, dimension(:,:), allocatable pos_sour_node_y
Definition MODULES.f90:474
real *8, dimension(:,:), allocatable pos_sour_node_x
Definition MODULES.f90:474
integer *4, dimension(:), allocatable con_spx
Definition MODULES.f90:322
integer *4 nload_forc_el
Definition MODULES.f90:269
real *8, dimension(:), allocatable delta2
Definition MODULES.f90:408
real *8, dimension(:,:), allocatable val_neux_el
Definition MODULES.f90:463
integer *4 nmat
Definition MODULES.f90:269
integer *4 length_check_node_expl
Definition MODULES.f90:269
real *8, dimension(:), allocatable gamma3
Definition MODULES.f90:408
integer *4, dimension(:), allocatable local_el_num
Definition MODULES.f90:322
integer *4 nload_poix_el
Definition MODULES.f90:269
integer *4 nload_poiz_el
Definition MODULES.f90:269
integer *4, dimension(:), allocatable fun_tray_el
Definition MODULES.f90:335
integer *4, dimension(:), allocatable tag_plax_el
Definition MODULES.f90:335
real *8, dimension(:,:), allocatable val_forc_el
Definition MODULES.f90:463
integer *4, dimension(:), allocatable fun_fory_el
Definition MODULES.f90:335
real *8, dimension(:,:), allocatable val_forz_el
Definition MODULES.f90:463
real *8, dimension(:), allocatable gamma2
Definition MODULES.f90:408
integer *4 con_nnz_bc_loc
Definition MODULES.f90:269
real *8, dimension(:,:), allocatable factor_seismic_moment
Definition MODULES.f90:474
real *8, dimension(:), allocatable delta3
Definition MODULES.f90:408
real *8, dimension(:), allocatable alfa23
Definition MODULES.f90:408
integer *4, dimension(:), allocatable fun_dirx_el
Definition MODULES.f90:335
integer *4 length_check_node_sism
Definition MODULES.f90:269
integer *4, dimension(:,:), allocatable sour_node_expl
Definition MODULES.f90:383
real *8, dimension(:,:), allocatable val_shea_el
Definition MODULES.f90:463
integer *4 nload_neun_el
Definition MODULES.f90:269
real *8, dimension(:,:), allocatable val_poix_el
Definition MODULES.f90:463
integer *4 nfunc
Definition MODULES.f90:269
real *8, dimension(:), allocatable beta13
Definition MODULES.f90:408
integer *4 testmode
Definition MODULES.f90:308
integer *4, dimension(:), allocatable type_mat
Definition MODULES.f90:335
integer *4, dimension(:), allocatable fun_neuy_el
Definition MODULES.f90:335
integer *4, dimension(:), allocatable tag_neux_el
Definition MODULES.f90:335
integer *4 nload_neuy_el
Definition MODULES.f90:269
real *8, dimension(:,:), allocatable prop_mat
Definition MODULES.f90:463
real *8, dimension(:,:), allocatable val_play_el
Definition MODULES.f90:463
real *8, dimension(:), allocatable alfa33
Definition MODULES.f90:408
real *8, dimension(:,:), allocatable val_neun_el
Definition MODULES.f90:463
integer *4, dimension(:), allocatable node_index_seq
Definition MODULES.f90:322
real *8, dimension(:), allocatable alfa11
Definition MODULES.f90:408
integer *4, dimension(:), allocatable num_node_expl
Definition MODULES.f90:363
integer *4 con_nnz_loc
Definition MODULES.f90:269
integer *4, dimension(:), allocatable tag_neuz_el
Definition MODULES.f90:335
real *8, dimension(:), allocatable beta21
Definition MODULES.f90:408
integer *4, dimension(:), allocatable tag_expl_el
Definition MODULES.f90:335
integer *4, dimension(:), allocatable fun_play_el
Definition MODULES.f90:335
real *8, dimension(:,:), allocatable factor_explosive_source
Definition MODULES.f90:474
real *8, dimension(:,:), allocatable val_fory_el
Definition MODULES.f90:463
integer *4, dimension(:), allocatable fun_plaz_el
Definition MODULES.f90:335
integer *4 nload_tray_el
Definition MODULES.f90:269
integer *4 nload_neux_el
Definition MODULES.f90:269
integer *4, dimension(:), allocatable fun_dirz_el
Definition MODULES.f90:335
integer *4, dimension(:,:), allocatable check_node_expl
Definition MODULES.f90:383
real *8, dimension(:), allocatable delta1
Definition MODULES.f90:408
integer *4 nmat_nhe
Definition MODULES.f90:269
real *8, dimension(:,:), allocatable val_sism_el
Definition MODULES.f90:463
real *8, dimension(:), allocatable beta23
Definition MODULES.f90:408
integer *4, dimension(:,:), allocatable con
Definition MODULES.f90:383
real *8, dimension(:,:), allocatable fel
Definition MODULES.f90:457
integer *4 szsism
Definition MODULES.f90:269
real *8, dimension(:,:), allocatable val_neuy_el
Definition MODULES.f90:463
integer *4 nload_plaz_el
Definition MODULES.f90:269
integer *4 nelem
Definition MODULES.f90:269
integer *4, dimension(:), allocatable fun_forc_el
Definition MODULES.f90:335
integer *4, dimension(:), allocatable fun_shea_el
Definition MODULES.f90:335
integer *4 nload_plax_el
Definition MODULES.f90:269
real *8, dimension(:), allocatable zz_spx_loc
Definition MODULES.f90:408
integer *4, dimension(:), allocatable tag_neuy_el
Definition MODULES.f90:335
real *8, dimension(:,:), allocatable dist_sour_node_expl
Definition MODULES.f90:474
real *8, dimension(:), allocatable lambda_nhe
Definition MODULES.f90:446
integer *4 nload_expl_el
Definition MODULES.f90:269
real *8, dimension(:,:), allocatable val_plax_el
Definition MODULES.f90:463
real *8, dimension(:), allocatable yy_spx_loc
Definition MODULES.f90:408
integer *4, dimension(:), allocatable fun_plax_el
Definition MODULES.f90:335
real *8, dimension(:), allocatable alfa13
Definition MODULES.f90:408
real *8, dimension(:), allocatable beta12
Definition MODULES.f90:408
integer *4, dimension(:), allocatable fun_forz_el
Definition MODULES.f90:335
real *8, dimension(:,:), allocatable dist_sour_node_sism
Definition MODULES.f90:474
integer *4, dimension(:), allocatable con_spx_bc_loc
Definition MODULES.f90:322
integer *4, dimension(:), allocatable fun_neuz_el
Definition MODULES.f90:335
real *8, dimension(:,:), allocatable val_poiy_el
Definition MODULES.f90:463
integer *4, dimension(:), allocatable tag_diry_el
Definition MODULES.f90:335
real *8, dimension(:,:), allocatable check_dist_node_sism
Definition MODULES.f90:474
integer *4, dimension(:), allocatable tag_sism_el
Definition MODULES.f90:335
real *8, dimension(:), allocatable beta11
Definition MODULES.f90:408
real *8, dimension(:), allocatable alfa31
Definition MODULES.f90:408
integer *4 nload_shea_el
Definition MODULES.f90:269
integer *4, dimension(:), allocatable tag_dirz_el
Definition MODULES.f90:335
integer *4 mpi_comm
Definition MODULES.f90:308
integer *4, dimension(:), allocatable tag_neun_el
Definition MODULES.f90:335
integer *4, dimension(:), allocatable fun_poix_el
Definition MODULES.f90:335
integer *4, dimension(:), allocatable local_node_num
Definition MODULES.f90:322
integer *4 nload_dirx_el
Definition MODULES.f90:269
integer *4, dimension(:), allocatable fun_poiy_el
Definition MODULES.f90:335
real *8, dimension(:), allocatable tref_mat
Definition MODULES.f90:451
integer *4, dimension(:), allocatable sdeg_mat
Definition MODULES.f90:335
integer *4 nload_neuz_el
Definition MODULES.f90:269
real *8, dimension(:), allocatable beta22
Definition MODULES.f90:408
real *8, dimension(:), allocatable beta31
Definition MODULES.f90:408
integer *4, dimension(:), allocatable num_node_sism
Definition MODULES.f90:363
integer *4 nelem_loc
Definition MODULES.f90:269
integer *4, dimension(:), allocatable con_spx_loc
Definition MODULES.f90:322
real *8, dimension(:,:), allocatable val_dirx_el
Definition MODULES.f90:463
integer *4, dimension(:,:), allocatable check_node_sism
Definition MODULES.f90:383
real *8, dimension(:), allocatable alfa21
Definition MODULES.f90:408
integer *4, dimension(:), allocatable fun_test
Definition MODULES.f90:335
integer *4, dimension(:), allocatable fun_diry_el
Definition MODULES.f90:335
real *8, dimension(:,:), allocatable val_trax_el
Definition MODULES.f90:463
integer *4 nload_diry_el
Definition MODULES.f90:269
real *8, dimension(:), allocatable alfa22
Definition MODULES.f90:408
real *8, dimension(:), allocatable beta33
Definition MODULES.f90:408
integer *4, dimension(:), allocatable fun_trax_el
Definition MODULES.f90:335
real *8, dimension(:,:), allocatable check_pos_sism
Definition MODULES.f90:474
real *8, dimension(:,:), allocatable check_dist_node_expl
Definition MODULES.f90:474
integer *4 max_num_node_expl
Definition MODULES.f90:269
integer *4, dimension(:), allocatable tag_mat
Definition MODULES.f90:335
integer *4 max_num_node_sism
Definition MODULES.f90:269
real *8, dimension(:), allocatable gamma1
Definition MODULES.f90:408
integer *4, dimension(:), allocatable tag_func
Definition MODULES.f90:335
integer *4, dimension(:), allocatable func_type
Definition MODULES.f90:335
integer *4, dimension(:), allocatable tag_play_el
Definition MODULES.f90:335
real *8, dimension(:,:), allocatable val_neuz_el
Definition MODULES.f90:463
integer *4, dimension(:), allocatable func_indx
Definition MODULES.f90:335
integer *4 n_test
Definition MODULES.f90:269
integer *4 mpi_np
Definition MODULES.f90:308
integer *4, dimension(:), allocatable fun_traz_el
Definition MODULES.f90:335
integer *4 nload_fory_el
Definition MODULES.f90:269
real *8, dimension(:,:), allocatable val_expl_el
Definition MODULES.f90:463
integer *4, dimension(:), allocatable fun_neun_el
Definition MODULES.f90:335
integer *4, dimension(:), allocatable fun_pres_el
Definition MODULES.f90:335
integer *4 srcmodflag
Definition MODULES.f90:298
integer *4 nload_traz_el
Definition MODULES.f90:269
real *8, dimension(:,:), allocatable val_tray_el
Definition MODULES.f90:463
real *8, dimension(:,:), allocatable val_pres_el
Definition MODULES.f90:463
integer *4 mpi_id
Definition MODULES.f90:308
real *8, dimension(:), allocatable alfa32
Definition MODULES.f90:408
integer *4 nload_trax_el
Definition MODULES.f90:269
integer *4, dimension(:), allocatable fun_neux_el
Definition MODULES.f90:335
real *8, dimension(:,:), allocatable val_forx_el
Definition MODULES.f90:463
integer *4 con_nnz
Definition MODULES.f90:269
integer *4 nnod_loc
Definition MODULES.f90:269
real *8, dimension(:,:), allocatable val_traz_el
Definition MODULES.f90:463
real *8, dimension(:), allocatable xx_spx_loc
Definition MODULES.f90:408
real *8, dimension(:,:), allocatable val_dirz_el
Definition MODULES.f90:463
real *8, dimension(:,:), allocatable pos_sour_node_z
Definition MODULES.f90:474
integer *4, dimension(:), allocatable fun_sism_el
Definition MODULES.f90:335
integer *4, dimension(:,:), allocatable sour_node_sism
Definition MODULES.f90:383
integer *4 nload_play_el
Definition MODULES.f90:269
real *8, dimension(:), allocatable beta32
Definition MODULES.f90:408
integer *4 nload_pres_el
Definition MODULES.f90:269
integer *4, dimension(:), allocatable tag_plaz_el
Definition MODULES.f90:335
integer *4, dimension(:), allocatable fun_expl_el
Definition MODULES.f90:335
integer *4, dimension(:), allocatable tag_dirx_el
Definition MODULES.f90:335
real *8, dimension(:,:), allocatable tau_seismic_moment
Definition MODULES.f90:474
real *8, dimension(:), allocatable alfa12
Definition MODULES.f90:408
real *8, dimension(:,:), allocatable val_diry_el
Definition MODULES.f90:463
integer *4, dimension(:), allocatable fun_forx_el
Definition MODULES.f90:335
real *8, dimension(:), allocatable func_data
Definition MODULES.f90:451
real *8, dimension(:,:), allocatable val_plaz_el
Definition MODULES.f90:463
real *8, dimension(:), allocatable mu_nhe
Definition MODULES.f90:446
real *8, dimension(:), allocatable rho_nhe
Definition MODULES.f90:446