DFT studies on magnetoelectric multiferroics
September 27, 2007
Title: Density functional studies of multiferroic magnetoelectrics
Author: Nicola A Hill
Source: Annual Review of Materials Research, Vol. 32: 1-37 (Volume publication date August 2002)
Abstract:
Multiferroic magnetoelectrics are materials that are both ferromagnetic and ferroelectric in the same phase. As a result, they have a spontaneous magnetization that can be switched by an applied magnetic field and a spontaneous polarization that can be switched by an applied electric field. In this paper we show that density functional theory has been invaluable both in explaining the properties of known magnetically ordered ferroelectric materials, and in predicting the occurrence of new ones. Density functional calculations have shown that, in general, the transition metal d electrons essential for magnetism reduce the tendency for off-center ferroelectric distortion. Consequently, an additional electronic or structural driving force must be present for ferromagnetism and ferroelectricity to occur simultaneously.
Iterative methods — templates for!
September 8, 2007
Everybody needs an iterative solver at some point or other. Recently, I sent a few links to a friend of mine. I thought I will also maintain the list in this page for future use.
- Templates for the solution of Linear systems: Building blocks for iterative methods. Richard Barrett, Michael Berry, Tony F. Chan, James Demmel, June Donato, Jack Dongarra, Victor Eijkhout, Roldan Pozo, Charles Romine, and Henk van der Vorst. SIAM
- Iterative methods for sparse linear systems. Yousef Saad. SIAM. (via the Wiki page on iterative methods).
- The iterative template library (with non-commerical use license);
- John Burkardt’s page is a very good place too, among many other things, for some of the template source codes (check out the FORTRAN codes);
- Netlib templates page with Matlab, C++, and Fortran codes; and,
- Templates for the solution of algebraic eigenvalue problems: a practical guide. Edited by Zhaojun Bai, James Demmel, Jack Dongarra, Axel Ruhe, and Henk van der Vorst. SIAM.
In case you know of any good resources that I have missed here, leave a note!
Stability of Crank-Nicholson for variable diffusivity
September 7, 2007
Title: Stability analysis of the Crank-Nicholson method for variable coefficient diffusion equation
Author: Charles Tadjeran
Source: Communications in Numerical Methods in Engineering, Vol 23, Issue 1, pp. 29-34, 2006.
Abstract:
The Crank-Nicholson method is a widely used method to obtain numerical approximations to the diffusion equation due to its accuracy and unconditional stability.
When the diffusion coefficient is not a constant, the general approach is to obtain a discretization for the PDE in the same manner as the case for constant coefficients. In this paper, we show that the manner of this discretization may impact the stability of the resulting method and could lead to instability of the numerical solution. It is shown that the classical Crank-Nicholson method will fail to be unconditionally stable if the diffusion coefficient is computed at the time gridpoints instead of at the midpoints of the temporal subinterval. A numerical example is presented and compared with the exact analytical solution to examine its divergence.
In Nature this week
September 7, 2007
A review by Ignazio Ciufolini on Dragging in inertial frames:
The origin of inertia has intrigued scientists and philosophers for centuries. Inertial frames of reference permeate our daily life. The inertial and centrifugal forces, such as the pull and push that we feel when our vehicle accelerates, brakes and turns, arise because of changes in velocity relative to uniformly moving inertial frames. A classical interpretation ascribed these forces to acceleration relative to some absolute frame independent of the cosmological matter, whereas an opposite view related them to acceleration relative to all the masses and ‘fixed stars’ in the Universe. An echo and partial realization of the latter idea can be found in Einstein’s general theory of relativity, which predicts that a spinning mass will ‘drag’ inertial frames along with it. Here I review the recent measurements of frame dragging using satellites orbiting Earth.
Code: Circular hole under uniaxial stress
September 4, 2007
The wonderful guys at WordPress have given a wraparound so that posting source code is easier; it can’t get any better than this. Look out these pages for more phase field codes! For now, as a test, here is the code which will calculate the elastic stress fields around a circular hole in a square plate which is under an uniaxial stress.
/************
This program calculates the elastic stress fields of a circular hole
in a square plate under an uniaxial stress. The stress is applied
along the x-axis. For the expressions used in calculating the stress
fields, see p. 109 of Elasticity by Barber -- Equations 8.74, 8.75, and 8.76.
************/
#include
#include
#include
int main(void){
FILE *fp1, *fp2, *fp3;
double S; /* Applied uniaxial stress */
double a; /* Radius of the circular hole */
double r; /* Distance along the x- or y-axis */
int i;
double s11, s12, s22; /* The 11, 12 and 22 stress fields respectively */
S = 1.0;
a = 2.5;
fp1 = fopen("sigma11_x","w");
fp2 = fopen("sigma22_x","w");
fp3 = fopen("sigma12_x","w");
for(i=0;i<3000; ++i){
r = 0.01*i;
if (r < a){
s11 = s12 = s22 = 0.0;
}
else{
s11 = 0.5*S*(1. - a*a/(r*r)) + 0.5*S*(3.*a*a*a*a/(r*r*r*r) - 4.*a*a/(r*r) + 1.);
s22 = 0.5*S*(1. + a*a/(r*r)) - 0.5*S*(3.*a*a*a*a/(r*r*r*r) + 1.);
s12 = 0.0;
}
fprintf(fp1,"%le %le\n",r,s11);
fprintf(fp2,"%le %le\n",r,s22);
fprintf(fp3,"%le %le\n",r,s12);
}
fclose(fp1);
fclose(fp2);
fclose(fp3);
fp1 = fopen("sigma11_y","w");
fp2 = fopen("sigma22_y","w");
fp3 = fopen("sigma12_y","w");
for(i=0;i<3000; ++i){
r = 0.01*i;
if (r < a){
s11 = s12 = s22 = 0.0;
}
else{
s22 = 0.5*S*(1. - a*a/(r*r)) - 0.5*S*(3.*a*a*a*a/(r*r*r*r) - 4.*a*a/(r*r) + 1.);
s11 = 0.5*S*(1. + a*a/(r*r)) + 0.5*S*(3.*a*a*a*a/(r*r*r*r) + 1.);
s12 = 0.0;
}
fprintf(fp1,"%le %le\n",r,s11);
fprintf(fp2,"%le %le\n",r,s22);
fprintf(fp3,"%le %le\n",r,s12);
}
fclose(fp1);
fclose(fp2);
fclose(fp3);
return 0;
}
At the first go, looks like everything works fine except for (a) the #include things–for which, the stuff in triangular brackets, it seems to consider as html commands, and (b) the greater then signs, which it seem to have some problems showing as greater then signs. Code within the sourcecode wraparound are supposed to be formatted automatically. The language option I chose is cpp, which I assume is C++. Could that be the problem?
Test: <>
#include
Hmm…I guess the wraparound requires a bit of fixing!!!
Test 2:
$features = file_get_contents( 'http://wordpress.com/features/' ); preg_match_all( '|<h3>(.*?)</h3>|is', $features, $why_wp_rocks ); foreach ( $why_wp_rocks[1] as $slick_feature ) $hotness[] = $slick_feature; var_dump( $hotness );
In Nature this week
September 2, 2007
- The US Air Force employee who observed pulsating radio star story makes it to Nature;
- Brendan Maher on the collaboration between physicists who are interested in the study of single molecules and cell biologists; and,
- How small is small enough? Or, what is the smallest size at which a crystal exhibits its solid-state properties?