From b5707dea51be7509b836b68b4ef3c4449dc46f68 Mon Sep 17 00:00:00 2001 From: Josh Ott Date: Fri, 20 May 2022 17:01:01 -0400 Subject: [PATCH] HPC thermalization --- modelB_thermalizer.jl | 105 +++++++++++ output_4.dat | 401 ------------------------------------------ run_short.sh | 8 + 3 files changed, 113 insertions(+), 401 deletions(-) create mode 100644 modelB_thermalizer.jl delete mode 100644 output_4.dat create mode 100644 run_short.sh diff --git a/modelB_thermalizer.jl b/modelB_thermalizer.jl new file mode 100644 index 0000000..187906d --- /dev/null +++ b/modelB_thermalizer.jl @@ -0,0 +1,105 @@ +cd(@__DIR__) + +using Distributions +using Printf +using FFTW +using JLD2 + +Random.seed!(parse(Int, ARGS[1])) + +const L = parse(Int, ARGS[2]) # must be a multiple of 4 +const λ = 4.0e0 +const Γ = 1.0e0 +const T = 1.0e0 + +const Δt = 0.04e0/Γ +const Rate = Float64(sqrt(2.0*Δt*Γ)) +ξ = Normal(0.0e0, 1.0e0) + +function hotstart(n) + rand(ξ, n, n, n) +end + +function ΔH(x, ϕ, q, m²) + @inbounds ϕold = ϕ[x[1], x[2], x[3]] + ϕt = ϕold + q + Δϕ = ϕt - ϕold + Δϕ² = ϕt^2 - ϕold^2 + + @inbounds ∑nn = ϕ[x[1]%L+1, x[2], x[3]] + ϕ[x[1], x[2]%L+1, x[3]] + ϕ[x[1], x[2], x[3]%L+1] + @inbounds ∑nn += ϕ[(x[1]+L-2)%L+1, x[2], x[3]] + ϕ[x[1], (x[2]+L-2)%L+1, x[3]] + ϕ[x[1], x[2], (x[3]+L-2)%L+1] + + 3Δϕ² - Δϕ * ∑nn + 0.5m² * Δϕ² + 0.25λ * (ϕt^4 - ϕold^4) +end + +function step(m², ϕ, x1, x2) + q = Rate*rand(ξ) + + @inbounds ϕ1 = ϕ[x1[1], x1[2], x1[3]] + @inbounds ϕ2 = ϕ[x2[1], x2[2], x2[3]] + + δH = ΔH(x1, ϕ, q, m²) + ΔH(x2, ϕ, -q, m²) + q^2 + P = min(1.0f0, exp(-δH)) + r = rand(Float64) + + if (r < P) + @inbounds ϕ[x1[1], x1[2], x1[3]] += q + @inbounds ϕ[x2[1], x2[2], x2[3]] -= q + end +end + +function sweep(m², ϕ) + #= + n=0 : (i,j,k)->(x,y,z) + n=1 : (i,j,k)->(y,z,x) + n=2 : (i,j,k)->(z,x,y) + pairs are in i direction + =# + for n in 0:2, m in 1:4 + Threads.@threads for k in 1:L + for i in 1:L÷4, j in 1:L + transition = [4(i-1)+2(j-1), j+k-2, k-1] # initial transition from indices to spatial coordinates with origin 0,0 + + # if a∈{1,2,3} chooses a direction in (x,y,z), idx[a] denotes the corresponding direction in (i,j,k) + # ex) idx[2]=3 means k -> y + idx = [(3-n)%3+1, (4-n)%3+1, (5-n)%3+1] + + x1 = transition[idx] # get spatial coordinates in correct orientation according to n + + # 4 values of m are for the 4 permutations of offset in the (i,j) directions + # m=1 2 3 4 + x1[n+1] += m%2 # 1 0 1 0 + x1[(n+1)%3+1] += m<3 # 1 1 0 0 + x2 = copy(x1) + x2[n+1] += 1 # get +i neighbor + + step(m², ϕ, x1.%L.+1, x2.%L.+1) # modulus to fit everything in lattice + end + end + end +end + +function thermalize(m², ϕ, N=10000) + for i in 1:N + sweep(m², ϕ) + end +end + +function op(ϕ, L) + ϕk = fft(ϕ) + average = ϕk[1,1,1]/L^3 + (real(average), ϕk[:,1,1]) +end + +m² = -2.28587 + +ϕ = hotstart(L) +ϕ .= ϕ .- shuffle(ϕ) + +maxt = L^2 + +for i in 1:maxt + thermalize(m², ϕ, 100^L^2) + @show i + jldsave("/share/tmschaef/jkott/tmp/modelB/thermalize_L_"*string(L)*"_id_"*ARGS[1]*".jld2", true; ϕ=ϕ) +end \ No newline at end of file diff --git a/output_4.dat b/output_4.dat deleted file mode 100644 index df2d019..0000000 --- a/output_4.dat +++ /dev/null @@ -1,401 +0,0 @@ -0 0.080544 -1 0.080544 -2 0.080544 -3 0.080544 -4 0.080544 -5 0.080544 -6 0.080544 -7 0.080544 -8 0.080544 -9 0.080544 -10 0.080544 -11 0.080544 -12 0.080544 -13 0.080544 -14 0.080544 -15 0.080544 -16 0.080544 -17 0.080544 -18 0.080544 -19 0.080544 -20 0.080544 -21 0.080544 -22 0.080544 -23 0.080544 -24 0.080544 -25 0.080544 -26 0.080544 -27 0.080544 -28 0.080544 -29 0.080544 -30 0.080544 -31 0.080544 -32 0.080544 -33 0.080544 -34 0.080544 -35 0.080544 -36 0.080544 -37 0.080544 -38 0.080544 -39 0.080544 -40 0.080544 -41 0.080544 -42 0.080544 -43 0.080544 -44 0.080544 -45 0.080544 -46 0.080544 -47 0.080544 -48 0.080544 -49 0.080544 -50 0.080544 -51 0.080544 -52 0.080544 -53 0.080544 -54 0.080544 -55 0.080544 -56 0.080544 -57 0.080544 -58 0.080544 -59 0.080544 -60 0.080544 -61 0.080544 -62 0.080544 -63 0.080544 -64 0.080544 -65 0.080544 -66 0.080544 -67 0.080544 -68 0.080544 -69 0.080544 -70 0.080544 -71 0.080544 -72 0.080544 -73 0.080544 -74 0.080544 -75 0.080544 -76 0.080544 -77 0.080544 -78 0.080544 -79 0.080544 -80 0.080544 -81 0.080544 -82 0.080544 -83 0.080544 -84 0.080544 -85 0.080544 -86 0.080544 -87 0.080544 -88 0.080544 -89 0.080544 -90 0.080544 -91 0.080544 -92 0.080544 -93 0.080544 -94 0.080544 -95 0.080544 -96 0.080544 -97 0.080544 -98 0.080544 -99 0.080544 -100 0.080544 -101 0.080544 -102 0.080544 -103 0.080544 -104 0.080544 -105 0.080544 -106 0.080544 -107 0.080544 -108 0.080544 -109 0.080544 -110 0.080544 -111 0.080544 -112 0.080544 -113 0.080544 -114 0.080544 -115 0.080544 -116 0.080544 -117 0.080544 -118 0.080544 -119 0.080544 -120 0.080544 -121 0.080544 -122 0.080544 -123 0.080544 -124 0.080544 -125 0.080544 -126 0.080544 -127 0.080544 -128 0.080544 -129 0.080544 -130 0.080544 -131 0.080544 -132 0.080544 -133 0.080544 -134 0.080544 -135 0.080544 -136 0.080544 -137 0.080544 -138 0.080544 -139 0.080544 -140 0.080544 -141 0.080544 -142 0.080544 -143 0.080544 -144 0.080544 -145 0.080544 -146 0.080544 -147 0.080544 -148 0.080544 -149 0.080544 -150 0.080544 -151 0.080544 -152 0.080544 -153 0.080544 -154 0.080544 -155 0.080544 -156 0.080544 -157 0.080544 -158 0.080544 -159 0.080544 -160 0.080544 -161 0.080544 -162 0.080544 -163 0.080544 -164 0.080544 -165 0.080544 -166 0.080544 -167 0.080544 -168 0.080544 -169 0.080544 -170 0.080544 -171 0.080544 -172 0.080544 -173 0.080544 -174 0.080544 -175 0.080544 -176 0.080544 -177 0.080544 -178 0.080544 -179 0.080544 -180 0.080544 -181 0.080544 -182 0.080544 -183 0.080544 -184 0.080544 -185 0.080544 -186 0.080544 -187 0.080544 -188 0.080544 -189 0.080544 -190 0.080544 -191 0.080544 -192 0.080544 -193 0.080544 -194 0.080544 -195 0.080544 -196 0.080544 -197 0.080544 -198 0.080544 -199 0.080544 -200 0.080544 -201 0.080544 -202 0.080544 -203 0.080544 -204 0.080544 -205 0.080544 -206 0.080544 -207 0.080544 -208 0.080544 -209 0.080544 -210 0.080544 -211 0.080544 -212 0.080544 -213 0.080544 -214 0.080544 -215 0.080544 -216 0.080544 -217 0.080544 -218 0.080544 -219 0.080544 -220 0.080544 -221 0.080544 -222 0.080544 -223 0.080544 -224 0.080544 -225 0.080544 -226 0.080544 -227 0.080544 -228 0.080544 -229 0.080544 -230 0.080544 -231 0.080544 -232 0.080544 -233 0.080544 -234 0.080544 -235 0.080544 -236 0.080544 -237 0.080544 -238 0.080544 -239 0.080544 -240 0.080544 -241 0.080544 -242 0.080544 -243 0.080544 -244 0.080544 -245 0.080544 -246 0.080544 -247 0.080544 -248 0.080544 -249 0.080544 -250 0.080544 -251 0.080544 -252 0.080544 -253 0.080544 -254 0.080544 -255 0.080544 -256 0.080544 -257 0.080544 -258 0.080544 -259 0.080544 -260 0.080544 -261 0.080544 -262 0.080544 -263 0.080544 -264 0.080544 -265 0.080544 -266 0.080544 -267 0.080544 -268 0.080544 -269 0.080544 -270 0.080544 -271 0.080544 -272 0.080544 -273 0.080544 -274 0.080544 -275 0.080544 -276 0.080544 -277 0.080544 -278 0.080544 -279 0.080544 -280 0.080544 -281 0.080544 -282 0.080544 -283 0.080544 -284 0.080544 -285 0.080544 -286 0.080544 -287 0.080544 -288 0.080544 -289 0.080544 -290 0.080544 -291 0.080544 -292 0.080544 -293 0.080544 -294 0.080544 -295 0.080544 -296 0.080544 -297 0.080544 -298 0.080544 -299 0.080544 -300 0.080544 -301 0.080544 -302 0.080544 -303 0.080544 -304 0.080544 -305 0.080544 -306 0.080544 -307 0.080544 -308 0.080544 -309 0.080544 -310 0.080544 -311 0.080544 -312 0.080544 -313 0.080544 -314 0.080544 -315 0.080544 -316 0.080544 -317 0.080544 -318 0.080544 -319 0.080544 -320 0.080544 -321 0.080544 -322 0.080544 -323 0.080544 -324 0.080544 -325 0.080544 -326 0.080544 -327 0.080544 -328 0.080544 -329 0.080544 -330 0.080544 -331 0.080544 -332 0.080544 -333 0.080544 -334 0.080544 -335 0.080544 -336 0.080544 -337 0.080544 -338 0.080544 -339 0.080544 -340 0.080544 -341 0.080544 -342 0.080544 -343 0.080544 -344 0.080544 -345 0.080544 -346 0.080544 -347 0.080544 -348 0.080544 -349 0.080544 -350 0.080544 -351 0.080544 -352 0.080544 -353 0.080544 -354 0.080544 -355 0.080544 -356 0.080544 -357 0.080544 -358 0.080544 -359 0.080544 -360 0.080544 -361 0.080544 -362 0.080544 -363 0.080544 -364 0.080544 -365 0.080544 -366 0.080544 -367 0.080544 -368 0.080544 -369 0.080544 -370 0.080544 -371 0.080544 -372 0.080544 -373 0.080544 -374 0.080544 -375 0.080544 -376 0.080544 -377 0.080544 -378 0.080544 -379 0.080544 -380 0.080544 -381 0.080544 -382 0.080544 -383 0.080544 -384 0.080544 -385 0.080544 -386 0.080544 -387 0.080544 -388 0.080544 -389 0.080544 -390 0.080544 -391 0.080544 -392 0.080544 -393 0.080544 -394 0.080544 -395 0.080544 -396 0.080544 -397 0.080544 -398 0.080544 -399 0.080544 -400 0.080544 diff --git a/run_short.sh b/run_short.sh new file mode 100644 index 0000000..f4a7929 --- /dev/null +++ b/run_short.sh @@ -0,0 +1,8 @@ +#!/bin/tcsh +#BSUB -W 120 +#BSUB -n 16 +#BSUB -R span[hosts=1] +#BSUB -o out.%J +#BSUB -e err.%J +setenv JULIA_DEPOT_PATH /home/jkott/julia +module load julia