{"id":15051001,"url":"https://github.com/sensoranalyticsaus/adaptivefea","last_synced_at":"2026-01-02T07:07:11.760Z","repository":{"id":249334092,"uuid":"830927211","full_name":"SensorAnalyticsAus/adaptiveFEA","owner":"SensorAnalyticsAus","description":"Adaptive Finite Element Analysis Programs in ANSI C and FORTRAN","archived":false,"fork":false,"pushed_at":"2024-09-01T07:47:24.000Z","size":2834,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-13T17:41:51.696Z","etag":null,"topics":["adaptive","debian","finite-element-methods","raspberry-pi","ubuntu"],"latest_commit_sha":null,"homepage":"https://www.sensoranalytics.com.au","language":"Tcl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SensorAnalyticsAus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-19T09:38:26.000Z","updated_at":"2024-09-01T07:47:30.000Z","dependencies_parsed_at":"2024-07-25T14:37:41.260Z","dependency_job_id":null,"html_url":"https://github.com/SensorAnalyticsAus/adaptiveFEA","commit_stats":null,"previous_names":["sensoranalyticsaus/adaptivefea"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SensorAnalyticsAus%2FadaptiveFEA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SensorAnalyticsAus%2FadaptiveFEA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SensorAnalyticsAus%2FadaptiveFEA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SensorAnalyticsAus%2FadaptiveFEA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SensorAnalyticsAus","download_url":"https://codeload.github.com/SensorAnalyticsAus/adaptiveFEA/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225406628,"owners_count":17469561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adaptive","debian","finite-element-methods","raspberry-pi","ubuntu"],"created_at":"2024-09-24T21:30:14.428Z","updated_at":"2026-01-02T07:07:11.719Z","avatar_url":"https://github.com/SensorAnalyticsAus.png","language":"Tcl","readme":"## About\nFinite Element Analysis (FEA) is a numerical modelling technique for predicting behaviour of solids, fluids, electromagnetic fields, and heat-flows. Adaptive FEA automatically adjusts its mesh density to provide more accurate results. It's done by calculating FEA error and using it to alter the mesh density until error is reduced to a tolerable limit. This archive contains the following programs for adaptive FEA: \n* **femgs1** for carrying out linear 2D FEA\n* **adpgs1** for calculating FEA error and the remeshing parameters\n* **faopgs2** for adaptive unstructured mesh generation\n* **plotp** for converting mesh, stresses, and error data into encapsulated postscript\n\n## Prerequisites\nAssuming `gcc` is already installed.\n```\nsudo apt update\nsudo apt upgrade\nsudo apt install gfortran\nsudo apt install xpdf ghostscript\n```\n\n## Install\n```\ngit clone https://github.com/SensorAnalyticsAus/adaptiveFEA.git\ncd adaptiveFEA/\nmake distclean\nmake all\nmake clean\n```\n\n## Getting Started\nFollowing steps will complete a cycle of adaptive FEA\n### Plot the initial mesh\n```\ncd ./run\ncp ../dot-dat/ex61.dat .\ncp ex61.dat input.dat\n```\nRun the mesh plotting program to view the input mesh\n```\n../plotp\n output device is postscript file pltf*.plt\n Brightness controll factor [0.]...[1.]\n0.7\n plot membrane elements ? (t/f)\nt\n plot element errors or Domain dec? (t/f)\nf\n plot stress ? (t/f)\nf\n plot cable elements ?    (t/f)\nf\n plot g strings ?   (t/f)\nf\n number nodes ?           (t/f)\nt\n number elements ? (t/f)\nf\n element reduction factor ? (0.0 - 1.0)\n0.\n auto scale ?             (t/f)\nt\n plot single view ? t/f\nt\n view no   1/2/3/4 ?\n1\n  isoyes =   F\n    pltf1.plt     opened \n enter the title\nInitial Mesh ex61.dat\n   4.6354998053636374E-310   0.0000000000000000        0.0000000000000000        0.0000000000000000\n```\nConvert output plot file to PDF format and view **ex61.dat**:\n```\nps2pdf pltf1.plt\nxpdf pltf1.plt.pdf\n```\n![ex61.png](/assets/png/ex61.png)\n\n### FEA of the Initial Mesh\n```\n../femgs1 \nEnter the input file (.dat assumed)\nex61\nExample rect\n0.001000 0.000000 \nGuass [1]  JCC [0]\n1\n\nSemi-Band-Width before = 112\n\n Semi-Band-Width reduction Yes[1] No[0]\n0\n\nSemi-Band-Width after = 112\n\n F E analysis started with node = 96 and elements = 153\niln = 5\n...\n...\n*** Time for analysis = 0.000000 min or 0 sec ***\n*** no of iterations = 0 ***\n*** The stresses are stored in ex61.str ***\n*** The results of FE  are stored in ex61.fem ***\n*** renumbered input data file ex6_.dat generated ***\n```\n### Adaptive error estimate\n```\n../adpgs1 \nEnter the input file (.dat assumed)\nex61\nExample rect\n0.001000 0.000000 \nopening ex61.str for reading the stresses\n-5.27588e+00  2.28607e-01 -2.51780e-01\n...\n...\nnita (percent) from the current mesh = 48.490119\n he_min = 0.871135  he_max = 106.717485\nEnter your own hmin \n1.25\nMagnification =   1.4 (hmin =   1.2)\n*** Element errors are stored in ex61.err ***\n*** Mesh parameters are in ex61.me \n*** Adaptivity results are in ex61.adp\n```\n### Re-mesh with adaptive refinement this time\n```\n../faopgs2 \nMax of 50000 nodes and 70000 elements can be meshed\n\n***Node para are going to be used*** \nEnter the project file name (without extension)\nex61\nExample rect\n0.001000 0.000000 \nopening ex61.men for reading \ncannot open ex61.men  opening ex61.me for read\nEnter [1] if coarse background mesh is to be refined\n1\nEnter [1] if mesh post-processing required\n1\n...\n...\n*** Mesh Compiled with 1600 Nodes and 3008 Element *** \n*** File ex61o.dat with 1600 nodes \u0026 3008 elements has been generated ***\n*** Neural net training data saved in ex61.inf ***\n```\n### Perform FEA on newly created mesh in ex61o.dat\n```\n../femgs1\nEnter the input file (.dat assumed)\nex61o\nExample rect\n0.001000 0.000000 \nGuass [1]  JCC [0]\n1\n\nSemi-Band-Width before = 2620\n\n Semi-Band-Width reduction Yes[1] No[0]\n1\n\n...\n...\n*** Time for analysis = 0.000000 min or 0 sec ***\n*** no of iterations = 0 ***\n*** The stresses are stored in ex61o.str ***\n*** The results of FE  are stored in ex61o.fem ***\n*** renumbered input data file ex61_.dat generated ***\n```\n### Calculate errors for ex61o.dat mesh\n```\n../adpgs1 \nEnter the input file (.dat assumed)\nex61o\nExample rect\n0.001000 0.000000 \nopening ex61o.str for reading the stresses\n 1.61877e+00 -3.04040e-02 -4.70029e-01\n...\n...\nnita (percent) from the current mesh = 32.172155\n he_min = 0.017925  he_max = 1371.344995\nEnter your own hmin \n.9\nMagnification =  50.2 (hmin =   0.9)\n*** Element errors are stored in ex61o.err ***\n*** Mesh parameters are in ex61o.me \n*** Adaptivity results are in ex61o.adp\n```\n### Copy output mesh, stress, and error files to plotp filenames\n```\ncp ex62o.dat input.dat\ncp ex62o.str stress.dat\ncp ex61o.err error.dat\n```\n### Plot the new mesh with say the Sxy (shear stress) overlay\n```\n../plotp \n output device is postscript file pltf*.plt\n Brightness controll factor [0.]...[1.]\n0.7\n plot membrane elements ? (t/f)\nt\n plot element errors or Domain dec? (t/f)\nf\n plot stress ? (t/f)\nt\n plot cable elements ?    (t/f)\nf\n plot g strings ?   (t/f)\nf\n number nodes ?           (t/f)\nf\n number elements ? (t/f)\nf\n element reduction factor ? (0.0 - 1.0)\n0.\n auto scale ?             (t/f)\nt\n enter 1 2 3 4 5 for sx sy sxy smax smin\n3\n plot single view ? t/f\nt\n view no   1/2/3/4 ?\n1\n  isoyes =   F\n    pltf1.plt     opened \n enter the title\nRefined Mesh ex61o.dat Sxy\n   4.6354998053636374E-310   0.0000000000000000       -22.795900000000000        33.677500000000002   \n   \n```\nConvert to PDF and view **ex61o.dat**:\n```\nps2pdf pltf1.plt\nxpdf pltf1.plt.pdf\n```\n![ex61o.png](/assets/png/ex61o.png)\n\nThe last step can be repeated to obtain a plot with the error overlay by setting plot element errors or Domain dec? option as 't' and the following option as 'f'.\n\n## dot-dat/\nThis folder contains sample *dot-dat* files for adaptive FEA. A *dot-dat* file specifies the starting mesh topology, material properties of the structure, boundary conditions, and applied force(s) i.e. load points on the structure for carrying out adaptive FEA. In this regard `try.pdf` contains information for creating custom *dot-dat* files. In such files the columns have to be maintained exactly in the same format as of `try.dat`. For instance the 3rd line of the try *dot-dat* file comprises first two fields of 6 columns i.e. 2 x 6 columns, followed by 9 fields of 5 columns i.e. 9 x 5 columns (a total of 57 vim columns). Each value must be fully contained within its own column. The FORTRAN graphics program `plotp` expect input values strictly being within the specified columns. \n\nOther *dot-dat* files may contain some data fields outside of `try.dat` populated spaces, such data fields are not read thus can be ignored.\n\n## Trouble Shooting\nIf **faopgs2**, **femgs1**, or **plotp** fail. \n* Check **dot-dat** file is conforming to the expected format.\n* Try increasing the `hmin` value in **adpgs1** to reduce the number of elements in final mesh.\n## Remarks\nFull explanation of the adaptive technique can be found in Chapter 5 of Topping and Khan [1]. An earlier version; Khan and Topping [2].\n## References\n[[1](https://www.saxe-coburg.co.uk/pubs/descrip/btak.htm)]: BHV Topping and AI Khan, PARALLEL FINITE ELEMENT COMPUTATIONS - Chapter 5, Saxe-Coburg Publications\n\n[[2](/assets/pdf/pmesh.pdf)]: AI Khan, BHV Topping, *Parallel adaptive mesh generation*, Computing systems in Engineering 2 (1), 75-101\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsensoranalyticsaus%2Fadaptivefea","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsensoranalyticsaus%2Fadaptivefea","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsensoranalyticsaus%2Fadaptivefea/lists"}