====== Appendix 20: Cycle jump procedure ====== The cycle jump procedure can be used to significantly lower computation times in cases of cyclic loading (typically for fatigue). Instead of performing a complete finite-element simulation over all the cycles, groups of cycles can be extrapolated to speed up calculations: - a number of $N_i$ cycles is computed using the finite-element model; - using the results from the last 2 computed cycles, the stresses, deformations, state-variables, reactions, etc. are exrapolated for the next $N_j$ cycles. These 2 steps are then repeated until the calculation is completed. The number of cycles to be fully calculated $N_i$ and the number of "jumped" cycles $N_j$ can vary during the simulation. One can also pick the results to be extrapolated during the jump. \\ \\ The cycle jump can be performed with Lagamine using the Fortran EXTRAPOL program along with the attached Python script. The code is available on the [[https://gitlab.uliege.be/UEE/cycle-jump|GitLab]] \\ ===== Structure of the data file ===== The cycle jump procedure can be used on any cyclic simulation. It is launched using the Python script and requires an additional info file. \\ The following tables describe the structure of the info file. \\ Note: With the exception of character strings, the file is not formatted. This means numbers don't need to be put in a specific number of columns, but simply separated by spaces. ==== 1. General information ==== ^ Line 1 (A255)^^ |LAGname| Name of the *.lag file (without the extension)| ^ Line 2 (A255)^^ |DATname| Name of the data *.dat file (without the extension)| ^ Line 3 (integer)^^ |ISAVE|Units: \\ = 1 - saving of the .F03 file after every full calculation of $N_i$ cycles\\ = 2 - saving of all the .OTO file (NOT IMPLEMENTED)| |:::|Tens: \\ = 1 - saving of the ipx (ipe, ipn, ipr, ipc, and/or ips) result file(s) defined on the next line. The results are concatenated in a file named LAGname_all.ipx. The 1st line of the file containing the columns title (see [[appendices:a9|Appendix 9]]) is deleted.| ^If ISAVE≥10 - Line 3b (A255)^^ |List of the file extensions (ipe, ipn, ipr, ipc, and/or ips) the user wishes to record, separated by commas.|| ^Line 4 (2 integers)^^ |T| Period of the loading [s]| |Tmax| Final/Maximum value of the time (this corresponds to ALAMBF in a classic simulation)| ==== 2. Definition of $N_i$ and $N_j$ ==== ^Line 1^^ |Title| Anything can be written here, for instance "Cycle definition", this is just to make the file easier to read for the user| ^Line 2^^ |IDENT| = 0 - $N_i$ and $N_j$ are kept constant over the whole simulation and defined at the next line \\ = 1 - $N_i$ and $N_j$ are predefined by blocks. This allows for instance to have low values of $N_j$ at the begining of the simulation and higher values later once the beaviour of the structure is stabilized.| |:::| ≥ 10 - User-defined calculation of $N_j$. The calculation of $N_j$ must be implemented by the user in the EXTRAPOL program. \\ $N_i$ is defined according to the units (= 0 for constant $N_i$, = 1 for definition by block).| === If IDENT % 10 = 0 === ^Line 3 (1 or 2 integers)^^ |$N_i$| Value of the number of cycles for which a complete calculation is done in the Lagamine code| |$N_j$| Only if IDENT = 0 \\ Value of the number of jumped cycles| === If IDENT % 10 = 1 === ^Line 3 (1 integer)^^ |Nbloc| Number of blocks of definition| ^Line 4 (2 or 3 integers) - repeated Nbloc times^^ |Cycmax| Number of the last cycle for which this definition of $N_i$ and $N_j$ applies; i.e. the values $N_i$ and $N_j$ defined on this line will be used until cycle Cycmax is reached| |$N_i$| Value of the number of cycles for which a complete calculation is done in the Lagamine code| |$N_j$| Only if IDENT = 1 \\ Value of the number of jumped cycles| === If IDENT ≥ 10 === See specific definitions [[appendices:a20:ident|here]]. ^Line 4 or 5 (1 integer)^^ |NPAR|Number of parameters used for the user-defined computation of $N_j$\\ ≤ 50| ^Line 5 or 6^^ |Param(1:NPAR)| Parameters for the user-defined calculation of $N_j$. Parameters can be integers of double precision.| ==== 3. Extrapolation method ==== ^Line 1^^ |Title| Anything can be written here, for instance "Method"; this is just to make the file easier to read for the user| ^Line 2 (integer) ^^ |METHO| = 0 - All nodal values, reactions, stresses, and state variables are extrapolated linearly during the jump.| |:::| = XX1 (X can be 0, 1, or 2) - The elements and state variables for which one wishes a linear extrapolation during the jump are defined by the user \\ = XX2 (X can be 0, 1, or 2) - The elements defined on the following lines will have their variables extrapolated through a user-defined method| |:::| = X1X (X can be 0 or 1) - The nodal points and nodal values for which one wishes a linear extrapolation during the jump are defined by the user\\ = X2X (X can be 0, 1, or 2) - The nodes defined on the following lines will have their nodal values extrapolated through a user-defined method| |:::| = 1XX (X can be 0 or 1) = The reactions for which one wishes a linear extrapolation during the jump are defined by the user| |:::| > 222 - User-defined method of extrapolation| === For 0 < METHO < 222 === __If units = 1 (XX1)__ ^Line 1^^ |NGR| Number of groups of {elements/state variables} defined. \\ This definition by groups allows to only extrapolate specific state variables (including stresses) for different types of elements, or for same-type elements that use different material/thermal laws.| The following lines are repeated NGR times: ^Line 1 (4 integers)^^ |NelGR| Number of subgroups of elements; a subgroup of elements can consist of 1 element or multiple consecutive elements. | |NelTOT| Total number of elements in the group| |NvarGR|Number of subgroups of variables (as defined in [[appendices:a22|SIGVA]]). A subgroup of variables can consist of 1 variable or multiple consecutive variables.| |NvarTOT| Total number of variables in the group| ^Line 2 - repeated NelGR times (2 integers)^^ |IEL(i)| First element of the subgroup| |IEL(i+1)| Last element of the subgroup \\ = 0 if subgroup consists of 1 element| ^ Line NelGR+2 - repeated NvarGR times (2 integers)^^ |IVAR(i)| First variable of the subgroup; the variable number corresponds to its position in [[appendices:a22|SIGVA]]| |IVAR(i+1)| Last element of the subgroup \\ = 0 if subgroup consists of 1 element| __If units = 2 (XX2)__ ^Line 1^^ |NGR| Number of groups of elements defined.| The following lines are repeated NGR times: ^Line 1 (3 integers)^^ |NelGR| Number of subgroups of elements; a subgroup of elements can consist of 1 element or multiple consecutive elements. | |NelTOT| Total number of elements in the group| |Nmetho| Identification number of of the user-defined extrapolation method| ^Line 2 - repeated NelGR times (2 integers)^^ |IEL(i)| First element of the subgroup| |IEL(i+1)| Last element of the subgroup \\ = 0 if subgroup consists of 1 element| __If tens = 1 (X1X)__ ^Line 1^^ |NGRN| Number of groups of {nodes/nodal values} defined. \\ This definition by groups allows to only extrapolate specific nodal values for different nodes| The following lines are repeated NGR times: ^Line 1 (4 integers)^^ |NnodGR| Number of subgroups of nodes; a subgroup of nodes can consist of 1 node or multiple consecutive nodes. | |NnodTOT| Total number of nodes in the group| |NvalGR|Number of subgroups of nodal values (as defined in [[appendices:a22|CONEC]]). A subgroup of nodal values can consist of 1 nodal value or multiple consecutive nodal values.| |NvalTOT| Total number of nodal values in the group| ^Line 2 - repeated NnodGR times (2 integers)^^ |Inod(i)| First node of the subgroup| |Inod(i+1)| Last node of the subgroup \\ = 0 if subgroup consists of 1 element| ^ Line NnodGR+2 - repeated NvalGR times (2 integers)^^ |IVAl(i)| First nodal value of the subgroup. The nodal value is identified by the number ipcon=(icone-1)*nspac+ispac (see [[appendices:a22|Appendix 22: Structure of CONEC]])| |IVAl(i+1)| Last nodal value of the subgroup \\ = 0 if subgroup consists of 1 element| __If hundreds = 1 (1XX)__ ^Line 1 (2 integers)^^ |NGR_rea| Number of groups of reactions defined.| |Nreatot| Total number of reactions.| ^Line 2 - repeated NGR_rea times (2 integers)^^ |Irea(i)|First reaction number of the subgroup (from REAC vector)| |Irea(i+1)|Last reaction of the subgroup \\ = 0 if subgroup consists of 1 element|