The finite element model updating (FEMU) and the structural optimization of the high-fidelity numerical model for large civil structures require significant computational resources and efficient optimization algorithms. This project developed a cluster computing-aided model updating programming framework for high-fidelity FE models of large structures, based on the open-source platforms OpenSees and Python. Firstly, a high-performance computing (HPC) cluster was established using dispy, a distributed and parallel computing framework for Python. Then, a reliable and efficient model updating algorithm, cluster computing-aided PSO, based on the PSO algorithm from the heuristic algorithm library Scikit-opt, was developed for cluster computing. Lastly, Python was used to develop different functional modules (main.py, cluster_env.py, optimization.py, and cluster_pso.py) to realize the data communication between different OpenSees and the HPC cluster. Based on the above work, the computational tasks of the FEMU were allocated to the cluster computational resources to hasten the FEMU process for high-fidelity FE models of large structures. It's flexible to be applied in different engineering fields through embedding reasonable objective functions in optimization.py. More details can be referred to paper *****
(1) damage identification of a 2-story 2-span plane RC frame; (2) layout optimization of a spatial truss structure
๐ง main.py
: (a) define updating parameters; (b) call the cluster computing-aided PSO algorithm (cluster_pso.py); and (c) set up the cluster computing environment. The computer that compiles main.py is called a client.
๐ง cluster_env.py
: based on the dispy to connect different computing nodes to create and monitor the HPC cluster.
๐ง cluster_pso.py
: call the HPC cluster to parallelize the FEMU process.
๐ง optimization.py
: three functions (i.e., Modify_tcl(), Run_OpenSees(), Obj_function()) are defined to run the FE models during each iteration of PSO and compute the objective function values of different particles. Specifically, after optimization.py receives the updating parameters from the cluster_pso.py, the following works are accomplished: (a) Function Modify_tcl() generates the updated FE models through modifying the command line of the FE model file in OpenSees (i.e., โ.tclโ file), according to the parameter settings recorded by each particle. (b) Function Run_OpenSees() calls OpenSees to run the FE models generated by the function Modify_tcl(), and the simulated responses (indices) of each updated model are sent to the function Obj_ function(). (c) After receiving the indices from Run_OpenSees(), function Obj_function() is called to compute the objective function values of different particles. Then the objective function value is sent to cluster_pso.py for the next iteration.
download the file dispy or install the dispy though pip
anaconda promopt or cmd is recommended to run the dispynode.py
take the anaocnda promopt as the example
write the commend line in the anaconda promopt to call Python to run the dispynode.py: python dirctionary of dispy\dispynode.py -c 12 -i ipv4 of computing node --dest_path_prefix= define the directionary to store the file --zombie_interval=999999
๐งa example of successful computing-node
Run the main.py