5. Validation of graphical tools and call tree#

In this section, for each tab, we propose:

  • a procedure for selecting graphic tools,

  • the description of the call tree for these procedures

The graphical tools should be tested on all distributions on which Code_Aster quality monitoring is ensured (in particular Calibre). We will check that the connections to the visualization tools are correctly made:

  • display on XMGrace and GMSH,

  • display on Salome: open a Salome session, and check in the « Visualization Settings » tab that the « Salome » option is selected.

5.1. Window for viewing deformations and MAC#

When you open CALC_ESSAI, you first come to a window allowing you to configure the visualization of the calculation results. Two options are possible:

  • Gmsh/Xmgrace: deformations are visualized in GMSH, curves in Xmgrace. The MAC are visualized in a specific Tk window,

  • Salome: all calculation results are visualized in Salomé; for MAC, we created a Salome script allowing to see MAC in the form of a constant field by elements at Gauss points.

5.1.1. Visualization test: sdls112a test case#

The validation of the features on this tab is validated in section 5.3, along with the data expansion features.

5.1.2. Compute tree#

InterfaceParameters class (file ce_ihm_parametres.py ) :

It is a subclass of the Frame (Tk) class in which IHM is made, called at the launch of CALC_ESSAI. It is composed of two main frameworks:

  • a framework for defining the visualization choice (GMSH /Xmgrace or Salomé); note that remote viewing on Salomé is not available; when a Salomé study is open, its name appears in the window; remember to click on validate to choose the study in which the results will be displayed

  • a framework for visualizing modal deformations, criterion of MAC, or simulating FRF « hammer blows » by giving a modal base and an excitation point (and visualizing them).

When selecting a result, the check_state routine checks in particular whether the models for results 1 and 2 are the same. If that’s the case, the MAC button is activated. The calculation of the MAC matrix is performed in a calculation file: ce_calcul_expansion.py (calc_mac_mode routine).

The view_frf routine allows you to view FRF in an additional window (Disp FRFDialogue class, in outils_ihm.py), which is described below.

When you choose a software set for visualization, you create an instance associated with the choice made:

  • calcessAIGMSH class, and calcessaixMGrace class for displaying curves,

  • CalcessAisAlome class; and CalcessAisalomeCurves class for displaying curves.

The list of open Salomé studies is updated with the « Refresh » button, which refers to the visu_study_list method. The called method (calcessAisalome class method), uses a script common with STANLEY (SalomeGetStudies.py).

3 methods visu_resu, visu_mac and visu_curve refer respectively to the methods of the two classes mentioned above.

Software calculation classes (file **ce_ihm_parametres.py) :*

Top class for controlling external software. In particular, it allows you to define the files where the results are printed, and to do the necessary IMPR_RESU.

CalcessAIGMSH classes (file **ce_ihm_parametres.py) :*

Class for displaying deformations in Gmsh. Note, for displaying MAC: this one is done in a python Tk window, which is defined in outils_ihm.py: we open an additional TopLevel window, and we display the MacWindowFrame frame inside.

CalcessAisalome classes (file **ce_ihm_parametres.py) :*

Class for displaying deformations in Salome. The studylist and Show routines refer to Salome scripts defined for STANLEY, via the EXEC_LOGICIEL operator.

To visualize MAC, we create a square mesh in make_mac_salome (in ce_calcul_expansion.py), and we assign to each mesh a constant field per element, whose values are equal respectively:

  • the value of MAC,

  • the order number of the first list,

  • the frequency of the first list,

  • the order number of the second list,

  • the frequency of the second list.

The Show routine displays the deformed one, using a Salome script called SalomeScriptMac.

Important note: a bug has been reported in Salomé (sheet REX 19375), and the poster created is not correct. To correct this one, you have to right click on the view + edit + OK (without changing anything in the settings).

Disp FRFDialogue classes (file **tools_ihm.py) :*

Class for displaying a TopLevel window (new window depending on the main Tk window), to display FRF from a dyna_harmo concept, or to calculate a harmonic result from a mode base and a « hammer » excitation.

  • all the concepts are initialized in the form of a list with two components, for each of the two columns,

  • when certain parameters are modified, we update all IHM; so, if the concept chosen is a modes_meca, we make the Frame appear to choose the hypotheses for calculating the associated harmonic result; if the concept is already a harmonic result, then we do not need to display this window

  • some attributes of the class:

        • self.dyna: contains the dyna_harmo, to be calculated, or already calculated; the third is used by the structural modification tab, to calculate the internal displacement given as input (defined on a supermesh self.sumail),

        • self.ddls: for each column, the list of ddls associated with a field type (self.field_chosen); NB: we check for each field that DDL exists, but we do not check if the component is not empty for the chosen node; if the component does not exist, we return an error message in the interactive window (at the time of RECU_FONCTION)

        • self.var_type_resu: for each of the two columns, allows you to say whether the selected result is a dyna_harmo or a mode_meca, and therefore to display, or not, the window for calculating a harmonic result,

        • self.param_calc: allows you to gather in a dictionary the variables entered in IHM by the user for the calculation of a harmonic result: the node and the direction of excitation, the frequency band and the frequency resolution,

        • self.param_disp: for each of the two columns, the parameters to display the FRF: node and direction of visualization, and the field to be visualized.

  • calc_dyna_line_harm: method for calculating the harmonic result, on a physical basis: the calculation is wrong for the experimental results (and is, moreover, of no interest) because the experimental physical matrices are not known

  • choix_field: look in the. TACHde the data structure if the fields corresponding to movements, speeds, and accelerations are not empty; if they are not empty,

  • choix_ddl: use CREA_CHAMP and EXTR_COMP to retrieve the field for the first order number in python format; the components of this field available are stored in the .comp of the result data structure,

display_ FRF: retrieving the function, and retrieving the error message if the selected component and/or node do not exist; the display is done using the param_visu class.

5.2. Identifying efforts#

5.2.1. Overview: sdlv125a test case#

The objective of this test case is to simulate a measurement on a cylinder excited at three points. The effort is defined by an inter-spectrum of size 3, whose functions are Gaussian (pink noise). The efforts on the DDL N2633_DX and N2633_DZ are correlated, with a phase difference of \(\pi /2\). The functions are represented on the graph below:

_images/100002010000046700000357F0A64ECA02AF51F9.png

Figure 5.2.1-a : excitation inter-spectrum.

The calculation that allowed the simulation of the data is carried out with DYNA_ALEA_MODAL, on a modal basis.

A mode base restricted to all the sensors (the « DDL sensors ») is calculated with the operator OBSERVATION, on which the physical result is restored with REST_SPEC_PHYS, to obtain a simulated measurement. The objective of the test case is to identify the efforts applied based on the data from the SPECTPH1 inter-spectrum and from the projected mode base MODEIDE1. The identification is done on a small number of DDL chosen a priority and called « DDL command ».

5.2.2. Validation of the interactive test case#

To start the test case interactively, modify the sdlv125a.comm command file by writing interactif=1 before the command CALC_ESSAI. The IHM of CALC_ESSAI is launched. Go to the « load identification » tab.

In command DEBUT, remove the CODE keyword. In this way, if the code crashes on an Aster error, it is caught in Exception, and the message is displayed in IHM of CALC_ESSAI.

  1. Choice of the mode base:

  • choose MODE_NUM: only modal characteristics are used in this database: masses, frequencies and modal damping

  1. Observable deformation base:

  • experimental model: MODELEXP: contains only 31 nodes,

  • fashion base: MODE_NUM: will be projected with OBSERVATION on MODELEXP,

  • group of nodes GPCYLRED: check the DDL DX and DZ, choose a change of reference frame “NORMALE”, with the option VECT_Y = (0.0,1.0,0.0),

  • node group GPSUPRED: check the DDL DY and choose a change of frame “CYLINDRIQUE” with AXE_Z = (0.0,1.0,0.0),

  • Click on « Validate ».

  1. Orderability basis:

  • experimental model: MODELACT: contains only 3 nodes,

  • fashion base: MODE_NUM: will be projected with OBSERVATION on MODELACT,

  • group of nodes N1: check the DDL DX and DZ,

  • node group N2: check DDL DY,

  • Click on « Validate ».

  1. Inter-spectrum in operation:

  • choose SPECTPH1, and leave Field Type to “DEPL”.

  1. Calculation parameters:

  • Do not modify them (no adjustment has been made),

  • Click on « Start »

When you « forget » one of the previous operations, check that a message appears in the message window. You should avoid displaying Python tracking in the console window, which is not explicit for the user.

The calculation takes less than a minute. Most of the calculation time is used to extract inter-spectra in the form of a Python matrix. The calculation itself is almost instantaneous. When the calculation is complete, we see all the operations performed, the last being « Calculation of Syy_S: Modal summary of displacements ».

  1. Curve display: pace of identified effort

  • In the left column for viewing the results, choose the Eff Phy option (for « physical efforts »), and click on « Validate »; select one or more functions of the inter-spectrum and visualize the curves by modifying the x-axis and ordinate scales (LIN/LOG),

  • Export the inter-spectrum: you can give it a title in the box located below the list of functions. The name of the table is the one pre-declared when the macro command is called (“EFFORTS”).

  1. Display of curves: measured/synthesized displacement comparisons:

  • In the left column, choose Depl Phy (for measured physical movements), and in the right column, Depl synt (for synthesized movements), and click on « Validate »

  • Select one or more functions to compare in each column, and click on « Show curve »

  • Export the two inter-spectra. The names are those pre-declared when the macro command is called: “DEPL_PHY”, and “DEPL_SYN”. The creation of these intersecters in Aster format is relatively long.

5.2.3. Compute tree#

The main routines used for carrying out the preceding calculation are mentioned here.

InterfaceIdentification class (file ce_ihm_identification.py ) :

It is a subclass of the Frame (Tk) class in which the identification IHM is made, called when CALC_ESSAI was launched. Notes on the behavior of this class:

  • all calculated inter-spectra are attributes of this class (initialization to a zero size, the size is given by the calculation class):

  • self.SYY: measure

  • self.syy_r: measure recalculated from modal movements,

  • Self. Sqq: modal trips,

  • Self. SQQ: modal efforts,

  • Self. SQQ_R: modal efforts recalculated from physical efforts,

  • self.sff: physical efforts of the size nb_act (number of actuators)

  • Self.syy_s: measure re-synthesized from physical efforts

  • Setup method: all graphics classes contain a setup method, called to refresh when changing tabs, or when a series of calculations is complete; this updates the drop-down menus with the new aster concepts created (for example, a mode base created by expansion in the corresponding tab).

  • _create_opt_data method: defines certain characteristics of the calculated inter-spectra (such as the access variables, nume_ddl or nume_mode associated with them), and the functions used to extract the functions,

  • _definit_observability and _definit_commandability methods: definition of interfaces for parameterizing the OBSERVATION operator that creates the concepts self.obs_co and self.com_co.

  • these concepts are calculated by clicking on « Validate » (calculate_xxxx)

  • color windows are widgets of the SelectionNode class (see below): this class allows, among other things, to retrieve the DDL associated with each node in the model, and the groups of nodes in the mesh

  • _calculate_observability and _calculate_commandability methods: launch of OBSERVATION: the keywords factors for frame changes and for filtering DDL are created in get_filters from the result of the get_selected routine, described below.

  • Calculation method: successive launches of calculations:

  • calcturb is an instance of the CalcessaiIdentification class,

  • calculates the links between the concepts of the graphics class and the equivalent concepts of the calculation class,

  • after the calculation, retrieve the new calculated concepts and associate them with attributes of the graphics class (example: self.syy = self.calcturb.SYY); the existence of the new concepts is given by a boolean variable (example: self.calcturb.is_SYY = 1, variable set to 0 at the start of the calculation)

  • Methods for displaying curves:

  • We choose the type of curve to display; for example, we choose “Eff Phy” to show physical efforts

  • we click on « Validate »: the get_list routine returns the list of functions of the corresponding inter-spectrum; example: [:ref:` [“N1_DX”,”N1_DX” < [“N1_DX”,”N1_DX”>`], [“N1_DX”,”N2_DX”], [“N2_DX”, “N2_DX”]], lists produced by the calcul_xxx_xxx functions, based on the numbering associated with the inter-spectrum (physical or generalized),

  • plot_curve: display the curves; use the _get_graph_data function, which retrieves the abscissa and ordinates of the function in the inter-spectral matrix, and the visu_curve method (InterfaceParameters class) to send the display by Xmgrace or Salome.

SelectionNode and SelectionMesh classes ( cata_ce.py file ) :

Allows you to create a widget displaying the groups of nodes associated with a mesh, and the DDL carried by the nodes of this group (green and purple widgets in the interface). Use:

  • choice of an experimental model: call to _observability_changed,

  • retrieving the model associated with the name (get_model),

  • set_result method in SelectionNode: call to set_modele_meshage,

  • set_modele_mesh method: retrieving the PRNM of the model that carries the DDL carried by each node, and the groups of nodes,

  • set_modele_mesh method: for each group, retrieving the « real components » associated with PRNM (see Aster wiki for the description of this data structure) with the find_components function.

  • get_selected method: returns the DDL coordinate change and filter data for using OBSERVATION.

CalcessAIIdentification classes **** and CalculInverse (file****ce_calcul_identification.py) ***: *

Calculation classes to perform the inverse calculation for the identification of efforts.

Notes:

  • in the other tabs, most calculations are done by Aster commands. Here, once the input data is extracted, we only use Python functions (operations on matrices, decomposition into singular values…) ),

  • The variable name xxxm1 refers to the inverse or the pseudo-inverse (by SVD) of xxx.

Description of the main methods:

  • Calculate_force method: main method of the class managing the calculation of efforts;

  • the errors in the CalculInverse class are recovered and a generic error message is displayed; in each elementary calculation method, a more precise message (specifying the dimensions of the matrices in play) is given,

  • each result is an instance of the InterSpectrum class (see cata_ce.py); you can associate it with a numbering of physical or generalized DDL, depending on the type of interspectrum calculated; to do this, you associate the inter-spectrum with an existing base; nume_phy returns a list of characters of the form [“N1_DX”,”N1_DY”,”N2_DX”…], and nume_ddl_gene returns a list of the form [“MO1”,”MO2”,”MO4”…] (numbering based on the access variable NUME_MODE).

  • Calc_Z method: calculation of the impedance matrix \(Z=\mathrm{diag}(-{\omega }^{2}+{\omega }_{j}^{2}+2\xi \omega {\omega }_{j})\) and its inverse \(\mathrm{Zm1}\); depending on the type of data (accelerations, speeds or displacements), it may be necessary to integrate by dividing by \({\omega }^{\mathrm{exp}}\), where exp is equal to 2, 1 or 0 respectively.

  • methods Calc_ SQQ, Calc_SFF: calculate respectively the pseudo-inverses of the matrices \(C\Phi\) and \({\Phi }^{T}B\) (see U4.90.01, section 6.2.1 for the meaning of these matrices); singular values that are too low (below a criterion \(\epsilon\) chosen by the user) are set to zero; after Tikhonov regularization, the inverse of the singular value \({s}_{j}\) is equal to \(\frac{{s}_{j}}{{s}_{j}^{2}+{\alpha }^{2}}\) , the parameter \(\alpha\) may be different depending on the frequency where you are (adjusted by the power \(m\)): thus, the regularization is weak when you are before or near the mode frequency, and it becomes stronger when you move away from it. The matrices calculated in this way are stored in memory in instances of the InterSpectre class.

  • Verif_syy method: recalculate the physical movements Syy_R from the modal movements to compare them with Syy (to estimate the quality of the inverse estimate),

  • Verif_ method SQQ: recalculate SQQ_Rà modal efforts from Sff to compare them with SQQ,

  • Synthes_syy method: recalculates the Syy_S movements based on the efforts identified Sff to estimate the general quality of the reversal,

  • Choix_alpha method: the parameter \(\alpha\) of Tikhonov regularization can be modified according to the frequency at which we are in relation to the natural frequencies of the base.

5.3. Data expansion#

5.3.1. Overview of the sdls112a test case#

The objective of this test case, based on an international benchmark (garteur benchmark), aims to extend the FRF and experimental modes identified on the model, i.e. to find the best linear combination of a base of modes (dynamic, static) that sticks to the experiment. For more details, see U4.90.1 (doc CALC_ESSAI), section 4.2.1, and V3.03.112 (test case reference documentation).

Note:

In non-interactive mode, the command CALC_ESSAI is completely useless here, all you have to do is use the macro command MACRO_EXPANS, or to combine the commands PROJ_MESU_MODAL and REST_GENE_PHYS. For the interactive validation of CALC_ESSAI, it is proposed to reproduce the expansions carried out in this test case.

5.3.2. Validation of the interactive test case#

To launch the test case interactively, modify the sdls112a.comm command file by writing interactif=1 before the CALC_ESSAI command. In command DEBUT, remove the CODE keyword. In this way, if the code crashes on an Aster error, it is caught in Exception, and the message is displayed in IHM of CALC_ESSAI.

Increase the memory size used to 1024 MB. To increase the speed of calculation, you can also delete or comment the following operations: TEST_RESU, TEST_TABLE, MACRO_EXPANS and the commands MAC_MODES, which you will execute interactively.

The IHM of CALC_ESSAI is launched. Go to the « load identification » tab.

  1. First test: expansion of a harmonic result based on modes:

  • choice of the expansion mode base: choose MODESet select only modes whose frequency is between 1 and 100 Hz,

  • base of FRF to be extended: choose the DYNA concept; do not select order numbers (it is not possible with MACRO_EXPANS, which uses EXTR_MODE, to extract some of the order numbers from a dyna_harmo concept.

  • choose the name of the result concept: this name must have less than 5 letters; the concepts XXX_ET (extended result), XXX_NX (expansion base reduced to the selected order numbers) and XXX_RD (reduced extended result) will be created,

  • comparison of the results extended to the initial harmonic concept: click on box FRF in the « Parameters and visualization » tab of IHM:

        • choose the two result concepts to compare: on one side DYNAet on the other XXX_RD,

        • choose the field to compare (“ACCE”),

        • choose the node and the component: for DYNA, choose the node “N1011”, component “D3”, and for XXX_RD, choose the same node with the component “DZ”,

        • click on « Show »: check that the curves displayed are almost identical.

  1. Test 2 : simulation of a FRF based on a database of modes: the objective is to compare a database of FRF experimental to the basis of FRF simulated numerically on a « hammer blow » experience:

  • click on box FRF in the « Settings and visualization » tab,

  • choose the concept MODES in one of the columns,

  • choose an excitation node (example, “N1”, excitation “FX”), a calculation frequency band (1.0, 50.0) and a frequency resolution (example: 1.0 Hz)

  • click on « Calculate »

  • show a FRF (example, depending on the node “N1, component “X”); check that the FRF is displayed correctly.

  1. Test 3: expansion of a base of experimental modes on a numerical basis:

  • restart the calculation (to avoid cluttering up the memory unnecessarily),

  • in the data expansion tab, choose the expansion base: MODES,

  • choose the base of experimental modes to be extended: MODMES; the frequencies are the same, because the test case is trivial: the modes to be extended come from the projection of the numerical modes onto the experimental model,

  • Choose a list of modes in both columns,

  • Choose a result concept name (less than 5 letters) and click on « Calculate »

  • Compare the distorted results in the « Parameters and Visualization » tab: compare, for example, the experimental modes (MODMES) and the reduced extended modes (XXX_RD), by choosing them in the double menu at the bottom of the tab, and by clicking on « Deformed »; use the visualization modes in GMSH and Salomé,

  • Show the MAC result: choose two deformations defined on the same model, and click on the MAC button; choose for example:

        • the extended modes (XXX_ET) and the expansion base,

        • the reduced extended modes (XXX_RD) and the experimental base (MODMES).

5.3.3. Compute tree#

InterfaceCorrelation class (file ce_ihm_expansion.py ) :

It is a subclass of the Frame (Tk) class in which expansion IHM is made, called at the launch of CALC_ESSAI. Notes on attributes created during initialization:

  • self.calculations: it is an instance of the CalcessaiExpansion class, which performs all the Aster calculations inherent to data expansion (launching MACRO_EXPANS mainly, and MAC_MODE for post-processing),

  • self.resu_num and self.resu_exp: respectively designate the expansion base (a mode_meca concept) and the experimental result (a mode_meca or a dyna_harmo); to these variables are associated the StringVar self.var_resu_num and self.var_resu_exp, which designate the strings containing the concept selected by the user,

  • self.var_resu1 and self.var_resu2: StringVar containing the names of the concepts selected by the user in the post-processing menu (at the bottom of IHM)

  • Setup method: all graphics classes contain a setup method, called to refresh when changing tabs, or when a series of calculations is complete; this updates the drop-down menus with the new aster concepts created (for example, a mode base created by expansion in the corresponding tab),

  • Prepare_calculations method: allows you to start the expansion calculation itself:

        • checking that the data required for the calculation have been selected by the user,

        • retrieving the list of the indices of the rows selected in the list of modes (we use the selection method of the ModeList class for this purpose),

        • assigning the attributes of the calculation class by calling the self.calculs.setup method,

        • start of calculations: self.calculs.calc_proj_resu.

CalcessAIExpansion class (ce_calcul_expansion.py file*) :*

Launch of expansion calculations, mainly macro command MACRO_EXPANS. Here we detail the operation of the main method, namely calc_proj_resu:

  • we create two to four result concepts:

          • XXX_ETest the main result of the expansion: the mode base or the extended harmonic result

          • XXX_RDest the reprojection of the extended result onto the experimental model,

          • if you select all or part of the numerical mode database, you create an extracted database called XXX_NX (condition « if self.mode_num_list »),

          • if we select all or part of the experimental mode database, we create an extracted database called XXX_EX (condition « if self.mode_exp_list »),

  • XXXest the name of the chosen concept, it must not exceed 5 characters,

  • after the calculation, all the concepts created are added to the list of existing Aster objects (self.ce_objects, or mdo) with the update command; in parallel, the MyMenu menus are themselves updated in the Interface Correlation class.

5.4. Structural modification#

5.4.1. Overview of the sdll137 test case#

The purpose of this test case is to validate the procedure and the structural modification calculation based on the measured information. It is proposed to calculate the variations of the first two natural frequencies of a free-embedded beam, following the modification made on a portion of the beam.

The A and D models of the test case detail the flow of the calculation procedure using only the standard Aster commands (without using command CALC_ESSAI).

The B and C models involve the CALC_ESSAI command.

5.4.2. Validation of the interactive test case#

To launch the sdll137b and sdll137c test cases interactively, switch the interactive variable to a non-zero value (1 for example). This variable is located before the CALC_ESSAI command is called. In command DEBUT, remove the CODE keyword. In this way, if the code crashes on an Aster error, it is caught in Exception, and the message is displayed in IHM of CALC_ESSAI.

The IHM of CALC_ESSAI is launched. Go to the « Structural Modification » tab.

  1. First test: structural modification using the ES method for choosing the expansion base (sdll137b.comm)

  • In the « Choosing the expansion base » panel, select the following input data:

Experimental modes: MODEIDE

Support model: MODLSUP

Stiffness matrix (support): KASSUP

Method (base expansion): ES

Modification model: MODLCPL

For the choice of nodes and sensor ddls, select the DDL DY and DZ of the node group CAPTEUR

For the choice of nodes and ddl interface, select all the ddls in the node group EXTERNE (the use of the elevator may be necessary in order to reach this group of nodes)

Supermesh name: SUMAIL

You can then click on Valid to validate the data entered. The list of identified eigenmodes and the list of vectors available for the expansion base are then displayed in the two columns on the left. With the mouse, all the vectors from the list of « Modes of the experimental model » and the eight vectors from the « Expansion Base » are selected.

  • In the « Coupling modification/condensed model » panel:

We keep the default settings for PROJ_MESU_MODAL and the modal calculation.

We then click on Calculate in order to obtain the natural frequencies of the modified structure which are displayed in the Modified Structure Frequencies column.

Verify that the first two natural frequencies calculated are close to: 7.79 Hz and 32.84 Hz

The quality of the expansion base can then be checked. We choose MAC for the criteria section. By clicking on Valid, a matrix presenting the results of the criterion is displayed. The expansion base is assumed to be correct if the diagonal terms in this matrix are close to unity.

To visualize the effect of the modification on deformations, click on**Deformed* in the « Comparison of initial structure/modified structure » panel.

We then see a window GMSH or SALOME appear that allows you to compare the initial modal deformations and after modification.

  1. Second test: simulation of a structural modification using method LMME for choosing the expansion base (sdll137c.comm) :

  • In the « Choice of the expansion base » panel, we choose the same input data as for the first test, except for the choice of the method for calculating the expansion base and the name of the modification model.

Method (base expansion): LMME

Modification model: MODLX

By clicking on Valid, the list of identified eigenmodes and the list of vectors available for the expansion base are displayed in the two columns on the left. With the mouse, all the vectors from the list of « Modes of the experimental model » and the first eight modes from the « Expansion Base » are selected.

  • In the « Coupling Modification/Condensed Model » panel, we perform the same procedure as for the first test.

To verify the quality of the expansion base, we will use the criterion IERI (instead of the criterion of MAC). A weighting matrix is required for this criterion. You choose to weight with the stiffness matrix by clicking on Stiffness. By clicking on Valid, a matrix presenting the results of the criterion is displayed. With criterion IERI, the expansion base is assumed to be correct if the diagonal terms of this matrix are close to zero.

5.4.3. Compute tree#

The two most important python files for structural modification calculation are: ce_ihm_modifstruct.py and ce_calcul_modifstruct.py.

The ce_ihm_modifstruct module manages the classes relating to the graphical interface part and the ce_calcul_modifstruct module manages the classes that launch the structural modification calculation procedure by calling the aster operators.

InterfaceModifStruct class

This class is a class in the ce_ihm_modifstruct module. It is the top class for the « Structural Modification » tab. It has several attributes including expansion and coupling.

self.expansion is an instance of the InterfaceExpansion class. This class allows you to enter and display the data required to choose the expansion base required to obtain the displacement field at the interface.

self.coupling is an instance of the InterfaceCoupling class. This class allows you to enter and display the various calculation parameters for estimating the natural modes of the modified structure. This modified structure is the result of the coupling between the model of the condensed initial structure and the model of the modification.

CalcessAIModifStruct class

This class is a class in the ce_calcul_modifstruct module. It makes it possible to chain together the aster operators necessary for the calculation of the natural modes of the modified structure. It includes several methods, the most important of which are:

  • calc_base_es: Calculate the expansion base using the ES method (static expansion). This method starts the MODE_STATIQUE operator. The base vectors obtained are static deformations.

  • calc_base_lmme: Calculate the expansion base using method LMME (Local Model Modeshapes Expansion). This method performs a modal calculation with the CALC_MODES operator with the PLUS_PETITE option. The base vectors obtained are eigenmodes.

  • condensation: performs the condensation of the measured model and creates the supermesh representing the initial structure. This method chains operators PROJ_MESU_MODAL, MACR_ELEM_STAT, and DEFI_MAILLAGE.

  • modes_modele_couple: calculates the natural modes of the couple system (initial structure + modification) with the calculation parameters provided by the user. This method also retro-projects the results onto the measured mesh using the DEPL_INTERNE operator.

  • indicator_choix_base_expansion: compares the displacement field at the interface obtained with the coupled model and those obtained by static expansion. The field of movement of the modified structure is recorded at the sensor point, then a static expansion is performed in order to obtain the field at the interface. This task is done using operators PROJ_MESU_MODAL, REST_GENE_PHYS,, PROJ_CHAMP, and MAC_MODES.

5.5. Calculations of interspectra, autospectra and transfer functions#

5.5.1. Overview of the zzzz241a test case#

The objective of this test case is to validate the basic signal processing functions integrated in operator CALC_SPEC. The time response of an oscillator with 4 degrees of freedom is simulated, and various transfer functions are calculated. For more details, see the U4.32.21 documentation (CALC_SPEC doc)

Note:

In non-interactive mode, the CALC_ESSAI command is completely useless here, all you have to do is use the CALC_SPEC command. For the interactive validation of CALC_ESSAI, it is proposed to reproduce the expansions carried out in this test case.

5.5.2. Validation of the interactive test case#

To launch the test case interactively, modify the zzzz241a.comm command file by replacing all the lines located under the tab_rep= CREA_TABLE command (…) (lines 196 to 307) by

TEST_CE = CALC_ESSAI (INTERACTIF =” OUI “,),

and do not use the zzzz241a.com1 tracking file.

In command DEBUT, remove the CODE keyword. In this way, if the code crashes on an Aster error, it is caught in Exception, and the message is displayed in IHM of CALC_ESSAI.

The IHM of CALC_ESSAI is launched. Go to the « Signal Processing » tab.

  1. First test: Calculation of the estimators H1 and H2 of the transfer functions, with measure 1 as a reference: Starting from the initial window of CALC_ESSAI, you must:

  • In the « Available Tables » list, select « tab_rep » to highlight the name,

  • Click on the « => » button to fill in the lists entitled « Measurement Points » and « Reference Points ». We must obtain 5 measurement points, numbered from 1 to 5, and 5 reference points, also numbered from 1 to 5, corresponding to the same measurements.

  • Choose the measurements associated with points 2 to 5 from the « Measurement Points » list, and the measurement associated with point 1 as a reference,

  • Choose the « Hanning » window,

  • Enter a length of « 12 », and click on « Duration »,

  • Enter a recovery of « 50 », and click on « Percent »,

  • Select « H1 » under the « Transfer » button, and click on « Transfer » to calculate the H1 estimators.

  • View the results by selecting « Transfer (H1) » from the list. Choose the format of the data to be displayed, as well as the nature of the axes, and click on « Visualize ».

  • Select « H2 » under the « Transfer » button, and click on « Transfer » to calculate the H2 estimators.

  • View the results by selecting « Transfer (H2) » from the list. Choose the format of the data to be displayed, as well as the nature of the axes, and click on « Visualize ».

  1. Second test: Calculation of interspectra and autospectra: Starting from the initial window of CALC_ESSAI, you must:

  • In the « Available Tables » list, select « tab_rep » to highlight the name,

  • Click on the « => » button to fill in the lists entitled « Measurement Points » and « Reference Points ». We must obtain 5 measurement points, numbered from 1 to 5, and 5 reference points, also numbered from 1 to 5, corresponding to the same measurements.

  • Choose the measures associated with points 1 to 5 in the « Measurement Points » list. The selection or not of reference measurements does not change the result, this selection being not taken into account for the calculation of the spectra.

  • Choose the « Hanning » window,

  • Enter a length of « 12 », and click on « Points »,

  • Enter a recovery of « 50 », and click on « Percent »,

  • Click on « Interspectra » to calculate the interspectra.

  • Visualize the results by selecting « Interspectra » from the list. Choose the format of the data to be displayed, as well as the nature of the axes, and click on « Visualize ».

5.5.3. Compute tree#

The « Signal Processing » tab uses a single class.

InterfaceCalcSpec class (ce_calc_spec.py file) :

Class used to manage the « Signal Processing » tab. It defines both the graphical objects and the calls to the operator CALC_SPEC, which carries out the calculations. The main methods are:

  • interfaceCalcSpec: method for generating the graphical interface (lists, frames, buttons, etc.)

  • frame_visu: method for refreshing/initializing the visualization part of the tab

  • visu_tempo: update the visualization list by adding functions imported from the tables.

  • display_mes: generating curves before displaying

  • calc_intespec: call to CALC_SPEC for calculating interspectra

  • calc_coherence: call to CALC_SPEC for calculating coherence functions

  • calc_transfer: call to CALC_SPEC to calculate transfer functions

  • crea_tab_fonc: creating a TABLE_FONCTION concept from a selection of functions