示例#1
0
            fontsize=10)

plt.grid()
plt.axis('scaled')
plt.show()

################################################################################
#
# Problem solving:
#--------------------
#

river = fk.Problem(simutime,
                   triangular_mesh,
                   layer,
                   primitives,
                   slides=slides,
                   fluvial_flowrates=fluvial_flowrates,
                   fluvial_heights=fluvial_heights)

river.solve()

################################################################################
#
# Basic plots of velocity components:
#--------------------------------------
#
#First velocity components are plotted on the middle layer (see *LAYER_IDX*).

x = np.asarray(triangular_mesh.triangulation.x)
y = np.asarray(triangular_mesh.triangulation.y)
示例#2
0
NB_VTK = 10
vtk_writer = fk.VTKWriter(triangular_mesh,
                          scheduler=fk.schedules(count=NB_VTK),
                          scale_h=5.)

################################################################################
#
# Problem definition:
#--------------------

problem = fk.Problem(simutime,
                     triangular_mesh,
                     layer,
                     primitives,
                     slides=slides,
                     fluvial_heights=fluvial_heights,
                     fluvial_flowrates=fluvial_flowrates,
                     tracers=tracers,
                     external_effects=external_effects,
                     vtk_writer=vtk_writer)

################################################################################
#
# Problem solving:
#-----------------

problem.solve()

################################################################################
#
# Basic plots:
示例#3
0
# Writter:
#----------------------
#

vtk_writer = fk.VTKWriter(triangular_mesh,
                          scheduler=fk.schedules(count=10),
                          scale_h=1.)

################################################################################
#
# Problem definition:
#--------------------

problem = fk.Problem(simutime,
                     triangular_mesh,
                     layer,
                     primitives,
                     slides=slides,
                     numerical_parameters=NUM_PARAMS,
                     vtk_writer=vtk_writer,
                     custom_funct={'plot': fk_plt.plot_freesurface_3d},
                     custom_funct_scheduler=create_figure_scheduler)

################################################################################
#
# Problem solving:
#-----------------

problem.solve()
plt.show()
示例#4
0
#

for C, law in enumerate(cases):

    print(" ")
    print(" ")
    print(
        "                          SOLVING CASE:                            ")
    print(" ")
    print(" ")

    problem_l.append(
        fk.Problem(simutime_l[C],
                   triangular_mesh,
                   layer_l[C],
                   primitives_l[C],
                   slides=slides,
                   physical_parameters=PHY_PARAMS,
                   external_effects=external_effects_l[C]))
    problem_l[C].solve()

################################################################################
#
# Plots:
#-----------------
#
#Vertical velocity is plotted for max layer case as well as x velocity profiles
#for each discretization.

plt.rcParams["figure.figsize"] = [12, 8]
示例#5
0
                 triangular_mesh_list[mesh_id],
                 topography=thacker3d_analytic_list[I].topography))

    primitives_list.append(
        fk.Primitive(triangular_mesh_list[mesh_id],
                     layer_list[I],
                     height=thacker3d_analytic_list[I].H,
                     Uinit=thacker3d_analytic_list[I].U,
                     Vinit=thacker3d_analytic_list[I].V,
                     HRhoinit=thacker3d_analytic_list[I].HRho))

    problem_list.append(
        fk.Problem(simutime_list[I],
                   triangular_mesh_list[mesh_id],
                   layer_list[I],
                   primitives_list[I],
                   analytic_sol=thacker3d_analytic_list[I],
                   numerical_parameters=NUM_PARAMS,
                   physical_parameters=PHY_PARAMS,
                   fluvial_heights=fluvial_heights))

    problem_list[I].solve()

    CPUTime_list.append(time.time() - start)

error_H = np.zeros((N_mesh, 2))
error_QX = np.zeros((N_mesh, 2))
error_QY = np.zeros((N_mesh, 2))
error_Rho = np.zeros((N_mesh, 2))
error_H_cumul = np.zeros((N_mesh, 2))
error_QX_cumul = np.zeros((N_mesh, 2))
error_QY_cumul = np.zeros((N_mesh, 2))
NB_VTK = 10

vtk_writer = fk.VTKWriter(triangular_mesh, scheduler=fk.schedules(count=NB_VTK),
                          scale_h=20.)

################################################################################
#  
# Problem definition: 
#--------------------

problem = fk.Problem(simutime, triangular_mesh,
                     layer, primitives,
                     slides=slides,
                     tracers=tracers, 
                     numerical_parameters=NUM_PARAMS,
                     physical_parameters=PHY_PARAMS,
                     vtk_writer=vtk_writer,
                     custom_funct=custom_functions,
                     custom_funct_scheduler=custom_scheduler)

################################################################################
#  
# Problem solving: 
#-----------------

problem.solve()


################################################################################
#
示例#7
0
                          scheduler=fk.schedules(count=10),
                          scale_h=10.)

################################################################################
#
# Problem definition:
#--------------------
#
#Problem is called with basic parameters (simutime, mesh, layer, primitives and
#boundary conditions). See API for other useful ``fk.Problem`` parameters.

river = fk.Problem(simutime,
                   triangular_mesh,
                   layer,
                   primitives,
                   slides=slides,
                   fluvial_flowrates=fluvial_flowrates,
                   fluvial_heights=fluvial_heights,
                   numerical_parameters=NUM_PARAMS,
                   physical_parameters=PHY_PARAMS,
                   vtk_writer=vtk_writer)

################################################################################
#
# Problem solving:
#-----------------

river.solve()

################################################################################
#
# Basic plots:
示例#8
0
torrential_outs = [fk.TorrentialOut(ref=2)]

slides = [fk.Slide(ref=3), fk.Slide(ref=4)]

################################################################################
#
# Problem definition:
#--------------------

if FLOW == 'sub' or 'trans_shock':
    problem = fk.Problem(
        simutime,
        triangular_mesh,
        layer,
        primitives,
        fluvial_flowrates=fluvial_flowrates,
        fluvial_heights=fluvial_heights,
        slides=slides,
        numerical_parameters={'space_second_order': True},
        analytic_sol=bump_analytic,
        custom_funct={'plot': fk_plt.plot_freesurface_3d_analytic},
        custom_funct_scheduler=create_figure_scheduler)

elif FLOW == 'trans':
    problem = fk.Problem(
        simutime,
        triangular_mesh,
        layer,
        primitives,
        fluvial_flowrates=fluvial_flowrates,
        torrential_outs=torrential_outs,
        slides=slides,
示例#9
0
    primitives_l.append(
        fk.Primitive(triangular_mesh, layer_l[C], height=H0, QXinit=1.))

    PHYSICAL_PARAMS = {
        'friction_law': law,
        'friction_coeff': coef,
        'horizontal_viscosity': .02,
        'vertical_viscosity': .02
    }

    problem_l.append(
        fk.Problem(simutime=simutime_l[C],
                   triangular_mesh=triangular_mesh,
                   layer=layer_l[C],
                   primitives=primitives_l[C],
                   numerical_parameters=NUMERICAL_PARAMS,
                   physical_parameters=PHYSICAL_PARAMS,
                   slides=slides,
                   fluvial_flowrates=fluvial_flowrates,
                   fluvial_heights=fluvial_heights))
    problem_l[C].solve()
    C += 1

################################################################################
#
# Plot velocity profile:
#-----------------------
#

if not args.nographics:
    cell = 233  #Middle domain
示例#10
0
#

vtk_writer = fk.VTKWriter(triangular_mesh,
                          scheduler=fk.schedules(count=10),
                          scale_h=20.)

################################################################################
#
# Problem definition:
#--------------------

problem = fk.Problem(simutime,
                     triangular_mesh,
                     layer,
                     primitives,
                     slides=slides,
                     external_effects=external_effects,
                     vtk_writer=vtk_writer,
                     custom_funct={'plot': fk_plt.plot_freesurface_3d},
                     custom_funct_scheduler=create_figure_scheduler)

################################################################################
#
# Problem solving:
#-----------------

problem.solve()

if not args.nographics:
    plt.show()
NB_VTK = 10

vtk_writer = fk.VTKWriter(triangular_mesh,
                          scheduler=fk.schedules(count=NB_VTK),
                          scale_h=2.)

################################################################################
#
# Problem definition:
#--------------------

problem = fk.Problem(simutime,
                     triangular_mesh,
                     layer,
                     primitives,
                     tracers=tracers,
                     slides=slides,
                     vertical_flowrates=vertical_flowrates,
                     numerical_parameters=NUM_PARAMS,
                     vtk_writer=vtk_writer)

################################################################################
#
# Problem solving:
#-----------------

problem.solve()

################################################################################
#
# Plots:
示例#12
0
# Boundary conditions:
#---------------------

slides = [fk.Slide(ref=r) for r in [1, 2, 3, 4]]

################################################################################
#
# Problem definition:
#--------------------

problem = fk.Problem(simutime,
                     triangular_mesh,
                     layer,
                     primitives,
                     slides=slides,
                     numerical_parameters={
                         'ipres': True,
                         'space_second_order': True
                     },
                     custom_funct={'plot': fk_plt.plot_height_2d_3d},
                     custom_funct_scheduler=create_figure_scheduler)

################################################################################
#
# Problem solving:
#-----------------

problem.solve()

if not args.nographics:
    plt.show()
                          scheduler=fk.schedules(count=NB_VTK),
                          scale_h=5.)

txt_writer = fk.TXTWriter([84], scheduler=fk.schedules(count=5))

################################################################################
#
# Problem definition:
#--------------------

problem = fk.Problem(simutime,
                     triangular_mesh,
                     layer,
                     primitives,
                     slides=slides,
                     lagrangian=lagrangian,
                     tracers=tracers,
                     external_effects=external_effects,
                     numerical_parameters={'space_second_order': False},
                     physical_parameters=PHY_PARAMS,
                     vtk_writer=vtk_writer,
                     txt_writer=txt_writer)

################################################################################
#
# Problem solving:
#-----------------
problem.solve()

################################################################################
#
# Post-processing with paraview:
        free_surface=FREE_SURFACE_0,
        QXinit=Q_IN,
        QYinit=0.))

    if PLOT_SOL:
        create_figure = {'plot':fk_plt.plot_freesurface_3d_analytic}
        create_figure_scheduler = fk.schedules(times=[0.99*FINAL_TIME])
    else:
        create_figure = None
        create_figure_scheduler = None

    problem_list.append(fk.Problem(
        simutime_list[I], triangular_mesh_list[mesh_id],
        layer_list[I], primitives_list[I],
        analytic_sol=bump_analytic_list[I],
        numerical_parameters=numerical_params,
        fluvial_flowrates=fluvial_flowrates,
        fluvial_heights=fluvial_heights,
        slides=slides,
        custom_funct=create_figure,
        custom_funct_scheduler=create_figure_scheduler))

    problem_list[I].solve()

    if PLOT_SOL: plt.show()

################################################################################
#
# Errors:
#--------------------
# 
#Errors computed during solving loop are stored in ``error_*`` matrix.
示例#15
0
                       time_dependent_flowrate=flowrate,
                       rectangular_tube=tube,
                       x_flux_direction=1.0,
                       y_flux_direction=0.0)
]

################################################################################
#
# Problem definition:
#--------------------

thacker = fk.Problem(simutime,
                     triangular_mesh,
                     layer,
                     primitives,
                     tracers=tracers,
                     slides=slides,
                     numerical_parameters={'space_second_order': SECOND_ORDER},
                     torrential_outs=torrential_outs,
                     fluvial_flowrates=fluvial_flowrates)

################################################################################
#
# Problem solving:
#-----------------

if not args.nographics:

    # Plot triangular mesh.
    TG = thacker.triangular_mesh.triangulation
    x = np.asarray(TG.x)
示例#16
0
    return h


primitives = fk.Primitive(triangular_mesh, layer, height_funct=H_0)
tracers = [fk.Tracer(triangular_mesh, layer, primitives, Tinit=1.0)]
slides = [fk.Slide(ref=r) for r in [1, 2, 3, 4]]
vtk_writer = fk.VTKWriter(triangular_mesh,
                          scheduler=fk.schedules(count=10),
                          scale_h=1.)

problem = fk.Problem(simutime,
                     triangular_mesh,
                     layer,
                     primitives,
                     slides=slides,
                     numerical_parameters={'space_second_order': True},
                     tracers=tracers,
                     vtk_writer=vtk_writer,
                     restart_scheduler=restart_scheduler,
                     custom_funct={'plot': fk_plt.plot_freesurface_3d},
                     custom_funct_scheduler=create_figure_scheduler)

################################################################################
#
# Solving first part:
#--------------------
#
#The restart sheduler first time being set to 1s, the ``solve()`` function will
#stop and save data at time=1s.
#
problem.solve()
示例#17
0
#---------------------

fluvial_heights = [fk.FluvialHeight(ref=r, height=0.0) for r in [1, 2, 3, 4]]

################################################################################
#
# Problem definition:
#--------------------

problem = fk.Problem(
    simutime,
    triangular_mesh,
    layer,
    primitives,
    fluvial_heights=fluvial_heights,
    analytic_sol=thacker2d_analytic,
    numerical_parameters={
        'ipres': IPRES,
        'space_second_order': SECOND_ORDER
    },
    custom_funct={'plot': fk_plt.plot_freesurface_3d_analytic_2},
    custom_funct_scheduler=create_figure_scheduler)

################################################################################
#
# Problem solving:
#-----------------
#
#When a figure plot is scheduled thacker2d.compute is called to compute analytic solution.

problem.solve()
示例#18
0
vtk_writer = fk.VTKWriter(triangular_mesh,
                          scheduler=output_scheduler,
                          scale_h=SCALE_H)

################################################################################
#
# Problem definition:
#--------------------

raceway = fk.Problem(simutime,
                     triangular_mesh,
                     layer,
                     primitives,
                     slides=slides,
                     numerical_parameters=NUM_PARAMS,
                     physical_parameters=PHY_PARAMS,
                     external_effects=external_effects,
                     vtk_writer=vtk_writer,
                     tracers=tracers,
                     lagrangian=lagrangian)

################################################################################
#
# Problem solving:
#-----------------

raceway.solve()

################################################################################
#
示例#19
0
    print("                         SOLVING CASE {}                 ".format(C))
    print(" ")
    print(" ")

    simutime_l.append(fk.SimuTime(final_time=1., time_iteration_max=100000))

    layer_l.append(fk.Layer(NL, triangular_mesh, topography=0.))

    primitives_l.append(fk.Primitive(triangular_mesh, layer_l[C], 
                                     free_surface=2., 
                                     QXinit=1.))

    problem_l.append(fk.Problem(simutime=simutime_l[C],
                                triangular_mesh=triangular_mesh,
                                layer=layer_l[C],
                                primitives=primitives_l[C], 
                                physical_parameters=PHY_PARAMS,
                                slides=slide,
                                fluvial_flowrates=fluvial_flowrates,
                                fluvial_heights=fluvial_heights))
    problem_l[C].solve()

################################################################################
#  
# Plot velocity profile: 
#-----------------------
#

cell = 233 #Middle domain
u = np.zeros((NL))   
z = np.zeros((NL))