Package: eccw-gui
Exact Critical Coulomb Wedge - Graphical User InterfaceECCWandECCW-GUIallow to compute the exact solution of any parameter of critical Coulomb wedge (as Dahlen 1984 and Yuan et al. 2015). They allow to draw any of these solutions in the β vs α domain (basal slope against surface slope). Are availables compressive or extensive geological context and fluid pore pressure.ECCWandECCW-GUIare under GNU GPL-v3 license.OverviewGeneral informationsECCWis apython3library;ECCW-GUIis a graphical user interface, written inpython3and usingQt;In the GUI, you can save a session and keep it in an xml file (.eccw);A pdf documentation is available (see Usage section) including:usage explainations;theoretical explainationsguidelines of the results interpretation;blueprints of the equations implemantation.Calculator AppCompute the solution of theCritical Coulomb Wedgefor compressive or extensive tectonic context, with or without fluids overpressure.The solution can be computed with one of the four main parameters set as unknown.A range of solutions can be computed at once if you set one of the known parameters as a range.Plot AppPlot the solution of theCritical Coulomb Wedgein matplotlib windows (includes zooms, exports, and more).A range of solutions can be ploted at once if you set one of the known parameters as a range.You can explore graphically points on the solution curve, with optional display of a sketch representing orientations and directions of faults.Refrences points can be manually added or imported from .csv files.InstallationWindowsNoteOnly tested onWindows 7.Install apython3distribution.
Theminicondadistribution fromhttps://conda.io/miniconda.htmlis a good choice.Download the proper installer (the 64-bit version should be appropriated).Run the downloaded.exe;IntallECCW.Open a shell that can access your python3 distribution, such as theWindows Power Shell.
If you choosed to installminiconda, you should use theAnaconda Prompt.
You can access it by typinganacondain the main Windows menu.In the shell, type the following command:pip install --upgrade pip
pip install eccw-guiECCW is then available from the main Windows menu by tapingeccwor from a shell by tapingpython-meccw_gui.Optionally, you can run theeccw_windows_installcommand in a shell to install menu and desktop shortcuts.
To remove these shortcuts, run theeccw_windows_removecommand.LinuxNoteOnly tested onUbuntu 18.04.Installpython3withpipandtk.
OnDebianfamily distributions, you can install these packages using the following command:$ sudo apt-get install python3 python3-pip python3-tkInstallECCWwith the following command:$ pip3 install --upgrade pip
$ pip3 install eccw-guiECCWis then available from the main menu under the nameeccw.UsageGUI usageSimply typeeccwin a shell to launcheccw.
The GUI should also be available from the main menu.To obtain help with text based mode, type:$ eccw -hYou can access an off-line documentation using the button ‘Documentation’ in the GUI.
Alternatively, you can use the following command, without the GUI:$ eccw -dYou can launch the GUI with the-moption of python using the canonic syntax:python -m eccw_guiPython library usageYou can import and use the core objects for computing and plottingCritical Coulomb Wedgefrom a python session as discribed in what follows.EccwComputeThis the core object that compute the solutions of theCCWproblem.>>> from eccw import EccwCompute
>>> foo = EccwCompute(phiB=30, phiD=10, beta=0)
>>> foo.show_params()
{ context       : 'Compression'
  beta          : 0.0
  alpha         : nan
  phiB          : 30.0
  phiD          : 10.0
  rho_f         : 0.0
  rho_sr        : 0.0
  delta_lambdaB : 0.0
  delta_lambdaD : 0.0
}
>>> foo.compute("alpha")
((3.4365319302835018,), (23.946319406533199,))The result obtained with thecomputemethod is always a tuple of two tuples.
The first tuple contains results ininversefault mechanism, while the second tuple contains results innormalfault mechanism.
These tuples can each contain 0, 1 or 2 values, with a total always equal to 0 or 2.
Here some more examples with computation of betaparameter::>>> foo.alpha = 3.436532
>>> foo.compute("beta")
((-1.0516746372768912e-07,), (69.6779628783264,))
>>> foo.alpha = 20
>>> foo.compute("beta")
((), (-3.580929608343892, 43.25889259183777))
>>> foo.alpha = -20
>>> foo.compute("beta")
((36.74110740816224, 83.58092960834391), ())
>>> foo.alpha = -35
>>> foo.compute("beta")
((), ())Have a look on the plot obtained in next section to understand these results.EccwPlotThis the core object that plot the solutions of theCCWproblem. This object inherits fromEccwCompute.>>> from eccw import EccwPlot
>>> foo = EccwPlot(phiB=30, phiD=10)
>>> foo.add_curve(inverse={'color':(1,0,0,1), 'label':'inverse'},
                  normal={'color':(0,0,1,1), 'label':'normal'})
>>> foo.add_point(alpha=3.436532)
>>> foo.add_point(alpha=20, style='*', size=10)
>>> foo.add_point(alpha=-20, style='s')
>>> foo.add_legend()
>>> foo.show()ContributingAdditional dependanciesSome softwares are needed to convert Qt specific files into python code:pyuic5is used to convert form.uifiles into python code calling PyQt;pyrcc5is used to convert Qt ressources files.qrcinto python module.Both are found in following dependancies (ubuntu / debian):pyqt5-dev-toolsIf you want to install Qt-designer for Qt5 on Ubuntu/debian, this app is included in the following package:qttools5-dev-toolsInformations for developpersConvert.uifiles created usingQt-Designerinto python files:$ pyuic5 -x xxx.ui -o xxx_Viewer.pySome bash scripts located ineccw_gui/*/viewersfolders namedmake_viewers.shautomatise this process.
Some custom corrections ofQtobjects dimensions are also embedded in some of these script.ConvertQtressources.qrcfiles created usingQt-Designerinto python files:$ pyrcc5 xxx.qrc -o xxx_rc.pyThese ressources files are a smart way to embed images into source code and solve the access path to these images problem after desktop installation.All graphical object (Qt-derived) get the following methods:getParams:return an OrderedDict that describe the state of the object.setParams:set the object with a dict obtained from getParams.getSelect:return an OrderedDict that describe the selected parameters to treat (equal to getParams if the paramters gets single state).