Sedimentación

prev.gif (1231 bytes)home.gif (1232 bytes)next.gif (1211 bytes)

Fenómenos de transporte

Difusión
Difusión
Medida del coeficiente 
de difusión
Simulación de la difusión

Movimiento browniano
marca.gif (847 bytes)Sedimentación
Constante Boltzmann
Sedimentación

java.gif (886 bytes)Actividades

Referencias

Código fuente

 

Sedimentación

El fenómeno de la sedimentación está basado en el movimiento browniano en un campo de fuerzas externo (campo gravitatorio), y está descrito desde el punto de vista macroscópico por la ecuación de Smoluchowski, que es semejante a la que describe el fenómeno de la difusión

Donde n es la concentración de partículas de soluto en un punto x del medio, en un instante t determinado, D es el coeficiente de difusión, y l se denomina velocidad de arrastre.

En nuestro modelo, se supone que las partículas térmicas (medio) y las partículas brownianas (soluto) están encerradas en un recinto. Las partículas térmicas están distribuidas uniformemente en el recinto y se mueven con cierta velocidad, la misma en todas las direcciones. Las partículas brownianas se mueven bajo la acción de su propio peso y de los choques con las partículas térmicas.

El programa pregunta por la masa de las partículas brownianas (tomando como unidad la masa de las partículas térmicas), la velocidad (media) de las partículas térmicas que estará en relación con la temperatura del medio, y la intensidad de la fuerza externa aplicada sobre las partículas brownianas.

Podemos elegir entre diversas situaciones iniciales: todas las partículas brownianas en la parte inferior, en la parte superior o distribuidas al azar en el recipiente que las contiene.

Podemos observar que la distribución de partículas brownianas en el estado estacionario, después de cierto tiempo, es el compromiso entre dos efectos contrapuestos: el campo gravitatorio que tiende a agrupar las partículas en el fondo del recipiente y la difusión que tiende a esparcirlas uniformemente por todo el volumen del recipiente.

 

Actividades

Se introduce

  • La masa de las partículas brownianas, en el control de edición titulado Masa browniana
  • La velocidad de las partículas térmicas, en el control de edición tituladoVelocidad térmicas
  • La masa de las partículas térmicas se ha fijado en la unidad
  • Las partículas brownianas parten del reposo
  • La fuerza externa
  • Se elige la distribución inicial de las partículas en el recinto cerrado
Se pulsa en el botón titulado Empieza para comenzar la simulación.

Modificar una o más variables a la vez y observar los resultados.

SEdimentacionApplet1 aparecerá en un explorador compatible con JDK 1.1

 

Referencias

Minowa H., Toya D., Mishima N. Model expriment illustrating sedimentation by microcomputer. Eur. J. Phys. 3 (1982) pp. 239-244

 

Código fuente

import java.util.*;
public class Sistema {
	final int nParticulas=500;
//dimensiones de la región donde se mueven las partículas
	int ancho;
	int alto;
//masa de las partículas térmicas
	final double Mt=1.0;
//masa de las partículas brownianas
	double Mb;
//velocidad de las partículas térmicas
	double Vt;
//intervalo de tiempo
	final double dt=1.0;
//Fuerza externa
	double Fa;
//Posición de las partículas
	public double[] X, Y;
//Velocidades de las partículas
	double[] VX, VY;
//números al azar
	Random rnd=new Random();

public Sistema(double Vt, double Mb, double Fa, int eleccion, int ancho, int alto) {
	this.ancho=ancho;
	this.alto=alto;
	this.Vt=Vt;
	this.Mb=Mb;
	this.Fa=Fa;
//estado inicial
	X=new double[nParticulas];
	Y=new double[nParticulas];
	VX=new double[nParticulas];
	VY=new double[nParticulas];
	for(int i=0; i<nParticulas; i++){
		VY[i]=VY[i]=0;
	}
//estado inicial
	switch(eleccion){
		case 0: //arriba
			for(int i=0; i<nParticulas; i++){
				Y[i]=0;
			}
			break;
		case 1: //abajo
			for(int i=0; i<nParticulas; i++){
				Y[i]=alto;
			}
			break;
		case 2: //en medio
			for(int i=0; i<nParticulas; i++){
				Y[i]=alto/2;
			}
			break;
		case 3: //al azar
			for(int i=0; i<nParticulas; i++){
				Y[i]=(int)(alto*rnd.nextDouble());
			}
			break;
		default:
			break;
	}
//distribución al azar en el eje horizontal
	for(int i=0; i<nParticulas; i++){
		X[i]=(int)(ancho*rnd.nextDouble());
	}
}
public void evolucion(){
	double Ux, Uy, angulo;
	for(int i=0; i<nParticulas; i++){
		angulo=2*Math.PI*rnd.nextDouble();
		Ux=VX[i]-Vt*Math.sin(angulo);
		Uy=VY[i]-Vt*Math.cos(angulo);
		angulo=2*Math.PI*rnd.nextDouble();
		VY[i]+=(Mt/(Mt+Mb))*(Uy*(Math.cos(angulo)-1)-Ux*Math.sin(angulo))+Fa*dt;
		VX[i]+=(Mt/(Mt+Mb))*(Ux*(Math.cos(angulo)-1)+Uy*Math.sin(angulo));
		X[i]+=VX[i]*dt;
		Y[i]+=VY[i]*dt;
//condiciones de contorno
		if(X[i]<0){
			X[i]=-X[i];
			VX[i]=-VX[i];
		}
		if(X[i]>ancho){
			X[i]=2*ancho-X[i];
			VX[i]=-VX[i];
		}
		if(Y[i]<0){
			Y[i]=-Y[i];
			VY[i]=-VY[i];
		}
		if(Y[i]>alto){
			Y[i]=2*alto-Y[i];
			VY[i]=-VY[i];
		}
	}
}
}