Moderne numerische Methoden der Festkörperphysik Lanczos-ED für die AF Heisenberg-Kette

Relaterede dokumenter
Programmering i C. Lektion september 2009

Programmering i C. Lektion november 2008

Programmering i C Videre med C (2 af 4) 19. marts 2007

Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge.

Programmering i C. Lektion oktober 2008

Programmering i C. Lektion september 2009

Aarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00

Programmering i C. Lektion december 2008

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med

Processer og tråde. dopsys 1

Start på Arduino og programmering

20: NODE *delete_node(node *tree, int value); /* 呼呼建資刪刪開該 */ 21: NODE *find_node(node *tree, int value); /* 尋尋尋定數尋建資 */

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.

Erklæring af variabler. Void indstil (Indstiller starttidspunkt og måleinterval).

! "# $$ &'()*"* +*, & &"*0* & "# % %- %

Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende

ECE 551: Digital System * Design & Synthesis Lecture Set 5

// Definition af porte og funktioner

Metoder og værktøjer til programmering

Unitel EDI MT940 June Based on: SWIFT Standards - Category 9 MT940 Customer Statement Message (January 2004)

Systemkald DM Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/ Afleveret af: Jacob Christiansen,

Help / Hjælp

Kryptologi Homework 1

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

ESP30076 임베디드시스템프로그래밍 (Embedded System Programming)

Programmering i C. Lektion september 2009

DM14-1. Obligatorisk opgave F.06. System Call. Jacob Aae Mikkelsen Ingen andre gruppe medlemmer. 6. marts 2005

TILLÆG. Refleksionskoefficienten for det spejlede punkt y n fås ved:

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

En streng er en sekvens af data af samme type. En tekststreng er en streng af datatypen tegn

Asus computer og hvad man kan gøre ved den. For flere år siden købte jeg en lille maskine der hed Asus Eee Pc 900.

Kursusarbejde 2 Grundlæggende Programmering

Projekt - RoboNet Del Journal.

Introduktion til C programmering

Basic statistics for experimental medical researchers

User Manual for LTC IGNOU

Processer og koordinering. dopsys 1

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index

Udbud på engelsk i UCL. Skabelon til beskrivelse

CERTIFIKAT CERTIFICATE

Kursusarbejde 3 Grundlæggende Programmering

Informationsteori. Hvorledes man bryder en RSA-kode

Processer og koordinering

Det er muligt at chekce følgende opg. i CodeJudge: og

Maskinsikkerhed Risikovurdering Del 2: Praktisk vejledning og metodeeksempler

CERTIFIKAT CERTIFICATE

IBM Network Station Manager. esuite 1.5 / NSM Integration. IBM Network Computer Division. tdc - 02/08/99 lotusnsm.prz Page 1

Vejledende løsninger

Aktiv lytning - som kompetence hos ph.d.-vejledere

PROJEKT 3. The Design Diaries. LINK TIL BLOG: Af Mikkel Borg Svendsen & Sebastian Frank MUL B

Timetable will be aviable after sep. 5. when the sing up ends. Provicius timetable on the next sites.

Generalized Probit Model in Design of Dose Finding Experiments. Yuehui Wu Valerii V. Fedorov RSU, GlaxoSmithKline, US

[ R E P O R T ] 정보통신공학전공 김성태

QUICK START Updated:

ArbejsskadeAnmeldelse

how to save excel as pdf

Side 1 af 9. SEPA Direct Debit Betalingsaftaler Vejledning

Bemærk, der er tale om ældre versioner af softwaren, men fremgangsmåden er uændret.

The purpose of our Homepage is to allow external access to pictures and videos taken/made by the Gunnarsson family.

StarWars-videointro. Start din video på den nørdede måde! Version: August 2012

QUICK START Updated: 18. Febr. 2014

Løsning af skyline-problemet

Løkkestrukturer mm. Trykknap: Button, Se eksempler / Digital / Button. Decision: If: Version 05/ Arduino, Loops, løkker, programfunktioner mm.

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU

Et alfabet er en ordnet mængde af bogstaver og andre tegn

Programmering i C. Kursusintroduktion. Lektion september Målgruppe 2 Indhold 3 Form 4 Materiale. Målgruppe Indhold Form Materiale

Shared space - mellem vision og realitet. - Lyngby Idrætsby som case

Portal Registration. Check Junk Mail for activation . 1 Click the hyperlink to take you back to the portal to confirm your registration

CERTIFIKAT CERTIFICATE

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1

YDEEVNEDEKLARATION. Nr DA

CERTIFIKAT CERTIFICATE

Oracle PL/SQL. Overview of PL/SQL

SEPA Direct Debit. Mandat Vejledning Nets Lautrupbjerg 10 DK-2750 Ballerup

CERTIFIKAT CERTIFICATE

YDEEVNEDEKLARATION. Nr DA

E-PAD Bluetooth hængelås E-PAD Bluetooth padlock E-PAD Bluetooth Vorhängeschloss

Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007

Aalborg Universitet. Borgerinddragelse i Danmark Lyhne, Ivar; Nielsen, Helle; Aaen, Sara Bjørn. Publication date: 2015

Indholdsfortegnelse If-sætningen... 3 Opgaver... 4 OR, AND sammen med if-sætningen... 5 Rand() funktion... 5 Opgave... 5 Include() funktionen...

Fisk en sjælden gæst blandt børn og unge

CERTIFIKAT CERTIFICATE

On the complexity of drawing trees nicely: corrigendum

A multimodel data assimilation framework for hydrology

Sign variation, the Grassmannian, and total positivity

Kursusarbejde 1 Grundlæggende Programmering. Arne Jørgensen, klasse dm032-1a

CERTIFIKAT CERTIFICATE

Elektriske apparater til husholdningsbrug o.l. Sikkerhed Del 1: Generelle krav

LUL s Flower Power Vest dansk version

Heuristics for Improving

CERTIFIKAT CERTIFICATE

CERTIFIKAT CERTIFICATE

// inkluder library kode: #include <LiquidCrystal.h> #include <Serial.h> // Initialiser display LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

LED STAR PIN G4 BASIC INFORMATION: Series circuit. Parallel circuit HOW CAN I UNDERSTAND THE FOLLOWING SHEETS?

Bilag J - Beregning af forventet uheldstæthed på det tosporede vejnet i åbent land Andersen, Camilla Sloth

Before you begin...2. Part 1: Document Setup...3. Part 2: Master Pages Part 3: Page Numbering...5. Part 4: Texts and Frames...

WIO200A INSTALLATIONS MANUAL Rev Dato:

danske karakterer på Lcd

CERTIFIKAT CERTIFICATE

CERTIFIKAT CERTIFICATE

Transkript:

Moderne numerische Methoden der Festkörperphysik Lanczos-ED für die AF Heisenberg-Kette Programmcode gen matrix Lanczos Bedienung des Programms Konvergenz des Lanczos-Verfahrens Grundzustandsenergien der AF Heisenberg-Kette Extrapolation zum thermodynamischen Limes Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 1

Programmcode gen matrix Lanczos #define PROGNAME "gen matrix Lanczos" #define VERSION "0.2" #define DATE "20.06.2007" #define AUTHOR "Nils Bluemer" /* creates tridiagonal matrix (for determination of eigenvalues) code based on gen matrix4ed Version 0.1: only power method implemented NEW (0.2): conf is only created once */ #include <time.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <math.h> #include "nrutil.c" Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 2

void error(char error text[]) /* standard error handler */ { fprintf(stderr,"\n %s run-time error\n", PROGNAME); fprintf(stderr,"--%s--\n",error text); fprintf(stderr,"for general help use option -h\n"); fprintf(stderr,"...now exiting to system...\n"); exit(1); long comp mag(long i, long N) { long mag; mag=0; while (i>0){ mag+=i%2; i/=2; return(2*mag-n); Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 3

void gen conf(int *conf, long i, long N) { long n; for(n=1;n<=n;n++){ conf[n]=i%2; i/=2; void erase(double *v, long size) { long i; for (i=0;i<size;i++) v[i]=0.0; void print ivector(int *v, long size) { Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 4

long i; for (i=0;i<size;i++) printf("%6d",v[i]); printf("\n"); void print dvector(double *v, long size) { long i; for (i=0;i<size;i++) printf("%6lf",v[i]); printf("\n"); long E Ising(int *v, long N, int periodic) { long n, E; E=0; for (n=1;n<=n-1;n++) E+=(2*v[n]-1)*(2*v[n+1]-1); /* sign in v0.3 corrected */ E+=periodic*(2*v[N]-1)*(2*v[1]-1); /* sign in v0.3 corrected */ Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 5

return(e); void printhelp () { printf("**********************************************************\n") printf("%s: prints matrix for 1D Heisenberg model\n",progname); printf("version: %s, %s by %s\n",version,date,author); printf("options: -N# number of spins\n"); printf(" -m# mz sector (0<=m<=N)\n"); printf(" -o open boundary conditions\n"); printf(" -F ferromagnetic model\n"); printf(" -h this help\n"); void randomize vector (double *v, long size, int *flag, int verbosity) { long n; double normsq, norm; Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 6

/* Seed the random number generator */ srand48(time(0) + getpid()); normsq=0.0; for (n=0;n<size;n++) if (flag[n]>0){ v[n]=drand48()-0.5; normsq+=v[n]*v[n]; norm=sqrt(normsq); for (n=0;n<size;n++) if (flag[n]>0){ v[n]=v[n]/norm; if (verbosity>1) printf ("v[%d]=%lf\n",n,v[n]); void copy vector (double *vold, double *vnew, int *flag, long size) { int n; Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 7

for (n=0;n<size;n++) if (flag[n]>0) vnew[n]=vold[n]; void matrix vector (double *v, double *Hv, long size, long N, int *flag, int periodic, int sign, int verbosity, int *conf) { long i,n,base; if (verbosity>1) printf("n=%d\n",n); for (i=0;i<size;i++) if (flag[i]>0){ gen conf(conf,i,n); Hv[i]=E Ising(conf,N,periodic)*v[i]; hamiltonian */ if (verbosity>1) /* diagonal part of Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 8

printf("v[%2d]= %lf\t",i,v[i]); if (verbosity>1) printf("\n"); for (i=0;i<size;i++) if (flag[i]>0){ gen conf(conf,i,n); base=1; for (n=1;n<=n-1;n++){ if (conf[n]!=conf[n+1]) /* spin flip possible */ Hv[i + base*(2*conf[n]-1)]+=2*v[i]; base*=2; if ((periodic>0)&&(conf[n]!=conf[1])) Hv[i - (base-1)*(2*conf[n]-1)]+=2*v[i]; Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 9

int main (int argc, char *argv[]) { char c; long i, it, n, s, size, maxit, N; int mag, verbosity, periodic, sign; int *conf, *flag; double *vold, *vnew, *w, *alpha, *beta; verbosity=1; periodic=1; sign=1; maxit=100; while (--argc > 0 && (*++argv)[0] == - ) while (c= *++argv[0]) switch (c) { case N : sscanf(++argv[0],"%d\n",&n); break; case m : Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 10

sscanf(++argv[0],"%d\n",&mag); break; case o : periodic=0; break; case F : sign=-1; break; case v : sscanf(++argv[0],"%d\n",&verbosity); break; case h : printhelp(); exit(0); /* default: */ /* error( No valid choice ); */ size=1; for (n=1;n<=n;n++) Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 11

size*=2; flag=ivector(0,size-1); vnew=dvector(0,size-1); vold=dvector(0,size-1); w=dvector(0,size-1); alpha=dvector(1,maxit); beta=dvector(1,maxit); conf=ivector(1,n); /****************************************/ for (i=0;i<size;i++) /* mask n with wrong magnetization */ if (comp mag(i,n)==mag) flag[i]=1; else flag[i]=0; randomize vector(vnew,size,flag, verbosity); Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 12

erase(vold,size); beta[1]=1.0; it=0; /* for (j=1;j<=10;j++){ */ do { it++; matrix vector(vnew,w,size,n,flag,periodic,sign,verbosity,conf); alpha[it]=0.0; for (i=0;i<size;i++) if (flag[i]>0){ w[i]-=beta[it]*vold[i]; alpha[it]+=w[i]*vnew[i]; beta[it+1]=0.0; for (i=0;i<size;i++) if (flag[i]>0){ w[i]=w[i]-alpha[it]*vnew[i]; beta[it+1]+=w[i]*w[i]; Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 13

beta[it+1]=sqrt(beta[it+1]); for (i=0;i<size;i++) if (flag[i]>0){ vold[i]=vnew[i]; vnew[i]=w[i]/beta[it+1]; /* while ((it<maxit)); */ while ((it<maxit)&&(fabs(beta[it+1])>0.00000001)); printf("%d\n%lf 0.0\n",it,alpha[1]); for (s=2;s<=it;s++) printf("%lf %lf\n",alpha[s],beta[s]); /****************************************/ /* free ivector(flag,0,size-1); free dvector(vnew,0,size-1); free dvector(vold,0,size-1); free dvector(w,0,size-1); Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 14

free dvector(alpha,1,maxit); free dvector(beta,1,maxit); free ivector(conf,1,n); */ Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 15

Bedienung des Programms Bedienung analog zu vollem Matrix-Generator gen matrix4ed; hier Ausgabe der Lanczos-Vektoren bei Verbosität 2 (-v2). Hilfeseite: nils/nummeth> ~/C/gen_matrix_Lanczos_v2 -h ********************************************************** gen_matrix_lanczos: prints matrix for 1D Heisenberg model Version: 0.2, 20.06.2007 by Nils Bluemer options: -N# number of spins -m# mz sector (0<=m<=N) -o open boundary conditions -F ferromagnetic model -h this help Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 16

Konvergenz der Lanczos-Prozedur (8-Spin AF Heisenberg) Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 17

Initialisierung mit anderem (Zufalls-)Startvektor: Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 18

Vergleich mit exakten Eigenwerten Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 19

Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 20

Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 21

Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 22

Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 23

Berechnung der Grundzustandsenergie Ergebnisse (AF Heisenberg, periodische Randbedingungen): # N E E/N 14-25.05419842-1.78958560 2-6.00000013-3.00000006 15-26.13467083-1.74231139 3-3.00000027-1.00000009 16-28.56918547-1.78557409 4-7.99999936-1.99999984 17-29.73408089-1.74906358 5-7.47213642-1.49442728 18-32.09099668-1.78283315 6-11.21110254-1.86851709 19-33.32195393-1.75378705 7-11.42071722-1.63153103 20-35.61754605-1.78087730 8-14.60437393-1.82554674 21-36.90161193-1.75721962 9-15.18919956-1.68768884 22-39.14752279-1.77943285 10-18.06178620-1.80617862 23-40.47521438-1.75979193 11-18.87574562-1.71597687 24-42.68005795-1.77833575 12-21.54956379-1.79579698 25-44.04422642-1.76176906 13-22.51833756-1.73217981 Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 24

Extrapolation zum thermodynamischen Limes Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 25

Moderne numerische Methoden der Festkörperphysik - Lanczos ED SS 2007 Nils Blümer (Univ. Mainz) 26