{ "info": { "author": "Jack Kennedy", "author_email": "jackbkennedy@gmail.com", "bugtrack_url": null, "classifiers": [ "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Introduction\n\nThis is the v.1 release of the \"onelab\" python package. It is a proof on concept package for easily interfacing with the [gmsh](http://gmsh.info/) and [onelab](http://onelab.info/) clients using python. \n\nA more detailed version of the documentation will follow, along with examples of how the api can be used and a set of useful functions to make it easier to manipulate mesh data in Python.\n\nCurrently the package contains the APIs as distributed [HERE](https://gitlab.onelab.info/gmsh/gmsh).\n\n# Features \n\n- Create geometries with Python. \n- Generate meshes with Python.\n- Control Gmsh and Onelab with Python.\n- Quickly link solvers written in your proramming language of choice.\n- Contol files from the Onelab GUI or the command line.\n\n# Getting started with Onelab & Python\n\nIf you are not familiar with Onelab or Gmsh, I highly recommend that you familiarise yourself with these software packages before reading on. \n\nAccording to the Onelab website - \"Onelab is an open-source, lightweight interface to finite element software. It is completely free: the default ONELAB software bundle contains the mesh generator Gmsh, the finite element solver GetDP and the optimization library conveks.\"\n\nOnelab and Gmsh both support Python, Julia and C++ application programming interfaces. The purpose of this project is to package the respective Python APIs aong with a set of useful fucntions and classes that will make interacting with the software a lot easier. \n\nOnelab and Gmsh are powerful open source engineering design tools. However, they have a steep learning curve on account of the fact that geometries, solvers and optimisation libraries all require different programming / scripting languages and data formats. \n\nWith this package, users can define their geometry, mesh, solver, post processing view and optimisation functions in Python. They are have the capability to easily hook into solvers created in ther languages such as C, Fortran or Matlab. \n\n# Examples\n\n### Import packages\n\n from onelab import gmsh # Import Onelab API\n import meshio # Import mesh conversion library\n import numpy as np # Import Numpy for numerical processing\n from solidspy import solids_GUI # Import solverenter code here\n\n ### Define Geometry \n\n # Initialise geometry call\n gmsh.initialize()\n gmsh.option.setNumber(\"General.Terminal\", 1)\n gmsh.model.add(\"disc\")\n lc = 0.1\n \n # Define points\n gmsh.model.geo.addPoint(0, 0, 0, lc, 1)\n gmsh.model.geo.addPoint(1, 0, 0, lc, 2)\n gmsh.model.geo.addPoint(0, 1, 0, lc, 3)\n \n # Define lines\n gmsh.model.geo.addLine(3, 1, 1)\n gmsh.model.geo.addLine(1, 2, 2)\n gmsh.model.geo.addCircleArc(2, 1, 3)\n \n # Define physical surfaces and groups\n gmsh.model.geo.addCurveLoop([2, 3, 1], 1)\n gmsh.model.geo.addPlaneSurface([1], 1)\n \n gmsh.model.addPhysicalGroup(1, [1], 1)\n gmsh.model.addPhysicalGroup(1, [2], 2)\n gmsh.model.addPhysicalGroup(1, [3], 3)\n gmsh.model.addPhysicalGroup(2, [1], 4)]\n \n # Output .msh file\n gmsh.option.setNumber(\"Mesh.MshFileVersion\", 2)\n gmsh.model.geo.synchronize()\n gmsh.model.mesh.generate(2)\n gmsh.write(\"disc.msh\")\n gmsh.finalize()\n \n \n ### Convert mesh formats and define solver conditions\n\n mesh = meshio.read(\"disc.msh\")\n points = mesh.points\n cells = mesh.cells\n point_data = mesh.point_data\n cell_data = mesh.cell_data\n \n # Element data\n eles = cells[1][1]\n els_array = np.zeros([eles.shape[0], 6], dtype=int)\n els_array[:, 0] = range(eles.shape[0])\n els_array[:, 1] = 3\n els_array[:, 3::] = eles\n \n # Nodes\n nodes_array = np.zeros([points.shape[0], 5])\n nodes_array[:, 0] = range(points.shape[0])\n nodes_array[:, 1:3] = points[:, :2]\n \n # Boundaries\n lines = cells[0]\n bounds = cell_data[\"gmsh:physical\"][1]\n nbounds = len(bounds)\n \n # Loads\n id_cargas = [4]\n nloads = len(id_cargas)\n load = -10e8 # N/m\n loads_array = np.zeros((nloads, 3))\n loads_array[:, 0] = id_cargas\n loads_array[:, 1] = 0\n loads_array[:, 2] = load\n \n # Boundary conditions\n d_izq = [cont for cont in range(nbounds) if\n bounds[cont] == 1]\n id_inf = [cont for cont in range(nbounds) if\n bounds[cont] == 2]\n nodes_izq = lines[1][0:9]\n nodes_izq = nodes_izq.flatten()\n nodes_inf = lines[1][10:19]\n nodes_inf = nodes_inf.flatten()\n nodes_array[nodes_izq, 3] = -1\n nodes_array[nodes_inf, 4] = -1\n \n # Materials\n mater_array = np.array([[70e9, 0.35],\n [70e9, 0.35]])\n maters = cell_data[\"gmsh:physical\"][1]\n els_array[:, 2] = [1 for mater in maters if mater == 4]\n \n # Create files\n np.savetxt(\"eles.txt\", els_array, fmt=\"%d\")\n np.savetxt(\"nodes.txt\", nodes_array, fmt=(\"%d\", \"%.4f\", \"%.4f\", \"%d\", \"%d\"))\n np.savetxt(\"loads.txt\", loads_array, fmt=(\"%d\", \"%.6f\", \"%.6f\"))\n np.savetxt(\"mater.txt\", mater_array, fmt=\"%.6f\")\n\n### Call SolidsPy Solver\n\n \"\"\"\n Make call to SolidsPy solver library\n Import SolidsPy formtted .txt files generated above\n \"\"\"\n # Call to solver\n UC = solids_GUI()\n \n node_index = np.arange(0, len(UC), 1).tolist()\n num_nodes = len(UC)\n\n### Convert solution data to .pos data format (Optional)\n\n # Output .pos files for Onelab\n with open('disc.pos', 'w') as f:\n f.write('$MeshFormat\\n')\n f.write('2.2 0 8\\n')\n f.write('$EndMeshFormat\\n')\n f.write('$NodeData\\n')\n f.write('1\\n')\n f.write('\"Magnitude\"\\n')\n f.write('1\\n')\n f.write('0\\n')\n f.write('3\\n')\n f.write('0\\n')\n f.write('1\\n')\n f.write('%f\\n' % (int(num_nodes)))\n for x in node_index:\n index = x+1\n # x_value = UC[x][0]\n y_value = UC[x][1]\n # z_value = 0\n f.write(\"%d %.6f\\n\" % (index, y_value))\n f.write('$EndNodeData')", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jackbkennedy/onelab", "keywords": "", "license": "GPL", "maintainer": "", "maintainer_email": "", "name": "onelab", "package_url": "https://pypi.org/project/onelab/", "platform": "", "project_url": "https://pypi.org/project/onelab/", "project_urls": { "Homepage": "https://github.com/jackbkennedy/onelab" }, "release_url": "https://pypi.org/project/onelab/1.0/", "requires_dist": null, "requires_python": ">=3.6", "summary": "A python package to use gmsh and ONELAB via their original python APIs", "version": "1.0", "yanked": false, "yanked_reason": null }, "last_serial": 7091794, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "8e476231e567b62c04547e53c0485f4c", "sha256": "6692b00c566437bbb27bd87f3228ed0b4c708c942d6149dee2b6ba48e1442620" }, "downloads": -1, "filename": "onelab-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8e476231e567b62c04547e53c0485f4c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 46804, "upload_time": "2019-10-13T21:37:11", "upload_time_iso_8601": "2019-10-13T21:37:11.578534Z", "url": "https://files.pythonhosted.org/packages/42/9d/899d5b26a9619e90c766189e469ee9d1b4241247718a4104881206779e84/onelab-0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "aae6afcec23f131935ac98af4113220f", "sha256": "f95b2999a76a75b97cce3178a0108b2f0fab377204a8405d3ca137b7faca41f7" }, "downloads": -1, "filename": "onelab-0.1.tar.gz", "has_sig": false, "md5_digest": "aae6afcec23f131935ac98af4113220f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 34315, "upload_time": "2019-10-13T21:37:13", "upload_time_iso_8601": "2019-10-13T21:37:13.174499Z", "url": "https://files.pythonhosted.org/packages/da/48/0070a2ef7017f190f5b1a407014cd2d09413311a8e6afe17a4d43d6e3284/onelab-0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2": [ { "comment_text": "", "digests": { "md5": "9b6829217ab4448fd3f563fc66a3f723", "sha256": "2b10b9f305df103c3fe9a9cb8390ce6eeaab0be2314391b8056adf98fad15151" }, "downloads": -1, "filename": "onelab-0.2.tar.gz", "has_sig": false, "md5_digest": "9b6829217ab4448fd3f563fc66a3f723", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 34533, "upload_time": "2019-10-19T13:33:02", "upload_time_iso_8601": "2019-10-19T13:33:02.834991Z", "url": "https://files.pythonhosted.org/packages/df/a0/d4c66f46121396956393d7ae3ecc962ea4958c5bd0264dc2b5847c7f6cf8/onelab-0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3": [ { "comment_text": "", "digests": { "md5": "88af5362543bc8dd7bda6ad2f85a06cb", "sha256": "94b45ae708015638ced8ad17ee4ac5bff7be5147479707da3d46b477983b9e27" }, "downloads": -1, "filename": "onelab-0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "88af5362543bc8dd7bda6ad2f85a06cb", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=3.6", "size": 47059, "upload_time": "2019-10-22T16:10:06", "upload_time_iso_8601": "2019-10-22T16:10:06.627532Z", "url": "https://files.pythonhosted.org/packages/89/7f/906202791cdade1d074eddc17e2bfe06f049035a48a9e48e9c4283fa3f36/onelab-0.3-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "772b7bba6e18f37cfa2e09ae1c31477d", "sha256": "75d3054a32391647b897ff12685e2c5195e4f87b85a23c57c136bd421fcfc6c3" }, "downloads": -1, "filename": "onelab-0.3.tar.gz", "has_sig": false, "md5_digest": "772b7bba6e18f37cfa2e09ae1c31477d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 34533, "upload_time": "2019-10-19T14:13:59", "upload_time_iso_8601": "2019-10-19T14:13:59.685204Z", "url": "https://files.pythonhosted.org/packages/a6/63/6b8e1d22cc08e58d41500cfebb2d5f49497306dbb731418d1d7afaf539ef/onelab-0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4": [ { "comment_text": "", "digests": { "md5": "eeba73e12b822c2654c7967b3a456180", "sha256": "9a2a66f6951038e404d8f21375711e2c02894cb3313c2970d99f1894df02191a" }, "downloads": -1, "filename": "onelab-0.4.tar.gz", "has_sig": false, "md5_digest": "eeba73e12b822c2654c7967b3a456180", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 34537, "upload_time": "2019-10-22T16:10:09", "upload_time_iso_8601": "2019-10-22T16:10:09.097313Z", "url": "https://files.pythonhosted.org/packages/44/5a/796de7bccf071630468e40e68908d02f221b281836b16161c8c277729f9d/onelab-0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5": [ { "comment_text": "", "digests": { "md5": "617a863581034537255493330fb95686", "sha256": "1bf2f2de3fc0f27b856a43f138f6b2a2b74a91d517fcee5fa629377b068b5e18" }, "downloads": -1, "filename": "onelab-0.5.tar.gz", "has_sig": false, "md5_digest": "617a863581034537255493330fb95686", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 34535, "upload_time": "2019-10-22T16:41:15", "upload_time_iso_8601": "2019-10-22T16:41:15.917646Z", "url": "https://files.pythonhosted.org/packages/0a/c9/ca0bf1102177b7ced14559b5a7e12a8ca2d0b9a226866ec126d7c114a4e3/onelab-0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6": [ { "comment_text": "", "digests": { "md5": "02b7e54cfb387f881617933e29961972", "sha256": "64ed1820216b61795749f0ace938bd42e53d0d6a527aa6ba477779f74669cf3d" }, "downloads": -1, "filename": "onelab-0.6-py2-none-any.whl", "has_sig": false, "md5_digest": "02b7e54cfb387f881617933e29961972", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=3.6", "size": 47058, "upload_time": "2019-10-22T16:56:51", "upload_time_iso_8601": "2019-10-22T16:56:51.015696Z", "url": "https://files.pythonhosted.org/packages/fe/da/fb7d1ca7299f938654706ceabecb8c90717dbf2aebc102f31988512c1acb/onelab-0.6-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8838234af3520bc4356ba1ee6ae0a584", "sha256": "3d492a02546f634fef52c374ec23e0775821842100ff21dbfc315fd3879c14b6" }, "downloads": -1, "filename": "onelab-0.6.tar.gz", "has_sig": false, "md5_digest": "8838234af3520bc4356ba1ee6ae0a584", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 34535, "upload_time": "2019-10-22T16:56:52", "upload_time_iso_8601": "2019-10-22T16:56:52.810546Z", "url": "https://files.pythonhosted.org/packages/7e/b0/f5973a06c2aae0de51945b5724d7ce2aebad3d214dd256330f56abe4a106/onelab-0.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7": [ { "comment_text": "", "digests": { "md5": "a5da06e40ebb510a758a0c0ee13b48a5", "sha256": "d87d895f90b66a6ee0af0ec0974b866142cb16a76164123e0a7f89b14fad51fc" }, "downloads": -1, "filename": "onelab-0.7-py2-none-any.whl", "has_sig": false, "md5_digest": "a5da06e40ebb510a758a0c0ee13b48a5", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=3.6", "size": 47059, "upload_time": "2019-10-22T19:21:11", "upload_time_iso_8601": "2019-10-22T19:21:11.712242Z", "url": "https://files.pythonhosted.org/packages/1d/8f/b57bafc694f7cab259b066081bd1745ae2a6ba88fb940ef84ad73511cc89/onelab-0.7-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7793a36d62598ff181b258dcb01beb48", "sha256": "8fbbf69c210a6eedef6f625744c138fbd20f2d054d3aae3ca58c2d079702f7a7" }, "downloads": -1, "filename": "onelab-0.7.tar.gz", "has_sig": false, "md5_digest": "7793a36d62598ff181b258dcb01beb48", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 34535, "upload_time": "2019-10-22T19:21:13", "upload_time_iso_8601": "2019-10-22T19:21:13.508479Z", "url": "https://files.pythonhosted.org/packages/b9/4d/b7b79fd212b138ff82ccf3fa752e967e7aa0fe2455bcef564fd44edb30d3/onelab-0.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8": [ { "comment_text": "", "digests": { "md5": "7649d72c4e7a5aae1b93d4eee8c15d3f", "sha256": "7f9d9f5e9337fe4791d3dc0e2ed90f79c4187e44a44ce614faf6800e0229835c" }, "downloads": -1, "filename": "onelab-0.8.tar.gz", "has_sig": false, "md5_digest": "7649d72c4e7a5aae1b93d4eee8c15d3f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 35174, "upload_time": "2020-01-26T16:27:51", "upload_time_iso_8601": "2020-01-26T16:27:51.204915Z", "url": "https://files.pythonhosted.org/packages/05/b3/fd7a56346a65cd430b773036ac33cd9f0dfb0141835cd7429be0929c4016/onelab-0.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9": [ { "comment_text": "", "digests": { "md5": "8f8bb9386268d7944ce17da8ab4cd1ee", "sha256": "c77bf7857873bd1c6a46c85b398c0ae3bc3ec291f9f4076478449de63addb2fd" }, "downloads": -1, "filename": "onelab-0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "8f8bb9386268d7944ce17da8ab4cd1ee", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 47793, "upload_time": "2020-01-26T20:12:19", "upload_time_iso_8601": "2020-01-26T20:12:19.250262Z", "url": "https://files.pythonhosted.org/packages/97/54/39b6a82cd04aff8d88dfb7a598c56e54e0eb140c07589ea2ff524796dc1f/onelab-0.9-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ccca5f498b0249cfe51485181fb20e3b", "sha256": "c545d31268df3e20407891c3a757e5dccab230d1f93bf6b710afc3bbcd3909cd" }, "downloads": -1, "filename": "onelab-0.9.tar.gz", "has_sig": false, "md5_digest": "ccca5f498b0249cfe51485181fb20e3b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 35207, "upload_time": "2020-01-26T20:12:24", "upload_time_iso_8601": "2020-01-26T20:12:24.584042Z", "url": "https://files.pythonhosted.org/packages/d2/0f/c92ecf37b809388c44d730461c60ffa0b57cffc77a195de8c4127c2913f6/onelab-0.9.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0": [ { "comment_text": "", "digests": { "md5": "068e6a210173fcb3a0fe9b930d21a28a", "sha256": "ef0802882b8ebd477c62de04046900d15027ad565582626003b5d55a6fda87f9" }, "downloads": -1, "filename": "onelab-1.0.tar.gz", "has_sig": false, "md5_digest": "068e6a210173fcb3a0fe9b930d21a28a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 39596, "upload_time": "2020-04-24T11:08:56", "upload_time_iso_8601": "2020-04-24T11:08:56.383102Z", "url": "https://files.pythonhosted.org/packages/ea/a8/a3c97b3788c2491a9e1145311f20dc95b148871ca80dafde23c0b3bca1fb/onelab-1.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "068e6a210173fcb3a0fe9b930d21a28a", "sha256": "ef0802882b8ebd477c62de04046900d15027ad565582626003b5d55a6fda87f9" }, "downloads": -1, "filename": "onelab-1.0.tar.gz", "has_sig": false, "md5_digest": "068e6a210173fcb3a0fe9b930d21a28a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 39596, "upload_time": "2020-04-24T11:08:56", "upload_time_iso_8601": "2020-04-24T11:08:56.383102Z", "url": "https://files.pythonhosted.org/packages/ea/a8/a3c97b3788c2491a9e1145311f20dc95b148871ca80dafde23c0b3bca1fb/onelab-1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }