Coder Social home page Coder Social logo

trixi-framework / hohqmesh Goto Github PK

View Code? Open in Web Editor NEW
43.0 43.0 7.0 53.59 MB

High Order Hex-Quad Mesh (HOHQMesh) package to automatically generate all-quadrilateral meshes with high order boundary information.

Home Page: https://trixi-framework.github.io/HOHQMesh

License: Other

CMake 0.12% Makefile 1.80% Fortran 97.76% Shell 0.31%

hohqmesh's People

Contributors

andrewwinters5000 avatar davidakopriva avatar dependabot[bot] avatar fluidnumerics-joe avatar ranocha avatar sloede avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hohqmesh's Issues

Can HOHQMesh support multiple OUTER_BOUNDARIES?

Dear developers,

Thank you very much for providing so powerful mesher! Now I have a question, can your powerful mesher support multiple OUTER_BOUNDARIES? For example, the Circles3.control, I changed to Circles32.control, but it doesn't behave like what I design (I just duplicate the Circles3.control to two copies by offsetting it along x axis of distance 15). How to let the mesher support multiple regions and multiple OUTER_BOUNDARIES?

Thanks,
Tang Laoya
Circles32.zip

Separate repo for large mesh and plots files

As discussed in #46, large files are no longer tracked in the main HOHQMesh repo. However, it would be useful to create a separate HOHQMesh_mesh_examples repo (name pending) that could act as a storage place for the generated mesh files and SEM formatted TecPlot files for the control files persent in HOHQMesh/Examples (and perhaps others).

`ABAQUS` format for multi-material mesh

As discussed in #53, the multi-material mesh file format ISM_MM is available in 2D and 3D where elements are given a material name. An analogous multi-material output format could be implemented for the ABAQUS format in 2D and 3D.

Add Valgrind to CI

Once #40 is fixed, we should add a Valgrind pass to the CI to avoid accidentally adding new memory bugs. This could be done, e.g., by adding an additional CI check that runs the testsuite with

valgrind --error-exitcode=1 --exit-on-first-error=yes ./HOHQMesh -test

Can HOHQMesh support multiple domains?

Dear developer,
I have another requirement: I need to generate meshes for multiple domains. I need to generate meshes for all domains with their interfaces, and then assign different materials with different domains, not just an outer boundary with multiple inner boundaries with holes. Can your HOHQMesh support this kind of multiple domains?

Thanks & Happy New Year,
Tang Laoya

Extrusion bug

When using simple extrusion SIMPLE_EXTRUSION method, choosing the direction to be anything but 3 (extrusion in the z-vertical direction) the 2D mesh is not properly rotated and the 3D mesh is messed up. The workaround is to use the SWEEP_ALONG_CURVE sweeping method and choose the SWEEP_CURVE in the desired direction to accomplish the same thing, but properly. It has been thought to deprecate the simple extrusion because of the redundant functionality.

bugs in INTERFACE_BOUNDARIES?

Dear developers,

I am trying to use the INTERFACE_BOUNDARIES to generate meshes with multiple domains. I used the example given in the last of 'the-model.md' (just replaced the INNER_BOUNDRIES to INTERFACE_BOUNDARIES, see attachment 'interfaceboundary.control'), the mesh is error. Could you please help me to take a look at it?

BTW: I usually use the polygons as input, such as 'test.off' attached, how to use 'SPLINE_CURVE' input these polyons (just segments instead of curves)?

Thanks,

Tang Laoya

test.zip

Add more compilers & OS to CI testing

At the moment, we run tests on ubuntu-latest, macos-latest, windows-latest. On the *nix systems, we use GNU Fortran 10, on Windows currently GNU Fortran 12. It might be useful to also add ubuntu-22.04 and macos-12 using GNU Fortran 11 to cover a wider range of OS and compilers.

Can HOHQMesh generate split-node/discontinuous inner boundary (i.e., just a line, not a closed curve)?

I want to generate a 2D rectangular mesh with an arbitrary fault discontinuity (straight line) within the domain.
It looks as follows. For this toy case, I have:

Lx, Ly = 4,4
fault_start = (2,4)
fault_end = (2,2)
creep_end = (2,0)
               (fault_start)
(0,Ly) _____________________________(Lx,Ly)
      |               |             |
      |               |             |
      |               |             |
      |    (fault_end)/(creep_start)|
      |               -             |
      |               -             |
      |               -             |
      |               -             |
 (0,0)|______________________________ | (Lx, 0)
                 (creep_end)

I want to use this type of mesh with a manually-written spectral-element code. It has Linear Elasticity/Wave propagation in the domain, a friction ODE along the fault, and fixed velocity along the creep. So I would just want to get (x, y, connectivity index) across all these interfaces.

I want to use HOHQMesh because eventually I want to have unstructured meshes with curved faults.

Creating my control file gives a segmentation fault error when I define those inner boundaries. The control file looks like this:

	open("$(@__DIR__)/../out/rectangular-structured-boundary.control", "w") do io
		println(io, raw"""

		\begin{CONTROL_INPUT}
			\begin{RUN_PARAMETERS}
				mesh file name   = rectangular-structured-boundary.mesh
				plot file name   = rectangular-structured-boundary.tec
				stats file name  = none
				mesh file format = ISM-v2
				polynomial order = 4
				plot file format = skeleton
			\end{RUN_PARAMETERS}

			\begin{BACKGROUND_GRID}
				x0 = [0.0, 0.0, 0.0]
				dx = [1.0, 1.0, 0.0]
				N  = [4,4,1]
			\end{BACKGROUND_GRID}
		\end{CONTROL_INPUT}

		\begin{MODEL}
			\begin{OUTER_BOUNDARIES}
			\begin{END_POINTS_LINE}
				name = bottom
				xStart = [0.0,0.0,0.0]
				xEnd   = [4.0,0.0,0.0]
			\end{END_POINTS_LINE}
			\begin{END_POINTS_LINE}
				name = right
				xStart = [4.0,0.0,0.0]
				xEnd   = [4.0,4.0,0.0]
			\end{END_POINTS_LINE}
			\begin{END_POINTS_LINE}
				name = top
				xStart = [4.0,4.0,0.0]
				xEnd   = [0.0,4.0,0.0]
			\end{END_POINTS_LINE}
			\begin{END_POINTS_LINE}
				name = left
				xStart = [0.0,4.0,0.0]
				xEnd   = [0.0,0.0,0.0]
			\end{END_POINTS_LINE}
			\end{OUTER_BOUNDARIES}

			\begin{INNER_BOUNDARIES}
			\begin{END_POINTS_LINE}
				name = Fault
				xStart = [ 2.0, 4.0, 0.0]
				xEnd   = [ 2.0, 2.0, 0.0]
			\end{END_POINTS_LINE}
			\begin{END_POINTS_LINE}
				name = Creep
				xStart = [ 2.0, 0.0, 0.0]
				xEnd   = [ 2.0, 2.0, 0.0]
			\end{END_POINTS_LINE}	
			
			\end{INNER_BOUNDARIES}
		\end{MODEL}
		
		\end{FILE}
		""")
	end
end
using HOHQMesh
create_mesh_control()
control_file = "$(@__DIR__)/../out/rectangular-structured-boundary.control"
generate_mesh(control_file);

The error is:

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0  0x10d92263c
#1  0x10d9219d3
#2  0x7ff80cd52dfc
#3  0x104f3f54e
#4  0x104f48461
#5  0x104f30033
#6  0x104f30112
#7  0x104f30cd8
#8  0x104f310af
#9  0x104f3098d
#10  0x104f310af
#11  0x104f3098d
#12  0x104f310af
#13  0x104f3098d
#14  0x104f31221
#15  0x104f4c317
#16  0x104f4b808
#17  0x104fa21d0
ERROR: LoadError: failed process: Process(setenv(`/Users/prithvi/.julia/artifacts/dcfa115e4439dcb2e24beadcb54361c4e46318e0/bin/HOHQMesh -f /var/folders/17/tlgpbfwx3p56q2gxlzt5gx2c0000gn/T/jl_o8auM1`,["_CE_M=", "LSCOLORS=Gxfxcxdxbxegedabagacad", "PATH=/Users/prithvi/.julia/artifacts/dcfa115e4439dcb2e24beadcb54361c4e46318e0/bin:/Users/prithvi/opt/chromedriver:/Users/prithvi/opt/anaconda3/bin:/opt/local/bin:/opt/local/sbin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/prithvi/opt/chromedriver:/Users/prithvi/opt/anaconda3/bin:/Users/prithvi/opt/anaconda3/condabin:/opt/local/bin:/opt/local/sbin:/opt/homebrew/bin:/opt/homebrew/sbin", "HDF5_USE_FILE_LOCKING=FALSE", "MANPATH=/opt/local/share/man:/opt/homebrew/share/man:/usr/share/man:/usr/local/share/man:/opt/local/share/man:/opt/homebrew/share/man:", "USER=prithvi", "UCX_ERROR_SIGNALS=SIGILL,SIGBUS,SIGFPE", "LESS=-R", "CONDA_PROMPT_MODIFIER=(base) ", "VSCODE_GIT_ASKPASS_NODE=/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper.app/Contents/MacOS/Code Helper"  …  "UCX_MEMTYPE_CACHE=no", "TERM_PROGRAM_VERSION=1.68.1", "ZSH=/Users/prithvi/.oh-my-zsh", "COMMAND_MODE=unix2003", "PWD=/Users/prithvi/Library/Mobile Documents/com~apple~CloudDocs/spear-parallel", "TERM_PROGRAM=vscode", "VSCODE_GIT_ASKPASS_MAIN=/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/git/dist/askpass-main.js", "ORIGINAL_XDG_CURRENT_DESKTOP=undefined", "CONDA_PREFIX=/Users/prithvi/opt/anaconda3", "OPENBLAS_MAIN_FREE=1"]), ProcessSignaled(11)) [0]

Stacktrace:
  [1] pipeline_error
    @ ./process.jl:540 [inlined]
  [2] read(cmd::Cmd)
    @ Base ./process.jl:427
  [3] read(cmd::Cmd, #unused#::Type{String})
    @ Base ./process.jl:436
  [4] readchomp
    @ ./io.jl:926 [inlined]
  [5] (::HOHQMesh.var"#17#18"{Bool, String, String, String, String})(tmppath::String, tmpio::IOStream)
    @ HOHQMesh ~/.julia/packages/HOHQMesh/wrBSY/src/HOHQMesh.jl:226
  [6] mktemp(fn::HOHQMesh.var"#17#18"{Bool, String, String, String, String}, parent::String)
    @ Base.Filesystem ./file.jl:722
  [7] mktemp
    @ ./file.jl:720 [inlined]
  [8] generate_mesh(control_file::String; output_directory::String, mesh_filename::Nothing, plot_filename::Nothing, stats_filename::Nothing, verbose::Bool)
    @ HOHQMesh ~/.julia/packages/HOHQMesh/wrBSY/src/HOHQMesh.jl:206
  [9] generate_mesh(control_file::String)
    @ HOHQMesh ~/.julia/packages/HOHQMesh/wrBSY/src/HOHQMesh.jl:174
 [10] top-level scope
    @ ~/Library/Mobile Documents/com~apple~CloudDocs/spear-parallel/src/mesh.jl:105
 [11] include(fname::String)
    @ Base.MainInclude ./client.jl:451
 [12] top-level scope
    @ REPL[29]:1
in expression starting at /Users/prithvi/Library/Mobile Documents/com~apple~CloudDocs/spear-parallel/src/mesh.jl:105

Thanks for the great package!

Unless explicitly stated a piece of software is copyrighted

Hello
As per the title, I found a problem with the license:

https://trixi-framework.github.io/HOHQMesh/license/

It is related to the pieces of external software reported at the end of the page.

  • b3hs_hash_key_jenkins
  • fmin
  • spline
  • seval

Unless the author itself waives his own rights in public domain favor with something like this, for instance:

https://www.cs.cmu.edu/afs/cs/project/quake/public/code/predicates.c

copyright laws applies. We would like to make things easier, but that doesn't change laws.

So a substitution or a (careful) rewrite of those four files would be in order, to make this interesting library compliant with your license of choice, MIT.
Until that, it is MIT for your code and copyright of respective authors for the above mentioned files.
HTH

nFortran failure

It has been reported that the tests fail when using the nFortran (from nvidia) compiler. One is a rounding error difference. Another is that parsing the control file for the SplineGeometry mesh fails with exceptions saying that blocks are not properly terminated. (\end{...} does not contain the proper keyword.) This is not true by visual inspection of the control file, nor does gFortran have a problem with it. As far as I can tell nFortran only runs on linux. Here are the error messages:
////////////////////////////////
//// Begin Test Suites ////
////////////////////////////////
-------------------------------------------------------------
Summary of failed tests for test suite: 0 alloc: need 128 size 160 p 0x10fbb70 area 0x10fbb80 end 0x10fbc0f
Curve evaluation tests0 dealloc p 0x488720 area 0x10fbb80

 0 failures out of    13 assertions.
-------------------------------------------------------------
-------------------------------------------------------------
Summary of failed tests for test suite: 0 alloc: need 128 size 160 p 0x10fbb70 area 0x10fbb80 end 0x10fbc0f

Gaussian Curvature evaluation tests0 dealloc p 0x488720 area 0x10fbb80

 1 failures out of     4 assertions.
-------------------------------------------------------------
Double Precision equality failed:
   Quadratic Hessian error
   Expected [0.000000000000000], Got [1.0049518550658831E-008]
-------------------------------------------------------------
Summary of failed tests for test suite: 0 alloc: need 128 size 160 p 0x10fbb70 area 0x10fbb80 end 0x10fbc0f

BiCubic Interpolation tests0 dealloc p 0x488720 area 0x10fbb80

 0 failures out of     6 assertions.
-------------------------------------------------------------
-------------------------------------------------------------
Summary of failed tests for test suite: 0 alloc: need 128 size 160 p 0x177f780 area 0x177f790 end 0x177f81f

ControlFile: Benchmarks/ControlFiles/Pill.control0 dealloc p 0x488720 area 0x177f790

 0 failures out of     9 assertions.
-------------------------------------------------------------

Improper block termination. Expected SPLINE_CURVE; found SPLINE_DATA
Block termination error. Expected: OUTER_BOUNDARY; Found: SPLINE_CURVE

Tracking too many large files

The repo tracks several mesh and plotting .tec files (either in the Benchmarks or Examples folders) causing it to grow in size over time. Here is an list of the largest files tracked by the repo

19M ./Benchmarks/PlotFiles/Benchmarks/SeaMount.tec
14M ./Benchmarks/PlotFiles/Benchmarks/SeaMountCubic.tec
13M ./Examples/3D/Pond/Pond3D.tec
6.5M ./Examples/3D/ScaledCylinder/CylinderScale.mesh
5.4M ./Examples/3D/ScaledCylinder/CylinderScale.tec
5.1M ./Examples/3D/HalfCircleRotated/HalfCircle3DR.mesh
5.0M ./Examples/3D/HalfCircleRotated/HalfCircle3DR.tec
5.0M ./Benchmarks/MeshFiles/Benchmarks/SeaMount.mesh
4.4M ./Examples/3D/CavityRampExtruded/CavityRamp3D.tec
4.0M ./Benchmarks/MeshFiles/Benchmarks/SeaMountCubic.mesh
3.7M ./Examples/3D/Pond/Pond3D.mesh
3.4M ./Examples/3D/HalfCircleExtruded/HalfCircle3D.tec
3.0M ./Examples/3D/MtStHelens/sthelens_grid_data.txt
2.4M ./Examples/2D/LakeSuperior/SuperiorMain.tec
1.8M ./Examples/3D/BoxRotated/Box3DRot.mesh
1.8M ./Examples/3D/Box/Box3D.mesh
1.8M ./Examples/2D/GingerbreadMan/GingerbreadManPlot.tec
1.7M ./Examples/2D/EastCoastUS/EastCoastUS2d.tec
1.5M ./Examples/3D/CavityRampExtruded/CavityRamp3D.mesh
1.5M ./Examples/3D/BoxRotated/Box3D.tec
1.4M ./Examples/3D/BottomFromFile/BottomFromFile.tec
1.2M ./Examples/2D/IndianOcean/IndianOcean.mesh

As more examples are added with future development the size of the repo will become quite large and unwieldy to work with. For instance, with my recent attempt to build a new tarball and release a new version tag, Utilities/createrelease created HOHQMesh-v1.3.0.tar.gz that was 97.5M. This is too large to attach to a github release.

Future developments for HOHQMesh

This checklist collects a wishlist and/or plan that David and I discussed (in August 2023) for feature development in HOHQMesh. There is no timeline for said features so this issue is planned to stay open indefinitely and be edited accordingly.

Basic functionality:

  • Fix compilation problems (and possibly testing issues) with the ifort compiler. #76
  • Check the handedness of outer curves using the circulation function to ensure right-handedness. This is already done for any of the spline curves of the outer or inner boundaries chains. But such an orientation check should be extended to ensure that all chains have the assumed orientation to ensure that the meshing algorithm is valid.

Mesh quality improvements:

  • Improve spline representation of curves. Currently, only cubic splines (or bicubic in 3D) are used. Could use higher order splines to increase the approximation accuracy of boundary curves. High-order splines of fourth or fifth order are straightforward to achieve for 2D meshes, although appropriate (i.e. fast) matrix solves are necessary to compute the spline coefficients.
  • 3D mesh smoother for the extruded bottom topography meshes. This process involves a nonlinear optimization problem and some more exploration as to the best (or at least most robust) strategy. Experimental code exists for the optimization procedure using steepest descent. Several open questions exist, such as, the most appropriate shape measure for a "good" element, the optimazation algorithm, and targeting the optimization to a patch of the mesh (as trying to optimize over the entire 3D mesh that contains "good" and "bad" elements tends to lack convergence).
  • Readin of CAD file data and using NURBs for the boundary curves. This would increase the mesh quality as well as HOHQMesh's ability but requires the most work. NURBs are complicated and using a library would be preferable rather than re-implementing these basis functions and evaluation routines. As such, this is mainly an outlook point on the checklist. Possibly this might require some additional input/output routines to something like openCascade.

Mesh output improvements:

  • Currently, the output of curved 2D edges or 3D faces is duplicated across elements. This is convenient for mesh file read-in procedures, but may cause the mesh files to become quite large. This file size could be reduced if the curved edge or face data was stored separate and only indexed by the curved element flags. However, updating the mesh file format output would require a modification to the mesh file parsing routines within codes like Trixi.jl. Note, changing the mesh file format would be "breaking" in the sense that mesh files in the "old" duplicate style would become unreadable (although maybe we could have different read-in functions based on some kind of flag).
  • Mesh file size could be reduced with output to the HDF5 format. We do not want HDF5 as a strong dependency on HOHQMesh so we think this could be achieved in two ways. Either with prerproc compiler flags in the Fortran source of HOHQMesh to isolate the (yet to be written) output routines or the HDF5 output could be handled by the Julia wrapper functionality HOHQMesh.jl via HDF5.jl. Whatever strategy is taken, appropriate mesh file read-in routines would be required for the HDF5 format. For the most part this is left up to the user, however for Trixi.jl users I feel that we would need to provide an HDF5 read-in routine (analogous to the current ASCII read-in) such that the user facing side of Trixi.jl remains consistent.

Flotsam and side projects:

  • Further develop the conforming mesh algorithms for embedded material interfaces.
  • Ensure proper compilation of HOHQMesh on the PGI Fortran compiler (related to #72)
  • Extend HOHQMesh.jl tutorials and documentation for embedded boundary (i.e. multi-material meshes)

Huge memory and very long time when number of inner boundaries is large

Dear Prof. David,
I am still testing the case 'test4.control' I uploaded. I found in the function 'OuterToInnerboundaryDistances', there are 5-level loops, the program hangs there for hours with no top loop moving. I found there are many similar functions, such as 'OuterBoxToInnerboundaryDistances', 'InnerToInnerBoundaryDistances', and so on. I think these functions should be improved to skip unnecessary calculations and comparisons, I tried to improve the function 'OuterToInnerboundaryDistances', but the improvement is still not satisfied. Do you have any good suggestion?

Thanks,
Tang Laoya

Sizer.zip

Fix mesh generation tests on Windows

This the error output on Windows:

    -------------------------------------------------------------
    Summary of failed tests for test suite: ControlFile: Benchmarks/ControlFiles/AllFeatures.control
    11 failures out of    12 assertions.
    -------------------------------------------------------------
    Integer equality failed:
       number of elements
       Expected [1690], Got [1647]
    Integer equality failed:
       number of Nodes
       Expected [1835], Got [1792]
    Integer equality failed:
       number of Edges
       Expected [3525], Got [3439]
    Integer equality failed:
       number of bad elements
       Expected [2], Got [3]
    Double Precision equality failed:
       signed area
       Expected [0.30783800000000000], Got [0.31587506899605999]
    Double Precision equality failed:
       aspect ratio
       Expected [1.2250500000000000], Got [1.2334162486319105]
    Double Precision equality failed:
       condition number
       Expected [1.1475800000000000], Got [1.1524380540117851]
    Double Precision equality failed:
       edge ratio
       Expected [1.4420200000000001], Got [1.4572046460075048]
    Double Precision equality failed:
       jacobian
       Expected [0.23957600000000001], Got [0.24601121471317100]
    Double Precision equality failed:
       minimum angle
       Expected [74.632999999999996], Got [74.148890457032337]
    Double Precision equality failed:
       maximum angle
       Expected [107.65800000000000], Got [108.21491240771348]

@DavidAKopriva Any idea what might be causing this and why only on Windows?

Originally posted by @sloede in #3 (comment)

Debug memory issues with Valgrind

As part of my efforts to fix #39, I ran a valgrind check on HOHQMesh using valgrind ./HOHQMesh -test. This resulted in some memory leakage (~64 KiB), but more importantly in several, usually non-negligible memory errors:

  • Conditional jump or move depends on uninitialised value(s): >= 3 times
  • Use of uninitialised value of size 8: > 20 times
  • Invalid read of size 8: > 20 times

In my C++ experience, the errors are seldom something one can safely ignore (the leakage is only troublesome when one actually runs out of memory because of it; at the moment I wouldn't worry too much about those). Thus it might be good to put some time into trying to fix the hard errors, especially in light of the increased activity lately.

cc @DavidAKopriva @andrewwinters5000

Simple Extrusion crash

HOHQMesh now crashes with a set fault when extruding a 2D mesh that has been generated without an outer boundary. An example control file is for a 2D box extruded to a cube geometry:
\begin{CONTROL_INPUT}

\begin{RUN_PARAMETERS}
mesh file name = MeshFiles/Box3D.mesh
plot file name = PlotFiles/Box3D.tec
stats file name = None
mesh file format = ISM
polynomial order = 4
plot file format = skeleton
\end{RUN_PARAMETERS}

\begin{MESH_PARAMETERS}
element type = hex
\end{MESH_PARAMETERS}

\begin{SIMPLE_EXTRUSION}
  direction          = 3
  height             = 2.0
  subdivisions       = 3
  start surface name = bottom
  end surface name   = top

\end{SIMPLE_EXTRUSION}

\begin{BACKGROUND_GRID}
x0 = [0.0, 0.0, 0.0]
dx = [1.0, 1.0, 1.0]
N = [5,5,5]
\end{BACKGROUND_GRID}

\begin{SPRING_SMOOTHER}
   smoothing            = ON
   smoothing type       = LinearAndCrossBarSpring
   spring constant      = 1.0
   mass                 = 1.0
   rest length          = 0.0
   damping coefficient  = 5.0
   number of iterations = 5
   time step            = 0.1

\end{SPRING_SMOOTHER}

\end{CONTROL_INPUT}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.