ember¶
An ‘Enhanced Multi-Block solvER’ for turbomachinery computational fluid dynamics, written by James Brind at the Whittle Laboratory, University of Cambridge. Solves the compressible Reynolds-averaged Navier-Stokes equations on multi-block structured meshes, using an evolution of the fast and robust Denton algorithms. Pre- and post-processing is handled through a numpy-like Python interface, while the heavy computations run through compiled Fortran for speed.
Getting started
Reference manual
- Geometry and indexing
- Fluid
- Get and set methods
- Datum state
- Reference scales
Fluidfrom_dict()set_h_s()set_P_h()set_P_rho()set_P_s()set_P_T()set_rho_s()set_T_rho()set_T_s()get_a()get_cp()get_cv()get_dhdP_rho()get_dhdrho_P()get_dsdP_rho()get_dsdrho_P()get_dudP_rho()get_dudrho_P()get_gamma()get_h()get_kappa()get_mu()get_P()get_P_h_T()get_Pr()get_Rgas()get_s()get_T()change_datum()change_ref()change_visc()to_dict()P_dtmP_refRgas_refrho_refrhoV_refT_dtmT_refu_refV_ref
PerfectFluidset_h_s()set_P_h()set_P_rho()set_P_s()set_P_T()set_rho_s()set_T_rho()set_T_s()get_a()get_cp()get_cv()get_dhdP_rho()get_dhdrho_P()get_dsdP_rho()get_dsdrho_P()get_dudP_rho()get_dudrho_P()get_gamma()get_h()get_kappa()get_mu()get_P()get_P_h_T()get_Pr()get_Rgas()get_s()get_T()change_datum()change_ref()change_visc()
RealFluidset_h_s()set_P_h()set_P_rho()set_P_s()set_P_T()set_rho_s()set_T_rho()set_T_s()get_a()get_cp()get_cv()get_dhdP_rho()get_dhdrho_P()get_dsdP_rho()get_dsdrho_P()get_dudP_rho()get_dudrho_P()get_gamma()get_h()get_kappa()get_mu()get_P()get_P_h_T()get_Pr()get_Rgas()get_s()get_T()change_datum()change_ref()change_visc()rho_lim_ndu_lim_nd
- Tabulated property fitting
- Block
- Initialisation
- Indexing and slicing
- Equations of state
- Reference scales
- Array methods
- Setter methods
- Properties
- Example usage
Blockset_conserved()set_fluid()set_h_s()set_L_ref()set_label()set_mu_turb()set_Nb()set_Omega()set_P_h()set_P_rho()set_P_rho_nd()set_P_s()set_P_T()set_r()set_rho_s()set_rho_u()set_rho_u_Vxrt_nd()set_rpm()set_t()set_T_s()set_triangulated()set_V_Alpha_Beta()set_Vr()set_Vt()set_Vx()set_Vxrt()set_wdist()set_x()set_xrt()set_xyz()copy()masked()memory_usage()update_cached_conserved()update_primitive()aa_ndAlphaAlpha_relaoBetaconservedconserved_avg_ndconserved_filt_ndconserved_ndcp_nddA_quaddA_quad_nddA_tridA_tri_nddAidAi_nddAjdAj_nddAkdAk_nddamp_rfacdhdP_rho_nddhdrho_P_nddsdP_rho_nddsdrho_P_nddt_vol_nddudP_rho_nddudrho_P_ndF_body_ndflatfluidhoho_ndho_relIi_cuspi_perkijk_wall_convijk_wall_visckappa_ndL_reflabelMaMa_relMamMaxmu_ndmu_turbNbOmegaOmega_ndOmega_wall_ndP_ndP_offset_ndP_rotpatchespitchPoPo_relrr_mid_ndr_ndresidual_ndrhorho_ndrhoerhoorhoo_relrhorVtrhoVmrhoVrrhoVxrpmrts_ndscratchsinBetastoretT_ndtanAlphatanAlpha_reltanBetatau_q_facesToTo_relUuu_nduouo_relVV_ndV_relVmvolvol_ndVrVr_ndVtVt_ndVt_relVt_rel_ndVxVx_ndVxrtVxrt_ndVxrt_relVyVzwdistwdist_ndxxrxrrtxrtxrt_ndyzcpcvgammahkappamuPPrRgassT__getitem__()clear_cache()empty()flip()freeze()frozenmean()nanmean()ndimninjnknvarreshape()shapeshape_cellshape_ifaceshape_jfaceshape_kfacesizesqueeze()transpose()triangulatedview()
- Block utilities
- Iterative flow-field setters
- Grid
- Construction and file formats
- Connectivity
- Global flow field setting
- Time marching
- Metadata
Gridread_emb()read_plot3d()set_conserved_cart_unstr()set_fluid()set_L_ref()set_primitive_cart_unstr()get_convergence()get_r_ref()accumulate_avg()align_cart_unstr()apply_bconds()apply_guess_meridional()apply_guess_quasi3d()calculate_wdist()check_nan()copy()finalise_average()interp_from_arrays()interp_from_grid()resample()smooth()update_bconds()update_cached_conserved()update_filter()update_residual()update_sources()update_timestep()write_emb()write_fvbnd()write_plot3d()connectivityn_rowpatchesrow_station_bid_pidrowssizeappend()clear()extend()index()insert()labelspop()remove()
GridConnectivityGridConnectivityManagerConvergenceStepDivergenceError
- Communicators
- Patch
- Averaging
- Cutting
- Solver
- Convergence history
- Reading a history
- Monitors
- Storage
- Reading from a file
ConvergenceHistoryfrom_grid()read_cnv()check_convergence()find_settling_record()format_message()format_timing()record_convergence()to_json()trim()write_cnv()divergeddP_DdP_IdP_Perr_mdoterr_mdot_rowho_ndi_logi_stepmdot_ndmdot_targetmdot_throttlen_nodenowpsiresiduals_ndthrottletimetpnpszeta
- Jacobians
- Array utilities
- Flow angle and coordinate conversions
- Vector and matrix operations
- Grid construction
- Array allocation and buffers
- Miscellaneous geometry
profile()dot()angles_to_components()components_to_angles()vecnorm()zeros()array()empty()full()allocate_or_reuse()bcast_if_needed()carve_view()rss_bytes()meshgrid3()linmesh3()pol_to_pseudocart()extent()bounding_box()unwrap_meridional()cart_to_pol()pol_to_cart()matmat()rotation_matrices()matvec()resample()apply_perm_flip()cosine_cluster()cluster()cluster_symmetric()
- YAML utilities
- Bibliography
- Version history