<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>http://fiscomp.if.ufrgs.br/index.php?action=history&amp;feed=atom&amp;title=Potts_Banho_T%C3%A9rmico</id>
	<title>Potts Banho Térmico - Histórico de revisão</title>
	<link rel="self" type="application/atom+xml" href="http://fiscomp.if.ufrgs.br/index.php?action=history&amp;feed=atom&amp;title=Potts_Banho_T%C3%A9rmico"/>
	<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Potts_Banho_T%C3%A9rmico&amp;action=history"/>
	<updated>2026-04-07T15:03:05Z</updated>
	<subtitle>Histórico de revisões para esta página neste wiki</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Potts_Banho_T%C3%A9rmico&amp;diff=4437&amp;oldid=prev</id>
		<title>Pedhmendes: Criou página com '&lt;source lang = &quot;c&quot;&gt; /*****************************************************************************  *                              Potts Model 2D...'</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Potts_Banho_T%C3%A9rmico&amp;diff=4437&amp;oldid=prev"/>
		<updated>2021-05-16T21:40:19Z</updated>

		<summary type="html">&lt;p&gt;Criou página com &amp;#039;&amp;lt;source lang = &amp;quot;c&amp;quot;&amp;gt; /*****************************************************************************  *                              Potts Model 2D...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang = &amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*****************************************************************************&lt;br /&gt;
 *                              Potts Model 2D                               *&lt;br /&gt;
 *                                Heat Bath				     *&lt;br /&gt;
 ****************************************************************************/&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************&lt;br /&gt;
 *                            	   INCLUDES 			             *&lt;br /&gt;
 ****************************************************************************/&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;math.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;quot;mc.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************&lt;br /&gt;
 *                            	  DEFINITIONS                      	     *&lt;br /&gt;
 ****************************************************************************/&lt;br /&gt;
#define 			L           			100&lt;br /&gt;
#define 			L2          			(L*L)&lt;br /&gt;
#define 			J           			1.&lt;br /&gt;
#define 			KB			        1.&lt;br /&gt;
#define 			TRAN      			1//100000&lt;br /&gt;
#define 			TMAX     			100000&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************&lt;br /&gt;
 *                            GLOBAL VARIABLES                   	     *&lt;br /&gt;
 ****************************************************************************/&lt;br /&gt;
int M, ET;&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************&lt;br /&gt;
 *                                FUNCTIONS 		                     *&lt;br /&gt;
 ****************************************************************************/&lt;br /&gt;
void initialize(int *spin, int **neigh, int **kronecker, int _Q);&lt;br /&gt;
void sweep(int *spin, int **neigh, int **kronecker, int _Q, double _TEMP);&lt;br /&gt;
void states(int *spin, int **neigh, int **kronecker, int _Q);&lt;br /&gt;
void visualize(int *spin);&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************&lt;br /&gt;
 *                         	 MAIN PROGRAM  				     *&lt;br /&gt;
 ****************************************************************************/&lt;br /&gt;
int main(int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
	int *spin, **neigh, **kronecker;&lt;br /&gt;
	int i, mcs;&lt;br /&gt;
	int Q;	&lt;br /&gt;
	double TEMP;&lt;br /&gt;
&lt;br /&gt;
	Q = atoi(argv[1]); 	&lt;br /&gt;
	TEMP = atof(argv[2]);		&lt;br /&gt;
&lt;br /&gt;
	spin = (int*)malloc(L2*sizeof(int));&lt;br /&gt;
	neigh = (int**)malloc(L2*sizeof(int*));&lt;br /&gt;
	kronecker = (int**)malloc(Q*sizeof(int*));&lt;br /&gt;
&lt;br /&gt;
	for(i=0; i&amp;lt;L2; i++)&lt;br /&gt;
	{&lt;br /&gt;
		neigh[i] = (int*)malloc(4*sizeof(int));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for(i=0; i&amp;lt;Q; i++)&lt;br /&gt;
	{&lt;br /&gt;
		kronecker[i] = (int*)malloc(Q*sizeof(int));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	seed = start_randomic();&lt;br /&gt;
&lt;br /&gt;
	initialize(spin, neigh, kronecker, Q);&lt;br /&gt;
	states(spin, neigh, kronecker, Q);&lt;br /&gt;
&lt;br /&gt;
	for(mcs=0; mcs&amp;lt;TRAN; mcs++)&lt;br /&gt;
	{&lt;br /&gt;
      		sweep(spin, neigh, kronecker, Q, TEMP);	&lt;br /&gt;
 	  	states(spin, neigh, kronecker, Q);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	char Arq[100];&lt;br /&gt;
	FILE *arq;&lt;br /&gt;
	sprintf(Arq, &amp;quot;hb_Q%dL%dT%.3lf.dsf&amp;quot;, Q, L, TEMP);&lt;br /&gt;
	arq = fopen(Arq, &amp;quot;w&amp;quot;);&lt;br /&gt;
	fprintf(arq, &amp;quot;#SEED: %ld\n#MCS\tM\tET\n&amp;quot;, seed);&lt;br /&gt;
&lt;br /&gt;
    	&lt;br /&gt;
	for(mcs=0; mcs&amp;lt;TMAX; mcs++) &lt;br /&gt;
	{&lt;br /&gt;
	  	sweep(spin, neigh, kronecker, Q, TEMP);&lt;br /&gt;
	  	states(spin, neigh, kronecker, Q);&lt;br /&gt;
#ifdef VIEW	&lt;br /&gt;
		if(mcs % 10 == 0)&lt;br /&gt;
		{	&lt;br /&gt;
			printf(&amp;quot;set title 'T = %d MCS'\n&amp;quot;, mcs);&lt;br /&gt;
			visualize(spin);&lt;br /&gt;
		}&lt;br /&gt;
#endif&lt;br /&gt;
		fprintf(arq, &amp;quot;%d\t%d\t%d\n&amp;quot;, mcs, M, ET);&lt;br /&gt;
&lt;br /&gt;
    	}&lt;br /&gt;
&lt;br /&gt;
	fclose(arq);&lt;br /&gt;
&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************&lt;br /&gt;
 *                        	INITIALIZATION  			     *&lt;br /&gt;
 ****************************************************************************/&lt;br /&gt;
void initialize(int *spin, int **neigh, int **kronecker, int _Q)&lt;br /&gt;
{&lt;br /&gt;
	int i, j;&lt;br /&gt;
&lt;br /&gt;
     	for(i=0; i&amp;lt;L2; i++)&lt;br /&gt;
       	{&lt;br /&gt;
	   	spin[i]=FRANDOM*_Q;&lt;br /&gt;
     	}&lt;br /&gt;
	&lt;br /&gt;
     	for(i=0; i&amp;lt;L2; i++)&lt;br /&gt;
       	{&lt;br /&gt;
		neigh[i][0] = (i-L+L2)%L2;&lt;br /&gt;
                neigh[i][1] = (i+1)%L + (i/L)*L;&lt;br /&gt;
                neigh[i][2] = (i+L)%L2;&lt;br /&gt;
                neigh[i][3] = (i-1+L)%L + (i/L)*L;&lt;br /&gt;
	}&lt;br /&gt;
   &lt;br /&gt;
	for(i=0; i&amp;lt;_Q; i++)&lt;br /&gt;
	{&lt;br /&gt;
		for(j=0; j&amp;lt;_Q; j++)&lt;br /&gt;
		{&lt;br /&gt;
			if(i==j)&lt;br /&gt;
			{&lt;br /&gt;
				kronecker[i][j] = 1;&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				kronecker[i][j] = 0;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
 }&lt;br /&gt;
/*****************************************************************************&lt;br /&gt;
 *                            MONTE CARLO ROUTINE                            *&lt;br /&gt;
 ****************************************************************************/&lt;br /&gt;
void sweep(int *spin, int **neigh, int **kronecker, int _Q, double _TEMP)&lt;br /&gt;
{&lt;br /&gt;
	int i, j, k;&lt;br /&gt;
&lt;br /&gt;
	for (i=0; i&amp;lt;L2; i++) &lt;br /&gt;
	{&lt;br /&gt;
    		int site = FRANDOM*L2;&lt;br /&gt;
		int E1 = 0, E2 = 0, E3 = 0;&lt;br /&gt;
  		int new_state = FRANDOM*_Q;&lt;br /&gt;
  		&lt;br /&gt;
		for(j=0; j&amp;lt;_Q; j++)&lt;br /&gt;
		{&lt;br /&gt;
			E1 = 0;&lt;br /&gt;
&lt;br /&gt;
			for(k=0; k&amp;lt;4; k++)&lt;br /&gt;
			{&lt;br /&gt;
				  E1-=J*kronecker[j][spin[neigh[site][k]]];&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			E2 += exp(-E1/(KB*_TEMP));&lt;br /&gt;
      		}&lt;br /&gt;
	  &lt;br /&gt;
		for(k=0; k&amp;lt;4; k++)&lt;br /&gt;
		{&lt;br /&gt;
			E3-=J*kronecker[new_state][spin[neigh[site][k]]];&lt;br /&gt;
		}	       		&lt;br /&gt;
		double r = FRANDOM;&lt;br /&gt;
		double ALPHA = exp(-E3/(KB*_TEMP))/E2;  &lt;br /&gt;
		&lt;br /&gt;
		if(r&amp;lt;=ALPHA) &lt;br /&gt;
		{     &lt;br /&gt;
		       	spin[site] = new_state;&lt;br /&gt;
		}&lt;br /&gt;
  		&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
      	return;&lt;br /&gt;
}&lt;br /&gt;
/*****************************************************************************&lt;br /&gt;
 *                            	   STATES     		                     *&lt;br /&gt;
 ****************************************************************************/&lt;br /&gt;
void states(int *spin, int **neigh, int **kronecker, int _Q)&lt;br /&gt;
{&lt;br /&gt;
	int i, j;&lt;br /&gt;
&lt;br /&gt;
	ET=0;&lt;br /&gt;
  	M=0;&lt;br /&gt;
&lt;br /&gt;
  	if(_Q!=2)&lt;br /&gt;
	{&lt;br /&gt;
		for (i=0; i&amp;lt;L2; i++)&lt;br /&gt;
		{&lt;br /&gt;
			for(j=0; j&amp;lt;4; j++)&lt;br /&gt;
			{&lt;br /&gt;
				ET-=J*kronecker[spin[i]][spin[neigh[i][j]]];&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			M += spin[i];&lt;br /&gt;
	    	}&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
  	else&lt;br /&gt;
	{&lt;br /&gt;
	    	for(i=0; i&amp;lt;L2; i++)&lt;br /&gt;
		{&lt;br /&gt;
		  	for(j=0; j&amp;lt;4; j++)&lt;br /&gt;
			{&lt;br /&gt;
				ET-=J*kronecker[spin[i]][spin[neigh[i][j]]];&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if(spin[i]==0)&lt;br /&gt;
			{&lt;br /&gt;
				M -= 1;  &lt;br /&gt;
			}&lt;br /&gt;
		  	if(spin[i]==1)&lt;br /&gt;
			{&lt;br /&gt;
				M += 1;  &lt;br /&gt;
			}&lt;br /&gt;
    		}&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
}&lt;br /&gt;
/*****************************************************************************&lt;br /&gt;
 *                           GNUPLOT VISUALIZATION                           *&lt;br /&gt;
 ****************************************************************************/&lt;br /&gt;
void visualize(int *spin)&lt;br /&gt;
{&lt;br /&gt;
  	int i;&lt;br /&gt;
	printf(&amp;quot;unset xtics\nunset ytics\n&amp;quot;);&lt;br /&gt;
	printf(&amp;quot;set size square\n&amp;quot;);&lt;br /&gt;
	printf(&amp;quot;set xrange [0:%d]\nset yrange [0:%d]\n&amp;quot;,L-1,L-1);&lt;br /&gt;
    	printf(&amp;quot;pl '-' matrix w image\n&amp;quot;);&lt;br /&gt;
	for(i=L2-1; i&amp;gt;=0; i--) &lt;br /&gt;
	{&lt;br /&gt;
	    	printf(&amp;quot;%d &amp;quot;, spin[i]);&lt;br /&gt;
		if(i%L == 0)&lt;br /&gt;
		{&lt;br /&gt;
		       	printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
      	}&lt;br /&gt;
	&lt;br /&gt;
      	printf(&amp;quot;e\n\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pedhmendes</name></author>
	</entry>
</feed>