{
    "componentChunkName": "component---src-templates-notebook-tsx",
    "path": "/2025.1.3/examples/tutorials/waveform_physics/ocean_loading/tutorial",
    "result": {"data":{"site":{"siteMetadata":{"salvusDocVersions":{"current":"2026.5.0"}}},"jupyterNotebook":{"slug":"/2025.1.3/examples/tutorials/waveform_physics/ocean_loading/tutorial","notebook_widgets_root_path":"/jupyter_notebook_widgets","notebook_json":"{\"cells\":[{\"cell_type\":\"markdown\",\"id\":\"eedbfaf5\",\"metadata\":{},\"source\":[\"# Ocean Loading\\n\",\"\\n\",\"This integration test compares seismograms in a 2D elastic domain with an ocean layer on top for three different scenarios:\\n\",\"\\n\",\"1. The ocean layer is completely ignored and replaced by a free surface\\n\",\"\\n\",\"2. The ocean layer is approximated by a load applied to the surface of the elastic domain\\n\",\"\\n\",\"3. The ocean is modelled as an acoustic medium in a coupled solid/fluid simulation.\\n\",\"\\n\",\"\\n\",\"Depending on the height (weight) of the water column, we expect the solutions of [1] and [2] to be similar for (very) thin ocean layers. Furthermore, the solutions to [2] and [3] are similar, if the height of the water column corresponds to a fraction of a wavelength (here: 10%).\\n\",\"\\n\",\"\\n\",\"The ocean load is modelled as a boundary condition, which is readily available from `simple_config`.\\n\",\"There are two required steps to run a simulation with ocean loading:\\n\",\"\\n\",\"* Attach a scalar field `OCEANLOAD` to the mesh, which contains the **weight** of the water column, i.e., the ocean height times its density. The field is only required (and read) at the ocean surface. However, we currently don't have the concept of material properties at interface, so it still needs to have the same size as all other material parameters.\\n\",\"\\n\",\"\\n\",\"* Add ocean loading as boundary condition to the waveform simulation object:\\n\",\"\\n\",\"```\\n\",\"import salvus.flow.simple_config as sc\\n\",\"sim = sc.simulation.Waveform(mesh=mesh)\\n\",\"oceanload = sc.boundary.OceanLoading(side_sets=[...])\\n\",\"sim.add_boundary_conditions(oceanload)\\n\",\"```\"]},{\"cell_type\":\"code\",\"execution_count\":1,\"id\":\"2a51c945\",\"metadata\":{\"lines_to_next_cell\":0},\"outputs\":[{\"name\":\"stdout\",\"output_type\":\"stream\",\"text\":[]}],\"source\":[\"%matplotlib inline\\n\",\"%config Completer.use_jedi = False\\n\",\"import os\\n\",\"import toml\\n\",\"import numpy as np\\n\",\"import matplotlib.pyplot as plt\\n\",\"import salvus.flow.api\\n\",\"from pyasdf import ASDFDataSet\\n\",\"from salvus.mesh.simple_mesh import basic_mesh\\n\",\"import salvus.flow.simple_config as sc\\n\",\"\\n\",\"SALVUS_FLOW_SITE_NAME = os.environ.get(\\\"SITE_NAME\\\", \\\"local\\\")\\n\",\"RANKS_PER_JOB = 2\"]},{\"cell_type\":\"code\",\"execution_count\":2,\"id\":\"349a0b66\",\"metadata\":{\"lines_to_end_of_cell_marker\":2,\"lines_to_next_cell\":2},\"outputs\":[],\"source\":[\"# Domain setup (m).\\n\",\"max_x = 2500.0  # Distance in meters.\\n\",\"max_y = 700.0  # Distance in meters.\\n\",\"max_frequency = 40.0  # Frequency in Hz.\\n\",\"\\n\",\"vp_fluid = 1500.0\\n\",\"rho_fluid = 1200.0\"]},{\"cell_type\":\"code\",\"execution_count\":3,\"id\":\"24c5918b\",\"metadata\":{},\"outputs\":[],\"source\":[\"def generate_meshes(ocean_height):\\n\",\"    header = [\\n\",\"        \\\"NAME         ocean_benchmark\\\\n\\\",\\n\",\"        \\\"UNITS        km\\\\n\\\",\\n\",\"        \\\"COLUMNS      radius rho vp vs\\\\n\\\",\\n\",\"    ]\\n\",\"\\n\",\"    solid_model = [\\n\",\"        \\\"    0.7   2.6     1.7     1.0\\\\n\\\",\\n\",\"        \\\"    0.0   7.6     5.1     3.0\\\\n\\\",\\n\",\"    ]\\n\",\"\\n\",\"    ocean_layer = [\\n\",\"        f\\\"    {1 + ocean_height/1000} {rho_fluid/1000}     {vp_fluid/1000}     0.0\\\\n\\\"\\n\",\"        f\\\"    0.7   {rho_fluid/1000}     {vp_fluid/1000}     0.0\\\\n\\\"\\n\",\"    ]\\n\",\"\\n\",\"    with open(\\\"solid.bm\\\", \\\"w\\\") as f:\\n\",\"        f.writelines(header)\\n\",\"        f.writelines(solid_model)\\n\",\"\\n\",\"    with open(\\\"coupled.bm\\\", \\\"w\\\") as f:\\n\",\"        f.writelines(header)\\n\",\"        f.writelines(ocean_layer)\\n\",\"        f.writelines(solid_model)\\n\",\"\\n\",\"    mesh = basic_mesh.CartesianFromBm2D(\\n\",\"        bm_file=\\\"solid.bm\\\",\\n\",\"        x_max=max_x,\\n\",\"        y_max=max_y,\\n\",\"        max_frequency=max_frequency,\\n\",\"    ).create_mesh()\\n\",\"    mesh_coupled = basic_mesh.CartesianFromBm2D(\\n\",\"        bm_file=\\\"coupled.bm\\\",\\n\",\"        x_max=max_x,\\n\",\"        y_max=max_y + ocean_height,\\n\",\"        max_frequency=max_frequency,\\n\",\"    ).create_mesh()\\n\",\"\\n\",\"    mesh.attach_field(\\n\",\"        \\\"OCEANLOAD\\\",\\n\",\"        ocean_height\\n\",\"        * rho_fluid\\n\",\"        * np.ones_like(mesh.element_nodal_fields[\\\"VP\\\"]),\\n\",\"    )\\n\",\"\\n\",\"    return mesh, mesh_coupled\"]},{\"cell_type\":\"code\",\"execution_count\":4,\"id\":\"16b01246\",\"metadata\":{\"lines_to_end_of_cell_marker\":2,\"lines_to_next_cell\":2},\"outputs\":[],\"source\":[\"# Sources.\\n\",\"fx, fy = 1e9, -1e10\\n\",\"sx, sy = 500.0, 500.0\\n\",\"stf = sc.source.stf.Ricker(center_frequency=14.5)\\n\",\"source = sc.source.cartesian.VectorPoint2D(\\n\",\"    x=sx, y=sy, fx=fx, fy=fy, source_time_function=stf\\n\",\")\\n\",\"\\n\",\"# Receivers.\\n\",\"nr = 10  # Number of receivers.\\n\",\"ry0 = 690.0  # Receiver y-value.\\n\",\"rx0 = 1500.0  # x-value of first receiver.\\n\",\"rx1 = 2000.0  # x-value of last receiver.\\n\",\"receivers = [\\n\",\"    sc.receiver.cartesian.Point2D(\\n\",\"        x=x, y=ry0, station_code=f\\\"{_i:03d}\\\", fields=[\\\"displacement\\\"]\\n\",\"    )\\n\",\"    for _i, x in enumerate(np.linspace(rx0, rx1, nr))\\n\",\"]\"]},{\"cell_type\":\"code\",\"execution_count\":5,\"id\":\"c3cdadf7\",\"metadata\":{},\"outputs\":[],\"source\":[\"def get_simulation_template(mesh, output=False):\\n\",\"    sim = sc.simulation.Waveform(\\n\",\"        mesh=mesh, sources=source, receivers=receivers\\n\",\"    )\\n\",\"\\n\",\"    sim.physics.wave_equation.end_time_in_seconds = 0.75\\n\",\"\\n\",\"    if output:\\n\",\"        sim.output.volume_data.filename = \\\"wavefield.h5\\\"\\n\",\"        sim.output.volume_data.format = \\\"hdf5\\\"\\n\",\"        sim.output.volume_data.fields = [\\\"displacement\\\"]\\n\",\"        sim.output.volume_data.sampling_interval_in_time_steps = 50\\n\",\"\\n\",\"    boundaries = sc.boundary.Absorbing(\\n\",\"        side_sets=[\\\"x0\\\", \\\"x1\\\", \\\"y0\\\"], taper_amplitude=0.0, width_in_meters=0.0\\n\",\"    )\\n\",\"    sim.add_boundary_conditions(boundaries)\\n\",\"    sim.validate()\\n\",\"\\n\",\"    return sim\"]},{\"cell_type\":\"code\",\"execution_count\":6,\"id\":\"cd53c543\",\"metadata\":{},\"outputs\":[],\"source\":[\"def compare_seismograms(asdf_file, asdf_reference, freqmax, freqmin):\\n\",\"    with ASDFDataSet(asdf_file, mode=\\\"r\\\") as data, ASDFDataSet(\\n\",\"        asdf_reference, mode=\\\"r\\\"\\n\",\"    ) as ref:\\n\",\"        total_misfit = 0\\n\",\"        for u, uref in zip(data.waveforms, ref.waveforms):\\n\",\"            tr_misfit = []\\n\",\"            for j, cmp in enumerate([\\\"X\\\", \\\"Y\\\"]):\\n\",\"                dt = 1e-4\\n\",\"                tr = u.displacement.select(component=cmp)[0]\\n\",\"                tr.interpolate(method=\\\"lanczos\\\", a=12, sampling_rate=1 / dt)\\n\",\"                tr1 = tr.copy().filter(\\n\",\"                    \\\"bandpass\\\",\\n\",\"                    freqmax=freqmax,\\n\",\"                    freqmin=freqmin,\\n\",\"                    corners=8,\\n\",\"                    zerophase=True,\\n\",\"                )\\n\",\"                tr = uref.displacement.select(component=cmp)[0]\\n\",\"                tr.interpolate(method=\\\"lanczos\\\", a=12, sampling_rate=1 / dt)\\n\",\"                tr2 = tr.copy().filter(\\n\",\"                    \\\"bandpass\\\",\\n\",\"                    freqmax=freqmax,\\n\",\"                    freqmin=freqmin,\\n\",\"                    corners=8,\\n\",\"                    zerophase=True,\\n\",\"                )\\n\",\"\\n\",\"                diff = (tr1.data - tr2.data) ** 2\\n\",\"                tr_misfit.append(np.sqrt(diff.sum() / (tr2.data**2).sum()))\\n\",\"            total_misfit += (tr_misfit[0] + tr_misfit[1]) / 2\\n\",\"        avg_misfit = total_misfit / len(data.waveforms)\\n\",\"\\n\",\"    return avg_misfit\"]},{\"cell_type\":\"markdown\",\"id\":\"a91a29cc\",\"metadata\":{},\"source\":[\"## Compare ocean load to coupled simulation\"]},{\"cell_type\":\"code\",\"execution_count\":7,\"id\":\"6b51ce83\",\"metadata\":{},\"outputs\":[{\"name\":\"stdout\",\"output_type\":\"stream\",\"text\":[\"SalvusJob `job_2605011429234038_741c35ec69` running on `local` with 2 rank(s).\\n\",\"\\u001b[32m\\u001b[1mSite information:\\u001b[0m\\n\",\"\\u001b[1m  * Salvus version: \\u001b[0m2025.1.3\\n\",\"\\u001b[1m  * Floating point size: \\u001b[0m32\\n\",\"                                                                         \\r\"]},{\"data\":{\"image/png\":\"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\\n\"},\"metadata\":{\"needs_background\":\"light\"},\"output_type\":\"display_data\"},{\"name\":\"stdout\",\"output_type\":\"stream\",\"text\":[\"* Downloaded 327.1 KB of results to `ocean`.\\n\",\"* Total run time: 6.98 seconds.\\n\",\"* Pure simulation time: 6.73 seconds.\\n\",\"SalvusJob `job_2605011429202461_013d095cd7` running on `local` with 2 rank(s).\\n\",\"\\u001b[32m\\u001b[1mSite information:\\u001b[0m\\n\",\"\\u001b[1m  * Salvus version: \\u001b[0m2025.1.3\\n\",\"\\u001b[1m  * Floating point size: \\u001b[0m32\\n\",\"                                    \\r\"]},{\"data\":{\"image/png\":\"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\\n2rVrAFhZWVUZW1mdr0+fPpw5c4bQ0FDlGG3evJmuXbtiZGTE4sWL8fLyokmTJnh5ebFo0SKD90ON\\niXRERAQnTpxgwIABbNiwQcnqPTw8MDU1BWDQoEH4+Phw+vRpjh07RkZGBh988IFOOSEhIRgbG+sk\\nK6tWrSIqKkrnfaampiQlJdGzZ0927NjB8uXLmTp1KkVFRZw/f55Ro0axatUqTpw4gbu7O3v27MHY\\n2LjabejSpQsff/wxzZo1IyMjA0tLS3r06MHMmTM5ffo027dv5/3331eGAVhYWJCYmMjZs2cZP348\\nTk5OHDhwAIDExEQ6duyobEdycjIdOnTAzMyMfv36MWvWLDIzM1myZAkjRozgypUrlcrs378/b7/9\\nNmZmZvz+++8kJyezdevWmg4FAMbGxty5c4fCwkISExNJTU1l48aNrFmzpsr1zJo1ixMnTnD06FFO\\nnz5Nq1atdPb5/v37CQwM5Pz583z//fe89NJLlYa+X7t2jcjISKZOncqpU6dYt24do0eP5vjx48ox\\nO3ToEFu2bOHQoUOsXr2atWvXsnXrVvbs2cPnn3/OxYsXAdi0aRPh4eGAtqe3b9++mJmZ6azPzMxM\\naTXLz8+v9ljpu+6a9tv9dOrUiVGjRtG9e3d27dqls8zU1JSioiJyc3OJj48nJSWFbdu2kZSURGlp\\nKYMHD2bQoEGcOXOGd999l8WLF9d4rtapU0dZz8GDB+nVq1e115eFhQWrV69m06ZNfPHFF3Tt2lUZ\\n+rJjxw7atWunnKuXL18mMzOToKAgRo8eTevWrcnMzOTw4cP8+OOPrF+/vsoy16xZQ0xMDMeOHePo\\n0aOcPXu22m0o061bNyWW69evU1RURFpampKwJycnExYWxi+//MLMmTPZvXs3586do0ePHowYMQLQ\\nfresXr1aKTMpKQkTExOCg4OZPXs2v/zyCwcPHiQjIwMHBwfGjBlT5T4sLyoqCmdnZzIyMkhNTSUp\\nKYmFCxdWin/w4MEMGTKEs2fP8sUXXyj7B7TDgso3lFXH19e30jle5uTJk3h7eyuv1Wo1Go2G3377\\nrdIyAE9PT06cOIGJiYmS/BcXF2Nqakp2djYLFixgyJAhPPPMM4SGhrJ79269YhRCCPH4ioiIUBpX\\nL168yDfffMOzzz4LwFNPPaU0rt66dYu5c+fStm3bSqMzL1y4QHR0NDNmzFD+FhoayqpVq9BoNFy/\\n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\\npgAAAABJRU5ErkJggg==\\n\"},\"metadata\":{\"needs_background\":\"light\"},\"output_type\":\"display_data\"},{\"name\":\"stdout\",\"output_type\":\"stream\",\"text\":[\"* Downloaded 330.6 KB of results to `coupled`.\\n\",\"* Total run time: 7.47 seconds.\\n\",\"* Pure simulation time: 7.15 seconds.\\n\",\"average misfit between ocean load and coupled simulation:  0.002808987021457608\\n\"]}],\"source\":[\"ocean_height = 3.75\\n\",\"\\n\",\"mesh, mesh_coupled = generate_meshes(ocean_height)\\n\",\"sim = get_simulation_template(mesh)\\n\",\"\\n\",\"sim_ocean = sim.copy()\\n\",\"oceanload = sc.boundary.OceanLoading(side_sets=[\\\"y1\\\"])\\n\",\"sim_ocean.add_boundary_conditions(oceanload)\\n\",\"sim_ocean.validate()\\n\",\"\\n\",\"sim_coupled = sim.copy()\\n\",\"sim_coupled.set_mesh(mesh_coupled)\\n\",\"boundaries = sc.boundary.HomogeneousDirichlet(side_sets=[\\\"y1\\\"])\\n\",\"sim_coupled.add_boundary_conditions(boundaries)\\n\",\"sim_coupled.validate()\\n\",\"\\n\",\"salvus.flow.api.run(\\n\",\"    site_name=SALVUS_FLOW_SITE_NAME,\\n\",\"    input_file=sim_ocean,\\n\",\"    ranks=RANKS_PER_JOB,\\n\",\"    output_folder=\\\"ocean\\\",\\n\",\"    get_all=True,\\n\",\"    overwrite=True,\\n\",\")\\n\",\"salvus.flow.api.run(\\n\",\"    site_name=SALVUS_FLOW_SITE_NAME,\\n\",\"    input_file=sim_coupled,\\n\",\"    ranks=RANKS_PER_JOB,\\n\",\"    output_folder=\\\"coupled\\\",\\n\",\"    get_all=True,\\n\",\"    overwrite=True,\\n\",\")\\n\",\"\\n\",\"chi = compare_seismograms(\\n\",\"    \\\"coupled/receivers.h5\\\", \\\"ocean/receivers.h5\\\", 40.0, 0.1\\n\",\")\\n\",\"print(\\\"average misfit between ocean load and coupled simulation: \\\", chi)\\n\",\"assert chi < 0.01\"]},{\"cell_type\":\"markdown\",\"id\":\"15f80351\",\"metadata\":{},\"source\":[\"## Compare ocean load to free surface\\n\",\"\\n\",\"Note that the average misfit here is on the same order of magnitude as in the previous simulation despite the fact that the ocean height is only 0.01 instead of 3.75\"]},{\"cell_type\":\"code\",\"execution_count\":8,\"id\":\"e3d5ce31\",\"metadata\":{},\"outputs\":[{\"name\":\"stdout\",\"output_type\":\"stream\",\"text\":[\"SalvusJob `job_2605011429073022_469740deec` running on `local` with 2 rank(s).\\n\",\"\\u001b[32m\\u001b[1mSite information:\\u001b[0m\\n\",\"\\u001b[1m  * Salvus version: \\u001b[0m2025.1.3\\n\",\"\\u001b[1m  * Floating point size: \\u001b[0m32\\n\",\"                                                     \\r\"]},{\"data\":{\"image/png\":\"iVBORw0KGgoAAAANSUhEUgAAA9IAAAAtCAYAAABCv1OPAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\\nCHwIZIgAACAASURBVHic7d15fEz3/vjx14RsaknSyCqSyMhCCE1EkCZEyFYXpUHxtbT2tZZWe1Up\\n1SrdqGptTamlVWvsslkrtiCWUNoQRBBNkAgR+f0xvzk3IzGZ4baue9/Px8PjITmTz3mf8zkzc96f\\n7ahKS0tLEUIIIYQQQgghhEFMnnUAQgghhBBCCCHE80QSaSGEEEIIIYQQwgiSSAshhBBCCCGEEEaQ\\nRFoIIYQQQgghhDCCJNJCCCGEEEIIIYQRJJEWQgghhBBCCCGMIIm0EEIIIYQQQghhBEmkhRBCCCGE\\nEEIII0giLYQQQgghhBBCGEESaSGEEEIIIYQQwgiSSAshhBBCCCGEEEao+qwDEEII8fdKvrCTFWdW\\nkl149VmHIoQQ4v9zrOZAD6/utHENfdahCCEMID3SQgjxP0aSaCGE+M+TXXiVFWdWPuswhBAGkkRa\\nCCH+x0gSLYQQ/5nk81mI54ck0kIIIYQQQgghhBEkkRZCCCGEEEIIIYwgibQQQgghhBBCCGEEgxLp\\nxYsX4+fnh729PbVr1yYoKIjNmzcbtIO+ffsyceJEva/JzMxEpVLx4MEDg8p8EleuXMHb2xt7e3su\\nX778l+3nSW3duhW1Wv237jMuLo7g4OAKt/2VdfL222/z6aefAnDt2jUGDx5MnTp1MDc3p06dOgwa\\nNIgbN2782/f7pHJyclizZo3ys5ubGwkJCX/pPmNiYrC2tmbt2rV/6X6eRFFRESqVikuXLj3rUPQq\\new4NrTN9r5swYQJvvvnmE8WyZ88e3N3d6dq1q87vHz58yPjx46lduzZWVlZ06dKFP//8U9m+dOlS\\n6tWrR82aNQkMDOTYsWMA3Lt3jx49etC3b1969+5NSUmJ8jfnzp2jadOm3Lt374liFUII8Xy5e/cu\\nAwcOxMHBgRdffJGYmBguXryobP/yyy9xd3fH2tqagIAAdu7cCcDatWuxsLDQ+Ve1alVGjBgBwO+/\\n/05UVBTe3t54enoyfPhw7t+/r5R769YtbG1tKS4u5vz580RFRfHiiy/i6OjI0KFDldfqi8/f379c\\nDCqVitzcXABmz56Nj48P3t7eBAYGKrFXxtfXFzc3N/7v//4PgMOHD9OsWTNq1qyJh4cHK1f+a1G3\\nGzdu0LlzZ6ysrLCzs+Pdd9+ltLS0wnL1lQMwefJkHBwcsLGxITY2ltu3bxsU798RnzHl6DNz5kyq\\nVq2qU2fa8wyPv94A5s6di1qtxsrKipCQEM6dO/fY/eir+4SEBAICAvD29qZBgwZ8++23yray93I/\\n/fQTN2/e1Ck3MDCQAwcOVLjPrKwsfH19qVWrFl9++WWl56LSRDoxMZF33nmHuLg4cnJyyMnJYcSI\\nEXTq1InMzMxKd2AIFxcXsrOzqVr1r3sa1759+ygpKeHq1as4Ozsb/Hdlb1D/Xf6KMp/lfoy1efNm\\noqKiyM/Pp1WrVmRmZrJ582Zu375NcnIyN27cIDg4mKKiomcdKqB5s5ZNpA8ePEhISMhftr8bN26w\\nefNm0tPT6dy5s8F/9zxfq/9uj57Dv7rO9Fm+fDljxoypcP/z5s1j+/btpKenk52djZmZmXIDk56e\\nzsiRI1m+fDl5eXn07t2bTp06UVxczIYNG3ByciIuLg5LS0u2b98OQGlpKQMHDmTOnDmYm5v/rccp\\nhBDi2XjnnXfIysri7NmzXLlyBWtra4YOHQrAmjVr+Pzzz0lISODmzZv0799f+S7p3LkzRUVFyr9b\\nt27h7e3N66+/DkC/fv0ICgoiIyOD48ePk5aWxueff67sd/v27YSGhmJqasqrr75Ks2bNuHbtGkeP\\nHmXXrl3Mnj270vgOHz6sE8OCBQuIjIzkxRdfJDk5menTp5OSkkJGRgbvv/8+HTt2NPj+8Ntvv2XJ\\nkiXcu3ePjh078uabb5KXl8fSpUsZOHAgGRkZAAwZMoRatWqRnZ3NsWPHWLduHYsWLSpXXmXlfPvt\\nt6xfv56jR49y8eJFHj58yM8///zY+NLT00lNTf3b4jO0nMrk5eUxcOBAnXpbsmQJoP9627ZtG5Mn\\nT2bjxo3k5uYSEhLCa6+9VuE+9NX97du36dy5M5999hkZGRls27aNCRMm8OuvvwK69+kTJ07USaSv\\nX7/OhQsXCAgIqHC/Li4unDhxgnbt2hl0LipNpE+ePIlaraZp06aaPzAxoWfPnpw4cUJJSC9cuECH\\nDh3w9PTEy8uLIUOGUFBQoFPOtm3bsLOz07kx//rrrwkODiYrKwtHR0cePHjA0qVLiYiIYNy4cYSG\\nhqJWq5U3Imh6xz08PGjQoAHvvPMObdu25YcfftB7DImJiYwaNYpLly7h4+PD5cuX2blzJ82aNcPT\\n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\\neufOHWbNmkVgYGC50ZmXL19mzpw5TJ06VfldREQEK1eupKSkhPz8fBITE5WeutLSUrZu3UpUVBSm\\npqb06dOHatWqUVpayvHjx4mPj6djx46VxlfWBx98QI8ePahXrx4Abdq04ejRo/z222+AprfTw8MD\\nd3d3o85PRd+n3t7enDp1inPnzilTCx/dBppe+XHjxlVazv379zlx4gRZWVm89NJLuLu763R8XL16\\nlQ8//BC1Ws3q1av5+OOPOXToEEFBQU8VX9n7kacpxxh//vkne/fupXHjxjg7O/Pqq68qQ/X1XW+l\\npaU8fPhQKUc7PPzs2bPl9qGv7r28vHB0dFTuDzMyMjh37ly5kX/aYe3btm2jW7dugKbxJzo6msLC\\nQgYNGsTmzZv57bff2LFjB+vXrzd6NGylibRarebUqVO4ubkxdepUHBwc8Pf3V1owrl+/zp49e5Th\\niObm5vTr14+NGzfqlFOlShW6deumHHRWVhZHjhxRDqwsNzc3pRKaNm3K/fv3yc7OZteuXXh5edGs\\nWTMABgwY8NgbVH0SExOxs7MjIiICgDp16vDKK68oMatUKrp27YqFhQWgSQi0vVlJSUmMHz9eSU6S\\nk5OJjIzE3NycixcvEh0dDUBISAimpqZK7++jZSYkJPD6669jYmKCpaUlffv2NeoYevXqBUD16tWJ\\niIhQ4nl0P2vWrOHNN99Ufh48eDB79+4lLy8PAEdHR2VYRevWralbty579+4td75sbGyUD7169erR\\noUMHnQSnU6dOqFQqbGxssLOzUz487e3tsba2VpJzbeslaN6ITk5Oeo+zsroyZt/6ztvT0DZM1KhR\\nA7VazYULF8jOzub06dNKD3Tjxo2fqJewsveXSqUiJCSEunXrAuWv1cGDB5OWlkZpaSkpKSmEhIRg\\nYWHBunXrmDZtGgC2trb4+/srH1aPlpmQkEB0dDTW1taAZmiQIdq1a8f+/fspKSlh586dtGjRAk9P\\nT44fP861a9e4dOkSLVu2JCgoiIsXL+Lo6AhoWq61sXTr1o0DBw4oDTErV66kZ8+emJiYsGrVKoYN\\nG0b16tUBTavx6tWr9c7rz83NJSkpibfffhuVSsULL7zAgAEDlJZKrStXrnDq1Cl69uwJaD6TtNct\\ngJOTEx06dDDoPOhTUFCgvDdBc+4tLCwoKCgotw2gWrVqFBQUEBAQoCTJu3btIiAggMGDBzNr1iwm\\n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\\n\"},\"metadata\":{\"needs_background\":\"light\"},\"output_type\":\"display_data\"},{\"name\":\"stdout\",\"output_type\":\"stream\",\"text\":[\"* Downloaded 326.9 KB of results to `free_surface`.\\n\",\"* Total run time: 6.73 seconds.\\n\",\"* Pure simulation time: 6.38 seconds.\\n\",\"SalvusJob `job_2605011429807363_4de3247829` running on `local` with 2 rank(s).\\n\",\"\\u001b[32m\\u001b[1mSite information:\\u001b[0m\\n\",\"\\u001b[1m  * Salvus version: \\u001b[0m2025.1.3\\n\",\"\\u001b[1m  * Floating point size: \\u001b[0m32\\n\"]},{\"data\":{\"image/png\":\"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\\ndu3a0bBhw3LD7arSpEkTzp8/r1XWS0pKwt3dvdJluqRTo0YN7O3ttcqaxcXFylDY999/n6tXrxIc\\nHMy4ceNo06YN33//PU+ePKk0XbVajUql0ur+/Cz50yWdyiQnJ3PlyhXCw8OVRgmNRkPr1q2JiIig\\nZs2afP3119y4cYPExETq1atHkyZNlNbe8ePHc+XKFX799VeGDh3K9evXadGihU55eBZlr1eAxo0b\\ns3z5cq5fv87atWuZMGGCzt3cqwyk9+zZQ58+fTh37hxQ8rqWmJgYDh8+TIcOHbCwsMDPz0+ZFCAv\\nL49Vq1Yp3YCf1r9/f7755htSU1PL1WJVpW3btpw/f14Zm7t69epnej1Tp06dyMrKIjIyEigJxnft\\n2vW7MySbmpri5ubG4sWL6dixI1DSPWPOnDnKBAyZmZlYWlpib29PUVER8+bNQ6VS8fDhwwrT9Pf3\\nZ926dRQVFXH//v1qT+BUqnRAfFZWFnv37qVTp04VrtezZ09WrlypTNy1dOlSOnXqpLSiXrt2TRlv\\n/NNPP3H9+vVyXZADAgJIT09XXnmWm5tLeHg4Z86c0SnPZbt1Q8lkU7Vr16Zz587Ex8fz6NEjLl68\\nSI8ePThz5gwNGjTQ+VxV5feOm52dnXJdZWRkaI1ZNzQ01HolUXXY2tpib2+vjM9ITk7mp59+0jm/\\nut5fUBK8zp07F39/f6DkWt2yZQv5+fm4uLiQk5NDQUGBEjzv2rWLxMTESq/V3bt3k5WVRXFxMYsX\\nL652/rt06cL27dspKCjA2tqa1q1bc/LkSQ4fPqwE0pmZmbi6ulKrVi0ePHjAokWLKCwsVK7Zbt26\\nkZSUxOrVq5XWaIBevXrx1VdfKRUxe/bsKVe7/TRzc3M6deqkdDMqKiri448/Zu3atVrr2draolar\\nlYkMU1JSlIIDlATVpTXMz2PgwIF8/vnn3LhxgwcPHjBz5kwGDBiAoaEhb731Frt27eLw4cMUFhby\\nySefYGlpqUwAU2r06NHMnj1bCf5LH6LZ2dkYGBho9dAQQgjx32nDhg1MmTKF3NxcNBoNK1aswNra\\nGmtraxISEhgyZIgyQVd0dDS//PILHh4eyvePHj1Ky5YttdK0s7PD3NxcGcqn0WjYuXMnLVq0ICsr\\ni0uXLindk3NychgwYIAy7Cg1NZXIyEhatmyJiYkJ7733njLJ7IMHD1i3bp3W9h4/fsyZM2fK5cHD\\n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\\n\"},\"metadata\":{\"needs_background\":\"light\"},\"output_type\":\"display_data\"},{\"name\":\"stdout\",\"output_type\":\"stream\",\"text\":[\"* Downloaded 327.5 KB of results to `ocean`.\\n\",\"* Total run time: 6.71 seconds.\\n\",\"* Pure simulation time: 6.47 seconds.\\n\",\"average misfit between free surface and coupled simulation:  0.0004279660131400973\\n\"]}],\"source\":[\"ocean_height = 0.01\\n\",\"\\n\",\"mesh, mesh_coupled = generate_meshes(ocean_height)\\n\",\"sim = get_simulation_template(mesh)\\n\",\"\\n\",\"sim_ocean = sim.copy()\\n\",\"oceanload = sc.boundary.OceanLoading(side_sets=[\\\"y1\\\"])\\n\",\"sim_ocean.add_boundary_conditions(oceanload)\\n\",\"sim_ocean.validate()\\n\",\"\\n\",\"salvus.flow.api.run(\\n\",\"    site_name=SALVUS_FLOW_SITE_NAME,\\n\",\"    input_file=sim,\\n\",\"    ranks=RANKS_PER_JOB,\\n\",\"    output_folder=\\\"free_surface\\\",\\n\",\"    get_all=True,\\n\",\"    overwrite=True,\\n\",\")\\n\",\"salvus.flow.api.run(\\n\",\"    site_name=SALVUS_FLOW_SITE_NAME,\\n\",\"    input_file=sim_ocean,\\n\",\"    ranks=RANKS_PER_JOB,\\n\",\"    output_folder=\\\"ocean\\\",\\n\",\"    get_all=True,\\n\",\"    overwrite=True,\\n\",\")\\n\",\"chi = compare_seismograms(\\n\",\"    \\\"free_surface/receivers.h5\\\", \\\"ocean/receivers.h5\\\", 40.0, 0.1\\n\",\")\\n\",\"print(\\\"average misfit between free surface and coupled simulation: \\\", chi)\\n\",\"assert chi < 0.01\"]}],\"metadata\":{\"jupytext\":{\"formats\":\"ipynb,py:light\"},\"kernelspec\":{\"display_name\":\"Python 3 (ipykernel)\",\"language\":\"python\",\"name\":\"python3\"},\"language_info\":{\"codemirror_mode\":{\"name\":\"ipython\",\"version\":3},\"file_extension\":\".py\",\"mimetype\":\"text/x-python\",\"name\":\"python\",\"nbconvert_exporter\":\"python\",\"pygments_lexer\":\"ipython3\",\"version\":\"3.11.15\"}},\"nbformat\":4,\"nbformat_minor\":5}","notebook_widget_size_map":"{}","path_to_zip_file":"/2025.1.3/examples/tutorials/waveform_physics/ocean_loading/tutorial.zip","zip_file_size":"124 kB"}},"pageContext":{"slug":"/2025.1.3/examples/tutorials/waveform_physics/ocean_loading/tutorial","pagePath":"2025.1.3/examples/tutorials/waveform_physics/ocean_loading/tutorial"}},
    "staticQueryHashes": ["1756726491","1865182279","3419370438","3597190305","4112489441","519097329"]}