Open thiagordonho opened 3 years ago
@thiagordonho is there an elastic wave propagation benchmark that demonstrates this implementation?
@thiagordonho is there an elastic wave propagation benchmark that demonstrates this implementation?
@kks32 I ran two simple simulations of a linear elastic block, no gravity, positioned on top of the bottom boundary. I applied the acceleration-time constraint to the nodes at the bottom boundary. The first simulation considers a sinusoidal math function an the second considers a piecewise linear math function. I will attach the obtained results to the body of the PR description.
Merging #715 (34c848d) into develop (86ba10e) will decrease coverage by
0.05%
. The diff coverage is95.02%
.
@@ Coverage Diff @@
## develop #715 +/- ##
===========================================
- Coverage 96.78% 96.73% -0.05%
===========================================
Files 130 132 +2
Lines 25899 26456 +557
===========================================
+ Hits 25065 25591 +526
- Misses 834 865 +31
Impacted Files | Coverage Δ | |
---|---|---|
include/io/io_mesh.h | 100.00% <ø> (ø) |
|
include/io/io_mesh_ascii.h | 100.00% <ø> (ø) |
|
include/loads_bcs/constraints.h | 100.00% <ø> (ø) |
|
include/mesh.h | 100.00% <ø> (ø) |
|
include/node.h | 100.00% <ø> (ø) |
|
include/node_base.h | 100.00% <ø> (ø) |
|
include/solvers/mpm_base.h | 50.00% <ø> (ø) |
|
include/solvers/mpm_base.tcc | 74.39% <37.21%> (-2.65%) |
:arrow_down: |
include/io/io_mesh_ascii.tcc | 76.33% <90.00%> (+1.52%) |
:arrow_up: |
include/loads_bcs/constraints.tcc | 96.39% <96.30%> (-0.04%) |
:arrow_down: |
... and 13 more |
Continue to review full report at Codecov.
Legend - Click here to learn more
Δ = absolute <relative> (impact)
,ø = not affected
,? = missing data
Powered by Codecov. Last update 86ba10e...34c848d. Read the comment docs.
Describe the PR This implementation is based on the issue presented in the RFC #692 . It adds a feature to read and apply input ground motion in terms of acceleration-time history.
Related Issues/PRs Continuation of PR #701.
Additional context This design involves creating a class for acceleration constraints (
AccelerationConstraint
) based on the already existing class for velocity constraints (VelocityConstraint
). However, a math function can be associated with the acceleration constraint defined from an acceleration-time history input. The acceleration constraints are applied at the nodes with the implementedNode::apply_acceleration_constraint
function within theNode::compute_acceleration_velocity
function as follows:The acceleration-time input, as mentioned, is done with math functions. An additional way to initialize a
”Linear”
math function is to read a.csv
file with the time and respective acceleration entries. This procedure is herein extended from the one presented in PR #701, where the CSVReader header file is used for reading the.csv
file. In this implementation, reading the math function.csv
file was moved to theio/io_mesh_ascii.tcc
within the newly created function calledIOMeshAscii::read_math_functions
:Benchmark tests
To test the implemented feature, a time-dependent acceleration was imposed to a Linear elastic, 2D block. The acceleration was imposed on the nodes at the bottom boundary of a 3 x 2 (width x height) mesh. The mesh has a spacing of 0.25 m. The block is 1 meter high and 1 meter wide. A detail of the model is shown in Figure 1. No gravity was considered in this model. Four particles per cell and direction were considered in this model. The following are the elastic characteristics of the block:
Two acceleration-time series were considered for two separate simulations. The charts below show the imposed nodal acceleration at the boundary (Figure 2) and the results of the center of mass of the block (Figure 3 and 4).
The velocity of the center of mass shows a slight deviation of the expected results, but the horizontal position of the center of mass is very close to the expected values.