Skip to main content

CoSimulation Application

The CoSimulation Application contains the core developments in coupling black-box solvers and other software-tools within Kratos Multiphysics.

Overview

List of features

Dependencies

The CoSimulation Application itself doesn't have any dependencies (except the KratosCore / KratosMPICore for serial/MPI-compilation).

For running coupled simulations the solvers to be used have to be available. Those dependencies are python-only.

The MappingApplication is required when mapping is used.

Optionally, CuPy can be installed to run the convergence accelerators on the GPU, see below.

GPU acceleration (experimental)

The convergence accelerators (mvqn, aitken, iqnils, anderson, block_mvqn, block_ibqnls) can optionally run their linear algebra on the GPU via CuPy instead of numpy. This is configured with the "backend" setting, which accepts:

  • "numpy" (default): the existing, unchanged behavior.
  • "cupy": uses CuPy. If CuPy is not installed, or no CUDA device is found, a warning is printed and the accelerator falls back to "numpy".
  • "auto": uses CuPy if it is usable, otherwise silently falls back to "numpy".
{
    "type"    : "mvqn",
    "backend" : "cupy"
}

Notes:

  • CuPy is a purely optional dependency; it is never imported unless a "cupy"/"auto" backend is requested. Install it separately, matching your CUDA toolkit version (see the CuPy installation guide).
  • The main beneficiaries are mvqn and block_mvqn, which hold a dense Jacobian of size (number of interface DOFs)². The Jacobian and the stored iteration history stay GPU-resident across iterations and time steps; only the residual and solution vectors are transferred each call.
  • GPU acceleration only pays off for larger interfaces (roughly thousands of DOFs and up); for small interfaces the host<->device transfer and kernel-launch overhead makes it slower than numpy. It is opt-in for this reason.
  • Double-precision (float64) throughput on consumer GPUs is typically much lower than on server/datacenter GPUs; keep this in mind before switching a production run.
  • mvqn's dense Jacobian peaks near 5 * n^2 * 8 bytes of GPU memory for n interface DOFs (J and J_hat persist across iterations, plus the transient b = identity(row), least-squares result and J_tilde inside UpdateSolution); make sure this fits in the available GPU memory for large interfaces.

Examples

The examples can be found in the examples repository. Please also refer to the tests for examples of how the coupling can be configured. Especially the Mok-FSI and the Wall-FSI tests are very suitable for getting a basic understanding.

User Guide

This section guides users of the CoSimulationApplication to setting up and performing coupled simulations. The overall workflow is the same as what is used for most Kratos applications. It consists of the following files:

  • MainKratosCoSim.py This file is to be executed with python to run the coupled simulation
  • ProjectParametersCoSim.json This file contains the configuration for the coupled simulation

Setting up a coupled simulation

For running a coulpled simulation at least the two files above are required. In addition, the input for the solvers / codes participating in the coupled simulation are necessary.

The MainKratosCoSim.py file looks like this (see also here:

import KratosMultiphysics as KM
from KratosMultiphysics.CoSimulationApplication.co_simulation_analysis import CoSimulationAnalysis

"""
For user-scripting it is intended that a new class is derived
from CoSimulationAnalysis to do modifications
Check also "kratos/python_scripts/analysis-stage.py" for available methods that can be overridden
"""

parameter_file_name = "ProjectParametersCoSim.json"
with open(parameter_file_name,'r') as parameter_file:
    parameters = KM.Parameters(parameter_file.read())

simulation = CoSimulationAnalysis(parameters)
simulation.Run()

It can be executed with python:

python MainKratosCoSim.py

If the coupled simulation runs in a distributed environment (MPI) then MPI is required to launch the script

mpiexec -np 4 python MainKratosCoSim.py --using-mpi

Not the passing of the --using-mpi flag which tells Kratos that it runs in MPI.

The JSON configuration file

The configuration of the coupled simulation is written in json format, same as for the rest of Kratos.

It contains two settings:

  • problem_data: this setting contains global settings of the coupled problem.

    "start_time" : 0.0,
    "end_time" : 15.0,
    "echo_level" : 0, // verbosity, higher values mean more output
    "print_colors" : true, // use colors in the prints
    "parallel_type" : "OpenMP" // or "MPI"
    
  • solver_settings: the settings of the coupled solver.

    "type" : "coupled_solvers.gauss_seidel_weak", // type of the coupled solver, see python_scripts/coupled_solvers
    "predictors" : [], // list of predictors
    "num_coupling_iterations" : 10, // max number of coupling iterations, only available for strongly coupled solvers
    "convergence_accelerators" : [] // list of convergence accelerators, only available for strongly coupled solvers
    "convergence_criteria" : [] // list of convergence criteria, only available for strongly coupled solvers
    "data_transfer_operators" : {} // map of data transfer operators (e.g. mapping)
    "coupling_sequence" : [] // list specifying in which order the solvers are called
    "solvers" : {} // map of solvers participating in the coupled simulation, specifying their input and interfaces
    

See the next section for a basic example with more explanations.

Basic FSI example

This example is the Wall FSI benchmark, see [1], chapter 7.5.3. The Kratos solvers are used to solve this problem. The input files for this example can be found here

{
    "problem_data" :
    {
        "start_time" : 0.0,
        "end_time" : 3.0,
        "echo_level" : 0, // printing no additional output
        "print_colors" : true, // using colors for prints
        "parallel_type" : "OpenMP"
    },
    "solver_settings" :
    {
        "type" : "coupled_solvers.gauss_seidel_weak", // weakly coupled simulation, no interface convergence is checked
        "echo_level" : 0, // no additional output from the coupled solver
        "predictors" : [ // using a predictor to improve the stability of the simulation
            {
                "type" : "average_value_based",
                "solver"         : "fluid",
                "data_name"      : "load"
            }
        ],
        "data_transfer_operators" : {
            "mapper" : {
                "type" : "kratos_mapping",
                "mapper_settings" : {
                    "mapper_type" : "nearest_neighbor" // using a simple mapper, see the README in the MappingApplications
                }
            }
        },
        "coupling_sequence":
        [
        {
            "name": "structure", // the structural solver comes first
            "input_data_list": [ // before solving, the following data is imported in the structural solver
                {
                    "data"              : "load",
                    "from_solver"       : "fluid",
                    "from_solver_data"  : "load", // the fluid loads are mapped onto the structure
                    "data_transfer_operator" : "mapper", // using the mapper defined above (nearest neighbor)
                    "data_transfer_operator_options" : ["swap_sign"] // in Kratos, the loads have the opposite sign, hence it has to be swapped
                }
            ],
            "output_data_list": [ // after solving, the displacements are mapped to the fluid solver
                {
                    "data"           : "disp",
                    "to_solver"      : "fluid",
                    "to_solver_data" : "disp",
                    "data_transfer_operator" : "mapper"
                }
            ]
        },
        {
            "name": "fluid", // the fluid solver solves after the structure
            "output_data_list": [],
            "input_data_list": []
        }
        ],
        "solvers" : // here we specify the solvers, their input and interfaces for CoSimulation
        {
            "fluid":
            {
                "type" : "solver_wrappers.kratos.fluid_dynamics_wrapper", // using the Kratos FluidDynamicsApplication for the fluid
                "solver_wrapper_settings" : {
                    "input_file"  : "fsi_wall/ProjectParametersCFD" // input file for the fluid solver
                },
                "data" : { // definition of interfaces used in the simulation
                    "disp" : {
                        "model_part_name" : "FluidModelPart.NoSlip2D_FSI_Interface",
                        "variable_name" : "MESH_DISPLACEMENT",
                        "dimension" : 2
                    },
                    "load" : {
                        "model_part_name" : "FluidModelPart.NoSlip2D_FSI_Interface",
                        "variable_name" : "REACTION",
                        "dimension" : 2
                    }
                }
            },
            "structure" :
            {
                "type" : "solver_wrappers.kratos.structural_mechanics_wrapper", // using the Kratos StructuralMechanicsApplication for the structure
                "solver_wrapper_settings" : {
                    "input_file"  : "fsi_wall/ProjectParametersCSM" // input file for the structural solver
                },
                "data" : { // definition of interfaces used in the simulation
                    "disp" : {
                        "model_part_name" : "Structure.GENERIC_FSI_Interface",
                        "variable_name" : "DISPLACEMENT",
                        "dimension" : 2
                    },
                    "load" : {
                        "model_part_name" : "Structure.GENERIC_FSI_Interface",
                        "variable_name" : "POINT_LOAD",
                        "dimension" : 2
                    }
                }
            }
        }
    }
}

Developer Guide

Structure of the Application

The CoSimulationApplication consists of the following main components (taken from [2]):

  • SolverWrapper: Baseclass and CoSimulationApplication-interface for all solvers/codes participating in the coupled simulation, each solver/code has its own specific version.
  • CoupledSolver: Implements coupling schemes such as weak/strong coupling with Gauss-Seidel/Jacobi pattern. It derives from SolverWrapper such that it can beused in nested coupled simulations.
  • IO: Responsible for communicating and data exchange with external solvers/codes
  • DataTransferOperator: Transfers data from one discretization to another, e.g. by use of mapping techniques
  • CouplingOperation: Tool for customizing coupled simulations
  • ConvergenceAccelerator: Accelerating the solution in strongly coupled simulations by use of relaxation or Quasi-Newton techniques
  • ConvergenceCriteria: Checks if convergence is achieved in a strongly coupled simulation.
  • Predictor: Improves the convergence by using a prediction as initial guess for the coupled solution

The following UML diagram shows the relation between these components:

Besides the functionalities listed above, the modular design of the application makes it straightforward to add a new or customized version of e.g. a ConvergenceAccelerator. It is not necessary to have those custom python scripts inside the CoSimulationApplication, it is sufficient that they are in a directory that is included in the PYTHONPATH (e.g. the working directory).

How to couple a new solver / software-tool?

The CoSimulationApplication is very modular and designed to be extended to coupling of more solvers / software-tools. This requires basically two components on the Kratos side:

The interface between the CoSimulationApplication and a solver is done with the SolverWrapper. This wrapper is specific to every solver and calls the solver-custom methods based on the input of CoSimulation.

The second component necessary is an IO. This component is used by the SolverWrapper and is responsible for the exchange of data (e.g. mesh, field-quantities, geometry etc) between the solver and the CoSimulationApplication.

In principle three different options are possible for exchanging data with CoSimulation:

  • For very simple solvers IO can directly be done in python inside the SolverWrapper, which makes a separate IO superfluous (see e.g. a python-only single degree of freedom solver)
  • Using the CoSimIO. This which is the preferred way of exchanging data with the CoSimulationApplication. It is currently available for C++, C, and Python. The CoSimIO is included as the KratosCoSimIO and can be used directly. Its modular and Kratos-independent design as detached interface allows for easy integration into other codes.
  • Using a custom solution based on capabilities that are offered by the solver that is to be coupled.

The following picture shows the interaction of these components with the CoSimulationApplication and the external solver:

Interface of SolverWrapper

The SolverWrapper is the interface in the CoSimulationApplication to all involved codes / solvers. It provides the following interface (adapted from [2]), which is also called in this order:

  • Initialize: This function is called once at the beginning of the simulation, it e.g .reads the input files and prepares the internal data structures.
  • The solution loop is split into the following six functions:
    • AdvanceInTime: Advancing in time and preparing the data structure for the next time step.
    • InitializeSolutionStep: Applying boundary conditions
    • Predict: Predicting the solution of this time step to accelerate the solution.
      iterate until convergence in a strongly coupled solution:
      • SolveSolutionStep: Solving the problem for this time step. This is the only function that can be called multiple times in an iterative (strongly coupled) solution procedure.
    • FinalizeSolutionStep: Updating internals after solving this time step.
    • OutputSolutionStep: Writing output at the end of a time step
  • Finalize: Finalizing and cleaning up after the simulation

Each of these functions can implement functionalities to communicate with the external solver, telling it what to do. However, this is often skipped if the data exchange is used for the synchronization of the solvers. This is often done in "classical" coupling tools. I.e. the code to couple internally duplicates the coupling sequence and synchronizes with the coupling tool through the data exchange.

An example of a SolverWrapper coupled to an external solver using this approach can be found here. Only the mesh exchange is done explicitly at the beginning of the simulation, the data exchange is done inside SolveSolutionStep.

The coupled solver has to duplicate the coupling sequence, it would look e.g. like this (using CoSimIO) for a weak coupling:

# solver initializes ...

CoSimIO::ExportMesh(...) # send meshes to the CoSimulationApplication

# start solution loop
while time < end_time:
    CoSimIO::ImportData(...) # get interface data

    # solve the time step

    CoSimIO::ExportData(...) # send new data to the CoSimulationApplication

An example for an FSI problem where the structural solver of Kratos is used as an external solver can be found here. The CoSimIO is used for communicating between the CoSimulationApplication and the structural solver

While this approach is commonly used, it has the significant drawback that the coupling sequence has to be duplicated, which not only has the potential for bugs and deadlocks but also severely limits the useability when it comes to trying different coupling algorithms. Then not only the input for the CoSimulationApplication has to be changed but also the source code in the external solver!

Hence a better solution is proposed in the next section:

Remote controlled CoSimulation

A unique feature of Kratos CoSimulation (in combination with the CoSimIO) is the remotely controlled CoSimulation. The main difference to the "classical" approach which duplicates the coupling sequence in the external solver is to give the full control to CoSimulation. This is the most flexible approach from the point of CoSimulation, as then neither the coupling sequence nor any other coupling logic has to be duplicated in the external solver.

In this approach the external solver registers the functions necessary to perform coupled simulations through the CoSimIO. These are then called remotely through the CoSimulationApplication. This way any coupling algorithm can be used without changing anything in the external solver.

# defining functions to be registered
def SolveSolution()
{
    # external solver solves timestep
}

def ExportData()
{
    # external solver exports data to the CoSimulationApplication
}

# after defining the functions they can be registered in the CoSimIO:

CoSimIO::Register(SolveSolution)
CoSimIO::Register(ExportData)
# ...

# After all the functions are registered and the solver is fully initialized for CoSimulation, the Run method is called
CoSimIO::Run() # this function runs the coupled simulation. It returns only after finishing

A simple example of this can be found in the CoSimIO.

The SolverWrapper for this approach sends a small control signal in each of its functions to the external solver to tell it what to do. This could be implemented as the following:

class RemoteControlSolverWrapper(CoSimulationSolverWrapper):
    # ...
    # implement other methods as necessary
    # ...

    def InitializeSolutionStep(self):
        data_config = {
            "type"           : "control_signal",
            "control_signal" : "InitializeSolutionStep"
        }
        self.ExportData(data_config)

    def SolveSolutionStep(self):
        for data_name in self.settings["solver_wrapper_settings"]["export_data"].GetStringArray():
            # first tell the controlled solver to import data
            data_config = {
                "type"            : "control_signal",
                "control_signal"  : "ImportData",
                "data_identifier" : data_name
            }
            self.ExportData(data_config)

            # then export the data from Kratos
            data_config = {
                "type" : "coupling_interface_data",
                "interface_data" : self.GetInterfaceData(data_name)
            }
            self.ExportData(data_config)

        # now the external solver solves
        super().SolveSolutionStep()

        for data_name in self.settings["solver_wrapper_settings"]["import_data"].GetStringArray():
            # first tell the controlled solver to export data
            data_config = {
                "type"            : "control_signal",
                "control_signal"  : "ExportData",
                "data_identifier" : data_name
            }
            self.ExportData(data_config)

            # then import the data to Kratos
            data_config = {
                "type" : "coupling_interface_data",
                "interface_data" : self.GetInterfaceData(data_name)
            }
            self.ImportData(data_config)

A full example for this can be found here.

If it is possible for an external solver to implement this approach, it is recommended to use it as it is the most robust and flexible.

Nevertheless both approaches are possible with the CoSimulationApplication.

Using a solver in MPI

By default, each SolverWrapper makes use of all ranks in MPI. This can be changed if e.g. the solver that is wrapped by the SolverWrapper does not support MPI or to specify to use less rank.

The base SolverWrapper provides the _GetDataCommunicator function for this purpose. In the baseclass, the default DataCommunicator (which contains all ranks in MPI) is returned. The SolverWrapper will be instantiated on all the ranks on which this DataCommunicator is defined (i.e. on the ranks where data_communicator.IsDefinedOnThisRank() == True).

If a solver does not support MPI-parallelism then it can only run on one rank. In such cases it should return a DataCommunicator which contains only one rank. For this purpose the function KratosMultiphysics.CoSimulationApplication.utilities.data_communicator_utilities.GetRankZeroDataCommunicator can be used. Other custom solutions are also possible, see for example the structural_solver_wrapper.

References

  • [1] Wall, Wolfgang A., Fluid structure interaction with stabilized finite elements, PhD Thesis, University of Stuttgart, 1999, http://dx.doi.org/10.18419/opus-127
  • [2] Bucher et al., Realizing CoSimulation in and with a multiphysics framework, conference proceedings, IX International Conference on Computational Methods for Coupled Problems in Science and Engineering, 2021, https://www.scipedia.com/public/Bucher_et_al_2021a

Metadata

Release files for KratosCoSimulationApplication 10.4.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for KratosCoSimulationApplication 10.4.4
File
kratoscosimulationapplication-10.4.4-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
kratoscosimulationapplication-10.4.4-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
kratoscosimulationapplication-10.4.4-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
kratoscosimulationapplication-10.4.4-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
kratoscosimulationapplication-10.4.4-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
kratoscosimulationapplication-10.4.4-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
kratoscosimulationapplication-10.4.4-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
kratoscosimulationapplication-10.4.4-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
kratoscosimulationapplication-10.4.4-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
kratoscosimulationapplication-10.4.4-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
kratoscosimulationapplication-10.4.4-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
kratoscosimulationapplication-10.4.4-cp39-cp39-manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ x86-64 Details
kratoscosimulationapplication-10.4.4-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
kratoscosimulationapplication-10.4.4-cp38-cp38-manylinux_2_28_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.28+ x86-64 Details

Total release size: 26.7 MB

Release files / kratoscosimulationapplication-10.4.4-cp314-cp314-win_amd64.whl

Download URL kratoscosimulationapplication-10.4.4-cp314-cp314-win_amd64.whl
Size 1.0 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
ccf958a8fb124223f2aff40490c8ec1a5134267fa5dc707e3aeb98d75be81971
BLAKE2b-256 checksum
How to use checksums
d6fbd2a5a047fd8e1856fe866eccebfd095e5c54c0083966080a550632d3499b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / kratoscosimulationapplication-10.4.4-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL kratoscosimulationapplication-10.4.4-cp314-cp314-manylinux_2_28_x86_64.whl
Size 2.8 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a3f183610b9ad50f6b6dddec10c2118d36376569036662ddaa535874534c428a
BLAKE2b-256 checksum
How to use checksums
5025873b61b622613360dc2c0218f7dc7111c3ea01137fd83c55b988cee32d40
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / kratoscosimulationapplication-10.4.4-cp313-cp313-win_amd64.whl

Download URL kratoscosimulationapplication-10.4.4-cp313-cp313-win_amd64.whl
Size 1.0 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
42cb44738c09b0eebf6e778975980a1d88b85c8eafc7f015fe9fe72cb1be636b
BLAKE2b-256 checksum
How to use checksums
f0650a384de886eba53664d0a221c9b1d83b639bbb75cc4ba05ce7796a45f6e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / kratoscosimulationapplication-10.4.4-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL kratoscosimulationapplication-10.4.4-cp313-cp313-manylinux_2_28_x86_64.whl
Size 2.8 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4c29a2253fa12d76e6adab462f3cccf61a1349bdb60d5065334dd60e18dd4d21
BLAKE2b-256 checksum
How to use checksums
3c3ea66edf8dec1397a27e7df49cbed68479c1ca56dc777ba5f4a501c6320153
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / kratoscosimulationapplication-10.4.4-cp312-cp312-win_amd64.whl

Download URL kratoscosimulationapplication-10.4.4-cp312-cp312-win_amd64.whl
Size 1.0 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
32bccedd37886ecf414f595315a767aaf1abdf000be425c1dd22a78e53adc2fb
BLAKE2b-256 checksum
How to use checksums
bdba9912119c9425474d7da800f34951478d3e13b9a62663dc57c62aee610fc8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / kratoscosimulationapplication-10.4.4-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL kratoscosimulationapplication-10.4.4-cp312-cp312-manylinux_2_28_x86_64.whl
Size 2.8 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
75eff0213e122fe7be09bf22295e631320e016898540717eb2f893f50ae68f4d
BLAKE2b-256 checksum
How to use checksums
5ef8b06442274ae1f86f9e7b3b3c2cd7e48aba2b4312674113eb9b237cfd420c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / kratoscosimulationapplication-10.4.4-cp311-cp311-win_amd64.whl

Download URL kratoscosimulationapplication-10.4.4-cp311-cp311-win_amd64.whl
Size 1.0 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
8a4754a7cc83be9cfd7344af2acfa53d8e896841558daf328f5f712819134d2d
BLAKE2b-256 checksum
How to use checksums
d0d3322b77a0bee35ddbffed715122edc02e1bbffe977f2ee54ffe3311a65d96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / kratoscosimulationapplication-10.4.4-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL kratoscosimulationapplication-10.4.4-cp311-cp311-manylinux_2_28_x86_64.whl
Size 2.8 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
821b9af81791b4fbe39cf77905f8fbb3b59644c23d99a366c56e0e6beb4ed545
BLAKE2b-256 checksum
How to use checksums
39a8e235cc49487bd09b5ea5212552a597fb5bd394d21d1938b39cb5d837398a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / kratoscosimulationapplication-10.4.4-cp310-cp310-win_amd64.whl

Download URL kratoscosimulationapplication-10.4.4-cp310-cp310-win_amd64.whl
Size 1.0 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
23a8bb817268029ee0275b66bdcd0608da6783db525ca69fd9c011b8cc4b3528
BLAKE2b-256 checksum
How to use checksums
0dcc91f506347cac52a87b58eae78ff051840bdf2a04b5c8efed90699615f481
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / kratoscosimulationapplication-10.4.4-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL kratoscosimulationapplication-10.4.4-cp310-cp310-manylinux_2_28_x86_64.whl
Size 2.8 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
59f2825e3e55ff7786ee11b5fabb4a3ce765cacd9a8da2865fc294a02e6e32f9
BLAKE2b-256 checksum
How to use checksums
a8a3514659992ae1d9a284ffda45c26ebdfaa03e117a68a01d69340041833c83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / kratoscosimulationapplication-10.4.4-cp39-cp39-win_amd64.whl

Download URL kratoscosimulationapplication-10.4.4-cp39-cp39-win_amd64.whl
Size 1.0 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
83bdb683636e0727827a68b36fffe89e1eb041ab4f590f8d248c14d3eeb0e405
BLAKE2b-256 checksum
How to use checksums
86d8f043c0b3fe7ecb7b066fd5660446f1af35b826b35c3d9f15e942ebd3927c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / kratoscosimulationapplication-10.4.4-cp39-cp39-manylinux_2_28_x86_64.whl

Download URL kratoscosimulationapplication-10.4.4-cp39-cp39-manylinux_2_28_x86_64.whl
Size 2.8 MB
Tags CPython 3.9 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1b94d7ae3ff1fb15b42745fc85a46a59c589132aa53a68fee52f0607047eba21
BLAKE2b-256 checksum
How to use checksums
5bf252b99ec4024fc0ad07a0ae7574e6282d88a0300105534a46030ed1fb665c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / kratoscosimulationapplication-10.4.4-cp38-cp38-win_amd64.whl

Download URL kratoscosimulationapplication-10.4.4-cp38-cp38-win_amd64.whl
Size 1.0 MB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
121afbbbc03f233871911d6412129b7579727ac17c8fa0650b5d4f6609fe8858
BLAKE2b-256 checksum
How to use checksums
d4ca0ae3041acd3678e56479324edafde2aafa7175c37371e57e7d12335faea2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / kratoscosimulationapplication-10.4.4-cp38-cp38-manylinux_2_28_x86_64.whl

Download URL kratoscosimulationapplication-10.4.4-cp38-cp38-manylinux_2_28_x86_64.whl
Size 2.8 MB
Tags CPython 3.8 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1c5dd2a3124d8696c1057eeee64625e6ebc4cbd2f624d7278feb3c7dbbd928c2
BLAKE2b-256 checksum
How to use checksums
f926ee18894aa9842bfa66d63db7bfc0c46d2224a3cccffc53e2c0198a55b54b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release history Release notifications | RSS feed

This release

10.4.4 This release

14 release files

10.2.3

5 release files

10.2.2

6 release files

10.2.0

5 release files

9.5.2

10 release files

9.5.1

10 release files

9.5

10 release files

9.4.6

4 release files

9.4.5

8 release files

9.4.4

8 release files

9.4.3

8 release files

9.4.2

8 release files

9.4.1

8 release files

9.4

8 release files

9.3.2

8 release files

9.3.1

8 release files

9.3

8 release files

9.2.2

5 release files

9.2.1

10 release files

9.2.0

10 release files

9.1.4

9 release files

9.1.2

9 release files

9.1.1

4 release files

9.1.0

9 release files

9.0.2

9 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page