8 research outputs found
A Vortex Sheet/Point Vortex Dynamical Model For Unsteady Separated Flows
This paper presents a hybrid vortex sheet/point vortex method for modeling unsteady separated flows. We use vortex sheets to capture the dynamics of the shear layers immediately behind a wing in motion. The sheets provide a natural way of capturing vortex shedding, a feature missing from many point vortex models. We overcome the high computational cost traditionally associated with vortex sheet methods by approximating the spiraling cores of the sheets using point vortices with time-varying circulation. Circulation is continuously truncated from the tips of the vortex sheets and fed into their associated point vortices. To compensate for the discontinuous force response that results from this redistribution of vorticity, we adjust the velocity of the variable strength point vortices. We demonstrate the viability of the method by modeling the impulsive translation of a wing at a fixed angle of attack. We show that the proposed model correctly predicts the dynamics of large-scale vortical structures in the flow by comparing the distribution of vorticity from results of high-fidelity simulation, a model using only vortex sheets, and the proposed model. For the test cases attempted, the hybrid model predicts similar force responses to those of the sheet-only model, while being orders of magnitude faster
JuliaMatrices/LowRankApprox.jl: v0.2.3
This Julia package provides fast low-rank approximation algorithms for BLAS/LAPACK-compatible matrices based on some of the latest technology in adaptive randomized matrix sketching. Currently implemented algorithms include:
sketch methods:
random Gaussian
random subset
subsampled random Fourier transform
sparse random Gaussian
partial range finder
partial factorizations:
QR decomposition
interpolative decomposition
singular value decomposition
Hermitian eigendecomposition
CUR decomposition
spectral norm estimation
By "partial", we mean essentially that these algorithms are early-terminating, i.e., they are not simply post-truncated versions of their standard counterparts. There is also support for "matrix-free" linear operators described only through their action on vectors. All methods accept a number of options specifying, e.g., the rank, estimated absolute precision, and estimated relative precision of approximation.
Our implementation borrows heavily from the perspective espoused by N. Halko, P.G. Martinsson, J.A. Tropp. Finding structure with randomness: Probabilistic algorithms for constructing approximate matrix decompositions. SIAM Rev. 53 (2): 217-288, 2011., except that we choose the interpolative decomposition (ID) as our basic form of approximation instead of matrix range projection. The reason is that the latter requires expensive matrix-matrix multiplication to contract to the relevant subspace, while the former can sometimes be computed much faster, depending on the accelerated sketching strategy employed.
This package has been developed with performance in mind, and early tests have shown large speedups over similar codes written in MATLAB and Python (and even some in Fortran and C). For example, computing an ID of a Hilbert matrix of order 1024 to relative precision ~1e-15 takes:
~0.02 s using LowRankApprox in Julia
~0.07 s using SciPy in Python (calling a Fortran backend; see PyMatrixID)
~0.3 s in MATLAB
This difference can be attributed in part to both algorithmic improvements as well as to some low-level optimizations.This Julia package provides fast low-rank approximation algorithms for BLAS/LAPACK-compatible matrices based on some of the latest technology in adaptive randomized matrix sketching. Currently implemented algorithms include: sketch methods: random Gaussian random subset subsampled random Fourier transform sparse random Gaussian partial range finder partial factorizations: QR decomposition interpolative decomposition singular value decomposition Hermitian eigendecomposition CUR decomposition spectral norm estimation By "partial", we mean essentially that these algorithms are early-terminating, i.e., they are not simply post-truncated versions of their standard counterparts. There is also support for "matrix-free" linear operators described only through their action on vectors. All methods accept a number of options specifying, e.g., the rank, estimated absolute precision, and estimated relative precision of approximation. Our implementation borrows heavily from the perspective espoused by N. Halko, P.G. Martinsson, J.A. Tropp. Finding structure with randomness: Probabilistic algorithms for constructing approximate matrix decompositions. SIAM Rev. 53 (2): 217-288, 2011., except that we choose the interpolative decomposition (ID) as our basic form of approximation instead of matrix range projection. The reason is that the latter requires expensive matrix-matrix multiplication to contract to the relevant subspace, while the former can sometimes be computed much faster, depending on the accelerated sketching strategy employed. This package has been developed with performance in mind, and early tests have shown large speedups over similar codes written in MATLAB and Python (and even some in Fortran and C). For example, computing an ID of a Hilbert matrix of order 1024 to relative precision ~1e-15 takes: ~0.02 s using LowRankApprox in Julia ~0.07 s using SciPy in Python (calling a Fortran backend; see PyMatrixID) ~0.3 s in MATLAB This difference can be attributed in part to both algorithmic improvements as well as to some low-level optimizations.v0.2.
JuliaMatrices/LowRankApprox.jl: Fix rectangular psvd
Fast low-rank matrix approximation in JuliaFast low-rank matrix approximation in Julia0.2.
JuliaMatrices/LowRankApprox.jl: v0.4.0
JuliaMatrices/LowRankApprox.jl: v0.4.0JuliaMatrices/LowRankApprox.jl: v0.4.00.4.