From 2b12e08bf14bd073ad4edb0742c5b87a8d29d060 Mon Sep 17 00:00:00 2001 From: Georg Wolfgang Winkler <winklerg@itp.phys.ethz.ch> Date: Tue, 10 May 2016 10:41:21 +0200 Subject: [PATCH] solution for ex10 added --- exercises/ex10_solution/Makefile | 4 + .../ex10_solution/classical_ising-mag.pdf | Bin 0 -> 16735 bytes .../ex10_solution/classical_ising-mag2.pdf | Bin 0 -> 16971 bytes .../classical_ising-mag_error.pdf | Bin 0 -> 14214 bytes .../ex10_solution/classical_ising-mag_tau.pdf | Bin 0 -> 15286 bytes exercises/ex10_solution/data/run_classical.sh | 11 + exercises/ex10_solution/ising.cpp | 344 ++++++++++++++++++ exercises/ex10_solution/plot_classical.py | 53 +++ 8 files changed, 412 insertions(+) create mode 100755 exercises/ex10_solution/Makefile create mode 100755 exercises/ex10_solution/classical_ising-mag.pdf create mode 100755 exercises/ex10_solution/classical_ising-mag2.pdf create mode 100755 exercises/ex10_solution/classical_ising-mag_error.pdf create mode 100755 exercises/ex10_solution/classical_ising-mag_tau.pdf create mode 100755 exercises/ex10_solution/data/run_classical.sh create mode 100755 exercises/ex10_solution/ising.cpp create mode 100755 exercises/ex10_solution/plot_classical.py diff --git a/exercises/ex10_solution/Makefile b/exercises/ex10_solution/Makefile new file mode 100755 index 0000000..7bd55db --- /dev/null +++ b/exercises/ex10_solution/Makefile @@ -0,0 +1,4 @@ +include $(ALPS_ROOT)/share/alps/include.mk + +ising: ising.cpp + $(CXX) -Wall $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(LIBS) -o ising ising.cpp diff --git a/exercises/ex10_solution/classical_ising-mag.pdf b/exercises/ex10_solution/classical_ising-mag.pdf new file mode 100755 index 0000000000000000000000000000000000000000..7964e9e202347ff6610101e715a9ac8f1c82fed7 GIT binary patch literal 16735 zcmc(H2{={X*FPEJA~T6}BT0rk-)qi1WF88k%=7FTB1Oqi5t$-G5gAJ6BpH$r8Oo4o zFe{lW`8N3PbEPQ1@2~fL-skz>o^9{5&)#dVz4kh5t-a6ZB%rILB8n2j!US#(!V9Wk zC^!=CZsi1%mWCq?k9*j{5sH>XOBZ*0I6~Lb-qstA1`YJ#va&E+Hyfy-___|pI#y1$ z)<igg)CP1Q5^cTQ;5g_KhS2qLw>GdP!c74wB^5y4)}IJRsJjBP3O{niAGtc*9F9=- zC#o6{Es3^p>?#2R2TL1AH+wjKmAs0(8xf8nm4C5=LV}9538;Fx`*^^isVEx25lXhc zj@GvNs$ej1W$0z;=IvqWW$R{rd~K?$?PX=5xq=(S)ycvTTDCThmJ06vfOUvGj(~?_ zF=&WKeOqsLA1`Yl7f25JYlI+Cfk6R-fQmO<f^_c}lhE}Vk1CEXKuB<eiVK*jlC8D7 z4d|(9>t;`MfTN(*APL)>=w)l^3iD6BW!xJ55>Nl~i*T7H=e%xwZd2xYN>>==B;Pcd zIpf}E*m~&{o6}pAzvtCHSJbE&bDqj%C8E4VlY3*E8x&vkp4cvS)Oc~G)N=7f%rf1n z0}P=nekxXVv(q1@c8;8TH@mCh8xz-=*q-*BuB3X`ot5#ALYXg&YXpsFC1)(i<|Zeh zF6$7+3Eu8vM~i086fv4Ekx#v8a$sdX>q1fYE?(_Zm;S=I?`NMPmtyVFE&=U5!_OOt z$yAqHqbb@^CaULmUYFiG(X2A~#7U-O{LMZ=!FKK5w$N__+g0bg)M@x=$ES!a9JgCN zikGm|?%SJk)Wlc=5&zUl&Q`a|nlKCLDCr-IkbM)!SYJhJnOt$<iBgh+yoctaM(Hp% z0WWw|y)<X!E%qdXV)`NlN}CU%w=6EI?|h~mp1ZBI5%X$XkDo)e!|H6%hj)v<l3(Cl zTg5)fTNg0fai1QsS+ser*)V&Uh5ZX*+>svs^?OMt97!iIbv#=>dhYxlb<-Wl&-Hs` zy)`Jpy_Ftbe40qj%&ar_j}XJ2+-H8+xq8#B(NwQH;ZY$5d+Bn{iZbwh=4LkHZgzK! z$^0mLI%O!78b8kVX4g0a15X7)-b~YUhf@3V^0BfZa+H56Uj`F-H%$xc=lcSu$60!5 zy$(_q<ee${!pf%`=C1Z2nx?D1F771@`64`i^s5qI%yD~%`294ywwgK?$AwKvdCy~# zckyzt-VQ%+O~d>38D_~vq@6!Syr1uol!^iTzIU?F7zKYNb&IVizBQU>OX6?{7eD?v zdz4ZqRgu6w-pqwwuh3`u!|AaWMybX=S+$)s%nApCSzh|kI9d$tyE9*RWd)&MV70`b zFcfET4Pnnmb?aOxPoj71LE2E|n>S^+g)Z{5KJDkdTc`x%Vu@3}%+#Ib-yW+FtJHg` z+&po&KBZ@PVbynq2)1xax<2!*u?M-D7#BoiC53K@8xxNkh{RGzDBd;_qU2Fm8pj_( z*lf2wl%&#ina|L0AXud>=BoM)j{6GJi&ZC0!z}V1cfvH4xOyk>FD_XhD!VbKZ@%Ox zV1H}BR9NB1>{i`k2mUw3VoUK?nIf2UjqmAc?>~5iwWPPzn^JiwoRU)ZV2ZN3?!KF6 zpD*QwKmUim*p98XQ2%rWJ;#WDP&Va(a#1yxFL(<YLrTXnfuPd(uT3$xKGyC+-_BPV zGHc$Fm0~~~OwcWIck<9xp4_)xtGQEB{^4+J2B&&`x^8N$k$K^6n{6iHL0<+FG}%u* zX?qyd(jCKW>zU`CwL5FOVj{zGMvl;cot9$5z$dzw5jvLqBDAI>Dn^}KvTDoJwTS|X zap%ZHs~*UXI69scxQ0`Ht(RcC?{VhN#3SXRS|1!{b*>B0HRX%E%&e$coIKRcnLadD zR6RPFu(b2`tkmT``=OMfvFyA4ROgEBehs40zT(C)BA4(!^K$E*2F#9Wzww1L%ky5w zOwLlK<Wm-pL>jn!dDE0t61Zs*EP*bvb?FLN>!kYAG7OyWB_%KJ^k)-f9jC1vIKzoI zoRhp<-|9h~p=w`$E!tW;(B@RIbeFS=*cqz3y6!54S&Pl}e5}58C0h?~GkX5ki#n~+ ze0S?d6S?p#^ijmp<smZf{923?mq=wf-e?pePJ_^zY+icf$$0c>@#(&Ldf6LJ<Pi1y zzTW=U194J2Ep!|YK-}C{Q*b(J(QZBRW*@KW(T>2map#tWw>H%72hs;cGxXa}(+wR; z=*&z{AB@JHNh(=BkuR6;Lw%5}rBlxQwWY+(_m48^{TGJW`^q!EWeL;E_oSAdbgM&G zeVTIQ6|QyM)*E4M+Y@kotn%cte)j>U!`^ejC$-=7$Cml+nVWkmRdvqzwo%)doxJPJ zlE>nnw#4BGtIptElUb()iHB-VCrweGs4=PU`y%5Jbp_wcW;#g`wFO%crw~%uC;Y*y zRF1F|*m)8rnpHC}czTyZ7>9U4c13XCRM@@6CtF?(&Qjkq+#}2{wqx#0wJY7Uh_<TZ zNFO4`+@c`u{T|L{#A}aREmxkfrpR>QE_RY77<U=#k8fM@*PLQGHe2}W<!kAhl`rq+ zzcqa8J1&90J;3i$6Q4ON&J^}>e7>*uNz_ME;he5}^zB)WPng`hg9vZ8#8<b!^}C5S zl4Tr{kSM<CZQ7a>P<QrA&zOx{zQ82Yr-Ig&K^v1kGgKdLAn2yEo5)m(sfO4wR!(=g zOSRMp+9>Eo&}){H*>SxDCR@o=xE4q9w}pv;f+p_8`*&-;EiBKE$C)^qau0Jo$8;wT zz}4y)-4#2Hdy;#dzF3ugE-*iW$K1O8BHI@8?4OfirhP{UMTI@aJ>^FV3^GOp8r&Ii z9oX;blJBECWF9>b<gE>=tf?~pD)W`@<1A$y6nXschd*KvlAnYeDvBUMSPM*0P!#ev zUKWp%fZ~~-E><R9-pd+AqqHPT#i^FS1P@AUGBB~7sZHx^jyp>yvd1B1yl+4EcvH>S z&>nA>izNrXr+nf47WAa*6}`!wx5i>M$G*MqUs^WU#eMF5(S@>%qyuhuiGrdXL*=Gt zz3tnZoV2bSzZvhBBzh|1;r0r&Xk{_kb{`j+0M>4Ed(-xQxl-SOCE>`{g4jX$$V1u3 zhi#4onhMc<bdu`7!DnG^qd#yyrKH?Qb?#s+rD*J}wlr7KR(s}b#jmi=(ZiHh`Z5fB z?Tjj3x!Sw|;*W!SOfx;F=Jrk&`EzC;AqEvU7VD0Uirq96qYE%NP~;yGFK*gb7~TA( zdS20ncQN~T{0)hfOG0wmV&j9&mC1E`=#R~7J~KN5I~Kp#C>`k`(%O8rL}&XjC)dzm zPgv3m<PH27&rY7PmY|RG-ZFNBvt9ZpD3`wX^mjPRK8SdeS^q%MS?j~-?0a=obiE~? z#_X_qx20fm1ZKkQ6<K6w4t#=op$0#rG#Vm4B-*KD=d+~Lsi<~;a<~7kFOC{P`yXGK zNUx9q5u2mrL*xsNr!G-9E`DOM^ExQR_{l2EX-?532&QvawLsZ>q4!FBX1}_vK3%E# z*PO#X73NtJ!i*=zxLs9+U3+F+lypx#XnSE(=p^jYpB`VSTk`p6(%X94L2XwCgJh)e zH%EJ&5tiD!MI%nUv`iU_rM@2uOad1yL+tIJ9~EUizC-MavgN7nb0rJg<_s8@dChi4 zcrc&19#Lti`cfHIFMH&R1@owYoWd?@(N~q-9iQ}dn_OO==+(P%Q-3n<gGtN#i)!5; z6*L%%SD34hy<Q<(p8F)di6XC$rvEK6#1L>BbQX6>BYF>{v&Ug#otMbZq)p^?-3*wi zo#yntXqXRQrX<gCdQo(8T6j?MS-_2N^G!|8GVfoH9L2wsPMlvf86S|n==b~)@d^k3 z=M`z@2bV2pIQA&D+-q1U_rKFqL3~F&vuBdcPP_S;S9HVo<9i*o;%1#2i%cSzm+Oyv z+4S7L;hI^l_#isroX8wiLkf9BXWrWw1ddhcxkA}!4ez_EVXH5Z*ux_st_)Ji!Yh3@ zWvc=sqh$R`)ORs3WK|^V7ae-$x%4IKBkz<;>bvv#GoiQNX$okitmNNZ3UE?CWr|Cg zJgBrhDO7DG<~Uy}STUyAA$I>bhp)uo9=Av}r#!71lXSt`-Fw-)p4C{;5Z|It@4v=d z6Frtk@8J?BDSnr6Tb}-k>EP8Fhxw<S?r9g5icd`>n4LS~x+GueY{q!ck4>C=-bp!T z%3x~};n;RTK01bW(`vJ$H;Q+CjT7yOZHdY?+DTaQt7!@e9Lt!PW$d{hqqNETL0g@l zHV1_NO19qCUXC6_cP}`Kw2Ofwv@Knsy@9K%BMJ#aK${pXOQM$}X>%clL_#4y`1i8} zHW><*-nOL8&W~Pjgps2S(ZL&zBJF-)2m>E0B5AJ%?btAYxPzq^wA%tLe(aT2w{ojQ zR2;p$iBJ>xkMR{&w>F{}99$HQL&8x=tT>zi3g$3`vK!cuK$|XT7p3HAXJ-rTn81F= z6i&dx5eMNYpos`8TcRbj9a<gcXCGiy5t^1i21DaWD!XQ~A!)2h3X&4E-4aEk05OQm z|I8BDyb*0(4};#&mdV~5jzPl^#%i{X_6|fi77J$oYp(00PolbB^l*fhr9VlIV7^Eo z2}MhfA5;iPJlKbVU9Y3Hyqmp?Ei{(=Du>XmU;8+c{GmwzVE}RcA0*iSmIe}zN2B3b zJRXjdK*7b);xHU=fEYX)j>ln1GyMGznm~X<35Ntb+J8^5_4n8M5q|Vt%W;@B2>|5* z$}Wy3zzG;}I3BDCK^zYk$DqKjSptRw{D@;E;COK)T!MgvizC5(h)*mUPLP0TfO|l) zIB_g!g9bSUE`f#UiGwnjC#b`Si$e(p<<RP_{=oum$AMN@v;=8?jzc4XL~wAdIJkzm z1^adkpo9hS0(1{8Ar2QO01m<OW5H-RzzG%$_VzfyDISb~2ki(zs^A_0XeN#T>H&uk zO$?AW2I3F{#smzkTetu98m^<UM(=+_3&;j=DUSIePYJ*^kSQd00s+V!$Po|p1CIi7 zUei`EJ3K}Ljsr7-^aTq^2MHvG0c8mw3A_Xxg9G$Hds2TSkcI>n2HnSjwS)SQqyk-I z!L<Yq=pjfzf{>p49A|C3KlA_54F3zg|F5*ne+HhA&0RBXB+Ez&MZw_^u$HUGM88Z3 z8ZzN)jsMN#1ASZ{q+&351Eg*datljNP8e)lB@reRW+o>ak<d!T+Dcy9Cejun!cP~I z$RnmmXN`2Va=C6{XGLve0!P8Co|1WeW{LgNd!g6c<bUG@JiQxu!I$YGb&*)))=Mg3 za*45#3g>ons*ycx8#_%q9&AD_w<A-0YvJB-VFt2ClMH(|8F+)+{FehU@c6GESoy*| zhB_pTQech+<;lHv8T%4SPjSN!4tnTR1y)M3pbcJGhJ{n6(~E=|%u^?4S>P&F^rO<= zXBD{}^9dObFev!Av~|CZudk=flUA+|oA9-MCI3wzz$mQeODjsAr4CL*F<Z^2qpQ@p zLJWAia;%_x+x<H2Es-3`r$6AFG>|iuXm)2^q08|}b%&5<bT4KyAAd)yYo>)g3%o;d zrexmp%v1F*pF9J|3cdwUzhr#M!)Lq+hkv`tL4$+Q^(^9aTNxBlH23Ub9Jy>;LTu6x z-}hN@cI}k1WL{A)ZjPrpp4ZYY^j1SwQj@VlthShs?v{_h`^PEpbm7@+$tA^I&xb8M zcI-VG%t5f2bd1`8BMzO;5lc`AX%v`CKH(EMS);?{@5JThOUbO*VnORv#i3<fCY=$Z zO+LJGvSCJa^xCDx$LZY5+^N%ZQl)M~f=<4CU0&?y?ow>ib{bY?Ug_h?IUd8My?#Ad zmTo&b?L_iI?E@FKky-E^H3@!Ss3f8BG&(!Oy}D_MQI5=@Y!lJ^Z7dC*&h?VPK-wJK zz@{ihwj+Ma`%MV{?eQ(<H_AAD4KE<`fm#EPkoL>9LFvR2r<vMYp@PCiqH+pi2$QE8 zC%Xj(vKvN?b}b1ME684)PHEF`T;eEY>kz%I+QEEB6h^7XD)SjF$j;Z@(LE{YZ<!=Z zahpk7h{Jzt92xcPp=18>+GpydxY4he<6?I(?Ws@EIIpD^FQfidc<kf#1T697USaR$ zK(9PDr>qtlcDV7~=UcA}3-Rt@m5Ed<@w!hq9Pui~=u(rtz+Nt<mwSt~%IZc26Usu9 zFDp=u8wd9gORN6j(KH?@3Z36?$<cF0D;<{?YF8F*ZPVbt^guK6Y*+(}?v<bf+We%8 z&jxAvb5yl_ryrD<;%9d&Wi4Yw;_I9C?I91>w%!AKS`^G2B5}Xy-2HJn368o5+q4uB zdRGU5djZjB>pD|Qvn?O>rS~m<->PgHnDyr>fN10I3?~M}AnVr`r!P_XQjUHq2xbls z_I;8%L6vuM=5<*7F_>c6;d3d`90`ugw!06B#);KVtGh;WFD$jdB3UmP3B1UrkJVk4 zK5JNO-&$SMo5~E=NPxw~U1}1b`%a(qN{na1+WEjmem|K2i$fPeS;$-2ShJi>B=0q( zM17UcAwMw8>{V!dhsT;-jiJi(1^cYx;_>DkaJ$Qi=V0cCBRNjW&tFx&6|`h*XbkU~ z=27>!5TzR%>>Khzjb5UZ<6bV}ACvgYw8ZK2d^4GKEb48kR_2obFv=1|a%=G;t+%5O z{-Y-Btogz(OWm=JFRn02*`44XBvUE3DE9c&(I;?ugWi3PCpz=ftoNmG*`D>|NukF! z@r1XrN{3@u;y(oKJ9$iFZ`Hoo1KSv`ojS&wbs?47o!q-Cqv9L|=X}5AZ61rWPa9K4 zgXH$J23Y*F()aoJ_pcN@6~Ts^EY13tNdIOwQFzRTrO}F!+SY)iSM<v`%}E1)H_~xj zpXfAOd)SNR>Y4hjk7M@vc+=Ruxw^ahRo!{fowiMPuHMuc`7AhA6&Vz~e7@@HrTt;0 zdDM@BRjx`AKVB+L4h+$1F!o@%etot=PEcCpO8?<<y@aB`_i;0P>bG8GJ)^ro6Jk$4 zT|{4W?}`o&`AB(A&ao7sw^yEHc3r+Rr*=ibCgRBBCC_(k_JJ#82d2a^o6Hq@ANDu? z8;#v)X0-I~xhkRPr(Uy}y&;=&KAujeZ~n<$v4tk)0sI<5=!O8tr$-v}Lt9N5Yer)a zDW2jzfO?M+k!cz2J}`c_#gMIrJ^#vOT~4c^Zw{2z97F`4@Z+toFWS<3w=ccPVoI{u zi?z7vuD+MEry67PAo5ytgZvf4?S5KpB8BWvFwN742_=%Ha2J08*5OBFN|gPaF;6VA zE)*xkG<xyo!Y)xAvFLltt#|&kaC|Q<F|+q!Rok0_iBG-+Ma06J+$#Sd`YDZ~2b0-> zA}0zJcC~%bl=4&Ozdx75%529-rJtM@n;<D;6?8{#CBs(u^Ou&6#cy=%`^@%lBEP?l zf6!o0y8ba1)swhHAy3mf!5*OC{cN_lHFjy`E$lJ*nJ`7Tq^PIvBORth;a3aIhsuU# zlegFV)n9x4*oT`#f{9)2>2^b{T=Qz)`&)f^?6xdk$BCTbnxZ&h4I>12`fEPwpZ4Lx zQ3m!o>)7d{g*iQ29#R?jJa0~J(8;+#H*MCz(0rG<*LM5$D+!M-gz{_c)>pgsZf_n& zK87-@Krbtbr}5<5R{k{0L;OzkU(7TH`n*}&cVMMB3Zx~nRgF?xTN>$vw|=XBQm1UV zqd=O8#iMpW@muQqQNpXIcS{>Td_L-3QjKIco*ysgj?pUrOh62OmKm8^{z{RXZOXBU z0RJ{<1KY0k^26ZqMo`d(HtNKo@rRITtS*v((NjZ>o<@1sixjzR<22hHN_(jzq@Zo+ zAO)Fb3?us{qyKH>hTV8xg+bo|A!8AioF$B7FKpb78VX+%nGTC_YKm-a+tQWj0pm-j zCd&w-FW+R)zYWVU$c=NBxg>Q7vM+&Yr#YK1e2yDkv=K~L`aUg-ZaEyR9!a(j;gejF zBMo=lOS{rFG-M?;=J!1PNn2gH5`wi=sN<UO!$IZclH{nW63NE=24tG)huqZjVOnu1 z6Z<u|?$D(-lt)e^20dgXU~{+nL}@%=c-iA%0(;`&vm$k0wcigX&3VP}T{q`NPCfSV z<=r}&;cpKPpOD_S+bj^N!of0X&?OgLYIbYksKTdhcXpIKkatp_C>4}`?h~LR=EnJi ziP7e+;b(2V_tTx2n)e53WmqbPjAw$RQi|X1xFY`k<g7~X;|qljyH7S72~G)E3>xfJ zX0g$(Fm^lNlRk58UygT}Hy8X}|G6;zaVw*OQ}j~qB8YyG=J+-`w8{;wbaDUYlTj%j zjwej`e<OEU^p@I0@P8d`0`I(D*>HO5Zb0zWQ|yZ&WW!>$P4YU^E4Oz(rM0kd&`5p4 z%+1a0A6efaKl;eD_d?3&D=p^p_oUf*Y44mC)T2Ba7T8ZK=Dt1Yn|RxaxuZuU;&$ku z;hg;+=9HQ(lH?}q-tXwPyy7VMPgrP2v>J}vMEjUVr$zzOKArxPH|P$Q-FnwCT`E>K z?W`l-Kb<F-paV}gE!mP3Wu(br&GkWPOsw&Pe17TK^w5RO6WdCbb9b|tXQqY-Qg6+Y zlPa31$cQvLd)3D$qay0s4xyboD|jqUoo|#?AhrK#rRnGI>4D$AQsfvKWNad?zl}iA zzdaqwy7!_Kfp3tZ;-s<oCK8zLr<O2KD|1lA<LvGu2QD39xg1faL0=s2KCG%DFGE+$ zd3G4{u!Hlge0%71xzvwbOv(OXFI3zneLdQ%8!#6nws1Bc@yL0W{K@S3XzEr$rgqo( z`3nkF>W1u|h8dok^Z6wmQGFrV<u0YqV&CtM3e`{-*qe0HVE;;)km>%(7s{+fYNH`> zTG%0x1B#cd+OEdyEg{RJKX{hJs`_-c^ruRQCil<WnASYOXuLOBZ%im{0xc_;w`isv zG*h~>Ycw<a(3jM2uVNDy_{s;a^}IC_&`XZ$xe-$-y>cOA{yRnVRTC1NWaCR6a4hkc zo)sK4ZBRBHsS=9a^ivXN#bUTFxLS0SCL1D_+%s%S7+AimEqqW?-FtMrndWByd<6$r z1lMN{gZbMs(+#2TWGcgH#)cIxTkc84O;ujGG16FTK8ES7zsFExmB>k1fsFf@(3srn zTW`EW&{MmF+qzH5#oB!8En6?M=01wuY12r7W*&B-ppvW$5|Y}ZkrP(=jbgR4mO=G7 zsLTgEMpQbTHoA#2vwN@Z<oxiuC+f92_WaQ;=vWKOv_0ePCfc8SoK>6j&hw!JuXBx} znV+T>TEVW-HcCpt_OnwZz4LzjQg+3`+*IpNO#??Se<!QogJET`C22&`3{0?@!7=0Z zBa7AAMsL5}N$`+-DgA+-h88VjtCll}PqYag<ypu!vWe)4$xw+_ddT!z=vrOj!rkh` zhi1)gkq76m?L3f_O+Y^>?99KTdINu61t-iu0apwSI6T=lqc>pFFy*`Zt)u}*xQED! zB2`Je&tsu@N>};U&-o|aIi#5fsY}PbO7CjAeXN}^rAzOVG%a@BDo2~>{mO!x>|q1# z3$llUFJ5s7?b~&z>YVz6TMK4_Qo0qL`NV2MFxS@Y5*7`YZf)yxa3^b!W&Dt-()fw} zYOV<UdwaiK{VP<9T9M#5wYH3>WMiy{y7;3la_4RhvsKOSd_IieER0B*qxF%r)vA7w z{$jXEA&zEN-*d|xAGe$NPUUhJoeA2q1N$#wtgiDu?4phBzSPdlmPGxrbH|s;NUqya z569DMULJTLkumj!lcVy?n@yJHZ-e3A4|q27ka9J7k#`luIMwJMJ|-`v4=xi(Jsn}H zfR&FwZOoKyx7UtIU7Uh1iJGjXjD2hqUj8~*T|KM+`ASqdR^t){9K2piKg}QfbyPYz z<&f9PH1@J4-Zv@tTj)Xl92SuYw&Tce%?nR#D&Cg!6r@FMImgG=HoE_VaY#>^&~RJ1 zQu)VXwAbL<oo9v_CJIvxODgpqN#;wki|0%{{wIItYo*BJ8vbxJl}oS0HoV7Jh2;g- ztS5*4!oMiR+=$D|8upEG`FtksQO)BX_DXI1mv;i&x1K(EjaG9(>#9$f+{n04fEVqj zdCz-`az%HlX|KD`j5ae}*d~8ZyYQ6f)Yn%lk_~ASFX)Y;{pO`Ko$rkxP%Y=~1}o37 zbuY?r-kPG{IopzK?e#23al)*q^`(4H$Jbp`ON_eb>>@Ui<KG6Y;J|pjWhzBhtR9pZ zAh85}Bmu9FMB$*2YYT12<-2CcdLCr!_FR#zBIhmSZRADx4GeO(G0|l<FcogAKi!-| zPBt~M9lZ%Ve;Wd#!Lj^$eq?m-F@pmM;AiMY+fPgrI$E<^zq{^9y{>>)V2MxBY>5w- ze0=Gqkj_q74Xg0#@G&<Vyuf~CL|l=;QYUOaC~}-_>19u1sUkMXLE<DGW`92S&Sx6< z6p#I^RaXZaF#j;P5-ARc^A?-JJFi>xRlvQP7`M~cC$paCqd%xcy>iQINq=xwhQ~cK zBAz%`xIFfuwL`R8TP9km>i+UMXU`l-n39Kz)51BTWn)RR;`JU%oD79?Ia%SWfMtS% zDv>MrJ!|9$Hk(IrrMI$aiX!}+{wAk*z`6dNaYTXh{`KNfj?rLgfYU23r7Eb-sZyUv zCsrMtt-ZBdt2FpVu^hFZAZ1=T6>Aq2!d0V+PS%vR{gMA9-VMhxO6e1P`1*)LynfK# zM#lu=yaV1_nC=$qPP=UZ@mX9~nIzd?O=pgJ<;=7%t9pDq_EEKXCiTg~I-9X=p>`jI zW=>q$sb~Ju=G0Sbw_fK{?4R<B%5G+lg$}fvW3E!p<nc^@qssG^4BbQ#{x&d1gSQsz zXR4*E;ij~ke!%;j*&FpeyUE)Xdk#%}A1H1xoZcU{{gfKx+mb`PQwCN(k?$9>wUQpA zkF)2F=?tvs(Qk2E>1>uSyK^DU3gFfnAMBAH!}4<r_KEDeD5b+~clOc4sF5@=E{hBf za-3<xlMo44NrGHe%#J(xrLSys>G|F%JlPs2mU^QrDMBJW*W#ex-tri3GufVN6rM-! z!|qz2k8^*>V{)y|vQyKu_ZWF^ZcB+tGh97vcY9D)U_2};_wjLI_6Lk{*O)(s^<1S+ zxO+A;Z|u_7oiDZ^sVXk`yrn-Fl22CudjE}}TJk+n<_4Px?Qerx41j#D7n-QP1bF98 z-}()9(t>PiVLqK#v-`^mQT-4VRlZBB^r%;ZlE6ukm;pWK;XW0+s}JUG7qp$7RU2rQ zjBsvNHfu?IV6P-Hih3yh@bv7!XD;65n{6$nTOT3%m$(kU&!cTscyu09*04XiVSjV6 z#S~wDpufTOhP*w`N6xRvHhOcO=BVL!s6#AI6!81kTvvV}V>eJ{%9!Y=n!uKLX4<j6 zbyQ<Y#HeXx8Q%YjT}r{pC^!@8_vpA-G}_fx$=TBW%=Jf&pT?hG%%(J-d}MoFe9Ln3 z{s$BXQ`%fI;oqCz?!JL$$|-z%Q1Ff(yWhJOv(mfOY3gXxCFOHZ*xIKaB!Bd~j4pU0 zbv%(ZTU+@vS6~GtL)yr@e&^(~Dt9F6g#}LFeFMA}?x&bAw&ba)u|KPVX=gRFX*^H- zoN_MZX?N?~>!c;FQ!C_{;S=PWEXv=8&M4f*;7>W`E@aY_ybsCKvJ}z0D{kuYTgl^G zK3L{XCK`TQz#xB@AYaa4pTh^_@ogDe0*6JO@2!a2;l<4%e-L%qUmI1Bb>~`gc=uFg zZhobYUBWZR*2j&f79ET*aWW5Z?*!+xCO>CLm*q{GUcF5hA0$^Uo~Evg3c76-l9lRv ziZ6Bh8(A*ZWFdY}D>vBtB`z|%8l%cbBUCTR3CA~?<==+581S}oz3Sog?s+yM>8Eg1 zoO5ZP6R;P(Z$BQWWss9%x7<M~mtSpj@UGdrONUAxjH-seW7ArewaEFp?PJWyBya!j zDudp{!0j}x52drCjkOX3E2%;d^jeX3&n_;}ObSzHAz4GJ8ebofE8T;1^q4b<alUoL zDsr2&2#0a0aNDgNLWa$UPDtVJZl&__EbY9(lfrgq@bsK*gpI0G@$FVyp@n-NX}5>6 zk4NaRMV_4q*=EN#FGyh(_^IE@$Ow_o%+;$NzEz*{sf!y6602PD?hN;HqbA$|9o7E& z7Wvw9^`G(L$q4o1$EdC`UF7_}t)suW_>$rtwuPYbx(I%kVCHK&)BH>T5w5&6ldLbh z_t3dnGL_vtLHS1LYR=exr?4k0T;~1zVbq6Ac4eq|>^-9{zG#yLd!}FhtoF;`$l_LO z>ww@t7XrMN{7V-BUZ$>J2<3~d43xX+6=w~HSQfZs^TK=5pMSqSg-nrG_$<#SHIJmZ zxwwGuY@F-LY#@Bc_Y_zsi0rBg&_B%hHYU7!fnC=TsrT@#iRMm4%l6BUn-kG@xQ8mV z&fIiKFuZlfSDKo!;)ZPj&B;7h%XcF4^bZalt!!dA5TkL+@BX2hQwj#iq)q1Xw*e<c zVxv8i(bsUJ0<R}Jgev8-=d`@i^IpxoJY{;N%`hK^pr}B_C(-8#9C&vr0;75IqnG)x z-okwsC;Rc;Gh+Ch&&FQIs=}Uob){Gp>+rN7n#&B0uN{7wr8s|fA1fo7=$jC#p&Fi* zdCuJWzM`{U4S_aWEDm<N$vsl+;!-n_XSVzj%RYHs_qNN>>^`_r_sz4{h*l8{iDW`G z1q_jwbNjD`hbCOg-}!X@!u2`Rdh<w2T~pHmN`Jdfrv6v4QOua>E-p_KX6FMkZ?p8! z<$7F<TJ|UAU!wIFy8zjz%`YD-+IJ`jTI?BDzdYf=Ka@ToPlx*8c{@?ZW$Cie;n+DU zsmJ6L_rJZm6x9*<M&yFoz<W)>xh}^WJgm2Bc&)yjIpCsk#jHs<T$wGmdLPZnK6zHp z6UL28Hd#u3W#qm5tUV3_O!O=d+NY5V{*R6WgIhNKLCGOYiMKnNS!Q2J<5((t(T%S+ zpA_??Gwuy^FS{7u)|MN}-t8NZThU>?v)eEI%RgVq#mKI4ZL*+$8?^&K&U)RHxlqp# zjHIVnN#o<kMrxs%hN-@sa)eDc$)?#n+h_iU-BBSl^+mI~j_FK#=$SKYF-6B*Cwpr4 zYXs)QozUO$C;a;8{CGIE|Kte0LB%%0oPebweF(9NwNY>+u5Ka@+j?0VfG;jY_1#@9 z-TtSzr~gQ14G0ApQt*QPKLeovTw~q$8UF<cg#y41Q7A@2p#i`|0>DW&BB5ZvA)!EE zfB@f;SOdERkV77}UXJcI05t+f1lW4H!x8Ro0Psch10|w^mn|sUfp12@Uq@e1_6Eo= zgtx7)EfC5ohza552s(gR6k+S>W9b4wGH`??TtWhlu!bXSKrKMK0GN|K$N*Z(5oBN_ z7dXNdj&K8m0R~_w5a=Vo5Z+)&IKl_a18^7sGEi*=fL~xbe-G6nt?1e-j$cqMAf63S ztxbgXuUIV{cp>s%v0DFe;eUa*FaYDS9=rvP9{&S)3tC9<fUF_V)|{^?1OWQKNU;Ac z9SnelU;*+EiwAHh2r`Ai!z3W648S{}0lp3c@C8tUfJV@Ls67NuBIN*j1A&nKCBfG2 zVL)3bK{VD94tO*YgbEL#nE*};4^UAAfbGEpt;T`D2~fhJ0a^+N0|{Vz0OAQmUE<*7 z9RUIgiUS593>TC`_W_I$4-i%a&>x~H0nk@?@zpvgCrt)JfI&IL#2U5?!hAt}abV)B zG(cN0E~$*c0zrtA5{@82$|Zog!-IN&X95#k9d{Mk1q1_J8*~o`a&aImC?_Qdn*@Xf z2?5HX@kxsY2@nVu2$Uo&9Oy$5${KS}j)F7|8VL(sAR!Tf0%>Yc4iafSpy5^%4EJNr zev(=(0Q0#@0)T&@Za9c5ATfv|NDbDOYb^)d{zTxBC}6?40tDlN*oXAsC;c@AAt@7} z1YQ560x<<4-5^E#K|liFyVeq<2&*~(>A}WCk~Po^NGH}Ml0HB>v6e`>@<S&eeOR9$ zW=Yq82BaHni8OO04#*ww3hBTmNdm$FLV5x4ZR^vTPORmSP{6vwNI6tqmq=^9dLL@@ zGeLR*ttyoN#Bh<^#hT3{S!Xy2siptZypzCE;1V+KVEstWg=E*!&?X$*AlZI!Gz~6b zKfD9LCX#MJHXqm`QhC)SkkAaE6Up=gcopdu$w2@~ktjg^10efIH*5j)aJA$D9+B0O zCD4S`k~JJ?H>n+D>cLD&WgGBNKqVM(9Hir7Fq$KPLayF*1)#~*(yGq^m`zeIcK``o zEx7?$<Z8(S@^U0f-awI7>%1U$N9y4No`Tg95vbd0Y1OX*OdzR608n^R>6b0uaGnOB zgFjlTpy6P_p-#V=u0QLNN3VX|DGyL>YYy$_N23U9OHd6uBIHqP&46q8;rBK)gEm*| zhJc3rvG%{lU3awdt8)F(ffg_dzt4+Qv8G0wA|ZZ8EGq6^z=8kx@DnWh4@Q4{QVT=; zL_~`LZ4*U8e=*P>Qpp_R{^w~e#;|!9tvff2KHQ1ZZ9deAJB-wA9`YLALPmg5nrsrz z{hBZMX4MA(v4J=>9Bm+wH|cv?{a@Jb)sKLGNdSODe+mns2tHCJI=Z_lK_BhzQ<6l3 z<4q(Eg+_|wfV~t(q6LviK_SwYz&1YC;H%etu9id(7k8qIqZQo4#tv>}Y3&T$GiX90 z1yJ+rTcE_iKM}YCk?0|bK>X?|=4~hDW=j-Ww}k#)wstUJS+OvH4*u~2o(l(_7CZRQ zItU#P{ormt>QFcg9w^wxIxJ*;eyhVFA<=Ja2PXPQUmOa0YJP7AP`DfGz!gB?{$7V6 z0O3NvpZp<_K$gGPp`q7@8{469C}6EO)**qz1<w`q`$Z2!0I$e@ufqb6`)_ps^b2$y z`u*yQM*lev;0S&n7lpwAboa)-C=BKgdLY(@lxf2lC@f^{H`XDs62MabR)<4Dc5*{s zByg+0(?bG~@*nhYIQ$=T!-+$->o<B5kOkdX2b|%bbp*)1{?<+cV9$T6BcK7o`u93K zgcaV{mq385@o#nFAXNOVP8<!{{f+I!AyoG7b>e@l5mExRNgWPE2fy_Nfc@X=K=AR$ zxF{qFgsvO=g0D*ckTVoT{jQTJ(D{$PDC{44fI@*c@xPCOMnawu`u)^Xu=jy{+i!IQ z<nOXV;jrtUU!s?#ql>K<=|4hHce8VclPn!@n)>eUkbxw*G6Tl|TVP~Xt*@mQkz{sI PAUeju1O$|IRAB!P)4D#0 literal 0 HcmV?d00001 diff --git a/exercises/ex10_solution/classical_ising-mag2.pdf b/exercises/ex10_solution/classical_ising-mag2.pdf new file mode 100755 index 0000000000000000000000000000000000000000..30c7457e9fa9d905afd3453a15b8f7adfb64ca20 GIT binary patch literal 16971 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 literal 0 HcmV?d00001 diff --git a/exercises/ex10_solution/classical_ising-mag_error.pdf b/exercises/ex10_solution/classical_ising-mag_error.pdf new file mode 100755 index 0000000000000000000000000000000000000000..da2ef9ce5c21acba312108676b8e10a01be5583d GIT binary patch literal 14214 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 literal 0 HcmV?d00001 diff --git a/exercises/ex10_solution/classical_ising-mag_tau.pdf b/exercises/ex10_solution/classical_ising-mag_tau.pdf new file mode 100755 index 0000000000000000000000000000000000000000..59a4905418d4dc10e82e47d3c20b81b4f88fef50 GIT binary patch literal 15286 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 Zcmz|ODO8&2K;zJg1cZcyj;Su<{{fSyx-b9$ literal 0 HcmV?d00001 diff --git a/exercises/ex10_solution/data/run_classical.sh b/exercises/ex10_solution/data/run_classical.sh new file mode 100755 index 0000000..55e055b --- /dev/null +++ b/exercises/ex10_solution/data/run_classical.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +L=16 +N=1000000 + +for J in 0.1 0.2 0.3 0.4 0.44 0.5 0.6 0.7 0.8 0.9 +do + time ../ising $L $L $J $J $N & + time ../ising $L $L $J $J $N local & + wait +done diff --git a/exercises/ex10_solution/ising.cpp b/exercises/ex10_solution/ising.cpp new file mode 100755 index 0000000..0b301f5 --- /dev/null +++ b/exercises/ex10_solution/ising.cpp @@ -0,0 +1,344 @@ +/***************************************************************************** + * + * Copyright (C) 2010 - 2012 Jan Gukelberger + * Copyright (C) 2010 Brigitte Surer + * + * This software is based on the ALPS Code-02 tutorial, published under the ALPS + * Library License; you can use, redistribute it and/or modify it under + * the terms of the license, either version 1 or (at your option) any later + * version. + * + * You should have received a copy of the ALPS Library License along with + * the ALPS Libraries; see the file LICENSE.txt. If not, the license is also + * available from http://alps.comp-phys.org/. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT + * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE + * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + *****************************************************************************/ + +#include <alps/scheduler/montecarlo.h> +#include <alps/alea.h> +#include <boost/random.hpp> +#include <boost/multi_array.hpp> +#include <iostream> +#include <sstream> +#include <vector> +#include <map> +#include <cmath> +using namespace std; + + +class Simulation +{ +public: + Simulation(double Jy, double Jx, size_t M, size_t L, std::string output_file, bool local) + : eng_(42) + , rng_(eng_, dist_) + , localUpdates_(local) + , spins_(boost::extents[M][L]) + , energy_("E") + , magnetization_("m") + , abs_magnetization_("|m|") + , m2_("m^2") + , m4_("m^4") + , filename_(output_file) + { + L_[0] = M ; L_[1] = L ; + J_[0] = Jy; J_[1] = Jx; + exp2j_[0] = exp(-2*Jy); + exp2j_[1] = exp(-2*Jx); + + // Init random spin configuration + for(unsigned i = 0; i < L_[0]; ++i) + { + for(unsigned j = 0; j < L_[1]; ++j) + spin(make_pair(i,j)) = 2 * randint(2) - 1; + } + } + + void run(size_t ntherm,size_t n) + { + thermalization_ = ntherm; + sweeps_=n; + // Thermalize for ntherm steps + while(ntherm--) + step(); + + // Run n steps + while(n--) + { + step(); + measure(); + } + + //save the observables + save(filename_); + + // Print observables + // std::cout << abs_magnetization_; + std::cout << abs_magnetization_.name() << ":\t" << abs_magnetization_.mean() + << " +- " << abs_magnetization_.error() << ";\ttau = " << abs_magnetization_.tau() + << ";\tconverged: " << alps::convergence_to_text(abs_magnetization_.converged_errors()) + << std::endl; + std::cout << energy_.name() << ":\t" << energy_.mean() + << " +- " << energy_.error() << ";\ttau = " << energy_.tau() + << ";\tconverged: " << alps::convergence_to_text(energy_.converged_errors()) + << std::endl; + std::cout << magnetization_.name() << ":\t" << magnetization_.mean() + << " +- " << magnetization_.error() << ";\ttau = " << magnetization_.tau() + << ";\tconverged: " << alps::convergence_to_text(magnetization_.converged_errors()) + << std::endl; + } + + void step() + { + switch( localUpdates_ ) + { + case false: cluster_step(); + case true: local_sweep(); + } + } + + void cluster_step() + { + // printSpins(); + vector<TodoItem> todo; + set<Site> flipped; + + // Pick random site k=(i,j) + Site x = randsite(); + Spin s = spin(x); + flip(x); + flipped.insert(x); + addNeighbors(x,todo); + + while( !todo.empty() ) + { + TodoItem t = todo.back(); + todo.pop_back(); + + if( spin(t.x) != s || flipped.count(t.x) ) continue; // do not do anything if the spins where not parallel or if the potential one (t) is already added to the cluster + + if( rng_() > exp2j_[t.dir] ) + { + flip(t.x); + flipped.insert(t.x); + addNeighbors(t.x,todo); + } + } + } + + void local_sweep() + { + for( size_t i = 0; i < nsites(); ++i ) + { + // Pick random site k=(i,j) + Site x = randsite(); + Spin s = spin(x); + + // Measure local energy e = -s_k * sum_{l nn k} s_l + Site l(x.first,(x.second+L_[1]-1)%L_[1]), d((x.first+L_[0]-1)%L_[0],x.second), + r(x.first,(x.second +1)%L_[1]), u((x.first +1)%L_[0],x.second); + int ey = s * (spin(u) + spin(d)); // up + down + int ex = s * (spin(l) + spin(r)); // left + right + double p = 1; + switch( ey ) + { + case -2: p /= (exp2j_[0]*exp2j_[0]); break; + case +2: p *= (exp2j_[0]*exp2j_[0]); break; + default: break; + } + switch( ex ) + { + case -2: p /= (exp2j_[1]*exp2j_[1]); break; + case +2: p *= (exp2j_[1]*exp2j_[1]); break; + default: break; + } + + // Flip s_k with probability exp(2 beta e) + if(p > 1 || rng_() < p) + flip(x); + } + } + + void measure() + { + int E = 0; // energy + int M = 0; // magnetization + for(size_t i = 0; i < L_[0]; ++i) + { + for(size_t j = 0; j < L_[1]; ++j) + { + E -= J_[0]*spins_[i][j]*spins_[(i+1)%L_[0]][j] + J_[1]*spins_[i][j]*spins_[i][(j+1)%L_[1]]; + M += spins_[i][j]; + } + } + + // Add sample to observables + energy_ << E/double(nsites()); + double m = M/double(nsites()); + magnetization_ << m; + abs_magnetization_ << fabs(m); + m2_ << m*m; + m4_ << m*m*m*m; + } + + void save(std::string const & filename){ + alps::hdf5::archive ar(filename,alps::hdf5::archive::REPLACE); + ar << alps::make_pvp("/parameters/L", L_[1]); + ar << alps::make_pvp("/parameters/M", L_[0]); + ar << alps::make_pvp("/parameters/Jx", J_[1]); + ar << alps::make_pvp("/parameters/Jy", J_[0]); + ar << alps::make_pvp("/parameters/SWEEPS", sweeps_); + ar << alps::make_pvp("/parameters/THERMALIZATION", thermalization_); + + ar << alps::make_pvp("/simulation/results/"+energy_.representation(), energy_); + ar << alps::make_pvp("/simulation/results/"+magnetization_.representation(), magnetization_); + ar << alps::make_pvp("/simulation/results/"+abs_magnetization_.representation(), abs_magnetization_); + ar << alps::make_pvp("/simulation/results/"+m2_.representation(), m2_); + ar << alps::make_pvp("/simulation/results/"+m4_.representation(), m4_); + + alps::RealObsevaluator m = abs_magnetization_; + alps::RealObsevaluator m2 = m2_; + alps::RealObsevaluator m4 = m4_; + + alps::RealObsevaluator u2("Binder Cumulant U2"); + u2 = m2/(m*m); + ar << alps::make_pvp("/simulation/results/"+u2.name(), u2); + + alps::RealObsevaluator chi("Connected Susceptibility"); + chi=nsites()*(m2-m*m); + ar << alps::make_pvp("/simulation/results/"+chi.name(), chi); + + alps::RealObsevaluator u4("Binder Cumulant"); + u4 = m4/(m2*m2); + ar << alps::make_pvp("/simulation/results/"+u4.name(), u4); + } + +protected: + typedef signed char Spin; + typedef std::pair<unsigned,unsigned> Site; + typedef unsigned Direction; + struct TodoItem { Site x; Direction dir; TodoItem(unsigned i=0, unsigned j=0, Direction d=0) : x(i,j), dir(d) {} }; + + // Random int from the interval [0,max) + int randint(int max) const + { + return static_cast<int>(max * rng_()); + } + Site randsite() const + { + return Site(randint(L_[0]),randint(L_[1])); + } + size_t nsites() const + { + return L_[0]*L_[1]; + } + Spin& spin(Site x) + { + return spins_[x.first][x.second]; + } + const Spin& spin(Site x) const + { + return spins_[x.first][x.second]; + } + void flip(Site x) + { + spin(x) *= -1; + } + void addNeighbors(Site x, vector<TodoItem>& n) const + { + n.push_back(TodoItem(x.first,(x.second+L_[1]-1)%L_[1],1)); // left + n.push_back(TodoItem(x.first,(x.second +1)%L_[1],1)); // right + n.push_back(TodoItem((x.first+L_[0]-1)%L_[0],x.second,0)); // down + n.push_back(TodoItem((x.first +1)%L_[0],x.second,0)); // up + } + + void printSpins() const + { + for( unsigned i = 0; i < L_[0]; ++i ) + { + for( unsigned j = 0; j < L_[1]; ++j ) + cout << (int(spins_[i][j]) > 0 ? 'x' : '.'); + cout << "\n"; + } + cout << endl; + } + +private: + typedef boost::mt19937 engine_type; + typedef boost::uniform_real<> distribution_type; + typedef boost::variate_generator<engine_type&, distribution_type> rng_type; + engine_type eng_; + distribution_type dist_; + mutable rng_type rng_; + + static const unsigned DIMENSIONS = 2; + size_t L_[DIMENSIONS]; + double J_[DIMENSIONS]; + size_t sweeps_; + size_t thermalization_; + bool localUpdates_; + + boost::multi_array<Spin,DIMENSIONS> spins_; + double exp2j_[DIMENSIONS]; + + alps::RealObservable energy_; + alps::RealObservable magnetization_; + alps::RealObservable abs_magnetization_; + alps::RealObservable m2_; + alps::RealObservable m4_; + + std::string filename_; +}; + +string usage(const std::string& prog) +{ + return "usage: " + prog + " M L Jy Jx N"; +} +int main(int argc, const char** argv) +{ + if( argc != 6 && argc != 7 ) + { + cerr << usage(argv[0]) << endl; + return -1; + } + + size_t M, L, N; + double Jy, Jx; + bool local = false; + try + { + using boost::lexical_cast; + M = lexical_cast<size_t>(argv[1]); // Linear lattice sizes + L = lexical_cast<size_t>(argv[2]); // + Jy = lexical_cast<double>(argv[3]); // coupling constants + Jx = lexical_cast<double>(argv[4]); // + N = lexical_cast<size_t>(argv[5]); // # of simulation steps + if( argc > 6 && argv[6] == string("local") ) + local = true; + } + catch(...) + { + cerr << usage(argv[0]) << endl; + return -1; + } + + + std::cout << "# M: " << M << " L: " << L << " Jy: " << Jy << " Jx: " << Jx << " N: " << N << " local: " << local << std::endl; + + std::stringstream output_name; + output_name << "ising_M" << M << "_L" << L << "_Jy" << Jy << "_Jx" << Jx; + if( local ) output_name << "_local"; + output_name <<".h5"; + Simulation sim(Jy, Jx, M, L, output_name.str(), local); + sim.run(N/5,N); + + return 0; +} diff --git a/exercises/ex10_solution/plot_classical.py b/exercises/ex10_solution/plot_classical.py new file mode 100755 index 0000000..1c3f969 --- /dev/null +++ b/exercises/ex10_solution/plot_classical.py @@ -0,0 +1,53 @@ +import sys, os, re + +import numpy as np +import matplotlib.pyplot as plt +import pyalps +from pyalps.plot import plot + +files = pyalps.getResultFiles(dirname='data') +data = pyalps.loadMeasurements(files , ['|m|','m^2']) + +for d in pyalps.flatten(data): + if re.search(r'_local\.h5$',d.props['filename']): + d.props['update'] = 'local' + else: + d.props['update'] = 'cluster' + + +m = pyalps.collectXY(data, 'Jx', '|m|', foreach=['update']) +m2 = pyalps.collectXY(data, 'Jx', 'm^2', foreach=['update']) + +plt.figure() +plot(m) +plt.xlabel('$\\beta J$') +plt.ylabel('|magnetization|') +plt.legend(loc='best', frameon=False) +plt.savefig('classical_ising-mag.pdf',transparent=True) + + +plt.figure() +plot(m2) +plt.xlabel('$\\beta J$') +plt.ylabel('|magnetization|^2') +plt.legend(loc='best', frameon=False) +plt.savefig('classical_ising-mag2.pdf',transparent=True) + +plt.figure() +for d in m: + plt.plot(d.x,[y.error for y in d.y],label=d.props['label']) +plt.xlabel('$\\beta J$') +plt.ylabel('error') +plt.legend(loc='best', frameon=False) +plt.savefig('classical_ising-mag_error.pdf',transparent=True) + +plt.figure() +for d in m: + plt.plot(d.x,[y.tau for y in d.y],label=d.props['label']) +plt.xlabel('$\\beta J$') +plt.ylabel('autocorrelation time') +plt.legend(loc='best', frameon=False) +plt.savefig('classical_ising-mag_tau.pdf',transparent=True) + + +plt.show() -- GitLab