je-santos / mplbm-ut Goto Github PK
View Code? Open in Web Editor NEWLibrary for performing multiphase simulations (based on the Shan-Chen model) in complicated geometries (i.e. porous media 3D images)
License: GNU General Public License v3.0
Library for performing multiphase simulations (based on the Shan-Chen model) in complicated geometries (i.e. porous media 3D images)
License: GNU General Public License v3.0
Generating an initial non-wetting/invading fluid configuration for steady state simulations would be great. Ideally this would exist as a python utility that automatically generates .dat files that ShanChen.cpp can read in.
Options:
In input_S25, the "periodicity in the boundary conditions" is all "true" for both fluid1 and fluid2 in x,y,z directions.
But in other input files, it becomes True for x-direction but false for the other two directions.
When I create the geometry it shows odd numbers of porosity. What might be the reason? Do I need to set the pixel size in ImageJ? Thanks.
>> create_geom_4_2phase
The intial porosity is -20380.574 % with 128 connected regions
Hello,thanks for the nice reply.
I double checked the single phase permeability simulation results. I ran the single phase permeability program twice and It didn’t generate the log file at the end of the simulation named as- (GeometryName_output.dat). Could you please help to check this part because I should run the program correctly.
Also, it would be much better if a velocity or pressure field vti visualization file for singel phase part is generated.
Thank you! Have a good holiday!
Dr,Santos,
I have learned so much from this tools.I have a problem when I study.
when I run the create_geom_4_2phase_more_file_types.m,I choose the type 2.And I use the *.dat file what produced by palabos.
But then it shows this error :
Index exceeds matrix dimensions
error:create_geom_4_2phase_more_file_types (line 40)
fp_printing = fp(1:print_size, 1:print_size, 1:print_size);
What do you think might cause this problem?
Thank you very much.
Hi,
Thanks for sharing such a great tool!This is very helpful for my research.
I encountered a problem when using MPI. The use of MPI multi-core parallel computing does not increase the computing speed. The calculation time for one step is about 2 minutes, no matter how many cores are used, it is almost the same calculation efficiency.
Is this normal? Is there anything that needs special attention in the parallel computing of the program? I tried OpenMPI 2.1.1 and MPICH 3, and they both have the same result.
Looking forward to your reply. Thank you very much.
Dr. Santos,
Thank you very much for this tool! I have been using it for my study and I am trying to increase it for other uses.
I have a slight problem. When I save the simulation lattices, the lattice1.dat and lattice2.dat are produced (the file size is about 2.2 GB each). However, when I terminate the simulation and I try to run it again, it shows this error on the terminal:
what(): Palabos IO exception: Could not open binary file lattice_fluid1.dat for reading terminate called after throwing an instance of 'plb::PlbIOException'
I tried to look at the shanchen.cpp but still cannot find the problem. What do you think might cause the problem?
Thank you very much.
I was running the examples in VScode on Windows and I ran into the following issues.
(Some of them might be specific to my installation but documenting them here anyway)
sim_directory=sim_directory.replace("\\","/")
on line 37 in 2_phase_sim.py helped solve issue(/bin/bash: C:/xx/MPLBM-UT/input/run_shanchen_sim.sh: No such file or directory
). Code continued to run function run_rel_perm_sim before throwing an error when no rho was found. Adding an exception for error here might be a good idea.Palabos IO exception: Element rho_f2_f not found in XML file.
Edit: Changed integrated terminal from powershell to bash by adding {
"terminal.integrated.shell.windows": "C:\Windows\sysnative\bash.exe"
} in settings.json in folder .vscode. This solved some issues but .sh file was still not detected
Single phase part:
Hey, thank you so much for the code you created, I hope I can use it for my research.
I successfully run the two-phase simulation step and the simulation result has shown up in the tmp folder. However, I cannot run the p[ost processing step, both the create_geoms_4_kr.m and the percolation_path.m. It shows this error on Matlab:
`Error using reshape
Number of elements must not change. Use [] as one of the size inputs to automatically calculate the appropriate size for that
dimension.
Error in percolation_path_calc (line 42)
rho = reshape(rho, kr.domain_size);
Error in percolation_path (line 14)
percolation_path_calc`\
What do you think could be the problem?
Thank you very much!!
Hello,
I am trying to run relative permeability examples (matlab_examples/unsteady_relperm_spherepack , and matlab_examples/steady_relperm_spherepack) but I when I run (run2-phase.sh), I get an error that says:
"Palabos IO exception: Element num_pc_steps not found in XML file. "
Could you please help me with this error?
Thank you!
1,
<num_pc> 0.05 </num_pc>
<drho_f2> 0.1 </drho_f2>
I think only the latter one is used but they both appear in the .xml file.
2, list=dir([directory 'rho1*.vti']) in save_fluids.m maybe should be list=dir([directory 'rho_f1*.vti']);
3, I think the invading fluid saturations for both the converged steps and non-convergence steps are both calculated based on the rho1*.vti. If so, I think only the invading fluid saturations for both the certain converged step should be used in the relative perm simulation. Is my understanding correct?
4, A tutorial on how to calculate capillary pressure is much appreciated.
5, Why the simulation output twice on the window, just curious.
Do you think it would be possible to add comments to the variables in the xml file?
Also, is it doable to add the mixed wet option to the input file?
It would be nice also to use variables in the xml for the repeated paramters, like the initial configuration of the fluid.
Thanks
https://gitlab.com/unigespc/palabos/-/releases
and erase the examples/etc
Dear,
Thank you very much for the amazing code and model for 1- and 2-phase fluid flow in LBM. My inquiry is related to the new ShanChen.cpp file with the 'new capillary pressure implementation'. Could you kindly provide us with the input .XML file regarding the unsteady state simulation for the spherepack? In the updated ShanChenn file, new input parameters such as the minimum radius and number of steps need to be input.
Best regards,
mms74
Hi Dr. Santos:
Thanks for sharing this great tool! It is really impressive and really a read-to-go tool.
Regarding the solid structure, I am wondering if the tool is able to consider a solid with a location dependent surface tension?
For example, fluid 1 will be completely wettings on first half of the porous solid while be only partially wetting with the second half of the porous structure.
It seems the surface tension or wetting condition can be specified in the xml file as follow?
Thank you for your time in advance and looking forward to your response.
Cheers,
R-P
<G_ads_f1_s1> -0.4 </G_ads_f1_s1>
<G_ads_f1_s2> 0.0 </G_ads_f1_s2>
<G_ads_f1_s3> 0.0 </G_ads_f1_s3>
<G_ads_f1_s4> 0.0 </G_ads_f1_s4>
Hi, first of all, thanks for the developer's distribution!
I want to use MPLBM-UT in my college's HPC. Our HPC has
gcc (GCC) v. 8.3.0
openmpi3 v. 3.1.4
mvapich2 v. 2.3.2
but I saw MPLBM-UT need
openmpi 2.1.1
gcc v. 7.2,
Will that be ok if I use a different version? Or I need to ask IT support to install these packages for me?
Thank you so much!
Besides the geometry (i.e., relative location of fluid 1 and fluid 2) as described in https://github.com/je-santos/MPLBM-UT/tree/master/examples, is it able to consider such a configuration:
The domain initially contains only fluid 2 (e.g. oil), but several water droplets (fluid 1) with small radii are regularly added near the inlet to approximate a water-diesel mixture on the left of the filter?
Thanks for your time on this
Rongpei
Hi,
I was trying to run two-phase flow using my geometry. I have a set of image slices hence I tried to create the geometry using create_geom_4_2phase_more_file_types.m. I was trying to run it using octave and I get the following error:
octave:1> run(“create_geom_4_2phase_more_file_types.m”);
files(1): out of bound 0
error: called from
read_img_slices at line 7 column 8
create_geom_4_2phase_more_file_types at line 27 column 8
run at line 86 column 5
octave:1> exit
I also tried createDAT.m and I get this error:
octave:3> createDAT(360,‘subdomain_456_400_361’,‘.tif’,‘output.dat’)
error: imread: unable to find file ‘subdomain_456_400_361/.tif0001’
error: called from
imageIO at line 73 column 5
imread at line 106 column 33
createDAT at line 16 column 3
The numbers of the image slices are in the ****. Should the file extensions be changed from tif? I thought that might cause issues with the images
Could you please help? Thanks!
In the "1_two_phase_template_explanation", you said "cos(theta) = 4G_ads_f1_si/( Gc( rho_f1-rho_d ) )". Here, the G_ads_f1_si should be the adhesive coefficient between fluid2 and solid walls, rather than fluid1. Since the Gads should be negative for wetting fluid, when it is -0.4, the contact angle should be less than 90, rather than 156.4.
Hello,
I'm a user from France using your LBM code. I would first thank you for this outstanding program, but I'm having some little issues and I was hoping that you could help me.
So, I would like to move the calculation to our server of the supercomputer, which requires me to compile the code on the server instead of using the already compiled version. So, I tested to compile the program on my local computer (I emptied the /build file and use the command 'cmake ..' and 'make' under the directory of /build/ and it gives me this error by the end of compilation, could you please help me with the error?
[ 98%] Built target palabos
Scanning dependencies of target permeability
[ 99%] Building CXX object CMakeFiles/permeability.dir/permeability.cpp.o
/mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/permeability.cpp: In function ‘void readGeometry(std::string, std::string, plb::MultiScalarField3D&, plb::plint, plb::plint, bool, std::string)’:
/mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/permeability.cpp:109:10: warning: ‘template class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
109 | std::auto_ptr<MultiScalarField3D > floatTags = copyConvert<int,T>(geometry, geometry.getBoundingBox());
| ^~~~~~~~
In file included from /usr/include/c++/9/memory:80,
from /mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/../palabos-v2.2.1/src/multiBlock/multiBlockGenerator3D.h:53,
from /mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/../palabos-v2.2.1/src/multiBlock/multiBlockLattice3D.hh:44,
from /mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/../palabos-v2.2.1/src/core/vectorFunction3D.h:44,
from /mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/../palabos-v2.2.1/src/core/headers3D.h:59,
from /mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/../palabos-v2.2.1/src/palabos3D.h:37,
from /mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/permeability.cpp:3:
/usr/include/c++/9/bits/unique_ptr.h:53:28: note: declared here
53 | template class auto_ptr;
| ^~~~~~~~
/mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/permeability.cpp:109:73: error: conversion from ‘std::unique_ptr<plb::MultiScalarField3D, std::default_delete<plb::MultiScalarField3D > >’ to non-scalar type ‘std::auto_ptr<plb::MultiScalarField3D >’ requested
109 | std::auto_ptr<MultiScalarField3D > floatTags = copyConvert<int,T>(geometry, geometry.getBoundingBox());
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/permeability.cpp: In function ‘int main(int, char**)’:
/mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/permeability.cpp:269:11: warning: unused variable ‘run_diff’ [-Wunused-variable]
269 | plint run_diff = ((runnum - 1)/2)+1;
| ^~~~~~~~
/mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/permeability.cpp: At global scope:
/mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/permeability.cpp:357:5: error: ‘pcout’ does not name a type
357 | pcout << "Printing outputs" << std::endl;
| ^~~~~
/mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/permeability.cpp:358:26: error: ‘fNameOut’ was not declared in this scope
358 | std::string outDir = fNameOut + "/";
| ^~~~~~~~
/mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/permeability.cpp:361:5: error: ‘ofile’ does not name a type
361 | ofile << "Outputs" << "\n\n";
| ^~~~~
/mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/permeability.cpp:362:5: error: ‘ofile’ does not name a type
362 | ofile << "Krw from run: " << "\n" << "Krnw from run: " << (run_diff+1) << std::endl;
| ^~~~~
/mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/permeability.cpp:363:5: error: expected unqualified-id before ‘for’
363 | for (plint runs = 1; runs <= runnum; ++runs) {
| ^~~
/mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/permeability.cpp:363:26: error: ‘runs’ does not name a type
363 | for (plint runs = 1; runs <= runnum; ++runs) {
| ^~~~
/mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/permeability.cpp:363:42: error: expected unqualified-id before ‘++’ token
363 | for (plint runs = 1; runs <= runnum; ++runs) {
| ^~
/mnt/f/SONAR Project/Lattice Boltzmann Model/SONAR LBM/MPLBM-UT-master-test/src/1-phase_LBM/permeability.cpp:374:3: error: expected declaration before ‘}’ token
374 | }
| ^
make[2]: *** [CMakeFiles/permeability.dir/build.make:63: CMakeFiles/permeability.dir/permeability.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:78: CMakeFiles/permeability.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
Thank you very much.
Jessy
if I only add gravity to force_f1, the fluid1 will be compressed to a flat surface, but when I add gravity to both force_1 and force_2, the simulation didn't converge. Another question is how to control the droplet to drop to the solid surface rather than float up.
2 phase simulation on 200 voxels volume but keep "saving restart files" for days but no print tif or vtk files. Confused by where the problem is.
Hi all,
I have one question on single phase absolute permeability or effective permeability calculation. Is the absolute permeability calculated based on the pore area or based on the imaged core sample cross section area (both solid area and pore area)? Because the Darcy equation is based on the core sample cross section area, I think it would be good to mention which area term this code uses for permeability calculation otherwise it would be very hard for the reader to guess.
Thanks a lot!
Best wishes
Hi, thank you so much for providing the code, it really helps me with my study.
I have successfully run your code and it produces a reasonable result compared to my experiment. However, I am interested to see how the interfacial tension can affect the result. Is there any way I can change the sigma (IFT) value directly? I have tried looking at the shanchen.cpp file but could not find it.
Thank you very much!
Hi,
Thank you very much for the code. It has been very helpful to understand the two-phase flow.
I ran the unsteady-relperm-spherepack example with my own bead-pack geometry using run2-phase.sh and it ran successfully and saved the output files. When I ran the create_geoms_4_kr.m (with number of runs = 6), it didn't generate any geometries for the relative permeability simulations. Finally when I ran run1-phase.sh, it displayed the absolute permeability of 4.8 and then displayed an error that f1_for_kr_1.dat, etc. are not found. Although the density and velocity values were very reasonable, I didn't understand why the absolute permeability value was so large.
I also found a similar issue on GitHub, but that solution for geometries didn't seem to fix the issue I had. Could you please let me know how to resolve this? Also, may I know if the "pressure" value in the input_rel_perm.xml should be changed for different capillary pressures, or is it just a random value used to generate the pressure gradient?
Thanks a lot in advance!
Iyengar
Hi, thank you for developing this code, it is very useful for my study.
I successfully ran your code for the 2 phase flow and am interested in seeing the relative permeability change in different viscosity ratios. However, when I try to keep the omega f1 into 1 and change the omega f2 into 2, the simulation produced very scattered 2D images. Is it the problem with my installation?
Thank you very much.
Dr,Santos,
I have learned so much from this tools.I have a problem when I study.
when I run the create_geom_4_2phase_more_file_types.m,I choose the type 2.And I use the *.dat file what produced by palabos.
But then it shows this error :
Index exceeds matrix dimensions
error:create_geom_4_2phase_more_file_types (line 40)
fp_printing = fp(1:print_size, 1:print_size, 1:print_size);
What do you think might cause this problem?
Thank you very much.
Dear developers;
Thank you for the precious work.
I decided to use MPLBM-UT library for simulating polymer gel injection into porous media for my MSc thesis. Unfortunately; I am getting SCons compilation error and I have tried the mentioned solution but it does not work. I tried every single thing and I thought it would be better to ask your opinion on this issue. I will be really glad if you could help me solve this problem. Here are the last lines of the error and I receive the same error for ShanChen.o .
Many Thanks
permeability.cpp:88:8: warning: ‘template class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
88 | std::auto_ptr<MultiScalarField3D > slice = generateMultiScalarField(geometry, sliceBox);
| ^~~~~~~~
In file included from /usr/include/c++/9/memory:80,
from /mnt/d/MPLBM/src/palabos-v2.0r0/src/multiBlock/multiBlockGenerator3D.h:44,
from /mnt/d/MPLBM/src/palabos-v2.0r0/src/multiBlock/multiBlockLattice3D.hh:35,
from /mnt/d/MPLBM/src/palabos-v2.0r0/src/core/vectorFunction3D.h:35,
from /mnt/d/MPLBM/src/palabos-v2.0r0/src/core/headers3D.h:50,
from /mnt/d/MPLBM/src/palabos-v2.0r0/src/palabos3D.h:28,
from permeability.cpp:3:
/usr/include/c++/9/bits/unique_ptr.h:53:28: note: declared here
53 | template class auto_ptr;
| ^~~~~~~~
scons: *** [permeability.o] Error 1
scons: building terminated because of errors.
make: *** [Makefile:92: compile] Error 2
When I try the example "contact_angle_droplet", the droplet of fluid1 just became smaller and vanished. Then I try a larger droplet, x:545, y:3060, z:30~60. The droplet stayed unchanged in the simulate. Should I add the -9.8 to the <force_f1>?
Normalize it using the number of iterations per check
Thank you very much for the repository, it is very helpful for me in my study.
I just finished running the steady_relperm_spherepack simulation and it produces many parameter results and many 2D images. I want to ask, is it possible to produce the illustration similar to the one shown on the steady.JPG?
Thank you very much
Natanael Suwandi
Dear all,
I Have been using this project for a will and find some bugs, for example, I notice that in the shenchen.cpp the boundary condition was achieved by change density every time step, It's inefficiency because in OplenLB they did it by update boundary density every 10 steps or whatever you want.
So I fork the code and make some changes :
Thanks a lot!
Best wishes
Hi,
thank you for the amazing codes.
However, I couldn't find the files specified in the readme.md under matlab_examples (input_sc.xml).
I wish to ask how to run a simulation based on the given example in the readme?
Thank you very much.
Include the xml, and the bash command to run palabos
Thank you very much for sharing such good code to deal with two-phase flow in porous media.
Your code description mentions that relative permeability can be calculated, but I can't find it. Would you please give us a method to calculate relative permeability? Thank you very much.
Hello,
Thank you for providing your code, I found it very useful.
I have a similar problem as in issue #8 , the single-phase simulation part only uses the original geometry and one more geometry that is the output from the 2-phase simulation. Beyond that, it says it is unable to find, for example, f2_for_kr_2.dat. So, I only have one geometry for each fluid from the 2-phase simulation. How do I get multiple geometries from the 2-pahse geometry to be able to generate the relative permeability curve?
Regards,
Faras Al Balushi
In the example of steady-state flow, why should we first simulate the 2-phase flow and then simulate the 1-phase flow? If I simulate a 2-phase flow with different saturation, do I only need to simulate the 1-phase flow ones?
And for the result of the example, the krn curve starts from 1 at Sw=0 and end at 0 with Sw=1. At every point, the sum of krn and krw is equal to 1, is it true for reality?
log?
Dear developer;
I really appreciate your great work. Is it possible to calculate volumetric flux in this fork?
I need tp plog log(q) vs. log(dp/dx)
thank you for your consideration.
Elahe
Hello, I have several questions that need kind help:
1, How can I restart the program after the program stops.
From the .xml file that I can change 1 to 0 to reload previously saved lattices. Is the only place that I should modify if I want to start it from the checkpoint? I think the fluid density should be also modified but it seems like that there is currently no log file to save the current simulated density values. From the person computer I can find the density values for phase 1 and phase 2 from the windows but it would be much better to have a log file to record it.
2, Why the density vtk files for phase 1 and phase 2 are not simultaneously generated?
3, The final question is that I set the fluid density into 2 for both phase, but the fluid 2 density visualization in paraview indicates that there are places the density is larger than 2. Is it caused by the not enough iterations steps during iteration?
Thanks a lot.
According to input xml file the following example
MultiphasePorousMediaPalabos/examples/contact_angle_droplet/
<file_geom> input/flat_surface.dat </file_geom>
flat_surface.dat should be included in the folder "input"
Thank you!
Regards,
Dear Developer team:
I'm currently getting this error when building MPLBM-UT in HPC:
Linking CXX executable ../permeability
/opt/ohpc/pub/mpi/openmpi3-gnu8/3.1.4/lib/libmpi_cxx.so: undefined reference to `__cxa_throw_bad_array_new_length@CXXABI_1.3.8'
/opt/ohpc/pub/mpi/openmpi3-gnu8/3.1.4/lib/libmpi_cxx.so: undefined reference to `operator delete(void*, unsigned long)@CXXABI_1.3.9'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/permeability.dir/build.make:92: ../permeability] Error 1
make[2]: Leaving directory '/opt/ohpc/pub/apps/mplbm-ut/1.0/src/1-phase_LBM/build'
make[1]: *** [CMakeFiles/Makefile2:99: CMakeFiles/permeability.dir/all] Error 2
make[1]: Leaving directory '/opt/ohpc/pub/apps/mplbm-ut/1.0/src/1-phase_LBM/build'
make: *** [Makefile:76: all] Error 2
Can you help me to fix it? Thank you so much!
Hello, in this step, there is a warning shows:
_subdir = input
error: reshape: can't reshape 8360000x1 array to 200x200x200 array
error: called from
domains_4_kr at line 24 column 16
create_geoms_4_kr at line 16 column 1_
The geometry is created using "creat_geom_4_2phase.m" and successfully run through the 2phase simulation. Why is a shape issue here? Thanks.
HI,
I successfully ran your code, but I found a strange phenomenon. When the viscosity ratio is 1, the program works very well. When the viscosity ratio is greater than 1, a strange phenomenon occurs.For example, if the pressure gradient is zero, you still have a large velocity. Why is that?Looking forward to your reply.Thank you.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.