#!/usr/bin/env python # coding: utf-8 # In[1]: from em_examples.sphereElectrostatic_example import * from IPython.display import display from ipywidgets import * get_ipython().run_line_magic('matplotlib', 'inline') # # **Conductive or Resistive Sphere in a wholespace with a constant, uniform electric field $E_0$** # # Parameters: # # - **Log_sig0** : log10 of the conductivity of the background (for example, a value of -5 means a conductivity of $10^{-5}$ S/m) # # - **Log_sig1** : log10 conductivity of the sphere # # - **$ R $**: radius of the sphere # # The following example allows the user to plot any of the following physical values: # # - **Electric Potential** (**Total** or **Secondary**) # # - **Electric Field** (**Total** or **Secondary**) # # - **Current Density** (**Total** or **Secondary**) # # - **Charges density** # # To visualise configuration and primary potential, clic on "Configuration" (*Note that others buttons are then deactivated*) # # Buttons FigureX**a** allow to choose to plot either Total or Secondary Field. # # Buttons FigureX**b** allow to choose the physical value to plot. # # Please visit http://em.geosci.xyz/content/maxwell2_static/fields_from_grounded_sources_dcr/electrostatic_sphere.html for more information # In[2]: #Function to visualise and compare any two plots for the same configuration interact(interact_conductiveSphere, R=FloatSlider(min=0., max =50., step=10., value=50.), log_sig0=FloatSlider(min=-5., max =0., step=0.5,value=-3.), log_sig1=FloatSlider(min=-5., max =0., step=0.5,value=-1.), Figure1a=ToggleButtons(options=['Configuration','Total','Secondary'],value = 'Total'), Figure1b=ToggleButtons(options=['Potential','ElectricField','CurrentDensity','ChargesDensity'],value = 'ElectricField'), Figure2a=ToggleButtons(options=['Total','Secondary'],value = 'Secondary'), Figure2b=ToggleButtons(options=['Potential','ElectricField','CurrentDensity','ChargesDensity'],value = 'ElectricField')) # ## Building some intuition for DC problem # In real life, we do not know the underground configuration. We only see the # data (in DCIP survey, Potentials difference between two electrodes) and we are trying to model the underground based from them. # # **There are several set of parameters that can fit perfectly a given data set**. Even in the simple # case presented here, where we know it is a sphere, and whose response can be calculated analytically, # we can find several configuration that can produce the same data along the same profile. # This code allow to plot and compare two differents configurations responses to the same survey. # # - **Log_sig0**: background log10 conductivity for both configurations # # - **Log_sig1**: sphere log10 conductivity in configuration 0 # # - **Log_sig2**: sphere log10 conductivity in configuration 1 # # - **R0**: Sphere's radius in configuration 0 # # - **R1**: Sphere's radius in configuration 1 # # - **E0**: uniform E field value # # - **start**: start point for the profile start.shape = (2,) # # - **end**: end point for the profile end.shape = (2,) # # - **dipole_number**: number of dipoles # # - **electrode_spacing**: Space between the M and N electrodes # # ### **Are you able to find two spheres whose outside potentials are the same?** # # (one solution with "matching_spheres_example") # In[3]: #Visualisation of the responses of two configurations to a (pseudo) DC resistivity survey interact(interactive_two_configurations_comparison, R0=FloatSlider(min=0., max =50., step=10., value=50.), R1=FloatSlider(min=0., max =50., step=10., value=50.), log_sig0=FloatSlider(min=-5., max =0., step=0.5,value=-3.), log_sig1=FloatSlider(min=-5., max =0., step=0.5,value=-5.), log_sig2=FloatSlider(min=-5., max =0., step=0.5,value=-1.), xstart = FloatSlider(min=-200., max =200., step=10.,value=-200.), ystart = FloatSlider(min=-200., max =200., step=10.,value=100.), xend = FloatSlider(min=-200., max =200., step=10.,value=200.), yend = FloatSlider(min=-200., max =200., step=10.,value=100.), dipole_number = IntSlider(min=1, max=40, step=10,value=22), electrode_spacing = FloatSlider(min=0., max =100., step=5.,value=20.), matching_spheres_example = ToggleButton()) # In[ ]: