; test code for libstokes
; Copyright (C) 2006-2008 Kengo Ichiki <kichiki@users.sourceforge.net>
; $Id: manual.tex,v 1.5 2008/10/12 20:16:53 kichiki Exp $
(load-extension "./stokes.so" "SWIG_init")
; diaplay darray in 3
(define (display-darray3 da n)
(do ((i 0 (1+ i)))
((>= i n))
(display i)
(display ": ")
(display (darray-getitem da (* i 3)))
(display " ")
(display (darray-getitem da (+ 1 (* i 3))))
(display " ")
(display (darray-getitem da (+ 2 (* i 3))))
(newline)))
(define sys (stokes-init))
(define np 8)
(define nm 8)
(stokes-set-np sys np nm)
(set! (stokes-periodic sys) 1) ; periodic boundary condition
(define lx 10.0)
(define ly 10.0)
(define lz 10.0)
(stokes-set-l sys lx ly lz)
(define ewald-tr 60.25)
(define xi (xi-by-tratio sys ewald-tr))
(define ewald-eps 1.0e-12)
(stokes-set-xi sys xi ewald-eps)
(display "xi = ")
(display xi)
(newline)
;(stokes-lubmin2-set sys 4.0000000001)
;(stokes-lubmin2-get sys)
; with '-emit-setter' on swig, you can write those as
(set! (stokes-lubmin2 sys) 4.0000000001)
;(stokes-lubmin2 sys)
(set! (stokes-lubmax sys) 4.0)
;(stokes-lubmax sys)
(stokes-set-iter sys "gmres" 2000 20 1.0e-6 1 (get-stdout))
(define pos (new-darray (* np 3)))
(define u (new-darray (* np 3)))
(define f (new-darray (* np 3)))
; set pos in SC lattice configuration
(darray-setitem pos 0 0.0) ; x component
(darray-setitem pos 1 0.0) ; y component
(darray-setitem pos 2 0.0) ; z component
(darray-setitem pos 3 5.0)
(darray-setitem pos 4 0.0)
(darray-setitem pos 5 0.0)
(darray-setitem pos 6 0.0)
(darray-setitem pos 7 5.0)
(darray-setitem pos 8 0.0)
(darray-setitem pos 9 0.0)
(darray-setitem pos 10 0.0)
(darray-setitem pos 11 5.0)
(darray-setitem pos 12 5.0)
(darray-setitem pos 13 5.0)
(darray-setitem pos 14 0.0)
(darray-setitem pos 15 0.0)
(darray-setitem pos 16 5.0)
(darray-setitem pos 17 5.0)
(darray-setitem pos 18 5.0)
(darray-setitem pos 19 0.0)
(darray-setitem pos 20 5.0)
(darray-setitem pos 21 5.0)
(darray-setitem pos 22 5.0)
(darray-setitem pos 23 5.0)
; set u and f
(do ((i 0 (1+ i)))
((>= i (* np 3)))
(darray-setitem u i 1.0))
(display "pos:")
(newline)
(display-darray3 pos np)
(display "u:")
(newline)
(display-darray3 u np)
(stokes-set-pos sys pos)
(solve-res-3f sys u f)
(define nc-f (stokes-nc-init "test-stokes.res-3f.nc"
np
0 ; nf
0 ; version
0 ; flag_poly
0 ; flag_Q
0 ; flag_it (time-dependent imposed flow)
0 ; shear_mode
0 ; flag_BD
))
;; f0, x, u are active
(stokes-nc-set-f0 nc-f f)
(stokes-nc-set-time nc-f 0 0.0)
(stokes-nc-set-x nc-f 0 pos)
(stokes-nc-set-u nc-f 0 u)
(stokes-nc-free nc-f)
(display "f:")
(newline)
(display-darray3 f np)