tadd function to plot modulation - sphere - GPU-based 3D discrete element method algorithm with optional fluid coupling
 (HTM) git clone git://src.adamsgaard.dk/sphere
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit 8d0af9465fc5790eaaa513c7b451c96cc79d2e88
 (DIR) parent da8a0363c14d9d24b206bca1a4b7819b77a4ad1b
 (HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
       Date:   Tue, 20 Jan 2015 10:38:25 +0100
       
       add function to plot modulation
       
       Diffstat:
         M python/sphere.py                    |      48 +++++++++++++++++++++++++++++--
       
       1 file changed, 46 insertions(+), 2 deletions(-)
       ---
 (DIR) diff --git a/python/sphere.py b/python/sphere.py
       t@@ -5176,7 +5176,41 @@ class sim:
                plt.clf()
                plt.close(fig)
        
       -    def setTopWallNormalStressModulation(self, A, f):
       +    def plotSinFunction(self,
       +            baseval, A, f, phi = 0.0,
       +            xlabel = '$t$ [s]', ylabel = '$y$',
       +            outformat = 'png'):
       +        '''
       +        Plot the values of a sinusoidal modulated base value. Saves the output
       +        as a plot in the current folder.
       +        The time values will range from `self.time_current` to
       +        `self.time_total`.
       +
       +        :param baseval: The center value which the sinusoidal fluctuations are
       +            modulating
       +        :type baseval: float
       +        :param A: The fluctuation amplitude
       +        :type A: float
       +        :param phi: The phase shift [t]
       +        :type phi: float
       +        :param xlabel: The label for the x axis
       +        :type xlabel: str
       +        :param ylabel: The label for the y axis
       +        :type ylabel: str
       +        :param outformat: File format of the output plot
       +        :type outformat: str
       +        '''
       +        fig = plt.figure(8,6)
       +        t = numpy.linspace(self.time_current[0], self.time_total[0])
       +        f = A*numpy.sin(2.0*numpy.pi*f*t + phi)
       +        plt.plot(t, f)
       +        plt.xlabel(xlabel)
       +        plt.ylabel(ylabel)
       +        filename = self.sid + '-sin.' + outformat
       +        plt.savefig(filename)
       +        print(filename)
       +
       +    def setTopWallNormalStressModulation(self, A, f, plot=True):
                '''
                Set the parameters for the sine wave modulating the normal stress
                at the top wall. Note that a cos-wave is obtained with phi=pi/2.
       t@@ -5185,6 +5219,8 @@ class sim:
                :type A: float
                :param f: Fluctuation frequency [Hz]
                :type f: float
       +        :param plot: Show a plot of the resulting modulation
       +        :type plot: bool
        
                See also: :func:`setFluidPressureModulation()` and
                :func:`disableTopWallNormalStressModulation()`
       t@@ -5192,6 +5228,10 @@ class sim:
                self.sigma0_A[0] = A
                self.sigma0_mod_f[0] = f
        
       +        if plot:
       +            plotSinFunction(A, f, phi=0.0,
       +                    xlabel='$t$ [s]', ylabel='$\\sigma_0$ [Pa]')
       +
            def disableTopWallNormalStressModulation(self):
                '''
                Set the parameters for the sine wave modulating the normal stress
       t@@ -5210,7 +5250,7 @@ class sim:
                :type A: float
                :param f: Fluctuation frequency [Hz]
                :type f: float
       -        :param phi: Fluctuation phase shift (default=0.0)
       +        :param phi: Fluctuation phase shift (default=0.0) [t]
                :type phi: float
        
                See also: :func:`setTopWallNormalStressModulation()` and
       t@@ -5220,6 +5260,10 @@ class sim:
                self.p_mod_f[0] = f
                self.p_mod_phi[0] = phi
        
       +        if plot:
       +            plotSinFunction(A, f, phi=0.0,
       +                    xlabel='$t$ [s]', ylabel='$p_f$ [Pa]')
       +
            def disableFluidPressureModulation(self):
                '''
                Set the parameters for the sine wave modulating the fluid pressures