← Back to team overview

dolfin team mailing list archive

Re: Nonlinear Coupled PDEs, Newton Solver

 

On 11/01/09 11:29 AM, Hatef Monajemi wrote:
Refer to attached file please!

Why are you sending plain text file in binary form? This way you are limiting your audience.

I can't aswer your questions, but I can convert it into more readable format:
=======
Hello

I am trying to figure out how to model a Nonlinear problem in dolfin in which there is more than one variable, say(u,p). There is currently some documents in "demo" and "bench/fem/assembly" which deals with nonlinear problmes, but in both of them there exist just one variable. I was wondering how the coding process changes when there is coupled PDEs (for instance solving Navier-Stokes equation). Based on what I found on threads, I could think of augmenting the solution function by defining subfunctions, However I think something must have been missed since I do not get convergence. I have modeled the same coupled problem assuming linearity witout having any problem, but when a nonlinear term comes in, it is a bit vague for me how to handle it in dolfin setting. The procedure I am following is as follows: (based on nonlinear-poisson demo and other docs)


----------------------------------------------------------
1)Defining fuction for source and BCs
	
2)Define subdomain for BCs

3)Read Mesh and Subdomain marker

4)pseudo time
  real t = 0.0;

5)Source term and initial conditions
  Function Un(mesh,2, 0.0);
  Function Pn(mesh,0.0);
  Function f(mesh,2,0.0);
  XvelNoslip xvelnoslip(mesh);
  YvelNoslip yvelnoslip(mesh);
  VelNoslip  velnoslip(mesh);
  Inflow inflow(mesh,&t);

6)Define SubSystems
  SubSystem velocity(0);
  SubSystem pressure(1);

7)solution vectors
  Function U0;
  Function P0;

8)set up Form
  NonlinearproblemBilinearForm a(U0) ;

  NonlinearproblemLinearForm L_1(Un,U0,Pn,P0,f);


9)Solve system
  Vector x;
  Function u(mesh,x,a);
10)Extract sub functions
  U0 = u[0];
  P0 = u[1];

11)set up boundary condition

  DirichletBC bc0(xvelnoslip,sub_domains,0 , velocity);
  DirichletBC bc1(yvelnoslip,sub_domains,1, velocity);
  DirichletBC bc2(velnoslip,sub_domains,2, velocity);
  DirichletBC bc3(inflow,sub_domains,2, pressure);

12)collect all the BCs
  Array<BoundaryCondition*> bcs(&bc0,&bc1,&bc2,&bc3);

13)parameters for time stepping

  real T = 0.005;
  real k = 0.001;

14)time stepping

  Progress p("Time-stepping");

  while ( t < T )
  {

  NonlinearPDE pde(a,L_1,mesh,bcs);


15) Solve nonlinear problem in a series of steps
    real ds = 1.0; real S  = 3.0;
    pde.solve(u,t,S,ds);

16) Save the Solutions

17) Move to next interval
  p = t / T;
  t += k;
  Un= U0;
  Pn= P0;
  }
-----------------------------------------------------------------------------

I would appreciate if anyone could give me any suggustions on how to consider a "Coupled Nonlinear PDE system" in Dolfin or at least guide me to the right place where I can find some documents on that.

Thanks,
Hatef







--------------------------------------
Hatef Monajemi Graduate Student Dept of Civil and Environmental Eng 2032 MC Building, Carleton University 1125 Colonel By Drive, Ottawa Ontario, Canada, K1S 5B6


------------------------------------------------------------------------

_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev



Follow ups

References