Mudanças entre as edições de "Usuário:Manoel"

De WikiLICC
Ir para: navegação, pesquisa
(Codigo convertido)
(Codigo convertido)
Linha 5: Linha 5:
 
Olhar (inv(Q)*S' )?
 
Olhar (inv(Q)*S' )?
  
== Codigo convertido ==
+
==Problema da Cavidade==
  
program trabalho1_1      !function [u]=trabalho1_1(n,xp,yp)
+
     Para visualizarmos este problema podemos imaginar uma piscina cheia de água e um vento soprando sobre sua borda,  
  implicit none
+
o estudo fica em analizar o movimento da água dentro da piscina.
!clear
+
     A maioria das simulações numéricas envolvendo problemas da cavidade utilizam as equações de Navier Stoques. As equações
!n=4;
+
de Navier Stokes são equações diferenciais que descrevem o movimento de fluidos. Como por exemplo:
!a1=1;
+
(1) <math>\vec{u}_t + (\vec{u}\cdot \vec {\nabla})\cdot \vec{u}=-\nabla*p + (\frac{1}{Re})\cdot {\nabla}^2\vec{u} </math>
!a2=2;
 
 
!tic;
 
 
  integer,parameter      ::  n=4
 
  integer                ::  i,j
 
  real*8                  ::  xp,yp,fn
 
 
  real*8,dimension(n)    ::  x,y
 
  real*8,dimension(n,n)  ::  XX,YY,deltaX,deltaY,FV
 
  real*8,dimension(n*n,1) ::  Sx_1,Sy_2
 
  real*8,dimension(n*n,1) ::  F,FVV,deltaF
 
  real*8,dimension(n*n,9) ::  S
 
  real*8,dimension(9,n*n) ::  SdF,ST
 
  real*8,dimension(9,9)  ::  Q,invQ
 
  real*8,dimension(9,1)  ::  f_nx1
 
      
 
  xp=0.2
 
  yp=0.3
 
 
 
  !x=linspace(0,1,n);      !partiçao do espaço com n pontos
 
  do i=1,n
 
    x(i)=real(i)/n
 
  end do
 
 
 
  XX=0.D0                  !X=[zeros(n,n)]
 
 
  do i=1,n                  !for i=1:n
 
     XX(:,i)=x(i)          !X(:,i)=x(1,i)        ! as n's linhas igual a primeira
 
  end do
 
  !pause
 
  !=================================================================
 
  do i=1,n                  !y=linspace(0,1,n);         
 
    y(i)=real(i)/n          !partiçao do espaço com n pontos
 
  end do
 
 
  YY=0.D0                  ! Y=[zeros(n,n)] !só com zeros dá
 
  do i=1,n                  !  for i=1:n
 
    YY(i,1)=y(i)          !  Y(i,:)=y(1,i)        ! as n's colunas igual a primeira
 
  end do
 
  !pause
 
  !=================================================================
 
  FN=xp**2+yp**2                      !função nodo onde a1 e a2 são coordenada dos nodos
 
  do i=1,n                            !for i=1:n
 
    do j=1,n                          !  for j=1:n
 
        FV(i,j)=XX(i,j)**2+YY(i,j)**2  !Função da vizinhança
 
    end do
 
  end do
 
 
  FVV=reshape(FV, (/n*n,1/))          !FVV=FV(:)    ! todos os nos vizinhos em forma de coluna
 
 
  F    =0.D0                          !F=zeros(n*n,1)            !F tem n*n linhas e 1 coluna 
 
  F    =FN                            !F(:,1)=FN              !toda primeira coluna é igual a Função nodo
 
  DeltaF=FVV-F                        !coluna Delta
 
 
  !=================================================================
 
  DeltaX=XX-xp                        !DeltaX=X-xp        ! todos oa itens da matriz menos nodo central
 
  Sx_1=reshape(DeltaX, (/n*n,1/))      !Sx_1=DeltaX(:)     ! matriz virou em coluna (vetor)
 
  !=================================================================
 
  DeltaY=YY-yp                        ! todos oa itens da matriz menos nodo central
 
  Sy_2=reshape(DeltaY, (/n*n,1/))      !Sy_2=DeltaY(:)      ! matriz virou em coluna (vetor)
 
  !=================================================================
 
  S(:,1)=Sx_1(:,1)
 
  S(:,2)=Sy_2(:,1)
 
  do i=1,n*n                              !for i=1:n*n;
 
    S(i,3)=(Sx_1(i,1)**2)/2.D0            ! S(i,3)=(Sx_1(i,1)^2)/2
 
    S(i,4)= Sx_1(i,1)*Sy_2(i,1)
 
    S(i,5)=(Sy_2(i,1)**2)/2.D0
 
    S(i,6)=(Sx_1(i,1)**3)/6.D0
 
    S(i,7)=((Sx_1(i,1)**2) *Sy_2(i,1))/2.D0
 
    S(i,8)=(Sx_1(i,1)*Sy_2(i,1)**2)/2.D0
 
    S(i,9)=(Sy_2(i,1)**3)/6.D0
 
  end do
 
 
  !S(:,3)= (Sx_1(:,1).^2)/2
 
  !
 
  !=================================================================
 
  ST= transpose(S)
 
  Q = matmul(ST,S)      !Q=S'*S          ! 1 multiplicar pela transposta para achar matriz quadrada
 
  !NAO TEM                cond(Q)
 
  !W1=inv(Q)
 
 
  !invQ = inv( Q )
 
  !FALTA CALCULAR A INVERSA DE Q
 
  invQ = Q !Apenas para continuar a execucao
 
 
 
  SdF  = matmul( ST,DeltaF )
 
  f_nx1= matmul(invQ ,SdF  )    !f_nx1=inv(Q)*(S'*DeltaF)
 
  print *,f_nx1
 
end program
 
!whos            !mostra os vetores
 
!toc
 

Edição das 15h38min de 18 de maio de 2009

Página Wiki do Manoel.

Testar quando n=3?

Olhar (inv(Q)*S' )?

Problema da Cavidade

    Para visualizarmos este problema podemos imaginar uma piscina cheia de água e um vento soprando sobre sua borda, 

o estudo fica em analizar o movimento da água dentro da piscina.

    A maioria das simulações numéricas envolvendo problemas da cavidade utilizam as equações de Navier Stoques. As equações 

de Navier Stokes são equações diferenciais que descrevem o movimento de fluidos. Como por exemplo: (1) <math>\vec{u}_t + (\vec{u}\cdot \vec {\nabla})\cdot \vec{u}=-\nabla*p + (\frac{1}{Re})\cdot {\nabla}^2\vec{u} </math>