forked from jpampuero/sem2dpack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ToDo
152 lines (137 loc) · 7.23 KB
/
ToDo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
-- KNOWN ISSUES:
+ (Shiqing Xu) Displacement field near fault's intersection with the surface
has minor problems (direction relative to fault dip, partitioning onto different sides, etc)
for shallowly dipping faults (e.g. 10 degrees).
Should be benchmarked with a 2D version of Okada's dislocation model.
+ (Shiqing Xu) Surface wave (Rayleigh) propagation towards the semi-spherical boundary
+ (Shiqing Xu) Corner waves following the surface wave
+ incompatibility between dynamic faults and absorbing boundaries:
. see 1D test
. see 2D test: fault normal stress in homogeneous symmetric examples
is not uniform when using Stacey absorbing boundaries
+ note gfortran (older versions) sequential binary files,
http://www.nabble.com/binary-file-problem-to12555962.html
+ absorbing boundaries with incident waves are correct only for full homogeneous space
+ rsf is not the same as in Ampuero and Ben-Zion (2008)
+ rsf with v<0 is inconsistent
+ compatibility between dynamic faults and free surface is not enforced yet
+ incompatible update of friction when there is opening
+ Kelvin-Voigt for inhomogeneous materials (gradient, etc) is not consistent
+ Kelvin-Voigt for plastic materials is not consistent
+ "Segmentation fault" error if using Intel 12 compiler
POSSIBLE ISSUES (need further verification, including beta features):
+ plastic solver is first order?
+ revise Stacey boundary conditions
+ plasticity with non-explicit Newmark
+ damage with beta>0
-- TO DO LIST:
SOLVER:
Materials:
+ in damage: plasticity after loss of convexity, merge code by Shiqing Xu
+ plasticity with dilatancy (helps regularization,
see Rudnicki and Rice, 1975; Templeton and Rice, 2008)
+ non-local regularization for plasticity
+ plasticity with softening
+ 2.5D models for "crustal-plane" rupture, local corrections for teleseismic
+ Perfectly Matched Layers, split or unsplit
+ coarse-grained variables for attenuation Q (Day)
+ more smoothing and interpolation options for heterogeneous velocity models
+ Rayleigh damping
+ poro-elasticity
+ acoustic fluid
+ fluid-solid interaction
+ non-linear laws as in Shake and other commercial packages
+ homogeneization correction for shallow layers
Sources:
+ broad band source time functions: Morlet, Berlage
+ other source time functions: Gabor, Kupper (see table in Mavroeidis and Papageorgiou, 2003)
+ source time functions for kinematic sources
+ allow sources not at node
Boundary conditions:
+ nucleation through time-dependent stress
+ more friction laws:
. logarithmic rate-and-state
. time weakening with spontaneous rupture speed
. time healing
. velocity toughening
. slip-strengthening (back-slip as in rough faults, Franklin Koch)
+ couple dynamic faults to off-fault (1D) heat and fluid equations
+ dynamic faults: handle branching points
+ higher order ABC for SH
+ time-dependent Dirichlet conditions
+ Dirichlet and Neumann conditions on non vertical/horizontal boundaries
+ spatially non uniform Dirichlet and Neumann boundary conditions
Other:
+ critical timestep estimate based on reciprocal lattice stepsize
or computing the maximum eigenvalue for each element
+ memory usage report for boundary conditions
+ add warning on timestep for kelvin-voigt material
+ domain reduction method with boundary traction data (Bielak)
+ non-conformal mesh with mortar elements
+ domain decomposition database, for MPI test and multidomain coupling
+ a few triangles, Fekete or other
+ sub-cycling for simulations with disparate time-scales
+ implicit dynamic solvers (test pre-conditionners, blended mass)
+ implicit/explicit partitioning near small geometrical features
+ implicit quasi-static solvers with conjugate gradient
+ soil-structure interaction (see QUAD4M, etc)
MESHER:
+ add surrounding zone extending to a circle (refinement ratio = (r0+h0/2)/(r0-h0/2))
+ refinement layers 4:2 and 3:1
+ add surrounding strip of elements for PML
+ element quality metrics
+ more precise stability estimate (element-wise eigenvalue problem)
+ automated meshing starting with a triangulation in Cubit (THEX) or:
Triangle (http://www.cs.cmu.edu/~quake/triangle.html)
--> CQmesh (http://www.dct.ufms.br/~marcelo/cqmesh.html)
--> QMPP (http://www.dct.ufms.br/~marcelo/qmpp.html)
--> SEM2DPACK
REFACTORING:
+ merge mesh_read and mesh_build ?
+ Fortran 2003's "submodules" allow implementation of the "dependency inversion principle",
which solves cyclic dependency issues.
Unfortunately the feature is not yet implemented in compilers
+ 'domain' object
+ improve reusability (disentangle code that is too tied to the current application)
+ encapsulate echo MSG...OK
OPTIMIZATION:
+ element coloring to allow parallelization on multicore machines (OpenMP)
+ vectorize computation of stress in damage materials
+ needs further optimization:
v2.2.12e shows 50% CPU time loss compared to v2.2.11 on EXAMPLES/UsingEMC2
Expanding size arguments on MAT_ELAST_f did not work
(see junk/mat_elast_longarg.f90 and junk/solver_longarg.f90)
Issue appeared in v2.2.12b (possible cause: moved element loop out of ELAST_KD)
+ Pointer components of structures are referenced directly within some procedures.
This prevents more agressive compiler optimization: compiler is conservative,
assumes aliasing (pointer components can point to same memory)
and produces safe but slower code
Can be resolved by layering:
1. procedure calls a sub-procedure
with structure pointer components expanded as arguments
or
2. allocatable components of Fortran 2003 (implemented in Intel compiler)
+ improve data locality: declare large working arrays instead of
element-by-element pointer allocation
+ allow single precision
INPUTS/OUTPUTS/POST:
+ GMT scripts for snapshot plots
+ matlab snapshots with tricontour
+ seismograms and snapshots: input sampling rate instead of number of timesteps (interpolate)
+ interpol/subsampling in all snapshot outputs
+ gnuplot plotting scripts: pm3d, vectors
+ 1D response: integrate Fabian Bonilla's contrib
+ update the POST/SPEC tools (1D model response)
+ Nakamura's H/V method (script)
+ engineering outputs: PGA, PGV, response spectra, etc
+ Graphical User Interface front end
DOCUMENTATION:
+ complete description of the boundary conditions
+ add full operational sequence in examples (README files)
+ add examples in matlab doc
+ emc2: detailed example of quadrangulate domains for structured regions
+ improve self-documentation script: make latex output, test RoboDoc or similar
PACKAGING:
+ expand test suite, test each main feature
+ avoid unnecessary recompilation of modules (www.theochem.uwa.edu.au/fortran/recompile)
+ add compiler_variable to Makefile