<jupyter_start><jupyter_text><NAME>        7 August 2019      What it is, and what it's not It is:- a small, object-oriented Python3 package containing mainly class-definitions- a helpful tool to keep track of, plot and modify Fullwave's input and output- in above sense, an interface between Fullwave3D and IPython kernel (Jupyter Notebook/Lab)It is **not**:- a replacement for SegyPrep (yet), Dashboard - rather a complement- seismic processing package  Motivation 1. Automation of the workflow2. Convenience - one tool for most tasks3. Reproducible research - Jupyter  Example1<jupyter_code>dt = 0.0025  
ns = 2000    
dx = 50      
x1 = -3e4     
x2 = -1e4    
y1 = -2e3    
y2 = 5e3    
z1 = 0 # CUT AT THE SEA SURFACE
z2 = 3000    
box = [x1, x2, y1, y2, z1, z2]
timespace = [box, dx, ns, dt]
blocks = [
    IterationBlock(freq=3.0, niters=10, minoff=5000, maxoff=10000),
    IterationBlock(freq=4.0, niters=10, minoff=5000, maxoff=10000),
    IterationBlock(freq=5.0, niters=10, minoff=5000, maxoff=10000)
]

p11 = ProjInvSynth('p11', './p11/', timespace=timespace, blocks=blocks, 
                   io='sgy', equation='acoustic', geometry='sgy', 
                   plot=1, full_map=1, lims_pad=None)
p11.syn.geom.plot(full_map=1)
p11.syn.dims<jupyter_output><empty_output><jupyter_text>Simple QC Adding this type of features is very quick provided a good framework.<jupyter_code>p11.syn.inp.sr.show_offsets()<jupyter_output><empty_output><jupyter_text>Find the model value at the seabed. It assumes some water-column (here for vp: 1500 +/- 100 m/s) value to find where the seabed is located.<jupyter_code>p11.syn.vp.true.seabed_value()
p11.syn.vp.true.plot_z_profile(xy_list=[[10,10], [210,65]])<jupyter_output><empty_output><jupyter_text>More detailed setup<jupyter_code>p11.syn.env.var
p11.syn.inp.sp.create()
p11.syn.inp.runfile.create(b_abs=2, e_abs=0, verbos=2)
p11.syn.inp.pbs.create(verbos=2, nnodes=1, hours=2, ncpus=12, q='general')
p11.syn.inp.check()<jupyter_output>+++++++++++++++ Will only check input files and dump canonical runfile ++++++++++++++++
---=== Starting run (host: ese-kajetan) on 2019/06/17, 13:41:17 ===---
executable: fullwave3D.exe, version: unknown, release date: 2019-06-13
=== scheduler_getprojargs: Project name (command-line argument): "p11s"
=== setup_probtype: Equation: "acoustic", Anisotropy: "none", Domain: "time", Kernel: "low"
+++ ReadParms: WARNING, unknown keyword in Runfile: "ibfs"
+++ ReadParms: WARNING, unknown keyword in Runfile: "seaLevel"
+++ ReadParms: WARNING, unknown keyword in Runfile: "maxGhostIter"
+++ ReadParms: WARNING, unknown keyword in Runfile: "vacuum"
+++ ReadParms: WARNING, unknown keyword in Runfile: "accuracy"
+++ ReadParms: WARNING, unknown keyword in Runfile: "minGhostFS"
+++ ReadParms: WARNING, unknown keyword in Runfile: "minFictFS"
+++ ReadParms: WARNING, unknown keyword in Runfile: "interpMode"
+++ ReadParms: WARNING, unknown keyword in Runfile: "srcType"
+++ ReadParms: WARNING, unknown keywo[...]<jupyter_text>Synthetic run ![title](p11/syn/inp/p11s-TrueVp_Anom_4165.png)<jupyter_code>p11.syn.out.fw<jupyter_output><empty_output><jupyter_text>Note a drop in wavelength when entering the water. ![title](p11/syn/out/p11s-fw-002000-csref04144-iter00001-taskid00004_m.gif) ![title](p11/syn/out/p11s-fw-000500.gif)<jupyter_code>p11.syn.out.synth<jupyter_output><empty_output><jupyter_text>![title](p11/syn/out/p11s-Synthetic.gif)  Inversion<jupyter_code>p07.inv.out.functional.plot()
p11.inv.vp.it[22].plot()<jupyter_output><empty_output><jupyter_text>![title](p11/inv/out/p11i-CP-Vp_Rec_4165.gif) Raw gradient shows the actual penetration depth. ![title](p11/inv/out/p11i-CP_RawGrad_4165.gif) Raw preconditioner corresponds to the wavefield energy. This is what gradient is divided by (equivalent to inverse Hessian operator), obviously with some stabilization. ![title](p11/inv/out/p11i-CP_RawPrec_4165.gif)<jupyter_code>proj6.inp.files<jupyter_output><empty_output><jupyter_text>Example2 The simplest 5-point, 2D acoustic solver with reflecting boundaries.<jupyter_code>wfield, receivers = proj.run_solver(sources, receivers)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.13855421686746988, 'fraction_numerical': 0.06, 'mean_word_length': 5.547318611987381, 'pattern_counts': {'":': 0, '<': 37, '<?xml version=': 0, '>': 37, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '9', 'dir': 'jupyter-structured-clean-dedup', 'id': '213593', 'license': 'MIT', 'n_tokens_mistral': 1710, 'n_tokens_neox': 1523, 'n_words': 351, 'path': 'presentations/FullwavePy_DEMO1.ipynb', 'repo_name': 'kmch/FullwavePy', 'size': '4164'}