Ian Jauslin
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'julia/main.jl')
-rw-r--r--julia/main.jl150
1 files changed, 150 insertions, 0 deletions
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] <command>\n")
+end
+
+main()