Skip to content

Instantly share code, notes, and snippets.


Ivan Pribec ivan-pi

View GitHub Profile
ivan-pi / kalman.f90
Last active October 24, 2018 08:19 — forked from mrocklin/kalman.f90
Kalman filter in BLAS/LAPACK Fortran; see [blogpost]( for more information
View kalman.f90
subroutine f(mu, Sigma, H, INFO, R, Sigmavar_2, data, muvar_2, k, n)
implicit none
integer, intent(in) :: k
integer, intent(in) :: n
real*8, intent(in) :: Sigma(n, n) ! Sigma
real*8, intent(in) :: H(k, n) ! H
real*8, intent(in) :: mu(n) ! mu
real*8, intent(in) :: R(k, k) ! R, H*Sigma*H' + R
real*8, intent(in) :: data(k) ! (H*Sigma*H' + R)^-1*((-1)*data + H*mu), data, (-1)* data + H*mu
ivan-pi / mkl_least_squares_example.f90
Last active December 28, 2018 23:14
Sample least squares problem using LAPACK routines from Intel MKL
View mkl_least_squares_example.f90
! # Check out the link below for specific compile instructions for your system:
! #
! To compile use:
! LINK="${MKLROOT}/lib/intel64/libmkl_lapack95_lp64.a -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_sequential.a ${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group -lpthread -lm -ldl"
! INC="-I${MKLROOT}/include/intel64/lp64/ -I${MKLROOT}/include/"
! ifort -warn all -o example3 $INC example3.f90 $LINK
module m_least_squares
ivan-pi / test_banded.f90
Last active January 26, 2019 17:21
Banded system of linear equations solved using "gbsv" driver from LAPACK (Intel MKL)
View test_banded.f90
!LINK="${MKLROOT}/lib/intel64/libmkl_lapack95_lp64.a -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_sequential.a ${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group -lpthread -lm -ldl"
!INC="-I${MKLROOT}/include/intel64/lp64/ -I${MKLROOT}/include/"
!ifort -O3 -warn all -o test_banded $INC test_banded.f90 $LINK
program test_banded
use lapack95, only: gbtrf, gbtrs, gbsv
use f95_precision, only: wp => dp
implicit none
integer, parameter :: kl = 2, ku = 1
ivan-pi / test_gttrf.f90
Last active January 26, 2019 17:22
Tridiagonal linear system of equations example using gttrf from LAPACK (Intel MKL)
View test_gttrf.f90
! LINK="${MKLROOT}/lib/intel64/libmkl_lapack95_lp64.a -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_sequential.a ${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group -lpthread -lm -ldl"
! INC="-I${MKLROOT}/include/intel64/lp64/ -I${MKLROOT}/include/"
! ifort -warn all -o test_gttrf $INC test_gttrf.f90 $LINK
! ./test_gttrf > test_gttrf.out
! gnuplot
! gnuplot> Th = 1
! gnuplot> plot "test_gttrf.out" u 1:2 w p pt 7, cosh((1-x)*Th)/cosh(Th)
module rd_setup
ivan-pi / high_order_poisson_solver.f90
Created February 11, 2019 16:09
Mehrstellenverfahren for the Poisson equation
View high_order_poisson_solver.f90
! See link below for details:
program poisson_higher_order
implicit none
integer, parameter :: wp = kind(1.0d0)
real(wp), parameter :: pi = 4._wp*atan(0._wp)
ivan-pi /
Created February 17, 2019 18:54
Some simple calculations of wort cooling with an internal coil
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
# LMTD case
def f(t,y,params):
p2, p3, Tin = params
ivan-pi / gist:5554aed5157c7c84c8ec04aef612977d
Created September 8, 2019 13:26
Biperiodic weight matrix example
View gist:5554aed5157c7c84c8ec04aef612977d
def biperiodic_weight_matrix(bbox,x, p, n, diffs,
Returns a weight matrix which maps a functions values at `p` to an
approximation of that functions derivative at `x`. This is a convenience
function which first creates stencils and then computes the RBF-FD weights
View fc_string_funcs.f90
use, intrinsic :: ISO_C_BINDING
implicit none
character, dimension(*), target, intent(in) :: STRARRAY
character(:), pointer, intent(out) :: FSTRPTR
integer, intent(in), optional :: MAXLEN
integer :: curlen
curlen = 0
ivan-pi /
Created June 26, 2020 12:23
Basic functions for working with continued fractions. These are handy for approximating irrational numbers as ratios of integer. A Fortran solution is available at
import math
from fractions import Fraction
def continued_fraction(r,steps=10):
cf = []
for step in range(steps):
i = math.floor(r)
ivan-pi / cbrt_1.f90
Created June 28, 2020 12:07
Cube root code example 1
View cbrt_1.f90
module cbrt_mod1
implicit none
public :: cbrt, sp, r
interface cbrt
module procedure cbrt_sp_sp
module procedure cbrt_csp_csp