DISPLAY When a cartesian coordinate system rotates about an axis normal to is x-y plane, the x- and y-direction momentum equations have additional terms representing centrifugal and coriolis acceler- ations. In the present case, these terms are supplied by way of In-Form sources, appropriate to the clockwise rotation about an axis at x=0 and y=0. The boundary conditions correspond to rotation of the grid within a fluid which is wholly at rest, for which the exact solution is of course: for the velocities, solid-body rotation relative to the grid in the anti-clockwise direction; and for the pressure, absence of pressure gradients. An interesting result is found, for which the reason is not perfectly clear: whether the grid is coarse (5*5) or fine (100*100), pressure gradients are in fact absent only when the nominal source terms are multiplied by a factor approximately equal to 1/3. Velocity and pressure fields for the 100*100 case may be seen by clicking here and here. The difference of pressure is 0.74 N/m**2 from bottom-left to top-right, which should be compared with approximately 100 N/m**2 when the factor is zero and approximately -200 N/m**2 when the factor is unity. The reason for this requires to be investigated. ENDDIS Echo DISPLAY / USE settings ************************************************************ IRUNN = 1 ;LIBREF = 369 ************************************************************ Group 1. Run Title TEXT(Rotating coordinates ) ************************************************************ Group 2. Transience STEADY=t ************************************************************ Groups 3, 4, 5 Grid Information nx=5;ny=5 nx=100;ny=100 #unigrid ************************************************************ Group 7. Variables: STOREd,SOLVEd,NAMEd ONEPHS = t SOLVE(P1 ,u1 ,v1 ) store(ugrd,vgrd) ! velocity component s of grid inform7begin REAL(omega,factor) omega=10 ! angular velocity omega=1 factor=0.333 ! multiplication factor for sources CHAR(form) form=:omega:*yg ! formula for ugrd (initial var ugrd is :form:) form=-:omega:*xg ! formula for vgrd (initial var vgrd is :form:) inform7end ************************************************************ Group 9. Material properties enul=0 ************************************************************ Group 11. Initialise Var/Porosity Fields fiinit(p1)= 0.0 inform11begin patch(whole,cell,1,nx,1,ny,1,nz,1,1) form=-:omega:*yg (initial of u1 at whole is :form:) form=:omega:*xg (initial of v1 at whole is :form:) inform11end ************************************************************ Group 13. Boundary & Special Sources ! pressure fixed to zero at all boundary cells ! and one internal cell Patch (north, cell,1,nx,ny,ny,1,1,1,1) coval(north,p1, fixval,0.0) Patch (south, cell,1,nx,1,1,1,1,1,1) coval(south,p1,fixval,0.0) Patch (east, cell,nx,nx,1,ny,1,1,1,1) coval(east,p1,fixval,0.0) Patch (west, cell,1,1,1,ny,1,1,1,1) coval(west,p1, fixval,0.0) Patch (middle, cell,nx/2,nx/2,ny/2,ny/2,1,1,1,1) coval(middle,p1, fixval,0.0) inform13begin ! velocities fixed to negative of grid velocity ! at all boundaries by inform sources using ! the COVAL functiion patch(unorth,volume,1,nx-1,ny,ny,1,1,1,1) (source of u1 at unorth is coval(fixval,-ugrd)) patch(usouth,volume,1,nx-1,1,1,1,1,1,1) (source of u1 at usouth is coval(fixval,-ugrd)) patch(ueast,volume,nx-1,nx-1,1,ny,1,1,1,1) (source of u1 at ueast is coval(fixval,-ugrd)) patch(uwest,volume,1,1,1,ny,1,1,1,1) (source of u1 at uwest is coval(fixval,-ugrd)) patch(vnorth,volume,1,nx,ny-1,ny-1,1,1,1,1) (source of v1 at vnorth is coval(fixval,-vgrd)) patch(vsouth,volume,1,nx,1,1,1,1,1,1) (source of v1 at vsouth is coval(fixval,-vgrd)) patch(veast,volume,nx,nx,1,ny-1,1,1,1,1) (source of v1 at veast is coval(fixval,-vgrd)) patch(vwest,volume,1,1,1,ny-1,1,1,1,1) (source of v1 at vwest is coval(fixval,-vgrd)) ! centrifugal and coriolis accelerations created as ! fixed-flux (by default) inform sources patch (usource,volume,1,nx-1,1,ny,1,1,1,1) (source of u1 at usource is -factor*omega*(omega*xu+2.0*v1)) patch (vsource,volume,1,nx,1,ny-1,1,1,1,1) (source of v1 at vsource is -factor*omega*(omega*yv-2.0*u1)) inform13end ************************************************************ Group 15. Terminate Sweeps LSWEEP = 20 RESFAC = 1.000000E-03 ************************************************************ Group 16. Terminate Iterations lsweep=1000 ************************************************************ Group 17. Relaxation RELAX(P1 ,LINRLX, 5.000000E-01) relax(u1,falsdt,0.1) relax(v1,falsdt,0.1) ************************************************************ Group 20. Preliminary Printout ECHO = T ************************************************************ Group 21. Print-out of Variables OUTPUT(V1 ,Y,Y,Y,N,Y,Y) OUTPUT(u1 ,Y,Y,Y,N,Y,Y) ************************************************************ Group 22. Monitor Print-Out IXMON = nx/2 ; iymon = ny/2 TSTSWP = -1 ************************************************************ Group 24. Dumps For Restarts #maxabs STOP