Added build_all.py that compiles all f2py extensions

WAFO now works!
master
Per.Andreas.Brodtkorb 15 years ago
parent 93b6da97c0
commit b2c5aa8c00

@ -16,7 +16,7 @@ python setup.py sdist bdist_wininst upload --show-response
#!/usr/bin/env python #!/usr/bin/env python
import os, sys import os, sys
sys.argv.append("develop") #sys.argv.append("develop")
#sys.argv.append("install") #sys.argv.append("install")
DISTUTILS_DEBUG = True DISTUTILS_DEBUG = True
pkg_name = 'wafo' pkg_name = 'wafo'
@ -33,9 +33,9 @@ if True: #__file__ == 'setupegg.py':
else: else:
from distutils.core import setup from distutils.core import setup
t = find_packages('src')
subpackages = ('spectrum','data','transform','covariance') subpackages = ('spectrum','data','transform','covariance')
subpackagesfull = [os.path.join(pkg_name,f) for f in subpackages] #subpackagesfull = [os.path.join(pkg_name,f) for f in subpackages]
subtests = [os.path.join(subpkg,'test') for subpkg in subpackages] subtests = [os.path.join(subpkg,'test') for subpkg in subpackages]
@ -58,7 +58,7 @@ setup(
author_email='wafo@maths.lth.se', author_email='wafo@maths.lth.se',
decription = 'Statistical analysis and simulation of random waves and random loads', decription = 'Statistical analysis and simulation of random waves and random loads',
long_description = info.__doc__, long_description = info.__doc__,
install_requires = ['numpy>=1.3'], install_requires = ['numpy>=1.4'],
license = "GPL", license = "GPL",
url='http://www.maths.lth.se/matstat/wafo/', url='http://www.maths.lth.se/matstat/wafo/',
name = pkg_name, name = pkg_name,

@ -9,9 +9,9 @@ License: GPL
Description: Description:
WAFO WAFO
===== =====
WAFO is a toolbox Python routines for statistical analysis and simulation of random waves and random loads. WAFO is a toolbox Python routines for statistical analysis and simulation of random waves and random loads.
WAFO is freely redistributable software, see WAFO licence, cf. the GNU General Public License (GPL) and WAFO is freely redistributable software, see WAFO licence, cf. the GNU General Public License (GPL) and
contain tools for: contain tools for:
Fatigue Analysis Fatigue Analysis
---------------- ----------------
@ -30,63 +30,63 @@ Description:
-Kernel density estimation -Kernel density estimation
-Hidden markov models -Hidden markov models
WAFO consists of several modules with short descriptions below. WAFO consists of several modules with short descriptions below.
The modules SPECTRUM, COVARIANCE, TRANSFORM, WAVEMODELS, and MULTIDIM are The modules SPECTRUM, COVARIANCE, TRANSFORM, WAVEMODELS, and MULTIDIM are
mainly for oceanographic applications. mainly for oceanographic applications.
The modules CYCLES, MARKOV, and DAMAGE are mainly for fatigue problems. The modules CYCLES, MARKOV, and DAMAGE are mainly for fatigue problems.
The contents file for each module is shown by typing 'help module-name' The contents file for each module is shown by typing 'help module-name'
Type 'help fatigue' for a presentation of all routines related to fatigue. Type 'help fatigue' for a presentation of all routines related to fatigue.
The paths to the modules are initiated by the function 'initwafo'. The paths to the modules are initiated by the function 'initwafo'.
ONEDIM - Data analysis of time series. Example: extraction of ONEDIM - Data analysis of time series. Example: extraction of
turning points, estimation of spectrum and covariance function. turning points, estimation of spectrum and covariance function.
Estimation transformation used in transformed Gaussian model. Estimation transformation used in transformed Gaussian model.
COVARIANCE - Computation of spectral functions, linear COVARIANCE - Computation of spectral functions, linear
and non-linear time series simulation. and non-linear time series simulation.
SPECTRUM - Computation of spectral moments and covariance functions, linear SPECTRUM - Computation of spectral moments and covariance functions, linear
and non-linear time series simulation. and non-linear time series simulation.
Ex: common spectra implemented, directional spectra, Ex: common spectra implemented, directional spectra,
bandwidth measures, exact distributions for wave characteristics. bandwidth measures, exact distributions for wave characteristics.
TRANSFORM - Modelling with linear or transformed Gaussian waves. Ex: TRANSFORM - Modelling with linear or transformed Gaussian waves. Ex:
WAVEMODELS - Models for distributions of wave characteristics found in WAVEMODELS - Models for distributions of wave characteristics found in
the literature. Ex: parametric models for breaking the literature. Ex: parametric models for breaking
limited wave heights. limited wave heights.
MULTIDIM - Multi-dimensional time series analysis. (Under construction) MULTIDIM - Multi-dimensional time series analysis. (Under construction)
CYCLES - Cycle counting, discretization, and crossings, calculation of CYCLES - Cycle counting, discretization, and crossings, calculation of
damage. Simulation of discrete Markov chains, switching Markov damage. Simulation of discrete Markov chains, switching Markov
chains, harmonic oscillator. Ex: Rainflow cycles and matrix, chains, harmonic oscillator. Ex: Rainflow cycles and matrix,
discretization of loads. Damage of a rainflow count or discretization of loads. Damage of a rainflow count or
matrix, damage matrix, S-N plot. matrix, damage matrix, S-N plot.
MARKOV - Routines for Markov loads, switching Markov loads, and MARKOV - Routines for Markov loads, switching Markov loads, and
their connection to rainflow cycles. their connection to rainflow cycles.
DAMAGE - Calculation of damage. Ex: Damage of a rainflow count or DAMAGE - Calculation of damage. Ex: Damage of a rainflow count or
matrix, damage matrix, S-N plot. matrix, damage matrix, S-N plot.
SIMTOOLS - Simulation of random processes. Ex: spectral simulation, SIMTOOLS - Simulation of random processes. Ex: spectral simulation,
simulation of discrete Markov chains, switching Markov simulation of discrete Markov chains, switching Markov
chains, harmonic oscillator chains, harmonic oscillator
STATISTICS - Statistical tools and extreme-value distributions. STATISTICS - Statistical tools and extreme-value distributions.
Ex: generation of random numbers, estimation of parameters, Ex: generation of random numbers, estimation of parameters,
evaluation of pdf and cdf evaluation of pdf and cdf
KDETOOLS - Kernel-density estimation. KDETOOLS - Kernel-density estimation.
MISC - Miscellaneous routines. Ex: numerical integration, smoothing MISC - Miscellaneous routines. Ex: numerical integration, smoothing
spline, binomial coefficient, water density. spline, binomial coefficient, water density.
WDEMOS - WAFO demos. WDEMOS - WAFO demos.
DOCS - Documentation of toolbox, definitions. An overview is given DOCS - Documentation of toolbox, definitions. An overview is given
in the routine wafomenu. in the routine wafomenu.
DATA - Measurements from marine applications. DATA - Measurements from marine applications.
PAPERS - Commands that generate figures in selected scientific PAPERS - Commands that generate figures in selected scientific
publications. publications.
SOURCE - Fortran and C files. Information on compilation. SOURCE - Fortran and C files. Information on compilation.
EXEC - Executable files (cf. SOURCE), pre-compiled for Solaris, EXEC - Executable files (cf. SOURCE), pre-compiled for Solaris,
Alpha-Dec or Windows. Alpha-Dec or Windows.
WAFO homepage: <http://www.maths.lth.se/matstat/wafo/> WAFO homepage: <http://www.maths.lth.se/matstat/wafo/>
On the WAFO home page you will find: On the WAFO home page you will find:
- The WAFO Tutorial - The WAFO Tutorial
- New versions of WAFO to download. - New versions of WAFO to download.
- Reported bugs. - Reported bugs.
- List of publications related to WAFO. - List of publications related to WAFO.
Platform: UNKNOWN Platform: UNKNOWN

@ -1,14 +1,21 @@
.project
.pydevproject
gendocwafo.py
manifest
setup.py setup.py
setup_old.py setup_old.py
src/WAFO.egg-info/SOURCES.txt src/epydoc_wafo.prj
src/Wafo.egg-info/PKG-INFO src/Wafo.egg-info/PKG-INFO
src/Wafo.egg-info/SOURCES.txt src/Wafo.egg-info/SOURCES.txt
src/Wafo.egg-info/dependency_links.txt src/Wafo.egg-info/dependency_links.txt
src/Wafo.egg-info/top_level.txt src/Wafo.egg-info/top_level.txt
src/wafo/SpecData1D.mm
src/wafo/__init__.py src/wafo/__init__.py
src/wafo/c_library.pyd
src/wafo/data_structures.py src/wafo/data_structures.py
src/wafo/dctpack.py src/wafo/dctpack.py
src/wafo/definitions.py src/wafo/definitions.py
src/wafo/definitions.~py
src/wafo/demo_sg.py src/wafo/demo_sg.py
src/wafo/gaussian.py src/wafo/gaussian.py
src/wafo/info.py src/wafo/info.py
@ -17,23 +24,247 @@ src/wafo/interpolate.py
src/wafo/kdetools.py src/wafo/kdetools.py
src/wafo/meshgrid.py src/wafo/meshgrid.py
src/wafo/misc.py src/wafo/misc.py
src/wafo/mvn.pyd
src/wafo/mvn.pyf
src/wafo/mvndst.f
src/wafo/mvnprdmod.pyd
src/wafo/namedtuple.py src/wafo/namedtuple.py
src/wafo/objects.py src/wafo/objects.py
src/wafo/plotbackend.py src/wafo/plotbackend.py
src/wafo/polynomial.py src/wafo/polynomial.py
src/wafo/polynomial_old.py src/wafo/polynomial_old.py
src/wafo/ppimport.py
src/wafo/rindmod.pyd
src/wafo/sg_filter.py src/wafo/sg_filter.py
src/wafo/test_ppimport.py
src/wafo/wafodata.py src/wafo/wafodata.py
src/wafo/weaver.py
src/wafo.egg-info/SOURCES.txt src/wafo.egg-info/SOURCES.txt
src/wafo/covariance/__init__.py src/wafo/covariance/__init__.py
src/wafo/covariance/core.py src/wafo/covariance/core.py
src/wafo/data/__init__.py src/wafo/data/__init__.py
src/wafo/data/atlantic.dat
src/wafo/data/gfaks89.dat
src/wafo/data/gfaksr89.dat
src/wafo/data/info.py src/wafo/data/info.py
src/wafo/data/info.~py
src/wafo/data/japansea.dat
src/wafo/data/northsea.dat
src/wafo/data/sea.dat
src/wafo/data/sea.m
src/wafo/data/sfa89.dat
src/wafo/data/sn.dat
src/wafo/data/wafoLogoNewWithBorder.png
src/wafo/data/wafoLogoNewWithBorder.svg
src/wafo/data/wafoLogoNewWithoutBorder.png
src/wafo/data/wafoLogoNewWithoutBorder.svg
src/wafo/data/wafologoWithBorder.png
src/wafo/data/yura87.dat
src/wafo/source/c_codes/build_all.py
src/wafo/source/c_codes/c_functions.c
src/wafo/source/c_codes/c_library.pyd
src/wafo/source/c_codes/c_library.pyf
src/wafo/source/c_codes/old/diffsumfunq.pyd
src/wafo/source/c_codes/old/diffsumfunq.pyf
src/wafo/source/c_codes/old/disufq.pyf
src/wafo/source/c_codes/old/disufq1.c
src/wafo/source/c_codes/old/findcross.c
src/wafo/source/c_codes/old/findrfc.c
src/wafo/source/c_codes/old/rfc.pyd
src/wafo/source/c_codes/old/rfc.pyf
src/wafo/source/cov2XXXpdf/cov2acdf.f
src/wafo/source/cov2XXXpdf/cov2mmpdf.f
src/wafo/source/cov2XXXpdf/cov2mmtpdf.f
src/wafo/source/cov2XXXpdf/cov2tccpdf.f
src/wafo/source/cov2XXXpdf/cov2tcpdf.f
src/wafo/source/cov2XXXpdf/cov2thpdf.f
src/wafo/source/cov2XXXpdf/cov2thpdfalan.f
src/wafo/source/cov2XXXpdf/cov2tthpdf.f
src/wafo/source/cov2XXXpdf/bounds/cov2acdfb.f
src/wafo/source/cov2XXXpdf/bounds/cov2mmpdfb.f
src/wafo/source/cov2XXXpdf/bounds/cov2tccpdfb.f
src/wafo/source/cov2XXXpdf/bounds/cov2tthpdfb.f
src/wafo/source/mreg/checkmod.mod
src/wafo/source/mreg/cov2mmpdfmod.mod
src/wafo/source/mreg/cov2mmpdfreg.f
src/wafo/source/mreg/cov2mmpdfreg_intfc.f
src/wafo/source/mreg/dsvdc.f
src/wafo/source/mreg/epsmod.mod
src/wafo/source/mreg/expaccmod.mod
src/wafo/source/mreg/infcmod.mod
src/wafo/source/mreg/mregmod.mod
src/wafo/source/mreg/mregmodule.f
src/wafo/source/mreg/quadrmod.mod
src/wafo/source/mreg/rintmod.mod
src/wafo/source/mreg/sizemod.mod
src/wafo/source/mreg/svd.mod
src/wafo/source/mreg/tbrmod.mod
src/wafo/source/mvnprd/adaptivegausskronrod.mod
src/wafo/source/mvnprd/build_all.py
src/wafo/source/mvnprd/erfcoremod.mod
src/wafo/source/mvnprd/functioninterface.mod
src/wafo/source/mvnprd/integration1dmodule.mod
src/wafo/source/mvnprd/mvnprd.dsp
src/wafo/source/mvnprd/mvnprd.dsw
src/wafo/source/mvnprd/mvnprd.f
src/wafo/source/mvnprd/mvnprd.pyf
src/wafo/source/mvnprd/mvnprd_interface.f
src/wafo/source/mvnprd/mvnprdmod.pyd
src/wafo/source/mvnprd/mvnprodcorrprb.f
src/wafo/source/mvnprd/mvnprodcorrprb_interface.f
src/wafo/source/mvnprd/mvnprodcorrprbmod.mod
src/wafo/source/mvnprd/old/mvnprodcorrprb/adaptivegausskronrod.mod
src/wafo/source/mvnprd/old/mvnprodcorrprb/build_all.py
src/wafo/source/mvnprd/old/mvnprodcorrprb/erfcoremod.mod
src/wafo/source/mvnprd/old/mvnprodcorrprb/functioninterface.mod
src/wafo/source/mvnprd/old/mvnprodcorrprb/integration1dmodule.mod
src/wafo/source/mvnprd/old/mvnprodcorrprb/mvnprdmod.pyd
src/wafo/source/mvnprd/old/mvnprodcorrprb/mvnprodcorrprb.f
src/wafo/source/mvnprd/old/mvnprodcorrprb/mvnprodcorrprb_interface.f
src/wafo/source/mvnprd/old/mvnprodcorrprb/mvnprodcorrprbmod.mod
src/wafo/source/mvnprd/old/mvnprodcorrprb/Debug/DF60.PDB
src/wafo/source/mvnprd/old/mvnprodcorrprb/Debug/adaptivegausskronrod.mod
src/wafo/source/mvnprd/old/mvnprodcorrprb/Debug/erfcoremod.mod
src/wafo/source/mvnprd/old/mvnprodcorrprb/Debug/functioninterface.mod
src/wafo/source/mvnprd/old/mvnprodcorrprb/Debug/integration1dmodule.mod
src/wafo/source/mvnprd/old/mvnprodcorrprb/Debug/mvnprodcorrprb.obj
src/wafo/source/mvnprd/old/mvnprodcorrprb/Debug/mvnprodcorrprbmod.mod
src/wafo/source/mvnprd/old/mvnprodcorrprb/Debug/test_mvnprodcorrprb.exe
src/wafo/source/mvnprd/old/mvnprodcorrprb/Debug/test_mvnprodcorrprb.ilk
src/wafo/source/mvnprd/old/mvnprodcorrprb/Debug/test_mvnprodcorrprb.obj
src/wafo/source/mvnprd/old/mvnprodcorrprb/Debug/test_mvnprodcorrprb.pdb
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/AdaptiveGaussKronrod.f90
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/adaptivegausskronrod.mod
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/adaptivegausskronrod.pyf
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/adaptivegausskronrod.pyfo
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/dea.f
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/deamod.pyf
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/erfcore.f90
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/erfcore.pyd
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/erfcoremod.mod
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/functioninterface.mod
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/integration1Dmodule.f
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/integration1Dmodule.f90
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/integration1dmodule.mod
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/mvn.exe
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/mvnprodcorrprb.f90
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/mvnprodcorrprb.pyf
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/mvnprodcorrprbmod.f90
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/test_mvnprodcorrprb.dsp
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/test_mvnprodcorrprb.dsw
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/test_mvnprodcorrprb.f
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/test_mvnprodcorrprb.opt
src/wafo/source/mvnprd/old/mvnprodcorrprb/old/test_mvnprodcorrprb.plg
src/wafo/source/old/adaptivegausskronrod.mod
src/wafo/source/old/dunnettprb.f
src/wafo/source/old/erfcore.f
src/wafo/source/old/erfcore.pyd
src/wafo/source/old/erfcore.pydold
src/wafo/source/old/erfcore.pyf
src/wafo/source/old/erfcoremod.f
src/wafo/source/old/erfcoremod.f90
src/wafo/source/old/erfcoremod.mod
src/wafo/source/old/erfcoremod.pyd
src/wafo/source/old/erfcoremod.pyf
src/wafo/source/old/erfcoremod.pyfold
src/wafo/source/old/erfcoremod0.f90
src/wafo/source/old/erfcoremod1.pyf
src/wafo/source/old/erfcoremod_interface.f90
src/wafo/source/old/functioninterface.mod
src/wafo/source/old/integration1dmodule.mod
src/wafo/source/rind2007/.cproject
src/wafo/source/rind2007/.project
src/wafo/source/rind2007/New File.txt
src/wafo/source/rind2007/adaptmod.mod
src/wafo/source/rind2007/build_all.py
src/wafo/source/rind2007/c1c2mod.mod
src/wafo/source/rind2007/dkbvrcmod.mod
src/wafo/source/rind2007/erfcoremod.f
src/wafo/source/rind2007/fimod.f
src/wafo/source/rind2007/fimod.mod
src/wafo/source/rind2007/funcmod.mod
src/wafo/source/rind2007/globalconst.mod
src/wafo/source/rind2007/globaldata.mod
src/wafo/source/rind2007/intmodule.f
src/wafo/source/rind2007/jacobmod.f
src/wafo/source/rind2007/jacobmod.mod
src/wafo/source/rind2007/krbvrcmod.mod
src/wafo/source/rind2007/krobovmod.mod
src/wafo/source/rind2007/precisionmod.mod
src/wafo/source/rind2007/quad.mod
src/wafo/source/rind2007/rcrudemod.mod
src/wafo/source/rind2007/rind71mod.f
src/wafo/source/rind2007/rind71mod.mod
src/wafo/source/rind2007/rind_interface.f
src/wafo/source/rind2007/rindmod.f
src/wafo/source/rind2007/rindmod.mod
src/wafo/source/rind2007/rindmod.pyd
src/wafo/source/rind2007/ssobolmod.mod
src/wafo/source/rind2007/swapmod.f
src/wafo/source/rind2007/swapmod.mod
src/wafo/source/rind2007/test_fimod.dsp
src/wafo/source/rind2007/test_fimod.dsw
src/wafo/source/rind2007/test_fimod.exe
src/wafo/source/rind2007/test_fimod.f
src/wafo/source/rind2007/test_rind71mod.exe
src/wafo/source/rind2007/test_rind71mod.f
src/wafo/source/rind2007/test_rindmod.exe
src/wafo/source/rind2007/test_rindmod.f
src/wafo/source/rind2007/test_rindmod2007.exe
src/wafo/source/rind2007/test_rindmod2007.opt
src/wafo/source/rind2007/test_rindmod2007.plg
src/wafo/source/rind2007/trivariatevar.mod
src/wafo/source/rind2007/Debug/DF60.PDB
src/wafo/source/rind2007/Debug/adaptmod.mod
src/wafo/source/rind2007/Debug/c1c2mod.mod
src/wafo/source/rind2007/Debug/dkbvrcmod.mod
src/wafo/source/rind2007/Debug/erfcoremod.mod
src/wafo/source/rind2007/Debug/erfcoremod.obj
src/wafo/source/rind2007/Debug/fimod.mod
src/wafo/source/rind2007/Debug/fimod.obj
src/wafo/source/rind2007/Debug/funcmod.mod
src/wafo/source/rind2007/Debug/globaldata.mod
src/wafo/source/rind2007/Debug/intmodule.obj
src/wafo/source/rind2007/Debug/jacobmod.mod
src/wafo/source/rind2007/Debug/jacobmod.obj
src/wafo/source/rind2007/Debug/krbvrcmod.mod
src/wafo/source/rind2007/Debug/krobovmod.mod
src/wafo/source/rind2007/Debug/makefile
src/wafo/source/rind2007/Debug/objects.mk
src/wafo/source/rind2007/Debug/precisionmod.mod
src/wafo/source/rind2007/Debug/quad.mod
src/wafo/source/rind2007/Debug/rcrudemod.mod
src/wafo/source/rind2007/Debug/rind71.obj
src/wafo/source/rind2007/Debug/rindmod.mod
src/wafo/source/rind2007/Debug/sources.mk
src/wafo/source/rind2007/Debug/ssobolmod.mod
src/wafo/source/rind2007/Debug/subdir.mk
src/wafo/source/rind2007/Debug/test_rind71.exe
src/wafo/source/rind2007/Debug/test_rind71.ilk
src/wafo/source/rind2007/Debug/test_rind71.obj
src/wafo/source/rind2007/Debug/test_rind71.pdb
src/wafo/source/rind2007/Debug/trivariatevar.mod
src/wafo/source/test_f90/hello.f90
src/wafo/source/test_f90/hello.mod
src/wafo/source/test_f90/hello.pyd
src/wafo/source/test_f90/hello.txt
src/wafo/source/test_f90/hello_interface.f90
src/wafo/source/test_f90/mymod.f90
src/wafo/source/test_f90/mymod.pyd
src/wafo/source/test_f90/types.f90
src/wafo/source/test_f90/types.mod
src/wafo/spectrum/__init__.py src/wafo/spectrum/__init__.py
src/wafo/spectrum/core.py src/wafo/spectrum/core.py
src/wafo/spectrum/dispersion_relation.py src/wafo/spectrum/dispersion_relation.py
src/wafo/spectrum/models.py src/wafo/spectrum/models.py
src/wafo/stats/__init__.py
src/wafo/stats/core.py
src/wafo/stats/distributions.py
src/wafo/stats/estimation.py
src/wafo/stats/misc.py
src/wafo/stats/plotbackend.py
src/wafo/test/__init__.py src/wafo/test/__init__.py
src/wafo/transform/__init__.py src/wafo/transform/__init__.py
src/wafo/transform/core.py src/wafo/transform/core.py
src/wafo/transform/models.py src/wafo/transform/models.py
src/wafo/transform/models.~py

Binary file not shown.

Binary file not shown.

@ -1,30 +0,0 @@
! File diffsumfunq.pyf
python module diffsumfunq
interface
subroutine disufq(rvec, ivec, rA, iA, w, kw, h, g,nmin,nmax, m, n)
intent(c) disufq ! disufq is a C function
intent(c) ! all disufq arguments are considered as C based
integer intent(hide), depend(rA),check(n==shape(iA,0)) :: n=shape(rA,0)
integer intent(hide), depend(rA), check(m==shape(iA,1)) :: m=shape(rA,1)
double precision dimension(n,m), intent(in) :: rA, iA ! input array
double precision dimension(n), intent(in) :: w, kw ! input array
double precision intent(in) :: h, g
integer intent(in) :: nmin, nmax
double precision dimension(n,m), intent(out) :: rvec, ivec ! output array,
end subroutine disufq
subroutine disufq2(rsvec, isvec,rdvec, idvec, rA, iA, w, kw, h, g,nmin,nmax, m, n)
intent(c) disufq2 ! disufq2 is a C function
intent(c) ! all disufq2 arguments are considered as C based
integer intent(hide), depend(rA),check(n==shape(iA,0)) :: n=shape(rA,0)
integer intent(hide), depend(rA), check(m==shape(iA,1)) :: m=shape(rA,1)
double precision dimension(n,m), intent(in) :: rA, iA ! input array
double precision dimension(n), intent(in) :: w, kw ! input array
double precision intent(in) :: h, g
integer intent(in) :: nmin, nmax
double precision dimension(n,m), intent(out) :: rsvec, isvec, rdvec, idvec ! output array,
end subroutine disufq
end interface
end python module diffsumfunq

@ -1,30 +0,0 @@
! File diffsumfunq.pyf
python module diffsumfunq
interface
subroutine disufq(rvec, ivec, rA, iA, w, kw, h, g,nmin,nmax, m, n)
intent(c) disufq ! disufq is a C function
intent(c) ! all disufq arguments are considered as C based
integer intent(hide), depend(rA),check(n==shape(iA,0)) :: n=shape(rA,0)
integer intent(hide), depend(rA), check(m==shape(iA,1)) :: m=shape(rA,1)
double precision dimension(n,m), intent(in) :: rA, iA ! input array
double precision dimension(n), intent(in) :: w, kw ! input array
double precision intent(in) :: h, g
integer intent(in) :: nmin, nmax
double precision dimension(n,m), intent(out) :: rvec, ivec ! output array,
end subroutine disufq
subroutine disufq2(rsvec, isvec,rdvec, idvec, rA, iA, w, kw, h, g,nmin,nmax, m, n)
intent(c) disufq2 ! disufq2 is a C function
intent(c) ! all disufq2 arguments are considered as C based
integer intent(hide), depend(rA),check(n==shape(iA,0)) :: n=shape(rA,0)
integer intent(hide), depend(rA), check(m==shape(iA,1)) :: m=shape(rA,1)
double precision dimension(n,m), intent(in) :: rA, iA ! input array
double precision dimension(n), intent(in) :: w, kw ! input array
double precision intent(in) :: h, g
integer intent(in) :: nmin, nmax
double precision dimension(n,m), intent(out) :: rsvec, isvec, rdvec, idvec ! output array,
end subroutine disufq
end interface
end python module diffsumfunq

@ -1,446 +0,0 @@
#include "math.h"
/*
* DISUFQ Is an internal function to spec2nlsdat
*
* CALL: disufq(rvec,ivec,rA,iA, w,kw,h,g,nmin,nmax,m,n)
*
* rvec, ivec = real and imaginary parts of the resultant (size m X n).
* rA, iA = real and imaginary parts of the amplitudes (size m X n).
* w = vector with angular frequencies (w>=0)
* kw = vector with wavenumbers (kw>=0)
* h = water depth (h >=0)
* g = constant acceleration of gravity
* nmin = minimum index where rA(:,nmin) and iA(:,nmin) is
* greater than zero.
* nmax = maximum index where rA(:,nmax) and iA(:,nmax) is
* greater than zero.
* m = size(rA,1),size(iA,1)
* n = size(rA,2),size(iA,2), or size(rvec,2),size(ivec,2)
*
* DISUFQ returns the summation of difference frequency and sum
* frequency effects in the vector vec = rvec +sqrt(-1)*ivec.
* The 2'nd order contribution to the Stokes wave is then calculated by
* a simple 1D Fourier transform, real(FFT(vec)).
*
* Install gfortran and run the following to build the module:
* f2py diffsumfunq.pyf disufq1.c -c --fcompiler=gnu95 --compiler=mingw32 -lmsvcr71
*
* by Per Andreas Brodtkorb 15.08.2001
* revised pab 14.03.2002, 01.05.2002 22.07.2002, oct 2008
*/
void disufq(double *rvec, double *ivec,
double *rA, double *iA,
double *w, double *kw,
double h, double g,
int nmin, int nmax,
int m, int n)
{
double Epij, Edij;
double tmp1, tmp2, tmp3, tmp4, kfact;
double w1, w2, kw1, kw2, Cg;
double rrA, iiA, riA, irA;
int i,jy,ix,iz1,iv1,ixi,jyi;
//int iz2, iv2;
//Initialize rvec and ivec to zero
for (ix=0;ix<n*m;ix++) {
rvec[ix] = 0.0;
ivec[ix] = 0.0;
}
// kfact is set to 2 in order to exploit the symmetry.
// If you set kfact to 1, you must uncomment all statements
// including the expressions: rvec[iz2], rvec[iv2], ivec[iz2] and ivec[iv2].
kfact = 2.0;
if (h>10000){ /* deep water /Inifinite water depth */
for (ix = nmin-1;ix<nmax;ix++) {
ixi = ix*m;
iz1 = 2*ixi;
//iz2 = n*m-ixi;
kw1 = kw[ix];
Epij = kw1;
for (i=0;i<m;i++,ixi++,iz1++) {
rrA = rA[ixi]*rA[ixi]; ///
iiA = iA[ixi]*iA[ixi]; ///
riA = rA[ixi]*iA[ixi]; ///
/// Sum frequency effects along the diagonal
tmp1 = kfact*(rrA-iiA)*Epij;
tmp2 = kfact*2.0*riA*Epij;
rvec[iz1] += tmp1;
ivec[iz1] += tmp2;
//rvec[iz2] += tmp1;
//ivec[iz2] -= tmp2;
//iz2++;
/// Difference frequency effects are zero along the diagonal
/// and are thus not contributing to the mean.
}
for (jy = ix+1;jy<nmax;jy++){
kw2 = kw[jy];
Epij = 0.5*(kw2 + kw1);
Edij = -0.5*(kw2 - kw1);
//printf("Edij = %f Epij = %f \n", Edij,Epij);
ixi = ix*m;
jyi = jy*m;
iz1 = ixi+jyi;
iv1 = jyi-ixi;
//iz2 = (n*m-iz1);
//iv2 = (n*m-iv1);
for (i = 0;i<m;i++,ixi++,jyi++,iz1++,iv1++) {
rrA = rA[ixi]*rA[jyi]; ///rrA = rA[i][ix]*rA[i][jy];
iiA = iA[ixi]*iA[jyi]; ///iiA = iA[i][ix]*iA[i][jy];
riA = rA[ixi]*iA[jyi]; ///riA = rA[i][ix]*iA[i][jy];
irA = iA[ixi]*rA[jyi]; ///irA = iA[i][ix]*rA[i][jy];
/* Sum frequency effects */
tmp1 = kfact*2.0*(rrA-iiA)*Epij;
tmp2 = kfact*2.0*(riA+irA)*Epij;
rvec[iz1] += tmp1;///rvec[i][ix+jy] += tmp1;
ivec[iz1] += tmp2;///ivec[i][ix+jy] += tmp2;
//rvec[iz2] += tmp1;///rvec[i][n*m-(ix+jy)] += tmp1;
//ivec[iz2] -= tmp2;///ivec[i][n*m-(ix+jy)] -= tmp2;
// iz2++;
/* Difference frequency effects */
tmp1 = kfact*2.0*(rrA+iiA)*Edij;
tmp2 = kfact*2.0*(riA-irA)*Edij;
rvec[iv1] += tmp1;///rvec[i][jy-ix] += tmp1;
ivec[iv1] += tmp2;///ivec[i][jy-ix] += tmp2;
//rvec[iv2] += tmp1;///rvec[i][n*m-(jy-ix)] += tmp1;
//ivec[iv2] -= tmp2;///ivec[i][n*m-(jy-ix)] -= tmp2;
//iv2++;
}
}
}
}
else{ /* Finite water depth */
for (ix = nmin-1;ix<nmax;ix++) {
kw1 = kw[ix];
w1 = w[ix];
tmp1 = tanh(kw1*h);
/// Cg, wave group velocity
Cg = 0.5*g*(tmp1 + kw1*h*(1.0- tmp1*tmp1))/w1; /// OK
tmp1 = 0.5*g*(kw1/w1)*(kw1/w1);
tmp2 = 0.5*w1*w1/g;
tmp3 = g*kw1/(w1*Cg);
if (kw1*h<300.0){
tmp4 = kw1/sinh(2.0*kw1*h);
}
else{ // To ensure sinh does not overflow.
tmp4 = 0.0;
}
// Difference frequency effects finite water depth
Edij = (tmp1-tmp2+tmp3)/(1.0-g*h/(Cg*Cg))-tmp4; /// OK
// Sum frequency effects finite water depth
Epij = (3.0*(tmp1-tmp2)/(1.0-tmp1/kw1*tanh(2.0*kw1*h))+3.0*tmp2-tmp1); /// OK
//printf("Edij = %f Epij = %f \n", Edij,Epij);
ixi = ix*m;
iz1 = 2*ixi;
//iz2 = n*m-ixi;
for (i=0;i<m;i++,ixi++,iz1++) {
rrA = rA[ixi]*rA[ixi]; ///
iiA = iA[ixi]*iA[ixi]; ///
riA = rA[ixi]*iA[ixi]; ///
/// Sum frequency effects along the diagonal
rvec[iz1] += kfact*(rrA-iiA)*Epij;
ivec[iz1] += kfact*2.0*riA*Epij;
//rvec[iz2] += kfact*(rrA-iiA)*Epij;
//ivec[iz2] -= kfact*2.0*riA*Epij;
//iz2++;
/// Difference frequency effects along the diagonal
/// are only contributing to the mean
rvec[i] += 2.0*(rrA+iiA)*Edij;
}
for (jy = ix+1;jy<nmax;jy++) {
// w1 = w[ix];
// kw1 = kw[ix];
w2 = w[jy];
kw2 = kw[jy];
tmp1 = g*(kw1/w1)*(kw2/w2);
tmp2 = 0.5/g*(w1*w1+w2*w2+w1*w2);
tmp3 = 0.5*g*(w1*kw2*kw2+w2*kw1*kw1)/(w1*w2*(w1+w2));
tmp4 = (1-g*(kw1+kw2)/(w1+w2)/(w1+w2)*tanh((kw1+kw2)*h));
Epij = (tmp1-tmp2+tmp3)/tmp4+tmp2-0.5*tmp1; /* OK */
tmp2 = 0.5/g*(w1*w1+w2*w2-w1*w2); /*OK*/
tmp3 = -0.5*g*(w1*kw2*kw2-w2*kw1*kw1)/(w1*w2*(w1-w2));
tmp4 = (1.0-g*(kw1-kw2)/(w1-w2)/(w1-w2)*tanh((kw1-kw2)*h));
Edij = (tmp1-tmp2+tmp3)/tmp4+tmp2-0.5*tmp1; /* OK */
//printf("Edij = %f Epij = %f \n", Edij,Epij);
ixi = ix*m;
jyi = jy*m;
iz1 = ixi+jyi;
iv1 = jyi-ixi;
// iz2 = (n*m-iz1);
// iv2 = n*m-iv1;
for (i=0;i<m;i++,ixi++,jyi++,iz1++,iv1++) {
rrA = rA[ixi]*rA[jyi]; ///rrA = rA[i][ix]*rA[i][jy];
iiA = iA[ixi]*iA[jyi]; ///iiA = iA[i][ix]*iA[i][jy];
riA = rA[ixi]*iA[jyi]; ///riA = rA[i][ix]*iA[i][jy];
irA = iA[ixi]*rA[jyi]; ///irA = iA[i][ix]*rA[i][jy];
/* Sum frequency effects */
tmp1 = kfact*2.0*(rrA-iiA)*Epij;
tmp2 = kfact*2.0*(riA+irA)*Epij;
rvec[iz1] += tmp1;///rvec[i][jy+ix] += tmp1;
ivec[iz1] += tmp2;///ivec[i][jy+ix] += tmp2;
//rvec[iz2] += tmp1;///rvec[i][n*m-(jy+ix)] += tmp1;
//ivec[iz2] -= tmp2;///ivec[i][n*m-(jy+ix)] -= tmp2;
//iz2++;
/* Difference frequency effects */
tmp1 = kfact*2.0*(rrA+iiA)*Edij;
tmp2 = kfact*2.0*(riA-irA)*Edij;
rvec[iv1] += tmp1;///rvec[i][jy-ix] += tmp1;
ivec[iv1] += tmp2;///ivec[i][jy-ix] -= tmp2;
//rvec[iv2] += tmp1;
//ivec[iv2] -= tmp2;
//iv2++;
}
}
}
}
//return i;
}
/*
* DISUFQ2 Is an internal function to spec2nlsdat
*
* CALL: disufq2(rsvec,isvec,rdvec,idvec,rA,iA, w,kw,h,g,nmin,nmax,m,n)
*
* rsvec, isvec = real and imaginary parts of the sum frequency
* effects (size m X n).
* rdvec, idvec = real and imaginary parts of the difference frequency
* effects (size m X n).
* rA, iA = real and imaginary parts of the amplitudes (size m X n).
* w = vector with angular frequencies (w>=0)
* kw = vector with wavenumbers (kw>=0)
* h = water depth (h >=0)
* g = constant acceleration of gravity
* nmin = minimum index where rA(:,nmin) and iA(:,nmin) is
* greater than zero.
* nmax = maximum index where rA(:,nmax) and iA(:,nmax) is
* greater than zero.
* m = size(rA,1),size(iA,1)
* n = size(rA,2),size(iA,2), or size(rvec,2),size(ivec,2)
*
* DISUFQ2 returns the summation of sum and difference frequency
* frequency effects in the vectors svec = rsvec +sqrt(-1)*isvec and
* dvec = rdvec +sqrt(-1)*idvec.
* The 2'nd order contribution to the Stokes wave is then calculated by
* a simple 1D Fourier transform, real(FFT(svec+dvec)).
*
*
* This is a MEX-file for MATLAB.
* by Per Andreas Brodtkorb 15.08.2001
* revised pab 14.03.2002, 01.05.2002
*/
void disufq2(double *rsvec, double *isvec,
double *rdvec, double *idvec,
double *rA, double *iA,
double *w, double *kw,
double h, double g,
int nmin, int nmax,
int m, int n)
{
double Epij, Edij;
double tmp1, tmp2, tmp3, tmp4, kfact;
double w1, w2, kw1, kw2, Cg;
double rrA, iiA, riA, irA;
int i,jy,ix,iz1,iv1,ixi,jyi;
//int iz2,iv2
//Initialize rvec and ivec to zero
for (ix=0;ix<n*m;ix++) {
rsvec[ix] = 0.0;
isvec[ix] = 0.0;
rdvec[ix] = 0.0;
idvec[ix] = 0.0;
}
// kfact is set to 2 in order to exploit the symmetry.
// If you set kfact to 1, you must uncomment all statements
// including the expressions: rvec[iz2], rvec[iv2], ivec[iz2] and ivec[iv2].
kfact = 2.0;
if (h>10000){ /* deep water /Inifinite water depth */
for (ix = nmin-1;ix<nmax;ix++) {
ixi = ix*m;
iz1 = 2*ixi;
//iz2 = n*m-ixi;
kw1 = kw[ix];
Epij = kw1;
for (i=0;i<m;i++,ixi++,iz1++) {
rrA = rA[ixi]*rA[ixi]; ///
iiA = iA[ixi]*iA[ixi]; ///
riA = rA[ixi]*iA[ixi]; ///
/// Sum frequency effects along the diagonal
tmp1 = kfact*(rrA-iiA)*Epij;
tmp2 = kfact*2.0*riA*Epij;
rsvec[iz1] += tmp1;
isvec[iz1] += tmp2;
//rsvec[iz2] += tmp1;
//isvec[iz2] -= tmp2;
//iz2++;
/// Difference frequency effects are zero along the diagonal
/// and are thus not contributing to the mean.
}
for (jy = ix+1;jy<nmax;jy++){
kw2 = kw[jy];
Epij = 0.5*(kw2 + kw1);
Edij = -0.5*(kw2 - kw1);
//printf("Edij = %f Epij = %f \n", Edij,Epij);
ixi = ix*m;
jyi = jy*m;
iz1 = ixi+jyi;
iv1 = jyi-ixi;
//iz2 = (n*m-iz1);
//iv2 = (n*m-iv1);
for (i = 0;i<m;i++,ixi++,jyi++,iz1++,iv1++) {
rrA = rA[ixi]*rA[jyi]; ///rrA = rA[i][ix]*rA[i][jy];
iiA = iA[ixi]*iA[jyi]; ///iiA = iA[i][ix]*iA[i][jy];
riA = rA[ixi]*iA[jyi]; ///riA = rA[i][ix]*iA[i][jy];
irA = iA[ixi]*rA[jyi]; ///irA = iA[i][ix]*rA[i][jy];
/* Sum frequency effects */
tmp1 = kfact*2.0*(rrA-iiA)*Epij;
tmp2 = kfact*2.0*(riA+irA)*Epij;
rsvec[iz1] += tmp1; ///rvec[i][ix+jy] += tmp1;
isvec[iz1] += tmp2; ///ivec[i][ix+jy] += tmp2;
//rsvec[iz2] += tmp1;///rvec[i][n*m-(ix+jy)] += tmp1;
//isvec[iz2] -= tmp2;///ivec[i][n*m-(ix+jy)] += tmp2;
//iz2++;
/* Difference frequency effects */
tmp1 = kfact*2.0*(rrA+iiA)*Edij;
tmp2 = kfact*2.0*(riA-irA)*Edij;
rdvec[iv1] += tmp1;///rvec[i][jy-ix] += tmp1;
idvec[iv1] += tmp2;///ivec[i][jy-ix] += tmp2;
//rdvec[iv2] += tmp1;///rvec[i][n*m-(jy-ix)] += tmp1;
//idvec[iv2] -= tmp2;///ivec[i][n*m-(jy-ix)] -= tmp2;
// iv2++;
}
}
}
}
else{ /* Finite water depth */
for (ix = nmin-1;ix<nmax;ix++) {
kw1 = kw[ix];
w1 = w[ix];
tmp1 = tanh(kw1*h);
/// Cg, wave group velocity
Cg = 0.5*g*(tmp1 + kw1*h*(1.0- tmp1*tmp1))/w1; /// OK
tmp1 = 0.5*g*(kw1/w1)*(kw1/w1);
tmp2 = 0.5*w1*w1/g;
tmp3 = g*kw1/(w1*Cg);
if (kw1*h<300.0){
tmp4 = kw1/sinh(2.0*kw1*h);
}
else{ // To ensure sinh does not overflow.
tmp4 = 0.0;
}
// Difference frequency effects finite water depth
Edij = (tmp1-tmp2+tmp3)/(1.0-g*h/(Cg*Cg))-tmp4; /// OK
// Sum frequency effects finite water depth
Epij = (3.0*(tmp1-tmp2)/(1.0-tmp1/kw1*tanh(2.0*kw1*h))+3.0*tmp2-tmp1); /// OK
//printf("Edij = %f Epij = %f \n", Edij,Epij);
ixi = ix*m;
iz1 = 2*ixi;
//iz2 = n*m-ixi;
for (i=0;i<m;i++,ixi++,iz1++) {
rrA = rA[ixi]*rA[ixi]; ///
iiA = iA[ixi]*iA[ixi]; ///
riA = rA[ixi]*iA[ixi]; ///
/// Sum frequency effects along the diagonal
rsvec[iz1] += kfact*(rrA-iiA)*Epij;
isvec[iz1] += kfact*2.0*riA*Epij;
//rsvec[iz2] += kfact*(rrA-iiA)*Epij;
//isvec[iz2] -= kfact*2.0*riA*Epij;
/// Difference frequency effects along the diagonal
/// are only contributing to the mean
//printf(" %f \n",2.0*(rrA+iiA)*Edij);
rdvec[i] += 2.0*(rrA+iiA)*Edij;
}
for (jy = ix+1;jy<nmax;jy++) {
// w1 = w[ix];
// kw1 = kw[ix];
w2 = w[jy];
kw2 = kw[jy];
tmp1 = g*(kw1/w1)*(kw2/w2);
tmp2 = 0.5/g*(w1*w1+w2*w2+w1*w2);
tmp3 = 0.5*g*(w1*kw2*kw2+w2*kw1*kw1)/(w1*w2*(w1+w2));
tmp4 = (1-g*(kw1+kw2)/(w1+w2)/(w1+w2)*tanh((kw1+kw2)*h));
Epij = (tmp1-tmp2+tmp3)/tmp4+tmp2-0.5*tmp1; /* OK */
tmp2 = 0.5/g*(w1*w1+w2*w2-w1*w2); /*OK*/
tmp3 = -0.5*g*(w1*kw2*kw2-w2*kw1*kw1)/(w1*w2*(w1-w2));
tmp4 = (1.0-g*(kw1-kw2)/(w1-w2)/(w1-w2)*tanh((kw1-kw2)*h));
Edij = (tmp1-tmp2+tmp3)/tmp4+tmp2-0.5*tmp1; /* OK */
//printf("Edij = %f Epij = %f \n", Edij,Epij);
ixi = ix*m;
jyi = jy*m;
iz1 = ixi+jyi;
iv1 = jyi-ixi;
// iz2 = (n*m-iz1);
// iv2 = (n*m-iv1);
for (i=0;i<m;i++,ixi++,jyi++,iz1++,iv1++) {
rrA = rA[ixi]*rA[jyi]; ///rrA = rA[i][ix]*rA[i][jy];
iiA = iA[ixi]*iA[jyi]; ///iiA = iA[i][ix]*iA[i][jy];
riA = rA[ixi]*iA[jyi]; ///riA = rA[i][ix]*iA[i][jy];
irA = iA[ixi]*rA[jyi]; ///irA = iA[i][ix]*rA[i][jy];
/* Sum frequency effects */
tmp1 = kfact*2.0*(rrA-iiA)*Epij;
tmp2 = kfact*2.0*(riA+irA)*Epij;
rsvec[iz1] += tmp1;///rsvec[i][jy+ix] += tmp1;
isvec[iz1] += tmp2;///isvec[i][jy+ix] += tmp2;
//rsvec[iz2] += tmp1;///rsvec[i][n*m-(jy+ix)] += tmp1;
//isvec[iz2] -= tmp2;///isvec[i][n*m-(jy-ix)] += tmp2;
//iz2++;
/* Difference frequency effects */
tmp1 = kfact*2.0*(rrA+iiA)*Edij;
tmp2 = kfact*2.0*(riA-irA)*Edij;
rdvec[iv1] += tmp1;
idvec[iv1] += tmp2;
//rdvec[iv2] += tmp1;
//idvec[iv2] -= tmp2;
// iv2++;
}
}
}
}
// return i;
}

@ -1,117 +0,0 @@
#include "math.h"
/*
* findrfc.c -
*
* Returns indices to RFC turningpoints of a vector
* of turningpoints
*
* Install gfortran and run the following to build the module:
* f2py rfc.pyf findrfc.c -c --fcompiler=gnu95 --compiler=mingw32 -lmsvcr71
*
* 1998 by Per Andreas Brodtkorb.
*/
void findrfc(double *y1,double hmin, double *ind, int n,int info) {
double xminus,xplus,Tpl,Tmi,*y,Tstart;
int i,j,ix=0,NC,iy;
if (*(y1+0)> *(y1+1)){ /* if first is a max*/
y=&(*(y1+1)); /* ignore the first max*/
NC=floor((n-1)/2);
Tstart=2;
}
else {
y=y1;
NC=floor(n/2);
Tstart=1;
}
if (NC<1){
info = 0;
return; /* No RFC cycles*/
}
if (( *(y+0) > *(y+1)) && ( *(y+1) > *(y+2)) ){
info = -1;
return; /*This is not a sequence of turningpoints, exit */
}
if ((*(y+0) < *(y+1)) && (*(y+1)< *(y+2))){
info=-1;
return; /*This is not a sequence of turningpoints, exit */
}
for (i=0; i<NC; i++) {
Tmi=Tstart+2*i;
Tpl=Tstart+2*i+2;
xminus=*(y+2*i);
xplus=*(y+2*i+2);
if(i!=0){
j=i-1;
while((j>=0) && (*(y+2*j+1)<=*(y+2*i+1))){
if( (*(y+2*j)<xminus) ){
xminus=*(y+2*j);
Tmi=Tstart+2*j;
} /*if */
j--;
} /*while j*/
} /*if i */
if ( xminus >= xplus){
if ( (*(y+2*i+1)-xminus) >= hmin){
*(ind+ix)=Tmi;
ix++;
*(ind+ix)=(Tstart+2*i+1);
ix++;
} /*if*/
goto L180;
}
j=i+1;
while((j<NC) ) {
if (*(y+2*j+1) >= *(y+2*i+1)) goto L170;
if( (*(y+2*j+2) <= xplus) ){
xplus=*(y+2*j+2);
Tpl=(Tstart+2*j+2);
}/*if*/
j++;
} /*while*/
if ( (*(y+2*i+1)-xminus) >= hmin) {
*(ind+ix)=Tmi;
ix++;
*(ind+ix)=(Tstart+2*i+1);
ix++;
} /*if*/
goto L180;
L170:
if (xplus <= xminus ) {
if ( (*(y+2*i+1)-xminus) >= hmin){
*(ind+ix)=Tmi;
ix++;
*(ind+ix)=(Tstart+2*i+1);
ix++;
} /*if*/
/*goto L180;*/
}
else{
if ( (*(y+2*i+1)-xplus) >= hmin) {
*(ind+ix)=(Tstart+2*i+1);
ix++;
*(ind+ix)=Tpl;
ix++;
} /*if*/
} /*elseif*/
L180:
iy=i;
} /* for i */
info = ix;
return ;
}

@ -1422,6 +1422,76 @@ def discretize(fun, a, b, tol=0.005, n=5):
err = 0.5 * amax(abs((y00 - y) / (abs(y00 + y) + tiny))) err = 0.5 * amax(abs((y00 - y) / (abs(y00 + y) + tiny)))
return x, y return x, y
def discretize2(fun, a,b,tol=0.005, n=5):
'''
Automatic adaptive discretization of function
Parameters
----------
fun : callable
function to discretize
a,b : real scalars
evaluation limits
tol : real, scalar
absoute error tolerance
n : scalar integer
number of values
Returns
-------
x : discretized values
y : fun(x)
Example
-------
>>> import numpy as np
>>> import pylab as plb
>>> x,y = discretize2(np.cos,0,np.pi)
>>> t = plb.plot(x,y)
>>> plb.show()
>>> plb.close('all')
'''
tiny = floatinfo.tiny
n += (mod(n,2)==0) # make sure n is odd
x = linspace(a, b, n)
fx = fun(x)
n2 = (n-1)/2
erri = hstack( (zeros((n2,1)), ones((n2,1)) )).ravel()
err = erri.max()
err0 = inf
#while (err != err0 and err > tol and n < nmax):
for j in range(50):
if err!=err0 and np.any(erri > tol):
err0 = err
# find top errors
I, = where(erri>tol)
# double the sample rate in intervals with the most error
y = (vstack(((x[I]+x[I-1])/2, (x[I+1]+x[I])/2)).T).ravel()
fy = fun(y)
fy0 = interp(y, x, fx)
erri = 0.5 * (abs((fy0 - fy) / (abs(fy0 + fy) + tiny)))
err = erri.max()
x = hstack((x,y))
I = x.argsort()
x = x[I]
erri = hstack((zeros(len(fx)),erri))[I]
fx = hstack((fx,fy))[I]
else:
break
else:
warnings.warn('Recursion level limit reached j=%d' % j)
return x, fx
def pol2cart(theta, rho): def pol2cart(theta, rho):
''' '''
@ -1792,6 +1862,9 @@ def tranproc(x, f, x0, *xi):
return y #y0,y1,y2,y3,y4 return y #y0,y1,y2,y3,y4
def test_common_shape(): def test_common_shape():
A = ones((4, 1)) A = ones((4, 1))
@ -1870,8 +1943,16 @@ def _test_discretize():
x, y = discretize(cos, 0, pi) x, y = discretize(cos, 0, pi)
plb.plot(x, y) plb.plot(x, y)
plb.show() plb.show()
plb.close('all')
def _test_discretize2():
import numpy as np
import pylab as plb
x,y = discretize2(np.cos,0,np.pi)
t = plb.plot(x,y)
plb.show()
plb.close('all') plb.close('all')
def _test_stirlerr(): def _test_stirlerr():
x = linspace(1, 5, 6) x = linspace(1, 5, 6)
print stirlerr(x) print stirlerr(x)
@ -1898,8 +1979,8 @@ def _test_parse_kwargs():
print out1 print out1
if __name__ == "__main__": if __name__ == "__main__":
if True:# False: # if False: # True:#
import doctest import doctest
doctest.testmod() doctest.testmod()
else: else:
_test_tranproc() _test_discretize2()

Binary file not shown.

@ -1,129 +0,0 @@
! -*- f90 -*-
! Note: the context of this file is case sensitive.
python module mvn2 ! in
interface ! in :mvn2
subroutine mvnun(d,n,lower,upper,means,covar,maxpts,abseps,releps,value,inform) ! in :mvn2:mvndst.f
integer optional,check(len(lower)>=d),depend(lower) :: d=len(lower)
integer optional,check(shape(means,1)==n),depend(means) :: n=shape(means,1)
double precision dimension(d) :: lower
double precision dimension(d),depend(d) :: upper
double precision dimension(d,n),depend(d) :: means
double precision dimension(d,d),depend(d,d) :: covar
integer :: maxpts
double precision :: abseps
double precision :: releps
double precision :: value
integer :: inform
end subroutine mvnun
subroutine mvndst(n,lower,upper,infin,correl,maxpts,abseps,releps,error,value,inform) ! in :mvn2:mvndst.f
integer :: n
double precision dimension(*) :: lower
double precision dimension(*) :: upper
integer dimension(*) :: infin
double precision dimension(*) :: correl
integer :: maxpts
double precision :: abseps
double precision :: releps
double precision :: error
double precision :: value
integer :: inform
integer :: ivls
common /dkblck/ ivls
end subroutine mvndst
function mvndfn(n,w) ! in :mvn2:mvndst.f
integer :: n
double precision dimension(*) :: w
double precision dimension(*) :: upper
integer dimension(*) :: infin
integer :: infis
double precision :: e
double precision dimension(*) :: lower
double precision :: d
double precision dimension(*) :: correl
double precision :: mvndfn
double precision :: mvndnt
entry mvndnt(n,correl,lower,upper,infin,infis,d,e)
end function mvndfn
subroutine mvnlms(a,b,infin,lower,upper) ! in :mvn2:mvndst.f
double precision :: a
double precision :: b
integer :: infin
double precision :: lower
double precision :: upper
end subroutine mvnlms
subroutine covsrt(n,lower,upper,correl,infin,y,infis,a,b,cov,infi) ! in :mvn2:mvndst.f
integer :: n
double precision dimension(*) :: lower
double precision dimension(*) :: upper
double precision dimension(*) :: correl
integer dimension(*) :: infin
double precision dimension(*) :: y
integer :: infis
double precision dimension(*) :: a
double precision dimension(*) :: b
double precision dimension(*) :: cov
integer dimension(*) :: infi
end subroutine covsrt
subroutine dkswap(x,y) ! in :mvn2:mvndst.f
double precision :: x
double precision :: y
end subroutine dkswap
subroutine rcswp(p,q,a,b,infin,n,c) ! in :mvn2:mvndst.f
integer :: p
integer :: q
double precision dimension(*) :: a
double precision dimension(*) :: b
integer dimension(*) :: infin
integer :: n
double precision dimension(*) :: c
end subroutine rcswp
subroutine dkbvrc(ndim,minvls,maxvls,functn,abseps,releps,abserr,finest,inform) ! in :mvn2:mvndst.f
integer :: ndim
integer :: minvls
integer :: maxvls
external functn
double precision :: abseps
double precision :: releps
double precision :: abserr
double precision :: finest
integer :: inform
end subroutine dkbvrc
subroutine dksmrc(ndim,klim,sumkro,prime,vk,functn,x) ! in :mvn2:mvndst.f
integer :: ndim
integer :: klim
double precision :: sumkro
integer :: prime
double precision dimension(*) :: vk
external functn
double precision dimension(*) :: x
end subroutine dksmrc
function mvnphi(z) ! in :mvn2:mvndst.f
double precision :: z
double precision :: mvnphi
end function mvnphi
function phinvs(p) ! in :mvn2:mvndst.f
double precision :: p
double precision :: phinvs
end function phinvs
function bvnmvn(lower,upper,infin,correl) ! in :mvn2:mvndst.f
double precision dimension(*) :: lower
double precision dimension(*) :: upper
integer dimension(*) :: infin
double precision :: correl
double precision :: bvnmvn
end function bvnmvn
function bvu(sh,sk,r) ! in :mvn2:mvndst.f
double precision :: sh
double precision :: sk
double precision :: r
double precision :: bvu
end function bvu
function mvnuni() ! in :mvn2:mvndst.f
double precision :: mvnuni
end function mvnuni
end interface
end python module mvn2
! This file was auto-generated with f2py (version:2_5972).
! See http://cens.ioc.ee/projects/f2py2e/

Binary file not shown.

@ -1,14 +0,0 @@
! File rfcmodule.pyf
python module rfcmodule
interface
subroutine findrfc(y1,hmin, ind, n,info)
intent(c) findrfc ! findrfc is a C function
intent(c) ! all findrfc arguments are considered as C based
integer intent(hide), depend(y) :: n=len(y)
double precision dimension(n), intent(in) :: y1 ! input array
double precision intent(in) :: hmin
integer dimension(n), intent(out) :: ind ! output array,
integer intent(out) :: info
end subroutine findrfc
end interface
end python module rfcmodule

Binary file not shown.

@ -1,14 +1,16 @@
""" """
f2py c_library.pyf c_functions.c -c f2py c_library.pyf c_functions.c -c
See also http://www.scipy.org/Cookbook/CompilingExtensionsOnWindowsWithMinGW
""" """
import os import os
def compile_all(): def compile_all():
# Install gfortran and run the following to build the module: # Install gfortran and run the following to build the module:
compile_format = 'f2py.py %s %s -c --fcompiler=gnu95 --compiler=mingw32 -lmsvcr71' #compile_format = 'f2py.py %s %s -c --fcompiler=gnu95 --compiler=mingw32 -lmsvcr71'
# Install microsoft visual c++ .NET 2003 and run the following to build the module: # Install microsoft visual c++ .NET 2003 and run the following to build the module:
#compile_format = 'f2py.py %s %s -c' compile_format = 'f2py.py %s %s -c'
pyfs = ('c_library.pyf',) pyfs = ('c_library.pyf',)
files =('c_functions.c',) files =('c_functions.c',)

@ -1,5 +1,5 @@
""" """
f2py c_library.pyf c_functions.c -c builds mvnprdmod.pyd
""" """
import os import os
@ -10,21 +10,8 @@ def compile_all():
os.system(compile1_format % file) os.system(compile1_format % file)
file_objects = '%s.o %s.o' % tuple(files) file_objects = '%s.o %s.o' % tuple(files)
os.system('f2py.py -m mvnprdmod -c %s mvnprd_interface.f --fcompiler=gnu95 --compiler=mingw32 -lmsvcr71' % file_objects) #os.system('f2py.py -m mvnprdmod -c %s mvnprd_interface.f --fcompiler=gnu95 --compiler=mingw32 -lmsvcr71' % file_objects)
#compile1_txt = 'gfortran -fPIC -c mvnprd.f' os.system('f2py.py -m mvnprdmod -c %s mvnprd_interface.f ' % file_objects)
#compile2_txt = 'f2py -m mvnprdmod -c mvnprd.o mvnprd_interface.f --fcompiler=gnu95 --compiler=mingw32 -lmsvcr71'
#os.system(compile1_txt)
#os.system(compile2_txt)
# Install gfortran and run the following to build the module:
#compile_format = 'f2py %s %s -c --fcompiler=gnu95 --compiler=mingw32 -lmsvcr71'
# Install microsoft visual c++ .NET 2003 and run the following to build the module:
#compile_format = 'f2py %s %s -c'
#pyfs = ('c_library.pyf',)
#files =('c_functions.c',)
#for pyf,file in zip(pyfs,files):
# os.system(compile_format % (pyf,file))
if __name__=='__main__': if __name__=='__main__':
compile_all() compile_all()

@ -1,12 +1,5 @@
""" """
f2py c_library.pyf c_functions.c -c Builds rindmod.pyd
g95 -W -Wall -pedantic-errors -fbounds-check -Werror -o test_fimod.exe fimod.f test_fimod.f
gfortran -W -Wall -pedantic-errors -fbounds-check -Werror -o test_fimod.exe fimod.f test_fimod.f
gfortran -W -Wall -pedantic-errors -fbounds-check -Werror -o test_rindmod.exe intmodule.f jacobmod.f swapmod.f fimod.f rindmod2007.f test_rindmod.f
df %1 /check:all /fpe:0 /traceback /warn:argument checking /automatic /exe test_rindmod.exe intmodule.f jacobmod.f swapmod.f erfcoremod.f fimod.f rindmod.f test_rindmod.f
df /fast /fixed /transform_loops /exe test_rindmod.exe intmodule.f jacobmod.f swapmod.f erfcoremod.f fimod.f rindmod.f test_rindmod.f
""" """
import os import os
@ -18,21 +11,8 @@ def compile_all():
os.system(compile1_format % file) os.system(compile1_format % file)
file_objects = format1 % tuple(files) file_objects = format1 % tuple(files)
os.system('f2py.py -m rindmod -c %s rind_interface.f --fcompiler=gnu95 --compiler=mingw32 -lmsvcr71' % file_objects) #os.system('f2py.py -m rindmod -c %s rind_interface.f --fcompiler=gnu95 --compiler=mingw32 -lmsvcr71' % file_objects)
#compile1_txt = 'gfortran -fPIC -c mvnprd.f' os.system('f2py.py -m rindmod -c %s rind_interface.f ' % file_objects)
#compile2_txt = 'f2py -m mvnprdmod -c mvnprd.o mvnprd_interface.f --fcompiler=gnu95 --compiler=mingw32 -lmsvcr71'
#os.system(compile1_txt)
#os.system(compile2_txt)
# Install gfortran and run the following to build the module:
#compile_format = 'f2py %s %s -c --fcompiler=gnu95 --compiler=mingw32 -lmsvcr71'
# Install microsoft visual c++ .NET 2003 and run the following to build the module:
#compile_format = 'f2py %s %s -c'
#pyfs = ('c_library.pyf',)
#files =('c_functions.c',)
#for pyf,file in zip(pyfs,files):
# os.system(compile_format % (pyf,file))
if __name__=='__main__': if __name__=='__main__':
compile_all() compile_all()

@ -1,4 +1,4 @@
GFORTRAN module version '0' created from rind71mod.f on Fri Feb 26 13:11:06 2010 GFORTRAN module version '0' created from rind71mod.f on Fri Jul 09 20:01:05 2010
MD5:fc4ffe08c60cbfe3a121a63154dd2c49 -- If you edit this, you'll get what you deserve. MD5:fc4ffe08c60cbfe3a121a63154dd2c49 -- If you edit this, you'll get what you deserve.
(() () () () () () () () () () () () () () () () () () () () () (() () () () () () () () () () () () () () () () () () () () ()

@ -1,5 +1,5 @@
GFORTRAN module version '0' created from rind71mod.f on Fri Feb 26 13:11:07 2010 GFORTRAN module version '0' created from rind71mod.f on Fri Jul 09 20:01:06 2010
MD5:f9bcaa9fb7b827472c94d50c70c8a88f -- If you edit this, you'll get what you deserve. MD5:1f288e757358b6b93dec46af1aa38ca8 -- If you edit this, you'll get what you deserve.
(() () () () () () () () () () () () () () () () () () () () () () () (() () () () () () () () () () () () () () () () () () () () () () ()
() () () ()) () () () ())
@ -25,16 +25,16 @@ DECL UNKNOWN SUBROUTINE GENERIC ALWAYS_EXPLICIT) (UNKNOWN 0 0 0 UNKNOWN
5 'setdata' 'rind71mod' 'setdata' 1 ((PROCEDURE UNKNOWN-INTENT 5 'setdata' 'rind71mod' 'setdata' 1 ((PROCEDURE UNKNOWN-INTENT
MODULE-PROC DECL UNKNOWN SUBROUTINE GENERIC) (UNKNOWN 0 0 0 UNKNOWN ()) MODULE-PROC DECL UNKNOWN SUBROUTINE GENERIC) (UNKNOWN 0 0 0 UNKNOWN ())
19 0 (20 21 22 23 24 25 26 27 28) () 0 () () () 0 0) 19 0 (20 21 22 23 24 25 26 27 28) () 0 () () () 0 0)
27 'dnint' '' 'dnint' 19 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN
DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
28 'dxsplt' '' 'dxsplt' 19 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN
DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
24 'deps2' '' 'deps2' 19 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 24 'deps2' '' 'deps2' 19 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN
DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
25 'dnit' '' 'dnit' 19 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) 25 'dnit' '' 'dnit' 19 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY)
(INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
26 'dxc' '' 'dxc' 19 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) ( 26 'dxc' '' 'dxc' 19 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN DUMMY) (
REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
27 'dnint' '' 'dnint' 19 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN
DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
28 'dxsplt' '' 'dxsplt' 19 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN
DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0)
20 'method' '' 'method' 19 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 20 'method' '' 'method' 19 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN
DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0)
21 'scale' '' 'scale' 19 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 21 'scale' '' 'scale' 19 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN

@ -1,4 +1,4 @@
GFORTRAN module version '0' created from rindmod.f on Fri Feb 26 13:11:05 2010 GFORTRAN module version '0' created from rindmod.f on Fri Jul 09 20:01:04 2010
MD5:bc2c220667849c09b8a376ad185f37fa -- If you edit this, you'll get what you deserve. MD5:bc2c220667849c09b8a376ad185f37fa -- If you edit this, you'll get what you deserve.
(() () () () () () () () () () () () () () () () (() () () () () () () () () () () () () () () ()

@ -2,8 +2,8 @@ from __future__ import division
from wafo.wafodata import WafoData from wafo.wafodata import WafoData
import numpy as np import numpy as np
from numpy import inf from numpy import inf
from numpy.lib.shape_base import atleast_1d from numpy import atleast_1d
from numpy.ma.core import arange, floor from numpy import arange, floor
__all__ = ['edf'] __all__ = ['edf']
def edf(x, method=2): def edf(x, method=2):

@ -27,7 +27,7 @@ import numpy.random as mtrand
from numpy import flatnonzero as nonzero from numpy import flatnonzero as nonzero
from scipy.special import gammaln as gamln from scipy.special import gammaln as gamln
from copy import copy from copy import copy
from estimation import FitDistribution from wafo.stats.estimation import FitDistribution
try: try:
import vonmises_cython import vonmises_cython

Loading…
Cancel
Save