{"id":15050993,"url":"https://github.com/sensoranalyticsaus/surf","last_synced_at":"2026-01-02T05:20:45.197Z","repository":{"id":249801506,"uuid":"832593914","full_name":"SensorAnalyticsAus/surf","owner":"SensorAnalyticsAus","description":"Adaptive Dynamic Relaxation Programs in ANSI C and FORTRAN","archived":false,"fork":false,"pushed_at":"2024-08-20T07:32:51.000Z","size":1183,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-20T21:52:08.936Z","etag":null,"topics":["adaptive","debian","dynamic-relaxation","finite-element-methods","raspberry-pi","ubuntu"],"latest_commit_sha":null,"homepage":"https://www.sensoranalytics.com.au","language":"Fortran","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-23T10:37:14.000Z","updated_at":"2024-08-20T07:32:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"e8b5bd43-5e18-470d-afa9-f4e9bb932560","html_url":"https://github.com/SensorAnalyticsAus/surf","commit_stats":null,"previous_names":["sensoranalyticsaus/surf"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SensorAnalyticsAus%2Fsurf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SensorAnalyticsAus%2Fsurf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SensorAnalyticsAus%2Fsurf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SensorAnalyticsAus%2Fsurf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SensorAnalyticsAus","download_url":"https://codeload.github.com/SensorAnalyticsAus/surf/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243513303,"owners_count":20302924,"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","dynamic-relaxation","finite-element-methods","raspberry-pi","ubuntu"],"created_at":"2024-09-24T21:30:09.731Z","updated_at":"2026-01-02T05:20:45.151Z","avatar_url":"https://github.com/SensorAnalyticsAus.png","language":"Fortran","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Adaptive Dynamic Relaxation\n\n## About\nDynamic Relaxation (DR) is a niche finite element analysis (FEA) technique which allows form-finding of flexible objects such as roofing sails, elastic-receptacles, robotic masks etc. This archive contains ANSI C and FORTRAN programs for carrying out adaptive DR analysis. This process can be broken down into following steps.\n\n* Specifying a coarse 2D mesh with boundary nodes and out-of-plane loaded nodes.\n* Computing the deformed coarse 3D mesh, from the loading, and elemental stresses by DR.\n* Conducting adaptive analysis.\n* Generating a refined mesh using the meshing parameters computed during adaptive analysis.\n* Mapping the refined 2D adaptive mesh to coarse 3D mesh to form the final 3D refined mesh.\n## Installation\nAssuming `gcc` is already installed.\n```\nsudo apt update\nsudo apt upgrade\nsudo apt install gfortran\nsudo apt install okular ghostscript\n\ngit clone https://github.com/SensorAnalyticsAus/surf.git\ncd surf\nmake distclean\nmake all\nmake clean\n```\n## Dynamic Relaxation\nCopy over a *dot-dat* file and call it `input.dat`\n```\ncd run\ncp ../dot-dat/walldr.dat \ncp walldr.dat input.dat\n```\n### Initial Mesh: walldr.dat\n![coarse 2D input mesh](/assets/PNG/walldr.png)\nRun the DR program `flat2`\n```\n../flat2 \n input number of required iterations\n1000\n INPUT MASS ADDITION\n1000\n INPUT DENSITY\n1\n OUTPUT /SLACK LENGTHS T/F\nf\n\n\n INITIALISE LOAD,MASS,FOR FIRST TIME\n  ENERGY AT ITERATION    1    EQUALS       0.13556818E+09\n...\n...\nENERGY AT PEAK   ITERATION  228    EQUALS       0.46047986E-09\n  ENERGY AT ITERATION  229    EQUALS       0.42586760E-10\n```\n ## Plot DR results\n```\ncp data.dat input.dat\n../plotp\noutput 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)\nf\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 ?\n4\n  isoyes =   T\n input vertical angle\n30\n input horizontal angle\n30\n    pltf4.plt     opened \n enter the title\nwalldr.dat after DR\n   4.6354998053636374E-310   0.0000000000000000        0.0000000000000000        0.0000000000000000\n```\n## Display DR Output\n```\nps2pdf pltf4.plt\nokular pltf4.plt.pdf\n```\n![DR displaced mesh walldr-o.dat](/assets/PNG/walldr-o.png)\n## Adaptive Analysis\n```\ncp data.dat walldr-o.dat\ncp stress.dat walldr-o.str\n../adpgs1 \nEnter the input file (.dat assumed)\nwalldr-o\nExample rect                    \n0.007000 0.000000 \nopening walldr-o.str for reading the stresses\n 1.11530e+05  1.22930e+04  3.18390e+04\n...\n...\n9.17860e+03  1.14650e+05  2.63560e+04\n\n nita (percent) from the current mesh = 72.263493\n he_min = 1.238584  he_max = 16.746790\nEnter your own hmin \n1.25\nMagnification =   1.0 (hmin =   1.2)\n*** Element errors are stored in walldr-o.err ***\n*** Mesh parameters are in walldr-o.me \n*** Adaptivity results are in walldr-o.adp\n```\n## Mesh Refinement\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)\nwalldr-o\nExample rect                    \n0.007000 0.000000 \nopening walldr-o.men for reading \ncannot open walldr-o.men  opening walldr-o.me for read\nEnter [1] if coarse background mesh is to be refined\n1\nEnter [1] if mesh post-processing required\n1\nThe program is to be run without debug\n\n The No. of p_stack elems = 0\nCoarse BG mesh elem no.1 resulted in --\u003e nn = 63 and ne = 94\n...\n...\nCoarse BG mesh elem no.28 resulted in --\u003e nn = 63 and ne = 94\n\n over all diagonal exchange started \n\n overall smoothing started\niln = 10\n\n Time taken for mesh generation =     0.0000 min\n\n\n\n  *** Mesh Compiled with 676 Nodes and 1198 Element *** \n*** File walldr-oo.dat with 676 nodes \u0026 1198 elements has been generated ***\n*** Neural net training data saved in walldr-o.inf ***\n```\n## Map the 2D refined mesh to its 3D geometry\n```\n../surfgs1 \nEnter the (3D) coarse mesh file name (without extension)\nwalldr-o\nExample rect                    \n0.000000 0.000000 \nEnter the (2D) refined mesh file name (without extension)\nwalldr-oo\nExample rect                    \n0.000000 0.000000 \nDmax = 141.421356\nNq = 77.781746\nHigher Nq value can improve the quality of mesh\nEnter Nq or RETURN to accept computed value\n500\nNq is set to: 500.000000\n***input.dat file has been generated***\n```\n## Plot the adaptive (3D) 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)\nf\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 ?\n4\n  isoyes =   T\n input vertical angle\n30\n input horizontal angle\n30\n    pltf4.plt     opened \n enter the title\nAdaptive Refined Mesh walldr-oo.dat     \n   4.6357120049427339E-310   0.0000000000000000        0.0000000000000000        0.0000000000000000\n```\n## Display mapped mesh\n```\nps2pdf pltf4.plt\nokular pltf4.plt.pdf \n```\n![adaptive refined mesh walldr-oo.png](/assets/PNG/walldr-oo.png)\n## Remarks\nMapping of any 2D unstructured mesh onto a 3D surface is detailed in Khan and Topping [1]. Further information on adaptive DR is available in Topping and Khan [2]. The DR method is outlined in Topping and Khan [3].\n\n## References\n[[1](/assets/PDF/surf.pdf)] AI Khan and BHV Topping, Three Dimensional Adaptive Surface Re-Meshing For Large Displacement Finite Element Analysis\n\n[[2](https://www.saxe-coburg.co.uk/pubs/descrip/btak.htm)]: BHV. Topping and AI Khan, PARALLEL FINITE ELEMENT COMPUTATIONS, Saxe-Coburg Publications\n\n[[3](/assets/PDF/pardr.pdf)]: BHV Topping, AI Khan, *Parallel schemes for dynamic relaxation*, engineering computations Int J Comput Aided Eng Software. v11, 513-548\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsensoranalyticsaus%2Fsurf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsensoranalyticsaus%2Fsurf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsensoranalyticsaus%2Fsurf/lists"}