Do you want to help shape the future of the world’s energy? Nuclear fusion, the process that powers The Sun, can play a big part in our carbon-free energy future. The Culham Centre for Fusion Energy (CCFE) is part of the UK Atomic Energy Authority and is one of the world’s leading fusion research laboratories. Our scientists and engineers are working with partners around the globe to develop fusion as a new source of clean energy for tomorrow’s power stations.
The UK Atomic Energy Authority (UKAEA) is seeking a Senior Software Developer to modernise the legacy systems code PROCESS. There is a temporary position (until March 2021) available in the Power Plant Technology Group in the Technology Department at the Culham Centre for Fusion Energy.
The PROCESS systems code contains a multitude of simplified models that allow the user to determine an optimised fusion power plant design that fulfils the appropriate physics laws and engineering constraints. It is the leading European systems code for fusion applications and is heavily used to design the first European fusion power plant under contracts to EUROfusion, which means its results are typically used as input for other more detailed modelling codes. For this work it is also under constant development. Its main advantages are the speed with which results are produced as well as the large variety of different technology options implemented.
PROCESS is written in Fortran (mostly F90, but some older syntax is used) and comes with a suite of utilities written in Python. It has been maintained by UKAEA for several decades and is currently undergoing a modernisation project to allow better maintainability without disrupting the ongoing code development and work for our contracts. As part of the modernisation it is being rewritten in C++. It is version controlled via GitLab. It uses a continuous integration system (Git and Jenkins) and is partially covered by unit and integration tests. The coverage of these is planned to be extended. It has a context sensitive GUI written in C++/Qt that is not yet automatically updated for changes In the PROCESS code. The jobholder should continue to develop and implement the modernisation of PROCESS while supervising the work of another software developer.
The main responsibilities of the role will include:
* Evolve the current PROCESS modernisation strategy where necessary.
* Continue the modularisation of PROCESS to allow for easier maintainability and code development in the future
* Update the relevant documentation of PROCESS
* Manage another software developer who is supporting the PROCESS modernisation work
* Manage the Continuous Integration system and the linked set of software testing/build/review tools
* Support the PROCESS team with the implementation of models beyond the European DEMO project.
Essential Aptitudes and Experience
* A degree OR equivalent experience in computer science, physics or a related engineering discipline
* Significant experience in software development (>6 years)
* Expert knowledge of at least one compiled programming language (ideally Fortran/C++)
* Knowledge of at least one interpreted high-level programming language (ideally Python)
* Experience in refactoring legacy code
* Experience in managing long term coding projects
* Experience in developing or maintaining GUIs
* Familiarity with Linux/Unix-type computer systems
* Familiarity with a version control system (ideally Git)
* Familiarity with a continuous integration system (ideally Git/Jenkins)
* Self-motivated and capable of working in a team
The vacancy will close as soon as it is filled. Apply through our recruitment partners, Rullion, here: https://www.totaljobs.com/job/senior-software-developer/managed-solutions-job85683272