{"id":28666,"date":"2023-10-10T13:31:59","date_gmt":"2023-10-10T11:31:59","guid":{"rendered":"https:\/\/www.risc-software.at\/referenzprojekte\/softwareprodukt-zur-produktion-im-aluminiumstranggus\/"},"modified":"2025-09-16T10:54:24","modified_gmt":"2025-09-16T08:54:24","slug":"software-product-for-production-in-continuous-casting-of-aluminum","status":"publish","type":"project","link":"https:\/\/www.risc-software.at\/en\/referenceprojects\/software-product-for-production-in-continuous-casting-of-aluminum\/","title":{"rendered":"From development to product maturity with Docker"},"content":{"rendered":"\n<p class=\"has-medium-font-size\">RISC Software GmbH supported the LKR Leichtmetallkompetenzzentrum Ranshofen in rolling out a software product for production in continuous aluminum casting. In order to unite different user environments and versions, the Docker platform was used.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p>Modern software projects require a large number of different libraries, system settings, environments and services, each in different versions. However, the end product must run on a variety of systems. Docker has emerged as the de facto standard for reconciling these divergent conditions.<br><\/p>\n\n\n\n<p>RISC Software GmbH worked with LKR Leichtmetallkompetenzzentrum Ranshofen from March to July 2022 to bring the FReSGo framework from a pure developer version to a state that allows production-ready installations to be rolled out via Docker images<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"683\" sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"https:\/\/www.risc-software.at\/app\/uploads\/2023\/10\/iStock_000003266601Medium-1024x683.jpg\" alt=\"\" class=\"wp-image-28664\" srcset=\"https:\/\/www.risc-software.at\/app\/uploads\/2023\/10\/iStock_000003266601Medium-1024x683.jpg 1024w, https:\/\/www.risc-software.at\/app\/uploads\/2023\/10\/iStock_000003266601Medium-300x200.jpg 300w, https:\/\/www.risc-software.at\/app\/uploads\/2023\/10\/iStock_000003266601Medium-768x512.jpg 768w, https:\/\/www.risc-software.at\/app\/uploads\/2023\/10\/iStock_000003266601Medium-1536x1024.jpg 1536w, https:\/\/www.risc-software.at\/app\/uploads\/2023\/10\/iStock_000003266601Medium.jpg 1888w\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Functionality<\/h3>\n\n\n\n<p>The FReSGo framework lets the user select a parameter configuration for a continuous aluminum casting via a web application. If no configuration exists for the desired parameters, the framework runs a simulation via OpenFoam to determine the necessary configuration. Web application and simulation use a common PostgreSQL database.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Initial situation<\/h3>\n\n\n\n<p>The framework, including the web application, was written in Python and ran on the respective developer computers, together with a local PostgreSQL database. In contrast, the simulation relied on a C++ component for OpenFOAM and the OpenFOAM simulation core, which required significant installation effort due to its demanding requirements. After each change, developers needed to rebuild the C++ component, and the necessary knowledge was concentrated with a single expert. All sources are managed in an LKR internal installation of Gitlab.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Measures<\/h3>\n\n\n\n<p>Took the following steps to formalize tacit knowledge and automate building, testing, and rolling out to production systems:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Introducing or revising Docker configurations for each subproject.<\/li>\n\n\n\n<li>Creating common parent Docker images so that the number of different configurations remained low.<\/li>\n\n\n\n<li>Consolidating shared information into environment variables codified in an .env file.<\/li>\n\n\n\n<li>Based on the publicly available Docker image of OpenFOAM, a simulation image was created that automatically builds the C++ component.<\/li>\n\n\n\n<li>Extraction of test cases into a custom Docker test image.<\/li>\n\n\n\n<li>Design and automation of CI\/CD build pipeline with versioning integrated with git.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Results<\/h3>\n\n\n\n<p>Development benefited enormously from the change. Whereas broken code in the repository often went unnoticed because it ran flawlessly on one developer&#8217;s specific system environment but not on another developer&#8217;s slightly different environment, the CI\/CD pipeline exposed problems much sooner after tests were built and executed. Debugging cycles were shortened.<\/p>\n\n\n\n<div style=\"height:124px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<h2 class=\"wp-block-heading\">Project partner<\/h2>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/www.ait.ac.at\/fileadmin\/template_relaunch\/img\/ait-logo-footer.svg\" alt=\"\" style=\"width:300px;height:89px\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column has-risc-grey-background-color has-background is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<h2 class=\"wp-block-heading\">Prject details<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Project parter:<\/strong>\n<ul class=\"wp-block-list\">\n<li>LKR Leichtmetallkompetenzzentrum Ranshofen (AIT Austrian Institute of Technology)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Duration:<\/strong> 8 months (5\/2022-12-2022)<\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<h2 class=\"wp-block-heading\">Contact<\/h2>\n\n\n\n<div class=\"wp-block-contact-form-7-contact-form-selector\">\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f663-o1\" lang=\"en-US\" dir=\"ltr\" data-wpcf7-id=\"663\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/en\/wp-json\/wp\/v2\/project\/28666#wpcf7-f663-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"663\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.5\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f663-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<\/fieldset>\n<div class=\"form-row\">\n\t<div class=\"form-input\">\n\t\t<p><label class=\"sr-only\" for=\"your-name\">Your name <\/label><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" id=\"your-name\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Name\" value=\"\" type=\"text\" name=\"your-name\" \/><\/span>\n\t\t<\/p>\n\t<\/div>\n\t<div class=\"form-input\">\n\t\t<p><label class=\"sr-only\" for=\"your-email\">Your email<\/label><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" id=\"your-email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"E-Mail\" value=\"\" type=\"email\" name=\"your-email\" \/><\/span>\n\t\t<\/p>\n\t<\/div>\n<\/div>\n<div class=\"form-row\">\n\t<div class=\"form-input\">\n\t\t<p><label class=\"sr-only\" for=\"your-company\">Company <\/label><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-company\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"your-company\" aria-invalid=\"false\" placeholder=\"Unternehmen\" value=\"\" type=\"text\" name=\"your-company\" \/><\/span>\n\t\t<\/p>\n\t<\/div>\n\t<div class=\"form-input\">\n\t\t<p><label class=\"sr-only\" for=\"your-position\">Position<\/label><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-position\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" aria-invalid=\"false\" placeholder=\"Position\" value=\"\" type=\"text\" name=\"your-position\" \/><\/span>\n\t\t<\/p>\n\t<\/div>\n<\/div>\n<div class=\"form-row\">\n\t<div class=\"form-input\">\n\t\t<p><label class=\"sr-only\" for=\"your-subject\"> Subject <\/label><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-subject\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" id=\"your-subject\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Thema\" value=\"\" type=\"text\" name=\"your-subject\" \/><\/span>\n\t\t<\/p>\n\t<\/div>\n<\/div>\n<p><span id=\"wpcf7-69d559e20e263-wrapper\" class=\"wpcf7-form-control-wrap phone-95-wrap\" style=\"display:none !important; visibility:hidden !important;\"><label for=\"wpcf7-69d559e20e263-field\" class=\"hp-message\">Please leave this field empty.<\/label><input id=\"wpcf7-69d559e20e263-field\"  class=\"wpcf7-form-control wpcf7-text\" type=\"text\" name=\"phone-95\" value=\"\" size=\"40\" tabindex=\"-1\" autocomplete=\"new-password\" \/><\/span><br \/>\n<label class=\"sr-only\" for=\"your-message\"> Your message (optional)<\/label><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-message\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea\" id=\"your-message\" aria-invalid=\"false\" placeholder=\"Ihre Nachricht an uns\" name=\"your-message\"><\/textarea><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"hcap-cf7\">\t\t<input\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tclass=\"hcaptcha-widget-id\"\n\t\t\t\tname=\"hcaptcha-widget-id\"\n\t\t\t\tvalue=\"eyJzb3VyY2UiOlsiY29udGFjdC1mb3JtLTdcL3dwLWNvbnRhY3QtZm9ybS03LnBocCJdLCJmb3JtX2lkIjo2NjN9-5cf29316f0fc31f5a29d11a228757560\">\n\t\t\t\t<span id=\"hcap_cf7-69d559e20e87f7.87450922\" class=\"wpcf7-form-control h-captcha \"\n\t\t\tdata-sitekey=\"3a6a81c1-2b2e-4b2a-b1eb-d9446bc09afb\"\n\t\t\tdata-theme=\"light\"\n\t\t\tdata-size=\"normal\"\n\t\t\tdata-auto=\"false\"\n\t\t\tdata-ajax=\"false\"\n\t\t\tdata-force=\"false\">\n\t\t<\/span>\n\t\t<input type=\"hidden\" id=\"_wpnonce\" name=\"_wpnonce\" value=\"2762796293\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/en\/wp-json\/wp\/v2\/project\/28666\" \/><\/span><input class=\"wpcf7-form-control wpcf7-submit has-spinner btn\" type=\"submit\" value=\"Senden\" \/>\n<\/p><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<h2 class=\"wp-block-heading\">Project management<\/h2>\n\n\n<div class=\"contact-person\">\n      <picture>\n      \n      \n      \n      \n      <img decoding=\"async\" data-aos=\"fade-zoom-in\"\n           data-aos-offset=\"0\" class=\"w-full\" width=\"212\" height=\"293\"\n           src=\"https:\/\/www.risc-software.at\/app\/uploads\/2023\/06\/pheinzlr1-removebg-preview.png\"\n           alt=\"\">\n    <\/picture>\n    \n\n<h5 class=\"wp-block-heading\">DI Paul Heinzlreiter<\/h5>\n\n\n\n<p>Senior Data Engineer<\/p>\n\n  <\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Read more<\/h2>\n\n\n<div class=\"posts-slider-block\" data-aos=\"fade-up\" data-aos-offset=\"0\" data-aos-anchor-placement=\"top-bottom\">\n        <section class=\"splide posts-slider\" aria-label=\"Gallery Slides\">\n            <div class=\"splide__arrows\">\n                <button class=\"splide__arrow splide__arrow--prev\">\n                    <span class=\"sr-only\">Previous<\/span>\n                    <img decoding=\"async\" loading=\"lazy\" width=\"25\" height=\"21\" src=\"https:\/\/www.risc-software.at\/app\/themes\/risc-theme\/public\/images\/icon-arrow.35d2ec.svg\"\n                         alt=\"Previous\">\n                <\/button>\n                <button class=\"splide__arrow splide__arrow--next\">\n                    <span class=\"sr-only\">Next<\/span>\n                    <img decoding=\"async\" loading=\"lazy\" width=\"25\" height=\"21\" src=\"https:\/\/www.risc-software.at\/app\/themes\/risc-theme\/public\/images\/icon-arrow.35d2ec.svg\"\n                         alt=\"Next\">\n                <\/button>\n            <\/div>\n            <div class=\"inner\">\n                <div class=\"splide__track\">\n                    <div class=\"splide__list\">\n\n                                                    <a href=\"https:\/\/www.risc-software.at\/en\/technicalarticles\/technical-article-mastering-the-industrial-data\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                                                                                <picture>\n                                                                                        <img decoding=\"async\" src=\"https:\/\/www.risc-software.at\/app\/uploads\/2023\/07\/iStock-858527512-1-360x214.jpg\"\n                                                 alt=\"Mastering the (industrial) Data (EN)\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>Mastering the (industrial) Data (EN)<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        How improved manufacturing is created from industrial and production process data.\n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                                    <a href=\"https:\/\/www.risc-software.at\/en\/technicalarticles\/technical-article-data-quality-in-practice\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                                                                                <picture>\n                                                                                        <img decoding=\"async\" src=\"https:\/\/www.risc-software.at\/app\/uploads\/2023\/06\/iStock-494345930-360x214.jpg\"\n                                                 alt=\"Data quality in practice\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>Data quality in practice<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        One of the central goals of data engineering is the preparation of data sets according to the requirements of the users or the subsequent process steps. The use of data can range from model training in the field of machine learning to improved internal company reporting based on an integrated database.\n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                                    <a href=\"https:\/\/www.risc-software.at\/en\/technicalarticles\/technical-article-data-engineering-the-solid-basis-for-effective-data-utilization\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                                                                                <picture>\n                                                                                        <img decoding=\"async\" src=\"https:\/\/www.risc-software.at\/app\/uploads\/2023\/06\/iStock-966899060-1-360x214.jpg\"\n                                                 alt=\"Data Engineering \u2013 the solid basis for effective data utilization\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>Data Engineering \u2013 the solid basis for effective data utilization<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        Data engineering integrates data from a wide variety of sources and makes them effectively usable. This makes it a prerequisite for effective data science, machine learning and artificial intelligence, especially in the big data area.\n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                            <\/div>\n                <\/div>\n            <\/div>\n        <\/section>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>RISC Software GmbH supported the LKR Leichtmetallkompetenzzentrum Ranshofen in rolling out a software product for production in continuous aluminum casting. In order to unite different user environments and versions, the Docker platform was used.<\/p>\n","protected":false},"featured_media":28665,"template":"","project-category":[64],"class_list":["post-28666","project","type-project","status-publish","has-post-thumbnail","hentry","project-category-industrial-ai-and-simulation-en"],"acf":[],"portrait_thumb_url":"https:\/\/www.risc-software.at\/app\/uploads\/2023\/10\/iStock_000003266601Medium-360x214.jpg","watermark":false,"_links":{"self":[{"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/project\/28666","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/project"}],"about":[{"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/types\/project"}],"version-history":[{"count":1,"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/project\/28666\/revisions"}],"predecessor-version":[{"id":34700,"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/project\/28666\/revisions\/34700"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/media\/28665"}],"wp:attachment":[{"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/media?parent=28666"}],"wp:term":[{"taxonomy":"project-category","embeddable":true,"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/project-category?post=28666"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}