45 n_case, tag_case, val_case, tol_case, &
46 cs_nnz_loc, cs_loc, nm, tag_mat, sdeg_mat, &
47 xs_loc, ys_loc, zs_loc, zs_elev, zs_all, vs, thick, sub_tag_all,mpi_id)
72 character*70 :: file_case_xyz
73 character*70 :: file_case_all
74 character*70 :: file_case_vs
80 integer*4 :: n_case, nn_loc, cs_nnz_loc, nm, mpi_id
81 integer*4 :: ncase,vcase,tcase
82 integer*4 :: n_elev,n_tria_elev
83 integer*4 :: start,finish
84 integer*4 :: n_all,n_tria_all, ival, icase
87 integer*4,
dimension (:),
allocatable :: node1_all,node2_all,node3_all
88 integer*4,
dimension (:),
allocatable :: node1_elev,node2_elev,node3_elev
89 integer*4,
dimension(3) :: clock
90 integer*4,
dimension(0:cs_nnz_loc) :: cs_loc
91 integer*4,
dimension(nm) :: tag_mat, sdeg_mat
92 integer*4,
dimension(nn_loc) :: loc_n_num
93 integer*4,
dimension(n_case) :: tag_case
94 integer*4,
dimension(n_case) :: val_case
95 integer*4,
dimension(nn_loc),
intent(inout) :: sub_tag_all
98 real*8 :: max_elev_spacing,max_all_spacing
100 real*8,
dimension(n_case) :: tol_case
101 real*8,
dimension (:),
allocatable :: x_elev,y_elev,z_elev, vs_elev, sedim
102 real*8,
dimension (:),
allocatable :: x_all,y_all,z_all
103 real*8,
dimension(nn_loc) :: xs_loc, ys_loc, zs_loc
104 real*8,
dimension(nn_loc),
intent(inout) :: zs_elev, zs_all, vs, thick
122 if (tcase.eq.1 .or. tcase .eq. 91)
then
124 if (mpi_id.eq.0 .and. tcase .eq. 1)
then
126 write(*,
'(A)')
'CASE 1: GRENOBLE honoring'
127 write(*,
'(A)')
'Reading Topography...'
128 elseif (mpi_id.eq.0 .and. tcase .eq. 91)
then
130 write(*,
'(A)')
'CASE 91: IRPINIA'
131 write(*,
'(A)')
'Reading Topography...'
134 file_case_xyz =
'XYZ.out'
141 allocate(x_elev(n_elev),y_elev(n_elev),z_elev(n_elev))
142 allocate(node1_elev(n_tria_elev))
143 allocate(node2_elev(n_tria_elev))
144 allocate(node3_elev(n_tria_elev))
147 x_elev,y_elev,z_elev,&
148 node1_elev,node2_elev,node3_elev,&
153 x_elev, y_elev, z_elev,&
154 node1_elev, node2_elev, node3_elev,&
155 cs_nnz_loc, cs_loc, nm, tag_mat, sdeg_mat,&
156 nn_loc, xs_loc, ys_loc, zs_loc,&
157 zs_elev, val_case(icase), max_elev_spacing, tol_case(icase))
159 deallocate(x_elev,y_elev,z_elev,node1_elev,node2_elev,node3_elev)
161 if (mpi_id.eq.0)
then
172 elseif (tcase .eq. 2 .or. tcase .eq. 3 .or. tcase .eq. 4 .or. tcase .eq. 6 &
173 .or. tcase .eq. 7 .or. tcase .eq. 8 .or. tcase .eq. 11 .or. tcase .eq. 12 &
174 .or. tcase .eq. 13 .or. tcase .eq. 14 .or. tcase .eq. 15 .or. tcase .eq. 18 &
175 .or. tcase .eq. 22 .or. tcase .eq. 27 .or. tcase .eq. 28 .or. tcase .eq. 40 &
176 .or. tcase .eq. 33 .or. tcase .eq. 38 .or. tcase .eq. 46 .or. tcase .eq. 60)
then
178 if (mpi_id.eq. 0 .and. tcase .eq. 2)
then
180 write(*,
'(A)')
'CASE 2: GRENOBLE'
182 elseif(mpi_id .eq. 0 .and. tcase .eq. 3)
then
184 write(*,
'(A)')
'CASE 3: GUBBIO'
186 elseif(mpi_id .eq. 0 .and. tcase .eq. 4)
then
188 write(*,
'(A)')
'CASE 4: SULMONA'
190 elseif(mpi_id .eq. 0 .and. tcase .eq. 6)
then
192 write(*,
'(A)')
'CASE 6: FRIULI'
194 elseif(mpi_id .eq. 0 .and. tcase .eq. 7)
then
196 write(*,
'(A)')
'CASE 7: AQUILA'
198 elseif(mpi_id .eq. 0 .and. tcase .eq. 8)
then
200 write(*,
'(A)')
'CASE 8: SANTIAGO'
202 elseif(mpi_id .eq. 0 .and. tcase .eq. 11)
then
204 write(*,
'(A)')
'CASE 11: CHRISTCHURCH'
206 elseif(mpi_id .eq. 0 .and. tcase .eq. 12)
then
208 write(*,
'(A)')
'CASE 12: PO PLAIN'
210 elseif(mpi_id .eq. 0 .and. tcase .eq. 13)
then
212 write(*,
'(A)')
'CASE 13: PO PLAIN-BEDROCK'
214 elseif(mpi_id .eq. 0 .and. tcase .eq. 14)
then
216 write(*,
'(A)')
'CASE 14: WELLINGTON'
218 elseif(mpi_id .eq. 0 .and. tcase .eq. 15)
then
220 write(*,
'(A)')
'CASE 15: MARSICA'
222 elseif(mpi_id .eq. 0 .and. tcase .eq. 18)
then
224 write(*,
'(A)')
'CASE 18: BEIJING-TUTORIAL'
226 elseif(mpi_id .eq. 0 .and. tcase .eq. 22)
then
228 write(*,
'(A)')
'CASE 22: NORCIA'
230 elseif(mpi_id .eq. 0 .and. tcase .eq. 23)
then
232 write(*,
'(A)')
'CASE 33: GRONINGEN-ZE'
234 elseif(mpi_id .eq. 0 .and. tcase .eq. 27)
then
236 write(*,
'(A)')
'CASE 27: AQUILA-OB'
238 elseif(mpi_id .eq. 0 .and. tcase .eq. 28)
then
240 write(*,
'(A)')
'CASE 28: NORCIA-OB'
242 elseif(mpi_id .eq. 0 .and. tcase .eq. 38)
then
244 write(*,
'(A)')
'CASE 38: MONTELIMAR'
246 elseif(mpi_id .eq. 0 .and. tcase .eq. 40)
then
248 write(*,
'(A)')
'CASE 40: KUTCH'
250 elseif(mpi_id .eq. 0 .and. tcase .eq. 46)
then
252 write(*,
'(A)')
'CASE 46: KUMAMOTO'
254 elseif(mpi_id .eq. 0 .and. tcase .eq. 50)
then
256 write(*,
'(A)')
'CASE 60: JAKARTA'
260 if(mpi_id .eq. 0)
write(*,
'(A)')
'Reading Topography&Alluvial...'
261 file_case_xyz =
'XYZ.out'
262 file_case_all =
'ALL.out'
270 allocate(x_elev(n_elev),y_elev(n_elev),z_elev(n_elev))
271 allocate(node1_elev(n_tria_elev), node2_elev(n_tria_elev), node3_elev(n_tria_elev))
273 allocate(x_all(n_all),y_all(n_all),z_all(n_all))
274 allocate(node1_all(n_tria_all),node2_all(n_tria_all),node3_all(n_tria_all))
277 x_elev,y_elev,z_elev,&
278 node1_elev,node2_elev,node3_elev,&
283 node1_all,node2_all,node3_all,&
289 x_all, y_all, z_all, &
290 node1_all, node2_all, node3_all,&
291 cs_nnz_loc, cs_loc, nm, tag_mat, sdeg_mat, &
292 nn_loc, xs_loc, ys_loc, zs_loc, &
293 zs_all, val_case(icase), max_all_spacing, tol_case(icase))
296 x_elev, y_elev, z_elev, &
297 node1_elev, node2_elev, node3_elev,&
298 cs_nnz_loc, cs_loc, nm, tag_mat, sdeg_mat, &
299 nn_loc, xs_loc, ys_loc, zs_loc, &
301 val_case(icase), max_elev_spacing, tol_case(icase))
305 deallocate(x_elev, y_elev, z_elev, node1_elev, node2_elev, node3_elev)
306 deallocate(x_all, y_all, z_all, node1_all, node2_all, node3_all)
308 if (mpi_id.eq.0)
then
317 elseif (tcase.eq. 70 .or. tcase .eq. 45)
then
318 if (mpi_id .eq. 0 .and. tcase .eq. 70 )
then
320 write(*,
'(A)')
'CASE 70: Aquila-multibasin'
322 elseif (mpi_id .eq. 0 .and. tcase .eq. 45)
then
324 write(*,
'(A)')
'CASE 45: MEXICO-CITY'
329 if(mpi_id .eq. 0)
write(*,
'(A)')
'Reading Topography&Alluvial...'
331 file_case_xyz =
'XYZ.out'
337 allocate(x_elev(n_elev),y_elev(n_elev),z_elev(n_elev))
338 allocate(node1_elev(n_tria_elev), node2_elev(n_tria_elev), node3_elev(n_tria_elev))
341 x_elev,y_elev,z_elev,&
342 node1_elev,node2_elev,node3_elev,&
346 x_elev, y_elev, z_elev, &
347 node1_elev, node2_elev, node3_elev,&
348 cs_nnz_loc, cs_loc, nm, tag_mat, sdeg_mat, &
349 nn_loc, xs_loc, ys_loc, zs_loc, &
351 val_case(1), max_elev_spacing, tol_case(1))
353 deallocate(x_elev, y_elev, z_elev, node1_elev, node2_elev, node3_elev)
360 file_case_all =
'ALL1.out'
362 file_case_all =
'ALL2.out'
370 allocate(x_all(n_all), y_all(n_all), z_all(n_all))
371 allocate(node1_all(n_tria_all), node2_all(n_tria_all), node3_all(n_tria_all))
375 node1_all,node2_all,node3_all,&
382 x_all, y_all, z_all, &
383 node1_all, node2_all, node3_all,&
384 cs_nnz_loc, cs_loc, nm, tag_mat, sdeg_mat, &
385 nn_loc, xs_loc, ys_loc, zs_loc, &
386 zs_all, val_case(icase), max_all_spacing, tol_case(icase))
391 deallocate(x_all, y_all, z_all, node1_all, node2_all, node3_all)
393 if (mpi_id.eq.0)
then
395 write(*,
'(A,I8)')
'ALLUVIAL Layer # ',j
400 if (mpi_id.eq.0)
then
401 write(*,
'(A)')
'Done'
409 elseif (tcase.eq. 5 .or. tcase .eq. 50)
then
410 if (mpi_id.eq.0 .and. tcase .eq. 5)
then
412 write(*,
'(A)')
'CASE 5: VOLVI for CASHIMA benchmark'
414 elseif (mpi_id.eq.0 .and. tcase .eq. 50)
then
416 write(*,
'(A)')
'CASE 50: PLANE-WAVE benchmark'
420 write(*,
'(A)')
'Reading Topography&Alluvial...'
426 file_case_all =
'ALL1.out'
428 file_case_all =
'ALL2.out'
430 file_case_all =
'ALL3.out'
437 allocate(x_all(n_all), y_all(n_all), z_all(n_all))
438 allocate(node1_all(n_tria_all), node2_all(n_tria_all), node3_all(n_tria_all))
442 node1_all,node2_all,node3_all,&
448 x_all, y_all, z_all, &
449 node1_all, node2_all, node3_all,&
450 cs_nnz_loc, cs_loc, nm, tag_mat, sdeg_mat, &
451 nn_loc, xs_loc, ys_loc, zs_loc, &
452 zs_all, val_case(icase), max_all_spacing, tol_case(icase))
457 deallocate(x_all, y_all, z_all, node1_all, node2_all, node3_all)
459 if (mpi_id.eq.0)
then
461 write(*,
'(A,I8)')
'ALLUVIAL Layer # ',j
466 if (mpi_id.eq.0)
then
467 write(*,
'(A)')
'Done'
476 elseif (tcase.eq. 16 .or. tcase.eq. 19 .or. tcase .eq. 20 .or. tcase .eq. 21 &
477 .or. tcase .eq. 29 .or. tcase .eq. 35)
then
479 if (mpi_id.eq.0 .and. tcase .eq. 16)
then
481 write(*,
'(A)')
'CASE 16: ISTANBUL'
483 if (mpi_id.eq.0 .and. tcase .eq. 19)
then
485 write(*,
'(A)')
'CASE 19: THESSALONIKI'
487 if (mpi_id.eq.0 .and. tcase .eq. 20)
then
489 write(*,
'(A)')
'CASE 20: ATHENS'
491 if (mpi_id.eq.0 .and. tcase .eq. 21)
then
493 write(*,
'(A)')
'CASE 21: BEIJING '
495 if (mpi_id.eq.0 .and. tcase .eq. 29)
then
497 write(*,
'(A)')
'CASE 29: THESS-BEDROCK'
499 if (mpi_id.eq.0 .and. tcase .eq. 35)
then
501 write(*,
'(A)')
'CASE 35: THESS+MYGD-FINAL'
504 if (mpi_id.eq.0)
write(*,
'(A)')
'Reading Topography&Alluvial...'
507 file_case_xyz =
'XYZ.out'
508 if(tcase .eq. 19 .or. tcase .eq. 21 .or. tcase .eq. 29) file_case_all =
'ALL.out'
509 file_case_vs =
'VS_RS.out'
513 if(tcase .eq. 19 .or. tcase .eq. 21 .or. tcase .eq. 29) zs_all = -1.0e+30
517 if(tcase .eq. 19 .or. tcase .eq. 21 .or. tcase .eq. 29)
call read_dime_filexyz(file_case_all,n_all,n_tria_all)
519 allocate(x_elev(n_elev),y_elev(n_elev),z_elev(n_elev),&
520 vs_elev(n_tria_elev),sedim(n_tria_elev))
521 allocate(node1_elev(n_tria_elev), node2_elev(n_tria_elev), node3_elev(n_tria_elev))
523 if(tcase .eq. 19 .or. tcase .eq. 21 .or. tcase .eq. 29)
allocate(x_all(n_all),y_all(n_all),z_all(n_all))
524 if(tcase .eq. 19 .or. tcase .eq. 21 .or. tcase .eq. 29)
allocate(node1_all(n_tria_all),node2_all(n_tria_all),node3_all(n_tria_all))
527 x_elev,y_elev,z_elev,&
528 node1_elev,node2_elev,node3_elev,&
531 if(tcase .eq. 19 .or. tcase .eq. 21 .or. tcase .eq. 29) &
534 node1_all,node2_all,node3_all,&
538 call read_filevs(file_case_vs, n_tria_elev, vs_elev, sedim)
543 x_all, y_all, z_all, &
544 node1_all, node2_all, node3_all,&
545 cs_nnz_loc, cs_loc, nm, tag_mat, sdeg_mat, &
546 nn_loc, xs_loc, ys_loc, zs_loc, &
547 zs_all, val_case(icase), max_all_spacing, tol_case(icase))
550 x_elev, y_elev, z_elev, vs_elev, sedim,&
551 node1_elev, node2_elev, node3_elev,&
552 cs_nnz_loc, cs_loc, nm, tag_mat, sdeg_mat, &
553 nn_loc, xs_loc, ys_loc, zs_loc, &
554 zs_elev, zs_all, vs, thick, &
555 val_case(icase), max_elev_spacing, tol_case(icase))
559 deallocate(x_elev, y_elev, z_elev,vs_elev,sedim, node1_elev, node2_elev, node3_elev)
560 if(tcase .eq. 19 .or. tcase .eq. 21 .or. tcase .eq. 29)
deallocate(x_all, y_all, z_all, node1_all, node2_all, node3_all)
562 if (mpi_id.eq.0)
then
574 elseif (tcase.eq. 30)
then
575 if (mpi_id.eq.0)
then
577 write(*,
'(A)')
'CASE 30: ATHENS-PARTHENON'
578 write(*,
'(A)')
'Reading Topography&Alluvial...'
587 file_case_all =
'ALL1.out'
589 file_case_all =
'ALL2.out'
591 file_case_all =
'ALL3.out'
598 allocate(x_all(n_all), y_all(n_all), z_all(n_all))
599 allocate(node1_all(n_tria_all), node2_all(n_tria_all), node3_all(n_tria_all))
603 node1_all,node2_all,node3_all,&
608 x_all, y_all, z_all, &
609 node1_all, node2_all, node3_all,&
610 cs_nnz_loc, cs_loc, nm, tag_mat, sdeg_mat, &
611 nn_loc, xs_loc, ys_loc, zs_loc, &
612 zs_all, val_case(icase), max_all_spacing, tol_case(icase))
617 deallocate(x_all, y_all, z_all, node1_all, node2_all, node3_all)
619 if (mpi_id.eq.0)
then
621 write(*,
'(A,I8)')
'ALLUVIAL Layer # ',j
629 if (mpi_id.eq.0)
then
630 write(*,
'(A)')
'Done'
639 elseif (tcase.eq. 31 .or. tcase .eq. 32)
then
640 if (mpi_id.eq.0)
then
642 if(tcase.eq. 31)
write(*,
'(A)')
'CASE 31: GRONINGEN'
643 if(tcase.eq. 32)
write(*,
'(A)')
'CASE 32: GRONINGEN'
644 write(*,
'(A)')
'Reading Topography&Alluvial...'
653 file_case_all =
'ALL1.out'
655 file_case_all =
'ALL2.out'
657 file_case_all =
'ALL3.out'
659 file_case_all =
'ALL4.out'
661 file_case_all =
'ALL5.out'
663 file_case_all =
'ALL6.out'
670 allocate(x_all(n_all), y_all(n_all), z_all(n_all))
671 allocate(node1_all(n_tria_all), node2_all(n_tria_all), node3_all(n_tria_all))
675 node1_all,node2_all,node3_all,&
680 x_all, y_all, z_all, &
681 node1_all, node2_all, node3_all,&
682 cs_nnz_loc, cs_loc, nm, tag_mat, sdeg_mat, &
683 nn_loc, xs_loc, ys_loc, zs_loc, &
684 zs_all, val_case(icase), max_all_spacing, tol_case(icase))
689 deallocate(x_all, y_all, z_all, node1_all, node2_all, node3_all)
691 if (mpi_id.eq.0)
then
693 write(*,
'(A,I8)')
'ALLUVIAL Layer # ',j
704 if (mpi_id.eq.0)
then
705 write(*,
'(A)')
'Done'
733 elseif (tcase.eq.98)
then
734 if (mpi_id.eq.0)
then
736 write(*,
'(A)')
'CASE 98: TEST honoring'
737 write(*,
'(A)')
'Reading Topography...'
740 file_case_xyz =
'XYZ.out'
746 allocate(x_elev(n_elev),y_elev(n_elev),z_elev(n_elev))
747 allocate(node1_elev(n_tria_elev))
748 allocate(node2_elev(n_tria_elev))
749 allocate(node3_elev(n_tria_elev))
752 x_elev,y_elev,z_elev,&
753 node1_elev,node2_elev,node3_elev,&
759 x_elev, y_elev, z_elev,&
760 node1_elev, node2_elev, node3_elev,&
761 cs_nnz_loc, cs_loc, nm, tag_mat, sdeg_mat,&
762 nn_loc, xs_loc, ys_loc, zs_loc,&
763 zs_elev, val_case(iacse), max_elev_spacing, tol_case(icase))
767 deallocate(x_elev,y_elev,z_elev,node1_elev,node2_elev,node3_elev)
769 if (mpi_id.eq.0)
then
778 elseif (tcase.eq.99)
then
779 if (mpi_id.eq.0)
then
781 write(*,
'(A)')
'CASE 99: TEST not honoring'
782 write(*,
'(A)')
'Reading Topography&Alluvial...'
785 file_case_xyz =
'XYZ.out'
786 file_case_all =
'ALL.out'
794 allocate(x_elev(n_elev),y_elev(n_elev),z_elev(n_elev))
795 allocate(node1_elev(n_tria_elev), node2_elev(n_tria_elev), node3_elev(n_tria_elev))
797 allocate(x_all(n_all),y_all(n_all),z_all(n_all))
798 allocate(node1_all(n_tria_all),node2_all(n_tria_all),node3_all(n_tria_all))
801 x_elev,y_elev,z_elev,&
802 node1_elev,node2_elev,node3_elev,&
807 node1_all,node2_all,node3_all,&
814 x_all, y_all, z_all, &
815 node1_all, node2_all, node3_all,&
816 cs_nnz_loc, cs_loc, nm, tag_mat, sdeg_mat, &
817 nn_loc, xs_loc, ys_loc, zs_loc, &
818 zs_all, val_case(icase), max_all_spacing, tol_case(icase))
821 x_elev, y_elev, z_elev, &
822 node1_elev, node2_elev, node3_elev,&
823 cs_nnz_loc, cs_loc, nm, tag_mat, sdeg_mat, &
824 nn_loc, xs_loc, ys_loc, zs_loc, &
826 val_case(icase), max_elev_spacing, tol_case(icase))
830 deallocate(x_elev, y_elev, z_elev, node1_elev, node2_elev, node3_elev)
831 deallocate(x_all, y_all, z_all, node1_all, node2_all, node3_all)
833 if (mpi_id.eq.0)
then