Coder Social home page Coder Social logo

ensembles / ert Goto Github PK

View Code? Open in Web Editor NEW
31.0 15.0 52.0 32.1 MB

Ert has been split into three repositories, libecl, libres, and ert, and now lives at Equinor's GitHub organization — https://github.com/equinor/libecl | https://github.com/equinor/libres | https://github.com/equinor/ert

Home Page: https://github.com/equinor/ert

License: GNU General Public License v3.0

C 68.81% CMake 2.14% Python 27.67% Makefile 0.02% Shell 0.01% C++ 0.99% Objective-C 0.07% MATLAB 0.01% TeX 0.03% HTML 0.24% GLSL 0.01% Roff 0.01%
ert enkf eclipse libecl libres opm

ert's Introduction

The ert repository has been split in two independent repositories, and the development on the ert git repository has been discontinued.

https://github.com/Statoil/libecl : Project with main focus on reading and writing of ECLIPSE binary files.

https://github.com/Statoil/libres : Project with libraries and the main ERT application.

ert's People

Contributors

agchitu avatar akva2 avatar andlaus avatar arielalmendral avatar atgeirr avatar berland avatar blattms avatar bska avatar chflo avatar flikka avatar iloop2 avatar jepebe avatar joakim-hove avatar jokva avatar kjellkongsvik avatar kurtpetvipusit avatar magnesj avatar markusdregi avatar myrseth avatar patnr avatar perroe avatar pgdr avatar rolk avatar thorvaldj 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

Watchers

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

ert's Issues

unable to install the package

I am trying to install this package on my macbook osx 10.11.2 and am getting this error -

"Undefined symbols for architecture x86_64:
"dgemm", referenced from:
_matrix_dgemm in matrix_blas.c.o
"dgemv", referenced from:
_matrix_dgemv in matrix_blas.c.o
_matrix_mul_vector in matrix_blas.c.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [lib/libert_util.2.0.dylib] Error 1
make[1]: *** [libert_util/src/CMakeFiles/ert_util.dir/all] Error 2
make: *** [all] Error 2"

I am a novice when it comes to programming - can someone help me to understand this issue and how to solve it.

Regression after work on job_queue.

Simulation in ert stops with the following error message

Traceback (most recent call last):
  File "/opt/ert/lib/python2.7/dist-packages/ert_gui/simulation/simulation_panel.py", line 103, in runSimulation
    dialog = RunDialog(run_model, arguments, self)
  File "/opt/ert/lib/python2.7/dist-packages/ert_gui/simulation/run_dialog.py", line 29, in __init__
    self.simulations_tracker = SimulationsTracker()
  File "/opt/ert/lib/python2.7/dist-packages/ert_gui/simulation/models/simulations_tracker.py", line 64, in __init__
    self.__checkForUnusedEnums()
  File "/opt/ert/lib/python2.7/dist-packages/ert_gui/simulation/models/simulations_tracker.py", line 78, in __checkForUnusedEnums
    raise AssertionError("Enum identifier '%s' not used!" % enum)
AssertionError: Enum identifier 'JOB_QUEUE_DO_KILL_NODE_FAILURE' not used!

Function rng_get_max_int makes non-portable assumptions

Commit 39003a1 (PR #847) introduced a new function,

unsigned int rng_get_max_int(const rng_type * rng)

The implementation of this function contains the statement

unsigned int MAX = ((1 << 32) - 1);

which generates undefined behaviour.

In particular, this statement assumes that

  1. The type unsigned int is at least 32 bits (common)
  2. The type int is at least 33 bits (very rare, even on 64 bit architectures)

Even if one tries to work around that last assumption by writing

1U << 32

some compilers still generate warnings of the form

/home/bska/work/opm/src/3rdparty/ert/devel/libert_util/src/rng.c:234:5: warning: left shift count >= width of type [enabled by default]
     unsigned int MAX = (1U << 32) - 1;
     ^

This problem can be fixed in a portable way by writing

unsigned int MAX = -1;

instead.

Improve error message when UTIL_FREAD_SCALAR crashes on end-of-stream

In util.c and util.h. If the following function is called with stream at end, the error message will be "SUCCESS".

int util_fread_int(FILE * stream) {
  int file_value;
  UTIL_FREAD_SCALAR(file_value , stream);
  return file_value;
}

This is caused by the fact that

  1. fread returns 0 because it cannot read anything (we are at the end of the stream)
  2. We verify that indeed 1 byte has been read (it hasn't)
  3. We print errno set by fread. However, fread doesn't consider reaching end-of-stream an error and sets errno=0 indicating no error

Solution: If returned value and errno both are 0, the error message should indicate that we (prematurely) reached end-of-stream.

Gcc warns about breaking strict aliasing.

/home/mblatt/DUNE/ert/libecl/src/ecl_kw.c:1315:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
         size = *( (int *) &buffer[ECL_STRING_LENGTH] );

clang test failures

Several tests fail on clang:

ert_util_work_area (failed),
config_path_elm (failed). Path strings differ:

...T/travis/test/config_path_elm/...
...T//travis/test/config_path_elm/...

enkf_analysis_config_analysis_load (failed)

Failed to load library:rml_enkf.so Error:dlopen(rml_enkf.so, 2): image not found
** Warning: failed to load module from rml_enkf.so.
Failed to load library:rml_enkf.so Error:dlopen(rml_enkf.so, 2): image not found
** Warning: failed to load module from rml_enkf.so.
** Warning:: Do not have enough information to select a history source
/Users/travis/build/Ensembles/ert/libenkf/tests/enkf_analysis_config_analysis_load.c:39 => assert( true ) failed

enkf_workflow_job_test_version (failed)

** Warning keyword:This not recognized when parsing:/Users/travis/build/Ensembles/ert/libenkf/tests/data/workflow_jobs/CONF2 ---
** Warning keyword:instead not recognized when parsing:/Users/travis/build/Ensembles/ert/libenkf/tests/data/workflow_jobs/CONF2 ---
** Warning: failed to add workflow job:CONF2 from:/Users/travis/build/Ensembles/ert/libenkf/tests/data/workflow_jobs/CONF2
/Users/travis/build/Ensembles/ert/libenkf/tests/enkf_workflow_job_test_version.c:65 => assert( true ) failed

python.tests.core.cwrap (exception)

python(10402,0x7fff7c3d6000) malloc: *** error for object 0x6f2ed90: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort called from: util_abort_signal (/Users/travis/build/Ensembles/ert/libert_util/src/util.c:4894)
Error message: Program received signal:6

python.tests.core.cwrap.metacwrap (exception)

The type used as return type: test_stringlist is not registered as a return type.
Abort called from: util_abort_signal (/Users/travis/build/Ensembles/ert/libert_util/src/util.c:4894)
Error message: Program received signal:11

python.tests.core.util.path_context (failed)

FAIL: test_chdir (core.util.test_path_context.PathContextTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/travis/build/Ensembles/ert/build/python/tests/core/util/test_path_context.py", line 21, in test_chdir
    self.assertEqual( os.getcwd() , "/tmp/pc")
AssertionError: '/private/tmp/pc' != '/tmp/pc'

python.tests.ecl.ecl_kw (failed)

ERROR: test_kw_write (ecl.test_ecl_kw.KWTest)
Traceback (most recent call last):
  File "/Users/travis/build/Ensembles/ert/build/python/tests/ecl/test_ecl_kw.py", line 149, in test_kw_write
    kw4 = EclKW.fread(fortio)
  File "/Users/travis/build/Ensembles/ert/build/python/ert/ecl/ecl_kw.py", line 346, in fread
    return cls._fread_alloc( fortio )
  File "/Users/travis/build/Ensembles/ert/build/python/ert/cwrap/prototype.py", line 136, in __call__
    return self._func(*args)
  File "/Users/travis/build/Ensembles/ert/build/python/ert/cwrap/prototype.py", line 114, in returnFunction
    return return_type(result)
  File "/Users/travis/build/Ensembles/ert/build/python/ert/ecl/ecl_kw.py", line 148, in createPythonObject
    raise ValueError("Failed to create EclKW instance")
ValueError: Failed to create EclKW instance

python.tests.ert.enkf.time_map (exception)

Abort called from: util_make_datetime_utc (/Users/travis/build/Ensembles/ert/libert_util/src/util.c:3307)
Error message: util_make_datetime_utc: failed to make a time_t instance of 10/10/ 200  00:00:00 - aborting

Test failures in FortIO / EclFile

Two tests fail consequently in my Ubuntu install of Ert, and they fail at least 50% of the time in my Redhat 7 install of Ert:

Test #209: python.tests.ecl.ecl_deprecation2.0 ...***Failed
Test #211: python.tests.ecl.fortio ..........***Failed

Both tests fail in EclFile while trying to open a FortIO file,

209: Traceback (most recent call last):
209:   File "/home/pgd/ert/ert/build/lib/python2.7/dist-packages/tests/ecl/test_deprecation.py", line 57, in test_EclFile_name_property
209:     f = EclFile( "TEST" )
209:   File "/home/pgd/ert/ert/build/lib/python2.7/dist-packages/ert/ecl/ecl_file.py", line 247, in __init__
209:     raise IOError("Failed to open file file:%s" % filename)
209: IOError: Failed to open file file:TEST

The failures might be related to flush/sync issues internally in the python/c-interface.

enkf_types undefined or invalid?

In file devel/libenkf/src/enkf_types.c, function enkf_types_get_state_enum__, there is first a test for UNDEFINED (on line 85) and then if there is no match, there is a catch-all which returns INVALID (on line 89).

However, there is no member INVALID in state_enum (defined in devel/libenkf/include/ert/enkf/enkf_types.h, line 114). There is one in ert_impl_type right above, but it is defined to the same value as UNDEFINED (=0). So, what should be the semantics of this routine. Why not return UNDEFINED in all cases where it is not {FORECAST, ANALYZED, BOTH}?

(And, there is a test in devel/libenkf/src/enkf_types.c:125 which tests for this value, which generate a warning that can be fixed, based on that answer :-))

Why python could not read the shared library file even the files are there?

This is where the .so files are .
kaib@kaib-WS ~/OPM/ert/devel/python/test $ ls /usr/local/lib/x86_64-linux-gnu/
libecl.so libecl.so.1.0 libecl_well.so libecl_well.so.1.0 libert_geometry.so libert_geometry.so.1.0 libert_util.so libert_util.so.1.0

And also the environmental variables are,
kaib@kaib-WS ~/OPM/ert/devel/python/test $ echo $PYTHONPATH
/home/kaib/OPM/ert/devel/python/test/../test:/home/kaib/OPM/ert/devel/python/test/../python:
kaib@kaib-WS ~/OPM/ert/devel/python/test $ echo $LD_LIBRARY_PATH
/usr/local/lib/x86_64-linux-gnu

When I tried to import the ert.ecl.ecl as ecl , I do not understand why it was still failed.
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.

import ert
import ert.ecl.ecl as ecl
Traceback (most recent call last):
File "", line 1, in
File "/home/kaib/OPM/ert/devel/python/python/ert/ecl/init.py", line 74, in
import ert.util
File "/home/kaib/OPM/ert/devel/python/python/ert/util/init.py", line 52, in
UTIL_LIB = clib.ert_load("libert_util")
File "/home/kaib/OPM/ert/devel/python/python/ert/cwrap/clib.py", line 108, in ert_load
return load(*lib_list)
File "/home/kaib/OPM/ert/devel/python/python/ert/cwrap/clib.py", line 90, in load
return __load(lib_list , False)
File "/home/kaib/OPM/ert/devel/python/python/ert/cwrap/clib.py", line 81, in __load
raise ImportError(error_msg)
ImportError:
Failed to load shared library:libert_util

dlopen() error:
libert_util : libert_util: cannot open shared object file: No such file or directory

The runtime linker has searched through the default location of shared
libraries, and also the locations mentioned in your LD_LIBRARY_PATH
variable. Your current LD_LIBRARY_PATH setting is:

LD_LIBRARY_PATH: /usr/local/lib/x86_64-linux-gnu

You might need to update this variable?

Add matplotlibrc file

We could consider adding a matplotlibrc file that will be read on import matplotlib

If the file contains backend : qt4agg, that will be set as default engine.

Example file:

### MATPLOTLIBRC FORMAT

# This is a sample matplotlib configuration file - you can find a copy
# of it on your system in
# site-packages/matplotlib/mpl-data/matplotlibrc.  If you edit it
# there, please note that it will be overwritten in your next install.
# If you want to keep a permanent local copy that will not be
# overwritten, place it in the following location:
# unix/linux:
#     $HOME/.config/matplotlib/matplotlibrc or
#     $XDG_CONFIG_HOME/matplotlib/matplotlibrc (if $XDG_CONFIG_HOME is set)
# other platforms:
#     $HOME/.matplotlib/matplotlibrc
#
# See http://matplotlib.org/users/customizing.html#the-matplotlibrc-file for
# more details on the paths which are checked for the configuration file.
#
# This file is best viewed in a editor which supports python mode
# syntax highlighting. Blank lines, or lines starting with a comment
# symbol, are ignored, as are trailing comments.  Other lines must
# have the format
#    key : val # optional comment
#
# Colors: for the color values below, you can either use - a
# matplotlib color string, such as r, k, or b - an rgb tuple, such as
# (1.0, 0.5, 0.0) - a hex string, such as ff00ff or #ff00ff - a scalar
# grayscale intensity such as 0.75 - a legal html color name, e.g., red,
# blue, darkslategray

#### CONFIGURATION BEGINS HERE

# The default backend; one of GTK GTKAgg GTKCairo GTK3Agg GTK3Cairo
# CocoaAgg MacOSX Qt4Agg Qt5Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG
# Template.
# You can also deploy your own backend outside of matplotlib by
# referring to the module name (which must be in the PYTHONPATH) as
# 'module://my_backend'.
backend      : qt4agg

# If you are using the Qt4Agg backend, you can choose here
# to use the PyQt4 bindings or the newer PySide bindings to
# the underlying Qt4 toolkit.
#backend.qt4 : PyQt4        # PyQt4 | PySide

# Note that this can be overridden by the environment variable
# QT_API used by Enthought Tool Suite (ETS); valid values are
# "pyqt" and "pyside".  The "pyqt" setting has the side effect of
# forcing the use of Version 2 API for QString and QVariant.

Redundantly declared functions

The functions

bool ecl_rft_file_case_has_rft(const char*);
int vector_get_size(const vector_type*);

are declared more than once in ert/ecl/ecl_rft_file.h and ert/util/vector.h, respectively. This leads to spurious diagnostics of the form

${prefix}/include/ert/ecl/ecl_rft_file.h:38:75: warning: redundant redeclaration of ‘bool ecl_rft_file_case_has_rft(const char*)’ in same scope [-Wredundant-decls]
 bool                   ecl_rft_file_case_has_rft( const char * case_input );
                                                                           ^
${prefix}/include/ert/ecl/ecl_rft_file.h:37:24: note: previous declaration of ‘bool ecl_rft_file_case_has_rft(const char*)’
 bool                   ecl_rft_file_case_has_rft(const char * case_input );
                        ^

${prefix}/include/ert/util/vector.h:75:54: warning: redundant redeclaration of ‘int vector_get_size(const vector_type*)’ in same scope [-Wredundant-decls]
   int           vector_get_size( const vector_type * );
                                                      ^
${prefix}/include/ert/util/vector.h:66:17: note: previous declaration of ‘int vector_get_size(const vector_type*)’
   int           vector_get_size(const vector_type * );
                 ^

when building client code.

Would you mind pruning the excess declarations?

Use of GNU extensions

While trying to compile the master branch on Mac OS X the following error occurred:

/ert/devel/libert_util/src/util_abort_gnu.c:200:57: error: ‘program_invocation_name’ undeclared (first use in this function)

This happened in spite of my compiler being gcc 4.7.0. According to http://linux.die.net/man/3/program_invocation_name, this is a gnu extension, and therefore not recommended in portable programs. However, this should be handled already by conditional compilation (if I read the top of util_abort_gnu.c correctly), I do not know why it seems to fail for me.

create3D problem

The create3D function has stopped working. This was working some weeks ago.

tr-linrgsn016:/cc/opm/opm-data/spe1:$ ll
total 493
drwxrwx--- 2 cfbe cfbe 1288 May 26 08:43 eclipse-simulation
drwxrwx--- 2 cfbe cfbe 332 May 26 08:43 opm-simulation-reference
-rw-rw---- 1 cfbe cfbe 11602 May 26 08:43 SPE1CASE1.DATA
-rw-rw---- 1 cfbe cfbe 11583 May 26 08:43 SPE1CASE2.DATA
-rw-rw---- 1 cfbe cfbe 11958 May 26 08:43 SPE1CASE2_FAMII.DATA
-rw-rw---- 1 cfbe cfbe 11623 May 26 08:43 SPE1CASE2_RESTART.DATA
-rw-rw---- 1 cfbe cfbe 11568 May 26 08:43 SPE1CASE2_SLGOF.DATA
tr-linrgsn016:
/cc/opm/opm-data/spe1:$ python
Python 2.7.11 (default, Jan 7 2016, 10:13:26)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

import numpy as np
import ert.ecl as ecl
gridfile='eclipse-simulation/SPE1CASE1'
grid=ecl.EclGrid(gridfile+".EGRID")
rst_file = ecl.EclFile(gridfile+'.UNRST')
swat_kw = rst_file.iget_named_kw( "SWAT" , 0 )
swat3D = grid.create3D(swat_kw)
Traceback (most recent call last):
File "", line 1, in
File "/project/res/x86_64_RH_6/share/ert/release/stable/python/ert/ecl/ecl_grid.py", line 1097, in create3D
array = array.reshape( [self.ngetNX() , self.getNY() , self.getNZ()] , order = 'F')
AttributeError: 'EclGrid' object has no attribute 'ngetNX'

abs instead fabs

There are too many warnings

  1. of such kind
    ./ert-master/devel/libecl/src/ecl_kw.c:419:1: note: use function 'fabsf' instead
    ./ert-master/devel/libecl/src/ecl_kw.c:409:8: note: expanded from macro 'CMP'
    if ((abs(v1) + abs(v2)) == 0)
    ^
    ./ert/ert-master/devel/libecl/src/ecl_kw.c:419:1: warning: using integer absolute value function 'abs' when argument is of floating point type
    [-Wabsolute-value]
    CMP(float)

  2. or such:
    ./ert/ert-master/devel/libecl/src/point.c:57:41: warning: using integer absolute value function 'abs' when argument is of floating point type
    [-Wabsolute-value]
    double diff_y = (abs(p1->y - p2->y) / abs(p1->y + p2->y + 1));
    ^
    ./ert/ert-master/devel/libecl/src/point.c:57:41: note: use function 'fabs' instead
    double diff_y = (abs(p1->y - p2->y) / abs(p1->y + p2->y + 1));

Problem with util_abort()

Trying to build the latest ERT, and facing the following warnings:

/Users/atgeirr/opm/ert-build/libert_util/src/float_vector.c:135:1: warning: implicit declaration of
      function 'util_abort' is invalid in C99 [-Wimplicit-function-declaration]

(many of those), and errors:

Undefined symbols for architecture x86_64:
  "_util_abort", referenced from:
      _rng_safe_cast in rng.c.o
      _rng_init in rng.c.o
...

What is defined is util_abort_ (in both util.h and various util_abort_X.c files), while all call sites seem to use the version without double trailing underscores.

ecl_rft_node.h Provides redundant declaration of ecl_rft_node_get_well_name

The file ert/ecl/ecl_rft_node.h contains, in part, the following declarations

const char        * ecl_rft_node_get_well_name(const ecl_rft_node_type * );
/* ... */
const char        * ecl_rft_node_get_well_name( const ecl_rft_node_type * rft_node );

on lines 41 and 46, respectively. As the function ecl_rft_node_get_well_name() is declared twice downstream users get annoying warnings of the form

/home/bska/work/opm/inst/dbg/include/ert/ecl/ecl_rft_node.h:46:84: warning: redundant redeclaration of ‘const char* ecl_rft_node_get_well_name(const ecl_rft_node_type*)’ in same scope [-Wredundant-decls]
 const char        * ecl_rft_node_get_well_name( const ecl_rft_node_type * rft_node );
                                                                                    ^
/home/bska/work/opm/inst/dbg/include/ert/ecl/ecl_rft_node.h:41:21: warning: previous declaration of ‘const char* ecl_rft_node_get_well_name(const ecl_rft_node_type*)’ [-Wredundant-decls]
 const char        * ecl_rft_node_get_well_name(const ecl_rft_node_type * );

Would you mind removing one of the declarations?

PR #145 breaks build

I haven't done a bisection so I don't know which commit breaks the build, but following PR #145 I am no longer able to build the ERT. I get the following diagnostic messages

[ 54%] Building C object libecl/src/CMakeFiles/ecl.dir/ecl_grid.c.o
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c: In function ‘ecl_grid_init_nnc_cells’:
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:2150: error: invalid storage class for function ‘ecl_grid_init_nnc’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:2181: error: invalid storage class for function ‘ecl_grid_init_nnc_amalgamated’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:2219: error: invalid storage class for function ‘ecl_grid_alloc_EGRID__’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:2266: error: invalid storage class for function ‘ecl_grid_alloc_EGRID’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:2307: error: invalid storage class for function ‘ecl_grid_alloc_GRID_data__’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:2343: error: invalid storage class for function ‘ecl_grid_dual_porosity_GRID_check’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:2385: error: invalid storage class for function ‘ecl_grid_alloc_GRID__’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:2495: error: invalid storage class for function ‘ecl_grid_alloc_GRID’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:2617: error: invalid storage class for function ‘ecl_grid_file_nactive_dims’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:2628: error: invalid storage class for function ‘ecl_grid_file_EGRID_dims’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:2646: error: invalid storage class for function ‘ecl_grid_file_GRID_dims’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:2835: error: invalid storage class for function ‘ecl_grid_compare__’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:2942: error: invalid storage class for function ‘ecl_grid_clear_visited’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:2957: error: invalid storage class for function ‘ecl_grid_box_contains_xyz’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:3638: error: invalid storage class for function ‘__assert_main_grid’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:3903: error: invalid storage class for function ‘ecl_grid_get_property_index__’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:3920: error: invalid storage class for function ‘ecl_grid_get_property__’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4165: error: invalid storage class for function ‘ecl_grid_test_lgr_consistency2’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4200: error: invalid storage class for function ‘ecl_grid_dump__’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4221: error: invalid storage class for function ‘ecl_grid_dump_ascii__’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4307: error: invalid storage class for function ‘ecl_grid_get_mapaxes’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4314: error: invalid storage class for function ‘ecl_grid_alloc_mapaxes_kw’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4318: error: invalid storage class for function ‘ecl_grid_alloc_mapunits_kw’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4324: error: invalid storage class for function ‘ecl_grid_alloc_gridunits_kw’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4333: error: invalid storage class for function ‘ecl_grid_fwrite_mapaxes’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4339: error: invalid storage class for function ‘ecl_grid_fwrite_mapunits’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4346: error: invalid storage class for function ‘ecl_grid_fwrite_gridunits’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4352: error: invalid storage class for function ‘ecl_grid_fwrite_main_GRID_headers’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4360: error: invalid storage class for function ‘ecl_grid_fwrite_GRID__’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4466: error: invalid storage class for function ‘ecl_grid_fwrite_main_EGRID_header’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4494: error: invalid storage class for function ‘ecl_grid_fwrite_gridhead_kw’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4521: error: invalid storage class for function ‘ecl_grid_get_valid_index’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4543: error: invalid storage class for function ‘ecl_grid_get_bottom_valid_index’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4547: error: invalid storage class for function ‘ecl_grid_get_top_valid_index’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4553: error: invalid storage class for function ‘ecl_grid_init_coord_section__’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4600: error: invalid storage class for function ‘ecl_grid_init_coord_section’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4619: error: invalid storage class for function ‘ecl_grid_init_coord_data’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4655: error: invalid storage class for function ‘ecl_grid_init_zcorn_data’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4700: error: invalid storage class for function ‘ecl_grid_init_actnum_data’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4755: error: invalid storage class for function ‘ecl_grid_init_hostnum_data’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4778: error: invalid storage class for function ‘ecl_grid_init_corsnum_data’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4818: error: invalid storage class for function ‘ecl_grid_fwrite_EGRID__’
/home/bska/work/opm/src/3rdparty/ert/devel/libecl/src/ecl_grid.c:4994: error: expected declaration or statement at end of input
make[2]: *** [libecl/src/CMakeFiles/ecl.dir/ecl_grid.c.o] Error 1
make[1]: *** [libecl/src/CMakeFiles/ecl.dir/all] Error 2
make: *** [all] Error 2

The culprit appears to be a missing closing brace on the for() loop over "NNC"s in function ecl_grid_init_nnc_cells() which immediately preceds function ecl_grid_init_nnc(). The following patch does at least allow the build to succeed, but it may just be papering over another, deeper, issue

 diff --git a/devel/libecl/src/ecl_grid.c b/devel/libecl/src/ecl_grid.c                                                                                                                                                                                                                                                       
index 9f9aa60..1a04c2a 100644                                                                                                                                                                                                                                                                                                
--- a/devel/libecl/src/ecl_grid.c                                                                                                                                                                                                                                                                                            
+++ b/devel/libecl/src/ecl_grid.c                                                                                                                                                                                                                                                                                            
@@ -2141,6 +2141,7 @@ static void ecl_grid_init_nnc_cells( ecl_grid_type * grid1, ecl_grid_type * grid                                                                                                                                                                                                                       
       nnc_index_list_add_index( grid2->nnc_index_list , grid2_cell_index );                                                                                                                                                                                                                                                 
     }                                                                                                                                                                                                                                                                                                                       
 }                                                                                                                                                                                                                                                                                                                           
+}                                                                                                                                                                                                                                                                                                                           

Missing return statement in ecl_nnc_equal

I know this is not C++ (undefined behaviour) and I am not sure how C treats missing return statements. But this warning bothers me a bit:

/home/mblatt/DUNE/ert/libecl/src/ecl_nnc_export.c: In function ‘ecl_nnc_equal’:
/home/mblatt/DUNE/ert/libecl/src/ecl_nnc_export.c:144:1: warning: control reaches end of non-void function [-Wreturn-type]
 }

Wouldn't rewriting ecl_nnc_equal as

return (ecl_nnc_sort_cmp( nnc1 , nnc2) == 0) &&
    ((nnc1->trans == nnc2->trans) && (nnc1->input_index == nnc2->input_index));

do the right thing without any warning (and possible bug)?

Compile warning "initialization from incompatible pointer type" in ecl_file_kw

Two warning in ecl_file_kw:

  • initialization from incompatible pointer type
  • passing argument 2 of size_t_vector_permute from incompatible pointer type
/tmp/jenkins-123/workspace/OPM7/ert/devel/libecl/src/ecl_file_kw.c: In functioninv_map_assert_sort’:
/tmp/jenkins-123/workspace/OPM7/ert/devel/libecl/src/ecl_file_kw.c:87:18: warning: initialization from incompatible pointer type [enabled by default]
     int * perm = size_t_vector_alloc_sort_perm( map->ecl_kw_ptr );
                  ^
/tmp/jenkins-123/workspace/OPM7/ert/devel/libecl/src/ecl_file_kw.c:89:5: warning: passing argument 2 ofsize_t_vector_permutefrom incompatible pointer type [enabled by default]
     size_t_vector_permute( map->ecl_kw_ptr , perm );
     ^
In file included from /tmp/jenkins-123/workspace/OPM7/ert/devel/libecl/src/ecl_file_kw.c:24:0:
/tmp/jenkins-123/workspace/OPM7/ert/build/libert_util/include/ert/util/size_t_vector.h:106:24: note: expectedconst struct perm_vector_type *but argument is of typeint *void                 size_t_vector_permute(size_t_vector_type * vector , const perm_vector_type * perm);
                        ^
/tmp/jenkins-123/workspace/OPM7/ert/devel/libecl/src/ecl_file_kw.c:90:5: warning: passing argument 2 ofsize_t_vector_permutefrom incompatible pointer type [enabled by default]
     size_t_vector_permute( map->file_kw_ptr , perm );
     ^
In file included from /tmp/jenkins-123/workspace/OPM7/ert/devel/libecl/src/ecl_file_kw.c:24:0:
/tmp/jenkins-123/workspace/OPM7/ert/build/libert_util/include/ert/util/size_t_vector.h:106:24: note: expectedconst struct perm_vector_type *but argument is of typeint *void                 size_t_vector_permute(size_t_vector_type * vector , const perm_vector_type * perm);
                        ^

Building docs fails

When building with ERT_DOC=ON I get the following error message:

CMake Error at CMakeLists.txt:231 (add_subdirectory):
   The binary directory

     ~/ert/build/docs

   is already used to build a source directory.  It cannot be used to build
   source directory

     ~/ert/docs

   Specify a unique binary directory name.

Static ert + pthreads problem

Issue originally from opm-core:

this is required to make the opm-core build succeed if ERT was build
with -DBUILD_SHARED_LIBS=OFF . (without it, I get errors like

/home/and/src/ert/devel/libert_util/src/thread_pool_posix.c:328: error: undefined reference to 'pthread_create'

Problems plotting FOE

[ This is copied from: https://github.com/OPM/opm-core/issues/981 ]

I run some simulations on OPM, I wanted to plot the Field Oil Recovery. In order to do that I created a file that I called foe.py (see below) and I placed it in the folder ert/devel/python/python/ert/ecl. The name of the file was added to the CMakeLists.txt present in the same folder as foe.py. The ert program was then compiled using cmake and make.

After that procedure I was not able to see the "foip vs date" appear on the Terminal (I'm using Ubuntu).
foe.py file:

#!/usr/bin/env python
import sys
from ert.ecl import EclGrid, EclFile

base_name = sys.argv[1]
grid = EclGrid("%s.EGRID")
rst_file = EclFile("%s.UNRST")

for date in rst_file.dates:
   rst_file.select_restart_section( sim_time = date )
   swat = rst_file["SWAT"][0]
   sgas = rst_file["SGAS"][0]
   rst_file.select_global()

   soil = 1 - swat - sgas

   foip = 0
   for index in range(len(soil)):
      cell_volume = grid.cell_volume( active_index = index )
      foip += cell_volume * soil[index]

   print "Date:%s  FOIP:%g" % (date , foip)    

PlotConfig / PlotConf???

raceback (most recent call last):
File "/private/joaho/ERT/git/ert/build/python/ert_gui/gert_main.py", line 209, in
main()
File "/private/joaho/ERT/git/ert/build/python/ert_gui/gert_main.py", line 195, in main
window.addPage("Plots", resourceIcon("plot"), PlotPanel())
File "/private/joaho/ERT/git/ert/build/python/ert_gui/pages/plot/plotpanel.py", line 46, in init
self.plot = PlotView()
File "/private/joaho/ERT/git/ert/build/python/ert_gui/pages/plot/plotview.py", line 54, in init
self.plot_settings = PlotSettings()
File "/private/joaho/ERT/git/ert/build/python/ert_gui/pages/plot/plotsettings.py", line 69, in init
self.connect(pc.signal_handler, SIGNAL('plotConfigChanged(PlotConfig)'), self.notify)
TypeError: C++ type 'PlotConfig' is not supported as a slot argument type
Calling enkf_main_free()

Possible error in logical statement of matrix_dgemm()

Function matrix_dgemm() (devel/libert_util/src/matrix_blas.c) contains the following statement on line 184:

if (!ldc >= util_int_max(1 , m)) {

This applies the logical NOT operation to ldc and then compares the result (0 or 1) to util_int_max(1,m). Is that really the intended meaning here or did you mean something along the lines of

if (! (ldc >= util_int_max(1, m)))  {

or

if (ldc < util_int_max(1, m)) {

?

New `-Werror` policy causes build failure with `-Wformat-nonliteral`

In my setup I have been using GCC's -Wformat-nonliteral flag for the ERT. Starting from commit f9ff076 (part of PR #112) that flag now produces build failures of the form

$ make
[  1%] Building C object libert_util/src/CMakeFiles/ert_util.dir/util.c.o
cc1: warnings being treated as errors
/home/bska/work/opm/src/3rdparty/ert/devel/libert_util/src/util.c: In function ‘util_fprintf_string’:
/home/bska/work/opm/src/3rdparty/ert/devel/libert_util/src/util.c:4584: error: format not a string literal and no format arguments
make[2]: *** [libert_util/src/CMakeFiles/ert_util.dir/util.c.o] Error 1
make[1]: *** [libert_util/src/CMakeFiles/ert_util.dir/all] Error 2
make: *** [all] Error 2

Note: The line in context is

void util_fprintf_string(const char * s , int width , string_alignement_type alignement , FILE * stream) {
  char fmt[32];
  int i;
  if (alignement == left_pad) {
    i = 0;
    if (width > strlen(s)) {
      for (i=0; i < (width - strlen(s)); i++)
        fputc(' ' , stream);
    }
    fprintf(stream , s);
  } else if (alignement == right_pad) {
   /* ... */

Do you intend to correct such issues, or should I just refrain from using the -Wformat-nonliteral flag when building the ERT?

Warning: control reaches end of non-void function

Function well_state_add_MSW() is defined as follows (lines 373--422 of well_state.c):

bool well_state_add_MSW(/* ... */) {
  /* ... */
  if (ecl_file_has_kw( rst_file , ISEG_KW )) {
    /* ... */
    if (ecl_file_has_kw( rst_file , RSEG_KW )) {
      /* ... */
      return true;
    }
  } else
    return false;
}

I haven't analysed the complete context, but my compiler (GCC 4.8) informs me that

[...]/src/well_state.c:422:1: warning: control reaches end of non-void function [-Wreturn-type]

This is true if ever the following condition occurs

ecl_file_has_kw( rst_file , ISEG_KW ) && (! ecl_file_has_kw( rst_file , RSEG_KW ))

Like I said, I don't know if that can actually happen or if the compiler diagnostic is simply a (semantic) false positive, but it'd be good to have a statement from someone who knows the code better than I do.

Build problem on Mac OS X using gcc 4.7.0

The -no-leading-underscore option set in CMakeLists.txt line 25 causes errors like this when cmake tests for (for example) regexec:

Undefined symbols for architecture x86_64:
"_main", referenced from:
start in crt1.10.6.o
"regexec", referenced from:
main in cc6t3OzU.o

Compiling with clang poses no problems, and removing the option also resolves the issue. I do not know if this option is required for any other platforms, though.

Simulation run path creation

The ertshell seems not to allow for the creation of the simulation path. A new menu entry has been introduced in the ert-tui ("cC") but that does not yet have a correspondent in the ertshell.

Failed when submitting to LSF

Error message:

Error in select section: Error near "null" : incorrect section name, resource name, or resource function name. Job not submitted.

** ERROR ** Failed when submitting to LSF - will try again.

ecl_sum.h declares ecl_sum_var_is_total() twice

As of commit 6aa9053, the libecl/include/ert/ecl/ecl_sum.h header (https://github.com/Ensembles/ert/blob/6aa9053a0ffa15b2eb3b24ead68eb36762de847a/devel/libecl/include/ert/ecl/ecl_sum.h) declares function

bool
ecl_sum_var_is_total( const ecl_sum_type * ecl_sum , const char * gen_key);

twice (on lines 89 and 189). This is, of course, perfectly legal but does lead to annoying warnings of the form

In file included from /home/bska/work/opm/src/opm/opm-core/opm/core/io/eclipse/EclipseWriter.cpp:57:0:
/home/bska/work/opm/inst/dbg/include/ert/ecl/ecl_sum.h:189:98: warning: redundant redeclaration of ‘bool ecl_sum_var_is_total(const ecl_sum_type*, const char*)’ in same scope [-Wredundant-decls]
/home/bska/work/opm/inst/dbg/include/ert/ecl/ecl_sum.h:89:20: warning: previous declaration of ‘bool ecl_sum_var_is_total(const ecl_sum_type*, const char*)’ [-Wredundant-decls]

when used from client code.

Do you think you could remove one of the declarations?

ert only builds when cmake -DPING_PATH=/bin is used.

On my system I can only build ert when I pass -DPING_PATH=/bin as a parameter to the cmake call.
Otherwise the macro PING_CMD seems not to be set and in the code it is not checked whether PING_CMD was successfully detected.

libert_util/src/util_fork.c:242:35: error: ‘PING_CMD’ undeclared (first use in this function)
pid_t ping_pid = util_fork_exec(PING_CMD , 4 , (const char *[4]) {"-c" , "3" , "-q", hostname} , false , NULL , NULL , NULL , "/dev/null" , "/dev/null");

Please document which python versions are support

I could not find any statement. Maybe I missed it.
Apparently, it does not build with python 3.4:

[ 54%] Generating ../../../lib/python3.4/dist-packages/cwrap/__init__.py
  File "/home/mblatt/src/dune/opm/ert/cmake/cmake_pyc2", line 24
    except Exception,error:
                    ^
SyntaxError: invalid syntax
python/python/cwrap/CMakeFiles/cwrap.dir/build.make:62: recipe for target 'lib/python3.4/dist-packages/cwrap/__init__.py' failed
make[2]: *** [lib/python3.4/dist-packages/cwrap/__init__.py] Error 1
CMakeFiles/Makefile2:1357: recipe for target 'python/python/cwrap/CMakeFiles/cwrap.dir/all' failed
make[1]: *** [python/python/cwrap/CMakeFiles/cwrap.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

MSW Segement and Branch ID should probably be 1-based

As of today the branch and segment ID numbers returned from Ert are 0 based, and not 1 based as they are in the input files.

This makes debugging and referencing (when these numbers appear in the GUI of ResInsight anyway) unneccesary confusing, I think. It could be fixed in ResInsight when we show the numbers, but I think it would be better if they are kept untouched through the system.

It might be a good reason for it beeing 0-based, but as they are real ID numbers, I can't quite see it...

Jacob

Build issues caused by configuration mismatches or missing header

In a different library (opm-core) I get the following error message:

In file included from /Users/atgeirr/opm/opm-core/examples/import_rewrite.cpp:11:0:
/usr/local/include/ert/util/util.h:435:23: fatal error: util_fork.h: No such file or directory

This line is compiled because my (opm-core) config.h contains the line

#define HAVE_FORK 1

However, util_fork.h does not get installed by ert. The ert_build_config.h file contains

#define HAVE_FORK

without the 1, I do not know if this is significant.

In general, I guess opm-core must make a configuration header that is a perfect superset of ert's header, or I can get into trouble. The best would be to have no configuration dependencies in any installed ert header, but that may not be feasible.

Some change after May 10th may cause the summary output problem

Basically, from the output summary file, I could not get all the time-steps. I could only get results like time-steps, WOPR, etc., less than the one specified in the deck.

For example, I specifies 300 days running in the deck, I can only read out 280 or 250 days of results. And it is a little random.

Preliminary tests show it is probably due to some change in ERT, while I am not 100% sure. Please help to check. If it is true, please help to fix them.

New header not installed

Since PR #842 I'm getting build failures of the form

/home/bska/work/opm/inst/dbg/include/ert/util/buffer.h:101:27: fatal error: buffer_string.h: No such file or directory
 #include "buffer_string.h"
                           ^

in client code that uses the Ert. I'm guessing that buffer_string.h, being a new header in 4b215d2, was just overlooked and that it should be installed despite being a deprecated interface.

Launching LSF server on RHEL6

I have some issues running an ERT case on RHEL6 using the LSF server (v8.3). It is a local LSF queue on the machine and the config file runs when launched locally, but trying to use the LSF queue system within ert (tui, shell and gui) causes a signal 11. Message received is as follows:

Abort called from: util_abort_signal (/uhome/hewsoncw/ert/libert_util/src/util.c:4942)

Error message: Program received signal:11

--------------------------------------------------------------------------------
 #00 ????
 #01 util_abort__(..)                                                              in ???
 #02 ????
 #03 ????
 #04 lsf_driver_alloc_cmd(..)                                                      in ???
 #05 lsf_driver_submit_job(..)                                                     in ???
 #06 job_queue_node_submit(..)                                                     in ???
 #07 job_queue_run_jobs(..)                                                        in ???
 #08 job_queue_run_jobs__(..)                                                      in ???
 #09 ????
 #10 clone(..)                                                                     in ???
--------------------------------------------------------------------------------
Aborted (core dumped)

with no further information in the log file:

01/12 - 14:35:00 All jobs submitted to internal queue - waiting for completion
01/12 - 14:35:13 ert configuration loaded
01/12 - 14:35:47 ===================================================================

The configuration options used in the ERT config were:

QUEUE_SYSTEM         LSF
LSF_SERVER           <redacted - but full server name and tried local>
QUEUE_OPTION LSF MAX_RUNNING   20
QUEUE_OPTION LSF  BJOBS_CMD  /opt/lsf/8.3/linux2.6-glibc2.3-x86_64/bin/bjobs
QUEUE_OPTION LSF  BSUB_CMD   /opt/lsf/8.3/linux2.6-glibc2.3-x86_64/bin/bsub
QUEUE_OPTION LSF  BKILL_CMD /opt/lsf/8.3/linux2.6-glibc2.3-x86_64/bin/bkill

also tried without the B.... options. Considering just modifying the jobs to submit to the queue system themselves, but any help or explanation for this for future use would be excellent.

Chris@TNO

Duplicate declaration of @TYPE@_vector_resize

Commit 5ab3033 declared function @TYPE@_vector_resize() in the

devel/libert_util/include/ert/util/vector_template.h

header.

There was, however, a preexisting declaration of vector_resize() in vector_template.h--on line 42--that was originally introduced in commit 8582383 with slightly different parameter names. The two declarations, although certainly compatibly, generate diagnostic messages of the form

ert/util/double_vector.h:65:89: warning: redundant redeclaration of ‘void double_vector_resize(double_vector_type*, int)’ in same scope [-Wredundant-decls]
ert/util/double_vector.h:42:24: warning: previous declaration of ‘void double_vector_resize(double_vector_type*, int)’ [-Wredundant-decls]

when clients use the derived/generated *_vector.h headers with strict warning settings.

Would you mind removing one of the declarations?

Ecl sum reports unused segment indices

summary.x --list lists unused segment indices with negative numbers.

If arg 2 in WSEGDIMS is 3, and your well defines segments 1 and 2 you will get the following output from summary.x --list

SOFR:A-1:1
SOFR:A-1:2
SOFR:A-1:-3

Cleaner practice should be not to display these unused segments?

Improve cmake python dependencies testing

ERT Python today depends on

  • numpy >= 0.15.1
  • pandas
  • mathplotlib-qt4 (mathplotlib.backends.backend_qt4agg).
    However, we don't properly test in cmake for these three, and thus all tests are run and fail whenever we don't satisfy one or more of the above.

Configure cmake to test for correct versions of numpy, pandas, and mathplotlib-qt4, and if not present, do not run the tests that depend on missing libraries.

Plugin MDA crashes when runpath folder is empty

To reproduce, clear runpath folder (make sure there are no realisation-X/iter-Y folders) and run MDA smoother plugin.

Error message: job_queue_add_job: failed to create job SNAKE_OIL_0 in path: /private/pgdr/ert/snake_oil/storage/snake_oil/runpath/realisation-0/iter-0 cwd:/private/pgdr/ert/snake_oil

After going to runpath, one can see that folder remains empty.

Full error log:

Abort called from: job_queue_add_job (/private/pgdr/ert/ert/devel/libjob_queue/src/job_queue.c:1140) 

Error message: job_queue_add_job: failed to create job SNAKE_OIL_0 in path: /private/pgdr/ert/snake_oil/storage/snake_oil/runpath/realisation-0/iter-0 cwd:/private/pgdr/ert/snake_oil 



--------------------------------------------------------------------------------
 #00 ???? 
 #01 util_abort__(..)                                                              in ???
 #02 job_queue_add_job(..)                                                         in ???
 #03 enkf_main_isubmit_job(..)                                                     in ???
 #04 enkf_main_isubmit_job__(..)                                                   in ???
 #05 ???? 
 #06 ???? 
 #07 clone(..)                                                                     in ???
--------------------------------------------------------------------------------

Possibly related to 2951e31

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.