Skip to content

Is it correct for converting relative perturbation to absolute perturbation? #247

@YoushanLiu

Description

@YoushanLiu

On lines 211-213 of workflow/migration.py:
211 # Merge to vector and convert to absolute perturbations:
212 # log dm --> dm (see Eq.13 Tromp et al 2005)
213 gradient.update(vector=gradient.vector * model.vector)

Maybe there is a problem involved in the conversion on line 213. In SPECFEM, after calling finizalize_simulation, the outputs are relative kernels.

In Eq. 13 Tromp et al., 2005, K_relative * delta_(ln rho) = K_relative * delta_rho / rho.
Thus, K_absolute = K_relative / rho, i.e., the relative perturbations can be converted to absolute perturbations divided by the material parameters (rho) instead of multiplied by corresponding parameters.

Please check line 213 in migration.py.

Alternatively, we can update models using the relative perturbations directly by:
m_(k+1) = m_k * exp(alpha * p) because ln(m_(k+1)) = ln(m_k) + alpha * p

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions