ProductsAbaqus/StandardAbaqus/Explicit Preparing an Abaqus model for a structural-to-logical co-simulationTo prepare an Abaqus model for a structural-to-logical co-simulation, you need to:
The following sections briefly describe these steps. For more detailed information on co-simulation analysis model creation, see Preparing an Abaqus analysis for co-simulation. Identifying the Abaqus analysis stepThe period of time of co-simulation interaction is defined as a co-simulation event. This event begins at the start of an Abaqus analysis step (the co-simulation step) and ends by the end of that step. Any procedure type in the analysis that supports the co-simulation technique can be a co-simulation step; however, only one co-simulation step per analysis job is allowed. For multiple co-simulation steps, you can use the restart capability to define new co-simulation steps in subsequent analysis jobs. You can define a co-simulation step in which Abaqus exchanges fields with Dymola at run time. You specify co-simulation controls that define the rendezvousing scheme. Input File Usage Use the following options within a step definition: CO-SIMULATION, NAME=co-simulation name, PROGRAM=MULTIPHYSICS, CONTROLS=name CO-SIMULATION CONTROLS, NAME=name Defining sensors and actuatorsYou must define sensors and actuators. Any nodal or connector element history output variable can be defined as a named sensor. In addition, some of the whole surface contact and contact pair output history variables can be defined as a named sensor. See Sensor definition in Abaqus/Standard and Abaqus/Explicit for more details. Input File Usage Use the following options to define a sensor: OUTPUT, HISTORY, FREQUENCY, SENSOR, NAME=sensor_name NODE OUTPUT, NSET=NSET_Name nodal output variable Use the following option to define an actuator: AMPLITUDE, NAME=name, DEFINITION=ACTUATOR There are no data lines associated with this amplitude definition to define the amplitude value at a given simulation time. Instead, the amplitude value at a given simulation time will be imported from the Dymola output. The user-specified name can be referenced in any of the Abaqus options that can refer to an amplitude (such as CLOAD, BOUNDARY, FIELD, and CHANGE FRICTION). For example, CLOAD, AMPLITUDE=name 101, 3, 1.0 Identifying the sensors and actuators to be exchangedYou must specify the fields that are imported and/or exported in the Abaqus analysis during the co-simulation. The import definition ensures that the values of the Dymola outputs as computed at the time of the last data exchange are the Abaqus inputs (actuators) and are given as the current values of the specified amplitude names. Equally important, the export definition ensures that the current values of the Abaqus outputs (sensors) are given as the values of the Dymola inputs at the time of the data exchange. You can specify up to 5000 actuators/sensors. Input File Usage Use the following options to identify the sensors and actuators to be exchanged: CO-SIMULATION REGION, TYPE=DISCRETE, IMPORT Actuator_name1, Actuator_name2, etc. CO-SIMULATION REGION, TYPE=DISCRETE, EXPORT Sensor_name1, Sensor_name2, etc. The user-defined names on the data lines are comma-separated with eight entries per line. Each name must be less than 80 characters long. Use more than one data line if necessary. Defining the rendezvousing scheme: target timeThe coupling step is the period between two consecutive exchanges and, consequently, defines the exchange frequency between Abaqus and Dymola. The coupling step size is established at the beginning of each coupling step and is used to compute the target time (the time when the next synchronized exchange occurs). In most cases, exchanging data every Abaqus increment is sufficient. Determining the target timeDuring a coupled simulation between Abaqus and Dymola, the current coupling step size is negotiated by both solvers to establish a suitable coupling step size. Each solver “suggests” a coupling step size. The smaller of these suggested step sizes is then selected. Abaqus can suggest either a constant or a variable coupling step size. For a variable coupling step size, Abaqus sets the suggested coupling step size equal to the next suggested increment size computed by the automatic time incrementation scheme. Using a variable coupling step size typically leads to the most accurate solution. Abaqus and Dymola exchange the coupling step size and establish a “negotiated” coupling step size based on the smaller of the solvers’ suggested values. This coupling step size is then used to advance the target time for the next coupling rendezvous. Input File Usage Use the following option to have Abaqus suggest a constant coupling step size: CO-SIMULATION CONTROLS, STEP SIZE=coupling_step_size Use the following option to have Abaqus suggest a variable coupling step size: CO-SIMULATION CONTROLS (omit the STEP SIZE parameter) How Abaqus meets the target timeIn addition to defining the coupling step size, you define co-simulation controls to describe how Abaqus advances to its next target time. By default, Abaqus may perform several time increments during the coupling step period, referred to as “subcycling.” Subcycling allows Abaqus to cut back the current increment size and take smaller increments to resolve nonlinear events. Alternatively, you can force Abaqus to use an increment size that is equal to the negotiated coupling step size, referred to as “lockstep.” When proceeding in a lockstep manner, Abaqus will not be able to reduce the time increment to resolve nonlinear events. Consequently, Abaqus terminates the simulation in cases where the nonlinear events require that the increment size be reduced. Input File Usage Use the following option to have Abaqus suggest a constant coupling step size: CO-SIMULATION CONTROLS, TIME INCREMENTATION=LOCKSTEP Use the following option to have Abaqus suggest a variable coupling step size: CO-SIMULATION CONTROLS, TIME INCREMENTATION=SUBCYCLE Reaching target timesYou can control how accurately Abaqus meets the target time. The Abaqus target times can be reached in an “exact” or “loose” manner. By default, Abaqus reaches the target times in an exact manner; that is, Abaqus adjusts the time increment as necessary to exactly meet the target time. Alternatively, you can direct Abaqus to meet the target times in an approximate or loose manner, performing a co-simulation exchange only after a target time is passed, with time incrementation in Abaqus advancing without regard for the target time. In certain cases, such as when Abaqus takes many more increments than Dymola, the loose approach may be more cost effective. Input File Usage Use the following option to reach target times in an exact manner: CO-SIMULATION CONTROLS, TIME MARKS=YES (default) Use the following option to reach target times in a loose manner: CO-SIMULATION CONTROLS, TIME MARKS=NO Preparing the Dymola model for the coupled simulationTo prepare your Dymola model for coupled simulation, you need to:
The following sections briefly describe these steps; they are not intended to describe how to use Dymola. For further information on Dymola and its user interface, refer to the relevant user's manuals. After these steps are complete, you must have the following files in the directory from which the Dymola analysis will be run:
Defining named inputs and outputsThe Dymola graphical editor provides the most convenient way to define inputs and outputs. From the Modelica library palette, drag Modelica.Blocks.Interfaces.RealInput blocks onto the canvas to define inputs (blue-filled triangles). Use Modelica.Blocks.Interfaces.RealOutput blocks to define outputs (hollow triangles). You can change the names assigned by default via popup dialog boxes. It is important that you use all uppercase letters when specifying the names of the input and output blocks. Translating the model with the .DLL optionIn the Simulation panel, select and then click the Compiler tab. Toggle on Export model as DLL with API, and click OK. In the Simulation panel, select . A file named dymosim.dll is created in the current working folder. You should pay particular attention to the warning/error messages issued during translation. A successful co-simulation analysis can be conducted only if the translation was successful. The dymosim.dll file includes information related to this specific model. If co-simulation with other Dymola models is necessary, make sure to change the current working directory so that the dymosim.dll file is not overwritten. Defining co-simulation parametersWhile the dymosim.dll file includes information about the Dymola model itself, it does not include information about the duration of the analysis, the frequency of data exchanges, the required output frequency, and the solver type to be used for the time integration in Dymola. You need to provide this information in a separate text file, mapFileName.sgn, using the following format: Analysis: analysisTime couplingStepSize OutputPointsPerCouplingStep DymolaSolverType Guidelines for providing the information are as follows:
In most cases, specifying the following information in the map (.sgn) file is sufficient: Analysis: analysisTime analysisTime 1 8 Mapping signal namesIt is quite likely that in common practice the Dymola and the Abaqus models are prepared by different engineers in the organization as the finite element analyst may not have any controls expertise and vice versa. It is reasonable to assume that the names used for inputs in Dymola would not match the names used for Abaqus sensors and/or the names for outputs in Dymola would not match the names for Abaqus actuators. In such cases, you can modify the names used in one of the analysis programs. If that is not possible, the map (.sgn) file can be used to map signal names to be exchanged from Abaqus to Dymola. You can add the following optional lines immediately after the Analysis line described above: Actuators: AbaqusActuatorName1 DymolaOutputName1 AbaqusActuatorName2 DymolaOutputName2 Etc. Sensors: AbaqusSensorsName1 DymolaInputName1 AbaqusSensorsName1 DymolaInputName1 Etc. Guidelines for providing the information are as follows:
Executing the coupled analysisYou execute the Abaqus job as described in Abaqus/Standard and Abaqus/Explicit execution. You execute the Dymola job as described in Dymola model execution. Abaqus and Dymola can be run on heterogeneous and remote platforms that are located on the same network domain. For co-simulation purposes, Dymola has to be run on a Windows 32-bit or 64-bit system while Abaqus can be run on any supported platform available. The communication between Abaqus and Dymola is via Transmission Control Protocol (TCP) sockets. To start a coupled simulation between Abaqus and Dymola, one of the solvers must initiate the communication process, while the other solver must connect to the initiated communication process. Either Abaqus or Dymola can initiate the communication process; however, the starting method differs for each solver. Each method is discussed in the following sections. You will need to know the network host ID for the machine on which the communication process was started. This ID can either be a host name or an Internet Protocol (IP) address. The port designation allows different applications to maintain their own channels of communication. Set the port number to any available port on your system. Port numbers in the range of 0 to 65535 can be assigned. In general, port numbers under 1024 are reserved by the operating system and should be avoided. You can run multiple analysis jobs simultaneously on a given system by assigning each analysis a unique port number. The Abaqus and Dymola-related input files do not have to be located in the same directory. If the two co-simulation analyses are run on different platforms that are not binary compatible (such as a Linux 64-bit system for the Abaqus job and a 32-bit Windows system for the Dymola job), then ASCII data exchange must be enabled. To accomplish that, add the following two lines in your local environment file for machines used for the co-simulation analysis: import os os.environ['ABAQUS_DCI_FORMAT']='ASCII' See Will link to sgb-chp-env-using for details about the environment files. Abaqus initiates the communication processTo have Abaqus initiate the communication process, you supply only the port number (and not the host name) on the command line; for example, the Abaqus job can be run using the following command: abaqus job=job_name port=portNumber When Abaqus initiates the communication process, Dymola must connect to the host and the specified port where the Abaqus analysis was started. The following command can be used for the Dymola job: abaqus dymola input=mapFileName host=machineName port=portNumber Dymola initiates the communication processAlternatively, the following two commands can be used to have Dymola initiate the communication process: abaqus job=job_name host=machineName port=portNumber abaqus dymola input=mapFileName port=portNumber LimitationsStructural-to-logical co-simulation using Abaqus and Dymola is not intended for applications in which the mechanical/thermal system itself is split between the two analysis programs. For example, results obtained for a coupled analysis in which the tires and the road are modeled in Abaqus while the suspension and the body are modeled in Dymola will likely lead to unreliable results. |