SPECFEM / specfem3d_globe

SPECFEM3D_GLOBE simulates global and regional (continental-scale) seismic wave propagation.
GNU General Public License v3.0
91 stars 96 forks source link

add support for FORCESOLUTION (instead of CMTSOLUTION) in SPECFEM3D_GLOBE #270

Closed carltape closed 7 years ago

carltape commented 9 years ago

It would be useful to have the option of implementing a force, similar to what is available in SPECFEM3D (FORCESOLUTION instead of CMTSOLUTION). This implementation would be useful for ambient noise tests, for example. People have shown coherent signals for period up to 100s of seconds, so this would be nice to have at the global scale.

QuLogic commented 9 years ago

There are some parameters in constants.h that might do something like this:

! use a force source located exactly at a grid point instead of a CMTSOLUTION source
! this can be useful e.g. for asteroid impact simulations
! in which the source is a vertical force, normal force, impact etc.
  logical, parameter :: USE_FORCE_POINT_SOURCE = .false.
  double precision, parameter :: FACTOR_FORCE_SOURCE = 1.d15
  integer, parameter :: COMPONENT_FORCE_SOURCE = 3  ! takes direction in comp E/N/Z = 1/2/3
carltape commented 9 years ago

Thanks, Elliott, I didn't realize this. Then it looks like the implementation is there already. The FORCESOLUTION is a bit more general and user-friendly, but this modification is not urgent.

Carl

On Sat, Nov 15, 2014 at 5:31 PM, Elliott Sales de Andrade < notifications@github.com> wrote:

There are some parameters in constants.h that might do something like this:

! use a force source located exactly at a grid point instead of a CMTSOLUTION source! this can be useful e.g. for asteroid impact simulations! in which the source is a vertical force, normal force, impact etc. logical, parameter :: USE_FORCE_POINT_SOURCE = .false. double precision, parameter :: FACTOR_FORCE_SOURCE = 1.d15 integer, parameter :: COMPONENT_FORCE_SOURCE = 3 ! takes direction in comp E/N/Z = 1/2/3

— Reply to this email directly or view it on GitHub https://github.com/geodynamics/specfem3d_globe/issues/270#issuecomment-63201522 .

komatits commented 9 years ago

Be careful when using it, it has not been used in recent years and thus may or may not work fine. It would be safer to get rid of it and cut and paste the clean FORCESOLUTION that is in SPECFEM3D (Cartesian). (which Vadim and I are currently cleaning, please give us a week to finish that and then you can go ahead and cut and paste it in GLOBE).

Thanks, Dimitri.

On 11/16/2014 06:02 AM, Carl Tape wrote:

Thanks, Elliott, I didn't realize this. Then it looks like the implementation is there already. The FORCESOLUTION is a bit more general and user-friendly, but this modification is not urgent.

Carl

On Sat, Nov 15, 2014 at 5:31 PM, Elliott Sales de Andrade < notifications@github.com> wrote:

There are some parameters in constants.h that might do something like this:

! use a force source located exactly at a grid point instead of a CMTSOLUTION source! this can be useful e.g. for asteroid impact simulations! in which the source is a vertical force, normal force, impact etc. logical, parameter :: USE_FORCE_POINT_SOURCE = .false. double precision, parameter :: FACTOR_FORCE_SOURCE = 1.d15 integer, parameter :: COMPONENT_FORCE_SOURCE = 3 ! takes direction in comp E/N/Z = 1/2/3

— Reply to this email directly or view it on GitHub

https://github.com/geodynamics/specfem3d_globe/issues/270#issuecomment-63201522

.

— Reply to this email directly or view it on GitHub https://github.com/geodynamics/specfem3d_globe/issues/270#issuecomment-63204667.

Dimitri Komatitsch CNRS Research Director (DR CNRS), Laboratory of Mechanics and Acoustics, UPR 7051, Marseille, France http://komatitsch.free.fr

komatits commented 9 years ago

I have fixed the implementation of FORCESOLUTION (instead of CMTSOLUTION) in SPECFEM3D (_Cartesian) thus you can now go ahead and cut and paste it in SPECFEM3D_GLOBE if you want, as requested below.

The parameters

logical, parameter :: USE_FORCE_POINT_SOURCE = .false. double precision, parameter :: FACTOR_FORCE_SOURCE = 1.d15 integer, parameter :: COMPONENT_FORCE_SOURCE = 3 ! takes direction in comp E/N/Z = 1/2/3

should probably be moved from setup/constants.h.in to the Par_file if someone has time to implement that.

Thanks, Dimitri.

On 11/16/2014 10:54 PM, Dimitri Komatitsch wrote:

Be careful when using it, it has not been used in recent years and thus may or may not work fine. It would be safer to get rid of it and cut and paste the clean FORCESOLUTION that is in SPECFEM3D (Cartesian). (which Vadim and I are currently cleaning, please give us a week to finish that and then you can go ahead and cut and paste it in GLOBE).

Thanks, Dimitri.

On 11/16/2014 06:02 AM, Carl Tape wrote:

Thanks, Elliott, I didn't realize this. Then it looks like the implementation is there already. The FORCESOLUTION is a bit more general and user-friendly, but this modification is not urgent.

Carl

On Sat, Nov 15, 2014 at 5:31 PM, Elliott Sales de Andrade < notifications@github.com> wrote:

There are some parameters in constants.h that might do something like this:

! use a force source located exactly at a grid point instead of a CMTSOLUTION source! this can be useful e.g. for asteroid impact simulations! in which the source is a vertical force, normal force, impact etc. logical, parameter :: USE_FORCE_POINT_SOURCE = .false. double precision, parameter :: FACTOR_FORCE_SOURCE = 1.d15 integer, parameter :: COMPONENT_FORCE_SOURCE = 3 ! takes direction in comp E/N/Z = 1/2/3

— Reply to this email directly or view it on GitHub

https://github.com/geodynamics/specfem3d_globe/issues/270#issuecomment-63201522

.

— Reply to this email directly or view it on GitHub https://github.com/geodynamics/specfem3d_globe/issues/270#issuecomment-63204667.

Dimitri Komatitsch CNRS Research Director (DR CNRS), Laboratory of Mechanics and Acoustics, UPR 7051, Marseille, France http://komatitsch.free.fr

komatits commented 7 years ago

From Hom Nath @homnath :

Reciprocal strain Green functions in SPECFEM3D Globe:

Dear all,

Some people were asking about the possibility of computing reciprocal strain Green functions in SPECFEM3D Globe (strain tensor recordings for a point force source). It appears to me that such a feature is not currently available in SPECFEM3D Globe. Have anybody ever computed those functions using SPECFEM3D Globe? Or is it worthwhile to add such a feature in SPECFEM3D Globe? It seems, however, possible in SPECFEM3D Cartesian because it has FORCESOLUTION feature.

Any suggestions would be greatly appreciated!

Thanks, Hom Nath

komatits commented 7 years ago

Dear Hom Nath, dear all,

That would be very useful. It is worth adding such an option. This is indirectly related to https://github.com/geodynamics/specfem3d_globe/issues/270

Best regards, Dimitri.

komatits commented 7 years ago

The FORCESOLUTION option is implemented but not tested (and hidden in constants.h, should of course be moved to the Par_file or the source file).

komatits commented 7 years ago

From Qinya Liu @liuqinya :

The force solution is actually much easier than the moment-tensor solution, so there should be no problem implementing it. I think the part that needs more thinking is how (and where) to save the wavefield. If you want to store the field on a regular grid, it may help to refer to Elliott's earlier commits on saving kernels on a regular grid. On the other hand, Vala and I have been thinking along a similar line for fast global source inversions. It will be great if we can together implement it as part of the regular release.

komatits commented 7 years ago

From Hom Nath @homnath :

Great idea! Thank you for your feedback/suggestions! I agree that the point force implementation should not be that difficult because it is already implemented in Cartesian version. I see one problem. For finite/spectral element method, the derivative of a primary variable is discontinuous across the element boundaries. That means strain/stress field will be discontinuous across the element boundary. In classical FEM, so-called strain smoothing procedure is employed in order to obtain the smooth and accurate strain/stress field. We could implement the similar technique. But for the first stage, we could first implement point force and see how the simply interpolated strain compares with the finite difference method.

I will see if I can quickly implement FORCESOLUTION in the Globe version.

Best, Hom Nath

komatits commented 7 years ago

Done by Hom Nath @homnath