Skip to content
Snippets Groups Projects
Commit 587ef107 authored by Boris Martin's avatar Boris Martin
Browse files

update case

parent daf66790
No related branches found
No related tags found
1 merge request!6Draft: "Flexible acquisition", a configuration with arbitrary sources and receivers read from a YAML file.
# Geometry, configuration, parametrization
configuration = flexible_acquisition
parametrization = slowness2_real
physic = acoustic
equation = simplewave
L = 250
H = 100
Hsub = 15
# Initial parameters
Re(m_superc0) = 4e-7
Im(m_superc0) = 0
Re(m_subc0) = 8e-8
Im(m_subc0) = 0
# Subsurface configured in synthetics or inversion
#Discretization
integration_type = Gauss
equation_integration_degree_blk = 14
equation_integration_degree_bnd = 14
#Wave
wave_FunctionSpaceType = HierarchicalH1
shots_config = shots.yml
# Frequencies in freq.txt
50,60,0,2,2,0
30,40,50,2,2,2
50,75,100,2,3,4
\ No newline at end of file
from string import Template
import os
all_files = [filename for filename in os.listdir() if filename.startswith('config_') and filename.endswith('.txt')]
all_files.sort()
with open('run_synth.sh', 'w') as f:
f.write('set -e\nset -x\n\n')
for freq in all_files:
f.write('~/Bureau/gmsh/fwi/build/synthetics synthetics.txt common.txt {} -verbose 2\n'.format(freq))
with open('run_inv.sh', 'w') as f:
f.write('set -e\nset -x\n\n')
for freq in all_files:
f.write('~/Bureau/gmsh/fwi/build/inversion inversion.txt common.txt localminimum_ncg.txt innerproduct_sst.txt {} -verbose 2\n'.format(freq))
import csv
def create_config_file(freqs, degrees, output_file):
n_freq = sum(f != 0 for f in freqs)
prename = f"monaco_{'_'.join(str(f) for f in freqs[:n_freq])}_"
with open(output_file, "w") as f:
f.write(f"prename = {prename}\n")
f.write("#Frequencies\n")
f.write(f"n_freq = {n_freq}\n")
for i in range(n_freq):
f.write(f"#Frequency{i}\n")
f.write(f"frequency{i} = {freqs[i]}\n")
f.write(f"wave_FunctionSpaceDegree{i} = {degrees[i]}\n")
f.write("# Data for inversion\n")
for i in range(n_freq):
f.write(f"data{i} = {prename}synthetics_data{i}\n")
def process_csv(input_csv):
with open(input_csv, "r") as csvfile:
reader = csv.reader(csvfile)
for i, row in enumerate(reader):
freqs = list(map(int, row[:3])) # Cast frequencies to integers
degrees = list(map(int, row[3:]))
output_file = f"config_{i + 1}.txt"
create_config_file(freqs, degrees, output_file)
input_csv = "frequencies_degrees.csv"
process_csv(input_csv)
#Inner product
scale0 = 0.0
innerproduct = sobolev_l2
innerproduct_weight_bnd = 0.
innerproduct_diag_preconditioner_scale = 1
innerproduct_preconditioner_ref0 = 5400
innerproduct_stabilization = 5400
name = inversion_sobolev_05_25src_sob00
objective = l2distance
write_wave_fields = 1
write_model_field = 1
h = 1
#Initial model
m0_typec0 = file.pos
m0_pathc0 = modelproj
m0_scale = 75.
#Model
innerproduct_integration_degree_blk = 14
innerproduct_integration_degree_bnd = 14
#
model_FunctionSpaceType = HierarchicalH1
model_FunctionSpaceDegree = 1
#
#Objective
#objective = l2distance
#innerproduct = sobolev_l2
innerproduct_diag_preconditioner_scale = 0
#innerproduct_update_interval = 1
#innerproduct_preconditioner_ref0 = 500
#scale0 = 5
#
#Global minimum search
globalminimum_n_scale=1
globalminimumsearch = mono
globalminimum_relDecreaseThreshold = 0.0
# Invert of subsurface or all ?
unknown = all
#Data
n_group = 1
# gaussNewton to make the Hessian SPD
gaussNewton = 1
#Local minimum search
localminimumsearch = eisenstat
localminimum_writeInterval = 1
localminimum_maxIteration = 50
localminimum_forcing = 0
#
#Descent search
descentsearch = newton_conjugategradient
descent_maxIteration = 50
descent_eta0 = 0.9
#
#Line search
linesearch = strongwolfe
rho = 0.5
c1 = 0.0001
c2 = 0.9
a0 = 1.
This diff is collapsed.
name = synthetics
unknown = none
h = 1
write_data_fields = 1
write_wave_fields = 1
write_model_fields = 1
# Actual solution of the unknown part
Re(m_subc0) = 4.4e-7
Im(m_subc0) = 0
m0_typec0 = file.pos
m0_pathc0 = modelproj
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment