From 03a3a0f88052031658f1bc6bdbed2740ed1ce598 Mon Sep 17 00:00:00 2001 From: Ian Jauslin Date: Wed, 18 May 2022 09:57:44 +0200 Subject: julia code --- julia/main.jl | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 julia/main.jl (limited to 'julia/main.jl') diff --git a/julia/main.jl b/julia/main.jl new file mode 100644 index 0000000..33444f3 --- /dev/null +++ b/julia/main.jl @@ -0,0 +1,150 @@ +using Printf +using FFTW +include("navier_stokes.jl") +include("driving.jl") +include("print.jl") + +function main() + ## defaults + delta=0.0001220703125 + nsteps=10000000 + nu=0.00048828125 + print_freq=1000 + + K1=16 + K2=K1 + N1=4*K1+1 + N2=4*K2+1 + + # read cli arguments + (params,driving,command)=read_args(ARGS) + + # whether N was set in parameters + setN1=false + setN2=false + + # read params + if params!="" + for param in split(params,";") + terms=split(param,"=") + if length(terms)!=2 + print(stderr,"error: could not read parameter '",param,"'.\n") + exit(-1) + end + lhs=string(terms[1]) + rhs=string(terms[2]) + if lhs=="K1" + K1=parse(Int64,rhs) + elseif lhs=="K2" + K2=parse(Int64,rhs) + elseif lhs=="K" + K1=parse(Int64,rhs) + K2=K1 + elseif lhs=="N1" + N1=parse(Int64,rhs) + setN1=true + elseif lhs=="N2" + N2=parse(Int64,rhs) + setN2=true + elseif lhs=="N" + N1=parse(Int64,rhs) + N2=N1 + setN1=true + setN2=true + elseif lhs=="nsteps" + nsteps=parse(Int64,rhs) + elseif lhs=="nu" + nu=parse(Float64,rhs) + elseif lhs=="delta" + delta=parse(Float64,rhs) + elseif lhs=="print_freq" + print_freq=parse(Int64,rhs) + else + print(stderr,"unrecognized parameter '",lhs,"'.\n") + exit(-1) + end + end + end + + ## read driving + if driving=="test" + g=(kx,ky)->g_test(kx,ky) + end + + ## set parameters + if ! setN1 + N1=4*K1+1 + end + if ! setN2 + N2=4*K2+1 + end + + ## run command + if command=="uk" + navier_stokes_uk(nsteps,nu,g,N1,N2,K1,K2,delta,print_freq) + elseif command=="alpha" + navier_stokes_alpha(nsteps,nu,g,N1,N2,K1,K2,delta,print_freq) + else + print(stderr,"unrecognized command '",command,"'.\n") + exit(-1) + end +end + +# read cli arguments +function read_args(ARGS) + # flag + flag="" + + # output strings + command="" + params="" + # default driving force + driving="test" + + # loop over arguments + for arg in ARGS + # argument that starts with a dash + if arg[1]=='-' + # go through characters after dash + for char in arg[2:length(arg)] + + # set params + if char=='p' + # raise flag + flag="params" + elseif char=='g' + # raise flag + flag="driving" + else + print_usage() + exit(-1) + end + end + # arguments that do not start with a dash + else + if flag=="params" + params=arg + elseif flag=="driving" + driving=arg + else + command=arg + end + # reset flag + flag="" + end + end + + if command=="" + print_usage() + exit(-1) + end + + return (params,driving,command) +end + +# usage +function print_usage() + print(stderr,"usage: nstrophy [-p params] [-g driving] \n") +end + +main() -- cgit v1.2.3-70-g09d2