Testing a python file as a direct copy&paste

From KratosWiki
Revision as of 19:16, 28 November 2007 by JMora (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  1. setting the domain size for the problem to be solved

domain_size = 2

    1. ATTENTION: here the order is important
  1. including kratos path

kratos_libs_path = '../../../../libs' ##kratos_root/libs

  1. kratos_libs_path = 'C:/kratosR1/libs' ##kratos_root/libs

kratos_applications_path = '../../../../applications/' ##kratos_root/applications import sys sys.path.append(kratos_libs_path) sys.path.append(kratos_applications_path)

  1. importing Kratos main library

from Kratos import * kernel = Kernel() #defining kernel

  1. importing applications

import applications_interface applications_interface.Import_IncompressibleFluidApplication = True applications_interface.ImportApplications(kernel, kratos_applications_path)

    1. from now on the order is not anymore crucial

from KratosR1IncompressibleFluidApplication import *


  1. defining a model part

model_part = ModelPart("FluidPart");

    1. importing the solver files and adding the variables

import incompressible_fluid_solver incompressible_fluid_solver.AddVariables(model_part)

  1. adding of Variables to Model Part should be here when the "very fix container will be ready"
  1. reading a model

gid_io = GidIO("cavity2d",GiDPostMode.GiD_PostBinary)

    1. gid_io.ReadMesh(model_part.GetMesh())

gid_io.ReadModelPart(model_part) gid_io.WriteMesh((model_part).GetMesh(),domain_size,GiDPostMode.GiD_PostBinary); print model_part

  1. the buffer size should be set up here after the mesh is read for the first time

model_part.SetBufferSize(3)

    1. add Degrees of Freedom to all of the nodes

incompressible_fluid_solver.AddDofs(model_part)


  1. creating a fluid solver object

fluid_solver = incompressible_fluid_solver.IncompressibleFluidSolver(model_part,domain_size) fluid_solver.laplacian_form = 2; fluid_solver.predictor_corrector = True fluid_solver.vel_toll = 1e-3 fluid_solver.time_order = 2 fluid_solver.echo_level = 0


  1. pILUPrecond = ILU0Preconditioner()
  2. fluid_solver.pressure_linear_solver = BICGSTABSolver(1e-9, 5000,pILUPrecond)

pDiagPrecond = DiagonalPreconditioner() fluid_solver.velocity_linear_solver = BICGSTABSolver(1e-9, 5000,pDiagPrecond) fluid_solver.pressure_linear_solver = BICGSTABSolver(1e-9, 5000,pDiagPrecond)

    1. fluid_solver.pressure_linear_solver = SkylineLUFactorizationSolver();

fluid_solver.Initialize()

  1. settings to be changed

Re = 100.0 nsteps = 200 output_step = 1

Dt = 1000.0/Re if(Dt > 0.1):

   Dt = 0.1

out = 0 for node in model_part.Nodes:

   node.SetSolutionStepValue(VISCOSITY,0,1.0/Re)

for step in range(1,nsteps):

   print "line49"
   time = Dt*step
   print time
   model_part.CloneTimeStep(time)
   print "qui"
   print time
   #print model_part.ProcessInfo()[TIME]
   #solving the fluid problem
   if(step > 3):
       fluid_solver.Solve()
   print "li"


   #print the results
   if(out == output_step):
       gid_io.WriteNodalResults(PRESSURE,model_part.Nodes,time,0)
       gid_io.WriteNodalResults(VELOCITY,model_part.Nodes,time,0)
       gid_io.WriteNodalResults(PRESS_PROJ,model_part.Nodes,time,0)
       gid_io.WriteNodalResults(CONV_PROJ,model_part.Nodes,time,0)
       gid_io.WriteNodalResults(NODAL_AREA,model_part.Nodes,time,0)
       gid_io.WriteNodalResults(VISCOSITY,model_part.Nodes,time,0)
       out = 0
   out = out + 1

node = model_part.Nodes[1]

print node

Personal tools
Categories