diff --git a/docs/OtherSupporting/OutListParameters.xlsx b/docs/OtherSupporting/OutListParameters.xlsx index 4bdee3aa4d..b99ef9de9e 100644 Binary files a/docs/OtherSupporting/OutListParameters.xlsx and b/docs/OtherSupporting/OutListParameters.xlsx differ diff --git a/docs/source/user/hydrodyn/input_files.rst b/docs/source/user/hydrodyn/input_files.rst index aea6e67ff4..e3e5336638 100644 --- a/docs/source/user/hydrodyn/input_files.rst +++ b/docs/source/user/hydrodyn/input_files.rst @@ -898,9 +898,12 @@ specified in the HYDRODYN section of the driver input file when running HydroDyn standalone, or by the OpenFAST program when running a coupled simulation. See :numref:`hd-summary-file` for summary file details. -For this version, **OutAll** must be set to FALSE. In future versions, -setting **OutAll** = TRUE will cause HydroDyn to auto-generate outputs -for every joint and member in the input file. +If **OutAll** is set to TRUE, HydroDyn will output the total strip-theory +forces and moments on each user-defined member and joint, followed by the +forces and moments on each computational node of the strip-theory mesh. +These additional output channels are inserted as additional columns in the +output file independent of any user-requested outputs. See :ref:`hd-outall-option` +for more information. If **OutSwtch** is set to 1, outputs are sent to a file with the name ``OutRootname.HD.out``. If **OutSwtch** is set to 2, outputs are diff --git a/docs/source/user/hydrodyn/output_files.rst b/docs/source/user/hydrodyn/output_files.rst index c3212f62c9..13791713af 100644 --- a/docs/source/user/hydrodyn/output_files.rst +++ b/docs/source/user/hydrodyn/output_files.rst @@ -166,6 +166,59 @@ data for a single 6\ **NBody**-by-6\ **NBody** matrix. If **NBodyMod** > 1 (no hydrodynamic coupling), the summary file will contain data for **NBody** 6-by-6 radiation kernal matrices. +.. _hd-outall-option: + +**OutAll** Option +~~~~~~~~~~~~~~~~~ + +If **OutAll** is set to TRUE, HydroDyn will output the total strip-theory +forces and moments on each user-defined member and joint. These are +included as additional columns in the output file independent of any +user-requested outputs. The forces and moments on the members (integrated loads across +all side walls) will be written first. For example, the 6 load components +on the first member in the **MEMBERS** table (the first row of the table) +are given by **M1TotFxi**, **M1TotFyi**, **M1TotFzi**, **M1TotMxi**, +**M1TotMyi**, and **M1TotMzi**. After the member loads, the total lumped +loads on each joint are printed next. For instance, the loads on the first +joint in the **MEMBER JOINTS** table are printed with the column names +**J1TotFxi**, **J1TotFyi**, **J1TotFzi**, **J1TotMxi**, **J1TotMyi**, and +**J1TotMzi**. Note that for these outputs, the members and joints are +simply numbered based on their order of appearance in the respective tables +in the input file, so, as an example, **J2** refers to the joint defined +on the second row of the **MEMBER JOINTS** table. The member and joint +numbering does not follow **MemberID** and **JointID**, nor does it follow +the numbering used with the user-requested member and joint outputs. + +The output forces and moments are the total strip-theory loads, including +hydrodynamic, hydrostatic, marine growth, and ballast contributions. If a +member has **PropPot** set to TRUE, the relevant load components will be +omitted for that member and its connecting joints as appropriate. All +force and moment components are resolved in the earth-fixed inertial frame +of reference, and the moments are computed about the instantaneous principal +reference point (PRP), same as the output channels **HydroFxi**, +**HydroFyi**, etc. As a reminder, the PRP is a body-fixed point located at +the earth-fixed origin when the HydroDyn structure is undisplaced. Summing +all member and joint loads gives the total strip-theory loads on the entire +structure. + +After the member and joint loads, HydroDyn also outputs the total forces +and moments on each computational node of the HydroDyn strip-theory (Morison) +mesh. This internal mesh is used to map the loads to other structural +modules, such as SubDyn, and contains joint nodes at the user-defined joint +locations followed by member internal nodes created from member discretization. +The force and moment components are again resolved in the earth-fixed inertial +frame of reference. However, the moment on each node is about the node itself, +not about the PRP as with the member and joint load outputs above. Additionally, +the joint mesh nodes can have load contributions from both member side walls +and from the joint/endplates. This is because part of the side-wall loads on +the first and last element of a member can be assignd to the joint nodes. As +a result, the load outputs at the joint nodes do not necessarily match the joint +load outputs above, which do not contain contributions from member side walls. +The nodal load output column names indicate the node number, e.g., **N1TotFxi**, +**N1TotFyi**, **N1TotFzi**, **N1TotMxi**, **N1TotMyi**, and **N1TotMzi** for +the first node. The node numbering follows the **Nodes** table in the HydroDyn +summary file. + Results File ~~~~~~~~~~~~ diff --git a/docs/source/user/inflowwind/input.rst b/docs/source/user/inflowwind/input.rst index b9655b8427..26cf44c1e0 100644 --- a/docs/source/user/inflowwind/input.rst +++ b/docs/source/user/inflowwind/input.rst @@ -117,26 +117,26 @@ be performed in a different order than if both angles are specified in the same .. _inflow_superposition: -Superposition of Wave and Current Inflow -======================================== -For MHK turbines, wave and current velocities and accelerations are superimposed (i.e., summed) such that all submerged components are exposed +Superposition/Coupling of Wave and Current Inflow +================================================= +For MHK turbines, wave and current velocities and accelerations are superimposed (i.e., summed) or coupled (see :ref:`sea-waves`) such that all submerged components are exposed to the same inflow field. Both AeroDyn and HydroDyn can query SeaState for wave field information. SeaState then queries InflowWind for the current -field, sums the velocities and accelerations, and returns the superimposed flow field information. This has several implications for modeling +field, sums or couples the velocities and accelerations, and returns the flow field information. This has several implications for modeling MHK turbines, which are listed below. Note that dynamic pressure contributions from InflowWind are neglected. When modeling a rotor or rotor/tower only (i.e., hydrodynamics modeled in AeroDyn only): - SeaState must be used when defining a flow field with waves -- Current definition in SeaState must always be set to 0 -- If SeaState is activated, InflowWind must also be activated, though the current can be set to 0 - InflowWind must be used when defining a flow field with currents +- Current definition in SeaState must always be set to 0 - For combined wave and current flow fields, SeaState will query InflowWind When modeling a rotor or rotor/tower and support structure (i.e., hydrodynamics modeled in AeroDyn and HydroDyn): - SeaState must always be used, even when defining a flow field with no waves -- Current definition in SeaState must always be set to 0 -- If SeaState is activated, InflowWind must also be activated, though the current can be set to 0 - InflowWind must be used when defining a flow field with currents +- Current definition in SeaState must always be set to 0 - For current only cases, set the SeaState wave field to 0; current information will be passed through SeaState from InflowWind -- For combined wave and current flow fields, SeaState will query InflowWind \ No newline at end of file +- For combined wave and current flow fields, SeaState will query InflowWind + +Wave and current coupling is only possible when running the OpenFAST glue code or the AeroDyn driver. This feature is not supported by the HydroDyn or MoorDyn drivers. diff --git a/docs/source/user/seastate/input_files.rst b/docs/source/user/seastate/input_files.rst index 526533ebd6..d84ff00d8e 100644 --- a/docs/source/user/seastate/input_files.rst +++ b/docs/source/user/seastate/input_files.rst @@ -107,6 +107,8 @@ When setting up the wave grid, it is necessary to make sure the wave grid is lar OpenFAST precomputes and saves the wave-field velocity, acceleration, dynamic pressure, and wave elevation at the start of the simulation. Generating and maintaining the wave grid can be memory intensive for long simulations. Users should set the wave grid to be no larger or finer than necessary to reduce memory use. Reducing **WaveTMax** or increasing **WaveDT** (see WAVES section below) also reduces memory use. For long crested waves (no directional spreading) aligned with the *X*-direction (or *Y*-direction), **NY** (or **NX**) can be reduced to the minimum allowed value of 2 to save memory. +.. _sea-waves: + Waves ----- @@ -211,7 +213,8 @@ time-averaged current velocity at the still water level. For applicable **WindTy InflowWind, users should ensure that the flow-field grid from InflowWind reaches the still water level. **WvCrntMod** has no effect when **WaveMod** = 0 or 6, or when there is no current from either SeaState (**CurrMod** = 0) or InflowWind if simulating marine -hydrokinetic turbines. +hydrokinetic turbines. See :ref:`inflow_superposition` +for additional context around wave-current coupling when simulating MHK turbines. **WaveTMax** sets the length of the incident wave kinematics time series, but it also determines the frequency step used in the inverse diff --git a/glue-codes/fast-farm/src/FAST_Farm_IO.f90 b/glue-codes/fast-farm/src/FAST_Farm_IO.f90 index 86e3f58cb3..32fce6d53c 100644 --- a/glue-codes/fast-farm/src/FAST_Farm_IO.f90 +++ b/glue-codes/fast-farm/src/FAST_Farm_IO.f90 @@ -775,11 +775,11 @@ SUBROUTINE Farm_ReadPrimaryFile( InputFile, p, WD_InitInp, AWAE_InitInp, OutList CALL ReadVarWDefault( UnIn, InputFile, WD_InitInp%NumDFull, "NumDFull", & "Distance of full wake propagation, expressed as a multiple of RotorDiamRef [>0.0] or DEFAULT [DEFAULT=15]", & - 15_IntKi, ErrStat2, ErrMsg2, UnEc); if (Failed()) return + 15.0_ReKi, ErrStat2, ErrMsg2, UnEc); if (Failed()) return CALL ReadVarWDefault( UnIn, InputFile, WD_InitInp%NumDBuff, "NumDBuff", & "Length of wake propagation buffer region, expressed as a multiple of RotorDiamRef [>=0.0] or DEFAULT [DEFAULT=5]", & - 5_IntKi, ErrStat2, ErrMsg2, UnEc); if (Failed()) return + 5.0_ReKi, ErrStat2, ErrMsg2, UnEc); if (Failed()) return WD_InitInp%RotorDiamRef = p%RotorDiamRef diff --git a/glue-codes/fast-farm/src/FAST_Farm_Subs.f90 b/glue-codes/fast-farm/src/FAST_Farm_Subs.f90 index 30a7160478..5a2eabde5c 100644 --- a/glue-codes/fast-farm/src/FAST_Farm_Subs.f90 +++ b/glue-codes/fast-farm/src/FAST_Farm_Subs.f90 @@ -211,7 +211,7 @@ SUBROUTINE Farm_Initialize( farm, InputFile, ErrStat, ErrMsg ) call AllocAry( farm%p%MaxNumPlanes, farm%p%NumTurbines, 'farm%p%MaxNumPlanes', ErrStat2, ErrMsg2); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName); if (Failed()) return do i=1,farm%p%NumTurbines ! Eventually, we will have different settings for different rotors - farm%p%MaxNumPlanes(i) = ceiling( 15.0 * Real( WD_InitInput%InputFileData%NumDFull + WD_InitInput%InputFileData%NumDBuff , ReKi ) / AWAE_InitInput%InputFileData%C_Meander ) + farm%p%MaxNumPlanes(i) = ceiling( 15.0 * ( WD_InitInput%InputFileData%NumDFull + WD_InitInput%InputFileData%NumDBuff ) / AWAE_InitInput%InputFileData%C_Meander ) farm%p%MaxNumPlanes(i) = max( 2, min( farm%p%MaxNumPlanes(i) , farm%p%n_TMax + 2 ) ) end do diff --git a/modules/aerodyn/src/AeroDyn.f90 b/modules/aerodyn/src/AeroDyn.f90 index f78f205523..e6d6da99c7 100644 --- a/modules/aerodyn/src/AeroDyn.f90 +++ b/modules/aerodyn/src/AeroDyn.f90 @@ -1412,7 +1412,7 @@ subroutine Init_RotInflow( p, RotInflow, errStat, ErrMsg ) if (Failed()) return RotInflow%Blade(k)%InflowVel = 0.0_ReKi - if (p%MHK > 0) then + if (p%MHK /= MHK_None) then call AllocAry( RotInflow%Blade(k)%InflowAcc, 3_IntKi, p%NumBlNds, 'RotInflow%Blade(k)%InflowAcc', ErrStat2, ErrMsg2 ) if (Failed()) return RotInflow%Blade(k)%InflowAcc = 0.0_ReKi @@ -1422,7 +1422,7 @@ subroutine Init_RotInflow( p, RotInflow, errStat, ErrMsg ) call AllocAry( RotInflow%Tower%InflowVel, 3_IntKi, p%NumTwrNds, 'RotInflow%Tower%InflowVel', ErrStat2, ErrMsg2 ) ! could be size zero if (Failed()) return - if (p%MHK > 0) then + if (p%MHK /= MHK_None) then call AllocAry( RotInflow%Tower%InflowAcc, 3_IntKi, p%NumTwrNds, 'RotInflow%Tower%InflowAcc', ErrStat2, ErrMsg2 ) ! could be size zero if (Failed()) return end if @@ -2031,7 +2031,7 @@ subroutine AD_CalcWind_Rotor(t, u, FlowField, p, p_AD, m, RotInflow, StartNode, if (.not. associated(FlowField)) return ! use the initial (or input) values for these inputs ! If rotor is MHK, add water depth to z coordinate - if (p%MHK > 0) then + if (p%MHK /= MHK_None) then PosOffset = [0.0_ReKi, 0.0_ReKi, p%WtrDpth] else PosOffset = 0.0_ReKi @@ -4541,7 +4541,7 @@ SUBROUTINE ValidateInputData( InitInp, InputFileData, NumBl, calcCrvAngle, ErrSt ! ............................. ! check tower mesh data: ! ............................. - if (InputFileData%TwrPotent /= TwrPotent_none .or. InputFileData%TwrShadow /= TwrShadow_none .or. InputFileData%TwrAero /= TwrAero_none .or. InitInp%MHK > 0) then + if (InputFileData%TwrPotent /= TwrPotent_none .or. InputFileData%TwrShadow /= TwrShadow_none .or. InputFileData%TwrAero /= TwrAero_none .or. InitInp%MHK /= MHK_None) then do iR = 1,size(NumBl) if (InputFileData%rotors(iR)%NumTwrNds <= 0) cycle !bjj: this could be removed since the loops here already take into account the number of tower nodes diff --git a/modules/aerodyn/src/AeroDyn_Driver_Subs.f90 b/modules/aerodyn/src/AeroDyn_Driver_Subs.f90 index f00ce5cb57..a305d32879 100644 --- a/modules/aerodyn/src/AeroDyn_Driver_Subs.f90 +++ b/modules/aerodyn/src/AeroDyn_Driver_Subs.f90 @@ -1411,7 +1411,7 @@ subroutine ValidateInputs(dvr, errStat, errMsg) if (dvr%MHK /= MHK_None .and. dvr%MHK /= MHK_FixedBottom .and. dvr%MHK /= MHK_Floating) call SetErrStat(ErrID_Fatal, 'MHK switch must be 0, 1, or 2.', ErrStat, ErrMsg, RoutineName) - if (dvr%MHK /= MHK_None .and. dvr%SS_InitInp%CompSeaSt == 1 .and. dvr%IW_InitInp%CompInflow /= 1) call SetErrStat( ErrID_Fatal, 'InflowWind must be activated for MHK turbines when SeaState is used.', ErrStat, ErrMsg, RoutineName ) + if (dvr%MHK /= MHK_None .and. dvr%SS_InitInp%CompSeaSt == 1 .and. dvr%IW_InitInp%CompInflow == 0 .and. dvr%IW_InitInp%HWindSpeed > 0) call SetErrStat( ErrID_Fatal, 'Steady Wind option in AeroDyn driver cannot be used for MHK turbines with SeaState.', ErrStat, ErrMsg, RoutineName ) if (dvr%MHK == MHK_None .and. dvr%SS_InitInp%CompSeaSt /= 0) call SetErrStat( ErrID_Fatal, 'SeaState cannot be used with wind turbines.', ErrStat, ErrMsg, RoutineName ) diff --git a/modules/hydrodyn/src/HydroDyn.f90 b/modules/hydrodyn/src/HydroDyn.f90 index 2fe891c0d2..0420ca923f 100644 --- a/modules/hydrodyn/src/HydroDyn.f90 +++ b/modules/hydrodyn/src/HydroDyn.f90 @@ -584,7 +584,9 @@ SUBROUTINE HydroDyn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, I ! Were visualization meshes requested? InputFileData%Morison%VisMeshes = p%VisMeshes - + ! Additional Morison inputs to be initialized just in case + u%Morison%PtfmRefY = 0.0_ReKi + u%Morison%PRP = [0.0_ReKi,0.0_ReKi,0.0_ReKi] ! Initialize the Morison Element Calculations CALL Morison_Init(InputFileData%Morison, u%Morison, p%Morison, x%Morison, xd%Morison, z%Morison, OtherState%Morison, & y%Morison, m%Morison, Interval, InitOut%Morison, ErrStat2, ErrMsg2 ) @@ -1204,14 +1206,11 @@ SUBROUTINE HydroDyn_UpdateStates( t, n, Inputs, InputTimes, p, x, xd, z, OtherSt DO i=1,nTime CALL Morison_CopyInput(Inputs(i)%Morison, Inputs_Morison(i), MESH_NEWCOPY, ErrStat2, ErrMsg2) call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) - ! Inputs_Morison(i)%PtfmRefY = Inputs(i)%PtfmRefY Inputs_Morison(i)%PtfmRefY = xd%PtfmRefY(i) + Inputs_Morison(i)%PRP = Inputs(i)%PRPMesh%Position(:,1) + Inputs(i)%PRPMesh%TranslationDisp(:,1) END DO CALL Morison_CopyInput(Inputs(1)%Morison, u_Morison, MESH_NEWCOPY, ErrStat2, ErrMsg2) call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) - ! u_Morison%PtfmRefY = Inputs(1)%PtfmRefY - u_Morison%PtfmRefY = xd%PtfmRefY(1) - CALL Morison_Input_ExtrapInterp(Inputs_Morison, InputTimes, u_Morison, t, ErrStat2, ErrMsg2) ! get inputs at time t call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) @@ -1762,6 +1761,7 @@ SUBROUTINE HydroDyn_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, IF ( u%Morison%Mesh%Committed ) THEN ! Make sure we are using Morison / there is a valid mesh u%Morison%PtfmRefY = PtfmRefY + u%Morison%PRP = u%PRPMesh%Position(:,1)+u%PRPMesh%TranslationDisp(:,1) CALL Morison_CalcOutput( Time, u%Morison, p%Morison, x%Morison, xd%Morison, & z%Morison, OtherState%Morison, y%Morison, m%Morison, & ErrStat2, ErrMsg2, calcMorisonHstLdsLocal ) @@ -1777,9 +1777,9 @@ SUBROUTINE HydroDyn_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, if (Failed()) return ! Aggregate the sub-module outputs - IF (p%Morison%NumOuts > 0) THEN + IF (p%Morison%NumOuts > 0 .or. p%Morison%OutAll) THEN J = p%NumOuts + 1 - DO I=1, p%Morison%NumOuts + DO I=1, size(p%Morison%OutParam) y%WriteOutput(J) = y%Morison%WriteOutput(I) J = J + 1 END DO diff --git a/modules/hydrodyn/src/HydroDyn.txt b/modules/hydrodyn/src/HydroDyn.txt index 647e5fa2f9..76191e9225 100644 --- a/modules/hydrodyn/src/HydroDyn.txt +++ b/modules/hydrodyn/src/HydroDyn.txt @@ -63,7 +63,6 @@ typedef ^ ^ INTEGER typedef ^ ^ INTEGER NUserOutputs - - - "Number of Hydrodyn-level requested output channels" - typedef ^ ^ CHARACTER(ChanLen) UserOutputs {:} - - "This should really be dimensioned with MaxOutPts" - typedef ^ ^ INTEGER OutSwtch - - - "Output requested channels to: [1=Hydrodyn.out 2=GlueCode.out 3=both files]" - -typedef ^ ^ LOGICAL OutAll - - - "Output all user-specified member and joint loads (only at each member end, not interior locations) [T/F]" - typedef ^ ^ INTEGER NumOuts - - - "The number of outputs for this module as requested in the input file" - typedef ^ ^ CHARACTER(ChanLen) OutList {:} - - "The user-requested output channel labels for this modules. This should really be dimensioned with MaxOutPts" - typedef ^ ^ LOGICAL HDSum - - - "Generate a HydroDyn summary file [T/F]" - diff --git a/modules/hydrodyn/src/HydroDyn_Input.f90 b/modules/hydrodyn/src/HydroDyn_Input.f90 index d46b2d3ef8..f8bd455f8a 100644 --- a/modules/hydrodyn/src/HydroDyn_Input.f90 +++ b/modules/hydrodyn/src/HydroDyn_Input.f90 @@ -1222,7 +1222,7 @@ SUBROUTINE HydroDyn_ParseInput( InputFileName, OutRootName, FileInfo_In, InputFi if (Failed()) return; ! OutAll - Whether or not to output information for every member and joint - call ParseVar( FileInfo_In, CurLine, 'OutAll', InputFileData%OutAll, ErrStat2, ErrMsg2, UnEc ) + call ParseVar( FileInfo_In, CurLine, 'OutAll', InputFileData%Morison%OutAll, ErrStat2, ErrMsg2, UnEc ) if (Failed()) return; ! OutSwtch - Specify how to write to an output file @@ -2804,15 +2804,6 @@ SUBROUTINE HydroDynInput_ProcessInitData( InitInp, Interval, InputFileData, ErrS ! Data section for OUTPUT !------------------------------------------------------------------------------------------------- - - ! OutAll - output all member and joint data - - IF ( InputFileData%OutAll ) THEN !TODO: Alter this check once OutAll is supported - CALL SetErrStat( ErrID_Fatal,'OutAll must be FALSE. Future versions of HydroDyn will once again support values of either TRUE or FALSE.',ErrStat,ErrMsg,RoutineName) - RETURN - END IF - - ! OutSwtch - output file switch IF ( InputFileData%OutSwtch /= 1 .AND. InputFileData%OutSwtch /= 2 .AND. InputFileData%OutSwtch /= 3 ) THEN diff --git a/modules/hydrodyn/src/HydroDyn_Output.f90 b/modules/hydrodyn/src/HydroDyn_Output.f90 index aab5dab29c..44d213c752 100644 --- a/modules/hydrodyn/src/HydroDyn_Output.f90 +++ b/modules/hydrodyn/src/HydroDyn_Output.f90 @@ -6861,405 +6861,405 @@ MODULE HydroDyn_Output B1RdtMyi,B2RdtMyi,B3RdtMyi,B4RdtMyi,B5RdtMyi,B6RdtMyi,B7RdtMyi,B8RdtMyi,B9RdtMyi, & B1RdtMzi,B2RdtMzi,B3RdtMzi,B4RdtMzi,B5RdtMzi,B6RdtMzi,B7RdtMzi,B8RdtMzi,B9RdtMzi/), & (/9,6/))) - INTEGER, PARAMETER :: FADOFAdd(99,9) = transpose(reshape((/B1ADOF1Add,B1ADOF1Add,B1ADOF1Add,B1ADOF1Add,B1ADOF1Add,B1ADOF1Add,B1ADOF1Add,B1ADOF1Add,B1ADOF1Add, & - B1ADOF2Add,B1ADOF2Add,B1ADOF2Add,B1ADOF2Add,B1ADOF2Add,B1ADOF2Add,B1ADOF2Add,B1ADOF2Add,B1ADOF2Add, & - B1ADOF3Add,B1ADOF3Add,B1ADOF3Add,B1ADOF3Add,B1ADOF3Add,B1ADOF3Add,B1ADOF3Add,B1ADOF3Add,B1ADOF3Add, & - B1ADOF4Add,B1ADOF4Add,B1ADOF4Add,B1ADOF4Add,B1ADOF4Add,B1ADOF4Add,B1ADOF4Add,B1ADOF4Add,B1ADOF4Add, & - B1ADOF5Add,B1ADOF5Add,B1ADOF5Add,B1ADOF5Add,B1ADOF5Add,B1ADOF5Add,B1ADOF5Add,B1ADOF5Add,B1ADOF5Add, & - B1ADOF6Add,B1ADOF6Add,B1ADOF6Add,B1ADOF6Add,B1ADOF6Add,B1ADOF6Add,B1ADOF6Add,B1ADOF6Add,B1ADOF6Add, & - B1ADOF7Add,B1ADOF7Add,B1ADOF7Add,B1ADOF7Add,B1ADOF7Add,B1ADOF7Add,B1ADOF7Add,B1ADOF7Add,B1ADOF7Add, & - B1ADOF8Add,B1ADOF8Add,B1ADOF8Add,B1ADOF8Add,B1ADOF8Add,B1ADOF8Add,B1ADOF8Add,B1ADOF8Add,B1ADOF8Add, & - B1ADOF9Add,B1ADOF9Add,B1ADOF9Add,B1ADOF9Add,B1ADOF9Add,B1ADOF9Add,B1ADOF9Add,B1ADOF9Add,B1ADOF9Add, & - B1ADOF10Add,B1ADOF10Add,B1ADOF10Add,B1ADOF10Add,B1ADOF10Add,B1ADOF10Add,B1ADOF10Add,B1ADOF10Add,B1ADOF10Add, & - B1ADOF11Add,B1ADOF11Add,B1ADOF11Add,B1ADOF11Add,B1ADOF11Add,B1ADOF11Add,B1ADOF11Add,B1ADOF11Add,B1ADOF11Add, & - B1ADOF12Add,B1ADOF12Add,B1ADOF12Add,B1ADOF12Add,B1ADOF12Add,B1ADOF12Add,B1ADOF12Add,B1ADOF12Add,B1ADOF12Add, & - B1ADOF13Add,B1ADOF13Add,B1ADOF13Add,B1ADOF13Add,B1ADOF13Add,B1ADOF13Add,B1ADOF13Add,B1ADOF13Add,B1ADOF13Add, & - B1ADOF14Add,B1ADOF14Add,B1ADOF14Add,B1ADOF14Add,B1ADOF14Add,B1ADOF14Add,B1ADOF14Add,B1ADOF14Add,B1ADOF14Add, & - B1ADOF15Add,B1ADOF15Add,B1ADOF15Add,B1ADOF15Add,B1ADOF15Add,B1ADOF15Add,B1ADOF15Add,B1ADOF15Add,B1ADOF15Add, & - B1ADOF16Add,B1ADOF16Add,B1ADOF16Add,B1ADOF16Add,B1ADOF16Add,B1ADOF16Add,B1ADOF16Add,B1ADOF16Add,B1ADOF16Add, & - B1ADOF17Add,B1ADOF17Add,B1ADOF17Add,B1ADOF17Add,B1ADOF17Add,B1ADOF17Add,B1ADOF17Add,B1ADOF17Add,B1ADOF17Add, & - B1ADOF18Add,B1ADOF18Add,B1ADOF18Add,B1ADOF18Add,B1ADOF18Add,B1ADOF18Add,B1ADOF18Add,B1ADOF18Add,B1ADOF18Add, & - B1ADOF19Add,B1ADOF19Add,B1ADOF19Add,B1ADOF19Add,B1ADOF19Add,B1ADOF19Add,B1ADOF19Add,B1ADOF19Add,B1ADOF19Add, & - B1ADOF20Add,B1ADOF20Add,B1ADOF20Add,B1ADOF20Add,B1ADOF20Add,B1ADOF20Add,B1ADOF20Add,B1ADOF20Add,B1ADOF20Add, & - B1ADOF21Add,B1ADOF21Add,B1ADOF21Add,B1ADOF21Add,B1ADOF21Add,B1ADOF21Add,B1ADOF21Add,B1ADOF21Add,B1ADOF21Add, & - B1ADOF22Add,B1ADOF22Add,B1ADOF22Add,B1ADOF22Add,B1ADOF22Add,B1ADOF22Add,B1ADOF22Add,B1ADOF22Add,B1ADOF22Add, & - B1ADOF23Add,B1ADOF23Add,B1ADOF23Add,B1ADOF23Add,B1ADOF23Add,B1ADOF23Add,B1ADOF23Add,B1ADOF23Add,B1ADOF23Add, & - B1ADOF24Add,B1ADOF24Add,B1ADOF24Add,B1ADOF24Add,B1ADOF24Add,B1ADOF24Add,B1ADOF24Add,B1ADOF24Add,B1ADOF24Add, & - B1ADOF25Add,B1ADOF25Add,B1ADOF25Add,B1ADOF25Add,B1ADOF25Add,B1ADOF25Add,B1ADOF25Add,B1ADOF25Add,B1ADOF25Add, & - B1ADOF26Add,B1ADOF26Add,B1ADOF26Add,B1ADOF26Add,B1ADOF26Add,B1ADOF26Add,B1ADOF26Add,B1ADOF26Add,B1ADOF26Add, & - B1ADOF27Add,B1ADOF27Add,B1ADOF27Add,B1ADOF27Add,B1ADOF27Add,B1ADOF27Add,B1ADOF27Add,B1ADOF27Add,B1ADOF27Add, & - B1ADOF28Add,B1ADOF28Add,B1ADOF28Add,B1ADOF28Add,B1ADOF28Add,B1ADOF28Add,B1ADOF28Add,B1ADOF28Add,B1ADOF28Add, & - B1ADOF29Add,B1ADOF29Add,B1ADOF29Add,B1ADOF29Add,B1ADOF29Add,B1ADOF29Add,B1ADOF29Add,B1ADOF29Add,B1ADOF29Add, & - B1ADOF30Add,B1ADOF30Add,B1ADOF30Add,B1ADOF30Add,B1ADOF30Add,B1ADOF30Add,B1ADOF30Add,B1ADOF30Add,B1ADOF30Add, & - B1ADOF31Add,B1ADOF31Add,B1ADOF31Add,B1ADOF31Add,B1ADOF31Add,B1ADOF31Add,B1ADOF31Add,B1ADOF31Add,B1ADOF31Add, & - B1ADOF32Add,B1ADOF32Add,B1ADOF32Add,B1ADOF32Add,B1ADOF32Add,B1ADOF32Add,B1ADOF32Add,B1ADOF32Add,B1ADOF32Add, & - B1ADOF33Add,B1ADOF33Add,B1ADOF33Add,B1ADOF33Add,B1ADOF33Add,B1ADOF33Add,B1ADOF33Add,B1ADOF33Add,B1ADOF33Add, & - B1ADOF34Add,B1ADOF34Add,B1ADOF34Add,B1ADOF34Add,B1ADOF34Add,B1ADOF34Add,B1ADOF34Add,B1ADOF34Add,B1ADOF34Add, & - B1ADOF35Add,B1ADOF35Add,B1ADOF35Add,B1ADOF35Add,B1ADOF35Add,B1ADOF35Add,B1ADOF35Add,B1ADOF35Add,B1ADOF35Add, & - B1ADOF36Add,B1ADOF36Add,B1ADOF36Add,B1ADOF36Add,B1ADOF36Add,B1ADOF36Add,B1ADOF36Add,B1ADOF36Add,B1ADOF36Add, & - B1ADOF37Add,B1ADOF37Add,B1ADOF37Add,B1ADOF37Add,B1ADOF37Add,B1ADOF37Add,B1ADOF37Add,B1ADOF37Add,B1ADOF37Add, & - B1ADOF38Add,B1ADOF38Add,B1ADOF38Add,B1ADOF38Add,B1ADOF38Add,B1ADOF38Add,B1ADOF38Add,B1ADOF38Add,B1ADOF38Add, & - B1ADOF39Add,B1ADOF39Add,B1ADOF39Add,B1ADOF39Add,B1ADOF39Add,B1ADOF39Add,B1ADOF39Add,B1ADOF39Add,B1ADOF39Add, & - B1ADOF40Add,B1ADOF40Add,B1ADOF40Add,B1ADOF40Add,B1ADOF40Add,B1ADOF40Add,B1ADOF40Add,B1ADOF40Add,B1ADOF40Add, & - B1ADOF41Add,B1ADOF41Add,B1ADOF41Add,B1ADOF41Add,B1ADOF41Add,B1ADOF41Add,B1ADOF41Add,B1ADOF41Add,B1ADOF41Add, & - B1ADOF42Add,B1ADOF42Add,B1ADOF42Add,B1ADOF42Add,B1ADOF42Add,B1ADOF42Add,B1ADOF42Add,B1ADOF42Add,B1ADOF42Add, & - B1ADOF43Add,B1ADOF43Add,B1ADOF43Add,B1ADOF43Add,B1ADOF43Add,B1ADOF43Add,B1ADOF43Add,B1ADOF43Add,B1ADOF43Add, & - B1ADOF44Add,B1ADOF44Add,B1ADOF44Add,B1ADOF44Add,B1ADOF44Add,B1ADOF44Add,B1ADOF44Add,B1ADOF44Add,B1ADOF44Add, & - B1ADOF45Add,B1ADOF45Add,B1ADOF45Add,B1ADOF45Add,B1ADOF45Add,B1ADOF45Add,B1ADOF45Add,B1ADOF45Add,B1ADOF45Add, & - B1ADOF46Add,B1ADOF46Add,B1ADOF46Add,B1ADOF46Add,B1ADOF46Add,B1ADOF46Add,B1ADOF46Add,B1ADOF46Add,B1ADOF46Add, & - B1ADOF47Add,B1ADOF47Add,B1ADOF47Add,B1ADOF47Add,B1ADOF47Add,B1ADOF47Add,B1ADOF47Add,B1ADOF47Add,B1ADOF47Add, & - B1ADOF48Add,B1ADOF48Add,B1ADOF48Add,B1ADOF48Add,B1ADOF48Add,B1ADOF48Add,B1ADOF48Add,B1ADOF48Add,B1ADOF48Add, & - B1ADOF49Add,B1ADOF49Add,B1ADOF49Add,B1ADOF49Add,B1ADOF49Add,B1ADOF49Add,B1ADOF49Add,B1ADOF49Add,B1ADOF49Add, & - B1ADOF50Add,B1ADOF50Add,B1ADOF50Add,B1ADOF50Add,B1ADOF50Add,B1ADOF50Add,B1ADOF50Add,B1ADOF50Add,B1ADOF50Add, & - B1ADOF51Add,B1ADOF51Add,B1ADOF51Add,B1ADOF51Add,B1ADOF51Add,B1ADOF51Add,B1ADOF51Add,B1ADOF51Add,B1ADOF51Add, & - B1ADOF52Add,B1ADOF52Add,B1ADOF52Add,B1ADOF52Add,B1ADOF52Add,B1ADOF52Add,B1ADOF52Add,B1ADOF52Add,B1ADOF52Add, & - B1ADOF53Add,B1ADOF53Add,B1ADOF53Add,B1ADOF53Add,B1ADOF53Add,B1ADOF53Add,B1ADOF53Add,B1ADOF53Add,B1ADOF53Add, & - B1ADOF54Add,B1ADOF54Add,B1ADOF54Add,B1ADOF54Add,B1ADOF54Add,B1ADOF54Add,B1ADOF54Add,B1ADOF54Add,B1ADOF54Add, & - B1ADOF55Add,B1ADOF55Add,B1ADOF55Add,B1ADOF55Add,B1ADOF55Add,B1ADOF55Add,B1ADOF55Add,B1ADOF55Add,B1ADOF55Add, & - B1ADOF56Add,B1ADOF56Add,B1ADOF56Add,B1ADOF56Add,B1ADOF56Add,B1ADOF56Add,B1ADOF56Add,B1ADOF56Add,B1ADOF56Add, & - B1ADOF57Add,B1ADOF57Add,B1ADOF57Add,B1ADOF57Add,B1ADOF57Add,B1ADOF57Add,B1ADOF57Add,B1ADOF57Add,B1ADOF57Add, & - B1ADOF58Add,B1ADOF58Add,B1ADOF58Add,B1ADOF58Add,B1ADOF58Add,B1ADOF58Add,B1ADOF58Add,B1ADOF58Add,B1ADOF58Add, & - B1ADOF59Add,B1ADOF59Add,B1ADOF59Add,B1ADOF59Add,B1ADOF59Add,B1ADOF59Add,B1ADOF59Add,B1ADOF59Add,B1ADOF59Add, & - B1ADOF60Add,B1ADOF60Add,B1ADOF60Add,B1ADOF60Add,B1ADOF60Add,B1ADOF60Add,B1ADOF60Add,B1ADOF60Add,B1ADOF60Add, & - B1ADOF61Add,B1ADOF61Add,B1ADOF61Add,B1ADOF61Add,B1ADOF61Add,B1ADOF61Add,B1ADOF61Add,B1ADOF61Add,B1ADOF61Add, & - B1ADOF62Add,B1ADOF62Add,B1ADOF62Add,B1ADOF62Add,B1ADOF62Add,B1ADOF62Add,B1ADOF62Add,B1ADOF62Add,B1ADOF62Add, & - B1ADOF63Add,B1ADOF63Add,B1ADOF63Add,B1ADOF63Add,B1ADOF63Add,B1ADOF63Add,B1ADOF63Add,B1ADOF63Add,B1ADOF63Add, & - B1ADOF64Add,B1ADOF64Add,B1ADOF64Add,B1ADOF64Add,B1ADOF64Add,B1ADOF64Add,B1ADOF64Add,B1ADOF64Add,B1ADOF64Add, & - B1ADOF65Add,B1ADOF65Add,B1ADOF65Add,B1ADOF65Add,B1ADOF65Add,B1ADOF65Add,B1ADOF65Add,B1ADOF65Add,B1ADOF65Add, & - B1ADOF66Add,B1ADOF66Add,B1ADOF66Add,B1ADOF66Add,B1ADOF66Add,B1ADOF66Add,B1ADOF66Add,B1ADOF66Add,B1ADOF66Add, & - B1ADOF67Add,B1ADOF67Add,B1ADOF67Add,B1ADOF67Add,B1ADOF67Add,B1ADOF67Add,B1ADOF67Add,B1ADOF67Add,B1ADOF67Add, & - B1ADOF68Add,B1ADOF68Add,B1ADOF68Add,B1ADOF68Add,B1ADOF68Add,B1ADOF68Add,B1ADOF68Add,B1ADOF68Add,B1ADOF68Add, & - B1ADOF69Add,B1ADOF69Add,B1ADOF69Add,B1ADOF69Add,B1ADOF69Add,B1ADOF69Add,B1ADOF69Add,B1ADOF69Add,B1ADOF69Add, & - B1ADOF70Add,B1ADOF70Add,B1ADOF70Add,B1ADOF70Add,B1ADOF70Add,B1ADOF70Add,B1ADOF70Add,B1ADOF70Add,B1ADOF70Add, & - B1ADOF71Add,B1ADOF71Add,B1ADOF71Add,B1ADOF71Add,B1ADOF71Add,B1ADOF71Add,B1ADOF71Add,B1ADOF71Add,B1ADOF71Add, & - B1ADOF72Add,B1ADOF72Add,B1ADOF72Add,B1ADOF72Add,B1ADOF72Add,B1ADOF72Add,B1ADOF72Add,B1ADOF72Add,B1ADOF72Add, & - B1ADOF73Add,B1ADOF73Add,B1ADOF73Add,B1ADOF73Add,B1ADOF73Add,B1ADOF73Add,B1ADOF73Add,B1ADOF73Add,B1ADOF73Add, & - B1ADOF74Add,B1ADOF74Add,B1ADOF74Add,B1ADOF74Add,B1ADOF74Add,B1ADOF74Add,B1ADOF74Add,B1ADOF74Add,B1ADOF74Add, & - B1ADOF75Add,B1ADOF75Add,B1ADOF75Add,B1ADOF75Add,B1ADOF75Add,B1ADOF75Add,B1ADOF75Add,B1ADOF75Add,B1ADOF75Add, & - B1ADOF76Add,B1ADOF76Add,B1ADOF76Add,B1ADOF76Add,B1ADOF76Add,B1ADOF76Add,B1ADOF76Add,B1ADOF76Add,B1ADOF76Add, & - B1ADOF77Add,B1ADOF77Add,B1ADOF77Add,B1ADOF77Add,B1ADOF77Add,B1ADOF77Add,B1ADOF77Add,B1ADOF77Add,B1ADOF77Add, & - B1ADOF78Add,B1ADOF78Add,B1ADOF78Add,B1ADOF78Add,B1ADOF78Add,B1ADOF78Add,B1ADOF78Add,B1ADOF78Add,B1ADOF78Add, & - B1ADOF79Add,B1ADOF79Add,B1ADOF79Add,B1ADOF79Add,B1ADOF79Add,B1ADOF79Add,B1ADOF79Add,B1ADOF79Add,B1ADOF79Add, & - B1ADOF80Add,B1ADOF80Add,B1ADOF80Add,B1ADOF80Add,B1ADOF80Add,B1ADOF80Add,B1ADOF80Add,B1ADOF80Add,B1ADOF80Add, & - B1ADOF81Add,B1ADOF81Add,B1ADOF81Add,B1ADOF81Add,B1ADOF81Add,B1ADOF81Add,B1ADOF81Add,B1ADOF81Add,B1ADOF81Add, & - B1ADOF82Add,B1ADOF82Add,B1ADOF82Add,B1ADOF82Add,B1ADOF82Add,B1ADOF82Add,B1ADOF82Add,B1ADOF82Add,B1ADOF82Add, & - B1ADOF83Add,B1ADOF83Add,B1ADOF83Add,B1ADOF83Add,B1ADOF83Add,B1ADOF83Add,B1ADOF83Add,B1ADOF83Add,B1ADOF83Add, & - B1ADOF84Add,B1ADOF84Add,B1ADOF84Add,B1ADOF84Add,B1ADOF84Add,B1ADOF84Add,B1ADOF84Add,B1ADOF84Add,B1ADOF84Add, & - B1ADOF85Add,B1ADOF85Add,B1ADOF85Add,B1ADOF85Add,B1ADOF85Add,B1ADOF85Add,B1ADOF85Add,B1ADOF85Add,B1ADOF85Add, & - B1ADOF86Add,B1ADOF86Add,B1ADOF86Add,B1ADOF86Add,B1ADOF86Add,B1ADOF86Add,B1ADOF86Add,B1ADOF86Add,B1ADOF86Add, & - B1ADOF87Add,B1ADOF87Add,B1ADOF87Add,B1ADOF87Add,B1ADOF87Add,B1ADOF87Add,B1ADOF87Add,B1ADOF87Add,B1ADOF87Add, & - B1ADOF88Add,B1ADOF88Add,B1ADOF88Add,B1ADOF88Add,B1ADOF88Add,B1ADOF88Add,B1ADOF88Add,B1ADOF88Add,B1ADOF88Add, & - B1ADOF89Add,B1ADOF89Add,B1ADOF89Add,B1ADOF89Add,B1ADOF89Add,B1ADOF89Add,B1ADOF89Add,B1ADOF89Add,B1ADOF89Add, & - B1ADOF90Add,B1ADOF90Add,B1ADOF90Add,B1ADOF90Add,B1ADOF90Add,B1ADOF90Add,B1ADOF90Add,B1ADOF90Add,B1ADOF90Add, & - B1ADOF91Add,B1ADOF91Add,B1ADOF91Add,B1ADOF91Add,B1ADOF91Add,B1ADOF91Add,B1ADOF91Add,B1ADOF91Add,B1ADOF91Add, & - B1ADOF92Add,B1ADOF92Add,B1ADOF92Add,B1ADOF92Add,B1ADOF92Add,B1ADOF92Add,B1ADOF92Add,B1ADOF92Add,B1ADOF92Add, & - B1ADOF93Add,B1ADOF93Add,B1ADOF93Add,B1ADOF93Add,B1ADOF93Add,B1ADOF93Add,B1ADOF93Add,B1ADOF93Add,B1ADOF93Add, & - B1ADOF94Add,B1ADOF94Add,B1ADOF94Add,B1ADOF94Add,B1ADOF94Add,B1ADOF94Add,B1ADOF94Add,B1ADOF94Add,B1ADOF94Add, & - B1ADOF95Add,B1ADOF95Add,B1ADOF95Add,B1ADOF95Add,B1ADOF95Add,B1ADOF95Add,B1ADOF95Add,B1ADOF95Add,B1ADOF95Add, & - B1ADOF96Add,B1ADOF96Add,B1ADOF96Add,B1ADOF96Add,B1ADOF96Add,B1ADOF96Add,B1ADOF96Add,B1ADOF96Add,B1ADOF96Add, & - B1ADOF97Add,B1ADOF97Add,B1ADOF97Add,B1ADOF97Add,B1ADOF97Add,B1ADOF97Add,B1ADOF97Add,B1ADOF97Add,B1ADOF97Add, & - B1ADOF98Add,B1ADOF98Add,B1ADOF98Add,B1ADOF98Add,B1ADOF98Add,B1ADOF98Add,B1ADOF98Add,B1ADOF98Add,B1ADOF98Add, & - B1ADOF99Add,B1ADOF99Add,B1ADOF99Add,B1ADOF99Add,B1ADOF99Add,B1ADOF99Add,B1ADOF99Add,B1ADOF99Add,B1ADOF99Add/), & + INTEGER, PARAMETER :: FADOFAdd(99,9) = transpose(reshape((/B1ADOF1Add,B2ADOF1Add,B3ADOF1Add,B4ADOF1Add,B5ADOF1Add,B6ADOF1Add,B7ADOF1Add,B8ADOF1Add,B9ADOF1Add, & + B1ADOF2Add,B2ADOF2Add,B3ADOF2Add,B4ADOF2Add,B5ADOF2Add,B6ADOF2Add,B7ADOF2Add,B8ADOF2Add,B9ADOF2Add, & + B1ADOF3Add,B2ADOF3Add,B3ADOF3Add,B4ADOF3Add,B5ADOF3Add,B6ADOF3Add,B7ADOF3Add,B8ADOF3Add,B9ADOF3Add, & + B1ADOF4Add,B2ADOF4Add,B3ADOF4Add,B4ADOF4Add,B5ADOF4Add,B6ADOF4Add,B7ADOF4Add,B8ADOF4Add,B9ADOF4Add, & + B1ADOF5Add,B2ADOF5Add,B3ADOF5Add,B4ADOF5Add,B5ADOF5Add,B6ADOF5Add,B7ADOF5Add,B8ADOF5Add,B9ADOF5Add, & + B1ADOF6Add,B2ADOF6Add,B3ADOF6Add,B4ADOF6Add,B5ADOF6Add,B6ADOF6Add,B7ADOF6Add,B8ADOF6Add,B9ADOF6Add, & + B1ADOF7Add,B2ADOF7Add,B3ADOF7Add,B4ADOF7Add,B5ADOF7Add,B6ADOF7Add,B7ADOF7Add,B8ADOF7Add,B9ADOF7Add, & + B1ADOF8Add,B2ADOF8Add,B3ADOF8Add,B4ADOF8Add,B5ADOF8Add,B6ADOF8Add,B7ADOF8Add,B8ADOF8Add,B9ADOF8Add, & + B1ADOF9Add,B2ADOF9Add,B3ADOF9Add,B4ADOF9Add,B5ADOF9Add,B6ADOF9Add,B7ADOF9Add,B8ADOF9Add,B9ADOF9Add, & + B1ADOF10Add,B2ADOF10Add,B3ADOF10Add,B4ADOF10Add,B5ADOF10Add,B6ADOF10Add,B7ADOF10Add,B8ADOF10Add,B9ADOF10Add, & + B1ADOF11Add,B2ADOF11Add,B3ADOF11Add,B4ADOF11Add,B5ADOF11Add,B6ADOF11Add,B7ADOF11Add,B8ADOF11Add,B9ADOF11Add, & + B1ADOF12Add,B2ADOF12Add,B3ADOF12Add,B4ADOF12Add,B5ADOF12Add,B6ADOF12Add,B7ADOF12Add,B8ADOF12Add,B9ADOF12Add, & + B1ADOF13Add,B2ADOF13Add,B3ADOF13Add,B4ADOF13Add,B5ADOF13Add,B6ADOF13Add,B7ADOF13Add,B8ADOF13Add,B9ADOF13Add, & + B1ADOF14Add,B2ADOF14Add,B3ADOF14Add,B4ADOF14Add,B5ADOF14Add,B6ADOF14Add,B7ADOF14Add,B8ADOF14Add,B9ADOF14Add, & + B1ADOF15Add,B2ADOF15Add,B3ADOF15Add,B4ADOF15Add,B5ADOF15Add,B6ADOF15Add,B7ADOF15Add,B8ADOF15Add,B9ADOF15Add, & + B1ADOF16Add,B2ADOF16Add,B3ADOF16Add,B4ADOF16Add,B5ADOF16Add,B6ADOF16Add,B7ADOF16Add,B8ADOF16Add,B9ADOF16Add, & + B1ADOF17Add,B2ADOF17Add,B3ADOF17Add,B4ADOF17Add,B5ADOF17Add,B6ADOF17Add,B7ADOF17Add,B8ADOF17Add,B9ADOF17Add, & + B1ADOF18Add,B2ADOF18Add,B3ADOF18Add,B4ADOF18Add,B5ADOF18Add,B6ADOF18Add,B7ADOF18Add,B8ADOF18Add,B9ADOF18Add, & + B1ADOF19Add,B2ADOF19Add,B3ADOF19Add,B4ADOF19Add,B5ADOF19Add,B6ADOF19Add,B7ADOF19Add,B8ADOF19Add,B9ADOF19Add, & + B1ADOF20Add,B2ADOF20Add,B3ADOF20Add,B4ADOF20Add,B5ADOF20Add,B6ADOF20Add,B7ADOF20Add,B8ADOF20Add,B9ADOF20Add, & + B1ADOF21Add,B2ADOF21Add,B3ADOF21Add,B4ADOF21Add,B5ADOF21Add,B6ADOF21Add,B7ADOF21Add,B8ADOF21Add,B9ADOF21Add, & + B1ADOF22Add,B2ADOF22Add,B3ADOF22Add,B4ADOF22Add,B5ADOF22Add,B6ADOF22Add,B7ADOF22Add,B8ADOF22Add,B9ADOF22Add, & + B1ADOF23Add,B2ADOF23Add,B3ADOF23Add,B4ADOF23Add,B5ADOF23Add,B6ADOF23Add,B7ADOF23Add,B8ADOF23Add,B9ADOF23Add, & + B1ADOF24Add,B2ADOF24Add,B3ADOF24Add,B4ADOF24Add,B5ADOF24Add,B6ADOF24Add,B7ADOF24Add,B8ADOF24Add,B9ADOF24Add, & + B1ADOF25Add,B2ADOF25Add,B3ADOF25Add,B4ADOF25Add,B5ADOF25Add,B6ADOF25Add,B7ADOF25Add,B8ADOF25Add,B9ADOF25Add, & + B1ADOF26Add,B2ADOF26Add,B3ADOF26Add,B4ADOF26Add,B5ADOF26Add,B6ADOF26Add,B7ADOF26Add,B8ADOF26Add,B9ADOF26Add, & + B1ADOF27Add,B2ADOF27Add,B3ADOF27Add,B4ADOF27Add,B5ADOF27Add,B6ADOF27Add,B7ADOF27Add,B8ADOF27Add,B9ADOF27Add, & + B1ADOF28Add,B2ADOF28Add,B3ADOF28Add,B4ADOF28Add,B5ADOF28Add,B6ADOF28Add,B7ADOF28Add,B8ADOF28Add,B9ADOF28Add, & + B1ADOF29Add,B2ADOF29Add,B3ADOF29Add,B4ADOF29Add,B5ADOF29Add,B6ADOF29Add,B7ADOF29Add,B8ADOF29Add,B9ADOF29Add, & + B1ADOF30Add,B2ADOF30Add,B3ADOF30Add,B4ADOF30Add,B5ADOF30Add,B6ADOF30Add,B7ADOF30Add,B8ADOF30Add,B9ADOF30Add, & + B1ADOF31Add,B2ADOF31Add,B3ADOF31Add,B4ADOF31Add,B5ADOF31Add,B6ADOF31Add,B7ADOF31Add,B8ADOF31Add,B9ADOF31Add, & + B1ADOF32Add,B2ADOF32Add,B3ADOF32Add,B4ADOF32Add,B5ADOF32Add,B6ADOF32Add,B7ADOF32Add,B8ADOF32Add,B9ADOF32Add, & + B1ADOF33Add,B2ADOF33Add,B3ADOF33Add,B4ADOF33Add,B5ADOF33Add,B6ADOF33Add,B7ADOF33Add,B8ADOF33Add,B9ADOF33Add, & + B1ADOF34Add,B2ADOF34Add,B3ADOF34Add,B4ADOF34Add,B5ADOF34Add,B6ADOF34Add,B7ADOF34Add,B8ADOF34Add,B9ADOF34Add, & + B1ADOF35Add,B2ADOF35Add,B3ADOF35Add,B4ADOF35Add,B5ADOF35Add,B6ADOF35Add,B7ADOF35Add,B8ADOF35Add,B9ADOF35Add, & + B1ADOF36Add,B2ADOF36Add,B3ADOF36Add,B4ADOF36Add,B5ADOF36Add,B6ADOF36Add,B7ADOF36Add,B8ADOF36Add,B9ADOF36Add, & + B1ADOF37Add,B2ADOF37Add,B3ADOF37Add,B4ADOF37Add,B5ADOF37Add,B6ADOF37Add,B7ADOF37Add,B8ADOF37Add,B9ADOF37Add, & + B1ADOF38Add,B2ADOF38Add,B3ADOF38Add,B4ADOF38Add,B5ADOF38Add,B6ADOF38Add,B7ADOF38Add,B8ADOF38Add,B9ADOF38Add, & + B1ADOF39Add,B2ADOF39Add,B3ADOF39Add,B4ADOF39Add,B5ADOF39Add,B6ADOF39Add,B7ADOF39Add,B8ADOF39Add,B9ADOF39Add, & + B1ADOF40Add,B2ADOF40Add,B3ADOF40Add,B4ADOF40Add,B5ADOF40Add,B6ADOF40Add,B7ADOF40Add,B8ADOF40Add,B9ADOF40Add, & + B1ADOF41Add,B2ADOF41Add,B3ADOF41Add,B4ADOF41Add,B5ADOF41Add,B6ADOF41Add,B7ADOF41Add,B8ADOF41Add,B9ADOF41Add, & + B1ADOF42Add,B2ADOF42Add,B3ADOF42Add,B4ADOF42Add,B5ADOF42Add,B6ADOF42Add,B7ADOF42Add,B8ADOF42Add,B9ADOF42Add, & + B1ADOF43Add,B2ADOF43Add,B3ADOF43Add,B4ADOF43Add,B5ADOF43Add,B6ADOF43Add,B7ADOF43Add,B8ADOF43Add,B9ADOF43Add, & + B1ADOF44Add,B2ADOF44Add,B3ADOF44Add,B4ADOF44Add,B5ADOF44Add,B6ADOF44Add,B7ADOF44Add,B8ADOF44Add,B9ADOF44Add, & + B1ADOF45Add,B2ADOF45Add,B3ADOF45Add,B4ADOF45Add,B5ADOF45Add,B6ADOF45Add,B7ADOF45Add,B8ADOF45Add,B9ADOF45Add, & + B1ADOF46Add,B2ADOF46Add,B3ADOF46Add,B4ADOF46Add,B5ADOF46Add,B6ADOF46Add,B7ADOF46Add,B8ADOF46Add,B9ADOF46Add, & + B1ADOF47Add,B2ADOF47Add,B3ADOF47Add,B4ADOF47Add,B5ADOF47Add,B6ADOF47Add,B7ADOF47Add,B8ADOF47Add,B9ADOF47Add, & + B1ADOF48Add,B2ADOF48Add,B3ADOF48Add,B4ADOF48Add,B5ADOF48Add,B6ADOF48Add,B7ADOF48Add,B8ADOF48Add,B9ADOF48Add, & + B1ADOF49Add,B2ADOF49Add,B3ADOF49Add,B4ADOF49Add,B5ADOF49Add,B6ADOF49Add,B7ADOF49Add,B8ADOF49Add,B9ADOF49Add, & + B1ADOF50Add,B2ADOF50Add,B3ADOF50Add,B4ADOF50Add,B5ADOF50Add,B6ADOF50Add,B7ADOF50Add,B8ADOF50Add,B9ADOF50Add, & + B1ADOF51Add,B2ADOF51Add,B3ADOF51Add,B4ADOF51Add,B5ADOF51Add,B6ADOF51Add,B7ADOF51Add,B8ADOF51Add,B9ADOF51Add, & + B1ADOF52Add,B2ADOF52Add,B3ADOF52Add,B4ADOF52Add,B5ADOF52Add,B6ADOF52Add,B7ADOF52Add,B8ADOF52Add,B9ADOF52Add, & + B1ADOF53Add,B2ADOF53Add,B3ADOF53Add,B4ADOF53Add,B5ADOF53Add,B6ADOF53Add,B7ADOF53Add,B8ADOF53Add,B9ADOF53Add, & + B1ADOF54Add,B2ADOF54Add,B3ADOF54Add,B4ADOF54Add,B5ADOF54Add,B6ADOF54Add,B7ADOF54Add,B8ADOF54Add,B9ADOF54Add, & + B1ADOF55Add,B2ADOF55Add,B3ADOF55Add,B4ADOF55Add,B5ADOF55Add,B6ADOF55Add,B7ADOF55Add,B8ADOF55Add,B9ADOF55Add, & + B1ADOF56Add,B2ADOF56Add,B3ADOF56Add,B4ADOF56Add,B5ADOF56Add,B6ADOF56Add,B7ADOF56Add,B8ADOF56Add,B9ADOF56Add, & + B1ADOF57Add,B2ADOF57Add,B3ADOF57Add,B4ADOF57Add,B5ADOF57Add,B6ADOF57Add,B7ADOF57Add,B8ADOF57Add,B9ADOF57Add, & + B1ADOF58Add,B2ADOF58Add,B3ADOF58Add,B4ADOF58Add,B5ADOF58Add,B6ADOF58Add,B7ADOF58Add,B8ADOF58Add,B9ADOF58Add, & + B1ADOF59Add,B2ADOF59Add,B3ADOF59Add,B4ADOF59Add,B5ADOF59Add,B6ADOF59Add,B7ADOF59Add,B8ADOF59Add,B9ADOF59Add, & + B1ADOF60Add,B2ADOF60Add,B3ADOF60Add,B4ADOF60Add,B5ADOF60Add,B6ADOF60Add,B7ADOF60Add,B8ADOF60Add,B9ADOF60Add, & + B1ADOF61Add,B2ADOF61Add,B3ADOF61Add,B4ADOF61Add,B5ADOF61Add,B6ADOF61Add,B7ADOF61Add,B8ADOF61Add,B9ADOF61Add, & + B1ADOF62Add,B2ADOF62Add,B3ADOF62Add,B4ADOF62Add,B5ADOF62Add,B6ADOF62Add,B7ADOF62Add,B8ADOF62Add,B9ADOF62Add, & + B1ADOF63Add,B2ADOF63Add,B3ADOF63Add,B4ADOF63Add,B5ADOF63Add,B6ADOF63Add,B7ADOF63Add,B8ADOF63Add,B9ADOF63Add, & + B1ADOF64Add,B2ADOF64Add,B3ADOF64Add,B4ADOF64Add,B5ADOF64Add,B6ADOF64Add,B7ADOF64Add,B8ADOF64Add,B9ADOF64Add, & + B1ADOF65Add,B2ADOF65Add,B3ADOF65Add,B4ADOF65Add,B5ADOF65Add,B6ADOF65Add,B7ADOF65Add,B8ADOF65Add,B9ADOF65Add, & + B1ADOF66Add,B2ADOF66Add,B3ADOF66Add,B4ADOF66Add,B5ADOF66Add,B6ADOF66Add,B7ADOF66Add,B8ADOF66Add,B9ADOF66Add, & + B1ADOF67Add,B2ADOF67Add,B3ADOF67Add,B4ADOF67Add,B5ADOF67Add,B6ADOF67Add,B7ADOF67Add,B8ADOF67Add,B9ADOF67Add, & + B1ADOF68Add,B2ADOF68Add,B3ADOF68Add,B4ADOF68Add,B5ADOF68Add,B6ADOF68Add,B7ADOF68Add,B8ADOF68Add,B9ADOF68Add, & + B1ADOF69Add,B2ADOF69Add,B3ADOF69Add,B4ADOF69Add,B5ADOF69Add,B6ADOF69Add,B7ADOF69Add,B8ADOF69Add,B9ADOF69Add, & + B1ADOF70Add,B2ADOF70Add,B3ADOF70Add,B4ADOF70Add,B5ADOF70Add,B6ADOF70Add,B7ADOF70Add,B8ADOF70Add,B9ADOF70Add, & + B1ADOF71Add,B2ADOF71Add,B3ADOF71Add,B4ADOF71Add,B5ADOF71Add,B6ADOF71Add,B7ADOF71Add,B8ADOF71Add,B9ADOF71Add, & + B1ADOF72Add,B2ADOF72Add,B3ADOF72Add,B4ADOF72Add,B5ADOF72Add,B6ADOF72Add,B7ADOF72Add,B8ADOF72Add,B9ADOF72Add, & + B1ADOF73Add,B2ADOF73Add,B3ADOF73Add,B4ADOF73Add,B5ADOF73Add,B6ADOF73Add,B7ADOF73Add,B8ADOF73Add,B9ADOF73Add, & + B1ADOF74Add,B2ADOF74Add,B3ADOF74Add,B4ADOF74Add,B5ADOF74Add,B6ADOF74Add,B7ADOF74Add,B8ADOF74Add,B9ADOF74Add, & + B1ADOF75Add,B2ADOF75Add,B3ADOF75Add,B4ADOF75Add,B5ADOF75Add,B6ADOF75Add,B7ADOF75Add,B8ADOF75Add,B9ADOF75Add, & + B1ADOF76Add,B2ADOF76Add,B3ADOF76Add,B4ADOF76Add,B5ADOF76Add,B6ADOF76Add,B7ADOF76Add,B8ADOF76Add,B9ADOF76Add, & + B1ADOF77Add,B2ADOF77Add,B3ADOF77Add,B4ADOF77Add,B5ADOF77Add,B6ADOF77Add,B7ADOF77Add,B8ADOF77Add,B9ADOF77Add, & + B1ADOF78Add,B2ADOF78Add,B3ADOF78Add,B4ADOF78Add,B5ADOF78Add,B6ADOF78Add,B7ADOF78Add,B8ADOF78Add,B9ADOF78Add, & + B1ADOF79Add,B2ADOF79Add,B3ADOF79Add,B4ADOF79Add,B5ADOF79Add,B6ADOF79Add,B7ADOF79Add,B8ADOF79Add,B9ADOF79Add, & + B1ADOF80Add,B2ADOF80Add,B3ADOF80Add,B4ADOF80Add,B5ADOF80Add,B6ADOF80Add,B7ADOF80Add,B8ADOF80Add,B9ADOF80Add, & + B1ADOF81Add,B2ADOF81Add,B3ADOF81Add,B4ADOF81Add,B5ADOF81Add,B6ADOF81Add,B7ADOF81Add,B8ADOF81Add,B9ADOF81Add, & + B1ADOF82Add,B2ADOF82Add,B3ADOF82Add,B4ADOF82Add,B5ADOF82Add,B6ADOF82Add,B7ADOF82Add,B8ADOF82Add,B9ADOF82Add, & + B1ADOF83Add,B2ADOF83Add,B3ADOF83Add,B4ADOF83Add,B5ADOF83Add,B6ADOF83Add,B7ADOF83Add,B8ADOF83Add,B9ADOF83Add, & + B1ADOF84Add,B2ADOF84Add,B3ADOF84Add,B4ADOF84Add,B5ADOF84Add,B6ADOF84Add,B7ADOF84Add,B8ADOF84Add,B9ADOF84Add, & + B1ADOF85Add,B2ADOF85Add,B3ADOF85Add,B4ADOF85Add,B5ADOF85Add,B6ADOF85Add,B7ADOF85Add,B8ADOF85Add,B9ADOF85Add, & + B1ADOF86Add,B2ADOF86Add,B3ADOF86Add,B4ADOF86Add,B5ADOF86Add,B6ADOF86Add,B7ADOF86Add,B8ADOF86Add,B9ADOF86Add, & + B1ADOF87Add,B2ADOF87Add,B3ADOF87Add,B4ADOF87Add,B5ADOF87Add,B6ADOF87Add,B7ADOF87Add,B8ADOF87Add,B9ADOF87Add, & + B1ADOF88Add,B2ADOF88Add,B3ADOF88Add,B4ADOF88Add,B5ADOF88Add,B6ADOF88Add,B7ADOF88Add,B8ADOF88Add,B9ADOF88Add, & + B1ADOF89Add,B2ADOF89Add,B3ADOF89Add,B4ADOF89Add,B5ADOF89Add,B6ADOF89Add,B7ADOF89Add,B8ADOF89Add,B9ADOF89Add, & + B1ADOF90Add,B2ADOF90Add,B3ADOF90Add,B4ADOF90Add,B5ADOF90Add,B6ADOF90Add,B7ADOF90Add,B8ADOF90Add,B9ADOF90Add, & + B1ADOF91Add,B2ADOF91Add,B3ADOF91Add,B4ADOF91Add,B5ADOF91Add,B6ADOF91Add,B7ADOF91Add,B8ADOF91Add,B9ADOF91Add, & + B1ADOF92Add,B2ADOF92Add,B3ADOF92Add,B4ADOF92Add,B5ADOF92Add,B6ADOF92Add,B7ADOF92Add,B8ADOF92Add,B9ADOF92Add, & + B1ADOF93Add,B2ADOF93Add,B3ADOF93Add,B4ADOF93Add,B5ADOF93Add,B6ADOF93Add,B7ADOF93Add,B8ADOF93Add,B9ADOF93Add, & + B1ADOF94Add,B2ADOF94Add,B3ADOF94Add,B4ADOF94Add,B5ADOF94Add,B6ADOF94Add,B7ADOF94Add,B8ADOF94Add,B9ADOF94Add, & + B1ADOF95Add,B2ADOF95Add,B3ADOF95Add,B4ADOF95Add,B5ADOF95Add,B6ADOF95Add,B7ADOF95Add,B8ADOF95Add,B9ADOF95Add, & + B1ADOF96Add,B2ADOF96Add,B3ADOF96Add,B4ADOF96Add,B5ADOF96Add,B6ADOF96Add,B7ADOF96Add,B8ADOF96Add,B9ADOF96Add, & + B1ADOF97Add,B2ADOF97Add,B3ADOF97Add,B4ADOF97Add,B5ADOF97Add,B6ADOF97Add,B7ADOF97Add,B8ADOF97Add,B9ADOF97Add, & + B1ADOF98Add,B2ADOF98Add,B3ADOF98Add,B4ADOF98Add,B5ADOF98Add,B6ADOF98Add,B7ADOF98Add,B8ADOF98Add,B9ADOF98Add, & + B1ADOF99Add,B2ADOF99Add,B3ADOF99Add,B4ADOF99Add,B5ADOF99Add,B6ADOF99Add,B7ADOF99Add,B8ADOF99Add,B9ADOF99Add/), & (/9,99/))) - INTEGER, PARAMETER :: FADOFRdt(99,9) = transpose(reshape((/B1ADOF1Rdt,B1ADOF1Rdt,B1ADOF1Rdt,B1ADOF1Rdt,B1ADOF1Rdt,B1ADOF1Rdt,B1ADOF1Rdt,B1ADOF1Rdt,B1ADOF1Rdt, & - B1ADOF2Rdt,B1ADOF2Rdt,B1ADOF2Rdt,B1ADOF2Rdt,B1ADOF2Rdt,B1ADOF2Rdt,B1ADOF2Rdt,B1ADOF2Rdt,B1ADOF2Rdt, & - B1ADOF3Rdt,B1ADOF3Rdt,B1ADOF3Rdt,B1ADOF3Rdt,B1ADOF3Rdt,B1ADOF3Rdt,B1ADOF3Rdt,B1ADOF3Rdt,B1ADOF3Rdt, & - B1ADOF4Rdt,B1ADOF4Rdt,B1ADOF4Rdt,B1ADOF4Rdt,B1ADOF4Rdt,B1ADOF4Rdt,B1ADOF4Rdt,B1ADOF4Rdt,B1ADOF4Rdt, & - B1ADOF5Rdt,B1ADOF5Rdt,B1ADOF5Rdt,B1ADOF5Rdt,B1ADOF5Rdt,B1ADOF5Rdt,B1ADOF5Rdt,B1ADOF5Rdt,B1ADOF5Rdt, & - B1ADOF6Rdt,B1ADOF6Rdt,B1ADOF6Rdt,B1ADOF6Rdt,B1ADOF6Rdt,B1ADOF6Rdt,B1ADOF6Rdt,B1ADOF6Rdt,B1ADOF6Rdt, & - B1ADOF7Rdt,B1ADOF7Rdt,B1ADOF7Rdt,B1ADOF7Rdt,B1ADOF7Rdt,B1ADOF7Rdt,B1ADOF7Rdt,B1ADOF7Rdt,B1ADOF7Rdt, & - B1ADOF8Rdt,B1ADOF8Rdt,B1ADOF8Rdt,B1ADOF8Rdt,B1ADOF8Rdt,B1ADOF8Rdt,B1ADOF8Rdt,B1ADOF8Rdt,B1ADOF8Rdt, & - B1ADOF9Rdt,B1ADOF9Rdt,B1ADOF9Rdt,B1ADOF9Rdt,B1ADOF9Rdt,B1ADOF9Rdt,B1ADOF9Rdt,B1ADOF9Rdt,B1ADOF9Rdt, & - B1ADOF10Rdt,B1ADOF10Rdt,B1ADOF10Rdt,B1ADOF10Rdt,B1ADOF10Rdt,B1ADOF10Rdt,B1ADOF10Rdt,B1ADOF10Rdt,B1ADOF10Rdt, & - B1ADOF11Rdt,B1ADOF11Rdt,B1ADOF11Rdt,B1ADOF11Rdt,B1ADOF11Rdt,B1ADOF11Rdt,B1ADOF11Rdt,B1ADOF11Rdt,B1ADOF11Rdt, & - B1ADOF12Rdt,B1ADOF12Rdt,B1ADOF12Rdt,B1ADOF12Rdt,B1ADOF12Rdt,B1ADOF12Rdt,B1ADOF12Rdt,B1ADOF12Rdt,B1ADOF12Rdt, & - B1ADOF13Rdt,B1ADOF13Rdt,B1ADOF13Rdt,B1ADOF13Rdt,B1ADOF13Rdt,B1ADOF13Rdt,B1ADOF13Rdt,B1ADOF13Rdt,B1ADOF13Rdt, & - B1ADOF14Rdt,B1ADOF14Rdt,B1ADOF14Rdt,B1ADOF14Rdt,B1ADOF14Rdt,B1ADOF14Rdt,B1ADOF14Rdt,B1ADOF14Rdt,B1ADOF14Rdt, & - B1ADOF15Rdt,B1ADOF15Rdt,B1ADOF15Rdt,B1ADOF15Rdt,B1ADOF15Rdt,B1ADOF15Rdt,B1ADOF15Rdt,B1ADOF15Rdt,B1ADOF15Rdt, & - B1ADOF16Rdt,B1ADOF16Rdt,B1ADOF16Rdt,B1ADOF16Rdt,B1ADOF16Rdt,B1ADOF16Rdt,B1ADOF16Rdt,B1ADOF16Rdt,B1ADOF16Rdt, & - B1ADOF17Rdt,B1ADOF17Rdt,B1ADOF17Rdt,B1ADOF17Rdt,B1ADOF17Rdt,B1ADOF17Rdt,B1ADOF17Rdt,B1ADOF17Rdt,B1ADOF17Rdt, & - B1ADOF18Rdt,B1ADOF18Rdt,B1ADOF18Rdt,B1ADOF18Rdt,B1ADOF18Rdt,B1ADOF18Rdt,B1ADOF18Rdt,B1ADOF18Rdt,B1ADOF18Rdt, & - B1ADOF19Rdt,B1ADOF19Rdt,B1ADOF19Rdt,B1ADOF19Rdt,B1ADOF19Rdt,B1ADOF19Rdt,B1ADOF19Rdt,B1ADOF19Rdt,B1ADOF19Rdt, & - B1ADOF20Rdt,B1ADOF20Rdt,B1ADOF20Rdt,B1ADOF20Rdt,B1ADOF20Rdt,B1ADOF20Rdt,B1ADOF20Rdt,B1ADOF20Rdt,B1ADOF20Rdt, & - B1ADOF21Rdt,B1ADOF21Rdt,B1ADOF21Rdt,B1ADOF21Rdt,B1ADOF21Rdt,B1ADOF21Rdt,B1ADOF21Rdt,B1ADOF21Rdt,B1ADOF21Rdt, & - B1ADOF22Rdt,B1ADOF22Rdt,B1ADOF22Rdt,B1ADOF22Rdt,B1ADOF22Rdt,B1ADOF22Rdt,B1ADOF22Rdt,B1ADOF22Rdt,B1ADOF22Rdt, & - B1ADOF23Rdt,B1ADOF23Rdt,B1ADOF23Rdt,B1ADOF23Rdt,B1ADOF23Rdt,B1ADOF23Rdt,B1ADOF23Rdt,B1ADOF23Rdt,B1ADOF23Rdt, & - B1ADOF24Rdt,B1ADOF24Rdt,B1ADOF24Rdt,B1ADOF24Rdt,B1ADOF24Rdt,B1ADOF24Rdt,B1ADOF24Rdt,B1ADOF24Rdt,B1ADOF24Rdt, & - B1ADOF25Rdt,B1ADOF25Rdt,B1ADOF25Rdt,B1ADOF25Rdt,B1ADOF25Rdt,B1ADOF25Rdt,B1ADOF25Rdt,B1ADOF25Rdt,B1ADOF25Rdt, & - B1ADOF26Rdt,B1ADOF26Rdt,B1ADOF26Rdt,B1ADOF26Rdt,B1ADOF26Rdt,B1ADOF26Rdt,B1ADOF26Rdt,B1ADOF26Rdt,B1ADOF26Rdt, & - B1ADOF27Rdt,B1ADOF27Rdt,B1ADOF27Rdt,B1ADOF27Rdt,B1ADOF27Rdt,B1ADOF27Rdt,B1ADOF27Rdt,B1ADOF27Rdt,B1ADOF27Rdt, & - B1ADOF28Rdt,B1ADOF28Rdt,B1ADOF28Rdt,B1ADOF28Rdt,B1ADOF28Rdt,B1ADOF28Rdt,B1ADOF28Rdt,B1ADOF28Rdt,B1ADOF28Rdt, & - B1ADOF29Rdt,B1ADOF29Rdt,B1ADOF29Rdt,B1ADOF29Rdt,B1ADOF29Rdt,B1ADOF29Rdt,B1ADOF29Rdt,B1ADOF29Rdt,B1ADOF29Rdt, & - B1ADOF30Rdt,B1ADOF30Rdt,B1ADOF30Rdt,B1ADOF30Rdt,B1ADOF30Rdt,B1ADOF30Rdt,B1ADOF30Rdt,B1ADOF30Rdt,B1ADOF30Rdt, & - B1ADOF31Rdt,B1ADOF31Rdt,B1ADOF31Rdt,B1ADOF31Rdt,B1ADOF31Rdt,B1ADOF31Rdt,B1ADOF31Rdt,B1ADOF31Rdt,B1ADOF31Rdt, & - B1ADOF32Rdt,B1ADOF32Rdt,B1ADOF32Rdt,B1ADOF32Rdt,B1ADOF32Rdt,B1ADOF32Rdt,B1ADOF32Rdt,B1ADOF32Rdt,B1ADOF32Rdt, & - B1ADOF33Rdt,B1ADOF33Rdt,B1ADOF33Rdt,B1ADOF33Rdt,B1ADOF33Rdt,B1ADOF33Rdt,B1ADOF33Rdt,B1ADOF33Rdt,B1ADOF33Rdt, & - B1ADOF34Rdt,B1ADOF34Rdt,B1ADOF34Rdt,B1ADOF34Rdt,B1ADOF34Rdt,B1ADOF34Rdt,B1ADOF34Rdt,B1ADOF34Rdt,B1ADOF34Rdt, & - B1ADOF35Rdt,B1ADOF35Rdt,B1ADOF35Rdt,B1ADOF35Rdt,B1ADOF35Rdt,B1ADOF35Rdt,B1ADOF35Rdt,B1ADOF35Rdt,B1ADOF35Rdt, & - B1ADOF36Rdt,B1ADOF36Rdt,B1ADOF36Rdt,B1ADOF36Rdt,B1ADOF36Rdt,B1ADOF36Rdt,B1ADOF36Rdt,B1ADOF36Rdt,B1ADOF36Rdt, & - B1ADOF37Rdt,B1ADOF37Rdt,B1ADOF37Rdt,B1ADOF37Rdt,B1ADOF37Rdt,B1ADOF37Rdt,B1ADOF37Rdt,B1ADOF37Rdt,B1ADOF37Rdt, & - B1ADOF38Rdt,B1ADOF38Rdt,B1ADOF38Rdt,B1ADOF38Rdt,B1ADOF38Rdt,B1ADOF38Rdt,B1ADOF38Rdt,B1ADOF38Rdt,B1ADOF38Rdt, & - B1ADOF39Rdt,B1ADOF39Rdt,B1ADOF39Rdt,B1ADOF39Rdt,B1ADOF39Rdt,B1ADOF39Rdt,B1ADOF39Rdt,B1ADOF39Rdt,B1ADOF39Rdt, & - B1ADOF40Rdt,B1ADOF40Rdt,B1ADOF40Rdt,B1ADOF40Rdt,B1ADOF40Rdt,B1ADOF40Rdt,B1ADOF40Rdt,B1ADOF40Rdt,B1ADOF40Rdt, & - B1ADOF41Rdt,B1ADOF41Rdt,B1ADOF41Rdt,B1ADOF41Rdt,B1ADOF41Rdt,B1ADOF41Rdt,B1ADOF41Rdt,B1ADOF41Rdt,B1ADOF41Rdt, & - B1ADOF42Rdt,B1ADOF42Rdt,B1ADOF42Rdt,B1ADOF42Rdt,B1ADOF42Rdt,B1ADOF42Rdt,B1ADOF42Rdt,B1ADOF42Rdt,B1ADOF42Rdt, & - B1ADOF43Rdt,B1ADOF43Rdt,B1ADOF43Rdt,B1ADOF43Rdt,B1ADOF43Rdt,B1ADOF43Rdt,B1ADOF43Rdt,B1ADOF43Rdt,B1ADOF43Rdt, & - B1ADOF44Rdt,B1ADOF44Rdt,B1ADOF44Rdt,B1ADOF44Rdt,B1ADOF44Rdt,B1ADOF44Rdt,B1ADOF44Rdt,B1ADOF44Rdt,B1ADOF44Rdt, & - B1ADOF45Rdt,B1ADOF45Rdt,B1ADOF45Rdt,B1ADOF45Rdt,B1ADOF45Rdt,B1ADOF45Rdt,B1ADOF45Rdt,B1ADOF45Rdt,B1ADOF45Rdt, & - B1ADOF46Rdt,B1ADOF46Rdt,B1ADOF46Rdt,B1ADOF46Rdt,B1ADOF46Rdt,B1ADOF46Rdt,B1ADOF46Rdt,B1ADOF46Rdt,B1ADOF46Rdt, & - B1ADOF47Rdt,B1ADOF47Rdt,B1ADOF47Rdt,B1ADOF47Rdt,B1ADOF47Rdt,B1ADOF47Rdt,B1ADOF47Rdt,B1ADOF47Rdt,B1ADOF47Rdt, & - B1ADOF48Rdt,B1ADOF48Rdt,B1ADOF48Rdt,B1ADOF48Rdt,B1ADOF48Rdt,B1ADOF48Rdt,B1ADOF48Rdt,B1ADOF48Rdt,B1ADOF48Rdt, & - B1ADOF49Rdt,B1ADOF49Rdt,B1ADOF49Rdt,B1ADOF49Rdt,B1ADOF49Rdt,B1ADOF49Rdt,B1ADOF49Rdt,B1ADOF49Rdt,B1ADOF49Rdt, & - B1ADOF50Rdt,B1ADOF50Rdt,B1ADOF50Rdt,B1ADOF50Rdt,B1ADOF50Rdt,B1ADOF50Rdt,B1ADOF50Rdt,B1ADOF50Rdt,B1ADOF50Rdt, & - B1ADOF51Rdt,B1ADOF51Rdt,B1ADOF51Rdt,B1ADOF51Rdt,B1ADOF51Rdt,B1ADOF51Rdt,B1ADOF51Rdt,B1ADOF51Rdt,B1ADOF51Rdt, & - B1ADOF52Rdt,B1ADOF52Rdt,B1ADOF52Rdt,B1ADOF52Rdt,B1ADOF52Rdt,B1ADOF52Rdt,B1ADOF52Rdt,B1ADOF52Rdt,B1ADOF52Rdt, & - B1ADOF53Rdt,B1ADOF53Rdt,B1ADOF53Rdt,B1ADOF53Rdt,B1ADOF53Rdt,B1ADOF53Rdt,B1ADOF53Rdt,B1ADOF53Rdt,B1ADOF53Rdt, & - B1ADOF54Rdt,B1ADOF54Rdt,B1ADOF54Rdt,B1ADOF54Rdt,B1ADOF54Rdt,B1ADOF54Rdt,B1ADOF54Rdt,B1ADOF54Rdt,B1ADOF54Rdt, & - B1ADOF55Rdt,B1ADOF55Rdt,B1ADOF55Rdt,B1ADOF55Rdt,B1ADOF55Rdt,B1ADOF55Rdt,B1ADOF55Rdt,B1ADOF55Rdt,B1ADOF55Rdt, & - B1ADOF56Rdt,B1ADOF56Rdt,B1ADOF56Rdt,B1ADOF56Rdt,B1ADOF56Rdt,B1ADOF56Rdt,B1ADOF56Rdt,B1ADOF56Rdt,B1ADOF56Rdt, & - B1ADOF57Rdt,B1ADOF57Rdt,B1ADOF57Rdt,B1ADOF57Rdt,B1ADOF57Rdt,B1ADOF57Rdt,B1ADOF57Rdt,B1ADOF57Rdt,B1ADOF57Rdt, & - B1ADOF58Rdt,B1ADOF58Rdt,B1ADOF58Rdt,B1ADOF58Rdt,B1ADOF58Rdt,B1ADOF58Rdt,B1ADOF58Rdt,B1ADOF58Rdt,B1ADOF58Rdt, & - B1ADOF59Rdt,B1ADOF59Rdt,B1ADOF59Rdt,B1ADOF59Rdt,B1ADOF59Rdt,B1ADOF59Rdt,B1ADOF59Rdt,B1ADOF59Rdt,B1ADOF59Rdt, & - B1ADOF60Rdt,B1ADOF60Rdt,B1ADOF60Rdt,B1ADOF60Rdt,B1ADOF60Rdt,B1ADOF60Rdt,B1ADOF60Rdt,B1ADOF60Rdt,B1ADOF60Rdt, & - B1ADOF61Rdt,B1ADOF61Rdt,B1ADOF61Rdt,B1ADOF61Rdt,B1ADOF61Rdt,B1ADOF61Rdt,B1ADOF61Rdt,B1ADOF61Rdt,B1ADOF61Rdt, & - B1ADOF62Rdt,B1ADOF62Rdt,B1ADOF62Rdt,B1ADOF62Rdt,B1ADOF62Rdt,B1ADOF62Rdt,B1ADOF62Rdt,B1ADOF62Rdt,B1ADOF62Rdt, & - B1ADOF63Rdt,B1ADOF63Rdt,B1ADOF63Rdt,B1ADOF63Rdt,B1ADOF63Rdt,B1ADOF63Rdt,B1ADOF63Rdt,B1ADOF63Rdt,B1ADOF63Rdt, & - B1ADOF64Rdt,B1ADOF64Rdt,B1ADOF64Rdt,B1ADOF64Rdt,B1ADOF64Rdt,B1ADOF64Rdt,B1ADOF64Rdt,B1ADOF64Rdt,B1ADOF64Rdt, & - B1ADOF65Rdt,B1ADOF65Rdt,B1ADOF65Rdt,B1ADOF65Rdt,B1ADOF65Rdt,B1ADOF65Rdt,B1ADOF65Rdt,B1ADOF65Rdt,B1ADOF65Rdt, & - B1ADOF66Rdt,B1ADOF66Rdt,B1ADOF66Rdt,B1ADOF66Rdt,B1ADOF66Rdt,B1ADOF66Rdt,B1ADOF66Rdt,B1ADOF66Rdt,B1ADOF66Rdt, & - B1ADOF67Rdt,B1ADOF67Rdt,B1ADOF67Rdt,B1ADOF67Rdt,B1ADOF67Rdt,B1ADOF67Rdt,B1ADOF67Rdt,B1ADOF67Rdt,B1ADOF67Rdt, & - B1ADOF68Rdt,B1ADOF68Rdt,B1ADOF68Rdt,B1ADOF68Rdt,B1ADOF68Rdt,B1ADOF68Rdt,B1ADOF68Rdt,B1ADOF68Rdt,B1ADOF68Rdt, & - B1ADOF69Rdt,B1ADOF69Rdt,B1ADOF69Rdt,B1ADOF69Rdt,B1ADOF69Rdt,B1ADOF69Rdt,B1ADOF69Rdt,B1ADOF69Rdt,B1ADOF69Rdt, & - B1ADOF70Rdt,B1ADOF70Rdt,B1ADOF70Rdt,B1ADOF70Rdt,B1ADOF70Rdt,B1ADOF70Rdt,B1ADOF70Rdt,B1ADOF70Rdt,B1ADOF70Rdt, & - B1ADOF71Rdt,B1ADOF71Rdt,B1ADOF71Rdt,B1ADOF71Rdt,B1ADOF71Rdt,B1ADOF71Rdt,B1ADOF71Rdt,B1ADOF71Rdt,B1ADOF71Rdt, & - B1ADOF72Rdt,B1ADOF72Rdt,B1ADOF72Rdt,B1ADOF72Rdt,B1ADOF72Rdt,B1ADOF72Rdt,B1ADOF72Rdt,B1ADOF72Rdt,B1ADOF72Rdt, & - B1ADOF73Rdt,B1ADOF73Rdt,B1ADOF73Rdt,B1ADOF73Rdt,B1ADOF73Rdt,B1ADOF73Rdt,B1ADOF73Rdt,B1ADOF73Rdt,B1ADOF73Rdt, & - B1ADOF74Rdt,B1ADOF74Rdt,B1ADOF74Rdt,B1ADOF74Rdt,B1ADOF74Rdt,B1ADOF74Rdt,B1ADOF74Rdt,B1ADOF74Rdt,B1ADOF74Rdt, & - B1ADOF75Rdt,B1ADOF75Rdt,B1ADOF75Rdt,B1ADOF75Rdt,B1ADOF75Rdt,B1ADOF75Rdt,B1ADOF75Rdt,B1ADOF75Rdt,B1ADOF75Rdt, & - B1ADOF76Rdt,B1ADOF76Rdt,B1ADOF76Rdt,B1ADOF76Rdt,B1ADOF76Rdt,B1ADOF76Rdt,B1ADOF76Rdt,B1ADOF76Rdt,B1ADOF76Rdt, & - B1ADOF77Rdt,B1ADOF77Rdt,B1ADOF77Rdt,B1ADOF77Rdt,B1ADOF77Rdt,B1ADOF77Rdt,B1ADOF77Rdt,B1ADOF77Rdt,B1ADOF77Rdt, & - B1ADOF78Rdt,B1ADOF78Rdt,B1ADOF78Rdt,B1ADOF78Rdt,B1ADOF78Rdt,B1ADOF78Rdt,B1ADOF78Rdt,B1ADOF78Rdt,B1ADOF78Rdt, & - B1ADOF79Rdt,B1ADOF79Rdt,B1ADOF79Rdt,B1ADOF79Rdt,B1ADOF79Rdt,B1ADOF79Rdt,B1ADOF79Rdt,B1ADOF79Rdt,B1ADOF79Rdt, & - B1ADOF80Rdt,B1ADOF80Rdt,B1ADOF80Rdt,B1ADOF80Rdt,B1ADOF80Rdt,B1ADOF80Rdt,B1ADOF80Rdt,B1ADOF80Rdt,B1ADOF80Rdt, & - B1ADOF81Rdt,B1ADOF81Rdt,B1ADOF81Rdt,B1ADOF81Rdt,B1ADOF81Rdt,B1ADOF81Rdt,B1ADOF81Rdt,B1ADOF81Rdt,B1ADOF81Rdt, & - B1ADOF82Rdt,B1ADOF82Rdt,B1ADOF82Rdt,B1ADOF82Rdt,B1ADOF82Rdt,B1ADOF82Rdt,B1ADOF82Rdt,B1ADOF82Rdt,B1ADOF82Rdt, & - B1ADOF83Rdt,B1ADOF83Rdt,B1ADOF83Rdt,B1ADOF83Rdt,B1ADOF83Rdt,B1ADOF83Rdt,B1ADOF83Rdt,B1ADOF83Rdt,B1ADOF83Rdt, & - B1ADOF84Rdt,B1ADOF84Rdt,B1ADOF84Rdt,B1ADOF84Rdt,B1ADOF84Rdt,B1ADOF84Rdt,B1ADOF84Rdt,B1ADOF84Rdt,B1ADOF84Rdt, & - B1ADOF85Rdt,B1ADOF85Rdt,B1ADOF85Rdt,B1ADOF85Rdt,B1ADOF85Rdt,B1ADOF85Rdt,B1ADOF85Rdt,B1ADOF85Rdt,B1ADOF85Rdt, & - B1ADOF86Rdt,B1ADOF86Rdt,B1ADOF86Rdt,B1ADOF86Rdt,B1ADOF86Rdt,B1ADOF86Rdt,B1ADOF86Rdt,B1ADOF86Rdt,B1ADOF86Rdt, & - B1ADOF87Rdt,B1ADOF87Rdt,B1ADOF87Rdt,B1ADOF87Rdt,B1ADOF87Rdt,B1ADOF87Rdt,B1ADOF87Rdt,B1ADOF87Rdt,B1ADOF87Rdt, & - B1ADOF88Rdt,B1ADOF88Rdt,B1ADOF88Rdt,B1ADOF88Rdt,B1ADOF88Rdt,B1ADOF88Rdt,B1ADOF88Rdt,B1ADOF88Rdt,B1ADOF88Rdt, & - B1ADOF89Rdt,B1ADOF89Rdt,B1ADOF89Rdt,B1ADOF89Rdt,B1ADOF89Rdt,B1ADOF89Rdt,B1ADOF89Rdt,B1ADOF89Rdt,B1ADOF89Rdt, & - B1ADOF90Rdt,B1ADOF90Rdt,B1ADOF90Rdt,B1ADOF90Rdt,B1ADOF90Rdt,B1ADOF90Rdt,B1ADOF90Rdt,B1ADOF90Rdt,B1ADOF90Rdt, & - B1ADOF91Rdt,B1ADOF91Rdt,B1ADOF91Rdt,B1ADOF91Rdt,B1ADOF91Rdt,B1ADOF91Rdt,B1ADOF91Rdt,B1ADOF91Rdt,B1ADOF91Rdt, & - B1ADOF92Rdt,B1ADOF92Rdt,B1ADOF92Rdt,B1ADOF92Rdt,B1ADOF92Rdt,B1ADOF92Rdt,B1ADOF92Rdt,B1ADOF92Rdt,B1ADOF92Rdt, & - B1ADOF93Rdt,B1ADOF93Rdt,B1ADOF93Rdt,B1ADOF93Rdt,B1ADOF93Rdt,B1ADOF93Rdt,B1ADOF93Rdt,B1ADOF93Rdt,B1ADOF93Rdt, & - B1ADOF94Rdt,B1ADOF94Rdt,B1ADOF94Rdt,B1ADOF94Rdt,B1ADOF94Rdt,B1ADOF94Rdt,B1ADOF94Rdt,B1ADOF94Rdt,B1ADOF94Rdt, & - B1ADOF95Rdt,B1ADOF95Rdt,B1ADOF95Rdt,B1ADOF95Rdt,B1ADOF95Rdt,B1ADOF95Rdt,B1ADOF95Rdt,B1ADOF95Rdt,B1ADOF95Rdt, & - B1ADOF96Rdt,B1ADOF96Rdt,B1ADOF96Rdt,B1ADOF96Rdt,B1ADOF96Rdt,B1ADOF96Rdt,B1ADOF96Rdt,B1ADOF96Rdt,B1ADOF96Rdt, & - B1ADOF97Rdt,B1ADOF97Rdt,B1ADOF97Rdt,B1ADOF97Rdt,B1ADOF97Rdt,B1ADOF97Rdt,B1ADOF97Rdt,B1ADOF97Rdt,B1ADOF97Rdt, & - B1ADOF98Rdt,B1ADOF98Rdt,B1ADOF98Rdt,B1ADOF98Rdt,B1ADOF98Rdt,B1ADOF98Rdt,B1ADOF98Rdt,B1ADOF98Rdt,B1ADOF98Rdt, & - B1ADOF99Rdt,B1ADOF99Rdt,B1ADOF99Rdt,B1ADOF99Rdt,B1ADOF99Rdt,B1ADOF99Rdt,B1ADOF99Rdt,B1ADOF99Rdt,B1ADOF99Rdt/), & + INTEGER, PARAMETER :: FADOFRdt(99,9) = transpose(reshape((/B1ADOF1Rdt,B2ADOF1Rdt,B3ADOF1Rdt,B4ADOF1Rdt,B5ADOF1Rdt,B6ADOF1Rdt,B7ADOF1Rdt,B8ADOF1Rdt,B9ADOF1Rdt, & + B1ADOF2Rdt,B2ADOF2Rdt,B3ADOF2Rdt,B4ADOF2Rdt,B5ADOF2Rdt,B6ADOF2Rdt,B7ADOF2Rdt,B8ADOF2Rdt,B9ADOF2Rdt, & + B1ADOF3Rdt,B2ADOF3Rdt,B3ADOF3Rdt,B4ADOF3Rdt,B5ADOF3Rdt,B6ADOF3Rdt,B7ADOF3Rdt,B8ADOF3Rdt,B9ADOF3Rdt, & + B1ADOF4Rdt,B2ADOF4Rdt,B3ADOF4Rdt,B4ADOF4Rdt,B5ADOF4Rdt,B6ADOF4Rdt,B7ADOF4Rdt,B8ADOF4Rdt,B9ADOF4Rdt, & + B1ADOF5Rdt,B2ADOF5Rdt,B3ADOF5Rdt,B4ADOF5Rdt,B5ADOF5Rdt,B6ADOF5Rdt,B7ADOF5Rdt,B8ADOF5Rdt,B9ADOF5Rdt, & + B1ADOF6Rdt,B2ADOF6Rdt,B3ADOF6Rdt,B4ADOF6Rdt,B5ADOF6Rdt,B6ADOF6Rdt,B7ADOF6Rdt,B8ADOF6Rdt,B9ADOF6Rdt, & + B1ADOF7Rdt,B2ADOF7Rdt,B3ADOF7Rdt,B4ADOF7Rdt,B5ADOF7Rdt,B6ADOF7Rdt,B7ADOF7Rdt,B8ADOF7Rdt,B9ADOF7Rdt, & + B1ADOF8Rdt,B2ADOF8Rdt,B3ADOF8Rdt,B4ADOF8Rdt,B5ADOF8Rdt,B6ADOF8Rdt,B7ADOF8Rdt,B8ADOF8Rdt,B9ADOF8Rdt, & + B1ADOF9Rdt,B2ADOF9Rdt,B3ADOF9Rdt,B4ADOF9Rdt,B5ADOF9Rdt,B6ADOF9Rdt,B7ADOF9Rdt,B8ADOF9Rdt,B9ADOF9Rdt, & + B1ADOF10Rdt,B2ADOF10Rdt,B3ADOF10Rdt,B4ADOF10Rdt,B5ADOF10Rdt,B6ADOF10Rdt,B7ADOF10Rdt,B8ADOF10Rdt,B9ADOF10Rdt, & + B1ADOF11Rdt,B2ADOF11Rdt,B3ADOF11Rdt,B4ADOF11Rdt,B5ADOF11Rdt,B6ADOF11Rdt,B7ADOF11Rdt,B8ADOF11Rdt,B9ADOF11Rdt, & + B1ADOF12Rdt,B2ADOF12Rdt,B3ADOF12Rdt,B4ADOF12Rdt,B5ADOF12Rdt,B6ADOF12Rdt,B7ADOF12Rdt,B8ADOF12Rdt,B9ADOF12Rdt, & + B1ADOF13Rdt,B2ADOF13Rdt,B3ADOF13Rdt,B4ADOF13Rdt,B5ADOF13Rdt,B6ADOF13Rdt,B7ADOF13Rdt,B8ADOF13Rdt,B9ADOF13Rdt, & + B1ADOF14Rdt,B2ADOF14Rdt,B3ADOF14Rdt,B4ADOF14Rdt,B5ADOF14Rdt,B6ADOF14Rdt,B7ADOF14Rdt,B8ADOF14Rdt,B9ADOF14Rdt, & + B1ADOF15Rdt,B2ADOF15Rdt,B3ADOF15Rdt,B4ADOF15Rdt,B5ADOF15Rdt,B6ADOF15Rdt,B7ADOF15Rdt,B8ADOF15Rdt,B9ADOF15Rdt, & + B1ADOF16Rdt,B2ADOF16Rdt,B3ADOF16Rdt,B4ADOF16Rdt,B5ADOF16Rdt,B6ADOF16Rdt,B7ADOF16Rdt,B8ADOF16Rdt,B9ADOF16Rdt, & + B1ADOF17Rdt,B2ADOF17Rdt,B3ADOF17Rdt,B4ADOF17Rdt,B5ADOF17Rdt,B6ADOF17Rdt,B7ADOF17Rdt,B8ADOF17Rdt,B9ADOF17Rdt, & + B1ADOF18Rdt,B2ADOF18Rdt,B3ADOF18Rdt,B4ADOF18Rdt,B5ADOF18Rdt,B6ADOF18Rdt,B7ADOF18Rdt,B8ADOF18Rdt,B9ADOF18Rdt, & + B1ADOF19Rdt,B2ADOF19Rdt,B3ADOF19Rdt,B4ADOF19Rdt,B5ADOF19Rdt,B6ADOF19Rdt,B7ADOF19Rdt,B8ADOF19Rdt,B9ADOF19Rdt, & + B1ADOF20Rdt,B2ADOF20Rdt,B3ADOF20Rdt,B4ADOF20Rdt,B5ADOF20Rdt,B6ADOF20Rdt,B7ADOF20Rdt,B8ADOF20Rdt,B9ADOF20Rdt, & + B1ADOF21Rdt,B2ADOF21Rdt,B3ADOF21Rdt,B4ADOF21Rdt,B5ADOF21Rdt,B6ADOF21Rdt,B7ADOF21Rdt,B8ADOF21Rdt,B9ADOF21Rdt, & + B1ADOF22Rdt,B2ADOF22Rdt,B3ADOF22Rdt,B4ADOF22Rdt,B5ADOF22Rdt,B6ADOF22Rdt,B7ADOF22Rdt,B8ADOF22Rdt,B9ADOF22Rdt, & + B1ADOF23Rdt,B2ADOF23Rdt,B3ADOF23Rdt,B4ADOF23Rdt,B5ADOF23Rdt,B6ADOF23Rdt,B7ADOF23Rdt,B8ADOF23Rdt,B9ADOF23Rdt, & + B1ADOF24Rdt,B2ADOF24Rdt,B3ADOF24Rdt,B4ADOF24Rdt,B5ADOF24Rdt,B6ADOF24Rdt,B7ADOF24Rdt,B8ADOF24Rdt,B9ADOF24Rdt, & + B1ADOF25Rdt,B2ADOF25Rdt,B3ADOF25Rdt,B4ADOF25Rdt,B5ADOF25Rdt,B6ADOF25Rdt,B7ADOF25Rdt,B8ADOF25Rdt,B9ADOF25Rdt, & + B1ADOF26Rdt,B2ADOF26Rdt,B3ADOF26Rdt,B4ADOF26Rdt,B5ADOF26Rdt,B6ADOF26Rdt,B7ADOF26Rdt,B8ADOF26Rdt,B9ADOF26Rdt, & + B1ADOF27Rdt,B2ADOF27Rdt,B3ADOF27Rdt,B4ADOF27Rdt,B5ADOF27Rdt,B6ADOF27Rdt,B7ADOF27Rdt,B8ADOF27Rdt,B9ADOF27Rdt, & + B1ADOF28Rdt,B2ADOF28Rdt,B3ADOF28Rdt,B4ADOF28Rdt,B5ADOF28Rdt,B6ADOF28Rdt,B7ADOF28Rdt,B8ADOF28Rdt,B9ADOF28Rdt, & + B1ADOF29Rdt,B2ADOF29Rdt,B3ADOF29Rdt,B4ADOF29Rdt,B5ADOF29Rdt,B6ADOF29Rdt,B7ADOF29Rdt,B8ADOF29Rdt,B9ADOF29Rdt, & + B1ADOF30Rdt,B2ADOF30Rdt,B3ADOF30Rdt,B4ADOF30Rdt,B5ADOF30Rdt,B6ADOF30Rdt,B7ADOF30Rdt,B8ADOF30Rdt,B9ADOF30Rdt, & + B1ADOF31Rdt,B2ADOF31Rdt,B3ADOF31Rdt,B4ADOF31Rdt,B5ADOF31Rdt,B6ADOF31Rdt,B7ADOF31Rdt,B8ADOF31Rdt,B9ADOF31Rdt, & + B1ADOF32Rdt,B2ADOF32Rdt,B3ADOF32Rdt,B4ADOF32Rdt,B5ADOF32Rdt,B6ADOF32Rdt,B7ADOF32Rdt,B8ADOF32Rdt,B9ADOF32Rdt, & + B1ADOF33Rdt,B2ADOF33Rdt,B3ADOF33Rdt,B4ADOF33Rdt,B5ADOF33Rdt,B6ADOF33Rdt,B7ADOF33Rdt,B8ADOF33Rdt,B9ADOF33Rdt, & + B1ADOF34Rdt,B2ADOF34Rdt,B3ADOF34Rdt,B4ADOF34Rdt,B5ADOF34Rdt,B6ADOF34Rdt,B7ADOF34Rdt,B8ADOF34Rdt,B9ADOF34Rdt, & + B1ADOF35Rdt,B2ADOF35Rdt,B3ADOF35Rdt,B4ADOF35Rdt,B5ADOF35Rdt,B6ADOF35Rdt,B7ADOF35Rdt,B8ADOF35Rdt,B9ADOF35Rdt, & + B1ADOF36Rdt,B2ADOF36Rdt,B3ADOF36Rdt,B4ADOF36Rdt,B5ADOF36Rdt,B6ADOF36Rdt,B7ADOF36Rdt,B8ADOF36Rdt,B9ADOF36Rdt, & + B1ADOF37Rdt,B2ADOF37Rdt,B3ADOF37Rdt,B4ADOF37Rdt,B5ADOF37Rdt,B6ADOF37Rdt,B7ADOF37Rdt,B8ADOF37Rdt,B9ADOF37Rdt, & + B1ADOF38Rdt,B2ADOF38Rdt,B3ADOF38Rdt,B4ADOF38Rdt,B5ADOF38Rdt,B6ADOF38Rdt,B7ADOF38Rdt,B8ADOF38Rdt,B9ADOF38Rdt, & + B1ADOF39Rdt,B2ADOF39Rdt,B3ADOF39Rdt,B4ADOF39Rdt,B5ADOF39Rdt,B6ADOF39Rdt,B7ADOF39Rdt,B8ADOF39Rdt,B9ADOF39Rdt, & + B1ADOF40Rdt,B2ADOF40Rdt,B3ADOF40Rdt,B4ADOF40Rdt,B5ADOF40Rdt,B6ADOF40Rdt,B7ADOF40Rdt,B8ADOF40Rdt,B9ADOF40Rdt, & + B1ADOF41Rdt,B2ADOF41Rdt,B3ADOF41Rdt,B4ADOF41Rdt,B5ADOF41Rdt,B6ADOF41Rdt,B7ADOF41Rdt,B8ADOF41Rdt,B9ADOF41Rdt, & + B1ADOF42Rdt,B2ADOF42Rdt,B3ADOF42Rdt,B4ADOF42Rdt,B5ADOF42Rdt,B6ADOF42Rdt,B7ADOF42Rdt,B8ADOF42Rdt,B9ADOF42Rdt, & + B1ADOF43Rdt,B2ADOF43Rdt,B3ADOF43Rdt,B4ADOF43Rdt,B5ADOF43Rdt,B6ADOF43Rdt,B7ADOF43Rdt,B8ADOF43Rdt,B9ADOF43Rdt, & + B1ADOF44Rdt,B2ADOF44Rdt,B3ADOF44Rdt,B4ADOF44Rdt,B5ADOF44Rdt,B6ADOF44Rdt,B7ADOF44Rdt,B8ADOF44Rdt,B9ADOF44Rdt, & + B1ADOF45Rdt,B2ADOF45Rdt,B3ADOF45Rdt,B4ADOF45Rdt,B5ADOF45Rdt,B6ADOF45Rdt,B7ADOF45Rdt,B8ADOF45Rdt,B9ADOF45Rdt, & + B1ADOF46Rdt,B2ADOF46Rdt,B3ADOF46Rdt,B4ADOF46Rdt,B5ADOF46Rdt,B6ADOF46Rdt,B7ADOF46Rdt,B8ADOF46Rdt,B9ADOF46Rdt, & + B1ADOF47Rdt,B2ADOF47Rdt,B3ADOF47Rdt,B4ADOF47Rdt,B5ADOF47Rdt,B6ADOF47Rdt,B7ADOF47Rdt,B8ADOF47Rdt,B9ADOF47Rdt, & + B1ADOF48Rdt,B2ADOF48Rdt,B3ADOF48Rdt,B4ADOF48Rdt,B5ADOF48Rdt,B6ADOF48Rdt,B7ADOF48Rdt,B8ADOF48Rdt,B9ADOF48Rdt, & + B1ADOF49Rdt,B2ADOF49Rdt,B3ADOF49Rdt,B4ADOF49Rdt,B5ADOF49Rdt,B6ADOF49Rdt,B7ADOF49Rdt,B8ADOF49Rdt,B9ADOF49Rdt, & + B1ADOF50Rdt,B2ADOF50Rdt,B3ADOF50Rdt,B4ADOF50Rdt,B5ADOF50Rdt,B6ADOF50Rdt,B7ADOF50Rdt,B8ADOF50Rdt,B9ADOF50Rdt, & + B1ADOF51Rdt,B2ADOF51Rdt,B3ADOF51Rdt,B4ADOF51Rdt,B5ADOF51Rdt,B6ADOF51Rdt,B7ADOF51Rdt,B8ADOF51Rdt,B9ADOF51Rdt, & + B1ADOF52Rdt,B2ADOF52Rdt,B3ADOF52Rdt,B4ADOF52Rdt,B5ADOF52Rdt,B6ADOF52Rdt,B7ADOF52Rdt,B8ADOF52Rdt,B9ADOF52Rdt, & + B1ADOF53Rdt,B2ADOF53Rdt,B3ADOF53Rdt,B4ADOF53Rdt,B5ADOF53Rdt,B6ADOF53Rdt,B7ADOF53Rdt,B8ADOF53Rdt,B9ADOF53Rdt, & + B1ADOF54Rdt,B2ADOF54Rdt,B3ADOF54Rdt,B4ADOF54Rdt,B5ADOF54Rdt,B6ADOF54Rdt,B7ADOF54Rdt,B8ADOF54Rdt,B9ADOF54Rdt, & + B1ADOF55Rdt,B2ADOF55Rdt,B3ADOF55Rdt,B4ADOF55Rdt,B5ADOF55Rdt,B6ADOF55Rdt,B7ADOF55Rdt,B8ADOF55Rdt,B9ADOF55Rdt, & + B1ADOF56Rdt,B2ADOF56Rdt,B3ADOF56Rdt,B4ADOF56Rdt,B5ADOF56Rdt,B6ADOF56Rdt,B7ADOF56Rdt,B8ADOF56Rdt,B9ADOF56Rdt, & + B1ADOF57Rdt,B2ADOF57Rdt,B3ADOF57Rdt,B4ADOF57Rdt,B5ADOF57Rdt,B6ADOF57Rdt,B7ADOF57Rdt,B8ADOF57Rdt,B9ADOF57Rdt, & + B1ADOF58Rdt,B2ADOF58Rdt,B3ADOF58Rdt,B4ADOF58Rdt,B5ADOF58Rdt,B6ADOF58Rdt,B7ADOF58Rdt,B8ADOF58Rdt,B9ADOF58Rdt, & + B1ADOF59Rdt,B2ADOF59Rdt,B3ADOF59Rdt,B4ADOF59Rdt,B5ADOF59Rdt,B6ADOF59Rdt,B7ADOF59Rdt,B8ADOF59Rdt,B9ADOF59Rdt, & + B1ADOF60Rdt,B2ADOF60Rdt,B3ADOF60Rdt,B4ADOF60Rdt,B5ADOF60Rdt,B6ADOF60Rdt,B7ADOF60Rdt,B8ADOF60Rdt,B9ADOF60Rdt, & + B1ADOF61Rdt,B2ADOF61Rdt,B3ADOF61Rdt,B4ADOF61Rdt,B5ADOF61Rdt,B6ADOF61Rdt,B7ADOF61Rdt,B8ADOF61Rdt,B9ADOF61Rdt, & + B1ADOF62Rdt,B2ADOF62Rdt,B3ADOF62Rdt,B4ADOF62Rdt,B5ADOF62Rdt,B6ADOF62Rdt,B7ADOF62Rdt,B8ADOF62Rdt,B9ADOF62Rdt, & + B1ADOF63Rdt,B2ADOF63Rdt,B3ADOF63Rdt,B4ADOF63Rdt,B5ADOF63Rdt,B6ADOF63Rdt,B7ADOF63Rdt,B8ADOF63Rdt,B9ADOF63Rdt, & + B1ADOF64Rdt,B2ADOF64Rdt,B3ADOF64Rdt,B4ADOF64Rdt,B5ADOF64Rdt,B6ADOF64Rdt,B7ADOF64Rdt,B8ADOF64Rdt,B9ADOF64Rdt, & + B1ADOF65Rdt,B2ADOF65Rdt,B3ADOF65Rdt,B4ADOF65Rdt,B5ADOF65Rdt,B6ADOF65Rdt,B7ADOF65Rdt,B8ADOF65Rdt,B9ADOF65Rdt, & + B1ADOF66Rdt,B2ADOF66Rdt,B3ADOF66Rdt,B4ADOF66Rdt,B5ADOF66Rdt,B6ADOF66Rdt,B7ADOF66Rdt,B8ADOF66Rdt,B9ADOF66Rdt, & + B1ADOF67Rdt,B2ADOF67Rdt,B3ADOF67Rdt,B4ADOF67Rdt,B5ADOF67Rdt,B6ADOF67Rdt,B7ADOF67Rdt,B8ADOF67Rdt,B9ADOF67Rdt, & + B1ADOF68Rdt,B2ADOF68Rdt,B3ADOF68Rdt,B4ADOF68Rdt,B5ADOF68Rdt,B6ADOF68Rdt,B7ADOF68Rdt,B8ADOF68Rdt,B9ADOF68Rdt, & + B1ADOF69Rdt,B2ADOF69Rdt,B3ADOF69Rdt,B4ADOF69Rdt,B5ADOF69Rdt,B6ADOF69Rdt,B7ADOF69Rdt,B8ADOF69Rdt,B9ADOF69Rdt, & + B1ADOF70Rdt,B2ADOF70Rdt,B3ADOF70Rdt,B4ADOF70Rdt,B5ADOF70Rdt,B6ADOF70Rdt,B7ADOF70Rdt,B8ADOF70Rdt,B9ADOF70Rdt, & + B1ADOF71Rdt,B2ADOF71Rdt,B3ADOF71Rdt,B4ADOF71Rdt,B5ADOF71Rdt,B6ADOF71Rdt,B7ADOF71Rdt,B8ADOF71Rdt,B9ADOF71Rdt, & + B1ADOF72Rdt,B2ADOF72Rdt,B3ADOF72Rdt,B4ADOF72Rdt,B5ADOF72Rdt,B6ADOF72Rdt,B7ADOF72Rdt,B8ADOF72Rdt,B9ADOF72Rdt, & + B1ADOF73Rdt,B2ADOF73Rdt,B3ADOF73Rdt,B4ADOF73Rdt,B5ADOF73Rdt,B6ADOF73Rdt,B7ADOF73Rdt,B8ADOF73Rdt,B9ADOF73Rdt, & + B1ADOF74Rdt,B2ADOF74Rdt,B3ADOF74Rdt,B4ADOF74Rdt,B5ADOF74Rdt,B6ADOF74Rdt,B7ADOF74Rdt,B8ADOF74Rdt,B9ADOF74Rdt, & + B1ADOF75Rdt,B2ADOF75Rdt,B3ADOF75Rdt,B4ADOF75Rdt,B5ADOF75Rdt,B6ADOF75Rdt,B7ADOF75Rdt,B8ADOF75Rdt,B9ADOF75Rdt, & + B1ADOF76Rdt,B2ADOF76Rdt,B3ADOF76Rdt,B4ADOF76Rdt,B5ADOF76Rdt,B6ADOF76Rdt,B7ADOF76Rdt,B8ADOF76Rdt,B9ADOF76Rdt, & + B1ADOF77Rdt,B2ADOF77Rdt,B3ADOF77Rdt,B4ADOF77Rdt,B5ADOF77Rdt,B6ADOF77Rdt,B7ADOF77Rdt,B8ADOF77Rdt,B9ADOF77Rdt, & + B1ADOF78Rdt,B2ADOF78Rdt,B3ADOF78Rdt,B4ADOF78Rdt,B5ADOF78Rdt,B6ADOF78Rdt,B7ADOF78Rdt,B8ADOF78Rdt,B9ADOF78Rdt, & + B1ADOF79Rdt,B2ADOF79Rdt,B3ADOF79Rdt,B4ADOF79Rdt,B5ADOF79Rdt,B6ADOF79Rdt,B7ADOF79Rdt,B8ADOF79Rdt,B9ADOF79Rdt, & + B1ADOF80Rdt,B2ADOF80Rdt,B3ADOF80Rdt,B4ADOF80Rdt,B5ADOF80Rdt,B6ADOF80Rdt,B7ADOF80Rdt,B8ADOF80Rdt,B9ADOF80Rdt, & + B1ADOF81Rdt,B2ADOF81Rdt,B3ADOF81Rdt,B4ADOF81Rdt,B5ADOF81Rdt,B6ADOF81Rdt,B7ADOF81Rdt,B8ADOF81Rdt,B9ADOF81Rdt, & + B1ADOF82Rdt,B2ADOF82Rdt,B3ADOF82Rdt,B4ADOF82Rdt,B5ADOF82Rdt,B6ADOF82Rdt,B7ADOF82Rdt,B8ADOF82Rdt,B9ADOF82Rdt, & + B1ADOF83Rdt,B2ADOF83Rdt,B3ADOF83Rdt,B4ADOF83Rdt,B5ADOF83Rdt,B6ADOF83Rdt,B7ADOF83Rdt,B8ADOF83Rdt,B9ADOF83Rdt, & + B1ADOF84Rdt,B2ADOF84Rdt,B3ADOF84Rdt,B4ADOF84Rdt,B5ADOF84Rdt,B6ADOF84Rdt,B7ADOF84Rdt,B8ADOF84Rdt,B9ADOF84Rdt, & + B1ADOF85Rdt,B2ADOF85Rdt,B3ADOF85Rdt,B4ADOF85Rdt,B5ADOF85Rdt,B6ADOF85Rdt,B7ADOF85Rdt,B8ADOF85Rdt,B9ADOF85Rdt, & + B1ADOF86Rdt,B2ADOF86Rdt,B3ADOF86Rdt,B4ADOF86Rdt,B5ADOF86Rdt,B6ADOF86Rdt,B7ADOF86Rdt,B8ADOF86Rdt,B9ADOF86Rdt, & + B1ADOF87Rdt,B2ADOF87Rdt,B3ADOF87Rdt,B4ADOF87Rdt,B5ADOF87Rdt,B6ADOF87Rdt,B7ADOF87Rdt,B8ADOF87Rdt,B9ADOF87Rdt, & + B1ADOF88Rdt,B2ADOF88Rdt,B3ADOF88Rdt,B4ADOF88Rdt,B5ADOF88Rdt,B6ADOF88Rdt,B7ADOF88Rdt,B8ADOF88Rdt,B9ADOF88Rdt, & + B1ADOF89Rdt,B2ADOF89Rdt,B3ADOF89Rdt,B4ADOF89Rdt,B5ADOF89Rdt,B6ADOF89Rdt,B7ADOF89Rdt,B8ADOF89Rdt,B9ADOF89Rdt, & + B1ADOF90Rdt,B2ADOF90Rdt,B3ADOF90Rdt,B4ADOF90Rdt,B5ADOF90Rdt,B6ADOF90Rdt,B7ADOF90Rdt,B8ADOF90Rdt,B9ADOF90Rdt, & + B1ADOF91Rdt,B2ADOF91Rdt,B3ADOF91Rdt,B4ADOF91Rdt,B5ADOF91Rdt,B6ADOF91Rdt,B7ADOF91Rdt,B8ADOF91Rdt,B9ADOF91Rdt, & + B1ADOF92Rdt,B2ADOF92Rdt,B3ADOF92Rdt,B4ADOF92Rdt,B5ADOF92Rdt,B6ADOF92Rdt,B7ADOF92Rdt,B8ADOF92Rdt,B9ADOF92Rdt, & + B1ADOF93Rdt,B2ADOF93Rdt,B3ADOF93Rdt,B4ADOF93Rdt,B5ADOF93Rdt,B6ADOF93Rdt,B7ADOF93Rdt,B8ADOF93Rdt,B9ADOF93Rdt, & + B1ADOF94Rdt,B2ADOF94Rdt,B3ADOF94Rdt,B4ADOF94Rdt,B5ADOF94Rdt,B6ADOF94Rdt,B7ADOF94Rdt,B8ADOF94Rdt,B9ADOF94Rdt, & + B1ADOF95Rdt,B2ADOF95Rdt,B3ADOF95Rdt,B4ADOF95Rdt,B5ADOF95Rdt,B6ADOF95Rdt,B7ADOF95Rdt,B8ADOF95Rdt,B9ADOF95Rdt, & + B1ADOF96Rdt,B2ADOF96Rdt,B3ADOF96Rdt,B4ADOF96Rdt,B5ADOF96Rdt,B6ADOF96Rdt,B7ADOF96Rdt,B8ADOF96Rdt,B9ADOF96Rdt, & + B1ADOF97Rdt,B2ADOF97Rdt,B3ADOF97Rdt,B4ADOF97Rdt,B5ADOF97Rdt,B6ADOF97Rdt,B7ADOF97Rdt,B8ADOF97Rdt,B9ADOF97Rdt, & + B1ADOF98Rdt,B2ADOF98Rdt,B3ADOF98Rdt,B4ADOF98Rdt,B5ADOF98Rdt,B6ADOF98Rdt,B7ADOF98Rdt,B8ADOF98Rdt,B9ADOF98Rdt, & + B1ADOF99Rdt,B2ADOF99Rdt,B3ADOF99Rdt,B4ADOF99Rdt,B5ADOF99Rdt,B6ADOF99Rdt,B7ADOF99Rdt,B8ADOF99Rdt,B9ADOF99Rdt/), & (/9,99/))) - INTEGER, PARAMETER :: FADOFHds(99,9) = transpose(reshape((/B1ADOF1Hds,B1ADOF1Hds,B1ADOF1Hds,B1ADOF1Hds,B1ADOF1Hds,B1ADOF1Hds,B1ADOF1Hds,B1ADOF1Hds,B1ADOF1Hds, & - B1ADOF2Hds,B1ADOF2Hds,B1ADOF2Hds,B1ADOF2Hds,B1ADOF2Hds,B1ADOF2Hds,B1ADOF2Hds,B1ADOF2Hds,B1ADOF2Hds, & - B1ADOF3Hds,B1ADOF3Hds,B1ADOF3Hds,B1ADOF3Hds,B1ADOF3Hds,B1ADOF3Hds,B1ADOF3Hds,B1ADOF3Hds,B1ADOF3Hds, & - B1ADOF4Hds,B1ADOF4Hds,B1ADOF4Hds,B1ADOF4Hds,B1ADOF4Hds,B1ADOF4Hds,B1ADOF4Hds,B1ADOF4Hds,B1ADOF4Hds, & - B1ADOF5Hds,B1ADOF5Hds,B1ADOF5Hds,B1ADOF5Hds,B1ADOF5Hds,B1ADOF5Hds,B1ADOF5Hds,B1ADOF5Hds,B1ADOF5Hds, & - B1ADOF6Hds,B1ADOF6Hds,B1ADOF6Hds,B1ADOF6Hds,B1ADOF6Hds,B1ADOF6Hds,B1ADOF6Hds,B1ADOF6Hds,B1ADOF6Hds, & - B1ADOF7Hds,B1ADOF7Hds,B1ADOF7Hds,B1ADOF7Hds,B1ADOF7Hds,B1ADOF7Hds,B1ADOF7Hds,B1ADOF7Hds,B1ADOF7Hds, & - B1ADOF8Hds,B1ADOF8Hds,B1ADOF8Hds,B1ADOF8Hds,B1ADOF8Hds,B1ADOF8Hds,B1ADOF8Hds,B1ADOF8Hds,B1ADOF8Hds, & - B1ADOF9Hds,B1ADOF9Hds,B1ADOF9Hds,B1ADOF9Hds,B1ADOF9Hds,B1ADOF9Hds,B1ADOF9Hds,B1ADOF9Hds,B1ADOF9Hds, & - B1ADOF10Hds,B1ADOF10Hds,B1ADOF10Hds,B1ADOF10Hds,B1ADOF10Hds,B1ADOF10Hds,B1ADOF10Hds,B1ADOF10Hds,B1ADOF10Hds, & - B1ADOF11Hds,B1ADOF11Hds,B1ADOF11Hds,B1ADOF11Hds,B1ADOF11Hds,B1ADOF11Hds,B1ADOF11Hds,B1ADOF11Hds,B1ADOF11Hds, & - B1ADOF12Hds,B1ADOF12Hds,B1ADOF12Hds,B1ADOF12Hds,B1ADOF12Hds,B1ADOF12Hds,B1ADOF12Hds,B1ADOF12Hds,B1ADOF12Hds, & - B1ADOF13Hds,B1ADOF13Hds,B1ADOF13Hds,B1ADOF13Hds,B1ADOF13Hds,B1ADOF13Hds,B1ADOF13Hds,B1ADOF13Hds,B1ADOF13Hds, & - B1ADOF14Hds,B1ADOF14Hds,B1ADOF14Hds,B1ADOF14Hds,B1ADOF14Hds,B1ADOF14Hds,B1ADOF14Hds,B1ADOF14Hds,B1ADOF14Hds, & - B1ADOF15Hds,B1ADOF15Hds,B1ADOF15Hds,B1ADOF15Hds,B1ADOF15Hds,B1ADOF15Hds,B1ADOF15Hds,B1ADOF15Hds,B1ADOF15Hds, & - B1ADOF16Hds,B1ADOF16Hds,B1ADOF16Hds,B1ADOF16Hds,B1ADOF16Hds,B1ADOF16Hds,B1ADOF16Hds,B1ADOF16Hds,B1ADOF16Hds, & - B1ADOF17Hds,B1ADOF17Hds,B1ADOF17Hds,B1ADOF17Hds,B1ADOF17Hds,B1ADOF17Hds,B1ADOF17Hds,B1ADOF17Hds,B1ADOF17Hds, & - B1ADOF18Hds,B1ADOF18Hds,B1ADOF18Hds,B1ADOF18Hds,B1ADOF18Hds,B1ADOF18Hds,B1ADOF18Hds,B1ADOF18Hds,B1ADOF18Hds, & - B1ADOF19Hds,B1ADOF19Hds,B1ADOF19Hds,B1ADOF19Hds,B1ADOF19Hds,B1ADOF19Hds,B1ADOF19Hds,B1ADOF19Hds,B1ADOF19Hds, & - B1ADOF20Hds,B1ADOF20Hds,B1ADOF20Hds,B1ADOF20Hds,B1ADOF20Hds,B1ADOF20Hds,B1ADOF20Hds,B1ADOF20Hds,B1ADOF20Hds, & - B1ADOF21Hds,B1ADOF21Hds,B1ADOF21Hds,B1ADOF21Hds,B1ADOF21Hds,B1ADOF21Hds,B1ADOF21Hds,B1ADOF21Hds,B1ADOF21Hds, & - B1ADOF22Hds,B1ADOF22Hds,B1ADOF22Hds,B1ADOF22Hds,B1ADOF22Hds,B1ADOF22Hds,B1ADOF22Hds,B1ADOF22Hds,B1ADOF22Hds, & - B1ADOF23Hds,B1ADOF23Hds,B1ADOF23Hds,B1ADOF23Hds,B1ADOF23Hds,B1ADOF23Hds,B1ADOF23Hds,B1ADOF23Hds,B1ADOF23Hds, & - B1ADOF24Hds,B1ADOF24Hds,B1ADOF24Hds,B1ADOF24Hds,B1ADOF24Hds,B1ADOF24Hds,B1ADOF24Hds,B1ADOF24Hds,B1ADOF24Hds, & - B1ADOF25Hds,B1ADOF25Hds,B1ADOF25Hds,B1ADOF25Hds,B1ADOF25Hds,B1ADOF25Hds,B1ADOF25Hds,B1ADOF25Hds,B1ADOF25Hds, & - B1ADOF26Hds,B1ADOF26Hds,B1ADOF26Hds,B1ADOF26Hds,B1ADOF26Hds,B1ADOF26Hds,B1ADOF26Hds,B1ADOF26Hds,B1ADOF26Hds, & - B1ADOF27Hds,B1ADOF27Hds,B1ADOF27Hds,B1ADOF27Hds,B1ADOF27Hds,B1ADOF27Hds,B1ADOF27Hds,B1ADOF27Hds,B1ADOF27Hds, & - B1ADOF28Hds,B1ADOF28Hds,B1ADOF28Hds,B1ADOF28Hds,B1ADOF28Hds,B1ADOF28Hds,B1ADOF28Hds,B1ADOF28Hds,B1ADOF28Hds, & - B1ADOF29Hds,B1ADOF29Hds,B1ADOF29Hds,B1ADOF29Hds,B1ADOF29Hds,B1ADOF29Hds,B1ADOF29Hds,B1ADOF29Hds,B1ADOF29Hds, & - B1ADOF30Hds,B1ADOF30Hds,B1ADOF30Hds,B1ADOF30Hds,B1ADOF30Hds,B1ADOF30Hds,B1ADOF30Hds,B1ADOF30Hds,B1ADOF30Hds, & - B1ADOF31Hds,B1ADOF31Hds,B1ADOF31Hds,B1ADOF31Hds,B1ADOF31Hds,B1ADOF31Hds,B1ADOF31Hds,B1ADOF31Hds,B1ADOF31Hds, & - B1ADOF32Hds,B1ADOF32Hds,B1ADOF32Hds,B1ADOF32Hds,B1ADOF32Hds,B1ADOF32Hds,B1ADOF32Hds,B1ADOF32Hds,B1ADOF32Hds, & - B1ADOF33Hds,B1ADOF33Hds,B1ADOF33Hds,B1ADOF33Hds,B1ADOF33Hds,B1ADOF33Hds,B1ADOF33Hds,B1ADOF33Hds,B1ADOF33Hds, & - B1ADOF34Hds,B1ADOF34Hds,B1ADOF34Hds,B1ADOF34Hds,B1ADOF34Hds,B1ADOF34Hds,B1ADOF34Hds,B1ADOF34Hds,B1ADOF34Hds, & - B1ADOF35Hds,B1ADOF35Hds,B1ADOF35Hds,B1ADOF35Hds,B1ADOF35Hds,B1ADOF35Hds,B1ADOF35Hds,B1ADOF35Hds,B1ADOF35Hds, & - B1ADOF36Hds,B1ADOF36Hds,B1ADOF36Hds,B1ADOF36Hds,B1ADOF36Hds,B1ADOF36Hds,B1ADOF36Hds,B1ADOF36Hds,B1ADOF36Hds, & - B1ADOF37Hds,B1ADOF37Hds,B1ADOF37Hds,B1ADOF37Hds,B1ADOF37Hds,B1ADOF37Hds,B1ADOF37Hds,B1ADOF37Hds,B1ADOF37Hds, & - B1ADOF38Hds,B1ADOF38Hds,B1ADOF38Hds,B1ADOF38Hds,B1ADOF38Hds,B1ADOF38Hds,B1ADOF38Hds,B1ADOF38Hds,B1ADOF38Hds, & - B1ADOF39Hds,B1ADOF39Hds,B1ADOF39Hds,B1ADOF39Hds,B1ADOF39Hds,B1ADOF39Hds,B1ADOF39Hds,B1ADOF39Hds,B1ADOF39Hds, & - B1ADOF40Hds,B1ADOF40Hds,B1ADOF40Hds,B1ADOF40Hds,B1ADOF40Hds,B1ADOF40Hds,B1ADOF40Hds,B1ADOF40Hds,B1ADOF40Hds, & - B1ADOF41Hds,B1ADOF41Hds,B1ADOF41Hds,B1ADOF41Hds,B1ADOF41Hds,B1ADOF41Hds,B1ADOF41Hds,B1ADOF41Hds,B1ADOF41Hds, & - B1ADOF42Hds,B1ADOF42Hds,B1ADOF42Hds,B1ADOF42Hds,B1ADOF42Hds,B1ADOF42Hds,B1ADOF42Hds,B1ADOF42Hds,B1ADOF42Hds, & - B1ADOF43Hds,B1ADOF43Hds,B1ADOF43Hds,B1ADOF43Hds,B1ADOF43Hds,B1ADOF43Hds,B1ADOF43Hds,B1ADOF43Hds,B1ADOF43Hds, & - B1ADOF44Hds,B1ADOF44Hds,B1ADOF44Hds,B1ADOF44Hds,B1ADOF44Hds,B1ADOF44Hds,B1ADOF44Hds,B1ADOF44Hds,B1ADOF44Hds, & - B1ADOF45Hds,B1ADOF45Hds,B1ADOF45Hds,B1ADOF45Hds,B1ADOF45Hds,B1ADOF45Hds,B1ADOF45Hds,B1ADOF45Hds,B1ADOF45Hds, & - B1ADOF46Hds,B1ADOF46Hds,B1ADOF46Hds,B1ADOF46Hds,B1ADOF46Hds,B1ADOF46Hds,B1ADOF46Hds,B1ADOF46Hds,B1ADOF46Hds, & - B1ADOF47Hds,B1ADOF47Hds,B1ADOF47Hds,B1ADOF47Hds,B1ADOF47Hds,B1ADOF47Hds,B1ADOF47Hds,B1ADOF47Hds,B1ADOF47Hds, & - B1ADOF48Hds,B1ADOF48Hds,B1ADOF48Hds,B1ADOF48Hds,B1ADOF48Hds,B1ADOF48Hds,B1ADOF48Hds,B1ADOF48Hds,B1ADOF48Hds, & - B1ADOF49Hds,B1ADOF49Hds,B1ADOF49Hds,B1ADOF49Hds,B1ADOF49Hds,B1ADOF49Hds,B1ADOF49Hds,B1ADOF49Hds,B1ADOF49Hds, & - B1ADOF50Hds,B1ADOF50Hds,B1ADOF50Hds,B1ADOF50Hds,B1ADOF50Hds,B1ADOF50Hds,B1ADOF50Hds,B1ADOF50Hds,B1ADOF50Hds, & - B1ADOF51Hds,B1ADOF51Hds,B1ADOF51Hds,B1ADOF51Hds,B1ADOF51Hds,B1ADOF51Hds,B1ADOF51Hds,B1ADOF51Hds,B1ADOF51Hds, & - B1ADOF52Hds,B1ADOF52Hds,B1ADOF52Hds,B1ADOF52Hds,B1ADOF52Hds,B1ADOF52Hds,B1ADOF52Hds,B1ADOF52Hds,B1ADOF52Hds, & - B1ADOF53Hds,B1ADOF53Hds,B1ADOF53Hds,B1ADOF53Hds,B1ADOF53Hds,B1ADOF53Hds,B1ADOF53Hds,B1ADOF53Hds,B1ADOF53Hds, & - B1ADOF54Hds,B1ADOF54Hds,B1ADOF54Hds,B1ADOF54Hds,B1ADOF54Hds,B1ADOF54Hds,B1ADOF54Hds,B1ADOF54Hds,B1ADOF54Hds, & - B1ADOF55Hds,B1ADOF55Hds,B1ADOF55Hds,B1ADOF55Hds,B1ADOF55Hds,B1ADOF55Hds,B1ADOF55Hds,B1ADOF55Hds,B1ADOF55Hds, & - B1ADOF56Hds,B1ADOF56Hds,B1ADOF56Hds,B1ADOF56Hds,B1ADOF56Hds,B1ADOF56Hds,B1ADOF56Hds,B1ADOF56Hds,B1ADOF56Hds, & - B1ADOF57Hds,B1ADOF57Hds,B1ADOF57Hds,B1ADOF57Hds,B1ADOF57Hds,B1ADOF57Hds,B1ADOF57Hds,B1ADOF57Hds,B1ADOF57Hds, & - B1ADOF58Hds,B1ADOF58Hds,B1ADOF58Hds,B1ADOF58Hds,B1ADOF58Hds,B1ADOF58Hds,B1ADOF58Hds,B1ADOF58Hds,B1ADOF58Hds, & - B1ADOF59Hds,B1ADOF59Hds,B1ADOF59Hds,B1ADOF59Hds,B1ADOF59Hds,B1ADOF59Hds,B1ADOF59Hds,B1ADOF59Hds,B1ADOF59Hds, & - B1ADOF60Hds,B1ADOF60Hds,B1ADOF60Hds,B1ADOF60Hds,B1ADOF60Hds,B1ADOF60Hds,B1ADOF60Hds,B1ADOF60Hds,B1ADOF60Hds, & - B1ADOF61Hds,B1ADOF61Hds,B1ADOF61Hds,B1ADOF61Hds,B1ADOF61Hds,B1ADOF61Hds,B1ADOF61Hds,B1ADOF61Hds,B1ADOF61Hds, & - B1ADOF62Hds,B1ADOF62Hds,B1ADOF62Hds,B1ADOF62Hds,B1ADOF62Hds,B1ADOF62Hds,B1ADOF62Hds,B1ADOF62Hds,B1ADOF62Hds, & - B1ADOF63Hds,B1ADOF63Hds,B1ADOF63Hds,B1ADOF63Hds,B1ADOF63Hds,B1ADOF63Hds,B1ADOF63Hds,B1ADOF63Hds,B1ADOF63Hds, & - B1ADOF64Hds,B1ADOF64Hds,B1ADOF64Hds,B1ADOF64Hds,B1ADOF64Hds,B1ADOF64Hds,B1ADOF64Hds,B1ADOF64Hds,B1ADOF64Hds, & - B1ADOF65Hds,B1ADOF65Hds,B1ADOF65Hds,B1ADOF65Hds,B1ADOF65Hds,B1ADOF65Hds,B1ADOF65Hds,B1ADOF65Hds,B1ADOF65Hds, & - B1ADOF66Hds,B1ADOF66Hds,B1ADOF66Hds,B1ADOF66Hds,B1ADOF66Hds,B1ADOF66Hds,B1ADOF66Hds,B1ADOF66Hds,B1ADOF66Hds, & - B1ADOF67Hds,B1ADOF67Hds,B1ADOF67Hds,B1ADOF67Hds,B1ADOF67Hds,B1ADOF67Hds,B1ADOF67Hds,B1ADOF67Hds,B1ADOF67Hds, & - B1ADOF68Hds,B1ADOF68Hds,B1ADOF68Hds,B1ADOF68Hds,B1ADOF68Hds,B1ADOF68Hds,B1ADOF68Hds,B1ADOF68Hds,B1ADOF68Hds, & - B1ADOF69Hds,B1ADOF69Hds,B1ADOF69Hds,B1ADOF69Hds,B1ADOF69Hds,B1ADOF69Hds,B1ADOF69Hds,B1ADOF69Hds,B1ADOF69Hds, & - B1ADOF70Hds,B1ADOF70Hds,B1ADOF70Hds,B1ADOF70Hds,B1ADOF70Hds,B1ADOF70Hds,B1ADOF70Hds,B1ADOF70Hds,B1ADOF70Hds, & - B1ADOF71Hds,B1ADOF71Hds,B1ADOF71Hds,B1ADOF71Hds,B1ADOF71Hds,B1ADOF71Hds,B1ADOF71Hds,B1ADOF71Hds,B1ADOF71Hds, & - B1ADOF72Hds,B1ADOF72Hds,B1ADOF72Hds,B1ADOF72Hds,B1ADOF72Hds,B1ADOF72Hds,B1ADOF72Hds,B1ADOF72Hds,B1ADOF72Hds, & - B1ADOF73Hds,B1ADOF73Hds,B1ADOF73Hds,B1ADOF73Hds,B1ADOF73Hds,B1ADOF73Hds,B1ADOF73Hds,B1ADOF73Hds,B1ADOF73Hds, & - B1ADOF74Hds,B1ADOF74Hds,B1ADOF74Hds,B1ADOF74Hds,B1ADOF74Hds,B1ADOF74Hds,B1ADOF74Hds,B1ADOF74Hds,B1ADOF74Hds, & - B1ADOF75Hds,B1ADOF75Hds,B1ADOF75Hds,B1ADOF75Hds,B1ADOF75Hds,B1ADOF75Hds,B1ADOF75Hds,B1ADOF75Hds,B1ADOF75Hds, & - B1ADOF76Hds,B1ADOF76Hds,B1ADOF76Hds,B1ADOF76Hds,B1ADOF76Hds,B1ADOF76Hds,B1ADOF76Hds,B1ADOF76Hds,B1ADOF76Hds, & - B1ADOF77Hds,B1ADOF77Hds,B1ADOF77Hds,B1ADOF77Hds,B1ADOF77Hds,B1ADOF77Hds,B1ADOF77Hds,B1ADOF77Hds,B1ADOF77Hds, & - B1ADOF78Hds,B1ADOF78Hds,B1ADOF78Hds,B1ADOF78Hds,B1ADOF78Hds,B1ADOF78Hds,B1ADOF78Hds,B1ADOF78Hds,B1ADOF78Hds, & - B1ADOF79Hds,B1ADOF79Hds,B1ADOF79Hds,B1ADOF79Hds,B1ADOF79Hds,B1ADOF79Hds,B1ADOF79Hds,B1ADOF79Hds,B1ADOF79Hds, & - B1ADOF80Hds,B1ADOF80Hds,B1ADOF80Hds,B1ADOF80Hds,B1ADOF80Hds,B1ADOF80Hds,B1ADOF80Hds,B1ADOF80Hds,B1ADOF80Hds, & - B1ADOF81Hds,B1ADOF81Hds,B1ADOF81Hds,B1ADOF81Hds,B1ADOF81Hds,B1ADOF81Hds,B1ADOF81Hds,B1ADOF81Hds,B1ADOF81Hds, & - B1ADOF82Hds,B1ADOF82Hds,B1ADOF82Hds,B1ADOF82Hds,B1ADOF82Hds,B1ADOF82Hds,B1ADOF82Hds,B1ADOF82Hds,B1ADOF82Hds, & - B1ADOF83Hds,B1ADOF83Hds,B1ADOF83Hds,B1ADOF83Hds,B1ADOF83Hds,B1ADOF83Hds,B1ADOF83Hds,B1ADOF83Hds,B1ADOF83Hds, & - B1ADOF84Hds,B1ADOF84Hds,B1ADOF84Hds,B1ADOF84Hds,B1ADOF84Hds,B1ADOF84Hds,B1ADOF84Hds,B1ADOF84Hds,B1ADOF84Hds, & - B1ADOF85Hds,B1ADOF85Hds,B1ADOF85Hds,B1ADOF85Hds,B1ADOF85Hds,B1ADOF85Hds,B1ADOF85Hds,B1ADOF85Hds,B1ADOF85Hds, & - B1ADOF86Hds,B1ADOF86Hds,B1ADOF86Hds,B1ADOF86Hds,B1ADOF86Hds,B1ADOF86Hds,B1ADOF86Hds,B1ADOF86Hds,B1ADOF86Hds, & - B1ADOF87Hds,B1ADOF87Hds,B1ADOF87Hds,B1ADOF87Hds,B1ADOF87Hds,B1ADOF87Hds,B1ADOF87Hds,B1ADOF87Hds,B1ADOF87Hds, & - B1ADOF88Hds,B1ADOF88Hds,B1ADOF88Hds,B1ADOF88Hds,B1ADOF88Hds,B1ADOF88Hds,B1ADOF88Hds,B1ADOF88Hds,B1ADOF88Hds, & - B1ADOF89Hds,B1ADOF89Hds,B1ADOF89Hds,B1ADOF89Hds,B1ADOF89Hds,B1ADOF89Hds,B1ADOF89Hds,B1ADOF89Hds,B1ADOF89Hds, & - B1ADOF90Hds,B1ADOF90Hds,B1ADOF90Hds,B1ADOF90Hds,B1ADOF90Hds,B1ADOF90Hds,B1ADOF90Hds,B1ADOF90Hds,B1ADOF90Hds, & - B1ADOF91Hds,B1ADOF91Hds,B1ADOF91Hds,B1ADOF91Hds,B1ADOF91Hds,B1ADOF91Hds,B1ADOF91Hds,B1ADOF91Hds,B1ADOF91Hds, & - B1ADOF92Hds,B1ADOF92Hds,B1ADOF92Hds,B1ADOF92Hds,B1ADOF92Hds,B1ADOF92Hds,B1ADOF92Hds,B1ADOF92Hds,B1ADOF92Hds, & - B1ADOF93Hds,B1ADOF93Hds,B1ADOF93Hds,B1ADOF93Hds,B1ADOF93Hds,B1ADOF93Hds,B1ADOF93Hds,B1ADOF93Hds,B1ADOF93Hds, & - B1ADOF94Hds,B1ADOF94Hds,B1ADOF94Hds,B1ADOF94Hds,B1ADOF94Hds,B1ADOF94Hds,B1ADOF94Hds,B1ADOF94Hds,B1ADOF94Hds, & - B1ADOF95Hds,B1ADOF95Hds,B1ADOF95Hds,B1ADOF95Hds,B1ADOF95Hds,B1ADOF95Hds,B1ADOF95Hds,B1ADOF95Hds,B1ADOF95Hds, & - B1ADOF96Hds,B1ADOF96Hds,B1ADOF96Hds,B1ADOF96Hds,B1ADOF96Hds,B1ADOF96Hds,B1ADOF96Hds,B1ADOF96Hds,B1ADOF96Hds, & - B1ADOF97Hds,B1ADOF97Hds,B1ADOF97Hds,B1ADOF97Hds,B1ADOF97Hds,B1ADOF97Hds,B1ADOF97Hds,B1ADOF97Hds,B1ADOF97Hds, & - B1ADOF98Hds,B1ADOF98Hds,B1ADOF98Hds,B1ADOF98Hds,B1ADOF98Hds,B1ADOF98Hds,B1ADOF98Hds,B1ADOF98Hds,B1ADOF98Hds, & - B1ADOF99Hds,B1ADOF99Hds,B1ADOF99Hds,B1ADOF99Hds,B1ADOF99Hds,B1ADOF99Hds,B1ADOF99Hds,B1ADOF99Hds,B1ADOF99Hds/), & + INTEGER, PARAMETER :: FADOFHds(99,9) = transpose(reshape((/B1ADOF1Hds,B2ADOF1Hds,B3ADOF1Hds,B4ADOF1Hds,B5ADOF1Hds,B6ADOF1Hds,B7ADOF1Hds,B8ADOF1Hds,B9ADOF1Hds, & + B1ADOF2Hds,B2ADOF2Hds,B3ADOF2Hds,B4ADOF2Hds,B5ADOF2Hds,B6ADOF2Hds,B7ADOF2Hds,B8ADOF2Hds,B9ADOF2Hds, & + B1ADOF3Hds,B2ADOF3Hds,B3ADOF3Hds,B4ADOF3Hds,B5ADOF3Hds,B6ADOF3Hds,B7ADOF3Hds,B8ADOF3Hds,B9ADOF3Hds, & + B1ADOF4Hds,B2ADOF4Hds,B3ADOF4Hds,B4ADOF4Hds,B5ADOF4Hds,B6ADOF4Hds,B7ADOF4Hds,B8ADOF4Hds,B9ADOF4Hds, & + B1ADOF5Hds,B2ADOF5Hds,B3ADOF5Hds,B4ADOF5Hds,B5ADOF5Hds,B6ADOF5Hds,B7ADOF5Hds,B8ADOF5Hds,B9ADOF5Hds, & + B1ADOF6Hds,B2ADOF6Hds,B3ADOF6Hds,B4ADOF6Hds,B5ADOF6Hds,B6ADOF6Hds,B7ADOF6Hds,B8ADOF6Hds,B9ADOF6Hds, & + B1ADOF7Hds,B2ADOF7Hds,B3ADOF7Hds,B4ADOF7Hds,B5ADOF7Hds,B6ADOF7Hds,B7ADOF7Hds,B8ADOF7Hds,B9ADOF7Hds, & + B1ADOF8Hds,B2ADOF8Hds,B3ADOF8Hds,B4ADOF8Hds,B5ADOF8Hds,B6ADOF8Hds,B7ADOF8Hds,B8ADOF8Hds,B9ADOF8Hds, & + B1ADOF9Hds,B2ADOF9Hds,B3ADOF9Hds,B4ADOF9Hds,B5ADOF9Hds,B6ADOF9Hds,B7ADOF9Hds,B8ADOF9Hds,B9ADOF9Hds, & + B1ADOF10Hds,B2ADOF10Hds,B3ADOF10Hds,B4ADOF10Hds,B5ADOF10Hds,B6ADOF10Hds,B7ADOF10Hds,B8ADOF10Hds,B9ADOF10Hds, & + B1ADOF11Hds,B2ADOF11Hds,B3ADOF11Hds,B4ADOF11Hds,B5ADOF11Hds,B6ADOF11Hds,B7ADOF11Hds,B8ADOF11Hds,B9ADOF11Hds, & + B1ADOF12Hds,B2ADOF12Hds,B3ADOF12Hds,B4ADOF12Hds,B5ADOF12Hds,B6ADOF12Hds,B7ADOF12Hds,B8ADOF12Hds,B9ADOF12Hds, & + B1ADOF13Hds,B2ADOF13Hds,B3ADOF13Hds,B4ADOF13Hds,B5ADOF13Hds,B6ADOF13Hds,B7ADOF13Hds,B8ADOF13Hds,B9ADOF13Hds, & + B1ADOF14Hds,B2ADOF14Hds,B3ADOF14Hds,B4ADOF14Hds,B5ADOF14Hds,B6ADOF14Hds,B7ADOF14Hds,B8ADOF14Hds,B9ADOF14Hds, & + B1ADOF15Hds,B2ADOF15Hds,B3ADOF15Hds,B4ADOF15Hds,B5ADOF15Hds,B6ADOF15Hds,B7ADOF15Hds,B8ADOF15Hds,B9ADOF15Hds, & + B1ADOF16Hds,B2ADOF16Hds,B3ADOF16Hds,B4ADOF16Hds,B5ADOF16Hds,B6ADOF16Hds,B7ADOF16Hds,B8ADOF16Hds,B9ADOF16Hds, & + B1ADOF17Hds,B2ADOF17Hds,B3ADOF17Hds,B4ADOF17Hds,B5ADOF17Hds,B6ADOF17Hds,B7ADOF17Hds,B8ADOF17Hds,B9ADOF17Hds, & + B1ADOF18Hds,B2ADOF18Hds,B3ADOF18Hds,B4ADOF18Hds,B5ADOF18Hds,B6ADOF18Hds,B7ADOF18Hds,B8ADOF18Hds,B9ADOF18Hds, & + B1ADOF19Hds,B2ADOF19Hds,B3ADOF19Hds,B4ADOF19Hds,B5ADOF19Hds,B6ADOF19Hds,B7ADOF19Hds,B8ADOF19Hds,B9ADOF19Hds, & + B1ADOF20Hds,B2ADOF20Hds,B3ADOF20Hds,B4ADOF20Hds,B5ADOF20Hds,B6ADOF20Hds,B7ADOF20Hds,B8ADOF20Hds,B9ADOF20Hds, & + B1ADOF21Hds,B2ADOF21Hds,B3ADOF21Hds,B4ADOF21Hds,B5ADOF21Hds,B6ADOF21Hds,B7ADOF21Hds,B8ADOF21Hds,B9ADOF21Hds, & + B1ADOF22Hds,B2ADOF22Hds,B3ADOF22Hds,B4ADOF22Hds,B5ADOF22Hds,B6ADOF22Hds,B7ADOF22Hds,B8ADOF22Hds,B9ADOF22Hds, & + B1ADOF23Hds,B2ADOF23Hds,B3ADOF23Hds,B4ADOF23Hds,B5ADOF23Hds,B6ADOF23Hds,B7ADOF23Hds,B8ADOF23Hds,B9ADOF23Hds, & + B1ADOF24Hds,B2ADOF24Hds,B3ADOF24Hds,B4ADOF24Hds,B5ADOF24Hds,B6ADOF24Hds,B7ADOF24Hds,B8ADOF24Hds,B9ADOF24Hds, & + B1ADOF25Hds,B2ADOF25Hds,B3ADOF25Hds,B4ADOF25Hds,B5ADOF25Hds,B6ADOF25Hds,B7ADOF25Hds,B8ADOF25Hds,B9ADOF25Hds, & + B1ADOF26Hds,B2ADOF26Hds,B3ADOF26Hds,B4ADOF26Hds,B5ADOF26Hds,B6ADOF26Hds,B7ADOF26Hds,B8ADOF26Hds,B9ADOF26Hds, & + B1ADOF27Hds,B2ADOF27Hds,B3ADOF27Hds,B4ADOF27Hds,B5ADOF27Hds,B6ADOF27Hds,B7ADOF27Hds,B8ADOF27Hds,B9ADOF27Hds, & + B1ADOF28Hds,B2ADOF28Hds,B3ADOF28Hds,B4ADOF28Hds,B5ADOF28Hds,B6ADOF28Hds,B7ADOF28Hds,B8ADOF28Hds,B9ADOF28Hds, & + B1ADOF29Hds,B2ADOF29Hds,B3ADOF29Hds,B4ADOF29Hds,B5ADOF29Hds,B6ADOF29Hds,B7ADOF29Hds,B8ADOF29Hds,B9ADOF29Hds, & + B1ADOF30Hds,B2ADOF30Hds,B3ADOF30Hds,B4ADOF30Hds,B5ADOF30Hds,B6ADOF30Hds,B7ADOF30Hds,B8ADOF30Hds,B9ADOF30Hds, & + B1ADOF31Hds,B2ADOF31Hds,B3ADOF31Hds,B4ADOF31Hds,B5ADOF31Hds,B6ADOF31Hds,B7ADOF31Hds,B8ADOF31Hds,B9ADOF31Hds, & + B1ADOF32Hds,B2ADOF32Hds,B3ADOF32Hds,B4ADOF32Hds,B5ADOF32Hds,B6ADOF32Hds,B7ADOF32Hds,B8ADOF32Hds,B9ADOF32Hds, & + B1ADOF33Hds,B2ADOF33Hds,B3ADOF33Hds,B4ADOF33Hds,B5ADOF33Hds,B6ADOF33Hds,B7ADOF33Hds,B8ADOF33Hds,B9ADOF33Hds, & + B1ADOF34Hds,B2ADOF34Hds,B3ADOF34Hds,B4ADOF34Hds,B5ADOF34Hds,B6ADOF34Hds,B7ADOF34Hds,B8ADOF34Hds,B9ADOF34Hds, & + B1ADOF35Hds,B2ADOF35Hds,B3ADOF35Hds,B4ADOF35Hds,B5ADOF35Hds,B6ADOF35Hds,B7ADOF35Hds,B8ADOF35Hds,B9ADOF35Hds, & + B1ADOF36Hds,B2ADOF36Hds,B3ADOF36Hds,B4ADOF36Hds,B5ADOF36Hds,B6ADOF36Hds,B7ADOF36Hds,B8ADOF36Hds,B9ADOF36Hds, & + B1ADOF37Hds,B2ADOF37Hds,B3ADOF37Hds,B4ADOF37Hds,B5ADOF37Hds,B6ADOF37Hds,B7ADOF37Hds,B8ADOF37Hds,B9ADOF37Hds, & + B1ADOF38Hds,B2ADOF38Hds,B3ADOF38Hds,B4ADOF38Hds,B5ADOF38Hds,B6ADOF38Hds,B7ADOF38Hds,B8ADOF38Hds,B9ADOF38Hds, & + B1ADOF39Hds,B2ADOF39Hds,B3ADOF39Hds,B4ADOF39Hds,B5ADOF39Hds,B6ADOF39Hds,B7ADOF39Hds,B8ADOF39Hds,B9ADOF39Hds, & + B1ADOF40Hds,B2ADOF40Hds,B3ADOF40Hds,B4ADOF40Hds,B5ADOF40Hds,B6ADOF40Hds,B7ADOF40Hds,B8ADOF40Hds,B9ADOF40Hds, & + B1ADOF41Hds,B2ADOF41Hds,B3ADOF41Hds,B4ADOF41Hds,B5ADOF41Hds,B6ADOF41Hds,B7ADOF41Hds,B8ADOF41Hds,B9ADOF41Hds, & + B1ADOF42Hds,B2ADOF42Hds,B3ADOF42Hds,B4ADOF42Hds,B5ADOF42Hds,B6ADOF42Hds,B7ADOF42Hds,B8ADOF42Hds,B9ADOF42Hds, & + B1ADOF43Hds,B2ADOF43Hds,B3ADOF43Hds,B4ADOF43Hds,B5ADOF43Hds,B6ADOF43Hds,B7ADOF43Hds,B8ADOF43Hds,B9ADOF43Hds, & + B1ADOF44Hds,B2ADOF44Hds,B3ADOF44Hds,B4ADOF44Hds,B5ADOF44Hds,B6ADOF44Hds,B7ADOF44Hds,B8ADOF44Hds,B9ADOF44Hds, & + B1ADOF45Hds,B2ADOF45Hds,B3ADOF45Hds,B4ADOF45Hds,B5ADOF45Hds,B6ADOF45Hds,B7ADOF45Hds,B8ADOF45Hds,B9ADOF45Hds, & + B1ADOF46Hds,B2ADOF46Hds,B3ADOF46Hds,B4ADOF46Hds,B5ADOF46Hds,B6ADOF46Hds,B7ADOF46Hds,B8ADOF46Hds,B9ADOF46Hds, & + B1ADOF47Hds,B2ADOF47Hds,B3ADOF47Hds,B4ADOF47Hds,B5ADOF47Hds,B6ADOF47Hds,B7ADOF47Hds,B8ADOF47Hds,B9ADOF47Hds, & + B1ADOF48Hds,B2ADOF48Hds,B3ADOF48Hds,B4ADOF48Hds,B5ADOF48Hds,B6ADOF48Hds,B7ADOF48Hds,B8ADOF48Hds,B9ADOF48Hds, & + B1ADOF49Hds,B2ADOF49Hds,B3ADOF49Hds,B4ADOF49Hds,B5ADOF49Hds,B6ADOF49Hds,B7ADOF49Hds,B8ADOF49Hds,B9ADOF49Hds, & + B1ADOF50Hds,B2ADOF50Hds,B3ADOF50Hds,B4ADOF50Hds,B5ADOF50Hds,B6ADOF50Hds,B7ADOF50Hds,B8ADOF50Hds,B9ADOF50Hds, & + B1ADOF51Hds,B2ADOF51Hds,B3ADOF51Hds,B4ADOF51Hds,B5ADOF51Hds,B6ADOF51Hds,B7ADOF51Hds,B8ADOF51Hds,B9ADOF51Hds, & + B1ADOF52Hds,B2ADOF52Hds,B3ADOF52Hds,B4ADOF52Hds,B5ADOF52Hds,B6ADOF52Hds,B7ADOF52Hds,B8ADOF52Hds,B9ADOF52Hds, & + B1ADOF53Hds,B2ADOF53Hds,B3ADOF53Hds,B4ADOF53Hds,B5ADOF53Hds,B6ADOF53Hds,B7ADOF53Hds,B8ADOF53Hds,B9ADOF53Hds, & + B1ADOF54Hds,B2ADOF54Hds,B3ADOF54Hds,B4ADOF54Hds,B5ADOF54Hds,B6ADOF54Hds,B7ADOF54Hds,B8ADOF54Hds,B9ADOF54Hds, & + B1ADOF55Hds,B2ADOF55Hds,B3ADOF55Hds,B4ADOF55Hds,B5ADOF55Hds,B6ADOF55Hds,B7ADOF55Hds,B8ADOF55Hds,B9ADOF55Hds, & + B1ADOF56Hds,B2ADOF56Hds,B3ADOF56Hds,B4ADOF56Hds,B5ADOF56Hds,B6ADOF56Hds,B7ADOF56Hds,B8ADOF56Hds,B9ADOF56Hds, & + B1ADOF57Hds,B2ADOF57Hds,B3ADOF57Hds,B4ADOF57Hds,B5ADOF57Hds,B6ADOF57Hds,B7ADOF57Hds,B8ADOF57Hds,B9ADOF57Hds, & + B1ADOF58Hds,B2ADOF58Hds,B3ADOF58Hds,B4ADOF58Hds,B5ADOF58Hds,B6ADOF58Hds,B7ADOF58Hds,B8ADOF58Hds,B9ADOF58Hds, & + B1ADOF59Hds,B2ADOF59Hds,B3ADOF59Hds,B4ADOF59Hds,B5ADOF59Hds,B6ADOF59Hds,B7ADOF59Hds,B8ADOF59Hds,B9ADOF59Hds, & + B1ADOF60Hds,B2ADOF60Hds,B3ADOF60Hds,B4ADOF60Hds,B5ADOF60Hds,B6ADOF60Hds,B7ADOF60Hds,B8ADOF60Hds,B9ADOF60Hds, & + B1ADOF61Hds,B2ADOF61Hds,B3ADOF61Hds,B4ADOF61Hds,B5ADOF61Hds,B6ADOF61Hds,B7ADOF61Hds,B8ADOF61Hds,B9ADOF61Hds, & + B1ADOF62Hds,B2ADOF62Hds,B3ADOF62Hds,B4ADOF62Hds,B5ADOF62Hds,B6ADOF62Hds,B7ADOF62Hds,B8ADOF62Hds,B9ADOF62Hds, & + B1ADOF63Hds,B2ADOF63Hds,B3ADOF63Hds,B4ADOF63Hds,B5ADOF63Hds,B6ADOF63Hds,B7ADOF63Hds,B8ADOF63Hds,B9ADOF63Hds, & + B1ADOF64Hds,B2ADOF64Hds,B3ADOF64Hds,B4ADOF64Hds,B5ADOF64Hds,B6ADOF64Hds,B7ADOF64Hds,B8ADOF64Hds,B9ADOF64Hds, & + B1ADOF65Hds,B2ADOF65Hds,B3ADOF65Hds,B4ADOF65Hds,B5ADOF65Hds,B6ADOF65Hds,B7ADOF65Hds,B8ADOF65Hds,B9ADOF65Hds, & + B1ADOF66Hds,B2ADOF66Hds,B3ADOF66Hds,B4ADOF66Hds,B5ADOF66Hds,B6ADOF66Hds,B7ADOF66Hds,B8ADOF66Hds,B9ADOF66Hds, & + B1ADOF67Hds,B2ADOF67Hds,B3ADOF67Hds,B4ADOF67Hds,B5ADOF67Hds,B6ADOF67Hds,B7ADOF67Hds,B8ADOF67Hds,B9ADOF67Hds, & + B1ADOF68Hds,B2ADOF68Hds,B3ADOF68Hds,B4ADOF68Hds,B5ADOF68Hds,B6ADOF68Hds,B7ADOF68Hds,B8ADOF68Hds,B9ADOF68Hds, & + B1ADOF69Hds,B2ADOF69Hds,B3ADOF69Hds,B4ADOF69Hds,B5ADOF69Hds,B6ADOF69Hds,B7ADOF69Hds,B8ADOF69Hds,B9ADOF69Hds, & + B1ADOF70Hds,B2ADOF70Hds,B3ADOF70Hds,B4ADOF70Hds,B5ADOF70Hds,B6ADOF70Hds,B7ADOF70Hds,B8ADOF70Hds,B9ADOF70Hds, & + B1ADOF71Hds,B2ADOF71Hds,B3ADOF71Hds,B4ADOF71Hds,B5ADOF71Hds,B6ADOF71Hds,B7ADOF71Hds,B8ADOF71Hds,B9ADOF71Hds, & + B1ADOF72Hds,B2ADOF72Hds,B3ADOF72Hds,B4ADOF72Hds,B5ADOF72Hds,B6ADOF72Hds,B7ADOF72Hds,B8ADOF72Hds,B9ADOF72Hds, & + B1ADOF73Hds,B2ADOF73Hds,B3ADOF73Hds,B4ADOF73Hds,B5ADOF73Hds,B6ADOF73Hds,B7ADOF73Hds,B8ADOF73Hds,B9ADOF73Hds, & + B1ADOF74Hds,B2ADOF74Hds,B3ADOF74Hds,B4ADOF74Hds,B5ADOF74Hds,B6ADOF74Hds,B7ADOF74Hds,B8ADOF74Hds,B9ADOF74Hds, & + B1ADOF75Hds,B2ADOF75Hds,B3ADOF75Hds,B4ADOF75Hds,B5ADOF75Hds,B6ADOF75Hds,B7ADOF75Hds,B8ADOF75Hds,B9ADOF75Hds, & + B1ADOF76Hds,B2ADOF76Hds,B3ADOF76Hds,B4ADOF76Hds,B5ADOF76Hds,B6ADOF76Hds,B7ADOF76Hds,B8ADOF76Hds,B9ADOF76Hds, & + B1ADOF77Hds,B2ADOF77Hds,B3ADOF77Hds,B4ADOF77Hds,B5ADOF77Hds,B6ADOF77Hds,B7ADOF77Hds,B8ADOF77Hds,B9ADOF77Hds, & + B1ADOF78Hds,B2ADOF78Hds,B3ADOF78Hds,B4ADOF78Hds,B5ADOF78Hds,B6ADOF78Hds,B7ADOF78Hds,B8ADOF78Hds,B9ADOF78Hds, & + B1ADOF79Hds,B2ADOF79Hds,B3ADOF79Hds,B4ADOF79Hds,B5ADOF79Hds,B6ADOF79Hds,B7ADOF79Hds,B8ADOF79Hds,B9ADOF79Hds, & + B1ADOF80Hds,B2ADOF80Hds,B3ADOF80Hds,B4ADOF80Hds,B5ADOF80Hds,B6ADOF80Hds,B7ADOF80Hds,B8ADOF80Hds,B9ADOF80Hds, & + B1ADOF81Hds,B2ADOF81Hds,B3ADOF81Hds,B4ADOF81Hds,B5ADOF81Hds,B6ADOF81Hds,B7ADOF81Hds,B8ADOF81Hds,B9ADOF81Hds, & + B1ADOF82Hds,B2ADOF82Hds,B3ADOF82Hds,B4ADOF82Hds,B5ADOF82Hds,B6ADOF82Hds,B7ADOF82Hds,B8ADOF82Hds,B9ADOF82Hds, & + B1ADOF83Hds,B2ADOF83Hds,B3ADOF83Hds,B4ADOF83Hds,B5ADOF83Hds,B6ADOF83Hds,B7ADOF83Hds,B8ADOF83Hds,B9ADOF83Hds, & + B1ADOF84Hds,B2ADOF84Hds,B3ADOF84Hds,B4ADOF84Hds,B5ADOF84Hds,B6ADOF84Hds,B7ADOF84Hds,B8ADOF84Hds,B9ADOF84Hds, & + B1ADOF85Hds,B2ADOF85Hds,B3ADOF85Hds,B4ADOF85Hds,B5ADOF85Hds,B6ADOF85Hds,B7ADOF85Hds,B8ADOF85Hds,B9ADOF85Hds, & + B1ADOF86Hds,B2ADOF86Hds,B3ADOF86Hds,B4ADOF86Hds,B5ADOF86Hds,B6ADOF86Hds,B7ADOF86Hds,B8ADOF86Hds,B9ADOF86Hds, & + B1ADOF87Hds,B2ADOF87Hds,B3ADOF87Hds,B4ADOF87Hds,B5ADOF87Hds,B6ADOF87Hds,B7ADOF87Hds,B8ADOF87Hds,B9ADOF87Hds, & + B1ADOF88Hds,B2ADOF88Hds,B3ADOF88Hds,B4ADOF88Hds,B5ADOF88Hds,B6ADOF88Hds,B7ADOF88Hds,B8ADOF88Hds,B9ADOF88Hds, & + B1ADOF89Hds,B2ADOF89Hds,B3ADOF89Hds,B4ADOF89Hds,B5ADOF89Hds,B6ADOF89Hds,B7ADOF89Hds,B8ADOF89Hds,B9ADOF89Hds, & + B1ADOF90Hds,B2ADOF90Hds,B3ADOF90Hds,B4ADOF90Hds,B5ADOF90Hds,B6ADOF90Hds,B7ADOF90Hds,B8ADOF90Hds,B9ADOF90Hds, & + B1ADOF91Hds,B2ADOF91Hds,B3ADOF91Hds,B4ADOF91Hds,B5ADOF91Hds,B6ADOF91Hds,B7ADOF91Hds,B8ADOF91Hds,B9ADOF91Hds, & + B1ADOF92Hds,B2ADOF92Hds,B3ADOF92Hds,B4ADOF92Hds,B5ADOF92Hds,B6ADOF92Hds,B7ADOF92Hds,B8ADOF92Hds,B9ADOF92Hds, & + B1ADOF93Hds,B2ADOF93Hds,B3ADOF93Hds,B4ADOF93Hds,B5ADOF93Hds,B6ADOF93Hds,B7ADOF93Hds,B8ADOF93Hds,B9ADOF93Hds, & + B1ADOF94Hds,B2ADOF94Hds,B3ADOF94Hds,B4ADOF94Hds,B5ADOF94Hds,B6ADOF94Hds,B7ADOF94Hds,B8ADOF94Hds,B9ADOF94Hds, & + B1ADOF95Hds,B2ADOF95Hds,B3ADOF95Hds,B4ADOF95Hds,B5ADOF95Hds,B6ADOF95Hds,B7ADOF95Hds,B8ADOF95Hds,B9ADOF95Hds, & + B1ADOF96Hds,B2ADOF96Hds,B3ADOF96Hds,B4ADOF96Hds,B5ADOF96Hds,B6ADOF96Hds,B7ADOF96Hds,B8ADOF96Hds,B9ADOF96Hds, & + B1ADOF97Hds,B2ADOF97Hds,B3ADOF97Hds,B4ADOF97Hds,B5ADOF97Hds,B6ADOF97Hds,B7ADOF97Hds,B8ADOF97Hds,B9ADOF97Hds, & + B1ADOF98Hds,B2ADOF98Hds,B3ADOF98Hds,B4ADOF98Hds,B5ADOF98Hds,B6ADOF98Hds,B7ADOF98Hds,B8ADOF98Hds,B9ADOF98Hds, & + B1ADOF99Hds,B2ADOF99Hds,B3ADOF99Hds,B4ADOF99Hds,B5ADOF99Hds,B6ADOF99Hds,B7ADOF99Hds,B8ADOF99Hds,B9ADOF99Hds/), & (/9,99/))) - INTEGER, PARAMETER :: FADOFWvs(99,9) = transpose(reshape((/B1ADOF1Wvs,B1ADOF1Wvs,B1ADOF1Wvs,B1ADOF1Wvs,B1ADOF1Wvs,B1ADOF1Wvs,B1ADOF1Wvs,B1ADOF1Wvs,B1ADOF1Wvs, & - B1ADOF2Wvs,B1ADOF2Wvs,B1ADOF2Wvs,B1ADOF2Wvs,B1ADOF2Wvs,B1ADOF2Wvs,B1ADOF2Wvs,B1ADOF2Wvs,B1ADOF2Wvs, & - B1ADOF3Wvs,B1ADOF3Wvs,B1ADOF3Wvs,B1ADOF3Wvs,B1ADOF3Wvs,B1ADOF3Wvs,B1ADOF3Wvs,B1ADOF3Wvs,B1ADOF3Wvs, & - B1ADOF4Wvs,B1ADOF4Wvs,B1ADOF4Wvs,B1ADOF4Wvs,B1ADOF4Wvs,B1ADOF4Wvs,B1ADOF4Wvs,B1ADOF4Wvs,B1ADOF4Wvs, & - B1ADOF5Wvs,B1ADOF5Wvs,B1ADOF5Wvs,B1ADOF5Wvs,B1ADOF5Wvs,B1ADOF5Wvs,B1ADOF5Wvs,B1ADOF5Wvs,B1ADOF5Wvs, & - B1ADOF6Wvs,B1ADOF6Wvs,B1ADOF6Wvs,B1ADOF6Wvs,B1ADOF6Wvs,B1ADOF6Wvs,B1ADOF6Wvs,B1ADOF6Wvs,B1ADOF6Wvs, & - B1ADOF7Wvs,B1ADOF7Wvs,B1ADOF7Wvs,B1ADOF7Wvs,B1ADOF7Wvs,B1ADOF7Wvs,B1ADOF7Wvs,B1ADOF7Wvs,B1ADOF7Wvs, & - B1ADOF8Wvs,B1ADOF8Wvs,B1ADOF8Wvs,B1ADOF8Wvs,B1ADOF8Wvs,B1ADOF8Wvs,B1ADOF8Wvs,B1ADOF8Wvs,B1ADOF8Wvs, & - B1ADOF9Wvs,B1ADOF9Wvs,B1ADOF9Wvs,B1ADOF9Wvs,B1ADOF9Wvs,B1ADOF9Wvs,B1ADOF9Wvs,B1ADOF9Wvs,B1ADOF9Wvs, & - B1ADOF10Wvs,B1ADOF10Wvs,B1ADOF10Wvs,B1ADOF10Wvs,B1ADOF10Wvs,B1ADOF10Wvs,B1ADOF10Wvs,B1ADOF10Wvs,B1ADOF10Wvs, & - B1ADOF11Wvs,B1ADOF11Wvs,B1ADOF11Wvs,B1ADOF11Wvs,B1ADOF11Wvs,B1ADOF11Wvs,B1ADOF11Wvs,B1ADOF11Wvs,B1ADOF11Wvs, & - B1ADOF12Wvs,B1ADOF12Wvs,B1ADOF12Wvs,B1ADOF12Wvs,B1ADOF12Wvs,B1ADOF12Wvs,B1ADOF12Wvs,B1ADOF12Wvs,B1ADOF12Wvs, & - B1ADOF13Wvs,B1ADOF13Wvs,B1ADOF13Wvs,B1ADOF13Wvs,B1ADOF13Wvs,B1ADOF13Wvs,B1ADOF13Wvs,B1ADOF13Wvs,B1ADOF13Wvs, & - B1ADOF14Wvs,B1ADOF14Wvs,B1ADOF14Wvs,B1ADOF14Wvs,B1ADOF14Wvs,B1ADOF14Wvs,B1ADOF14Wvs,B1ADOF14Wvs,B1ADOF14Wvs, & - B1ADOF15Wvs,B1ADOF15Wvs,B1ADOF15Wvs,B1ADOF15Wvs,B1ADOF15Wvs,B1ADOF15Wvs,B1ADOF15Wvs,B1ADOF15Wvs,B1ADOF15Wvs, & - B1ADOF16Wvs,B1ADOF16Wvs,B1ADOF16Wvs,B1ADOF16Wvs,B1ADOF16Wvs,B1ADOF16Wvs,B1ADOF16Wvs,B1ADOF16Wvs,B1ADOF16Wvs, & - B1ADOF17Wvs,B1ADOF17Wvs,B1ADOF17Wvs,B1ADOF17Wvs,B1ADOF17Wvs,B1ADOF17Wvs,B1ADOF17Wvs,B1ADOF17Wvs,B1ADOF17Wvs, & - B1ADOF18Wvs,B1ADOF18Wvs,B1ADOF18Wvs,B1ADOF18Wvs,B1ADOF18Wvs,B1ADOF18Wvs,B1ADOF18Wvs,B1ADOF18Wvs,B1ADOF18Wvs, & - B1ADOF19Wvs,B1ADOF19Wvs,B1ADOF19Wvs,B1ADOF19Wvs,B1ADOF19Wvs,B1ADOF19Wvs,B1ADOF19Wvs,B1ADOF19Wvs,B1ADOF19Wvs, & - B1ADOF20Wvs,B1ADOF20Wvs,B1ADOF20Wvs,B1ADOF20Wvs,B1ADOF20Wvs,B1ADOF20Wvs,B1ADOF20Wvs,B1ADOF20Wvs,B1ADOF20Wvs, & - B1ADOF21Wvs,B1ADOF21Wvs,B1ADOF21Wvs,B1ADOF21Wvs,B1ADOF21Wvs,B1ADOF21Wvs,B1ADOF21Wvs,B1ADOF21Wvs,B1ADOF21Wvs, & - B1ADOF22Wvs,B1ADOF22Wvs,B1ADOF22Wvs,B1ADOF22Wvs,B1ADOF22Wvs,B1ADOF22Wvs,B1ADOF22Wvs,B1ADOF22Wvs,B1ADOF22Wvs, & - B1ADOF23Wvs,B1ADOF23Wvs,B1ADOF23Wvs,B1ADOF23Wvs,B1ADOF23Wvs,B1ADOF23Wvs,B1ADOF23Wvs,B1ADOF23Wvs,B1ADOF23Wvs, & - B1ADOF24Wvs,B1ADOF24Wvs,B1ADOF24Wvs,B1ADOF24Wvs,B1ADOF24Wvs,B1ADOF24Wvs,B1ADOF24Wvs,B1ADOF24Wvs,B1ADOF24Wvs, & - B1ADOF25Wvs,B1ADOF25Wvs,B1ADOF25Wvs,B1ADOF25Wvs,B1ADOF25Wvs,B1ADOF25Wvs,B1ADOF25Wvs,B1ADOF25Wvs,B1ADOF25Wvs, & - B1ADOF26Wvs,B1ADOF26Wvs,B1ADOF26Wvs,B1ADOF26Wvs,B1ADOF26Wvs,B1ADOF26Wvs,B1ADOF26Wvs,B1ADOF26Wvs,B1ADOF26Wvs, & - B1ADOF27Wvs,B1ADOF27Wvs,B1ADOF27Wvs,B1ADOF27Wvs,B1ADOF27Wvs,B1ADOF27Wvs,B1ADOF27Wvs,B1ADOF27Wvs,B1ADOF27Wvs, & - B1ADOF28Wvs,B1ADOF28Wvs,B1ADOF28Wvs,B1ADOF28Wvs,B1ADOF28Wvs,B1ADOF28Wvs,B1ADOF28Wvs,B1ADOF28Wvs,B1ADOF28Wvs, & - B1ADOF29Wvs,B1ADOF29Wvs,B1ADOF29Wvs,B1ADOF29Wvs,B1ADOF29Wvs,B1ADOF29Wvs,B1ADOF29Wvs,B1ADOF29Wvs,B1ADOF29Wvs, & - B1ADOF30Wvs,B1ADOF30Wvs,B1ADOF30Wvs,B1ADOF30Wvs,B1ADOF30Wvs,B1ADOF30Wvs,B1ADOF30Wvs,B1ADOF30Wvs,B1ADOF30Wvs, & - B1ADOF31Wvs,B1ADOF31Wvs,B1ADOF31Wvs,B1ADOF31Wvs,B1ADOF31Wvs,B1ADOF31Wvs,B1ADOF31Wvs,B1ADOF31Wvs,B1ADOF31Wvs, & - B1ADOF32Wvs,B1ADOF32Wvs,B1ADOF32Wvs,B1ADOF32Wvs,B1ADOF32Wvs,B1ADOF32Wvs,B1ADOF32Wvs,B1ADOF32Wvs,B1ADOF32Wvs, & - B1ADOF33Wvs,B1ADOF33Wvs,B1ADOF33Wvs,B1ADOF33Wvs,B1ADOF33Wvs,B1ADOF33Wvs,B1ADOF33Wvs,B1ADOF33Wvs,B1ADOF33Wvs, & - B1ADOF34Wvs,B1ADOF34Wvs,B1ADOF34Wvs,B1ADOF34Wvs,B1ADOF34Wvs,B1ADOF34Wvs,B1ADOF34Wvs,B1ADOF34Wvs,B1ADOF34Wvs, & - B1ADOF35Wvs,B1ADOF35Wvs,B1ADOF35Wvs,B1ADOF35Wvs,B1ADOF35Wvs,B1ADOF35Wvs,B1ADOF35Wvs,B1ADOF35Wvs,B1ADOF35Wvs, & - B1ADOF36Wvs,B1ADOF36Wvs,B1ADOF36Wvs,B1ADOF36Wvs,B1ADOF36Wvs,B1ADOF36Wvs,B1ADOF36Wvs,B1ADOF36Wvs,B1ADOF36Wvs, & - B1ADOF37Wvs,B1ADOF37Wvs,B1ADOF37Wvs,B1ADOF37Wvs,B1ADOF37Wvs,B1ADOF37Wvs,B1ADOF37Wvs,B1ADOF37Wvs,B1ADOF37Wvs, & - B1ADOF38Wvs,B1ADOF38Wvs,B1ADOF38Wvs,B1ADOF38Wvs,B1ADOF38Wvs,B1ADOF38Wvs,B1ADOF38Wvs,B1ADOF38Wvs,B1ADOF38Wvs, & - B1ADOF39Wvs,B1ADOF39Wvs,B1ADOF39Wvs,B1ADOF39Wvs,B1ADOF39Wvs,B1ADOF39Wvs,B1ADOF39Wvs,B1ADOF39Wvs,B1ADOF39Wvs, & - B1ADOF40Wvs,B1ADOF40Wvs,B1ADOF40Wvs,B1ADOF40Wvs,B1ADOF40Wvs,B1ADOF40Wvs,B1ADOF40Wvs,B1ADOF40Wvs,B1ADOF40Wvs, & - B1ADOF41Wvs,B1ADOF41Wvs,B1ADOF41Wvs,B1ADOF41Wvs,B1ADOF41Wvs,B1ADOF41Wvs,B1ADOF41Wvs,B1ADOF41Wvs,B1ADOF41Wvs, & - B1ADOF42Wvs,B1ADOF42Wvs,B1ADOF42Wvs,B1ADOF42Wvs,B1ADOF42Wvs,B1ADOF42Wvs,B1ADOF42Wvs,B1ADOF42Wvs,B1ADOF42Wvs, & - B1ADOF43Wvs,B1ADOF43Wvs,B1ADOF43Wvs,B1ADOF43Wvs,B1ADOF43Wvs,B1ADOF43Wvs,B1ADOF43Wvs,B1ADOF43Wvs,B1ADOF43Wvs, & - B1ADOF44Wvs,B1ADOF44Wvs,B1ADOF44Wvs,B1ADOF44Wvs,B1ADOF44Wvs,B1ADOF44Wvs,B1ADOF44Wvs,B1ADOF44Wvs,B1ADOF44Wvs, & - B1ADOF45Wvs,B1ADOF45Wvs,B1ADOF45Wvs,B1ADOF45Wvs,B1ADOF45Wvs,B1ADOF45Wvs,B1ADOF45Wvs,B1ADOF45Wvs,B1ADOF45Wvs, & - B1ADOF46Wvs,B1ADOF46Wvs,B1ADOF46Wvs,B1ADOF46Wvs,B1ADOF46Wvs,B1ADOF46Wvs,B1ADOF46Wvs,B1ADOF46Wvs,B1ADOF46Wvs, & - B1ADOF47Wvs,B1ADOF47Wvs,B1ADOF47Wvs,B1ADOF47Wvs,B1ADOF47Wvs,B1ADOF47Wvs,B1ADOF47Wvs,B1ADOF47Wvs,B1ADOF47Wvs, & - B1ADOF48Wvs,B1ADOF48Wvs,B1ADOF48Wvs,B1ADOF48Wvs,B1ADOF48Wvs,B1ADOF48Wvs,B1ADOF48Wvs,B1ADOF48Wvs,B1ADOF48Wvs, & - B1ADOF49Wvs,B1ADOF49Wvs,B1ADOF49Wvs,B1ADOF49Wvs,B1ADOF49Wvs,B1ADOF49Wvs,B1ADOF49Wvs,B1ADOF49Wvs,B1ADOF49Wvs, & - B1ADOF50Wvs,B1ADOF50Wvs,B1ADOF50Wvs,B1ADOF50Wvs,B1ADOF50Wvs,B1ADOF50Wvs,B1ADOF50Wvs,B1ADOF50Wvs,B1ADOF50Wvs, & - B1ADOF51Wvs,B1ADOF51Wvs,B1ADOF51Wvs,B1ADOF51Wvs,B1ADOF51Wvs,B1ADOF51Wvs,B1ADOF51Wvs,B1ADOF51Wvs,B1ADOF51Wvs, & - B1ADOF52Wvs,B1ADOF52Wvs,B1ADOF52Wvs,B1ADOF52Wvs,B1ADOF52Wvs,B1ADOF52Wvs,B1ADOF52Wvs,B1ADOF52Wvs,B1ADOF52Wvs, & - B1ADOF53Wvs,B1ADOF53Wvs,B1ADOF53Wvs,B1ADOF53Wvs,B1ADOF53Wvs,B1ADOF53Wvs,B1ADOF53Wvs,B1ADOF53Wvs,B1ADOF53Wvs, & - B1ADOF54Wvs,B1ADOF54Wvs,B1ADOF54Wvs,B1ADOF54Wvs,B1ADOF54Wvs,B1ADOF54Wvs,B1ADOF54Wvs,B1ADOF54Wvs,B1ADOF54Wvs, & - B1ADOF55Wvs,B1ADOF55Wvs,B1ADOF55Wvs,B1ADOF55Wvs,B1ADOF55Wvs,B1ADOF55Wvs,B1ADOF55Wvs,B1ADOF55Wvs,B1ADOF55Wvs, & - B1ADOF56Wvs,B1ADOF56Wvs,B1ADOF56Wvs,B1ADOF56Wvs,B1ADOF56Wvs,B1ADOF56Wvs,B1ADOF56Wvs,B1ADOF56Wvs,B1ADOF56Wvs, & - B1ADOF57Wvs,B1ADOF57Wvs,B1ADOF57Wvs,B1ADOF57Wvs,B1ADOF57Wvs,B1ADOF57Wvs,B1ADOF57Wvs,B1ADOF57Wvs,B1ADOF57Wvs, & - B1ADOF58Wvs,B1ADOF58Wvs,B1ADOF58Wvs,B1ADOF58Wvs,B1ADOF58Wvs,B1ADOF58Wvs,B1ADOF58Wvs,B1ADOF58Wvs,B1ADOF58Wvs, & - B1ADOF59Wvs,B1ADOF59Wvs,B1ADOF59Wvs,B1ADOF59Wvs,B1ADOF59Wvs,B1ADOF59Wvs,B1ADOF59Wvs,B1ADOF59Wvs,B1ADOF59Wvs, & - B1ADOF60Wvs,B1ADOF60Wvs,B1ADOF60Wvs,B1ADOF60Wvs,B1ADOF60Wvs,B1ADOF60Wvs,B1ADOF60Wvs,B1ADOF60Wvs,B1ADOF60Wvs, & - B1ADOF61Wvs,B1ADOF61Wvs,B1ADOF61Wvs,B1ADOF61Wvs,B1ADOF61Wvs,B1ADOF61Wvs,B1ADOF61Wvs,B1ADOF61Wvs,B1ADOF61Wvs, & - B1ADOF62Wvs,B1ADOF62Wvs,B1ADOF62Wvs,B1ADOF62Wvs,B1ADOF62Wvs,B1ADOF62Wvs,B1ADOF62Wvs,B1ADOF62Wvs,B1ADOF62Wvs, & - B1ADOF63Wvs,B1ADOF63Wvs,B1ADOF63Wvs,B1ADOF63Wvs,B1ADOF63Wvs,B1ADOF63Wvs,B1ADOF63Wvs,B1ADOF63Wvs,B1ADOF63Wvs, & - B1ADOF64Wvs,B1ADOF64Wvs,B1ADOF64Wvs,B1ADOF64Wvs,B1ADOF64Wvs,B1ADOF64Wvs,B1ADOF64Wvs,B1ADOF64Wvs,B1ADOF64Wvs, & - B1ADOF65Wvs,B1ADOF65Wvs,B1ADOF65Wvs,B1ADOF65Wvs,B1ADOF65Wvs,B1ADOF65Wvs,B1ADOF65Wvs,B1ADOF65Wvs,B1ADOF65Wvs, & - B1ADOF66Wvs,B1ADOF66Wvs,B1ADOF66Wvs,B1ADOF66Wvs,B1ADOF66Wvs,B1ADOF66Wvs,B1ADOF66Wvs,B1ADOF66Wvs,B1ADOF66Wvs, & - B1ADOF67Wvs,B1ADOF67Wvs,B1ADOF67Wvs,B1ADOF67Wvs,B1ADOF67Wvs,B1ADOF67Wvs,B1ADOF67Wvs,B1ADOF67Wvs,B1ADOF67Wvs, & - B1ADOF68Wvs,B1ADOF68Wvs,B1ADOF68Wvs,B1ADOF68Wvs,B1ADOF68Wvs,B1ADOF68Wvs,B1ADOF68Wvs,B1ADOF68Wvs,B1ADOF68Wvs, & - B1ADOF69Wvs,B1ADOF69Wvs,B1ADOF69Wvs,B1ADOF69Wvs,B1ADOF69Wvs,B1ADOF69Wvs,B1ADOF69Wvs,B1ADOF69Wvs,B1ADOF69Wvs, & - B1ADOF70Wvs,B1ADOF70Wvs,B1ADOF70Wvs,B1ADOF70Wvs,B1ADOF70Wvs,B1ADOF70Wvs,B1ADOF70Wvs,B1ADOF70Wvs,B1ADOF70Wvs, & - B1ADOF71Wvs,B1ADOF71Wvs,B1ADOF71Wvs,B1ADOF71Wvs,B1ADOF71Wvs,B1ADOF71Wvs,B1ADOF71Wvs,B1ADOF71Wvs,B1ADOF71Wvs, & - B1ADOF72Wvs,B1ADOF72Wvs,B1ADOF72Wvs,B1ADOF72Wvs,B1ADOF72Wvs,B1ADOF72Wvs,B1ADOF72Wvs,B1ADOF72Wvs,B1ADOF72Wvs, & - B1ADOF73Wvs,B1ADOF73Wvs,B1ADOF73Wvs,B1ADOF73Wvs,B1ADOF73Wvs,B1ADOF73Wvs,B1ADOF73Wvs,B1ADOF73Wvs,B1ADOF73Wvs, & - B1ADOF74Wvs,B1ADOF74Wvs,B1ADOF74Wvs,B1ADOF74Wvs,B1ADOF74Wvs,B1ADOF74Wvs,B1ADOF74Wvs,B1ADOF74Wvs,B1ADOF74Wvs, & - B1ADOF75Wvs,B1ADOF75Wvs,B1ADOF75Wvs,B1ADOF75Wvs,B1ADOF75Wvs,B1ADOF75Wvs,B1ADOF75Wvs,B1ADOF75Wvs,B1ADOF75Wvs, & - B1ADOF76Wvs,B1ADOF76Wvs,B1ADOF76Wvs,B1ADOF76Wvs,B1ADOF76Wvs,B1ADOF76Wvs,B1ADOF76Wvs,B1ADOF76Wvs,B1ADOF76Wvs, & - B1ADOF77Wvs,B1ADOF77Wvs,B1ADOF77Wvs,B1ADOF77Wvs,B1ADOF77Wvs,B1ADOF77Wvs,B1ADOF77Wvs,B1ADOF77Wvs,B1ADOF77Wvs, & - B1ADOF78Wvs,B1ADOF78Wvs,B1ADOF78Wvs,B1ADOF78Wvs,B1ADOF78Wvs,B1ADOF78Wvs,B1ADOF78Wvs,B1ADOF78Wvs,B1ADOF78Wvs, & - B1ADOF79Wvs,B1ADOF79Wvs,B1ADOF79Wvs,B1ADOF79Wvs,B1ADOF79Wvs,B1ADOF79Wvs,B1ADOF79Wvs,B1ADOF79Wvs,B1ADOF79Wvs, & - B1ADOF80Wvs,B1ADOF80Wvs,B1ADOF80Wvs,B1ADOF80Wvs,B1ADOF80Wvs,B1ADOF80Wvs,B1ADOF80Wvs,B1ADOF80Wvs,B1ADOF80Wvs, & - B1ADOF81Wvs,B1ADOF81Wvs,B1ADOF81Wvs,B1ADOF81Wvs,B1ADOF81Wvs,B1ADOF81Wvs,B1ADOF81Wvs,B1ADOF81Wvs,B1ADOF81Wvs, & - B1ADOF82Wvs,B1ADOF82Wvs,B1ADOF82Wvs,B1ADOF82Wvs,B1ADOF82Wvs,B1ADOF82Wvs,B1ADOF82Wvs,B1ADOF82Wvs,B1ADOF82Wvs, & - B1ADOF83Wvs,B1ADOF83Wvs,B1ADOF83Wvs,B1ADOF83Wvs,B1ADOF83Wvs,B1ADOF83Wvs,B1ADOF83Wvs,B1ADOF83Wvs,B1ADOF83Wvs, & - B1ADOF84Wvs,B1ADOF84Wvs,B1ADOF84Wvs,B1ADOF84Wvs,B1ADOF84Wvs,B1ADOF84Wvs,B1ADOF84Wvs,B1ADOF84Wvs,B1ADOF84Wvs, & - B1ADOF85Wvs,B1ADOF85Wvs,B1ADOF85Wvs,B1ADOF85Wvs,B1ADOF85Wvs,B1ADOF85Wvs,B1ADOF85Wvs,B1ADOF85Wvs,B1ADOF85Wvs, & - B1ADOF86Wvs,B1ADOF86Wvs,B1ADOF86Wvs,B1ADOF86Wvs,B1ADOF86Wvs,B1ADOF86Wvs,B1ADOF86Wvs,B1ADOF86Wvs,B1ADOF86Wvs, & - B1ADOF87Wvs,B1ADOF87Wvs,B1ADOF87Wvs,B1ADOF87Wvs,B1ADOF87Wvs,B1ADOF87Wvs,B1ADOF87Wvs,B1ADOF87Wvs,B1ADOF87Wvs, & - B1ADOF88Wvs,B1ADOF88Wvs,B1ADOF88Wvs,B1ADOF88Wvs,B1ADOF88Wvs,B1ADOF88Wvs,B1ADOF88Wvs,B1ADOF88Wvs,B1ADOF88Wvs, & - B1ADOF89Wvs,B1ADOF89Wvs,B1ADOF89Wvs,B1ADOF89Wvs,B1ADOF89Wvs,B1ADOF89Wvs,B1ADOF89Wvs,B1ADOF89Wvs,B1ADOF89Wvs, & - B1ADOF90Wvs,B1ADOF90Wvs,B1ADOF90Wvs,B1ADOF90Wvs,B1ADOF90Wvs,B1ADOF90Wvs,B1ADOF90Wvs,B1ADOF90Wvs,B1ADOF90Wvs, & - B1ADOF91Wvs,B1ADOF91Wvs,B1ADOF91Wvs,B1ADOF91Wvs,B1ADOF91Wvs,B1ADOF91Wvs,B1ADOF91Wvs,B1ADOF91Wvs,B1ADOF91Wvs, & - B1ADOF92Wvs,B1ADOF92Wvs,B1ADOF92Wvs,B1ADOF92Wvs,B1ADOF92Wvs,B1ADOF92Wvs,B1ADOF92Wvs,B1ADOF92Wvs,B1ADOF92Wvs, & - B1ADOF93Wvs,B1ADOF93Wvs,B1ADOF93Wvs,B1ADOF93Wvs,B1ADOF93Wvs,B1ADOF93Wvs,B1ADOF93Wvs,B1ADOF93Wvs,B1ADOF93Wvs, & - B1ADOF94Wvs,B1ADOF94Wvs,B1ADOF94Wvs,B1ADOF94Wvs,B1ADOF94Wvs,B1ADOF94Wvs,B1ADOF94Wvs,B1ADOF94Wvs,B1ADOF94Wvs, & - B1ADOF95Wvs,B1ADOF95Wvs,B1ADOF95Wvs,B1ADOF95Wvs,B1ADOF95Wvs,B1ADOF95Wvs,B1ADOF95Wvs,B1ADOF95Wvs,B1ADOF95Wvs, & - B1ADOF96Wvs,B1ADOF96Wvs,B1ADOF96Wvs,B1ADOF96Wvs,B1ADOF96Wvs,B1ADOF96Wvs,B1ADOF96Wvs,B1ADOF96Wvs,B1ADOF96Wvs, & - B1ADOF97Wvs,B1ADOF97Wvs,B1ADOF97Wvs,B1ADOF97Wvs,B1ADOF97Wvs,B1ADOF97Wvs,B1ADOF97Wvs,B1ADOF97Wvs,B1ADOF97Wvs, & - B1ADOF98Wvs,B1ADOF98Wvs,B1ADOF98Wvs,B1ADOF98Wvs,B1ADOF98Wvs,B1ADOF98Wvs,B1ADOF98Wvs,B1ADOF98Wvs,B1ADOF98Wvs, & - B1ADOF99Wvs,B1ADOF99Wvs,B1ADOF99Wvs,B1ADOF99Wvs,B1ADOF99Wvs,B1ADOF99Wvs,B1ADOF99Wvs,B1ADOF99Wvs,B1ADOF99Wvs/), & + INTEGER, PARAMETER :: FADOFWvs(99,9) = transpose(reshape((/B1ADOF1Wvs,B2ADOF1Wvs,B3ADOF1Wvs,B4ADOF1Wvs,B5ADOF1Wvs,B6ADOF1Wvs,B7ADOF1Wvs,B8ADOF1Wvs,B9ADOF1Wvs, & + B1ADOF2Wvs,B2ADOF2Wvs,B3ADOF2Wvs,B4ADOF2Wvs,B5ADOF2Wvs,B6ADOF2Wvs,B7ADOF2Wvs,B8ADOF2Wvs,B9ADOF2Wvs, & + B1ADOF3Wvs,B2ADOF3Wvs,B3ADOF3Wvs,B4ADOF3Wvs,B5ADOF3Wvs,B6ADOF3Wvs,B7ADOF3Wvs,B8ADOF3Wvs,B9ADOF3Wvs, & + B1ADOF4Wvs,B2ADOF4Wvs,B3ADOF4Wvs,B4ADOF4Wvs,B5ADOF4Wvs,B6ADOF4Wvs,B7ADOF4Wvs,B8ADOF4Wvs,B9ADOF4Wvs, & + B1ADOF5Wvs,B2ADOF5Wvs,B3ADOF5Wvs,B4ADOF5Wvs,B5ADOF5Wvs,B6ADOF5Wvs,B7ADOF5Wvs,B8ADOF5Wvs,B9ADOF5Wvs, & + B1ADOF6Wvs,B2ADOF6Wvs,B3ADOF6Wvs,B4ADOF6Wvs,B5ADOF6Wvs,B6ADOF6Wvs,B7ADOF6Wvs,B8ADOF6Wvs,B9ADOF6Wvs, & + B1ADOF7Wvs,B2ADOF7Wvs,B3ADOF7Wvs,B4ADOF7Wvs,B5ADOF7Wvs,B6ADOF7Wvs,B7ADOF7Wvs,B8ADOF7Wvs,B9ADOF7Wvs, & + B1ADOF8Wvs,B2ADOF8Wvs,B3ADOF8Wvs,B4ADOF8Wvs,B5ADOF8Wvs,B6ADOF8Wvs,B7ADOF8Wvs,B8ADOF8Wvs,B9ADOF8Wvs, & + B1ADOF9Wvs,B2ADOF9Wvs,B3ADOF9Wvs,B4ADOF9Wvs,B5ADOF9Wvs,B6ADOF9Wvs,B7ADOF9Wvs,B8ADOF9Wvs,B9ADOF9Wvs, & + B1ADOF10Wvs,B2ADOF10Wvs,B3ADOF10Wvs,B4ADOF10Wvs,B5ADOF10Wvs,B6ADOF10Wvs,B7ADOF10Wvs,B8ADOF10Wvs,B9ADOF10Wvs, & + B1ADOF11Wvs,B2ADOF11Wvs,B3ADOF11Wvs,B4ADOF11Wvs,B5ADOF11Wvs,B6ADOF11Wvs,B7ADOF11Wvs,B8ADOF11Wvs,B9ADOF11Wvs, & + B1ADOF12Wvs,B2ADOF12Wvs,B3ADOF12Wvs,B4ADOF12Wvs,B5ADOF12Wvs,B6ADOF12Wvs,B7ADOF12Wvs,B8ADOF12Wvs,B9ADOF12Wvs, & + B1ADOF13Wvs,B2ADOF13Wvs,B3ADOF13Wvs,B4ADOF13Wvs,B5ADOF13Wvs,B6ADOF13Wvs,B7ADOF13Wvs,B8ADOF13Wvs,B9ADOF13Wvs, & + B1ADOF14Wvs,B2ADOF14Wvs,B3ADOF14Wvs,B4ADOF14Wvs,B5ADOF14Wvs,B6ADOF14Wvs,B7ADOF14Wvs,B8ADOF14Wvs,B9ADOF14Wvs, & + B1ADOF15Wvs,B2ADOF15Wvs,B3ADOF15Wvs,B4ADOF15Wvs,B5ADOF15Wvs,B6ADOF15Wvs,B7ADOF15Wvs,B8ADOF15Wvs,B9ADOF15Wvs, & + B1ADOF16Wvs,B2ADOF16Wvs,B3ADOF16Wvs,B4ADOF16Wvs,B5ADOF16Wvs,B6ADOF16Wvs,B7ADOF16Wvs,B8ADOF16Wvs,B9ADOF16Wvs, & + B1ADOF17Wvs,B2ADOF17Wvs,B3ADOF17Wvs,B4ADOF17Wvs,B5ADOF17Wvs,B6ADOF17Wvs,B7ADOF17Wvs,B8ADOF17Wvs,B9ADOF17Wvs, & + B1ADOF18Wvs,B2ADOF18Wvs,B3ADOF18Wvs,B4ADOF18Wvs,B5ADOF18Wvs,B6ADOF18Wvs,B7ADOF18Wvs,B8ADOF18Wvs,B9ADOF18Wvs, & + B1ADOF19Wvs,B2ADOF19Wvs,B3ADOF19Wvs,B4ADOF19Wvs,B5ADOF19Wvs,B6ADOF19Wvs,B7ADOF19Wvs,B8ADOF19Wvs,B9ADOF19Wvs, & + B1ADOF20Wvs,B2ADOF20Wvs,B3ADOF20Wvs,B4ADOF20Wvs,B5ADOF20Wvs,B6ADOF20Wvs,B7ADOF20Wvs,B8ADOF20Wvs,B9ADOF20Wvs, & + B1ADOF21Wvs,B2ADOF21Wvs,B3ADOF21Wvs,B4ADOF21Wvs,B5ADOF21Wvs,B6ADOF21Wvs,B7ADOF21Wvs,B8ADOF21Wvs,B9ADOF21Wvs, & + B1ADOF22Wvs,B2ADOF22Wvs,B3ADOF22Wvs,B4ADOF22Wvs,B5ADOF22Wvs,B6ADOF22Wvs,B7ADOF22Wvs,B8ADOF22Wvs,B9ADOF22Wvs, & + B1ADOF23Wvs,B2ADOF23Wvs,B3ADOF23Wvs,B4ADOF23Wvs,B5ADOF23Wvs,B6ADOF23Wvs,B7ADOF23Wvs,B8ADOF23Wvs,B9ADOF23Wvs, & + B1ADOF24Wvs,B2ADOF24Wvs,B3ADOF24Wvs,B4ADOF24Wvs,B5ADOF24Wvs,B6ADOF24Wvs,B7ADOF24Wvs,B8ADOF24Wvs,B9ADOF24Wvs, & + B1ADOF25Wvs,B2ADOF25Wvs,B3ADOF25Wvs,B4ADOF25Wvs,B5ADOF25Wvs,B6ADOF25Wvs,B7ADOF25Wvs,B8ADOF25Wvs,B9ADOF25Wvs, & + B1ADOF26Wvs,B2ADOF26Wvs,B3ADOF26Wvs,B4ADOF26Wvs,B5ADOF26Wvs,B6ADOF26Wvs,B7ADOF26Wvs,B8ADOF26Wvs,B9ADOF26Wvs, & + B1ADOF27Wvs,B2ADOF27Wvs,B3ADOF27Wvs,B4ADOF27Wvs,B5ADOF27Wvs,B6ADOF27Wvs,B7ADOF27Wvs,B8ADOF27Wvs,B9ADOF27Wvs, & + B1ADOF28Wvs,B2ADOF28Wvs,B3ADOF28Wvs,B4ADOF28Wvs,B5ADOF28Wvs,B6ADOF28Wvs,B7ADOF28Wvs,B8ADOF28Wvs,B9ADOF28Wvs, & + B1ADOF29Wvs,B2ADOF29Wvs,B3ADOF29Wvs,B4ADOF29Wvs,B5ADOF29Wvs,B6ADOF29Wvs,B7ADOF29Wvs,B8ADOF29Wvs,B9ADOF29Wvs, & + B1ADOF30Wvs,B2ADOF30Wvs,B3ADOF30Wvs,B4ADOF30Wvs,B5ADOF30Wvs,B6ADOF30Wvs,B7ADOF30Wvs,B8ADOF30Wvs,B9ADOF30Wvs, & + B1ADOF31Wvs,B2ADOF31Wvs,B3ADOF31Wvs,B4ADOF31Wvs,B5ADOF31Wvs,B6ADOF31Wvs,B7ADOF31Wvs,B8ADOF31Wvs,B9ADOF31Wvs, & + B1ADOF32Wvs,B2ADOF32Wvs,B3ADOF32Wvs,B4ADOF32Wvs,B5ADOF32Wvs,B6ADOF32Wvs,B7ADOF32Wvs,B8ADOF32Wvs,B9ADOF32Wvs, & + B1ADOF33Wvs,B2ADOF33Wvs,B3ADOF33Wvs,B4ADOF33Wvs,B5ADOF33Wvs,B6ADOF33Wvs,B7ADOF33Wvs,B8ADOF33Wvs,B9ADOF33Wvs, & + B1ADOF34Wvs,B2ADOF34Wvs,B3ADOF34Wvs,B4ADOF34Wvs,B5ADOF34Wvs,B6ADOF34Wvs,B7ADOF34Wvs,B8ADOF34Wvs,B9ADOF34Wvs, & + B1ADOF35Wvs,B2ADOF35Wvs,B3ADOF35Wvs,B4ADOF35Wvs,B5ADOF35Wvs,B6ADOF35Wvs,B7ADOF35Wvs,B8ADOF35Wvs,B9ADOF35Wvs, & + B1ADOF36Wvs,B2ADOF36Wvs,B3ADOF36Wvs,B4ADOF36Wvs,B5ADOF36Wvs,B6ADOF36Wvs,B7ADOF36Wvs,B8ADOF36Wvs,B9ADOF36Wvs, & + B1ADOF37Wvs,B2ADOF37Wvs,B3ADOF37Wvs,B4ADOF37Wvs,B5ADOF37Wvs,B6ADOF37Wvs,B7ADOF37Wvs,B8ADOF37Wvs,B9ADOF37Wvs, & + B1ADOF38Wvs,B2ADOF38Wvs,B3ADOF38Wvs,B4ADOF38Wvs,B5ADOF38Wvs,B6ADOF38Wvs,B7ADOF38Wvs,B8ADOF38Wvs,B9ADOF38Wvs, & + B1ADOF39Wvs,B2ADOF39Wvs,B3ADOF39Wvs,B4ADOF39Wvs,B5ADOF39Wvs,B6ADOF39Wvs,B7ADOF39Wvs,B8ADOF39Wvs,B9ADOF39Wvs, & + B1ADOF40Wvs,B2ADOF40Wvs,B3ADOF40Wvs,B4ADOF40Wvs,B5ADOF40Wvs,B6ADOF40Wvs,B7ADOF40Wvs,B8ADOF40Wvs,B9ADOF40Wvs, & + B1ADOF41Wvs,B2ADOF41Wvs,B3ADOF41Wvs,B4ADOF41Wvs,B5ADOF41Wvs,B6ADOF41Wvs,B7ADOF41Wvs,B8ADOF41Wvs,B9ADOF41Wvs, & + B1ADOF42Wvs,B2ADOF42Wvs,B3ADOF42Wvs,B4ADOF42Wvs,B5ADOF42Wvs,B6ADOF42Wvs,B7ADOF42Wvs,B8ADOF42Wvs,B9ADOF42Wvs, & + B1ADOF43Wvs,B2ADOF43Wvs,B3ADOF43Wvs,B4ADOF43Wvs,B5ADOF43Wvs,B6ADOF43Wvs,B7ADOF43Wvs,B8ADOF43Wvs,B9ADOF43Wvs, & + B1ADOF44Wvs,B2ADOF44Wvs,B3ADOF44Wvs,B4ADOF44Wvs,B5ADOF44Wvs,B6ADOF44Wvs,B7ADOF44Wvs,B8ADOF44Wvs,B9ADOF44Wvs, & + B1ADOF45Wvs,B2ADOF45Wvs,B3ADOF45Wvs,B4ADOF45Wvs,B5ADOF45Wvs,B6ADOF45Wvs,B7ADOF45Wvs,B8ADOF45Wvs,B9ADOF45Wvs, & + B1ADOF46Wvs,B2ADOF46Wvs,B3ADOF46Wvs,B4ADOF46Wvs,B5ADOF46Wvs,B6ADOF46Wvs,B7ADOF46Wvs,B8ADOF46Wvs,B9ADOF46Wvs, & + B1ADOF47Wvs,B2ADOF47Wvs,B3ADOF47Wvs,B4ADOF47Wvs,B5ADOF47Wvs,B6ADOF47Wvs,B7ADOF47Wvs,B8ADOF47Wvs,B9ADOF47Wvs, & + B1ADOF48Wvs,B2ADOF48Wvs,B3ADOF48Wvs,B4ADOF48Wvs,B5ADOF48Wvs,B6ADOF48Wvs,B7ADOF48Wvs,B8ADOF48Wvs,B9ADOF48Wvs, & + B1ADOF49Wvs,B2ADOF49Wvs,B3ADOF49Wvs,B4ADOF49Wvs,B5ADOF49Wvs,B6ADOF49Wvs,B7ADOF49Wvs,B8ADOF49Wvs,B9ADOF49Wvs, & + B1ADOF50Wvs,B2ADOF50Wvs,B3ADOF50Wvs,B4ADOF50Wvs,B5ADOF50Wvs,B6ADOF50Wvs,B7ADOF50Wvs,B8ADOF50Wvs,B9ADOF50Wvs, & + B1ADOF51Wvs,B2ADOF51Wvs,B3ADOF51Wvs,B4ADOF51Wvs,B5ADOF51Wvs,B6ADOF51Wvs,B7ADOF51Wvs,B8ADOF51Wvs,B9ADOF51Wvs, & + B1ADOF52Wvs,B2ADOF52Wvs,B3ADOF52Wvs,B4ADOF52Wvs,B5ADOF52Wvs,B6ADOF52Wvs,B7ADOF52Wvs,B8ADOF52Wvs,B9ADOF52Wvs, & + B1ADOF53Wvs,B2ADOF53Wvs,B3ADOF53Wvs,B4ADOF53Wvs,B5ADOF53Wvs,B6ADOF53Wvs,B7ADOF53Wvs,B8ADOF53Wvs,B9ADOF53Wvs, & + B1ADOF54Wvs,B2ADOF54Wvs,B3ADOF54Wvs,B4ADOF54Wvs,B5ADOF54Wvs,B6ADOF54Wvs,B7ADOF54Wvs,B8ADOF54Wvs,B9ADOF54Wvs, & + B1ADOF55Wvs,B2ADOF55Wvs,B3ADOF55Wvs,B4ADOF55Wvs,B5ADOF55Wvs,B6ADOF55Wvs,B7ADOF55Wvs,B8ADOF55Wvs,B9ADOF55Wvs, & + B1ADOF56Wvs,B2ADOF56Wvs,B3ADOF56Wvs,B4ADOF56Wvs,B5ADOF56Wvs,B6ADOF56Wvs,B7ADOF56Wvs,B8ADOF56Wvs,B9ADOF56Wvs, & + B1ADOF57Wvs,B2ADOF57Wvs,B3ADOF57Wvs,B4ADOF57Wvs,B5ADOF57Wvs,B6ADOF57Wvs,B7ADOF57Wvs,B8ADOF57Wvs,B9ADOF57Wvs, & + B1ADOF58Wvs,B2ADOF58Wvs,B3ADOF58Wvs,B4ADOF58Wvs,B5ADOF58Wvs,B6ADOF58Wvs,B7ADOF58Wvs,B8ADOF58Wvs,B9ADOF58Wvs, & + B1ADOF59Wvs,B2ADOF59Wvs,B3ADOF59Wvs,B4ADOF59Wvs,B5ADOF59Wvs,B6ADOF59Wvs,B7ADOF59Wvs,B8ADOF59Wvs,B9ADOF59Wvs, & + B1ADOF60Wvs,B2ADOF60Wvs,B3ADOF60Wvs,B4ADOF60Wvs,B5ADOF60Wvs,B6ADOF60Wvs,B7ADOF60Wvs,B8ADOF60Wvs,B9ADOF60Wvs, & + B1ADOF61Wvs,B2ADOF61Wvs,B3ADOF61Wvs,B4ADOF61Wvs,B5ADOF61Wvs,B6ADOF61Wvs,B7ADOF61Wvs,B8ADOF61Wvs,B9ADOF61Wvs, & + B1ADOF62Wvs,B2ADOF62Wvs,B3ADOF62Wvs,B4ADOF62Wvs,B5ADOF62Wvs,B6ADOF62Wvs,B7ADOF62Wvs,B8ADOF62Wvs,B9ADOF62Wvs, & + B1ADOF63Wvs,B2ADOF63Wvs,B3ADOF63Wvs,B4ADOF63Wvs,B5ADOF63Wvs,B6ADOF63Wvs,B7ADOF63Wvs,B8ADOF63Wvs,B9ADOF63Wvs, & + B1ADOF64Wvs,B2ADOF64Wvs,B3ADOF64Wvs,B4ADOF64Wvs,B5ADOF64Wvs,B6ADOF64Wvs,B7ADOF64Wvs,B8ADOF64Wvs,B9ADOF64Wvs, & + B1ADOF65Wvs,B2ADOF65Wvs,B3ADOF65Wvs,B4ADOF65Wvs,B5ADOF65Wvs,B6ADOF65Wvs,B7ADOF65Wvs,B8ADOF65Wvs,B9ADOF65Wvs, & + B1ADOF66Wvs,B2ADOF66Wvs,B3ADOF66Wvs,B4ADOF66Wvs,B5ADOF66Wvs,B6ADOF66Wvs,B7ADOF66Wvs,B8ADOF66Wvs,B9ADOF66Wvs, & + B1ADOF67Wvs,B2ADOF67Wvs,B3ADOF67Wvs,B4ADOF67Wvs,B5ADOF67Wvs,B6ADOF67Wvs,B7ADOF67Wvs,B8ADOF67Wvs,B9ADOF67Wvs, & + B1ADOF68Wvs,B2ADOF68Wvs,B3ADOF68Wvs,B4ADOF68Wvs,B5ADOF68Wvs,B6ADOF68Wvs,B7ADOF68Wvs,B8ADOF68Wvs,B9ADOF68Wvs, & + B1ADOF69Wvs,B2ADOF69Wvs,B3ADOF69Wvs,B4ADOF69Wvs,B5ADOF69Wvs,B6ADOF69Wvs,B7ADOF69Wvs,B8ADOF69Wvs,B9ADOF69Wvs, & + B1ADOF70Wvs,B2ADOF70Wvs,B3ADOF70Wvs,B4ADOF70Wvs,B5ADOF70Wvs,B6ADOF70Wvs,B7ADOF70Wvs,B8ADOF70Wvs,B9ADOF70Wvs, & + B1ADOF71Wvs,B2ADOF71Wvs,B3ADOF71Wvs,B4ADOF71Wvs,B5ADOF71Wvs,B6ADOF71Wvs,B7ADOF71Wvs,B8ADOF71Wvs,B9ADOF71Wvs, & + B1ADOF72Wvs,B2ADOF72Wvs,B3ADOF72Wvs,B4ADOF72Wvs,B5ADOF72Wvs,B6ADOF72Wvs,B7ADOF72Wvs,B8ADOF72Wvs,B9ADOF72Wvs, & + B1ADOF73Wvs,B2ADOF73Wvs,B3ADOF73Wvs,B4ADOF73Wvs,B5ADOF73Wvs,B6ADOF73Wvs,B7ADOF73Wvs,B8ADOF73Wvs,B9ADOF73Wvs, & + B1ADOF74Wvs,B2ADOF74Wvs,B3ADOF74Wvs,B4ADOF74Wvs,B5ADOF74Wvs,B6ADOF74Wvs,B7ADOF74Wvs,B8ADOF74Wvs,B9ADOF74Wvs, & + B1ADOF75Wvs,B2ADOF75Wvs,B3ADOF75Wvs,B4ADOF75Wvs,B5ADOF75Wvs,B6ADOF75Wvs,B7ADOF75Wvs,B8ADOF75Wvs,B9ADOF75Wvs, & + B1ADOF76Wvs,B2ADOF76Wvs,B3ADOF76Wvs,B4ADOF76Wvs,B5ADOF76Wvs,B6ADOF76Wvs,B7ADOF76Wvs,B8ADOF76Wvs,B9ADOF76Wvs, & + B1ADOF77Wvs,B2ADOF77Wvs,B3ADOF77Wvs,B4ADOF77Wvs,B5ADOF77Wvs,B6ADOF77Wvs,B7ADOF77Wvs,B8ADOF77Wvs,B9ADOF77Wvs, & + B1ADOF78Wvs,B2ADOF78Wvs,B3ADOF78Wvs,B4ADOF78Wvs,B5ADOF78Wvs,B6ADOF78Wvs,B7ADOF78Wvs,B8ADOF78Wvs,B9ADOF78Wvs, & + B1ADOF79Wvs,B2ADOF79Wvs,B3ADOF79Wvs,B4ADOF79Wvs,B5ADOF79Wvs,B6ADOF79Wvs,B7ADOF79Wvs,B8ADOF79Wvs,B9ADOF79Wvs, & + B1ADOF80Wvs,B2ADOF80Wvs,B3ADOF80Wvs,B4ADOF80Wvs,B5ADOF80Wvs,B6ADOF80Wvs,B7ADOF80Wvs,B8ADOF80Wvs,B9ADOF80Wvs, & + B1ADOF81Wvs,B2ADOF81Wvs,B3ADOF81Wvs,B4ADOF81Wvs,B5ADOF81Wvs,B6ADOF81Wvs,B7ADOF81Wvs,B8ADOF81Wvs,B9ADOF81Wvs, & + B1ADOF82Wvs,B2ADOF82Wvs,B3ADOF82Wvs,B4ADOF82Wvs,B5ADOF82Wvs,B6ADOF82Wvs,B7ADOF82Wvs,B8ADOF82Wvs,B9ADOF82Wvs, & + B1ADOF83Wvs,B2ADOF83Wvs,B3ADOF83Wvs,B4ADOF83Wvs,B5ADOF83Wvs,B6ADOF83Wvs,B7ADOF83Wvs,B8ADOF83Wvs,B9ADOF83Wvs, & + B1ADOF84Wvs,B2ADOF84Wvs,B3ADOF84Wvs,B4ADOF84Wvs,B5ADOF84Wvs,B6ADOF84Wvs,B7ADOF84Wvs,B8ADOF84Wvs,B9ADOF84Wvs, & + B1ADOF85Wvs,B2ADOF85Wvs,B3ADOF85Wvs,B4ADOF85Wvs,B5ADOF85Wvs,B6ADOF85Wvs,B7ADOF85Wvs,B8ADOF85Wvs,B9ADOF85Wvs, & + B1ADOF86Wvs,B2ADOF86Wvs,B3ADOF86Wvs,B4ADOF86Wvs,B5ADOF86Wvs,B6ADOF86Wvs,B7ADOF86Wvs,B8ADOF86Wvs,B9ADOF86Wvs, & + B1ADOF87Wvs,B2ADOF87Wvs,B3ADOF87Wvs,B4ADOF87Wvs,B5ADOF87Wvs,B6ADOF87Wvs,B7ADOF87Wvs,B8ADOF87Wvs,B9ADOF87Wvs, & + B1ADOF88Wvs,B2ADOF88Wvs,B3ADOF88Wvs,B4ADOF88Wvs,B5ADOF88Wvs,B6ADOF88Wvs,B7ADOF88Wvs,B8ADOF88Wvs,B9ADOF88Wvs, & + B1ADOF89Wvs,B2ADOF89Wvs,B3ADOF89Wvs,B4ADOF89Wvs,B5ADOF89Wvs,B6ADOF89Wvs,B7ADOF89Wvs,B8ADOF89Wvs,B9ADOF89Wvs, & + B1ADOF90Wvs,B2ADOF90Wvs,B3ADOF90Wvs,B4ADOF90Wvs,B5ADOF90Wvs,B6ADOF90Wvs,B7ADOF90Wvs,B8ADOF90Wvs,B9ADOF90Wvs, & + B1ADOF91Wvs,B2ADOF91Wvs,B3ADOF91Wvs,B4ADOF91Wvs,B5ADOF91Wvs,B6ADOF91Wvs,B7ADOF91Wvs,B8ADOF91Wvs,B9ADOF91Wvs, & + B1ADOF92Wvs,B2ADOF92Wvs,B3ADOF92Wvs,B4ADOF92Wvs,B5ADOF92Wvs,B6ADOF92Wvs,B7ADOF92Wvs,B8ADOF92Wvs,B9ADOF92Wvs, & + B1ADOF93Wvs,B2ADOF93Wvs,B3ADOF93Wvs,B4ADOF93Wvs,B5ADOF93Wvs,B6ADOF93Wvs,B7ADOF93Wvs,B8ADOF93Wvs,B9ADOF93Wvs, & + B1ADOF94Wvs,B2ADOF94Wvs,B3ADOF94Wvs,B4ADOF94Wvs,B5ADOF94Wvs,B6ADOF94Wvs,B7ADOF94Wvs,B8ADOF94Wvs,B9ADOF94Wvs, & + B1ADOF95Wvs,B2ADOF95Wvs,B3ADOF95Wvs,B4ADOF95Wvs,B5ADOF95Wvs,B6ADOF95Wvs,B7ADOF95Wvs,B8ADOF95Wvs,B9ADOF95Wvs, & + B1ADOF96Wvs,B2ADOF96Wvs,B3ADOF96Wvs,B4ADOF96Wvs,B5ADOF96Wvs,B6ADOF96Wvs,B7ADOF96Wvs,B8ADOF96Wvs,B9ADOF96Wvs, & + B1ADOF97Wvs,B2ADOF97Wvs,B3ADOF97Wvs,B4ADOF97Wvs,B5ADOF97Wvs,B6ADOF97Wvs,B7ADOF97Wvs,B8ADOF97Wvs,B9ADOF97Wvs, & + B1ADOF98Wvs,B2ADOF98Wvs,B3ADOF98Wvs,B4ADOF98Wvs,B5ADOF98Wvs,B6ADOF98Wvs,B7ADOF98Wvs,B8ADOF98Wvs,B9ADOF98Wvs, & + B1ADOF99Wvs,B2ADOF99Wvs,B3ADOF99Wvs,B4ADOF99Wvs,B5ADOF99Wvs,B6ADOF99Wvs,B7ADOF99Wvs,B8ADOF99Wvs,B9ADOF99Wvs/), & (/9,99/))) INTEGER, PARAMETER :: WBMotions(6,9) = transpose(reshape((/B1Surge,B2Surge,B3Surge,B4Surge,B5Surge,B6Surge,B7Surge,B8Surge,B9Surge, & @@ -7290,307 +7290,307 @@ MODULE HydroDyn_Output INTEGER, PARAMETER :: PRPVel(6) = (/PRPTVxi, PRPTVyi,PRPTVzi, PRPRVxi,PRPRVyi, PRPRVzi/) INTEGER, PARAMETER :: PRPAcc(6) = (/PRPTAxi, PRPTAyi,PRPTAzi, PRPRAxi,PRPRAyi, PRPRAzi/) - INTEGER, PARAMETER :: ADOFDsp(99,9) = transpose(reshape((/B1ADOF1D,B1ADOF1D,B1ADOF1D,B1ADOF1D,B1ADOF1D,B1ADOF1D,B1ADOF1D,B1ADOF1D,B1ADOF1D, & - B1ADOF2D,B1ADOF2D,B1ADOF2D,B1ADOF2D,B1ADOF2D,B1ADOF2D,B1ADOF2D,B1ADOF2D,B1ADOF2D, & - B1ADOF3D,B1ADOF3D,B1ADOF3D,B1ADOF3D,B1ADOF3D,B1ADOF3D,B1ADOF3D,B1ADOF3D,B1ADOF3D, & - B1ADOF4D,B1ADOF4D,B1ADOF4D,B1ADOF4D,B1ADOF4D,B1ADOF4D,B1ADOF4D,B1ADOF4D,B1ADOF4D, & - B1ADOF5D,B1ADOF5D,B1ADOF5D,B1ADOF5D,B1ADOF5D,B1ADOF5D,B1ADOF5D,B1ADOF5D,B1ADOF5D, & - B1ADOF6D,B1ADOF6D,B1ADOF6D,B1ADOF6D,B1ADOF6D,B1ADOF6D,B1ADOF6D,B1ADOF6D,B1ADOF6D, & - B1ADOF7D,B1ADOF7D,B1ADOF7D,B1ADOF7D,B1ADOF7D,B1ADOF7D,B1ADOF7D,B1ADOF7D,B1ADOF7D, & - B1ADOF8D,B1ADOF8D,B1ADOF8D,B1ADOF8D,B1ADOF8D,B1ADOF8D,B1ADOF8D,B1ADOF8D,B1ADOF8D, & - B1ADOF9D,B1ADOF9D,B1ADOF9D,B1ADOF9D,B1ADOF9D,B1ADOF9D,B1ADOF9D,B1ADOF9D,B1ADOF9D, & - B1ADOF10D,B1ADOF10D,B1ADOF10D,B1ADOF10D,B1ADOF10D,B1ADOF10D,B1ADOF10D,B1ADOF10D,B1ADOF10D, & - B1ADOF11D,B1ADOF11D,B1ADOF11D,B1ADOF11D,B1ADOF11D,B1ADOF11D,B1ADOF11D,B1ADOF11D,B1ADOF11D, & - B1ADOF12D,B1ADOF12D,B1ADOF12D,B1ADOF12D,B1ADOF12D,B1ADOF12D,B1ADOF12D,B1ADOF12D,B1ADOF12D, & - B1ADOF13D,B1ADOF13D,B1ADOF13D,B1ADOF13D,B1ADOF13D,B1ADOF13D,B1ADOF13D,B1ADOF13D,B1ADOF13D, & - B1ADOF14D,B1ADOF14D,B1ADOF14D,B1ADOF14D,B1ADOF14D,B1ADOF14D,B1ADOF14D,B1ADOF14D,B1ADOF14D, & - B1ADOF15D,B1ADOF15D,B1ADOF15D,B1ADOF15D,B1ADOF15D,B1ADOF15D,B1ADOF15D,B1ADOF15D,B1ADOF15D, & - B1ADOF16D,B1ADOF16D,B1ADOF16D,B1ADOF16D,B1ADOF16D,B1ADOF16D,B1ADOF16D,B1ADOF16D,B1ADOF16D, & - B1ADOF17D,B1ADOF17D,B1ADOF17D,B1ADOF17D,B1ADOF17D,B1ADOF17D,B1ADOF17D,B1ADOF17D,B1ADOF17D, & - B1ADOF18D,B1ADOF18D,B1ADOF18D,B1ADOF18D,B1ADOF18D,B1ADOF18D,B1ADOF18D,B1ADOF18D,B1ADOF18D, & - B1ADOF19D,B1ADOF19D,B1ADOF19D,B1ADOF19D,B1ADOF19D,B1ADOF19D,B1ADOF19D,B1ADOF19D,B1ADOF19D, & - B1ADOF20D,B1ADOF20D,B1ADOF20D,B1ADOF20D,B1ADOF20D,B1ADOF20D,B1ADOF20D,B1ADOF20D,B1ADOF20D, & - B1ADOF21D,B1ADOF21D,B1ADOF21D,B1ADOF21D,B1ADOF21D,B1ADOF21D,B1ADOF21D,B1ADOF21D,B1ADOF21D, & - B1ADOF22D,B1ADOF22D,B1ADOF22D,B1ADOF22D,B1ADOF22D,B1ADOF22D,B1ADOF22D,B1ADOF22D,B1ADOF22D, & - B1ADOF23D,B1ADOF23D,B1ADOF23D,B1ADOF23D,B1ADOF23D,B1ADOF23D,B1ADOF23D,B1ADOF23D,B1ADOF23D, & - B1ADOF24D,B1ADOF24D,B1ADOF24D,B1ADOF24D,B1ADOF24D,B1ADOF24D,B1ADOF24D,B1ADOF24D,B1ADOF24D, & - B1ADOF25D,B1ADOF25D,B1ADOF25D,B1ADOF25D,B1ADOF25D,B1ADOF25D,B1ADOF25D,B1ADOF25D,B1ADOF25D, & - B1ADOF26D,B1ADOF26D,B1ADOF26D,B1ADOF26D,B1ADOF26D,B1ADOF26D,B1ADOF26D,B1ADOF26D,B1ADOF26D, & - B1ADOF27D,B1ADOF27D,B1ADOF27D,B1ADOF27D,B1ADOF27D,B1ADOF27D,B1ADOF27D,B1ADOF27D,B1ADOF27D, & - B1ADOF28D,B1ADOF28D,B1ADOF28D,B1ADOF28D,B1ADOF28D,B1ADOF28D,B1ADOF28D,B1ADOF28D,B1ADOF28D, & - B1ADOF29D,B1ADOF29D,B1ADOF29D,B1ADOF29D,B1ADOF29D,B1ADOF29D,B1ADOF29D,B1ADOF29D,B1ADOF29D, & - B1ADOF30D,B1ADOF30D,B1ADOF30D,B1ADOF30D,B1ADOF30D,B1ADOF30D,B1ADOF30D,B1ADOF30D,B1ADOF30D, & - B1ADOF31D,B1ADOF31D,B1ADOF31D,B1ADOF31D,B1ADOF31D,B1ADOF31D,B1ADOF31D,B1ADOF31D,B1ADOF31D, & - B1ADOF32D,B1ADOF32D,B1ADOF32D,B1ADOF32D,B1ADOF32D,B1ADOF32D,B1ADOF32D,B1ADOF32D,B1ADOF32D, & - B1ADOF33D,B1ADOF33D,B1ADOF33D,B1ADOF33D,B1ADOF33D,B1ADOF33D,B1ADOF33D,B1ADOF33D,B1ADOF33D, & - B1ADOF34D,B1ADOF34D,B1ADOF34D,B1ADOF34D,B1ADOF34D,B1ADOF34D,B1ADOF34D,B1ADOF34D,B1ADOF34D, & - B1ADOF35D,B1ADOF35D,B1ADOF35D,B1ADOF35D,B1ADOF35D,B1ADOF35D,B1ADOF35D,B1ADOF35D,B1ADOF35D, & - B1ADOF36D,B1ADOF36D,B1ADOF36D,B1ADOF36D,B1ADOF36D,B1ADOF36D,B1ADOF36D,B1ADOF36D,B1ADOF36D, & - B1ADOF37D,B1ADOF37D,B1ADOF37D,B1ADOF37D,B1ADOF37D,B1ADOF37D,B1ADOF37D,B1ADOF37D,B1ADOF37D, & - B1ADOF38D,B1ADOF38D,B1ADOF38D,B1ADOF38D,B1ADOF38D,B1ADOF38D,B1ADOF38D,B1ADOF38D,B1ADOF38D, & - B1ADOF39D,B1ADOF39D,B1ADOF39D,B1ADOF39D,B1ADOF39D,B1ADOF39D,B1ADOF39D,B1ADOF39D,B1ADOF39D, & - B1ADOF40D,B1ADOF40D,B1ADOF40D,B1ADOF40D,B1ADOF40D,B1ADOF40D,B1ADOF40D,B1ADOF40D,B1ADOF40D, & - B1ADOF41D,B1ADOF41D,B1ADOF41D,B1ADOF41D,B1ADOF41D,B1ADOF41D,B1ADOF41D,B1ADOF41D,B1ADOF41D, & - B1ADOF42D,B1ADOF42D,B1ADOF42D,B1ADOF42D,B1ADOF42D,B1ADOF42D,B1ADOF42D,B1ADOF42D,B1ADOF42D, & - B1ADOF43D,B1ADOF43D,B1ADOF43D,B1ADOF43D,B1ADOF43D,B1ADOF43D,B1ADOF43D,B1ADOF43D,B1ADOF43D, & - B1ADOF44D,B1ADOF44D,B1ADOF44D,B1ADOF44D,B1ADOF44D,B1ADOF44D,B1ADOF44D,B1ADOF44D,B1ADOF44D, & - B1ADOF45D,B1ADOF45D,B1ADOF45D,B1ADOF45D,B1ADOF45D,B1ADOF45D,B1ADOF45D,B1ADOF45D,B1ADOF45D, & - B1ADOF46D,B1ADOF46D,B1ADOF46D,B1ADOF46D,B1ADOF46D,B1ADOF46D,B1ADOF46D,B1ADOF46D,B1ADOF46D, & - B1ADOF47D,B1ADOF47D,B1ADOF47D,B1ADOF47D,B1ADOF47D,B1ADOF47D,B1ADOF47D,B1ADOF47D,B1ADOF47D, & - B1ADOF48D,B1ADOF48D,B1ADOF48D,B1ADOF48D,B1ADOF48D,B1ADOF48D,B1ADOF48D,B1ADOF48D,B1ADOF48D, & - B1ADOF49D,B1ADOF49D,B1ADOF49D,B1ADOF49D,B1ADOF49D,B1ADOF49D,B1ADOF49D,B1ADOF49D,B1ADOF49D, & - B1ADOF50D,B1ADOF50D,B1ADOF50D,B1ADOF50D,B1ADOF50D,B1ADOF50D,B1ADOF50D,B1ADOF50D,B1ADOF50D, & - B1ADOF51D,B1ADOF51D,B1ADOF51D,B1ADOF51D,B1ADOF51D,B1ADOF51D,B1ADOF51D,B1ADOF51D,B1ADOF51D, & - B1ADOF52D,B1ADOF52D,B1ADOF52D,B1ADOF52D,B1ADOF52D,B1ADOF52D,B1ADOF52D,B1ADOF52D,B1ADOF52D, & - B1ADOF53D,B1ADOF53D,B1ADOF53D,B1ADOF53D,B1ADOF53D,B1ADOF53D,B1ADOF53D,B1ADOF53D,B1ADOF53D, & - B1ADOF54D,B1ADOF54D,B1ADOF54D,B1ADOF54D,B1ADOF54D,B1ADOF54D,B1ADOF54D,B1ADOF54D,B1ADOF54D, & - B1ADOF55D,B1ADOF55D,B1ADOF55D,B1ADOF55D,B1ADOF55D,B1ADOF55D,B1ADOF55D,B1ADOF55D,B1ADOF55D, & - B1ADOF56D,B1ADOF56D,B1ADOF56D,B1ADOF56D,B1ADOF56D,B1ADOF56D,B1ADOF56D,B1ADOF56D,B1ADOF56D, & - B1ADOF57D,B1ADOF57D,B1ADOF57D,B1ADOF57D,B1ADOF57D,B1ADOF57D,B1ADOF57D,B1ADOF57D,B1ADOF57D, & - B1ADOF58D,B1ADOF58D,B1ADOF58D,B1ADOF58D,B1ADOF58D,B1ADOF58D,B1ADOF58D,B1ADOF58D,B1ADOF58D, & - B1ADOF59D,B1ADOF59D,B1ADOF59D,B1ADOF59D,B1ADOF59D,B1ADOF59D,B1ADOF59D,B1ADOF59D,B1ADOF59D, & - B1ADOF60D,B1ADOF60D,B1ADOF60D,B1ADOF60D,B1ADOF60D,B1ADOF60D,B1ADOF60D,B1ADOF60D,B1ADOF60D, & - B1ADOF61D,B1ADOF61D,B1ADOF61D,B1ADOF61D,B1ADOF61D,B1ADOF61D,B1ADOF61D,B1ADOF61D,B1ADOF61D, & - B1ADOF62D,B1ADOF62D,B1ADOF62D,B1ADOF62D,B1ADOF62D,B1ADOF62D,B1ADOF62D,B1ADOF62D,B1ADOF62D, & - B1ADOF63D,B1ADOF63D,B1ADOF63D,B1ADOF63D,B1ADOF63D,B1ADOF63D,B1ADOF63D,B1ADOF63D,B1ADOF63D, & - B1ADOF64D,B1ADOF64D,B1ADOF64D,B1ADOF64D,B1ADOF64D,B1ADOF64D,B1ADOF64D,B1ADOF64D,B1ADOF64D, & - B1ADOF65D,B1ADOF65D,B1ADOF65D,B1ADOF65D,B1ADOF65D,B1ADOF65D,B1ADOF65D,B1ADOF65D,B1ADOF65D, & - B1ADOF66D,B1ADOF66D,B1ADOF66D,B1ADOF66D,B1ADOF66D,B1ADOF66D,B1ADOF66D,B1ADOF66D,B1ADOF66D, & - B1ADOF67D,B1ADOF67D,B1ADOF67D,B1ADOF67D,B1ADOF67D,B1ADOF67D,B1ADOF67D,B1ADOF67D,B1ADOF67D, & - B1ADOF68D,B1ADOF68D,B1ADOF68D,B1ADOF68D,B1ADOF68D,B1ADOF68D,B1ADOF68D,B1ADOF68D,B1ADOF68D, & - B1ADOF69D,B1ADOF69D,B1ADOF69D,B1ADOF69D,B1ADOF69D,B1ADOF69D,B1ADOF69D,B1ADOF69D,B1ADOF69D, & - B1ADOF70D,B1ADOF70D,B1ADOF70D,B1ADOF70D,B1ADOF70D,B1ADOF70D,B1ADOF70D,B1ADOF70D,B1ADOF70D, & - B1ADOF71D,B1ADOF71D,B1ADOF71D,B1ADOF71D,B1ADOF71D,B1ADOF71D,B1ADOF71D,B1ADOF71D,B1ADOF71D, & - B1ADOF72D,B1ADOF72D,B1ADOF72D,B1ADOF72D,B1ADOF72D,B1ADOF72D,B1ADOF72D,B1ADOF72D,B1ADOF72D, & - B1ADOF73D,B1ADOF73D,B1ADOF73D,B1ADOF73D,B1ADOF73D,B1ADOF73D,B1ADOF73D,B1ADOF73D,B1ADOF73D, & - B1ADOF74D,B1ADOF74D,B1ADOF74D,B1ADOF74D,B1ADOF74D,B1ADOF74D,B1ADOF74D,B1ADOF74D,B1ADOF74D, & - B1ADOF75D,B1ADOF75D,B1ADOF75D,B1ADOF75D,B1ADOF75D,B1ADOF75D,B1ADOF75D,B1ADOF75D,B1ADOF75D, & - B1ADOF76D,B1ADOF76D,B1ADOF76D,B1ADOF76D,B1ADOF76D,B1ADOF76D,B1ADOF76D,B1ADOF76D,B1ADOF76D, & - B1ADOF77D,B1ADOF77D,B1ADOF77D,B1ADOF77D,B1ADOF77D,B1ADOF77D,B1ADOF77D,B1ADOF77D,B1ADOF77D, & - B1ADOF78D,B1ADOF78D,B1ADOF78D,B1ADOF78D,B1ADOF78D,B1ADOF78D,B1ADOF78D,B1ADOF78D,B1ADOF78D, & - B1ADOF79D,B1ADOF79D,B1ADOF79D,B1ADOF79D,B1ADOF79D,B1ADOF79D,B1ADOF79D,B1ADOF79D,B1ADOF79D, & - B1ADOF80D,B1ADOF80D,B1ADOF80D,B1ADOF80D,B1ADOF80D,B1ADOF80D,B1ADOF80D,B1ADOF80D,B1ADOF80D, & - B1ADOF81D,B1ADOF81D,B1ADOF81D,B1ADOF81D,B1ADOF81D,B1ADOF81D,B1ADOF81D,B1ADOF81D,B1ADOF81D, & - B1ADOF82D,B1ADOF82D,B1ADOF82D,B1ADOF82D,B1ADOF82D,B1ADOF82D,B1ADOF82D,B1ADOF82D,B1ADOF82D, & - B1ADOF83D,B1ADOF83D,B1ADOF83D,B1ADOF83D,B1ADOF83D,B1ADOF83D,B1ADOF83D,B1ADOF83D,B1ADOF83D, & - B1ADOF84D,B1ADOF84D,B1ADOF84D,B1ADOF84D,B1ADOF84D,B1ADOF84D,B1ADOF84D,B1ADOF84D,B1ADOF84D, & - B1ADOF85D,B1ADOF85D,B1ADOF85D,B1ADOF85D,B1ADOF85D,B1ADOF85D,B1ADOF85D,B1ADOF85D,B1ADOF85D, & - B1ADOF86D,B1ADOF86D,B1ADOF86D,B1ADOF86D,B1ADOF86D,B1ADOF86D,B1ADOF86D,B1ADOF86D,B1ADOF86D, & - B1ADOF87D,B1ADOF87D,B1ADOF87D,B1ADOF87D,B1ADOF87D,B1ADOF87D,B1ADOF87D,B1ADOF87D,B1ADOF87D, & - B1ADOF88D,B1ADOF88D,B1ADOF88D,B1ADOF88D,B1ADOF88D,B1ADOF88D,B1ADOF88D,B1ADOF88D,B1ADOF88D, & - B1ADOF89D,B1ADOF89D,B1ADOF89D,B1ADOF89D,B1ADOF89D,B1ADOF89D,B1ADOF89D,B1ADOF89D,B1ADOF89D, & - B1ADOF90D,B1ADOF90D,B1ADOF90D,B1ADOF90D,B1ADOF90D,B1ADOF90D,B1ADOF90D,B1ADOF90D,B1ADOF90D, & - B1ADOF91D,B1ADOF91D,B1ADOF91D,B1ADOF91D,B1ADOF91D,B1ADOF91D,B1ADOF91D,B1ADOF91D,B1ADOF91D, & - B1ADOF92D,B1ADOF92D,B1ADOF92D,B1ADOF92D,B1ADOF92D,B1ADOF92D,B1ADOF92D,B1ADOF92D,B1ADOF92D, & - B1ADOF93D,B1ADOF93D,B1ADOF93D,B1ADOF93D,B1ADOF93D,B1ADOF93D,B1ADOF93D,B1ADOF93D,B1ADOF93D, & - B1ADOF94D,B1ADOF94D,B1ADOF94D,B1ADOF94D,B1ADOF94D,B1ADOF94D,B1ADOF94D,B1ADOF94D,B1ADOF94D, & - B1ADOF95D,B1ADOF95D,B1ADOF95D,B1ADOF95D,B1ADOF95D,B1ADOF95D,B1ADOF95D,B1ADOF95D,B1ADOF95D, & - B1ADOF96D,B1ADOF96D,B1ADOF96D,B1ADOF96D,B1ADOF96D,B1ADOF96D,B1ADOF96D,B1ADOF96D,B1ADOF96D, & - B1ADOF97D,B1ADOF97D,B1ADOF97D,B1ADOF97D,B1ADOF97D,B1ADOF97D,B1ADOF97D,B1ADOF97D,B1ADOF97D, & - B1ADOF98D,B1ADOF98D,B1ADOF98D,B1ADOF98D,B1ADOF98D,B1ADOF98D,B1ADOF98D,B1ADOF98D,B1ADOF98D, & - B1ADOF99D,B1ADOF99D,B1ADOF99D,B1ADOF99D,B1ADOF99D,B1ADOF99D,B1ADOF99D,B1ADOF99D,B1ADOF99D/), & + INTEGER, PARAMETER :: ADOFDsp(99,9) = transpose(reshape((/B1ADOF1D,B2ADOF1D,B3ADOF1D,B4ADOF1D,B5ADOF1D,B6ADOF1D,B7ADOF1D,B8ADOF1D,B9ADOF1D, & + B1ADOF2D,B2ADOF2D,B3ADOF2D,B4ADOF2D,B5ADOF2D,B6ADOF2D,B7ADOF2D,B8ADOF2D,B9ADOF2D, & + B1ADOF3D,B2ADOF3D,B3ADOF3D,B4ADOF3D,B5ADOF3D,B6ADOF3D,B7ADOF3D,B8ADOF3D,B9ADOF3D, & + B1ADOF4D,B2ADOF4D,B3ADOF4D,B4ADOF4D,B5ADOF4D,B6ADOF4D,B7ADOF4D,B8ADOF4D,B9ADOF4D, & + B1ADOF5D,B2ADOF5D,B3ADOF5D,B4ADOF5D,B5ADOF5D,B6ADOF5D,B7ADOF5D,B8ADOF5D,B9ADOF5D, & + B1ADOF6D,B2ADOF6D,B3ADOF6D,B4ADOF6D,B5ADOF6D,B6ADOF6D,B7ADOF6D,B8ADOF6D,B9ADOF6D, & + B1ADOF7D,B2ADOF7D,B3ADOF7D,B4ADOF7D,B5ADOF7D,B6ADOF7D,B7ADOF7D,B8ADOF7D,B9ADOF7D, & + B1ADOF8D,B2ADOF8D,B3ADOF8D,B4ADOF8D,B5ADOF8D,B6ADOF8D,B7ADOF8D,B8ADOF8D,B9ADOF8D, & + B1ADOF9D,B2ADOF9D,B3ADOF9D,B4ADOF9D,B5ADOF9D,B6ADOF9D,B7ADOF9D,B8ADOF9D,B9ADOF9D, & + B1ADOF10D,B2ADOF10D,B3ADOF10D,B4ADOF10D,B5ADOF10D,B6ADOF10D,B7ADOF10D,B8ADOF10D,B9ADOF10D, & + B1ADOF11D,B2ADOF11D,B3ADOF11D,B4ADOF11D,B5ADOF11D,B6ADOF11D,B7ADOF11D,B8ADOF11D,B9ADOF11D, & + B1ADOF12D,B2ADOF12D,B3ADOF12D,B4ADOF12D,B5ADOF12D,B6ADOF12D,B7ADOF12D,B8ADOF12D,B9ADOF12D, & + B1ADOF13D,B2ADOF13D,B3ADOF13D,B4ADOF13D,B5ADOF13D,B6ADOF13D,B7ADOF13D,B8ADOF13D,B9ADOF13D, & + B1ADOF14D,B2ADOF14D,B3ADOF14D,B4ADOF14D,B5ADOF14D,B6ADOF14D,B7ADOF14D,B8ADOF14D,B9ADOF14D, & + B1ADOF15D,B2ADOF15D,B3ADOF15D,B4ADOF15D,B5ADOF15D,B6ADOF15D,B7ADOF15D,B8ADOF15D,B9ADOF15D, & + B1ADOF16D,B2ADOF16D,B3ADOF16D,B4ADOF16D,B5ADOF16D,B6ADOF16D,B7ADOF16D,B8ADOF16D,B9ADOF16D, & + B1ADOF17D,B2ADOF17D,B3ADOF17D,B4ADOF17D,B5ADOF17D,B6ADOF17D,B7ADOF17D,B8ADOF17D,B9ADOF17D, & + B1ADOF18D,B2ADOF18D,B3ADOF18D,B4ADOF18D,B5ADOF18D,B6ADOF18D,B7ADOF18D,B8ADOF18D,B9ADOF18D, & + B1ADOF19D,B2ADOF19D,B3ADOF19D,B4ADOF19D,B5ADOF19D,B6ADOF19D,B7ADOF19D,B8ADOF19D,B9ADOF19D, & + B1ADOF20D,B2ADOF20D,B3ADOF20D,B4ADOF20D,B5ADOF20D,B6ADOF20D,B7ADOF20D,B8ADOF20D,B9ADOF20D, & + B1ADOF21D,B2ADOF21D,B3ADOF21D,B4ADOF21D,B5ADOF21D,B6ADOF21D,B7ADOF21D,B8ADOF21D,B9ADOF21D, & + B1ADOF22D,B2ADOF22D,B3ADOF22D,B4ADOF22D,B5ADOF22D,B6ADOF22D,B7ADOF22D,B8ADOF22D,B9ADOF22D, & + B1ADOF23D,B2ADOF23D,B3ADOF23D,B4ADOF23D,B5ADOF23D,B6ADOF23D,B7ADOF23D,B8ADOF23D,B9ADOF23D, & + B1ADOF24D,B2ADOF24D,B3ADOF24D,B4ADOF24D,B5ADOF24D,B6ADOF24D,B7ADOF24D,B8ADOF24D,B9ADOF24D, & + B1ADOF25D,B2ADOF25D,B3ADOF25D,B4ADOF25D,B5ADOF25D,B6ADOF25D,B7ADOF25D,B8ADOF25D,B9ADOF25D, & + B1ADOF26D,B2ADOF26D,B3ADOF26D,B4ADOF26D,B5ADOF26D,B6ADOF26D,B7ADOF26D,B8ADOF26D,B9ADOF26D, & + B1ADOF27D,B2ADOF27D,B3ADOF27D,B4ADOF27D,B5ADOF27D,B6ADOF27D,B7ADOF27D,B8ADOF27D,B9ADOF27D, & + B1ADOF28D,B2ADOF28D,B3ADOF28D,B4ADOF28D,B5ADOF28D,B6ADOF28D,B7ADOF28D,B8ADOF28D,B9ADOF28D, & + B1ADOF29D,B2ADOF29D,B3ADOF29D,B4ADOF29D,B5ADOF29D,B6ADOF29D,B7ADOF29D,B8ADOF29D,B9ADOF29D, & + B1ADOF30D,B2ADOF30D,B3ADOF30D,B4ADOF30D,B5ADOF30D,B6ADOF30D,B7ADOF30D,B8ADOF30D,B9ADOF30D, & + B1ADOF31D,B2ADOF31D,B3ADOF31D,B4ADOF31D,B5ADOF31D,B6ADOF31D,B7ADOF31D,B8ADOF31D,B9ADOF31D, & + B1ADOF32D,B2ADOF32D,B3ADOF32D,B4ADOF32D,B5ADOF32D,B6ADOF32D,B7ADOF32D,B8ADOF32D,B9ADOF32D, & + B1ADOF33D,B2ADOF33D,B3ADOF33D,B4ADOF33D,B5ADOF33D,B6ADOF33D,B7ADOF33D,B8ADOF33D,B9ADOF33D, & + B1ADOF34D,B2ADOF34D,B3ADOF34D,B4ADOF34D,B5ADOF34D,B6ADOF34D,B7ADOF34D,B8ADOF34D,B9ADOF34D, & + B1ADOF35D,B2ADOF35D,B3ADOF35D,B4ADOF35D,B5ADOF35D,B6ADOF35D,B7ADOF35D,B8ADOF35D,B9ADOF35D, & + B1ADOF36D,B2ADOF36D,B3ADOF36D,B4ADOF36D,B5ADOF36D,B6ADOF36D,B7ADOF36D,B8ADOF36D,B9ADOF36D, & + B1ADOF37D,B2ADOF37D,B3ADOF37D,B4ADOF37D,B5ADOF37D,B6ADOF37D,B7ADOF37D,B8ADOF37D,B9ADOF37D, & + B1ADOF38D,B2ADOF38D,B3ADOF38D,B4ADOF38D,B5ADOF38D,B6ADOF38D,B7ADOF38D,B8ADOF38D,B9ADOF38D, & + B1ADOF39D,B2ADOF39D,B3ADOF39D,B4ADOF39D,B5ADOF39D,B6ADOF39D,B7ADOF39D,B8ADOF39D,B9ADOF39D, & + B1ADOF40D,B2ADOF40D,B3ADOF40D,B4ADOF40D,B5ADOF40D,B6ADOF40D,B7ADOF40D,B8ADOF40D,B9ADOF40D, & + B1ADOF41D,B2ADOF41D,B3ADOF41D,B4ADOF41D,B5ADOF41D,B6ADOF41D,B7ADOF41D,B8ADOF41D,B9ADOF41D, & + B1ADOF42D,B2ADOF42D,B3ADOF42D,B4ADOF42D,B5ADOF42D,B6ADOF42D,B7ADOF42D,B8ADOF42D,B9ADOF42D, & + B1ADOF43D,B2ADOF43D,B3ADOF43D,B4ADOF43D,B5ADOF43D,B6ADOF43D,B7ADOF43D,B8ADOF43D,B9ADOF43D, & + B1ADOF44D,B2ADOF44D,B3ADOF44D,B4ADOF44D,B5ADOF44D,B6ADOF44D,B7ADOF44D,B8ADOF44D,B9ADOF44D, & + B1ADOF45D,B2ADOF45D,B3ADOF45D,B4ADOF45D,B5ADOF45D,B6ADOF45D,B7ADOF45D,B8ADOF45D,B9ADOF45D, & + B1ADOF46D,B2ADOF46D,B3ADOF46D,B4ADOF46D,B5ADOF46D,B6ADOF46D,B7ADOF46D,B8ADOF46D,B9ADOF46D, & + B1ADOF47D,B2ADOF47D,B3ADOF47D,B4ADOF47D,B5ADOF47D,B6ADOF47D,B7ADOF47D,B8ADOF47D,B9ADOF47D, & + B1ADOF48D,B2ADOF48D,B3ADOF48D,B4ADOF48D,B5ADOF48D,B6ADOF48D,B7ADOF48D,B8ADOF48D,B9ADOF48D, & + B1ADOF49D,B2ADOF49D,B3ADOF49D,B4ADOF49D,B5ADOF49D,B6ADOF49D,B7ADOF49D,B8ADOF49D,B9ADOF49D, & + B1ADOF50D,B2ADOF50D,B3ADOF50D,B4ADOF50D,B5ADOF50D,B6ADOF50D,B7ADOF50D,B8ADOF50D,B9ADOF50D, & + B1ADOF51D,B2ADOF51D,B3ADOF51D,B4ADOF51D,B5ADOF51D,B6ADOF51D,B7ADOF51D,B8ADOF51D,B9ADOF51D, & + B1ADOF52D,B2ADOF52D,B3ADOF52D,B4ADOF52D,B5ADOF52D,B6ADOF52D,B7ADOF52D,B8ADOF52D,B9ADOF52D, & + B1ADOF53D,B2ADOF53D,B3ADOF53D,B4ADOF53D,B5ADOF53D,B6ADOF53D,B7ADOF53D,B8ADOF53D,B9ADOF53D, & + B1ADOF54D,B2ADOF54D,B3ADOF54D,B4ADOF54D,B5ADOF54D,B6ADOF54D,B7ADOF54D,B8ADOF54D,B9ADOF54D, & + B1ADOF55D,B2ADOF55D,B3ADOF55D,B4ADOF55D,B5ADOF55D,B6ADOF55D,B7ADOF55D,B8ADOF55D,B9ADOF55D, & + B1ADOF56D,B2ADOF56D,B3ADOF56D,B4ADOF56D,B5ADOF56D,B6ADOF56D,B7ADOF56D,B8ADOF56D,B9ADOF56D, & + B1ADOF57D,B2ADOF57D,B3ADOF57D,B4ADOF57D,B5ADOF57D,B6ADOF57D,B7ADOF57D,B8ADOF57D,B9ADOF57D, & + B1ADOF58D,B2ADOF58D,B3ADOF58D,B4ADOF58D,B5ADOF58D,B6ADOF58D,B7ADOF58D,B8ADOF58D,B9ADOF58D, & + B1ADOF59D,B2ADOF59D,B3ADOF59D,B4ADOF59D,B5ADOF59D,B6ADOF59D,B7ADOF59D,B8ADOF59D,B9ADOF59D, & + B1ADOF60D,B2ADOF60D,B3ADOF60D,B4ADOF60D,B5ADOF60D,B6ADOF60D,B7ADOF60D,B8ADOF60D,B9ADOF60D, & + B1ADOF61D,B2ADOF61D,B3ADOF61D,B4ADOF61D,B5ADOF61D,B6ADOF61D,B7ADOF61D,B8ADOF61D,B9ADOF61D, & + B1ADOF62D,B2ADOF62D,B3ADOF62D,B4ADOF62D,B5ADOF62D,B6ADOF62D,B7ADOF62D,B8ADOF62D,B9ADOF62D, & + B1ADOF63D,B2ADOF63D,B3ADOF63D,B4ADOF63D,B5ADOF63D,B6ADOF63D,B7ADOF63D,B8ADOF63D,B9ADOF63D, & + B1ADOF64D,B2ADOF64D,B3ADOF64D,B4ADOF64D,B5ADOF64D,B6ADOF64D,B7ADOF64D,B8ADOF64D,B9ADOF64D, & + B1ADOF65D,B2ADOF65D,B3ADOF65D,B4ADOF65D,B5ADOF65D,B6ADOF65D,B7ADOF65D,B8ADOF65D,B9ADOF65D, & + B1ADOF66D,B2ADOF66D,B3ADOF66D,B4ADOF66D,B5ADOF66D,B6ADOF66D,B7ADOF66D,B8ADOF66D,B9ADOF66D, & + B1ADOF67D,B2ADOF67D,B3ADOF67D,B4ADOF67D,B5ADOF67D,B6ADOF67D,B7ADOF67D,B8ADOF67D,B9ADOF67D, & + B1ADOF68D,B2ADOF68D,B3ADOF68D,B4ADOF68D,B5ADOF68D,B6ADOF68D,B7ADOF68D,B8ADOF68D,B9ADOF68D, & + B1ADOF69D,B2ADOF69D,B3ADOF69D,B4ADOF69D,B5ADOF69D,B6ADOF69D,B7ADOF69D,B8ADOF69D,B9ADOF69D, & + B1ADOF70D,B2ADOF70D,B3ADOF70D,B4ADOF70D,B5ADOF70D,B6ADOF70D,B7ADOF70D,B8ADOF70D,B9ADOF70D, & + B1ADOF71D,B2ADOF71D,B3ADOF71D,B4ADOF71D,B5ADOF71D,B6ADOF71D,B7ADOF71D,B8ADOF71D,B9ADOF71D, & + B1ADOF72D,B2ADOF72D,B3ADOF72D,B4ADOF72D,B5ADOF72D,B6ADOF72D,B7ADOF72D,B8ADOF72D,B9ADOF72D, & + B1ADOF73D,B2ADOF73D,B3ADOF73D,B4ADOF73D,B5ADOF73D,B6ADOF73D,B7ADOF73D,B8ADOF73D,B9ADOF73D, & + B1ADOF74D,B2ADOF74D,B3ADOF74D,B4ADOF74D,B5ADOF74D,B6ADOF74D,B7ADOF74D,B8ADOF74D,B9ADOF74D, & + B1ADOF75D,B2ADOF75D,B3ADOF75D,B4ADOF75D,B5ADOF75D,B6ADOF75D,B7ADOF75D,B8ADOF75D,B9ADOF75D, & + B1ADOF76D,B2ADOF76D,B3ADOF76D,B4ADOF76D,B5ADOF76D,B6ADOF76D,B7ADOF76D,B8ADOF76D,B9ADOF76D, & + B1ADOF77D,B2ADOF77D,B3ADOF77D,B4ADOF77D,B5ADOF77D,B6ADOF77D,B7ADOF77D,B8ADOF77D,B9ADOF77D, & + B1ADOF78D,B2ADOF78D,B3ADOF78D,B4ADOF78D,B5ADOF78D,B6ADOF78D,B7ADOF78D,B8ADOF78D,B9ADOF78D, & + B1ADOF79D,B2ADOF79D,B3ADOF79D,B4ADOF79D,B5ADOF79D,B6ADOF79D,B7ADOF79D,B8ADOF79D,B9ADOF79D, & + B1ADOF80D,B2ADOF80D,B3ADOF80D,B4ADOF80D,B5ADOF80D,B6ADOF80D,B7ADOF80D,B8ADOF80D,B9ADOF80D, & + B1ADOF81D,B2ADOF81D,B3ADOF81D,B4ADOF81D,B5ADOF81D,B6ADOF81D,B7ADOF81D,B8ADOF81D,B9ADOF81D, & + B1ADOF82D,B2ADOF82D,B3ADOF82D,B4ADOF82D,B5ADOF82D,B6ADOF82D,B7ADOF82D,B8ADOF82D,B9ADOF82D, & + B1ADOF83D,B2ADOF83D,B3ADOF83D,B4ADOF83D,B5ADOF83D,B6ADOF83D,B7ADOF83D,B8ADOF83D,B9ADOF83D, & + B1ADOF84D,B2ADOF84D,B3ADOF84D,B4ADOF84D,B5ADOF84D,B6ADOF84D,B7ADOF84D,B8ADOF84D,B9ADOF84D, & + B1ADOF85D,B2ADOF85D,B3ADOF85D,B4ADOF85D,B5ADOF85D,B6ADOF85D,B7ADOF85D,B8ADOF85D,B9ADOF85D, & + B1ADOF86D,B2ADOF86D,B3ADOF86D,B4ADOF86D,B5ADOF86D,B6ADOF86D,B7ADOF86D,B8ADOF86D,B9ADOF86D, & + B1ADOF87D,B2ADOF87D,B3ADOF87D,B4ADOF87D,B5ADOF87D,B6ADOF87D,B7ADOF87D,B8ADOF87D,B9ADOF87D, & + B1ADOF88D,B2ADOF88D,B3ADOF88D,B4ADOF88D,B5ADOF88D,B6ADOF88D,B7ADOF88D,B8ADOF88D,B9ADOF88D, & + B1ADOF89D,B2ADOF89D,B3ADOF89D,B4ADOF89D,B5ADOF89D,B6ADOF89D,B7ADOF89D,B8ADOF89D,B9ADOF89D, & + B1ADOF90D,B2ADOF90D,B3ADOF90D,B4ADOF90D,B5ADOF90D,B6ADOF90D,B7ADOF90D,B8ADOF90D,B9ADOF90D, & + B1ADOF91D,B2ADOF91D,B3ADOF91D,B4ADOF91D,B5ADOF91D,B6ADOF91D,B7ADOF91D,B8ADOF91D,B9ADOF91D, & + B1ADOF92D,B2ADOF92D,B3ADOF92D,B4ADOF92D,B5ADOF92D,B6ADOF92D,B7ADOF92D,B8ADOF92D,B9ADOF92D, & + B1ADOF93D,B2ADOF93D,B3ADOF93D,B4ADOF93D,B5ADOF93D,B6ADOF93D,B7ADOF93D,B8ADOF93D,B9ADOF93D, & + B1ADOF94D,B2ADOF94D,B3ADOF94D,B4ADOF94D,B5ADOF94D,B6ADOF94D,B7ADOF94D,B8ADOF94D,B9ADOF94D, & + B1ADOF95D,B2ADOF95D,B3ADOF95D,B4ADOF95D,B5ADOF95D,B6ADOF95D,B7ADOF95D,B8ADOF95D,B9ADOF95D, & + B1ADOF96D,B2ADOF96D,B3ADOF96D,B4ADOF96D,B5ADOF96D,B6ADOF96D,B7ADOF96D,B8ADOF96D,B9ADOF96D, & + B1ADOF97D,B2ADOF97D,B3ADOF97D,B4ADOF97D,B5ADOF97D,B6ADOF97D,B7ADOF97D,B8ADOF97D,B9ADOF97D, & + B1ADOF98D,B2ADOF98D,B3ADOF98D,B4ADOF98D,B5ADOF98D,B6ADOF98D,B7ADOF98D,B8ADOF98D,B9ADOF98D, & + B1ADOF99D,B2ADOF99D,B3ADOF99D,B4ADOF99D,B5ADOF99D,B6ADOF99D,B7ADOF99D,B8ADOF99D,B9ADOF99D/), & (/9,99/))) - INTEGER, PARAMETER :: ADOFVel(99,9) = transpose(reshape((/B1ADOF1V,B1ADOF1V,B1ADOF1V,B1ADOF1V,B1ADOF1V,B1ADOF1V,B1ADOF1V,B1ADOF1V,B1ADOF1V, & - B1ADOF2V,B1ADOF2V,B1ADOF2V,B1ADOF2V,B1ADOF2V,B1ADOF2V,B1ADOF2V,B1ADOF2V,B1ADOF2V, & - B1ADOF3V,B1ADOF3V,B1ADOF3V,B1ADOF3V,B1ADOF3V,B1ADOF3V,B1ADOF3V,B1ADOF3V,B1ADOF3V, & - B1ADOF4V,B1ADOF4V,B1ADOF4V,B1ADOF4V,B1ADOF4V,B1ADOF4V,B1ADOF4V,B1ADOF4V,B1ADOF4V, & - B1ADOF5V,B1ADOF5V,B1ADOF5V,B1ADOF5V,B1ADOF5V,B1ADOF5V,B1ADOF5V,B1ADOF5V,B1ADOF5V, & - B1ADOF6V,B1ADOF6V,B1ADOF6V,B1ADOF6V,B1ADOF6V,B1ADOF6V,B1ADOF6V,B1ADOF6V,B1ADOF6V, & - B1ADOF7V,B1ADOF7V,B1ADOF7V,B1ADOF7V,B1ADOF7V,B1ADOF7V,B1ADOF7V,B1ADOF7V,B1ADOF7V, & - B1ADOF8V,B1ADOF8V,B1ADOF8V,B1ADOF8V,B1ADOF8V,B1ADOF8V,B1ADOF8V,B1ADOF8V,B1ADOF8V, & - B1ADOF9V,B1ADOF9V,B1ADOF9V,B1ADOF9V,B1ADOF9V,B1ADOF9V,B1ADOF9V,B1ADOF9V,B1ADOF9V, & - B1ADOF10V,B1ADOF10V,B1ADOF10V,B1ADOF10V,B1ADOF10V,B1ADOF10V,B1ADOF10V,B1ADOF10V,B1ADOF10V, & - B1ADOF11V,B1ADOF11V,B1ADOF11V,B1ADOF11V,B1ADOF11V,B1ADOF11V,B1ADOF11V,B1ADOF11V,B1ADOF11V, & - B1ADOF12V,B1ADOF12V,B1ADOF12V,B1ADOF12V,B1ADOF12V,B1ADOF12V,B1ADOF12V,B1ADOF12V,B1ADOF12V, & - B1ADOF13V,B1ADOF13V,B1ADOF13V,B1ADOF13V,B1ADOF13V,B1ADOF13V,B1ADOF13V,B1ADOF13V,B1ADOF13V, & - B1ADOF14V,B1ADOF14V,B1ADOF14V,B1ADOF14V,B1ADOF14V,B1ADOF14V,B1ADOF14V,B1ADOF14V,B1ADOF14V, & - B1ADOF15V,B1ADOF15V,B1ADOF15V,B1ADOF15V,B1ADOF15V,B1ADOF15V,B1ADOF15V,B1ADOF15V,B1ADOF15V, & - B1ADOF16V,B1ADOF16V,B1ADOF16V,B1ADOF16V,B1ADOF16V,B1ADOF16V,B1ADOF16V,B1ADOF16V,B1ADOF16V, & - B1ADOF17V,B1ADOF17V,B1ADOF17V,B1ADOF17V,B1ADOF17V,B1ADOF17V,B1ADOF17V,B1ADOF17V,B1ADOF17V, & - B1ADOF18V,B1ADOF18V,B1ADOF18V,B1ADOF18V,B1ADOF18V,B1ADOF18V,B1ADOF18V,B1ADOF18V,B1ADOF18V, & - B1ADOF19V,B1ADOF19V,B1ADOF19V,B1ADOF19V,B1ADOF19V,B1ADOF19V,B1ADOF19V,B1ADOF19V,B1ADOF19V, & - B1ADOF20V,B1ADOF20V,B1ADOF20V,B1ADOF20V,B1ADOF20V,B1ADOF20V,B1ADOF20V,B1ADOF20V,B1ADOF20V, & - B1ADOF21V,B1ADOF21V,B1ADOF21V,B1ADOF21V,B1ADOF21V,B1ADOF21V,B1ADOF21V,B1ADOF21V,B1ADOF21V, & - B1ADOF22V,B1ADOF22V,B1ADOF22V,B1ADOF22V,B1ADOF22V,B1ADOF22V,B1ADOF22V,B1ADOF22V,B1ADOF22V, & - B1ADOF23V,B1ADOF23V,B1ADOF23V,B1ADOF23V,B1ADOF23V,B1ADOF23V,B1ADOF23V,B1ADOF23V,B1ADOF23V, & - B1ADOF24V,B1ADOF24V,B1ADOF24V,B1ADOF24V,B1ADOF24V,B1ADOF24V,B1ADOF24V,B1ADOF24V,B1ADOF24V, & - B1ADOF25V,B1ADOF25V,B1ADOF25V,B1ADOF25V,B1ADOF25V,B1ADOF25V,B1ADOF25V,B1ADOF25V,B1ADOF25V, & - B1ADOF26V,B1ADOF26V,B1ADOF26V,B1ADOF26V,B1ADOF26V,B1ADOF26V,B1ADOF26V,B1ADOF26V,B1ADOF26V, & - B1ADOF27V,B1ADOF27V,B1ADOF27V,B1ADOF27V,B1ADOF27V,B1ADOF27V,B1ADOF27V,B1ADOF27V,B1ADOF27V, & - B1ADOF28V,B1ADOF28V,B1ADOF28V,B1ADOF28V,B1ADOF28V,B1ADOF28V,B1ADOF28V,B1ADOF28V,B1ADOF28V, & - B1ADOF29V,B1ADOF29V,B1ADOF29V,B1ADOF29V,B1ADOF29V,B1ADOF29V,B1ADOF29V,B1ADOF29V,B1ADOF29V, & - B1ADOF30V,B1ADOF30V,B1ADOF30V,B1ADOF30V,B1ADOF30V,B1ADOF30V,B1ADOF30V,B1ADOF30V,B1ADOF30V, & - B1ADOF31V,B1ADOF31V,B1ADOF31V,B1ADOF31V,B1ADOF31V,B1ADOF31V,B1ADOF31V,B1ADOF31V,B1ADOF31V, & - B1ADOF32V,B1ADOF32V,B1ADOF32V,B1ADOF32V,B1ADOF32V,B1ADOF32V,B1ADOF32V,B1ADOF32V,B1ADOF32V, & - B1ADOF33V,B1ADOF33V,B1ADOF33V,B1ADOF33V,B1ADOF33V,B1ADOF33V,B1ADOF33V,B1ADOF33V,B1ADOF33V, & - B1ADOF34V,B1ADOF34V,B1ADOF34V,B1ADOF34V,B1ADOF34V,B1ADOF34V,B1ADOF34V,B1ADOF34V,B1ADOF34V, & - B1ADOF35V,B1ADOF35V,B1ADOF35V,B1ADOF35V,B1ADOF35V,B1ADOF35V,B1ADOF35V,B1ADOF35V,B1ADOF35V, & - B1ADOF36V,B1ADOF36V,B1ADOF36V,B1ADOF36V,B1ADOF36V,B1ADOF36V,B1ADOF36V,B1ADOF36V,B1ADOF36V, & - B1ADOF37V,B1ADOF37V,B1ADOF37V,B1ADOF37V,B1ADOF37V,B1ADOF37V,B1ADOF37V,B1ADOF37V,B1ADOF37V, & - B1ADOF38V,B1ADOF38V,B1ADOF38V,B1ADOF38V,B1ADOF38V,B1ADOF38V,B1ADOF38V,B1ADOF38V,B1ADOF38V, & - B1ADOF39V,B1ADOF39V,B1ADOF39V,B1ADOF39V,B1ADOF39V,B1ADOF39V,B1ADOF39V,B1ADOF39V,B1ADOF39V, & - B1ADOF40V,B1ADOF40V,B1ADOF40V,B1ADOF40V,B1ADOF40V,B1ADOF40V,B1ADOF40V,B1ADOF40V,B1ADOF40V, & - B1ADOF41V,B1ADOF41V,B1ADOF41V,B1ADOF41V,B1ADOF41V,B1ADOF41V,B1ADOF41V,B1ADOF41V,B1ADOF41V, & - B1ADOF42V,B1ADOF42V,B1ADOF42V,B1ADOF42V,B1ADOF42V,B1ADOF42V,B1ADOF42V,B1ADOF42V,B1ADOF42V, & - B1ADOF43V,B1ADOF43V,B1ADOF43V,B1ADOF43V,B1ADOF43V,B1ADOF43V,B1ADOF43V,B1ADOF43V,B1ADOF43V, & - B1ADOF44V,B1ADOF44V,B1ADOF44V,B1ADOF44V,B1ADOF44V,B1ADOF44V,B1ADOF44V,B1ADOF44V,B1ADOF44V, & - B1ADOF45V,B1ADOF45V,B1ADOF45V,B1ADOF45V,B1ADOF45V,B1ADOF45V,B1ADOF45V,B1ADOF45V,B1ADOF45V, & - B1ADOF46V,B1ADOF46V,B1ADOF46V,B1ADOF46V,B1ADOF46V,B1ADOF46V,B1ADOF46V,B1ADOF46V,B1ADOF46V, & - B1ADOF47V,B1ADOF47V,B1ADOF47V,B1ADOF47V,B1ADOF47V,B1ADOF47V,B1ADOF47V,B1ADOF47V,B1ADOF47V, & - B1ADOF48V,B1ADOF48V,B1ADOF48V,B1ADOF48V,B1ADOF48V,B1ADOF48V,B1ADOF48V,B1ADOF48V,B1ADOF48V, & - B1ADOF49V,B1ADOF49V,B1ADOF49V,B1ADOF49V,B1ADOF49V,B1ADOF49V,B1ADOF49V,B1ADOF49V,B1ADOF49V, & - B1ADOF50V,B1ADOF50V,B1ADOF50V,B1ADOF50V,B1ADOF50V,B1ADOF50V,B1ADOF50V,B1ADOF50V,B1ADOF50V, & - B1ADOF51V,B1ADOF51V,B1ADOF51V,B1ADOF51V,B1ADOF51V,B1ADOF51V,B1ADOF51V,B1ADOF51V,B1ADOF51V, & - B1ADOF52V,B1ADOF52V,B1ADOF52V,B1ADOF52V,B1ADOF52V,B1ADOF52V,B1ADOF52V,B1ADOF52V,B1ADOF52V, & - B1ADOF53V,B1ADOF53V,B1ADOF53V,B1ADOF53V,B1ADOF53V,B1ADOF53V,B1ADOF53V,B1ADOF53V,B1ADOF53V, & - B1ADOF54V,B1ADOF54V,B1ADOF54V,B1ADOF54V,B1ADOF54V,B1ADOF54V,B1ADOF54V,B1ADOF54V,B1ADOF54V, & - B1ADOF55V,B1ADOF55V,B1ADOF55V,B1ADOF55V,B1ADOF55V,B1ADOF55V,B1ADOF55V,B1ADOF55V,B1ADOF55V, & - B1ADOF56V,B1ADOF56V,B1ADOF56V,B1ADOF56V,B1ADOF56V,B1ADOF56V,B1ADOF56V,B1ADOF56V,B1ADOF56V, & - B1ADOF57V,B1ADOF57V,B1ADOF57V,B1ADOF57V,B1ADOF57V,B1ADOF57V,B1ADOF57V,B1ADOF57V,B1ADOF57V, & - B1ADOF58V,B1ADOF58V,B1ADOF58V,B1ADOF58V,B1ADOF58V,B1ADOF58V,B1ADOF58V,B1ADOF58V,B1ADOF58V, & - B1ADOF59V,B1ADOF59V,B1ADOF59V,B1ADOF59V,B1ADOF59V,B1ADOF59V,B1ADOF59V,B1ADOF59V,B1ADOF59V, & - B1ADOF60V,B1ADOF60V,B1ADOF60V,B1ADOF60V,B1ADOF60V,B1ADOF60V,B1ADOF60V,B1ADOF60V,B1ADOF60V, & - B1ADOF61V,B1ADOF61V,B1ADOF61V,B1ADOF61V,B1ADOF61V,B1ADOF61V,B1ADOF61V,B1ADOF61V,B1ADOF61V, & - B1ADOF62V,B1ADOF62V,B1ADOF62V,B1ADOF62V,B1ADOF62V,B1ADOF62V,B1ADOF62V,B1ADOF62V,B1ADOF62V, & - B1ADOF63V,B1ADOF63V,B1ADOF63V,B1ADOF63V,B1ADOF63V,B1ADOF63V,B1ADOF63V,B1ADOF63V,B1ADOF63V, & - B1ADOF64V,B1ADOF64V,B1ADOF64V,B1ADOF64V,B1ADOF64V,B1ADOF64V,B1ADOF64V,B1ADOF64V,B1ADOF64V, & - B1ADOF65V,B1ADOF65V,B1ADOF65V,B1ADOF65V,B1ADOF65V,B1ADOF65V,B1ADOF65V,B1ADOF65V,B1ADOF65V, & - B1ADOF66V,B1ADOF66V,B1ADOF66V,B1ADOF66V,B1ADOF66V,B1ADOF66V,B1ADOF66V,B1ADOF66V,B1ADOF66V, & - B1ADOF67V,B1ADOF67V,B1ADOF67V,B1ADOF67V,B1ADOF67V,B1ADOF67V,B1ADOF67V,B1ADOF67V,B1ADOF67V, & - B1ADOF68V,B1ADOF68V,B1ADOF68V,B1ADOF68V,B1ADOF68V,B1ADOF68V,B1ADOF68V,B1ADOF68V,B1ADOF68V, & - B1ADOF69V,B1ADOF69V,B1ADOF69V,B1ADOF69V,B1ADOF69V,B1ADOF69V,B1ADOF69V,B1ADOF69V,B1ADOF69V, & - B1ADOF70V,B1ADOF70V,B1ADOF70V,B1ADOF70V,B1ADOF70V,B1ADOF70V,B1ADOF70V,B1ADOF70V,B1ADOF70V, & - B1ADOF71V,B1ADOF71V,B1ADOF71V,B1ADOF71V,B1ADOF71V,B1ADOF71V,B1ADOF71V,B1ADOF71V,B1ADOF71V, & - B1ADOF72V,B1ADOF72V,B1ADOF72V,B1ADOF72V,B1ADOF72V,B1ADOF72V,B1ADOF72V,B1ADOF72V,B1ADOF72V, & - B1ADOF73V,B1ADOF73V,B1ADOF73V,B1ADOF73V,B1ADOF73V,B1ADOF73V,B1ADOF73V,B1ADOF73V,B1ADOF73V, & - B1ADOF74V,B1ADOF74V,B1ADOF74V,B1ADOF74V,B1ADOF74V,B1ADOF74V,B1ADOF74V,B1ADOF74V,B1ADOF74V, & - B1ADOF75V,B1ADOF75V,B1ADOF75V,B1ADOF75V,B1ADOF75V,B1ADOF75V,B1ADOF75V,B1ADOF75V,B1ADOF75V, & - B1ADOF76V,B1ADOF76V,B1ADOF76V,B1ADOF76V,B1ADOF76V,B1ADOF76V,B1ADOF76V,B1ADOF76V,B1ADOF76V, & - B1ADOF77V,B1ADOF77V,B1ADOF77V,B1ADOF77V,B1ADOF77V,B1ADOF77V,B1ADOF77V,B1ADOF77V,B1ADOF77V, & - B1ADOF78V,B1ADOF78V,B1ADOF78V,B1ADOF78V,B1ADOF78V,B1ADOF78V,B1ADOF78V,B1ADOF78V,B1ADOF78V, & - B1ADOF79V,B1ADOF79V,B1ADOF79V,B1ADOF79V,B1ADOF79V,B1ADOF79V,B1ADOF79V,B1ADOF79V,B1ADOF79V, & - B1ADOF80V,B1ADOF80V,B1ADOF80V,B1ADOF80V,B1ADOF80V,B1ADOF80V,B1ADOF80V,B1ADOF80V,B1ADOF80V, & - B1ADOF81V,B1ADOF81V,B1ADOF81V,B1ADOF81V,B1ADOF81V,B1ADOF81V,B1ADOF81V,B1ADOF81V,B1ADOF81V, & - B1ADOF82V,B1ADOF82V,B1ADOF82V,B1ADOF82V,B1ADOF82V,B1ADOF82V,B1ADOF82V,B1ADOF82V,B1ADOF82V, & - B1ADOF83V,B1ADOF83V,B1ADOF83V,B1ADOF83V,B1ADOF83V,B1ADOF83V,B1ADOF83V,B1ADOF83V,B1ADOF83V, & - B1ADOF84V,B1ADOF84V,B1ADOF84V,B1ADOF84V,B1ADOF84V,B1ADOF84V,B1ADOF84V,B1ADOF84V,B1ADOF84V, & - B1ADOF85V,B1ADOF85V,B1ADOF85V,B1ADOF85V,B1ADOF85V,B1ADOF85V,B1ADOF85V,B1ADOF85V,B1ADOF85V, & - B1ADOF86V,B1ADOF86V,B1ADOF86V,B1ADOF86V,B1ADOF86V,B1ADOF86V,B1ADOF86V,B1ADOF86V,B1ADOF86V, & - B1ADOF87V,B1ADOF87V,B1ADOF87V,B1ADOF87V,B1ADOF87V,B1ADOF87V,B1ADOF87V,B1ADOF87V,B1ADOF87V, & - B1ADOF88V,B1ADOF88V,B1ADOF88V,B1ADOF88V,B1ADOF88V,B1ADOF88V,B1ADOF88V,B1ADOF88V,B1ADOF88V, & - B1ADOF89V,B1ADOF89V,B1ADOF89V,B1ADOF89V,B1ADOF89V,B1ADOF89V,B1ADOF89V,B1ADOF89V,B1ADOF89V, & - B1ADOF90V,B1ADOF90V,B1ADOF90V,B1ADOF90V,B1ADOF90V,B1ADOF90V,B1ADOF90V,B1ADOF90V,B1ADOF90V, & - B1ADOF91V,B1ADOF91V,B1ADOF91V,B1ADOF91V,B1ADOF91V,B1ADOF91V,B1ADOF91V,B1ADOF91V,B1ADOF91V, & - B1ADOF92V,B1ADOF92V,B1ADOF92V,B1ADOF92V,B1ADOF92V,B1ADOF92V,B1ADOF92V,B1ADOF92V,B1ADOF92V, & - B1ADOF93V,B1ADOF93V,B1ADOF93V,B1ADOF93V,B1ADOF93V,B1ADOF93V,B1ADOF93V,B1ADOF93V,B1ADOF93V, & - B1ADOF94V,B1ADOF94V,B1ADOF94V,B1ADOF94V,B1ADOF94V,B1ADOF94V,B1ADOF94V,B1ADOF94V,B1ADOF94V, & - B1ADOF95V,B1ADOF95V,B1ADOF95V,B1ADOF95V,B1ADOF95V,B1ADOF95V,B1ADOF95V,B1ADOF95V,B1ADOF95V, & - B1ADOF96V,B1ADOF96V,B1ADOF96V,B1ADOF96V,B1ADOF96V,B1ADOF96V,B1ADOF96V,B1ADOF96V,B1ADOF96V, & - B1ADOF97V,B1ADOF97V,B1ADOF97V,B1ADOF97V,B1ADOF97V,B1ADOF97V,B1ADOF97V,B1ADOF97V,B1ADOF97V, & - B1ADOF98V,B1ADOF98V,B1ADOF98V,B1ADOF98V,B1ADOF98V,B1ADOF98V,B1ADOF98V,B1ADOF98V,B1ADOF98V, & - B1ADOF99V,B1ADOF99V,B1ADOF99V,B1ADOF99V,B1ADOF99V,B1ADOF99V,B1ADOF99V,B1ADOF99V,B1ADOF99V/), & + INTEGER, PARAMETER :: ADOFVel(99,9) = transpose(reshape((/B1ADOF1V,B2ADOF1V,B3ADOF1V,B4ADOF1V,B5ADOF1V,B6ADOF1V,B7ADOF1V,B8ADOF1V,B9ADOF1V, & + B1ADOF2V,B2ADOF2V,B3ADOF2V,B4ADOF2V,B5ADOF2V,B6ADOF2V,B7ADOF2V,B8ADOF2V,B9ADOF2V, & + B1ADOF3V,B2ADOF3V,B3ADOF3V,B4ADOF3V,B5ADOF3V,B6ADOF3V,B7ADOF3V,B8ADOF3V,B9ADOF3V, & + B1ADOF4V,B2ADOF4V,B3ADOF4V,B4ADOF4V,B5ADOF4V,B6ADOF4V,B7ADOF4V,B8ADOF4V,B9ADOF4V, & + B1ADOF5V,B2ADOF5V,B3ADOF5V,B4ADOF5V,B5ADOF5V,B6ADOF5V,B7ADOF5V,B8ADOF5V,B9ADOF5V, & + B1ADOF6V,B2ADOF6V,B3ADOF6V,B4ADOF6V,B5ADOF6V,B6ADOF6V,B7ADOF6V,B8ADOF6V,B9ADOF6V, & + B1ADOF7V,B2ADOF7V,B3ADOF7V,B4ADOF7V,B5ADOF7V,B6ADOF7V,B7ADOF7V,B8ADOF7V,B9ADOF7V, & + B1ADOF8V,B2ADOF8V,B3ADOF8V,B4ADOF8V,B5ADOF8V,B6ADOF8V,B7ADOF8V,B8ADOF8V,B9ADOF8V, & + B1ADOF9V,B2ADOF9V,B3ADOF9V,B4ADOF9V,B5ADOF9V,B6ADOF9V,B7ADOF9V,B8ADOF9V,B9ADOF9V, & + B1ADOF10V,B2ADOF10V,B3ADOF10V,B4ADOF10V,B5ADOF10V,B6ADOF10V,B7ADOF10V,B8ADOF10V,B9ADOF10V, & + B1ADOF11V,B2ADOF11V,B3ADOF11V,B4ADOF11V,B5ADOF11V,B6ADOF11V,B7ADOF11V,B8ADOF11V,B9ADOF11V, & + B1ADOF12V,B2ADOF12V,B3ADOF12V,B4ADOF12V,B5ADOF12V,B6ADOF12V,B7ADOF12V,B8ADOF12V,B9ADOF12V, & + B1ADOF13V,B2ADOF13V,B3ADOF13V,B4ADOF13V,B5ADOF13V,B6ADOF13V,B7ADOF13V,B8ADOF13V,B9ADOF13V, & + B1ADOF14V,B2ADOF14V,B3ADOF14V,B4ADOF14V,B5ADOF14V,B6ADOF14V,B7ADOF14V,B8ADOF14V,B9ADOF14V, & + B1ADOF15V,B2ADOF15V,B3ADOF15V,B4ADOF15V,B5ADOF15V,B6ADOF15V,B7ADOF15V,B8ADOF15V,B9ADOF15V, & + B1ADOF16V,B2ADOF16V,B3ADOF16V,B4ADOF16V,B5ADOF16V,B6ADOF16V,B7ADOF16V,B8ADOF16V,B9ADOF16V, & + B1ADOF17V,B2ADOF17V,B3ADOF17V,B4ADOF17V,B5ADOF17V,B6ADOF17V,B7ADOF17V,B8ADOF17V,B9ADOF17V, & + B1ADOF18V,B2ADOF18V,B3ADOF18V,B4ADOF18V,B5ADOF18V,B6ADOF18V,B7ADOF18V,B8ADOF18V,B9ADOF18V, & + B1ADOF19V,B2ADOF19V,B3ADOF19V,B4ADOF19V,B5ADOF19V,B6ADOF19V,B7ADOF19V,B8ADOF19V,B9ADOF19V, & + B1ADOF20V,B2ADOF20V,B3ADOF20V,B4ADOF20V,B5ADOF20V,B6ADOF20V,B7ADOF20V,B8ADOF20V,B9ADOF20V, & + B1ADOF21V,B2ADOF21V,B3ADOF21V,B4ADOF21V,B5ADOF21V,B6ADOF21V,B7ADOF21V,B8ADOF21V,B9ADOF21V, & + B1ADOF22V,B2ADOF22V,B3ADOF22V,B4ADOF22V,B5ADOF22V,B6ADOF22V,B7ADOF22V,B8ADOF22V,B9ADOF22V, & + B1ADOF23V,B2ADOF23V,B3ADOF23V,B4ADOF23V,B5ADOF23V,B6ADOF23V,B7ADOF23V,B8ADOF23V,B9ADOF23V, & + B1ADOF24V,B2ADOF24V,B3ADOF24V,B4ADOF24V,B5ADOF24V,B6ADOF24V,B7ADOF24V,B8ADOF24V,B9ADOF24V, & + B1ADOF25V,B2ADOF25V,B3ADOF25V,B4ADOF25V,B5ADOF25V,B6ADOF25V,B7ADOF25V,B8ADOF25V,B9ADOF25V, & + B1ADOF26V,B2ADOF26V,B3ADOF26V,B4ADOF26V,B5ADOF26V,B6ADOF26V,B7ADOF26V,B8ADOF26V,B9ADOF26V, & + B1ADOF27V,B2ADOF27V,B3ADOF27V,B4ADOF27V,B5ADOF27V,B6ADOF27V,B7ADOF27V,B8ADOF27V,B9ADOF27V, & + B1ADOF28V,B2ADOF28V,B3ADOF28V,B4ADOF28V,B5ADOF28V,B6ADOF28V,B7ADOF28V,B8ADOF28V,B9ADOF28V, & + B1ADOF29V,B2ADOF29V,B3ADOF29V,B4ADOF29V,B5ADOF29V,B6ADOF29V,B7ADOF29V,B8ADOF29V,B9ADOF29V, & + B1ADOF30V,B2ADOF30V,B3ADOF30V,B4ADOF30V,B5ADOF30V,B6ADOF30V,B7ADOF30V,B8ADOF30V,B9ADOF30V, & + B1ADOF31V,B2ADOF31V,B3ADOF31V,B4ADOF31V,B5ADOF31V,B6ADOF31V,B7ADOF31V,B8ADOF31V,B9ADOF31V, & + B1ADOF32V,B2ADOF32V,B3ADOF32V,B4ADOF32V,B5ADOF32V,B6ADOF32V,B7ADOF32V,B8ADOF32V,B9ADOF32V, & + B1ADOF33V,B2ADOF33V,B3ADOF33V,B4ADOF33V,B5ADOF33V,B6ADOF33V,B7ADOF33V,B8ADOF33V,B9ADOF33V, & + B1ADOF34V,B2ADOF34V,B3ADOF34V,B4ADOF34V,B5ADOF34V,B6ADOF34V,B7ADOF34V,B8ADOF34V,B9ADOF34V, & + B1ADOF35V,B2ADOF35V,B3ADOF35V,B4ADOF35V,B5ADOF35V,B6ADOF35V,B7ADOF35V,B8ADOF35V,B9ADOF35V, & + B1ADOF36V,B2ADOF36V,B3ADOF36V,B4ADOF36V,B5ADOF36V,B6ADOF36V,B7ADOF36V,B8ADOF36V,B9ADOF36V, & + B1ADOF37V,B2ADOF37V,B3ADOF37V,B4ADOF37V,B5ADOF37V,B6ADOF37V,B7ADOF37V,B8ADOF37V,B9ADOF37V, & + B1ADOF38V,B2ADOF38V,B3ADOF38V,B4ADOF38V,B5ADOF38V,B6ADOF38V,B7ADOF38V,B8ADOF38V,B9ADOF38V, & + B1ADOF39V,B2ADOF39V,B3ADOF39V,B4ADOF39V,B5ADOF39V,B6ADOF39V,B7ADOF39V,B8ADOF39V,B9ADOF39V, & + B1ADOF40V,B2ADOF40V,B3ADOF40V,B4ADOF40V,B5ADOF40V,B6ADOF40V,B7ADOF40V,B8ADOF40V,B9ADOF40V, & + B1ADOF41V,B2ADOF41V,B3ADOF41V,B4ADOF41V,B5ADOF41V,B6ADOF41V,B7ADOF41V,B8ADOF41V,B9ADOF41V, & + B1ADOF42V,B2ADOF42V,B3ADOF42V,B4ADOF42V,B5ADOF42V,B6ADOF42V,B7ADOF42V,B8ADOF42V,B9ADOF42V, & + B1ADOF43V,B2ADOF43V,B3ADOF43V,B4ADOF43V,B5ADOF43V,B6ADOF43V,B7ADOF43V,B8ADOF43V,B9ADOF43V, & + B1ADOF44V,B2ADOF44V,B3ADOF44V,B4ADOF44V,B5ADOF44V,B6ADOF44V,B7ADOF44V,B8ADOF44V,B9ADOF44V, & + B1ADOF45V,B2ADOF45V,B3ADOF45V,B4ADOF45V,B5ADOF45V,B6ADOF45V,B7ADOF45V,B8ADOF45V,B9ADOF45V, & + B1ADOF46V,B2ADOF46V,B3ADOF46V,B4ADOF46V,B5ADOF46V,B6ADOF46V,B7ADOF46V,B8ADOF46V,B9ADOF46V, & + B1ADOF47V,B2ADOF47V,B3ADOF47V,B4ADOF47V,B5ADOF47V,B6ADOF47V,B7ADOF47V,B8ADOF47V,B9ADOF47V, & + B1ADOF48V,B2ADOF48V,B3ADOF48V,B4ADOF48V,B5ADOF48V,B6ADOF48V,B7ADOF48V,B8ADOF48V,B9ADOF48V, & + B1ADOF49V,B2ADOF49V,B3ADOF49V,B4ADOF49V,B5ADOF49V,B6ADOF49V,B7ADOF49V,B8ADOF49V,B9ADOF49V, & + B1ADOF50V,B2ADOF50V,B3ADOF50V,B4ADOF50V,B5ADOF50V,B6ADOF50V,B7ADOF50V,B8ADOF50V,B9ADOF50V, & + B1ADOF51V,B2ADOF51V,B3ADOF51V,B4ADOF51V,B5ADOF51V,B6ADOF51V,B7ADOF51V,B8ADOF51V,B9ADOF51V, & + B1ADOF52V,B2ADOF52V,B3ADOF52V,B4ADOF52V,B5ADOF52V,B6ADOF52V,B7ADOF52V,B8ADOF52V,B9ADOF52V, & + B1ADOF53V,B2ADOF53V,B3ADOF53V,B4ADOF53V,B5ADOF53V,B6ADOF53V,B7ADOF53V,B8ADOF53V,B9ADOF53V, & + B1ADOF54V,B2ADOF54V,B3ADOF54V,B4ADOF54V,B5ADOF54V,B6ADOF54V,B7ADOF54V,B8ADOF54V,B9ADOF54V, & + B1ADOF55V,B2ADOF55V,B3ADOF55V,B4ADOF55V,B5ADOF55V,B6ADOF55V,B7ADOF55V,B8ADOF55V,B9ADOF55V, & + B1ADOF56V,B2ADOF56V,B3ADOF56V,B4ADOF56V,B5ADOF56V,B6ADOF56V,B7ADOF56V,B8ADOF56V,B9ADOF56V, & + B1ADOF57V,B2ADOF57V,B3ADOF57V,B4ADOF57V,B5ADOF57V,B6ADOF57V,B7ADOF57V,B8ADOF57V,B9ADOF57V, & + B1ADOF58V,B2ADOF58V,B3ADOF58V,B4ADOF58V,B5ADOF58V,B6ADOF58V,B7ADOF58V,B8ADOF58V,B9ADOF58V, & + B1ADOF59V,B2ADOF59V,B3ADOF59V,B4ADOF59V,B5ADOF59V,B6ADOF59V,B7ADOF59V,B8ADOF59V,B9ADOF59V, & + B1ADOF60V,B2ADOF60V,B3ADOF60V,B4ADOF60V,B5ADOF60V,B6ADOF60V,B7ADOF60V,B8ADOF60V,B9ADOF60V, & + B1ADOF61V,B2ADOF61V,B3ADOF61V,B4ADOF61V,B5ADOF61V,B6ADOF61V,B7ADOF61V,B8ADOF61V,B9ADOF61V, & + B1ADOF62V,B2ADOF62V,B3ADOF62V,B4ADOF62V,B5ADOF62V,B6ADOF62V,B7ADOF62V,B8ADOF62V,B9ADOF62V, & + B1ADOF63V,B2ADOF63V,B3ADOF63V,B4ADOF63V,B5ADOF63V,B6ADOF63V,B7ADOF63V,B8ADOF63V,B9ADOF63V, & + B1ADOF64V,B2ADOF64V,B3ADOF64V,B4ADOF64V,B5ADOF64V,B6ADOF64V,B7ADOF64V,B8ADOF64V,B9ADOF64V, & + B1ADOF65V,B2ADOF65V,B3ADOF65V,B4ADOF65V,B5ADOF65V,B6ADOF65V,B7ADOF65V,B8ADOF65V,B9ADOF65V, & + B1ADOF66V,B2ADOF66V,B3ADOF66V,B4ADOF66V,B5ADOF66V,B6ADOF66V,B7ADOF66V,B8ADOF66V,B9ADOF66V, & + B1ADOF67V,B2ADOF67V,B3ADOF67V,B4ADOF67V,B5ADOF67V,B6ADOF67V,B7ADOF67V,B8ADOF67V,B9ADOF67V, & + B1ADOF68V,B2ADOF68V,B3ADOF68V,B4ADOF68V,B5ADOF68V,B6ADOF68V,B7ADOF68V,B8ADOF68V,B9ADOF68V, & + B1ADOF69V,B2ADOF69V,B3ADOF69V,B4ADOF69V,B5ADOF69V,B6ADOF69V,B7ADOF69V,B8ADOF69V,B9ADOF69V, & + B1ADOF70V,B2ADOF70V,B3ADOF70V,B4ADOF70V,B5ADOF70V,B6ADOF70V,B7ADOF70V,B8ADOF70V,B9ADOF70V, & + B1ADOF71V,B2ADOF71V,B3ADOF71V,B4ADOF71V,B5ADOF71V,B6ADOF71V,B7ADOF71V,B8ADOF71V,B9ADOF71V, & + B1ADOF72V,B2ADOF72V,B3ADOF72V,B4ADOF72V,B5ADOF72V,B6ADOF72V,B7ADOF72V,B8ADOF72V,B9ADOF72V, & + B1ADOF73V,B2ADOF73V,B3ADOF73V,B4ADOF73V,B5ADOF73V,B6ADOF73V,B7ADOF73V,B8ADOF73V,B9ADOF73V, & + B1ADOF74V,B2ADOF74V,B3ADOF74V,B4ADOF74V,B5ADOF74V,B6ADOF74V,B7ADOF74V,B8ADOF74V,B9ADOF74V, & + B1ADOF75V,B2ADOF75V,B3ADOF75V,B4ADOF75V,B5ADOF75V,B6ADOF75V,B7ADOF75V,B8ADOF75V,B9ADOF75V, & + B1ADOF76V,B2ADOF76V,B3ADOF76V,B4ADOF76V,B5ADOF76V,B6ADOF76V,B7ADOF76V,B8ADOF76V,B9ADOF76V, & + B1ADOF77V,B2ADOF77V,B3ADOF77V,B4ADOF77V,B5ADOF77V,B6ADOF77V,B7ADOF77V,B8ADOF77V,B9ADOF77V, & + B1ADOF78V,B2ADOF78V,B3ADOF78V,B4ADOF78V,B5ADOF78V,B6ADOF78V,B7ADOF78V,B8ADOF78V,B9ADOF78V, & + B1ADOF79V,B2ADOF79V,B3ADOF79V,B4ADOF79V,B5ADOF79V,B6ADOF79V,B7ADOF79V,B8ADOF79V,B9ADOF79V, & + B1ADOF80V,B2ADOF80V,B3ADOF80V,B4ADOF80V,B5ADOF80V,B6ADOF80V,B7ADOF80V,B8ADOF80V,B9ADOF80V, & + B1ADOF81V,B2ADOF81V,B3ADOF81V,B4ADOF81V,B5ADOF81V,B6ADOF81V,B7ADOF81V,B8ADOF81V,B9ADOF81V, & + B1ADOF82V,B2ADOF82V,B3ADOF82V,B4ADOF82V,B5ADOF82V,B6ADOF82V,B7ADOF82V,B8ADOF82V,B9ADOF82V, & + B1ADOF83V,B2ADOF83V,B3ADOF83V,B4ADOF83V,B5ADOF83V,B6ADOF83V,B7ADOF83V,B8ADOF83V,B9ADOF83V, & + B1ADOF84V,B2ADOF84V,B3ADOF84V,B4ADOF84V,B5ADOF84V,B6ADOF84V,B7ADOF84V,B8ADOF84V,B9ADOF84V, & + B1ADOF85V,B2ADOF85V,B3ADOF85V,B4ADOF85V,B5ADOF85V,B6ADOF85V,B7ADOF85V,B8ADOF85V,B9ADOF85V, & + B1ADOF86V,B2ADOF86V,B3ADOF86V,B4ADOF86V,B5ADOF86V,B6ADOF86V,B7ADOF86V,B8ADOF86V,B9ADOF86V, & + B1ADOF87V,B2ADOF87V,B3ADOF87V,B4ADOF87V,B5ADOF87V,B6ADOF87V,B7ADOF87V,B8ADOF87V,B9ADOF87V, & + B1ADOF88V,B2ADOF88V,B3ADOF88V,B4ADOF88V,B5ADOF88V,B6ADOF88V,B7ADOF88V,B8ADOF88V,B9ADOF88V, & + B1ADOF89V,B2ADOF89V,B3ADOF89V,B4ADOF89V,B5ADOF89V,B6ADOF89V,B7ADOF89V,B8ADOF89V,B9ADOF89V, & + B1ADOF90V,B2ADOF90V,B3ADOF90V,B4ADOF90V,B5ADOF90V,B6ADOF90V,B7ADOF90V,B8ADOF90V,B9ADOF90V, & + B1ADOF91V,B2ADOF91V,B3ADOF91V,B4ADOF91V,B5ADOF91V,B6ADOF91V,B7ADOF91V,B8ADOF91V,B9ADOF91V, & + B1ADOF92V,B2ADOF92V,B3ADOF92V,B4ADOF92V,B5ADOF92V,B6ADOF92V,B7ADOF92V,B8ADOF92V,B9ADOF92V, & + B1ADOF93V,B2ADOF93V,B3ADOF93V,B4ADOF93V,B5ADOF93V,B6ADOF93V,B7ADOF93V,B8ADOF93V,B9ADOF93V, & + B1ADOF94V,B2ADOF94V,B3ADOF94V,B4ADOF94V,B5ADOF94V,B6ADOF94V,B7ADOF94V,B8ADOF94V,B9ADOF94V, & + B1ADOF95V,B2ADOF95V,B3ADOF95V,B4ADOF95V,B5ADOF95V,B6ADOF95V,B7ADOF95V,B8ADOF95V,B9ADOF95V, & + B1ADOF96V,B2ADOF96V,B3ADOF96V,B4ADOF96V,B5ADOF96V,B6ADOF96V,B7ADOF96V,B8ADOF96V,B9ADOF96V, & + B1ADOF97V,B2ADOF97V,B3ADOF97V,B4ADOF97V,B5ADOF97V,B6ADOF97V,B7ADOF97V,B8ADOF97V,B9ADOF97V, & + B1ADOF98V,B2ADOF98V,B3ADOF98V,B4ADOF98V,B5ADOF98V,B6ADOF98V,B7ADOF98V,B8ADOF98V,B9ADOF98V, & + B1ADOF99V,B2ADOF99V,B3ADOF99V,B4ADOF99V,B5ADOF99V,B6ADOF99V,B7ADOF99V,B8ADOF99V,B9ADOF99V/), & (/9,99/))) - INTEGER, PARAMETER :: ADOFAcc(99,9) = transpose(reshape((/B1ADOF1A,B1ADOF1A,B1ADOF1A,B1ADOF1A,B1ADOF1A,B1ADOF1A,B1ADOF1A,B1ADOF1A,B1ADOF1A, & - B1ADOF2A,B1ADOF2A,B1ADOF2A,B1ADOF2A,B1ADOF2A,B1ADOF2A,B1ADOF2A,B1ADOF2A,B1ADOF2A, & - B1ADOF3A,B1ADOF3A,B1ADOF3A,B1ADOF3A,B1ADOF3A,B1ADOF3A,B1ADOF3A,B1ADOF3A,B1ADOF3A, & - B1ADOF4A,B1ADOF4A,B1ADOF4A,B1ADOF4A,B1ADOF4A,B1ADOF4A,B1ADOF4A,B1ADOF4A,B1ADOF4A, & - B1ADOF5A,B1ADOF5A,B1ADOF5A,B1ADOF5A,B1ADOF5A,B1ADOF5A,B1ADOF5A,B1ADOF5A,B1ADOF5A, & - B1ADOF6A,B1ADOF6A,B1ADOF6A,B1ADOF6A,B1ADOF6A,B1ADOF6A,B1ADOF6A,B1ADOF6A,B1ADOF6A, & - B1ADOF7A,B1ADOF7A,B1ADOF7A,B1ADOF7A,B1ADOF7A,B1ADOF7A,B1ADOF7A,B1ADOF7A,B1ADOF7A, & - B1ADOF8A,B1ADOF8A,B1ADOF8A,B1ADOF8A,B1ADOF8A,B1ADOF8A,B1ADOF8A,B1ADOF8A,B1ADOF8A, & - B1ADOF9A,B1ADOF9A,B1ADOF9A,B1ADOF9A,B1ADOF9A,B1ADOF9A,B1ADOF9A,B1ADOF9A,B1ADOF9A, & - B1ADOF10A,B1ADOF10A,B1ADOF10A,B1ADOF10A,B1ADOF10A,B1ADOF10A,B1ADOF10A,B1ADOF10A,B1ADOF10A, & - B1ADOF11A,B1ADOF11A,B1ADOF11A,B1ADOF11A,B1ADOF11A,B1ADOF11A,B1ADOF11A,B1ADOF11A,B1ADOF11A, & - B1ADOF12A,B1ADOF12A,B1ADOF12A,B1ADOF12A,B1ADOF12A,B1ADOF12A,B1ADOF12A,B1ADOF12A,B1ADOF12A, & - B1ADOF13A,B1ADOF13A,B1ADOF13A,B1ADOF13A,B1ADOF13A,B1ADOF13A,B1ADOF13A,B1ADOF13A,B1ADOF13A, & - B1ADOF14A,B1ADOF14A,B1ADOF14A,B1ADOF14A,B1ADOF14A,B1ADOF14A,B1ADOF14A,B1ADOF14A,B1ADOF14A, & - B1ADOF15A,B1ADOF15A,B1ADOF15A,B1ADOF15A,B1ADOF15A,B1ADOF15A,B1ADOF15A,B1ADOF15A,B1ADOF15A, & - B1ADOF16A,B1ADOF16A,B1ADOF16A,B1ADOF16A,B1ADOF16A,B1ADOF16A,B1ADOF16A,B1ADOF16A,B1ADOF16A, & - B1ADOF17A,B1ADOF17A,B1ADOF17A,B1ADOF17A,B1ADOF17A,B1ADOF17A,B1ADOF17A,B1ADOF17A,B1ADOF17A, & - B1ADOF18A,B1ADOF18A,B1ADOF18A,B1ADOF18A,B1ADOF18A,B1ADOF18A,B1ADOF18A,B1ADOF18A,B1ADOF18A, & - B1ADOF19A,B1ADOF19A,B1ADOF19A,B1ADOF19A,B1ADOF19A,B1ADOF19A,B1ADOF19A,B1ADOF19A,B1ADOF19A, & - B1ADOF20A,B1ADOF20A,B1ADOF20A,B1ADOF20A,B1ADOF20A,B1ADOF20A,B1ADOF20A,B1ADOF20A,B1ADOF20A, & - B1ADOF21A,B1ADOF21A,B1ADOF21A,B1ADOF21A,B1ADOF21A,B1ADOF21A,B1ADOF21A,B1ADOF21A,B1ADOF21A, & - B1ADOF22A,B1ADOF22A,B1ADOF22A,B1ADOF22A,B1ADOF22A,B1ADOF22A,B1ADOF22A,B1ADOF22A,B1ADOF22A, & - B1ADOF23A,B1ADOF23A,B1ADOF23A,B1ADOF23A,B1ADOF23A,B1ADOF23A,B1ADOF23A,B1ADOF23A,B1ADOF23A, & - B1ADOF24A,B1ADOF24A,B1ADOF24A,B1ADOF24A,B1ADOF24A,B1ADOF24A,B1ADOF24A,B1ADOF24A,B1ADOF24A, & - B1ADOF25A,B1ADOF25A,B1ADOF25A,B1ADOF25A,B1ADOF25A,B1ADOF25A,B1ADOF25A,B1ADOF25A,B1ADOF25A, & - B1ADOF26A,B1ADOF26A,B1ADOF26A,B1ADOF26A,B1ADOF26A,B1ADOF26A,B1ADOF26A,B1ADOF26A,B1ADOF26A, & - B1ADOF27A,B1ADOF27A,B1ADOF27A,B1ADOF27A,B1ADOF27A,B1ADOF27A,B1ADOF27A,B1ADOF27A,B1ADOF27A, & - B1ADOF28A,B1ADOF28A,B1ADOF28A,B1ADOF28A,B1ADOF28A,B1ADOF28A,B1ADOF28A,B1ADOF28A,B1ADOF28A, & - B1ADOF29A,B1ADOF29A,B1ADOF29A,B1ADOF29A,B1ADOF29A,B1ADOF29A,B1ADOF29A,B1ADOF29A,B1ADOF29A, & - B1ADOF30A,B1ADOF30A,B1ADOF30A,B1ADOF30A,B1ADOF30A,B1ADOF30A,B1ADOF30A,B1ADOF30A,B1ADOF30A, & - B1ADOF31A,B1ADOF31A,B1ADOF31A,B1ADOF31A,B1ADOF31A,B1ADOF31A,B1ADOF31A,B1ADOF31A,B1ADOF31A, & - B1ADOF32A,B1ADOF32A,B1ADOF32A,B1ADOF32A,B1ADOF32A,B1ADOF32A,B1ADOF32A,B1ADOF32A,B1ADOF32A, & - B1ADOF33A,B1ADOF33A,B1ADOF33A,B1ADOF33A,B1ADOF33A,B1ADOF33A,B1ADOF33A,B1ADOF33A,B1ADOF33A, & - B1ADOF34A,B1ADOF34A,B1ADOF34A,B1ADOF34A,B1ADOF34A,B1ADOF34A,B1ADOF34A,B1ADOF34A,B1ADOF34A, & - B1ADOF35A,B1ADOF35A,B1ADOF35A,B1ADOF35A,B1ADOF35A,B1ADOF35A,B1ADOF35A,B1ADOF35A,B1ADOF35A, & - B1ADOF36A,B1ADOF36A,B1ADOF36A,B1ADOF36A,B1ADOF36A,B1ADOF36A,B1ADOF36A,B1ADOF36A,B1ADOF36A, & - B1ADOF37A,B1ADOF37A,B1ADOF37A,B1ADOF37A,B1ADOF37A,B1ADOF37A,B1ADOF37A,B1ADOF37A,B1ADOF37A, & - B1ADOF38A,B1ADOF38A,B1ADOF38A,B1ADOF38A,B1ADOF38A,B1ADOF38A,B1ADOF38A,B1ADOF38A,B1ADOF38A, & - B1ADOF39A,B1ADOF39A,B1ADOF39A,B1ADOF39A,B1ADOF39A,B1ADOF39A,B1ADOF39A,B1ADOF39A,B1ADOF39A, & - B1ADOF40A,B1ADOF40A,B1ADOF40A,B1ADOF40A,B1ADOF40A,B1ADOF40A,B1ADOF40A,B1ADOF40A,B1ADOF40A, & - B1ADOF41A,B1ADOF41A,B1ADOF41A,B1ADOF41A,B1ADOF41A,B1ADOF41A,B1ADOF41A,B1ADOF41A,B1ADOF41A, & - B1ADOF42A,B1ADOF42A,B1ADOF42A,B1ADOF42A,B1ADOF42A,B1ADOF42A,B1ADOF42A,B1ADOF42A,B1ADOF42A, & - B1ADOF43A,B1ADOF43A,B1ADOF43A,B1ADOF43A,B1ADOF43A,B1ADOF43A,B1ADOF43A,B1ADOF43A,B1ADOF43A, & - B1ADOF44A,B1ADOF44A,B1ADOF44A,B1ADOF44A,B1ADOF44A,B1ADOF44A,B1ADOF44A,B1ADOF44A,B1ADOF44A, & - B1ADOF45A,B1ADOF45A,B1ADOF45A,B1ADOF45A,B1ADOF45A,B1ADOF45A,B1ADOF45A,B1ADOF45A,B1ADOF45A, & - B1ADOF46A,B1ADOF46A,B1ADOF46A,B1ADOF46A,B1ADOF46A,B1ADOF46A,B1ADOF46A,B1ADOF46A,B1ADOF46A, & - B1ADOF47A,B1ADOF47A,B1ADOF47A,B1ADOF47A,B1ADOF47A,B1ADOF47A,B1ADOF47A,B1ADOF47A,B1ADOF47A, & - B1ADOF48A,B1ADOF48A,B1ADOF48A,B1ADOF48A,B1ADOF48A,B1ADOF48A,B1ADOF48A,B1ADOF48A,B1ADOF48A, & - B1ADOF49A,B1ADOF49A,B1ADOF49A,B1ADOF49A,B1ADOF49A,B1ADOF49A,B1ADOF49A,B1ADOF49A,B1ADOF49A, & - B1ADOF50A,B1ADOF50A,B1ADOF50A,B1ADOF50A,B1ADOF50A,B1ADOF50A,B1ADOF50A,B1ADOF50A,B1ADOF50A, & - B1ADOF51A,B1ADOF51A,B1ADOF51A,B1ADOF51A,B1ADOF51A,B1ADOF51A,B1ADOF51A,B1ADOF51A,B1ADOF51A, & - B1ADOF52A,B1ADOF52A,B1ADOF52A,B1ADOF52A,B1ADOF52A,B1ADOF52A,B1ADOF52A,B1ADOF52A,B1ADOF52A, & - B1ADOF53A,B1ADOF53A,B1ADOF53A,B1ADOF53A,B1ADOF53A,B1ADOF53A,B1ADOF53A,B1ADOF53A,B1ADOF53A, & - B1ADOF54A,B1ADOF54A,B1ADOF54A,B1ADOF54A,B1ADOF54A,B1ADOF54A,B1ADOF54A,B1ADOF54A,B1ADOF54A, & - B1ADOF55A,B1ADOF55A,B1ADOF55A,B1ADOF55A,B1ADOF55A,B1ADOF55A,B1ADOF55A,B1ADOF55A,B1ADOF55A, & - B1ADOF56A,B1ADOF56A,B1ADOF56A,B1ADOF56A,B1ADOF56A,B1ADOF56A,B1ADOF56A,B1ADOF56A,B1ADOF56A, & - B1ADOF57A,B1ADOF57A,B1ADOF57A,B1ADOF57A,B1ADOF57A,B1ADOF57A,B1ADOF57A,B1ADOF57A,B1ADOF57A, & - B1ADOF58A,B1ADOF58A,B1ADOF58A,B1ADOF58A,B1ADOF58A,B1ADOF58A,B1ADOF58A,B1ADOF58A,B1ADOF58A, & - B1ADOF59A,B1ADOF59A,B1ADOF59A,B1ADOF59A,B1ADOF59A,B1ADOF59A,B1ADOF59A,B1ADOF59A,B1ADOF59A, & - B1ADOF60A,B1ADOF60A,B1ADOF60A,B1ADOF60A,B1ADOF60A,B1ADOF60A,B1ADOF60A,B1ADOF60A,B1ADOF60A, & - B1ADOF61A,B1ADOF61A,B1ADOF61A,B1ADOF61A,B1ADOF61A,B1ADOF61A,B1ADOF61A,B1ADOF61A,B1ADOF61A, & - B1ADOF62A,B1ADOF62A,B1ADOF62A,B1ADOF62A,B1ADOF62A,B1ADOF62A,B1ADOF62A,B1ADOF62A,B1ADOF62A, & - B1ADOF63A,B1ADOF63A,B1ADOF63A,B1ADOF63A,B1ADOF63A,B1ADOF63A,B1ADOF63A,B1ADOF63A,B1ADOF63A, & - B1ADOF64A,B1ADOF64A,B1ADOF64A,B1ADOF64A,B1ADOF64A,B1ADOF64A,B1ADOF64A,B1ADOF64A,B1ADOF64A, & - B1ADOF65A,B1ADOF65A,B1ADOF65A,B1ADOF65A,B1ADOF65A,B1ADOF65A,B1ADOF65A,B1ADOF65A,B1ADOF65A, & - B1ADOF66A,B1ADOF66A,B1ADOF66A,B1ADOF66A,B1ADOF66A,B1ADOF66A,B1ADOF66A,B1ADOF66A,B1ADOF66A, & - B1ADOF67A,B1ADOF67A,B1ADOF67A,B1ADOF67A,B1ADOF67A,B1ADOF67A,B1ADOF67A,B1ADOF67A,B1ADOF67A, & - B1ADOF68A,B1ADOF68A,B1ADOF68A,B1ADOF68A,B1ADOF68A,B1ADOF68A,B1ADOF68A,B1ADOF68A,B1ADOF68A, & - B1ADOF69A,B1ADOF69A,B1ADOF69A,B1ADOF69A,B1ADOF69A,B1ADOF69A,B1ADOF69A,B1ADOF69A,B1ADOF69A, & - B1ADOF70A,B1ADOF70A,B1ADOF70A,B1ADOF70A,B1ADOF70A,B1ADOF70A,B1ADOF70A,B1ADOF70A,B1ADOF70A, & - B1ADOF71A,B1ADOF71A,B1ADOF71A,B1ADOF71A,B1ADOF71A,B1ADOF71A,B1ADOF71A,B1ADOF71A,B1ADOF71A, & - B1ADOF72A,B1ADOF72A,B1ADOF72A,B1ADOF72A,B1ADOF72A,B1ADOF72A,B1ADOF72A,B1ADOF72A,B1ADOF72A, & - B1ADOF73A,B1ADOF73A,B1ADOF73A,B1ADOF73A,B1ADOF73A,B1ADOF73A,B1ADOF73A,B1ADOF73A,B1ADOF73A, & - B1ADOF74A,B1ADOF74A,B1ADOF74A,B1ADOF74A,B1ADOF74A,B1ADOF74A,B1ADOF74A,B1ADOF74A,B1ADOF74A, & - B1ADOF75A,B1ADOF75A,B1ADOF75A,B1ADOF75A,B1ADOF75A,B1ADOF75A,B1ADOF75A,B1ADOF75A,B1ADOF75A, & - B1ADOF76A,B1ADOF76A,B1ADOF76A,B1ADOF76A,B1ADOF76A,B1ADOF76A,B1ADOF76A,B1ADOF76A,B1ADOF76A, & - B1ADOF77A,B1ADOF77A,B1ADOF77A,B1ADOF77A,B1ADOF77A,B1ADOF77A,B1ADOF77A,B1ADOF77A,B1ADOF77A, & - B1ADOF78A,B1ADOF78A,B1ADOF78A,B1ADOF78A,B1ADOF78A,B1ADOF78A,B1ADOF78A,B1ADOF78A,B1ADOF78A, & - B1ADOF79A,B1ADOF79A,B1ADOF79A,B1ADOF79A,B1ADOF79A,B1ADOF79A,B1ADOF79A,B1ADOF79A,B1ADOF79A, & - B1ADOF80A,B1ADOF80A,B1ADOF80A,B1ADOF80A,B1ADOF80A,B1ADOF80A,B1ADOF80A,B1ADOF80A,B1ADOF80A, & - B1ADOF81A,B1ADOF81A,B1ADOF81A,B1ADOF81A,B1ADOF81A,B1ADOF81A,B1ADOF81A,B1ADOF81A,B1ADOF81A, & - B1ADOF82A,B1ADOF82A,B1ADOF82A,B1ADOF82A,B1ADOF82A,B1ADOF82A,B1ADOF82A,B1ADOF82A,B1ADOF82A, & - B1ADOF83A,B1ADOF83A,B1ADOF83A,B1ADOF83A,B1ADOF83A,B1ADOF83A,B1ADOF83A,B1ADOF83A,B1ADOF83A, & - B1ADOF84A,B1ADOF84A,B1ADOF84A,B1ADOF84A,B1ADOF84A,B1ADOF84A,B1ADOF84A,B1ADOF84A,B1ADOF84A, & - B1ADOF85A,B1ADOF85A,B1ADOF85A,B1ADOF85A,B1ADOF85A,B1ADOF85A,B1ADOF85A,B1ADOF85A,B1ADOF85A, & - B1ADOF86A,B1ADOF86A,B1ADOF86A,B1ADOF86A,B1ADOF86A,B1ADOF86A,B1ADOF86A,B1ADOF86A,B1ADOF86A, & - B1ADOF87A,B1ADOF87A,B1ADOF87A,B1ADOF87A,B1ADOF87A,B1ADOF87A,B1ADOF87A,B1ADOF87A,B1ADOF87A, & - B1ADOF88A,B1ADOF88A,B1ADOF88A,B1ADOF88A,B1ADOF88A,B1ADOF88A,B1ADOF88A,B1ADOF88A,B1ADOF88A, & - B1ADOF89A,B1ADOF89A,B1ADOF89A,B1ADOF89A,B1ADOF89A,B1ADOF89A,B1ADOF89A,B1ADOF89A,B1ADOF89A, & - B1ADOF90A,B1ADOF90A,B1ADOF90A,B1ADOF90A,B1ADOF90A,B1ADOF90A,B1ADOF90A,B1ADOF90A,B1ADOF90A, & - B1ADOF91A,B1ADOF91A,B1ADOF91A,B1ADOF91A,B1ADOF91A,B1ADOF91A,B1ADOF91A,B1ADOF91A,B1ADOF91A, & - B1ADOF92A,B1ADOF92A,B1ADOF92A,B1ADOF92A,B1ADOF92A,B1ADOF92A,B1ADOF92A,B1ADOF92A,B1ADOF92A, & - B1ADOF93A,B1ADOF93A,B1ADOF93A,B1ADOF93A,B1ADOF93A,B1ADOF93A,B1ADOF93A,B1ADOF93A,B1ADOF93A, & - B1ADOF94A,B1ADOF94A,B1ADOF94A,B1ADOF94A,B1ADOF94A,B1ADOF94A,B1ADOF94A,B1ADOF94A,B1ADOF94A, & - B1ADOF95A,B1ADOF95A,B1ADOF95A,B1ADOF95A,B1ADOF95A,B1ADOF95A,B1ADOF95A,B1ADOF95A,B1ADOF95A, & - B1ADOF96A,B1ADOF96A,B1ADOF96A,B1ADOF96A,B1ADOF96A,B1ADOF96A,B1ADOF96A,B1ADOF96A,B1ADOF96A, & - B1ADOF97A,B1ADOF97A,B1ADOF97A,B1ADOF97A,B1ADOF97A,B1ADOF97A,B1ADOF97A,B1ADOF97A,B1ADOF97A, & - B1ADOF98A,B1ADOF98A,B1ADOF98A,B1ADOF98A,B1ADOF98A,B1ADOF98A,B1ADOF98A,B1ADOF98A,B1ADOF98A, & - B1ADOF99A,B1ADOF99A,B1ADOF99A,B1ADOF99A,B1ADOF99A,B1ADOF99A,B1ADOF99A,B1ADOF99A,B1ADOF99A/), & + INTEGER, PARAMETER :: ADOFAcc(99,9) = transpose(reshape((/B1ADOF1A,B2ADOF1A,B3ADOF1A,B4ADOF1A,B5ADOF1A,B6ADOF1A,B7ADOF1A,B8ADOF1A,B9ADOF1A, & + B1ADOF2A,B2ADOF2A,B3ADOF2A,B4ADOF2A,B5ADOF2A,B6ADOF2A,B7ADOF2A,B8ADOF2A,B9ADOF2A, & + B1ADOF3A,B2ADOF3A,B3ADOF3A,B4ADOF3A,B5ADOF3A,B6ADOF3A,B7ADOF3A,B8ADOF3A,B9ADOF3A, & + B1ADOF4A,B2ADOF4A,B3ADOF4A,B4ADOF4A,B5ADOF4A,B6ADOF4A,B7ADOF4A,B8ADOF4A,B9ADOF4A, & + B1ADOF5A,B2ADOF5A,B3ADOF5A,B4ADOF5A,B5ADOF5A,B6ADOF5A,B7ADOF5A,B8ADOF5A,B9ADOF5A, & + B1ADOF6A,B2ADOF6A,B3ADOF6A,B4ADOF6A,B5ADOF6A,B6ADOF6A,B7ADOF6A,B8ADOF6A,B9ADOF6A, & + B1ADOF7A,B2ADOF7A,B3ADOF7A,B4ADOF7A,B5ADOF7A,B6ADOF7A,B7ADOF7A,B8ADOF7A,B9ADOF7A, & + B1ADOF8A,B2ADOF8A,B3ADOF8A,B4ADOF8A,B5ADOF8A,B6ADOF8A,B7ADOF8A,B8ADOF8A,B9ADOF8A, & + B1ADOF9A,B2ADOF9A,B3ADOF9A,B4ADOF9A,B5ADOF9A,B6ADOF9A,B7ADOF9A,B8ADOF9A,B9ADOF9A, & + B1ADOF10A,B2ADOF10A,B3ADOF10A,B4ADOF10A,B5ADOF10A,B6ADOF10A,B7ADOF10A,B8ADOF10A,B9ADOF10A, & + B1ADOF11A,B2ADOF11A,B3ADOF11A,B4ADOF11A,B5ADOF11A,B6ADOF11A,B7ADOF11A,B8ADOF11A,B9ADOF11A, & + B1ADOF12A,B2ADOF12A,B3ADOF12A,B4ADOF12A,B5ADOF12A,B6ADOF12A,B7ADOF12A,B8ADOF12A,B9ADOF12A, & + B1ADOF13A,B2ADOF13A,B3ADOF13A,B4ADOF13A,B5ADOF13A,B6ADOF13A,B7ADOF13A,B8ADOF13A,B9ADOF13A, & + B1ADOF14A,B2ADOF14A,B3ADOF14A,B4ADOF14A,B5ADOF14A,B6ADOF14A,B7ADOF14A,B8ADOF14A,B9ADOF14A, & + B1ADOF15A,B2ADOF15A,B3ADOF15A,B4ADOF15A,B5ADOF15A,B6ADOF15A,B7ADOF15A,B8ADOF15A,B9ADOF15A, & + B1ADOF16A,B2ADOF16A,B3ADOF16A,B4ADOF16A,B5ADOF16A,B6ADOF16A,B7ADOF16A,B8ADOF16A,B9ADOF16A, & + B1ADOF17A,B2ADOF17A,B3ADOF17A,B4ADOF17A,B5ADOF17A,B6ADOF17A,B7ADOF17A,B8ADOF17A,B9ADOF17A, & + B1ADOF18A,B2ADOF18A,B3ADOF18A,B4ADOF18A,B5ADOF18A,B6ADOF18A,B7ADOF18A,B8ADOF18A,B9ADOF18A, & + B1ADOF19A,B2ADOF19A,B3ADOF19A,B4ADOF19A,B5ADOF19A,B6ADOF19A,B7ADOF19A,B8ADOF19A,B9ADOF19A, & + B1ADOF20A,B2ADOF20A,B3ADOF20A,B4ADOF20A,B5ADOF20A,B6ADOF20A,B7ADOF20A,B8ADOF20A,B9ADOF20A, & + B1ADOF21A,B2ADOF21A,B3ADOF21A,B4ADOF21A,B5ADOF21A,B6ADOF21A,B7ADOF21A,B8ADOF21A,B9ADOF21A, & + B1ADOF22A,B2ADOF22A,B3ADOF22A,B4ADOF22A,B5ADOF22A,B6ADOF22A,B7ADOF22A,B8ADOF22A,B9ADOF22A, & + B1ADOF23A,B2ADOF23A,B3ADOF23A,B4ADOF23A,B5ADOF23A,B6ADOF23A,B7ADOF23A,B8ADOF23A,B9ADOF23A, & + B1ADOF24A,B2ADOF24A,B3ADOF24A,B4ADOF24A,B5ADOF24A,B6ADOF24A,B7ADOF24A,B8ADOF24A,B9ADOF24A, & + B1ADOF25A,B2ADOF25A,B3ADOF25A,B4ADOF25A,B5ADOF25A,B6ADOF25A,B7ADOF25A,B8ADOF25A,B9ADOF25A, & + B1ADOF26A,B2ADOF26A,B3ADOF26A,B4ADOF26A,B5ADOF26A,B6ADOF26A,B7ADOF26A,B8ADOF26A,B9ADOF26A, & + B1ADOF27A,B2ADOF27A,B3ADOF27A,B4ADOF27A,B5ADOF27A,B6ADOF27A,B7ADOF27A,B8ADOF27A,B9ADOF27A, & + B1ADOF28A,B2ADOF28A,B3ADOF28A,B4ADOF28A,B5ADOF28A,B6ADOF28A,B7ADOF28A,B8ADOF28A,B9ADOF28A, & + B1ADOF29A,B2ADOF29A,B3ADOF29A,B4ADOF29A,B5ADOF29A,B6ADOF29A,B7ADOF29A,B8ADOF29A,B9ADOF29A, & + B1ADOF30A,B2ADOF30A,B3ADOF30A,B4ADOF30A,B5ADOF30A,B6ADOF30A,B7ADOF30A,B8ADOF30A,B9ADOF30A, & + B1ADOF31A,B2ADOF31A,B3ADOF31A,B4ADOF31A,B5ADOF31A,B6ADOF31A,B7ADOF31A,B8ADOF31A,B9ADOF31A, & + B1ADOF32A,B2ADOF32A,B3ADOF32A,B4ADOF32A,B5ADOF32A,B6ADOF32A,B7ADOF32A,B8ADOF32A,B9ADOF32A, & + B1ADOF33A,B2ADOF33A,B3ADOF33A,B4ADOF33A,B5ADOF33A,B6ADOF33A,B7ADOF33A,B8ADOF33A,B9ADOF33A, & + B1ADOF34A,B2ADOF34A,B3ADOF34A,B4ADOF34A,B5ADOF34A,B6ADOF34A,B7ADOF34A,B8ADOF34A,B9ADOF34A, & + B1ADOF35A,B2ADOF35A,B3ADOF35A,B4ADOF35A,B5ADOF35A,B6ADOF35A,B7ADOF35A,B8ADOF35A,B9ADOF35A, & + B1ADOF36A,B2ADOF36A,B3ADOF36A,B4ADOF36A,B5ADOF36A,B6ADOF36A,B7ADOF36A,B8ADOF36A,B9ADOF36A, & + B1ADOF37A,B2ADOF37A,B3ADOF37A,B4ADOF37A,B5ADOF37A,B6ADOF37A,B7ADOF37A,B8ADOF37A,B9ADOF37A, & + B1ADOF38A,B2ADOF38A,B3ADOF38A,B4ADOF38A,B5ADOF38A,B6ADOF38A,B7ADOF38A,B8ADOF38A,B9ADOF38A, & + B1ADOF39A,B2ADOF39A,B3ADOF39A,B4ADOF39A,B5ADOF39A,B6ADOF39A,B7ADOF39A,B8ADOF39A,B9ADOF39A, & + B1ADOF40A,B2ADOF40A,B3ADOF40A,B4ADOF40A,B5ADOF40A,B6ADOF40A,B7ADOF40A,B8ADOF40A,B9ADOF40A, & + B1ADOF41A,B2ADOF41A,B3ADOF41A,B4ADOF41A,B5ADOF41A,B6ADOF41A,B7ADOF41A,B8ADOF41A,B9ADOF41A, & + B1ADOF42A,B2ADOF42A,B3ADOF42A,B4ADOF42A,B5ADOF42A,B6ADOF42A,B7ADOF42A,B8ADOF42A,B9ADOF42A, & + B1ADOF43A,B2ADOF43A,B3ADOF43A,B4ADOF43A,B5ADOF43A,B6ADOF43A,B7ADOF43A,B8ADOF43A,B9ADOF43A, & + B1ADOF44A,B2ADOF44A,B3ADOF44A,B4ADOF44A,B5ADOF44A,B6ADOF44A,B7ADOF44A,B8ADOF44A,B9ADOF44A, & + B1ADOF45A,B2ADOF45A,B3ADOF45A,B4ADOF45A,B5ADOF45A,B6ADOF45A,B7ADOF45A,B8ADOF45A,B9ADOF45A, & + B1ADOF46A,B2ADOF46A,B3ADOF46A,B4ADOF46A,B5ADOF46A,B6ADOF46A,B7ADOF46A,B8ADOF46A,B9ADOF46A, & + B1ADOF47A,B2ADOF47A,B3ADOF47A,B4ADOF47A,B5ADOF47A,B6ADOF47A,B7ADOF47A,B8ADOF47A,B9ADOF47A, & + B1ADOF48A,B2ADOF48A,B3ADOF48A,B4ADOF48A,B5ADOF48A,B6ADOF48A,B7ADOF48A,B8ADOF48A,B9ADOF48A, & + B1ADOF49A,B2ADOF49A,B3ADOF49A,B4ADOF49A,B5ADOF49A,B6ADOF49A,B7ADOF49A,B8ADOF49A,B9ADOF49A, & + B1ADOF50A,B2ADOF50A,B3ADOF50A,B4ADOF50A,B5ADOF50A,B6ADOF50A,B7ADOF50A,B8ADOF50A,B9ADOF50A, & + B1ADOF51A,B2ADOF51A,B3ADOF51A,B4ADOF51A,B5ADOF51A,B6ADOF51A,B7ADOF51A,B8ADOF51A,B9ADOF51A, & + B1ADOF52A,B2ADOF52A,B3ADOF52A,B4ADOF52A,B5ADOF52A,B6ADOF52A,B7ADOF52A,B8ADOF52A,B9ADOF52A, & + B1ADOF53A,B2ADOF53A,B3ADOF53A,B4ADOF53A,B5ADOF53A,B6ADOF53A,B7ADOF53A,B8ADOF53A,B9ADOF53A, & + B1ADOF54A,B2ADOF54A,B3ADOF54A,B4ADOF54A,B5ADOF54A,B6ADOF54A,B7ADOF54A,B8ADOF54A,B9ADOF54A, & + B1ADOF55A,B2ADOF55A,B3ADOF55A,B4ADOF55A,B5ADOF55A,B6ADOF55A,B7ADOF55A,B8ADOF55A,B9ADOF55A, & + B1ADOF56A,B2ADOF56A,B3ADOF56A,B4ADOF56A,B5ADOF56A,B6ADOF56A,B7ADOF56A,B8ADOF56A,B9ADOF56A, & + B1ADOF57A,B2ADOF57A,B3ADOF57A,B4ADOF57A,B5ADOF57A,B6ADOF57A,B7ADOF57A,B8ADOF57A,B9ADOF57A, & + B1ADOF58A,B2ADOF58A,B3ADOF58A,B4ADOF58A,B5ADOF58A,B6ADOF58A,B7ADOF58A,B8ADOF58A,B9ADOF58A, & + B1ADOF59A,B2ADOF59A,B3ADOF59A,B4ADOF59A,B5ADOF59A,B6ADOF59A,B7ADOF59A,B8ADOF59A,B9ADOF59A, & + B1ADOF60A,B2ADOF60A,B3ADOF60A,B4ADOF60A,B5ADOF60A,B6ADOF60A,B7ADOF60A,B8ADOF60A,B9ADOF60A, & + B1ADOF61A,B2ADOF61A,B3ADOF61A,B4ADOF61A,B5ADOF61A,B6ADOF61A,B7ADOF61A,B8ADOF61A,B9ADOF61A, & + B1ADOF62A,B2ADOF62A,B3ADOF62A,B4ADOF62A,B5ADOF62A,B6ADOF62A,B7ADOF62A,B8ADOF62A,B9ADOF62A, & + B1ADOF63A,B2ADOF63A,B3ADOF63A,B4ADOF63A,B5ADOF63A,B6ADOF63A,B7ADOF63A,B8ADOF63A,B9ADOF63A, & + B1ADOF64A,B2ADOF64A,B3ADOF64A,B4ADOF64A,B5ADOF64A,B6ADOF64A,B7ADOF64A,B8ADOF64A,B9ADOF64A, & + B1ADOF65A,B2ADOF65A,B3ADOF65A,B4ADOF65A,B5ADOF65A,B6ADOF65A,B7ADOF65A,B8ADOF65A,B9ADOF65A, & + B1ADOF66A,B2ADOF66A,B3ADOF66A,B4ADOF66A,B5ADOF66A,B6ADOF66A,B7ADOF66A,B8ADOF66A,B9ADOF66A, & + B1ADOF67A,B2ADOF67A,B3ADOF67A,B4ADOF67A,B5ADOF67A,B6ADOF67A,B7ADOF67A,B8ADOF67A,B9ADOF67A, & + B1ADOF68A,B2ADOF68A,B3ADOF68A,B4ADOF68A,B5ADOF68A,B6ADOF68A,B7ADOF68A,B8ADOF68A,B9ADOF68A, & + B1ADOF69A,B2ADOF69A,B3ADOF69A,B4ADOF69A,B5ADOF69A,B6ADOF69A,B7ADOF69A,B8ADOF69A,B9ADOF69A, & + B1ADOF70A,B2ADOF70A,B3ADOF70A,B4ADOF70A,B5ADOF70A,B6ADOF70A,B7ADOF70A,B8ADOF70A,B9ADOF70A, & + B1ADOF71A,B2ADOF71A,B3ADOF71A,B4ADOF71A,B5ADOF71A,B6ADOF71A,B7ADOF71A,B8ADOF71A,B9ADOF71A, & + B1ADOF72A,B2ADOF72A,B3ADOF72A,B4ADOF72A,B5ADOF72A,B6ADOF72A,B7ADOF72A,B8ADOF72A,B9ADOF72A, & + B1ADOF73A,B2ADOF73A,B3ADOF73A,B4ADOF73A,B5ADOF73A,B6ADOF73A,B7ADOF73A,B8ADOF73A,B9ADOF73A, & + B1ADOF74A,B2ADOF74A,B3ADOF74A,B4ADOF74A,B5ADOF74A,B6ADOF74A,B7ADOF74A,B8ADOF74A,B9ADOF74A, & + B1ADOF75A,B2ADOF75A,B3ADOF75A,B4ADOF75A,B5ADOF75A,B6ADOF75A,B7ADOF75A,B8ADOF75A,B9ADOF75A, & + B1ADOF76A,B2ADOF76A,B3ADOF76A,B4ADOF76A,B5ADOF76A,B6ADOF76A,B7ADOF76A,B8ADOF76A,B9ADOF76A, & + B1ADOF77A,B2ADOF77A,B3ADOF77A,B4ADOF77A,B5ADOF77A,B6ADOF77A,B7ADOF77A,B8ADOF77A,B9ADOF77A, & + B1ADOF78A,B2ADOF78A,B3ADOF78A,B4ADOF78A,B5ADOF78A,B6ADOF78A,B7ADOF78A,B8ADOF78A,B9ADOF78A, & + B1ADOF79A,B2ADOF79A,B3ADOF79A,B4ADOF79A,B5ADOF79A,B6ADOF79A,B7ADOF79A,B8ADOF79A,B9ADOF79A, & + B1ADOF80A,B2ADOF80A,B3ADOF80A,B4ADOF80A,B5ADOF80A,B6ADOF80A,B7ADOF80A,B8ADOF80A,B9ADOF80A, & + B1ADOF81A,B2ADOF81A,B3ADOF81A,B4ADOF81A,B5ADOF81A,B6ADOF81A,B7ADOF81A,B8ADOF81A,B9ADOF81A, & + B1ADOF82A,B2ADOF82A,B3ADOF82A,B4ADOF82A,B5ADOF82A,B6ADOF82A,B7ADOF82A,B8ADOF82A,B9ADOF82A, & + B1ADOF83A,B2ADOF83A,B3ADOF83A,B4ADOF83A,B5ADOF83A,B6ADOF83A,B7ADOF83A,B8ADOF83A,B9ADOF83A, & + B1ADOF84A,B2ADOF84A,B3ADOF84A,B4ADOF84A,B5ADOF84A,B6ADOF84A,B7ADOF84A,B8ADOF84A,B9ADOF84A, & + B1ADOF85A,B2ADOF85A,B3ADOF85A,B4ADOF85A,B5ADOF85A,B6ADOF85A,B7ADOF85A,B8ADOF85A,B9ADOF85A, & + B1ADOF86A,B2ADOF86A,B3ADOF86A,B4ADOF86A,B5ADOF86A,B6ADOF86A,B7ADOF86A,B8ADOF86A,B9ADOF86A, & + B1ADOF87A,B2ADOF87A,B3ADOF87A,B4ADOF87A,B5ADOF87A,B6ADOF87A,B7ADOF87A,B8ADOF87A,B9ADOF87A, & + B1ADOF88A,B2ADOF88A,B3ADOF88A,B4ADOF88A,B5ADOF88A,B6ADOF88A,B7ADOF88A,B8ADOF88A,B9ADOF88A, & + B1ADOF89A,B2ADOF89A,B3ADOF89A,B4ADOF89A,B5ADOF89A,B6ADOF89A,B7ADOF89A,B8ADOF89A,B9ADOF89A, & + B1ADOF90A,B2ADOF90A,B3ADOF90A,B4ADOF90A,B5ADOF90A,B6ADOF90A,B7ADOF90A,B8ADOF90A,B9ADOF90A, & + B1ADOF91A,B2ADOF91A,B3ADOF91A,B4ADOF91A,B5ADOF91A,B6ADOF91A,B7ADOF91A,B8ADOF91A,B9ADOF91A, & + B1ADOF92A,B2ADOF92A,B3ADOF92A,B4ADOF92A,B5ADOF92A,B6ADOF92A,B7ADOF92A,B8ADOF92A,B9ADOF92A, & + B1ADOF93A,B2ADOF93A,B3ADOF93A,B4ADOF93A,B5ADOF93A,B6ADOF93A,B7ADOF93A,B8ADOF93A,B9ADOF93A, & + B1ADOF94A,B2ADOF94A,B3ADOF94A,B4ADOF94A,B5ADOF94A,B6ADOF94A,B7ADOF94A,B8ADOF94A,B9ADOF94A, & + B1ADOF95A,B2ADOF95A,B3ADOF95A,B4ADOF95A,B5ADOF95A,B6ADOF95A,B7ADOF95A,B8ADOF95A,B9ADOF95A, & + B1ADOF96A,B2ADOF96A,B3ADOF96A,B4ADOF96A,B5ADOF96A,B6ADOF96A,B7ADOF96A,B8ADOF96A,B9ADOF96A, & + B1ADOF97A,B2ADOF97A,B3ADOF97A,B4ADOF97A,B5ADOF97A,B6ADOF97A,B7ADOF97A,B8ADOF97A,B9ADOF97A, & + B1ADOF98A,B2ADOF98A,B3ADOF98A,B4ADOF98A,B5ADOF98A,B6ADOF98A,B7ADOF98A,B8ADOF98A,B9ADOF98A, & + B1ADOF99A,B2ADOF99A,B3ADOF99A,B4ADOF99A,B5ADOF99A,B6ADOF99A,B7ADOF99A,B8ADOF99A,B9ADOF99A/), & (/9,99/))) CHARACTER(OutStrLenM1), PARAMETER :: ValidParamAry1(1687) = (/ & ! This lists the names of the allowed parameters, which must be sorted alphabetically @@ -8887,9 +8887,9 @@ SUBROUTINE HDOUT_Init( HydroDyn_ProgDesc, OutRootName, InputFileData, y, p, m, p%OutDec = 1 !TODO: Remove this once the parameter has been added to the HD input file GJH 7/8/2014 - IF (ALLOCATED( p%Morison%OutParam ) .AND. p%Morison%NumOuts > 0) THEN + IF (ALLOCATED( p%Morison%OutParam ) .AND. (p%Morison%NumOuts > 0 .OR. p%Morison%OutAll)) THEN hasMorisonOuts = .TRUE. - p%NumTotalOuts = p%NumTotalOuts + p%Morison%NumOuts + p%NumTotalOuts = p%NumTotalOuts + size(p%Morison%OutParam) END IF ! Allocate the aggregate arrays @@ -8929,7 +8929,7 @@ SUBROUTINE HDOUT_Init( HydroDyn_ProgDesc, OutRootName, InputFileData, y, p, m, J = p%NumOuts + 1 IF ( hasMorisonOuts ) THEN - DO I=1, p%Morison%NumOuts + DO I=1, size(p%Morison%OutParam) InitOut%WriteOutputHdr(J) = InitOut%Morison%WriteOutputHdr(I) InitOut%WriteOutputUnt(J) = InitOut%Morison%WriteOutputUnt(I) J = J + 1 @@ -8982,7 +8982,7 @@ SUBROUTINE HDOut_OpenOutput( HydroDyn_ProgDesc, OutRootName, p, InitOut, ErrSta !------------------------------------------------------------------------------------------------- p%UnOutFile = -1 IF ( (ALLOCATED( p%OutParam ) .AND. p%NumOuts > 0 ) .OR. & - (ALLOCATED( p%Morison%OutParam ) .AND. p%Morison%NumOuts > 0 ) ) THEN ! Output has been requested so let's open an output file + (ALLOCATED( p%Morison%OutParam ) .AND. (p%Morison%NumOuts > 0 .OR. p%Morison%OutAll) ) ) THEN ! Output has been requested so let's open an output file ! Open the file for output OutFileName = TRIM(OutRootName)//'.out' @@ -9013,9 +9013,9 @@ SUBROUTINE HDOut_OpenOutput( HydroDyn_ProgDesc, OutRootName, p, InitOut, ErrSta WRITE(p%UnOutFile,Frmt,ADVANCE='no') ( p%Delim, TRIM( InitOut%WriteOutputHdr(I) ), I=1,p%NumOuts ) END IF - IF (ALLOCATED( p%Morison%OutParam ) .AND. p%Morison%NumOuts > 0) THEN - Frmt = '('//TRIM(Int2LStr(p%Morison%NumOuts))//'(:,A,'//TRIM( p%OutSFmt )//'))' - WRITE(p%UnOutFile,Frmt,ADVANCE='no') ( p%Delim, TRIM( InitOut%Morison%WriteOutputHdr(I) ), I=1,p%Morison%NumOuts ) + IF (ALLOCATED( p%Morison%OutParam ) .AND. (p%Morison%NumOuts > 0 .OR. p%Morison%OutAll)) THEN + Frmt = '('//TRIM(Int2LStr(size(p%Morison%OutParam)))//'(:,A,'//TRIM( p%OutSFmt )//'))' + WRITE(p%UnOutFile,Frmt,ADVANCE='no') ( p%Delim, TRIM( InitOut%Morison%WriteOutputHdr(I) ), I=1,size(p%Morison%OutParam) ) END IF @@ -9033,9 +9033,9 @@ SUBROUTINE HDOut_OpenOutput( HydroDyn_ProgDesc, OutRootName, p, InitOut, ErrSta WRITE(p%UnOutFile,Frmt,ADVANCE='no') ( p%Delim, TRIM( InitOut%WriteOutputUnt(I) ), I=1,p%NumOuts ) END IF - IF (ALLOCATED( p%Morison%OutParam ) .AND. p%Morison%NumOuts > 0) THEN - Frmt = '('//TRIM(Int2LStr(p%Morison%NumOuts))//'(:,A,'//TRIM( p%OutSFmt )//'))' - WRITE(p%UnOutFile,Frmt,ADVANCE='no') ( p%Delim, TRIM( InitOut%Morison%WriteOutputUnt(I) ), I=1,p%Morison%NumOuts ) + IF (ALLOCATED( p%Morison%OutParam ) .AND. (p%Morison%NumOuts > 0 .OR. p%Morison%OutAll)) THEN + Frmt = '('//TRIM(Int2LStr(size(p%Morison%OutParam)))//'(:,A,'//TRIM( p%OutSFmt )//'))' + WRITE(p%UnOutFile,Frmt,ADVANCE='no') ( p%Delim, TRIM( InitOut%Morison%WriteOutputUnt(I) ), I=1,size(p%Morison%OutParam) ) END IF diff --git a/modules/hydrodyn/src/HydroDyn_Types.f90 b/modules/hydrodyn/src/HydroDyn_Types.f90 index c1b96adc18..73927c85a1 100644 --- a/modules/hydrodyn/src/HydroDyn_Types.f90 +++ b/modules/hydrodyn/src/HydroDyn_Types.f90 @@ -76,7 +76,6 @@ MODULE HydroDyn_Types INTEGER(IntKi) :: NUserOutputs = 0_IntKi !< Number of Hydrodyn-level requested output channels [-] CHARACTER(ChanLen) , DIMENSION(:), ALLOCATABLE :: UserOutputs !< This should really be dimensioned with MaxOutPts [-] INTEGER(IntKi) :: OutSwtch = 0_IntKi !< Output requested channels to: [1=Hydrodyn.out 2=GlueCode.out 3=both files] [-] - LOGICAL :: OutAll = .false. !< Output all user-specified member and joint loads (only at each member end, not interior locations) [T/F] [-] INTEGER(IntKi) :: NumOuts = 0_IntKi !< The number of outputs for this module as requested in the input file [-] CHARACTER(ChanLen) , DIMENSION(:), ALLOCATABLE :: OutList !< The user-requested output channel labels for this modules. This should really be dimensioned with MaxOutPts [-] LOGICAL :: HDSum = .false. !< Generate a HydroDyn summary file [T/F] [-] @@ -228,20 +227,21 @@ MODULE HydroDyn_Types integer(IntKi), public, parameter :: HydroDyn_x_Morison_DummyContState = 4 ! HydroDyn%Morison%DummyContState integer(IntKi), public, parameter :: HydroDyn_u_Morison_Mesh = 5 ! HydroDyn%Morison%Mesh integer(IntKi), public, parameter :: HydroDyn_u_Morison_PtfmRefY = 6 ! HydroDyn%Morison%PtfmRefY - integer(IntKi), public, parameter :: HydroDyn_u_WAMITMesh = 7 ! HydroDyn%WAMITMesh - integer(IntKi), public, parameter :: HydroDyn_u_PRPMesh = 8 ! HydroDyn%PRPMesh - integer(IntKi), public, parameter :: HydroDyn_u_qAddDOF = 9 ! HydroDyn%qAddDOF - integer(IntKi), public, parameter :: HydroDyn_u_qAddDOFDot = 10 ! HydroDyn%qAddDOFDot - integer(IntKi), public, parameter :: HydroDyn_u_qAddDOFDotDot = 11 ! HydroDyn%qAddDOFDotDot - integer(IntKi), public, parameter :: HydroDyn_y_WAMIT_Mesh = 12 ! HydroDyn%WAMIT(DL%i1)%Mesh - integer(IntKi), public, parameter :: HydroDyn_y_WAMIT_FAddDOF = 13 ! HydroDyn%WAMIT(DL%i1)%FAddDOF - integer(IntKi), public, parameter :: HydroDyn_y_WAMIT2_Mesh = 14 ! HydroDyn%WAMIT2(DL%i1)%Mesh - integer(IntKi), public, parameter :: HydroDyn_y_Morison_Mesh = 15 ! HydroDyn%Morison%Mesh - integer(IntKi), public, parameter :: HydroDyn_y_Morison_VisMesh = 16 ! HydroDyn%Morison%VisMesh - integer(IntKi), public, parameter :: HydroDyn_y_Morison_WriteOutput = 17 ! HydroDyn%Morison%WriteOutput - integer(IntKi), public, parameter :: HydroDyn_y_WAMITMesh = 18 ! HydroDyn%WAMITMesh - integer(IntKi), public, parameter :: HydroDyn_y_WriteOutput = 19 ! HydroDyn%WriteOutput - integer(IntKi), public, parameter :: HydroDyn_y_FAddDOF = 20 ! HydroDyn%FAddDOF + integer(IntKi), public, parameter :: HydroDyn_u_Morison_PRP = 7 ! HydroDyn%Morison%PRP + integer(IntKi), public, parameter :: HydroDyn_u_WAMITMesh = 8 ! HydroDyn%WAMITMesh + integer(IntKi), public, parameter :: HydroDyn_u_PRPMesh = 9 ! HydroDyn%PRPMesh + integer(IntKi), public, parameter :: HydroDyn_u_qAddDOF = 10 ! HydroDyn%qAddDOF + integer(IntKi), public, parameter :: HydroDyn_u_qAddDOFDot = 11 ! HydroDyn%qAddDOFDot + integer(IntKi), public, parameter :: HydroDyn_u_qAddDOFDotDot = 12 ! HydroDyn%qAddDOFDotDot + integer(IntKi), public, parameter :: HydroDyn_y_WAMIT_Mesh = 13 ! HydroDyn%WAMIT(DL%i1)%Mesh + integer(IntKi), public, parameter :: HydroDyn_y_WAMIT_FAddDOF = 14 ! HydroDyn%WAMIT(DL%i1)%FAddDOF + integer(IntKi), public, parameter :: HydroDyn_y_WAMIT2_Mesh = 15 ! HydroDyn%WAMIT2(DL%i1)%Mesh + integer(IntKi), public, parameter :: HydroDyn_y_Morison_Mesh = 16 ! HydroDyn%Morison%Mesh + integer(IntKi), public, parameter :: HydroDyn_y_Morison_VisMesh = 17 ! HydroDyn%Morison%VisMesh + integer(IntKi), public, parameter :: HydroDyn_y_Morison_WriteOutput = 18 ! HydroDyn%Morison%WriteOutput + integer(IntKi), public, parameter :: HydroDyn_y_WAMITMesh = 19 ! HydroDyn%WAMITMesh + integer(IntKi), public, parameter :: HydroDyn_y_WriteOutput = 20 ! HydroDyn%WriteOutput + integer(IntKi), public, parameter :: HydroDyn_y_FAddDOF = 21 ! HydroDyn%FAddDOF contains @@ -457,7 +457,6 @@ subroutine HydroDyn_CopyInputFile(SrcInputFileData, DstInputFileData, CtrlCode, DstInputFileData%UserOutputs = SrcInputFileData%UserOutputs end if DstInputFileData%OutSwtch = SrcInputFileData%OutSwtch - DstInputFileData%OutAll = SrcInputFileData%OutAll DstInputFileData%NumOuts = SrcInputFileData%NumOuts if (allocated(SrcInputFileData%OutList)) then LB(1:1) = lbound(SrcInputFileData%OutList) @@ -579,7 +578,6 @@ subroutine HydroDyn_PackInputFile(RF, Indata) call RegPack(RF, InData%NUserOutputs) call RegPackAlloc(RF, InData%UserOutputs) call RegPack(RF, InData%OutSwtch) - call RegPack(RF, InData%OutAll) call RegPack(RF, InData%NumOuts) call RegPackAlloc(RF, InData%OutList) call RegPack(RF, InData%HDSum) @@ -629,7 +627,6 @@ subroutine HydroDyn_UnPackInputFile(RF, OutData) call RegUnpack(RF, OutData%NUserOutputs); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%UserOutputs); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%OutSwtch); if (RegCheckErr(RF, RoutineName)) return - call RegUnpack(RF, OutData%OutAll); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%OutList); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%HDSum); if (RegCheckErr(RF, RoutineName)) return @@ -2823,6 +2820,8 @@ subroutine HydroDyn_VarPackInput(V, u, ValAry) call MV_PackMesh(V, u%Morison%Mesh, ValAry) ! Mesh case (HydroDyn_u_Morison_PtfmRefY) VarVals(1) = u%Morison%PtfmRefY ! Scalar + case (HydroDyn_u_Morison_PRP) + VarVals = u%Morison%PRP(V%iLB:V%iUB) ! Rank 1 Array case (HydroDyn_u_WAMITMesh) call MV_PackMesh(V, u%WAMITMesh, ValAry) ! Mesh case (HydroDyn_u_PRPMesh) @@ -2859,6 +2858,8 @@ subroutine HydroDyn_VarUnpackInput(V, ValAry, u) call MV_UnpackMesh(V, ValAry, u%Morison%Mesh) ! Mesh case (HydroDyn_u_Morison_PtfmRefY) u%Morison%PtfmRefY = VarVals(1) ! Scalar + case (HydroDyn_u_Morison_PRP) + u%Morison%PRP(V%iLB:V%iUB) = VarVals ! Rank 1 Array case (HydroDyn_u_WAMITMesh) call MV_UnpackMesh(V, ValAry, u%WAMITMesh) ! Mesh case (HydroDyn_u_PRPMesh) @@ -2881,6 +2882,8 @@ function HydroDyn_InputFieldName(DL) result(Name) Name = "u%Morison%Mesh" case (HydroDyn_u_Morison_PtfmRefY) Name = "u%Morison%PtfmRefY" + case (HydroDyn_u_Morison_PRP) + Name = "u%Morison%PRP" case (HydroDyn_u_WAMITMesh) Name = "u%WAMITMesh" case (HydroDyn_u_PRPMesh) diff --git a/modules/hydrodyn/src/Morison.f90 b/modules/hydrodyn/src/Morison.f90 index 0bd6288e6c..4dfe7e438e 100644 --- a/modules/hydrodyn/src/Morison.f90 +++ b/modules/hydrodyn/src/Morison.f90 @@ -1795,6 +1795,7 @@ subroutine AllocateMemberDataArrays( member, memberLoads, errStat, errMsg ) call AllocAry( memberLoads%F_If , 6, member%NElements+1, 'memberLoads%F_If' , errStat2, errMsg2); call SetErrStat(errStat2, errMsg2, errStat, errMsg, routineName) call AllocAry( memberLoads%F_WMG , 6, member%NElements+1, 'memberLoads%F_WMG', errStat2, errMsg2); call SetErrStat(errStat2, errMsg2, errStat, errMsg, routineName) call AllocAry( memberLoads%F_IMG , 6, member%NElements+1, 'memberLoads%F_IMG', errStat2, errMsg2); call SetErrStat(errStat2, errMsg2, errStat, errMsg, routineName) + call AllocAry( memberLoads%F_sum , 6, member%NElements+1, 'memberLoads%F_sum', errStat2, errMsg2); call SetErrStat(errStat2, errMsg2, errStat, errMsg, routineName) ! Shape dependent variables if (member%MSecGeom == MSecGeom_Cyl) then @@ -1876,6 +1877,8 @@ subroutine AllocateMemberDataArrays( member, memberLoads, errStat, errMsg ) memberLoads%F_If = 0.0_ReKi memberLoads%F_WMG = 0.0_ReKi memberLoads%F_IMG = 0.0_ReKi + memberLoads%F_sum = 0.0_ReKi + memberLoads%F_tot = 0.0_ReKi if (member%MSecGeom == MSecGeom_Cyl) then member%dRdl_mg = 0.0_ReKi @@ -2804,6 +2807,7 @@ SUBROUTINE Morison_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, In p%NJoints = InitInp%NJoints p%NumOuts = InitInp%NumOuts p%NMOutputs = InitInp%NMOutputs ! Number of members to output [ >=0 and <10] + p%OutAll = InitInp%OutAll p%WaveDisp = InitInp%WaveDisp p%AMMod = InitInp%AMMod p%HstMod = InitInp%HstMod @@ -3419,6 +3423,7 @@ SUBROUTINE AllocateNodeLoadVariables(InitInp, p, m, NNodes, errStat, errMsg ) call AllocAry( m%F_D_End , 3, p%NJoints, 'm%F_D_End' , errStat2, errMsg2); call SetErrStat(errStat2, errMsg2, errStat, errMsg, routineName) call AllocAry( m%F_B_End , 6, p%NJoints, 'm%F_B_End' , errStat2, errMsg2); call SetErrStat(errStat2, errMsg2, errStat, errMsg, routineName) call AllocAry( m%F_IMG_End , 6, p%NJoints, 'm%F_IMG_End' , errStat2, errMsg2); call SetErrStat(errStat2, errMsg2, errStat, errMsg, routineName) + call AllocAry( m%F_tot_End , 6, p%NJoints, 'm%F_tot_End' , errStat2, errMsg2); call SetErrStat(errStat2, errMsg2, errStat, errMsg, routineName) call AllocAry( p%I_MG_End , 3, 3, p%NJoints, 'p%I_MG_End' , errStat2, errMsg2); call SetErrStat(errStat2, errMsg2, errStat, errMsg, routineName) call AllocAry( p%F_WMG_End , 3, p%NJoints, 'p%F_WMG_End' , errStat2, errMsg2); call SetErrStat(errStat2, errMsg2, errStat, errMsg, routineName) call AllocAry( p%Mass_MG_End , p%NJoints, 'p%Mass_MG_End' , errStat2, errMsg2); call SetErrStat(errStat2, errMsg2, errStat, errMsg, routineName) @@ -3448,6 +3453,7 @@ SUBROUTINE AllocateNodeLoadVariables(InitInp, p, m, NNodes, errStat, errMsg ) m%F_D_End = 0.0 m%F_B_End = 0.0 m%F_IMG_End = 0.0 + m%F_tot_End = 0.0 p%DP_Const_End = 0.0 p%I_MG_End = 0.0 p%Mass_MG_End = 0.0 @@ -4521,6 +4527,23 @@ SUBROUTINE Morison_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, errStat, ! External Hydrodynamic Side Loads - End ! !-----------------------------------------------------------------------------------------------------! + ! Compute total member force and moment about PRP if OutAll + ! Cannot use mesh force and moment above because multiple members can share the same end joints + ! Todo: Restructure the code above to avoid having to sum the load components twice. + ! This is ok for now because we only do this if p%OutAll = true + if (p%OutAll) then + m%memberLoads(im)%F_tot = 0.0_ReKi + do i = 1,N+1 + m%memberLoads(im)%F_sum(:,i) = m%memberLoads(im)%F_D(:,i) + m%memberLoads(im)%F_I(:,i) + m%memberLoads(im)%F_A(:,i) + & + m%memberLoads(im)%F_B(:,i) + m%memberLoads(im)%F_BF(:,i) + m%memberLoads(im)%F_IF(:,i) + & + m%memberLoads(im)%F_WMG(:,i) + m%memberLoads(im)%F_IMG(:,i) + m%memberLoads(im)%F_tot = m%memberLoads(im)%F_tot + m%memberLoads(im)%F_sum(:,i) + m%memberLoads(im)%F_tot(4:6) = m%memberLoads(im)%F_tot(4:6) + & + cross_product( u%Mesh%Position(:,mem%NodeIndx(i))+u%Mesh%TranslationDisp(:,mem%NodeIndx(i))-u%PRP, & + m%memberLoads(im)%F_sum(1:3,i)) + end do + end if + !-----------------------------------------------------------------------------------------------------! ! Any end plate loads that are modeled on a per-member basis: F_B and F_BF ! !-----------------------------------------------------------------------------------------------------! @@ -4755,13 +4778,16 @@ SUBROUTINE Morison_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, errStat, + p%DragLoFSc_End(j) * An_End(i) * p%DragConst_End(j) * abs(vmag) *max(vmag, 0.0_ReKi) m%F_D_End(i,j) = 2.0_ReKi * m%F_D_End(i,j) END IF - - y%Mesh%Force(i,j) = y%Mesh%Force(i,j) + m%F_D_End(i,j) + m%F_I_End(i,j) + p%F_WMG_End(i,j) + m%F_B_End(i,j) + m%F_BF_End(i,j) + m%F_A_End(i,j) + m%F_IMG_End(i,j) + m%F_tot_End(i,j) = m%F_D_End(i,j) + m%F_I_End(i,j) + p%F_WMG_End(i,j) + m%F_B_End(i,j) + m%F_BF_End(i,j) + m%F_A_End(i,j) + m%F_IMG_End(i,j) + y%Mesh%Force(i,j) = y%Mesh%Force(i,j) + m%F_tot_End(i,j) ELSE ! Three moment components - y%Mesh%Moment(i-3,j) = y%Mesh%Moment(i-3,j) + m%F_B_End(i,j) + m%F_BF_End(i,j) + m%F_IMG_End(i,j) + m%F_tot_End(i,j) = m%F_B_End(i,j) + m%F_BF_End(i,j) + m%F_IMG_End(i,j) + y%Mesh%Moment(i-3,j) = y%Mesh%Moment(i-3,j) + m%F_tot_End(i,j) END IF END DO ! I=1,6 - + ! Compute and save the joint total moment about PRP for output file + m%F_tot_End(4:6,j) = m%F_tot_End(4:6,j) + cross_product( u%Mesh%Position(:,j)+u%Mesh%TranslationDisp(:,j)-u%PRP, m%F_tot_End(1:3,j)) + END DO ! J = 1, p%NJoints !---------------------------------------------------------------------------------------------------------------! diff --git a/modules/hydrodyn/src/Morison.txt b/modules/hydrodyn/src/Morison.txt index e14c5a9aff..f8da63bbea 100644 --- a/modules/hydrodyn/src/Morison.txt +++ b/modules/hydrodyn/src/Morison.txt @@ -248,6 +248,8 @@ typedef ^ ^ ReKi typedef ^ ^ ReKi FV {:}{:} - - "Fluid velocity at line element node at time t, which may not correspond to the WaveTime array of times" - typedef ^ ^ ReKi FA {:}{:} - - "Fluid acceleration at line element node at time t, which may not correspond to the WaveTime array of times" - typedef ^ ^ ReKi F_DP {:}{:} - - "Lumped dynamic pressure loads at time t, which may not correspond to the WaveTime array of times" - +typedef ^ ^ ReKi F_sum {:}{:} - - "Member-based (side-effects) Nodal combined loads at time t" - +typedef ^ ^ ReKi F_tot {6} - - "Member total force and moment" - # typedef ^ Morison_CoefMembersCyl INTEGER MemberID - - - "User-specified integer id for the Member-based coefs" - typedef ^ ^ ReKi MemberCd1 - - - "Cylindrical member-based coefs, see above descriptions for meanings (1 = start, 2=end)" - @@ -405,6 +407,7 @@ typedef ^ ^ INTEGER typedef ^ ^ Morison_JOutput JOutLst {:} - - "" - typedef ^ ^ CHARACTER(ChanLen) OutList {:} - - "This list size needs to be the maximum # of possible outputs because of the use of ReadAry(). Use MaxMrsnOutputs" - typedef ^ ^ INTEGER NumOuts - - - "" - +typedef ^ ^ LOGICAL OutAll - .false. - "Output all user-specified member and joint loads (only total member loads, not interior locations) [T/F]" - typedef ^ ^ INTEGER UnSum - - - "" - typedef ^ ^ SeaSt_WaveFieldType *WaveField - - - "Pointer to SeaState wave field" - typedef ^ ^ logical VisMeshes - .false. - "Output visualization meshes" - @@ -458,7 +461,8 @@ typedef ^ ^ ReKi typedef ^ ^ ReKi F_I_End {:}{:} - - "Lumped intertia loads at time t, which may not correspond to the WaveTime array of times" - typedef ^ ^ ReKi F_IMG_End {:}{:} - - "Joint marine growth intertia loads at time t, which may not correspond to the WaveTime array of times" - typedef ^ ^ ReKi F_A_End {:}{:} - - "Lumped added mass loads at time t, which may not correspond to the WaveTime array of times" - -typedef ^ ^ ReKi F_BF_End {:}{:} - - "" - +typedef ^ ^ ReKi F_BF_End {:}{:} - - "Joint internal ballast hydrostatic loads" - +typedef ^ ^ ReKi F_tot_End {:}{:} - - "Joint total loads" typedef ^ ^ ReKi V_rel_n {:} - - "Normal relative flow velocity at joints" m/s typedef ^ ^ ReKi V_rel_n_HiPass {:} - - "High-pass filtered normal relative flow velocity at joints" m/s typedef ^ ^ ReKi zFillGroup {:} - - "Instantaneous highest point of each filled group" m @@ -494,6 +498,7 @@ typedef ^ ^ INTEGER typedef ^ ^ Morison_JOutput JOutLst {:} - - "" - typedef ^ ^ OutParmType OutParam {:} - - "" - typedef ^ ^ INTEGER NumOuts - - - "" - +typedef ^ ^ LOGICAL OutAll - .false. - "Output all user-specified member and joint loads (only total member loads, not interior locations) [T/F]" - typedef ^ ^ SeaSt_WaveFieldType *WaveField - - - "SeaState wave field" - typedef ^ ^ logical VisMeshes - .false. - "Output visualization meshes" - typedef ^ ^ INTEGER PtfmYMod - - - "Large yaw model" - @@ -506,6 +511,7 @@ typedef ^ ^ Morison_Fil # typedef ^ InputType MeshType Mesh - - - "Kinematics of each node input mesh" - typedef ^ ^ ReKi PtfmRefY - - - "Reference platform yaw offset" (rad) +typedef ^ ^ ReKi PRP {3} - - "Coordinates of the principal reference point" (m) # # # ..... Outputs ................................................................................................................... diff --git a/modules/hydrodyn/src/Morison_Output.f90 b/modules/hydrodyn/src/Morison_Output.f90 index 642309b98c..efa49bd580 100644 --- a/modules/hydrodyn/src/Morison_Output.f90 +++ b/modules/hydrodyn/src/Morison_Output.f90 @@ -7924,7 +7924,24 @@ SUBROUTINE MrsnOut_MapOutputs( y, p, u, m ) END DO END IF ! p%NumOuts > 0 - + + IF (.not.p%OutAll) RETURN + + I = p%NumOuts + DO im = 1,p%NMembers + y%WriteOutput(I+1:I+6) = m%MemberLoads(im)%F_tot + I = I + 6_IntKi + END DO + DO im = 1,p%NJoints + y%WriteOutput(I+1:I+6) = m%F_tot_End(:,im) + I = I + 6_IntKi + END DO + DO im = 1,p%NNodes + y%WriteOutput(I+1:I+3) = y%Mesh%Force(:,im) + y%WriteOutput(I+4:I+6) = y%Mesh%Moment(:,im) + I = I + 6_IntKi + END DO + END SUBROUTINE MrsnOut_MapOutputs @@ -8008,20 +8025,22 @@ SUBROUTINE MrsnOut_Init( InitInp, y, p, InitOut, ErrStat, ErrMsg ) ! Check that the variables in OutList are valid !------------------------------------------------------------------------------------------------- -! MrsnOut_Data%NumOuts = HDO_InitData%NumOuts -if (p%NumOuts > 0 ) THEN - CALL SetOutParam( InitInp%OutList, p, ErrStat, ErrMsg ) - IF ( ErrStat >= AbortErrLev ) RETURN -END IF + ! MrsnOut_Data%NumOuts = HDO_InitData%NumOuts + IF ( (p%NumOuts > 0_IntKi) .or. p%OutAll ) THEN + CALL SetOutParam( InitInp%OutList, p, ErrStat, ErrMsg ) + IF ( ErrStat >= AbortErrLev ) RETURN + END IF !------------------------------------------------------------------------------------------------- ! Open the output file, if necessary, and write the header !------------------------------------------------------------------------------------------------- - IF ( ALLOCATED( p%OutParam ) .AND. p%NumOuts > 0 ) THEN ! Output has been requested so let's open an output file + IF ( .not. allocated(p%OutParam) ) return + + IF ( size(p%OutParam) > 0 ) THEN ! Output has been requested so let's open an output file - ALLOCATE( y%WriteOutput( p%NumOuts ), STAT = ErrStat ) + ALLOCATE( y%WriteOutput( size(p%OutParam) ), STAT = ErrStat ) IF ( ErrStat /= ErrID_None ) THEN ErrMsg = ' Error allocating space for WriteOutput array.' ErrStat = ErrID_Fatal @@ -8056,14 +8075,14 @@ SUBROUTINE MrsnOut_Init( InitInp, y, p, InitOut, ErrStat, ErrMsg ) ! These variables are to help follow the framework template, but the data in them is simply a copy of data ! already available in the OutParam data structure - ALLOCATE ( InitOut%WriteOutputHdr(p%NumOuts), STAT = ErrStat ) + ALLOCATE ( InitOut%WriteOutputHdr(size(p%OutParam)), STAT = ErrStat ) IF ( ErrStat /= ErrID_None ) THEN ErrMsg = ' Error allocating space for WriteOutputHdr array.' ErrStat = ErrID_Fatal RETURN END IF - ALLOCATE ( InitOut%WriteOutputUnt(p%NumOuts), STAT = ErrStat ) + ALLOCATE ( InitOut%WriteOutputUnt(size(p%OutParam)), STAT = ErrStat ) IF ( ErrStat /= ErrID_None ) THEN ErrMsg = ' Error allocating space for WriteOutputHdr array.' ErrStat = ErrID_Fatal @@ -8072,7 +8091,7 @@ SUBROUTINE MrsnOut_Init( InitInp, y, p, InitOut, ErrStat, ErrMsg ) - DO I = 1,p%NumOuts + DO I = 1,size(p%OutParam) InitOut%WriteOutputHdr(I) = TRIM( p%OutParam(I)%Name ) InitOut%WriteOutputUnt(I) = TRIM( p%OutParam(I)%Units ) @@ -8942,8 +8961,11 @@ SUBROUTINE SetOutParam(OutList, p, ErrStat, ErrMsg ) ! Allocate and set index, name, and units for the output channels ! If a selected output channel is not available in this module, set error flag. !------------------------------------------------------------------------------------------------- - - ALLOCATE ( p%OutParam(1:p%NumOuts) , STAT=ErrStat2 ) + if (p%OutAll) then + ALLOCATE ( p%OutParam(1:(p%NumOuts + 6_IntKi*p%NMembers + 6_IntKi*p%NJoints + 6_IntKi*p%NNodes)) , STAT=ErrStat2 ) + else + ALLOCATE ( p%OutParam(1:p%NumOuts) , STAT=ErrStat2 ) + endif IF ( ErrStat2 /= 0_IntKi ) THEN CALL SetErrStat( ErrID_Fatal,"Error allocating memory for the Morison OutParam array.", ErrStat, ErrMsg, RoutineName ) RETURN @@ -8985,6 +9007,67 @@ SUBROUTINE SetOutParam(OutList, p, ErrStat, ErrMsg ) END DO + if (p%OutAll) then + k = p%NumOuts + do i = 1,p%NMembers + p%OutParam(k+1)%Name = "M"//trim(num2lstr(i))//"TotFxi" + p%OutParam(k+1)%Units = "(N)" + p%OutParam(k+2)%Name = "M"//trim(num2lstr(i))//"TotFyi" + p%OutParam(k+2)%Units = "(N)" + p%OutParam(k+3)%Name = "M"//trim(num2lstr(i))//"TotFzi" + p%OutParam(k+3)%Units = "(N)" + p%OutParam(k+4)%Name = "M"//trim(num2lstr(i))//"TotMxi" + p%OutParam(k+4)%Units = "(N-m)" + p%OutParam(k+5)%Name = "M"//trim(num2lstr(i))//"TotMyi" + p%OutParam(k+5)%Units = "(N-m)" + p%OutParam(k+6)%Name = "M"//trim(num2lstr(i))//"TotMzi" + p%OutParam(k+6)%Units = "(N-m)" + do j = 1,6 + k = k + 1_IntKi + p%OutParam(k)%Indx = -1_IntKi + p%OutParam(k)%SignM = 1_IntKi + end do + end do + do i = 1,p%NJoints + p%OutParam(k+1)%Name = "J"//trim(num2lstr(i))//"TotFxi" + p%OutParam(k+1)%Units = "(N)" + p%OutParam(k+2)%Name = "J"//trim(num2lstr(i))//"TotFyi" + p%OutParam(k+2)%Units = "(N)" + p%OutParam(k+3)%Name = "J"//trim(num2lstr(i))//"TotFzi" + p%OutParam(k+3)%Units = "(N)" + p%OutParam(k+4)%Name = "J"//trim(num2lstr(i))//"TotMxi" + p%OutParam(k+4)%Units = "(N-m)" + p%OutParam(k+5)%Name = "J"//trim(num2lstr(i))//"TotMyi" + p%OutParam(k+5)%Units = "(N-m)" + p%OutParam(k+6)%Name = "J"//trim(num2lstr(i))//"TotMzi" + p%OutParam(k+6)%Units = "(N-m)" + do j = 1,6 + k = k + 1_IntKi + p%OutParam(k)%Indx = -1_IntKi + p%OutParam(k)%SignM = 1_IntKi + end do + end do + do i = 1,p%NNodes + p%OutParam(k+1)%Name = "N"//trim(num2lstr(i))//"TotFxi" + p%OutParam(k+1)%Units = "(N)" + p%OutParam(k+2)%Name = "N"//trim(num2lstr(i))//"TotFyi" + p%OutParam(k+2)%Units = "(N)" + p%OutParam(k+3)%Name = "N"//trim(num2lstr(i))//"TotFzi" + p%OutParam(k+3)%Units = "(N)" + p%OutParam(k+4)%Name = "N"//trim(num2lstr(i))//"TotMxi" + p%OutParam(k+4)%Units = "(N-m)" + p%OutParam(k+5)%Name = "N"//trim(num2lstr(i))//"TotMyi" + p%OutParam(k+5)%Units = "(N-m)" + p%OutParam(k+6)%Name = "N"//trim(num2lstr(i))//"TotMzi" + p%OutParam(k+6)%Units = "(N-m)" + do j = 1,6 + k = k + 1_IntKi + p%OutParam(k)%Indx = -1_IntKi + p%OutParam(k)%SignM = 1_IntKi + end do + end do + end if + RETURN END SUBROUTINE SetOutParam !---------------------------------------------------------------------------------------------------------------------------------- diff --git a/modules/hydrodyn/src/Morison_Types.f90 b/modules/hydrodyn/src/Morison_Types.f90 index 23f4f011c0..3ab02c2918 100644 --- a/modules/hydrodyn/src/Morison_Types.f90 +++ b/modules/hydrodyn/src/Morison_Types.f90 @@ -297,6 +297,8 @@ MODULE Morison_Types REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: FV !< Fluid velocity at line element node at time t, which may not correspond to the WaveTime array of times [-] REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: FA !< Fluid acceleration at line element node at time t, which may not correspond to the WaveTime array of times [-] REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: F_DP !< Lumped dynamic pressure loads at time t, which may not correspond to the WaveTime array of times [-] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: F_sum !< Member-based (side-effects) Nodal combined loads at time t [-] + REAL(ReKi) , DIMENSION(1:6) :: F_tot = 0.0_ReKi !< Member total force and moment [-] END TYPE Morison_MemberLoads ! ======================= ! ========= Morison_CoefMembersCyl ======= @@ -473,6 +475,7 @@ MODULE Morison_Types TYPE(Morison_JOutput) , DIMENSION(:), ALLOCATABLE :: JOutLst !< [-] CHARACTER(ChanLen) , DIMENSION(:), ALLOCATABLE :: OutList !< This list size needs to be the maximum # of possible outputs because of the use of ReadAry(). Use MaxMrsnOutputs [-] INTEGER(IntKi) :: NumOuts = 0_IntKi !< [-] + LOGICAL :: OutAll = .false. !< Output all user-specified member and joint loads (only total member loads, not interior locations) [T/F] [-] INTEGER(IntKi) :: UnSum = 0_IntKi !< [-] TYPE(SeaSt_WaveFieldType) , POINTER :: WaveField => NULL() !< Pointer to SeaState wave field [-] LOGICAL :: VisMeshes = .false. !< Output visualization meshes [-] @@ -526,7 +529,8 @@ MODULE Morison_Types REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: F_I_End !< Lumped intertia loads at time t, which may not correspond to the WaveTime array of times [-] REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: F_IMG_End !< Joint marine growth intertia loads at time t, which may not correspond to the WaveTime array of times [-] REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: F_A_End !< Lumped added mass loads at time t, which may not correspond to the WaveTime array of times [-] - REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: F_BF_End !< [-] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: F_BF_End !< Joint internal ballast hydrostatic loads [-] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: F_tot_End !< Joint total loads [-] REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: V_rel_n !< Normal relative flow velocity at joints [m/s] REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: V_rel_n_HiPass !< High-pass filtered normal relative flow velocity at joints [m/s] REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: zFillGroup !< Instantaneous highest point of each filled group [m] @@ -561,6 +565,7 @@ MODULE Morison_Types TYPE(Morison_JOutput) , DIMENSION(:), ALLOCATABLE :: JOutLst !< [-] TYPE(OutParmType) , DIMENSION(:), ALLOCATABLE :: OutParam !< [-] INTEGER(IntKi) :: NumOuts = 0_IntKi !< [-] + LOGICAL :: OutAll = .false. !< Output all user-specified member and joint loads (only total member loads, not interior locations) [T/F] [-] TYPE(SeaSt_WaveFieldType) , POINTER :: WaveField => NULL() !< SeaState wave field [-] LOGICAL :: VisMeshes = .false. !< Output visualization meshes [-] INTEGER(IntKi) :: PtfmYMod = 0_IntKi !< Large yaw model [-] @@ -572,6 +577,7 @@ MODULE Morison_Types TYPE, PUBLIC :: Morison_InputType TYPE(MeshType) :: Mesh !< Kinematics of each node input mesh [-] REAL(ReKi) :: PtfmRefY = 0.0_ReKi !< Reference platform yaw offset [(rad)] + REAL(ReKi) , DIMENSION(1:3) :: PRP = 0.0_ReKi !< Coordinates of the principal reference point [(m)] END TYPE Morison_InputType ! ======================= ! ========= Morison_OutputType ======= @@ -584,9 +590,10 @@ MODULE Morison_Types integer(IntKi), public, parameter :: Morison_x_DummyContState = 1 ! Morison%DummyContState integer(IntKi), public, parameter :: Morison_u_Mesh = 2 ! Morison%Mesh integer(IntKi), public, parameter :: Morison_u_PtfmRefY = 3 ! Morison%PtfmRefY - integer(IntKi), public, parameter :: Morison_y_Mesh = 4 ! Morison%Mesh - integer(IntKi), public, parameter :: Morison_y_VisMesh = 5 ! Morison%VisMesh - integer(IntKi), public, parameter :: Morison_y_WriteOutput = 6 ! Morison%WriteOutput + integer(IntKi), public, parameter :: Morison_u_PRP = 4 ! Morison%PRP + integer(IntKi), public, parameter :: Morison_y_Mesh = 5 ! Morison%Mesh + integer(IntKi), public, parameter :: Morison_y_VisMesh = 6 ! Morison%VisMesh + integer(IntKi), public, parameter :: Morison_y_WriteOutput = 7 ! Morison%WriteOutput contains @@ -2632,6 +2639,19 @@ subroutine Morison_CopyMemberLoads(SrcMemberLoadsData, DstMemberLoadsData, CtrlC end if DstMemberLoadsData%F_DP = SrcMemberLoadsData%F_DP end if + if (allocated(SrcMemberLoadsData%F_sum)) then + LB(1:2) = lbound(SrcMemberLoadsData%F_sum) + UB(1:2) = ubound(SrcMemberLoadsData%F_sum) + if (.not. allocated(DstMemberLoadsData%F_sum)) then + allocate(DstMemberLoadsData%F_sum(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMemberLoadsData%F_sum.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMemberLoadsData%F_sum = SrcMemberLoadsData%F_sum + end if + DstMemberLoadsData%F_tot = SrcMemberLoadsData%F_tot end subroutine subroutine Morison_DestroyMemberLoads(MemberLoadsData, ErrStat, ErrMsg) @@ -2674,6 +2694,9 @@ subroutine Morison_DestroyMemberLoads(MemberLoadsData, ErrStat, ErrMsg) if (allocated(MemberLoadsData%F_DP)) then deallocate(MemberLoadsData%F_DP) end if + if (allocated(MemberLoadsData%F_sum)) then + deallocate(MemberLoadsData%F_sum) + end if end subroutine subroutine Morison_PackMemberLoads(RF, Indata) @@ -2692,6 +2715,8 @@ subroutine Morison_PackMemberLoads(RF, Indata) call RegPackAlloc(RF, InData%FV) call RegPackAlloc(RF, InData%FA) call RegPackAlloc(RF, InData%F_DP) + call RegPackAlloc(RF, InData%F_sum) + call RegPack(RF, InData%F_tot) if (RegCheckErr(RF, RoutineName)) return end subroutine @@ -2714,6 +2739,8 @@ subroutine Morison_UnPackMemberLoads(RF, OutData) call RegUnpackAlloc(RF, OutData%FV); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%FA); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%F_DP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_sum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%F_tot); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyCoefMembersCyl(SrcCoefMembersCylData, DstCoefMembersCylData, CtrlCode, ErrStat, ErrMsg) @@ -3530,6 +3557,7 @@ subroutine Morison_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, E DstInitInputData%OutList = SrcInitInputData%OutList end if DstInitInputData%NumOuts = SrcInitInputData%NumOuts + DstInitInputData%OutAll = SrcInitInputData%OutAll DstInitInputData%UnSum = SrcInitInputData%UnSum DstInitInputData%WaveField => SrcInitInputData%WaveField DstInitInputData%VisMeshes = SrcInitInputData%VisMeshes @@ -3869,6 +3897,7 @@ subroutine Morison_PackInitInput(RF, Indata) end if call RegPackAlloc(RF, InData%OutList) call RegPack(RF, InData%NumOuts) + call RegPack(RF, InData%OutAll) call RegPack(RF, InData%UnSum) call RegPack(RF, associated(InData%WaveField)) if (associated(InData%WaveField)) then @@ -4131,6 +4160,7 @@ subroutine Morison_UnPackInitInput(RF, OutData) end if call RegUnpackAlloc(RF, OutData%OutList); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutAll); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%UnSum); if (RegCheckErr(RF, RoutineName)) return if (associated(OutData%WaveField)) deallocate(OutData%WaveField) call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return @@ -4666,6 +4696,18 @@ subroutine Morison_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) end if DstMiscData%F_BF_End = SrcMiscData%F_BF_End end if + if (allocated(SrcMiscData%F_tot_End)) then + LB(1:2) = lbound(SrcMiscData%F_tot_End) + UB(1:2) = ubound(SrcMiscData%F_tot_End) + if (.not. allocated(DstMiscData%F_tot_End)) then + allocate(DstMiscData%F_tot_End(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMiscData%F_tot_End.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMiscData%F_tot_End = SrcMiscData%F_tot_End + end if if (allocated(SrcMiscData%V_rel_n)) then LB(1:1) = lbound(SrcMiscData%V_rel_n) UB(1:1) = ubound(SrcMiscData%V_rel_n) @@ -4781,6 +4823,9 @@ subroutine Morison_DestroyMisc(MiscData, ErrStat, ErrMsg) if (allocated(MiscData%F_BF_End)) then deallocate(MiscData%F_BF_End) end if + if (allocated(MiscData%F_tot_End)) then + deallocate(MiscData%F_tot_End) + end if if (allocated(MiscData%V_rel_n)) then deallocate(MiscData%V_rel_n) end if @@ -4829,6 +4874,7 @@ subroutine Morison_PackMisc(RF, Indata) call RegPackAlloc(RF, InData%F_IMG_End) call RegPackAlloc(RF, InData%F_A_End) call RegPackAlloc(RF, InData%F_BF_End) + call RegPackAlloc(RF, InData%F_tot_End) call RegPackAlloc(RF, InData%V_rel_n) call RegPackAlloc(RF, InData%V_rel_n_HiPass) call RegPackAlloc(RF, InData%zFillGroup) @@ -4876,6 +4922,7 @@ subroutine Morison_UnPackMisc(RF, OutData) call RegUnpackAlloc(RF, OutData%F_IMG_End); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%F_A_End); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%F_BF_End); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_tot_End); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%V_rel_n); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%V_rel_n_HiPass); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%zFillGroup); if (RegCheckErr(RF, RoutineName)) return @@ -5091,6 +5138,7 @@ subroutine Morison_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrM end do end if DstParamData%NumOuts = SrcParamData%NumOuts + DstParamData%OutAll = SrcParamData%OutAll DstParamData%WaveField => SrcParamData%WaveField DstParamData%VisMeshes = SrcParamData%VisMeshes DstParamData%PtfmYMod = SrcParamData%PtfmYMod @@ -5267,6 +5315,7 @@ subroutine Morison_PackParam(RF, Indata) end do end if call RegPack(RF, InData%NumOuts) + call RegPack(RF, InData%OutAll) call RegPack(RF, associated(InData%WaveField)) if (associated(InData%WaveField)) then call RegPackPointer(RF, c_loc(InData%WaveField), PtrInIndex) @@ -5373,6 +5422,7 @@ subroutine Morison_UnPackParam(RF, OutData) end do end if call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutAll); if (RegCheckErr(RF, RoutineName)) return if (associated(OutData%WaveField)) deallocate(OutData%WaveField) call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then @@ -5424,6 +5474,7 @@ subroutine Morison_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrM call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) if (ErrStat >= AbortErrLev) return DstInputData%PtfmRefY = SrcInputData%PtfmRefY + DstInputData%PRP = SrcInputData%PRP end subroutine subroutine Morison_DestroyInput(InputData, ErrStat, ErrMsg) @@ -5446,6 +5497,7 @@ subroutine Morison_PackInput(RF, Indata) if (RF%ErrStat >= AbortErrLev) return call MeshPack(RF, InData%Mesh) call RegPack(RF, InData%PtfmRefY) + call RegPack(RF, InData%PRP) if (RegCheckErr(RF, RoutineName)) return end subroutine @@ -5456,6 +5508,7 @@ subroutine Morison_UnPackInput(RF, OutData) if (RF%ErrStat /= ErrID_None) return call MeshUnpack(RF, OutData%Mesh) ! Mesh call RegUnpack(RF, OutData%PtfmRefY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PRP); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -5610,6 +5663,8 @@ SUBROUTINE Morison_Input_ExtrapInterp1(u1, u2, tin, u_out, tin_out, ErrStat, Err REAL(DbKi) :: a1, a2 ! temporary for extrapolation/interpolation INTEGER(IntKi) :: ErrStat2 ! local errors CHARACTER(ErrMsgLen) :: ErrMsg2 ! local errors + INTEGER :: i01 ! dim1 level 0 counter variable for arrays of ddts + INTEGER :: i1 ! dim1 counter variable for arrays ! Initialize ErrStat ErrStat = ErrID_None ErrMsg = '' @@ -5630,6 +5685,7 @@ SUBROUTINE Morison_Input_ExtrapInterp1(u1, u2, tin, u_out, tin_out, ErrStat, Err CALL MeshExtrapInterp1(u1%Mesh, u2%Mesh, tin, u_out%Mesh, tin_out, ErrStat2, ErrMsg2) CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) u_out%PtfmRefY = a1*u1%PtfmRefY + a2*u2%PtfmRefY + u_out%PRP = a1*u1%PRP + a2*u2%PRP END SUBROUTINE SUBROUTINE Morison_Input_ExtrapInterp2(u1, u2, u3, tin, u_out, tin_out, ErrStat, ErrMsg ) @@ -5662,6 +5718,8 @@ SUBROUTINE Morison_Input_ExtrapInterp2(u1, u2, u3, tin, u_out, tin_out, ErrStat, INTEGER(IntKi) :: ErrStat2 ! local errors CHARACTER(ErrMsgLen) :: ErrMsg2 ! local errors CHARACTER(*), PARAMETER :: RoutineName = 'Morison_Input_ExtrapInterp2' + INTEGER :: i01 ! dim1 level 0 counter variable for arrays of ddts + INTEGER :: i1 ! dim1 counter variable for arrays ! Initialize ErrStat ErrStat = ErrID_None ErrMsg = '' @@ -5688,6 +5746,7 @@ SUBROUTINE Morison_Input_ExtrapInterp2(u1, u2, u3, tin, u_out, tin_out, ErrStat, CALL MeshExtrapInterp2(u1%Mesh, u2%Mesh, u3%Mesh, tin, u_out%Mesh, tin_out, ErrStat2, ErrMsg2) CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) u_out%PtfmRefY = a1*u1%PtfmRefY + a2*u2%PtfmRefY + a3*u3%PtfmRefY + u_out%PRP = a1*u1%PRP + a2*u2%PRP + a3*u3%PRP END SUBROUTINE subroutine Morison_Output_ExtrapInterp(y, t, y_out, t_out, ErrStat, ErrMsg) @@ -5985,6 +6044,8 @@ subroutine Morison_VarPackInput(V, u, ValAry) call MV_PackMesh(V, u%Mesh, ValAry) ! Mesh case (Morison_u_PtfmRefY) VarVals(1) = u%PtfmRefY ! Scalar + case (Morison_u_PRP) + VarVals = u%PRP(V%iLB:V%iUB) ! Rank 1 Array case default VarVals = 0.0_R8Ki end select @@ -6011,6 +6072,8 @@ subroutine Morison_VarUnpackInput(V, ValAry, u) call MV_UnpackMesh(V, ValAry, u%Mesh) ! Mesh case (Morison_u_PtfmRefY) u%PtfmRefY = VarVals(1) ! Scalar + case (Morison_u_PRP) + u%PRP(V%iLB:V%iUB) = VarVals ! Rank 1 Array end select end associate end subroutine @@ -6023,6 +6086,8 @@ function Morison_InputFieldName(DL) result(Name) Name = "u%Mesh" case (Morison_u_PtfmRefY) Name = "u%PtfmRefY" + case (Morison_u_PRP) + Name = "u%PRP" case default Name = "Unknown Field" end select diff --git a/modules/moordyn/src/MoorDyn.f90 b/modules/moordyn/src/MoorDyn.f90 index 67191d4609..cd1e02a1e2 100644 --- a/modules/moordyn/src/MoorDyn.f90 +++ b/modules/moordyn/src/MoorDyn.f90 @@ -487,6 +487,8 @@ SUBROUTINE MD_Init(InitInp, u, p, x, xd, z, other, y, m, DTcoupling, InitOut, Er read (OptValue,*) p%inertialF else if ( OptString == 'INERTIALF_RAMPT') then read (OptValue,*) p%inertialF_rampT + else if ( OptString == 'WAVEKIN_RAMPT') then + read (OptValue,*) p%waveKin_rampT else if ( OptString == 'OUTSWITCH') then read (OptValue,*) p%OutSwitch else if ( OptString == 'DISABLEOUTTIME') then @@ -501,6 +503,14 @@ SUBROUTINE MD_Init(InitInp, u, p, x, xd, z, other, y, m, DTcoupling, InitOut, Er Line = NextLine(i) END DO + + ! extract dtCoupling from input and warn if dtOut is invalid + p%dtCoupling = DTcoupling ! store coupling time step for use in updatestates + IF (p%dtOut > 0.0_DbKi .and. p%dtOut < DTcoupling) THEN + ErrStat2 = ErrID_Info + ErrMsg2 = 'MoorDyn dtOut is less than the coupling time step. Output will be written at the coupling time step.' + CALL CheckError( ErrStat2, ErrMsg2 ) + END IF if (p%writeLog > 1) then write(p%UnLog, '(A)' ) " - Options List:" @@ -1635,25 +1645,29 @@ SUBROUTINE MD_Init(InitInp, u, p, x, xd, z, other, y, m, DTcoupling, InitOut, Er ! process output flag characters (LineOutString) and set line output flag array (OutFlagList) m%LineList(l)%OutFlagList = 0 ! first set array all to zero ! per node 3 component - IF ( scan( LineOutString, 'p') > 0 ) m%LineList(l)%OutFlagList(2) = 1 ! node position (p) - IF ( scan( LineOutString, 'v') > 0 ) m%LineList(l)%OutFlagList(3) = 1 ! node velocity (v) - IF ( scan( LineOutString, 'U') > 0 ) m%LineList(l)%OutFlagList(4) = 1 ! node displacement (U) - IF ( scan( LineOutString, 'D') > 0 ) m%LineList(l)%OutFlagList(5) = 1 ! node rotation (D) - IF ( scan( LineOutString, 'b') > 0 ) m%LineList(l)%OutFlagList(6) = 1 ! seabed contact forces (B) - IF ( scan( LineOutString, 'V') > 0 ) m%LineList(l)%OutFlagList(7) = 1 ! VIV forces + IF ( scan( LineOutString, 'p') > 0 ) m%LineList(l)%OutFlagList(2) = 1 ! node position (p) + IF ( scan( LineOutString, 'v') > 0 ) m%LineList(l)%OutFlagList(3) = 1 ! node velocity (v) + IF ( scan( LineOutString, 'a') > 0 ) m%LineList(l)%OutFlagList(4) = 1 ! node acceleration (a) + IF ( scan( LineOutString, 'U') > 0 ) m%LineList(l)%OutFlagList(5) = 1 ! wave velocity (U) + IF ( scan( LineOutString, 'D') > 0 ) m%LineList(l)%OutFlagList(6) = 1 ! hydrodynamic force (D) + IF ( scan( LineOutString, 'b') > 0 ) m%LineList(l)%OutFlagList(7) = 1 ! seabed contact forces (b) + IF ( scan( LineOutString, 'V') > 0 ) m%LineList(l)%OutFlagList(8) = 1 ! VIV forces ! per node 1 component - IF ( scan( LineOutString, 'W') > 0 ) m%LineList(l)%OutFlagList(8) = 1 ! node weight/buoyancy (positive up) - IF ( scan( LineOutString, 'K') > 0 ) m%LineList(l)%OutFlagList(9) = 1 ! curvature at node + IF ( scan( LineOutString, 'W') > 0 ) m%LineList(l)%OutFlagList(9) = 1 ! node weight/buoyancy (positive up) + IF ( scan( LineOutString, 'K') > 0 ) m%LineList(l)%OutFlagList(10) = 1 ! curvature at node ! per element 1 component - IF ( scan( LineOutString, 't') > 0 ) m%LineList(l)%OutFlagList(10) = 1 ! segment tension force (just EA) - IF ( scan( LineOutString, 'c') > 0 ) m%LineList(l)%OutFlagList(11) = 1 ! segment internal damping force - IF ( scan( LineOutString, 's') > 0 ) m%LineList(l)%OutFlagList(12) = 1 ! Segment strain - IF ( scan( LineOutString, 'd') > 0 ) m%LineList(l)%OutFlagList(13) = 1 ! Segment strain rate - IF ( scan( LineOutString, 'l') > 0 ) m%LineList(l)%OutFlagList(14) = 1 ! Segment stretched length + IF ( scan( LineOutString, 't') > 0 ) m%LineList(l)%OutFlagList(11) = 1 ! segment tension force (just EA) + IF ( scan( LineOutString, 'c') > 0 ) m%LineList(l)%OutFlagList(12) = 1 ! segment internal damping force + IF ( scan( LineOutString, 's') > 0 ) m%LineList(l)%OutFlagList(13) = 1 ! Segment strain + IF ( scan( LineOutString, 'd') > 0 ) m%LineList(l)%OutFlagList(14) = 1 ! Segment strain rate + IF ( scan( LineOutString, 'l') > 0 ) m%LineList(l)%OutFlagList(15) = 1 ! Segment stretched length IF (SUM(m%LineList(l)%OutFlagList) > 0) m%LineList(l)%OutFlagList(1) = 1 ! this first entry signals whether to create any output file at all ! the above letter-index combinations define which OutFlagList entry corresponds to which output type + ! set flag to store node accelerations if needed for VIV or acceleration output + m%LineList(l)%store_rdd = (m%LineTypeList(m%LineList(l)%PropsIdNum)%Cl > 0) .OR. (m%LineList(l)%OutFlagList(4) == 1) + if (p%writeLog > 1) then write(p%UnLog, '(A)' ) " - Line"//trim(num2lstr(m%LineList(l)%IdNum))//":" @@ -2930,9 +2944,6 @@ SUBROUTINE MD_Init(InitInp, u, p, x, xd, z, other, y, m, DTcoupling, InitOut, Er END DO end if ! InputFileDat%TMaxIC > 0 - - - p%dtCoupling = DTcoupling ! store coupling time step for use in updatestates other%dummy = 0 xd%dummy = 0 diff --git a/modules/moordyn/src/MoorDyn_IO.f90 b/modules/moordyn/src/MoorDyn_IO.f90 index 3061b350f9..f3f149bf17 100644 --- a/modules/moordyn/src/MoorDyn_IO.f90 +++ b/modules/moordyn/src/MoorDyn_IO.f90 @@ -631,7 +631,7 @@ SUBROUTINE MDIO_ProcessOutList(OutList, p, m, y, InitOut, ErrStat, ErrMsg ) ! error ELSE CALL DenoteInvalidOutput(p%OutParam(I)) ! flag as invalid - CALL WrScr('Warning: invalid output specifier '//trim(OutListTmp)//'. Must start with L, R, or B') + CALL WrScr('Warning: invalid output specifier '//trim(OutListTmp)//'.') CYCLE END IF @@ -810,9 +810,9 @@ SUBROUTINE MDIO_ProcessOutList(OutList, p, m, y, InitOut, ErrStat, ErrMsg ) ! calculate number of output entries (excluding time) to write for this line - LineNumOuts = 3*(m%LineList(I)%N + 1)*SUM(m%LineList(I)%OutFlagList(2:7)) & - + (m%LineList(I)%N + 1)*SUM(m%LineList(I)%OutFlagList(8:9)) & - + m%LineList(I)%N*SUM(m%LineList(I)%OutFlagList(10:18)) + LineNumOuts = 3*(m%LineList(I)%N + 1)*SUM(m%LineList(I)%OutFlagList(2:8)) & + + (m%LineList(I)%N + 1)*SUM(m%LineList(I)%OutFlagList(9:10)) & + + m%LineList(I)%N*SUM(m%LineList(I)%OutFlagList(11:19)) ALLOCATE(m%LineList(I)%LineWrOutput( 1 + LineNumOuts), STAT = ErrStat) IF ( ErrStat /= ErrID_None ) THEN @@ -959,9 +959,9 @@ SUBROUTINE MDIO_OpenOutput( MD_ProgDesc, p, m, InitOut, ErrStat, ErrMsg ) ! calculate number of output entries (excluding time) to write for this line - LineNumOuts = 3*(m%LineList(I)%N + 1)*SUM(m%LineList(I)%OutFlagList(2:7)) & - + (m%LineList(I)%N + 1)*SUM(m%LineList(I)%OutFlagList(8:9)) & - + m%LineList(I)%N*SUM(m%LineList(I)%OutFlagList(10:18)) + LineNumOuts = 3*(m%LineList(I)%N + 1)*SUM(m%LineList(I)%OutFlagList(2:8)) & + + (m%LineList(I)%N + 1)*SUM(m%LineList(I)%OutFlagList(9:10)) & + + m%LineList(I)%N*SUM(m%LineList(I)%OutFlagList(11:19)) if (wordy > 2) PRINT *, LineNumOuts, " output channels" @@ -981,48 +981,52 @@ SUBROUTINE MDIO_OpenOutput( MD_ProgDesc, p, m, InitOut, ErrStat, ErrMsg ) END IF IF (m%LineList(I)%OutFlagList(4) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((3+3*m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & - ( p%Delim, 'Node'//TRIM(Int2Lstr(J))//'Ux', p%Delim, 'Node'//TRIM(Int2Lstr(J))//'Uy', p%Delim, 'Node'//TRIM(Int2Lstr(J))//'Uz', J=0,(m%LineList(I)%N) ) + ( p%Delim, 'Node'//TRIM(Int2Lstr(J))//'ax', p%Delim, 'Node'//TRIM(Int2Lstr(J))//'ay', p%Delim, 'Node'//TRIM(Int2Lstr(J))//'az', J=0,(m%LineList(I)%N) ) END IF IF (m%LineList(I)%OutFlagList(5) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((3+3*m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & - ( p%Delim, 'Node'//TRIM(Int2Lstr(J))//'Dx', p%Delim, 'Node'//TRIM(Int2Lstr(J))//'Dy', p%Delim, 'Node'//TRIM(Int2Lstr(J))//'Dz', J=0,(m%LineList(I)%N) ) + ( p%Delim, 'Node'//TRIM(Int2Lstr(J))//'Ux', p%Delim, 'Node'//TRIM(Int2Lstr(J))//'Uy', p%Delim, 'Node'//TRIM(Int2Lstr(J))//'Uz', J=0,(m%LineList(I)%N) ) END IF IF (m%LineList(I)%OutFlagList(6) == 1) THEN + WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((3+3*m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & + ( p%Delim, 'Node'//TRIM(Int2Lstr(J))//'Dx', p%Delim, 'Node'//TRIM(Int2Lstr(J))//'Dy', p%Delim, 'Node'//TRIM(Int2Lstr(J))//'Dz', J=0,(m%LineList(I)%N) ) + END IF + IF (m%LineList(I)%OutFlagList(7) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((3+3*m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & ( p%Delim, 'Node'//TRIM(Int2Lstr(J))//'bx', p%Delim, 'Node'//TRIM(Int2Lstr(J))//'by', p%Delim, 'Node'//TRIM(Int2Lstr(J))//'bz', J=0,(m%LineList(I)%N) ) END IF - IF (m%LineList(I)%OutFlagList(7) == 1) THEN + IF (m%LineList(I)%OutFlagList(8) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((3+3*m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & ( p%Delim, 'Node'//TRIM(Int2Lstr(J))//'Vx', p%Delim, 'Node'//TRIM(Int2Lstr(J))//'Vy', p%Delim, 'Node'//TRIM(Int2Lstr(J))//'Vz', J=0,(m%LineList(I)%N) ) ! TODO adjust these when force to internal nodes END IF - - IF (m%LineList(I)%OutFlagList(8) == 1) THEN + + IF (m%LineList(I)%OutFlagList(9) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & ( p%Delim, 'Node'//TRIM(Int2Lstr(J))//'Wz', J=0,(m%LineList(I)%N) ) END IF - IF (m%LineList(I)%OutFlagList(9) == 1) THEN + IF (m%LineList(I)%OutFlagList(10) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & ( p%Delim, 'Node'//TRIM(Int2Lstr(J))//'Kurv', J=0,(m%LineList(I)%N) ) END IF - - IF (m%LineList(I)%OutFlagList(10) == 1) THEN + + IF (m%LineList(I)%OutFlagList(11) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & ( p%Delim, 'Seg'//TRIM(Int2Lstr(J))//'Ten', J=1,(m%LineList(I)%N) ) END IF - IF (m%LineList(I)%OutFlagList(11) == 1) THEN + IF (m%LineList(I)%OutFlagList(12) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & ( p%Delim, 'Seg'//TRIM(Int2Lstr(J))//'Dmp', J=1,(m%LineList(I)%N) ) END IF - IF (m%LineList(I)%OutFlagList(12) == 1) THEN + IF (m%LineList(I)%OutFlagList(13) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & ( p%Delim, 'Seg'//TRIM(Int2Lstr(J))//'Str', J=1,(m%LineList(I)%N) ) END IF - IF (m%LineList(I)%OutFlagList(13) == 1) THEN + IF (m%LineList(I)%OutFlagList(14) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & ( p%Delim, 'Seg'//TRIM(Int2Lstr(J))//'SRt', J=1,(m%LineList(I)%N) ) END IF - IF (m%LineList(I)%OutFlagList(14)== 1) THEN + IF (m%LineList(I)%OutFlagList(15)== 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((m%LineList(I)%N)))//'(A1,A10))', advance='no', IOSTAT=ErrStat2) & ( p%Delim, 'Seg'//TRIM(Int2Lstr(J))//'Lst', J=1,(m%LineList(I)%N) ) END IF @@ -1043,11 +1047,11 @@ SUBROUTINE MDIO_OpenOutput( MD_ProgDesc, p, m, InitOut, ErrStat, ErrMsg ) END IF IF (m%LineList(I)%OutFlagList(4) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((3+3*m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & - ( p%Delim, '(m/s)', p%Delim, '(m/s)', p%Delim, '(m/s)', J=0,(m%LineList(I)%N) ) + ( p%Delim, '(m/s^2)', p%Delim, '(m/s^2)', p%Delim, '(m/s^2)', J=0,(m%LineList(I)%N) ) END IF IF (m%LineList(I)%OutFlagList(5) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((3+3*m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & - ( p%Delim, '(N)', p%Delim, '(N)', p%Delim, '(N)', J=0,(m%LineList(I)%N) ) + ( p%Delim, '(m/s)', p%Delim, '(m/s)', p%Delim, '(m/s)', J=0,(m%LineList(I)%N) ) END IF IF (m%LineList(I)%OutFlagList(6) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((3+3*m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & @@ -1057,33 +1061,37 @@ SUBROUTINE MDIO_OpenOutput( MD_ProgDesc, p, m, InitOut, ErrStat, ErrMsg ) WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((3+3*m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & ( p%Delim, '(N)', p%Delim, '(N)', p%Delim, '(N)', J=0,(m%LineList(I)%N) ) END IF - IF (m%LineList(I)%OutFlagList(8) == 1) THEN - WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & - ( p%Delim, '(Nup)', J=0,(m%LineList(I)%N) ) + WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((3+3*m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & + ( p%Delim, '(N)', p%Delim, '(N)', p%Delim, '(N)', J=0,(m%LineList(I)%N) ) END IF + IF (m%LineList(I)%OutFlagList(9) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & - ( p%Delim, '(1/m)', J=0,(m%LineList(I)%N) ) + ( p%Delim, '(Nup)', J=0,(m%LineList(I)%N) ) END IF - IF (m%LineList(I)%OutFlagList(10) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & - ( p%Delim, '(N)', J=1,(m%LineList(I)%N) ) + ( p%Delim, '(1/m)', J=0,(m%LineList(I)%N) ) END IF + IF (m%LineList(I)%OutFlagList(11) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & ( p%Delim, '(N)', J=1,(m%LineList(I)%N) ) END IF IF (m%LineList(I)%OutFlagList(12) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & - ( p%Delim, '(-)', J=1,(m%LineList(I)%N) ) + ( p%Delim, '(N)', J=1,(m%LineList(I)%N) ) END IF IF (m%LineList(I)%OutFlagList(13) == 1) THEN + WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & + ( p%Delim, '(-)', J=1,(m%LineList(I)%N) ) + END IF + IF (m%LineList(I)%OutFlagList(14) == 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((m%LineList(I)%N)))//'(A1,A15))', advance='no', IOSTAT=ErrStat2) & ( p%Delim, '(1/s)', J=1,(m%LineList(I)%N) ) END IF - IF (m%LineList(I)%OutFlagList(14)== 1) THEN + IF (m%LineList(I)%OutFlagList(15)== 1) THEN WRITE(m%LineList(I)%LineUnOut,'('//TRIM(Int2LStr((m%LineList(I)%N)))//'(A1,A10))', advance='no', IOSTAT=ErrStat2) & ( p%Delim, '(m)', J=1,(m%LineList(I)%N) ) END IF @@ -1668,9 +1676,9 @@ SUBROUTINE MDIO_WriteOutputs( Time, p, m, y, ErrStat, ErrMsg ) ! calculate number of output entries to write for this line !LineNumOuts = 3*(m%LineList(I)%N + 1)*SUM(m%LineList(I)%OutFlagList(2:5)) + m%LineList(I)%N*SUM(m%LineList(I)%OutFlagList(6:9)) - LineNumOuts = 3*(m%LineList(I)%N + 1)*SUM(m%LineList(I)%OutFlagList(2:6)) & - + (m%LineList(I)%N + 1)*SUM(m%LineList(I)%OutFlagList(7:9)) & - + m%LineList(I)%N*SUM(m%LineList(I)%OutFlagList(10:18)) + LineNumOuts = 3*(m%LineList(I)%N + 1)*SUM(m%LineList(I)%OutFlagList(2:8)) & + + (m%LineList(I)%N + 1)*SUM(m%LineList(I)%OutFlagList(9:10)) & + + m%LineList(I)%N*SUM(m%LineList(I)%OutFlagList(11:19)) if (m%LineList(I)%OutFlagList(2) == 1) THEN ! if node positions are included, make them using a float format for higher precision Frmt = '(F10.4,'//TRIM(Int2LStr(3*(m%LineList(I)%N + 1)))//'(A1,ES15.7),'//TRIM(Int2LStr(LineNumOuts - 3*(m%LineList(I)%N - 1)))//'(A1,ES15.7))' @@ -1692,8 +1700,8 @@ SUBROUTINE MDIO_WriteOutputs( Time, p, m, y, ErrStat, ErrMsg ) L = L+1 END DO END DO - END IF - + END IF + ! Node velocities IF (m%LineList(I)%OutFlagList(3) == 1) THEN DO J = 0,m%LineList(I)%N ! note index starts at zero because these are nodes @@ -1703,10 +1711,20 @@ SUBROUTINE MDIO_WriteOutputs( Time, p, m, y, ErrStat, ErrMsg ) END DO END DO END IF - - - ! Node wave velocities (not implemented yet) + + ! Node accelerations IF (m%LineList(I)%OutFlagList(4) == 1) THEN + DO J = 0,m%LineList(I)%N ! note index starts at zero because these are nodes + DO K = 1,3 + m%LineList(I)%LineWrOutput(L) = m%LineList(I)%rdd_old(K,J) + L = L+1 + END DO + END DO + END IF + + + ! Node wave velocities + IF (m%LineList(I)%OutFlagList(5) == 1) THEN DO J = 0,m%LineList(I)%N ! note index starts at zero because these are nodes DO K = 1,3 m%LineList(I)%LineWrOutput(L) = m%LineList(I)%U(K,J) @@ -1714,10 +1732,10 @@ SUBROUTINE MDIO_WriteOutputs( Time, p, m, y, ErrStat, ErrMsg ) END DO END DO END IF - - + + ! Node total hydrodynamic forces (except added mass - just drag for now) - IF (m%LineList(I)%OutFlagList(5) == 1) THEN + IF (m%LineList(I)%OutFlagList(6) == 1) THEN DO J = 0,m%LineList(I)%N ! note index starts at zero because these are nodes DO K = 1,3 m%LineList(I)%LineWrOutput(L) = m%LineList(I)%Dp(K,J) + m%LineList(I)%Dq(K,J) @@ -1725,56 +1743,56 @@ SUBROUTINE MDIO_WriteOutputs( Time, p, m, y, ErrStat, ErrMsg ) END DO END DO END IF - - + + ! Node seabed contact force - IF (m%LineList(I)%OutFlagList(6) == 1) THEN - DO J = 0,m%LineList(I)%N + IF (m%LineList(I)%OutFlagList(7) == 1) THEN + DO J = 0,m%LineList(I)%N DO K = 1,3 m%LineList(I)%LineWrOutput(L) = m%LineList(I)%B(K,J) L = L+1 END DO END DO END IF - + ! Node VIV force - IF (m%LineList(I)%OutFlagList(7) == 1) THEN - DO J = 0,m%LineList(I)%N + IF (m%LineList(I)%OutFlagList(8) == 1) THEN + DO J = 0,m%LineList(I)%N DO K = 1,3 m%LineList(I)%LineWrOutput(L) = m%LineList(I)%Lf(K,J) L = L+1 END DO END DO END IF - + ! Node weights - IF (m%LineList(I)%OutFlagList(8) == 1) THEN + IF (m%LineList(I)%OutFlagList(9) == 1) THEN DO J = 0,m%LineList(I)%N m%LineList(I)%LineWrOutput(L) = m%LineList(I)%W(3,J) L = L+1 END DO END IF - + ! Node curvatures - IF (m%LineList(I)%OutFlagList(9) == 1) THEN + IF (m%LineList(I)%OutFlagList(10) == 1) THEN DO J = 0,m%LineList(I)%N m%LineList(I)%LineWrOutput(L) = m%LineList(I)%Kurv(J) L = L+1 END DO END IF - - + + ! Segment tension force (excludes damping term, just EA) - IF (m%LineList(I)%OutFlagList(10) == 1) THEN - DO J = 1,m%LineList(I)%N + IF (m%LineList(I)%OutFlagList(11) == 1) THEN + DO J = 1,m%LineList(I)%N m%LineList(I)%LineWrOutput(L) = TwoNorm(m%LineList(I)%T(:,J) ) L = L+1 END DO END IF - + ! Segment internal damping force - IF (m%LineList(I)%OutFlagList(11) == 1) THEN - DO J = 1,m%LineList(I)%N + IF (m%LineList(I)%OutFlagList(12) == 1) THEN + DO J = 1,m%LineList(I)%N IF (( m%LineList(I)%Td(3,J)*m%LineList(I)%T(3,J) ) > 0) THEN ! if statement for handling sign (positive = tension) m%LineList(I)%LineWrOutput(L) = TwoNorm(m%LineList(I)%Td(:,J) ) ELSE @@ -1783,26 +1801,26 @@ SUBROUTINE MDIO_WriteOutputs( Time, p, m, y, ErrStat, ErrMsg ) L = L+1 END DO END IF - + ! Segment strain - IF (m%LineList(I)%OutFlagList(12) == 1) THEN - DO J = 1,m%LineList(I)%N - m%LineList(I)%LineWrOutput(L) = m%LineList(I)%lstr(J)/m%LineList(I)%l(J) - 1.0 + IF (m%LineList(I)%OutFlagList(13) == 1) THEN + DO J = 1,m%LineList(I)%N + m%LineList(I)%LineWrOutput(L) = m%LineList(I)%lstr(J)/m%LineList(I)%l(J) - 1.0 L = L+1 END DO END IF - + ! Segment strain rate - IF (m%LineList(I)%OutFlagList(13) == 1) THEN - DO J = 1,m%LineList(I)%N + IF (m%LineList(I)%OutFlagList(14) == 1) THEN + DO J = 1,m%LineList(I)%N m%LineList(I)%LineWrOutput(L) = m%LineList(I)%lstrd(J)/m%LineList(I)%l(J) L = L+1 END DO END IF - + ! Segment length - IF (m%LineList(I)%OutFlagList(14) == 1) THEN - DO J = 1,m%LineList(I)%N + IF (m%LineList(I)%OutFlagList(15) == 1) THEN + DO J = 1,m%LineList(I)%N m%LineList(I)%LineWrOutput(L) = m%LineList(I)%lstr(J) L = L+1 END DO diff --git a/modules/moordyn/src/MoorDyn_Line.f90 b/modules/moordyn/src/MoorDyn_Line.f90 index 50e93350bf..affb532d31 100644 --- a/modules/moordyn/src/MoorDyn_Line.f90 +++ b/modules/moordyn/src/MoorDyn_Line.f90 @@ -184,11 +184,21 @@ SUBROUTINE SetupLine (Line, LineProp, p, ErrStat, ErrMsg) Line%dl_1 = 0.0_DbKi end if + ! allocate node accelerations if needed for VIV or output + if (Line%store_rdd) then + ALLOCATE ( Line%rdd_old(3,0:N), STAT = ErrStat ) + IF ( ErrStat /= ErrID_None ) THEN + ErrMsg = ' Error allocating rdd_old array.' + !CALL CleanUp() + RETURN + END IF + Line%rdd_old = 0.0_DbKi + end if + ! if using VIV model, allocate additional state quantities. if (Line%Cl > 0) then if (wordy > 1) print *, "Using the VIV model" - ! allocate old acclerations [for VIV] - ALLOCATE ( Line%phi(0:N), Line%rdd_old(3,0:N), Line%yd_rms_old(0:N), Line%ydd_rms_old(0:N), STAT = ErrStat ) + ALLOCATE ( Line%phi(0:N), Line%yd_rms_old(0:N), Line%ydd_rms_old(0:N), STAT = ErrStat ) IF ( ErrStat /= ErrID_None ) THEN ErrMsg = ' Error allocating VIV arrays.' !CALL CleanUp() @@ -196,7 +206,6 @@ SUBROUTINE SetupLine (Line, LineProp, p, ErrStat, ErrMsg) END IF ! initialize other things to 0 - Line%rdd_old = 0.0_DbKi Line%yd_rms_old = 0.0_DbKi Line%yd_rms_old = 0.0_DbKi end if @@ -1220,11 +1229,20 @@ SUBROUTINE Line_GetStateDeriv(Line, Xd, m, p, ErrStat, ErrMsg) !, FairFtot, Fai CALL UnitVector(Line%r(:,N-1), Line%r(:,N), Line%q(:,N), dummyLength) end if - ! apply wave kinematics (if there are any) - DO i=0,N - CALL getWaterKin(p, m, Line%r(1,i), Line%r(2,i), Line%r(3,i), Line%time, Line%U(:,i), Line%Ud(:,i), Line%zeta(i), Line%PDyn(i), ErrStat2, ErrMsg2) - CALL SetErrStat(ErrStat2,ErrMsg2,ErrStat,ErrMsg,RoutineName) - END DO + ! apply wave kinematics (if there are any) + ! For SeaState (WaterKin==3), skip during IC_gen (otherwise will never find steady state because of waves) + ! and skip if inside a coupling timestep (because external kinematics do not change between coupling steps) + if (p%WaterKin == 3 .and. (m%IC_gen .or. & + (abs(MOD(Line%time - 0.5*p%dtCoupling, p%dtCoupling) - 0.5*p%dtCoupling) >= 0.5*p%dtM0) .and. Line%time > 0.0_DbKi)) then + ! retain existing kinematics values + ! This does introduce some error, as the interpolation location does not track the motion exactly. But the change between + ! coupling steps should be small enough that the error is negligible. + else + DO i=0,N + CALL getWaterKin(p, m, Line%r(1,i), Line%r(2,i), Line%r(3,i), Line%time, Line%U(:,i), Line%Ud(:,i), Line%zeta(i), Line%PDyn(i), ErrStat2, ErrMsg2) + CALL SetErrStat(ErrStat2,ErrMsg2,ErrStat,ErrMsg,RoutineName) + END DO + end if ! --------- calculate line partial submergence (Line::calcSubSeg from MD-C) --------- DO i=1,N @@ -1730,17 +1748,17 @@ SUBROUTINE Line_GetStateDeriv(Line, Xd, m, p, ErrStat, ErrMsg) !, FairFtot, Fai DO J=1,3 ! calculate RHS constant (premultiplying force vector by inverse of mass matrix ... i.e. rhs = S*Forces) - Sum1 = 0.0_DbKi ! reset temporary accumulator <<< could turn this into a Line%a array to save and output node accelerations + Sum1 = 0.0_DbKi ! reset temporary accumulator DO K = 1, 3 Sum1 = Sum1 + Line%S(K,J,I) * Line%Fnet(K,I) ! matrix-vector multiplication [S i]{Forces i} << double check indices END DO ! K - + ! update states Xd(3*N-3 + 3*I-3 + J) = Line%rd(J,I); ! dxdt = V (velocities) Xd( 3*I-3 + J) = Sum1 ! dVdt = RHS * A (accelerations) - - IF (Line%Cl > 0) THEN - Line%rdd_old(J,I) = Sum1 ! saving the acceleration for VIV RMS calculation. End nodes are left at zero, VIV disabled for end nodes + + IF (Line%store_rdd) THEN + Line%rdd_old(J,I) = Sum1 ! store node acceleration for VIV and/or output. End nodes are left at zero (VIV is disabled for end nodes). ENDIF END DO ! J diff --git a/modules/moordyn/src/MoorDyn_Misc.f90 b/modules/moordyn/src/MoorDyn_Misc.f90 index 3c661f1766..e0348bd0ec 100644 --- a/modules/moordyn/src/MoorDyn_Misc.f90 +++ b/modules/moordyn/src/MoorDyn_Misc.f90 @@ -944,7 +944,7 @@ SUBROUTINE getWaterKin(p, m, x, y, z, t, U, Ud, zeta, PDyn, ErrStat, ErrMsg) ! local CHARACTER(120) :: RoutineName = 'getWaterKin' - + ErrStat = ErrID_None ErrMsg = "" @@ -1010,9 +1010,6 @@ SUBROUTINE getWaterKin(p, m, x, y, z, t, U, Ud, zeta, PDyn, ErrStat, ErrMsg) ! SeaState wave kinematics case (3) - ! disable wavekin 3 during IC_gen, otherwise will never find steady state (because of waves) - if (m%IC_gen) return - ! SeaState throws warning when queried location is out of bounds from the SeaState grid, so no need to handle here ! Pack all MD inputs to WaveGrid input data types (double to single) @@ -1033,6 +1030,14 @@ SUBROUTINE getWaterKin(p, m, x, y, z, t, U, Ud, zeta, PDyn, ErrStat, ErrMsg) call SetErrStat(ErrID_Fatal, "Invalid value of p%WaterKin", ErrStat, ErrMsg, RoutineName) end select + ! Apply ramp time + IF (t < p%waveKin_rampT) THEN + U = U * t / p%waveKin_rampT + Ud = Ud * t / p%waveKin_rampT + zeta = zeta * t / p%waveKin_rampT + PDyn = PDyn * t / p%waveKin_rampT + END IF + END SUBROUTINE getWaterKin ! ----- process WaterKin input value, potentially reading wave inputs and generating wave field ----- diff --git a/modules/moordyn/src/MoorDyn_Registry.txt b/modules/moordyn/src/MoorDyn_Registry.txt index 210b98cf0b..00fe8f63be 100644 --- a/modules/moordyn/src/MoorDyn_Registry.txt +++ b/modules/moordyn/src/MoorDyn_Registry.txt @@ -306,6 +306,7 @@ typedef ^ ^ DbKi t_old - typedef ^ ^ DbKi yd_rms_old {:} - - "node old cf vel rms" "m/s" typedef ^ ^ DbKi ydd_rms_old {:} - - "node old cf accel rms" "m/s^2" typedef ^ ^ DbKi rdd_old {:}{:} - - "node accelerations previous iteration" "m/s^2" +typedef ^ ^ Logical store_rdd - .FALSE. - "flag to store node accelerations (for VIV or output)" - # this is the ExtLd type, which holds data for each external load specification @@ -407,7 +408,8 @@ typedef ^ ^ DbKi mu_kA - typedef ^ ^ DbKi mc - - - "ratio of the static friction coefficient to the kinetic friction coefficient" "(-)" typedef ^ ^ DbKi cv - - - "saturated damping coefficient" "(-)" typedef ^ ^ IntKi inertialF - 0 - "Indicates MoorDyn returning inertial moments for coupled 6DOF objects. 0: no, 1: yes, 2: yes with ramp to inertialF_rampT" - -typedef ^ ^ R8Ki inertialF_rampT - 30 - "Ramp time for inertial forces" - +typedef ^ ^ R8Ki inertialF_rampT - 30 - "Ramp time for inertial forces" - +typedef ^ ^ R8Ki waveKin_rampT - 0 - "Ramp time for water kinematics" - typedef ^ ^ IntKi OutSwitch - 1 - "Switch to disable outputs when running with full OF. 0: no MD main outfile, 1: write MD main outfile" "(-)" typedef ^ ^ IntKi disableOutTime - 0 - "Disables the printing of the fairtens and timestep in init to the console, useful for the MATLAB wrapper" "(-)" # --- parameters for wave and current --- diff --git a/modules/moordyn/src/MoorDyn_Rod.f90 b/modules/moordyn/src/MoorDyn_Rod.f90 index 34b2eb9339..c7ffbf10f1 100644 --- a/modules/moordyn/src/MoorDyn_Rod.f90 +++ b/modules/moordyn/src/MoorDyn_Rod.f90 @@ -622,14 +622,22 @@ SUBROUTINE Rod_DoRHS(Rod, m, p) ! apply wave kinematics (if there are any) - - DO i=0,N - CALL getWaterKin(p, m, Rod%r(1,i), Rod%r(2,i), Rod%r(3,i), Rod%time, Rod%U(:,i), Rod%Ud(:,i), Rod%zeta(i), Rod%PDyn(i), ErrStat2, ErrMsg2) - ! TODO: Handle error messages. Roads broadly needs error flags to be supported - - !F(i) = 1.0 ! set VOF value to one for now (everything submerged - eventually this should be element-based!!!) <<<< - ! <<<< currently F is not being used and instead a VOF variable is used within the node loop - END DO + ! For SeaState (WaterKin==3), skip during IC_gen (otherwise will never find steady state because of waves) + ! and skip if inside a coupling timestep (because external kinematics do not change between coupling steps) + if (p%WaterKin == 3 .and. (m%IC_gen .or. & + (abs(MOD(Rod%time - 0.5*p%dtCoupling, p%dtCoupling) - 0.5*p%dtCoupling) >= 0.5*p%dtM0) .and. Rod%time > 0.0_DbKi)) then + ! retain existing kinematics values + ! This does introduce some error, as the interpolation location does not track the motion exactly. But the change between + ! coupling steps should be small enough that the error is negligible. + else + DO i=0,N + CALL getWaterKin(p, m, Rod%r(1,i), Rod%r(2,i), Rod%r(3,i), Rod%time, Rod%U(:,i), Rod%Ud(:,i), Rod%zeta(i), Rod%PDyn(i), ErrStat2, ErrMsg2) + ! TODO: Handle error messages. Roads broadly needs error flags to be supported + + !F(i) = 1.0 ! set VOF value to one for now (everything submerged - eventually this should be element-based!!!) <<<< + ! <<<< currently F is not being used and instead a VOF variable is used within the node loop + END DO + end if ! Calculated h0 (note this should be deprecated/replced) zeta = Rod%zeta(N) ! temporary diff --git a/modules/moordyn/src/MoorDyn_Types.f90 b/modules/moordyn/src/MoorDyn_Types.f90 index 86703d7aa7..db4d73a8e0 100644 --- a/modules/moordyn/src/MoorDyn_Types.f90 +++ b/modules/moordyn/src/MoorDyn_Types.f90 @@ -326,6 +326,7 @@ MODULE MoorDyn_Types REAL(DbKi) , DIMENSION(:), ALLOCATABLE :: yd_rms_old !< node old cf vel rms [m/s] REAL(DbKi) , DIMENSION(:), ALLOCATABLE :: ydd_rms_old !< node old cf accel rms [m/s^2] REAL(DbKi) , DIMENSION(:,:), ALLOCATABLE :: rdd_old !< node accelerations previous iteration [m/s^2] + LOGICAL :: store_rdd = .FALSE. !< flag to store node accelerations (for VIV or output) [-] END TYPE MD_Line ! ======================= ! ========= MD_ExtLd ======= @@ -444,6 +445,7 @@ MODULE MoorDyn_Types REAL(DbKi) :: cv = 0.0_R8Ki !< saturated damping coefficient [(-)] INTEGER(IntKi) :: inertialF = 0 !< Indicates MoorDyn returning inertial moments for coupled 6DOF objects. 0: no, 1: yes, 2: yes with ramp to inertialF_rampT [-] REAL(R8Ki) :: inertialF_rampT = 30 !< Ramp time for inertial forces [-] + REAL(R8Ki) :: waveKin_rampT = 0 !< Ramp time for water kinematics [-] INTEGER(IntKi) :: OutSwitch = 1 !< Switch to disable outputs when running with full OF. 0: no MD main outfile, 1: write MD main outfile [(-)] INTEGER(IntKi) :: disableOutTime = 0 !< Disables the printing of the fairtens and timestep in init to the console, useful for the MATLAB wrapper [(-)] INTEGER(IntKi) :: nxWave = 0_IntKi !< number of x wave grid points [-] @@ -2211,6 +2213,7 @@ subroutine MD_CopyLine(SrcLineData, DstLineData, CtrlCode, ErrStat, ErrMsg) end if DstLineData%rdd_old = SrcLineData%rdd_old end if + DstLineData%store_rdd = SrcLineData%store_rdd end subroutine subroutine MD_DestroyLine(LineData, ErrStat, ErrMsg) @@ -2406,6 +2409,7 @@ subroutine MD_PackLine(RF, Indata) call RegPackAlloc(RF, InData%yd_rms_old) call RegPackAlloc(RF, InData%ydd_rms_old) call RegPackAlloc(RF, InData%rdd_old) + call RegPack(RF, InData%store_rdd) if (RegCheckErr(RF, RoutineName)) return end subroutine @@ -2494,6 +2498,7 @@ subroutine MD_UnPackLine(RF, OutData) call RegUnpackAlloc(RF, OutData%yd_rms_old); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%ydd_rms_old); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%rdd_old); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%store_rdd); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyExtLd(SrcExtLdData, DstExtLdData, CtrlCode, ErrStat, ErrMsg) @@ -3117,6 +3122,7 @@ subroutine MD_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) DstParamData%cv = SrcParamData%cv DstParamData%inertialF = SrcParamData%inertialF DstParamData%inertialF_rampT = SrcParamData%inertialF_rampT + DstParamData%waveKin_rampT = SrcParamData%waveKin_rampT DstParamData%OutSwitch = SrcParamData%OutSwitch DstParamData%disableOutTime = SrcParamData%disableOutTime DstParamData%nxWave = SrcParamData%nxWave @@ -3468,6 +3474,7 @@ subroutine MD_PackParam(RF, Indata) call RegPack(RF, InData%cv) call RegPack(RF, InData%inertialF) call RegPack(RF, InData%inertialF_rampT) + call RegPack(RF, InData%waveKin_rampT) call RegPack(RF, InData%OutSwitch) call RegPack(RF, InData%disableOutTime) call RegPack(RF, InData%nxWave) @@ -3591,6 +3598,7 @@ subroutine MD_UnPackParam(RF, OutData) call RegUnpack(RF, OutData%cv); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%inertialF); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%inertialF_rampT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%waveKin_rampT); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%OutSwitch); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%disableOutTime); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%nxWave); if (RegCheckErr(RF, RoutineName)) return diff --git a/modules/openfast-library/src/FAST_Subs.f90 b/modules/openfast-library/src/FAST_Subs.f90 index 1f4093cd27..e78026054c 100644 --- a/modules/openfast-library/src/FAST_Subs.f90 +++ b/modules/openfast-library/src/FAST_Subs.f90 @@ -373,7 +373,7 @@ SUBROUTINE FAST_InitializeAll( t_initial, m_Glue, p_FAST, y_FAST, m_FAST, ED, SE ! Save the GearBox index p_FAST%GearBox_index = Init%OutData_ED(iRot)%GearBox_index - ! Assign the inital positions for use by MoorDyn initalization + ! Assign the initial positions for use by MoorDyn initialization p_FAST%PlatformPosInit = Init%OutData_ED(iRot)%PlatformPos ! If steady state calculation is enabled @@ -994,6 +994,15 @@ SUBROUTINE FAST_InitializeAll( t_initial, m_Glue, p_FAST, y_FAST, m_FAST, ED, SE Init%OutData_SD%Vars, p_FAST%Linearize, ErrStat2, ErrMsg2) if (Failed()) return + ! Assign the initial positions for use by MoorDyn initialization (this overwrites the PlatformPosInit from ED above) + if (Init%OutData_SD%SDHasRBDoF) then + p_FAST%PlatformPosInit = Init%OutData_SD%PlatformPos + else if (.not.Init%OutData_SD%IsFloating) then + p_FAST%PlatformPosInit = 0.0_DbKi + ! else + ! Use PlatformPosInit from ED above + end if + case (Module_ExtPtfm) Init%InData_ExtPtfm%InputFile = p_FAST%SubFile diff --git a/modules/seastate/src/SeaSt_WaveField.f90 b/modules/seastate/src/SeaSt_WaveField.f90 index 7499e49b49..a01e2bd89e 100644 --- a/modules/seastate/src/SeaSt_WaveField.f90 +++ b/modules/seastate/src/SeaSt_WaveField.f90 @@ -168,6 +168,16 @@ SUBROUTINE WaveField_GetNodeWaveKin( WaveField, WaveField_m, Time, pos, forceNod WaveElev = WaveField_GetNodeTotalWaveElev(WaveField, WaveField_m, Time, pos, ErrStat2, ErrMsg2, Elev1=WaveElev1, Elev2=WaveElev2) if (Failed()) return + ! Check if point is below the seabed + if (pos(3)<-WaveField%EffWtrDpth) then + nodeInWater = 1_IntKi ! Prevent problems with HydroDyn logic + FV(:) = 0.0_SiKi + FA(:) = 0.0_SiKi + FDynP = 0.0_SiKi + FAMCF(:) = 0.0_SiKi + return + end if + IF (WaveField%WaveStMod == 0) THEN ! No wave stretching IF ( pos(3) <= 0.0_ReKi) THEN ! Node is at or below the SWL @@ -182,10 +192,10 @@ SUBROUTINE WaveField_GetNodeWaveKin( WaveField, WaveField_m, Time, pos, forceNod END IF ELSE ! Node is above the SWL nodeInWater = 0_IntKi - FV(:) = 0.0 - FA(:) = 0.0 - FDynP = 0.0 - FAMCF(:) = 0.0 + FV(:) = 0.0_SiKi + FA(:) = 0.0_SiKi + FDynP = 0.0_SiKi + FAMCF(:) = 0.0_SiKi END IF ELSE ! Wave stretching enabled @@ -251,10 +261,10 @@ SUBROUTINE WaveField_GetNodeWaveKin( WaveField, WaveField_m, Time, pos, forceNod ELSE ! Node is out of water - zero-out all wave dynamics nodeInWater = 0_IntKi - FV(:) = 0.0 - FA(:) = 0.0 - FDynP = 0.0 - FAMCF(:) = 0.0 + FV(:) = 0.0_SiKi + FA(:) = 0.0_SiKi + FDynP = 0.0_SiKi + FAMCF(:) = 0.0_SiKi END IF ! If node is in or out of water @@ -315,6 +325,13 @@ SUBROUTINE WaveField_GetDynP( WaveField, WaveField_m, Time, pos, forceNodeInWate ! Wave elevation (Calls WaveField_Interp_Setup3D internally so WaveField_Interp_3D_vec can be used below) WaveElev = WaveField_GetNodeTotalWaveElev( WaveField, WaveField_m, Time, pos, ErrStat2, ErrMsg2 ); if (Failed()) return; + ! Check if point is below the seabed + if (pos(3)<-WaveField%EffWtrDpth) then + nodeInWater = 1_IntKi ! Prevent problems with HydroDyn logic + FDynP = 0.0_SiKi + return + end if + IF (WaveField%WaveStMod == 0) THEN ! No wave stretching IF ( pos(3) <= 0.0_ReKi) THEN ! Node is at or below the SWL @@ -324,7 +341,7 @@ SUBROUTINE WaveField_GetDynP( WaveField, WaveField_m, Time, pos, forceNodeInWate FDynP = GridInterp4D ( WaveField%WaveDynP, WaveField_m ) ELSE ! Node is above the SWL nodeInWater = 0_IntKi - FDynP = 0.0 + FDynP = 0.0_SiKi END IF ELSE ! Wave stretching enabled @@ -365,7 +382,7 @@ SUBROUTINE WaveField_GetDynP( WaveField, WaveField_m, Time, pos, forceNodeInWate ELSE ! Node is out of water - zero-out all wave dynamics nodeInWater = 0_IntKi - FDynP = 0.0 + FDynP = 0.0_SiKi END IF ! If node is in or out of water END IF ! If wave stretching is on or off @@ -407,6 +424,13 @@ SUBROUTINE WaveField_GetNodeWaveVel( WaveField, WaveField_m, Time, pos, forceNod ! Wave elevation (Calls WaveField_Interp_Setup3D internally so WaveField_Interp_3D_vec can be used below) WaveElev = WaveField_GetNodeTotalWaveElev( WaveField, WaveField_m, Time, pos, ErrStat2, ErrMsg2 ); if (Failed()) return; + ! Check if point is below the seabed + if (pos(3)<-WaveField%EffWtrDpth) then + nodeInWater = 1_IntKi ! Prevent problems with HydroDyn logic + FV(:) = 0.0_SiKi + return + end if + IF (WaveField%WaveStMod == 0) THEN ! No wave stretching IF ( pos(3) <= 0.0_ReKi) THEN ! Node is at or below the SWL @@ -416,7 +440,7 @@ SUBROUTINE WaveField_GetNodeWaveVel( WaveField, WaveField_m, Time, pos, forceNod FV(:) = GridInterp4DVec( WaveField%WaveVel, WaveField_m ) ELSE ! Node is above the SWL nodeInWater = 0_IntKi - FV(:) = 0.0 + FV(:) = 0.0_SiKi END IF ELSE ! Wave stretching enabled @@ -463,7 +487,7 @@ SUBROUTINE WaveField_GetNodeWaveVel( WaveField, WaveField_m, Time, pos, forceNod ELSE ! Node is out of water - zero-out all wave dynamics nodeInWater = 0_IntKi - FV(:) = 0.0 + FV(:) = 0.0_SiKi END IF ! If node is in or out of water @@ -520,7 +544,15 @@ SUBROUTINE WaveField_GetNodeWaveVelAcc( WaveField, WaveField_m, Time, pos, force ! Wave elevation WaveElev = WaveField_GetNodeTotalWaveElev( WaveField, WaveField_m, Time, pos, ErrStat2, ErrMsg2 ); if (Failed()) return; - + + ! Check if point is below the seabed + if (pos(3)<-WaveField%EffWtrDpth) then + nodeInWater = 1_IntKi ! Prevent problems with HydroDyn logic + FV(:) = 0.0_SiKi + FA(:) = 0.0_SiKi + return + end if + IF (WaveField%WaveStMod == 0) THEN ! No wave stretching IF ( pos(3) <= 0.0_ReKi) THEN ! Node is at or below the SWL @@ -531,8 +563,8 @@ SUBROUTINE WaveField_GetNodeWaveVelAcc( WaveField, WaveField_m, Time, pos, force FA(:) = GridInterp4DVec( WaveField%WaveAcc, WaveField_m ) ELSE ! Node is above the SWL nodeInWater = 0_IntKi - FV(:) = 0.0 - FA(:) = 0.0 + FV(:) = 0.0_SiKi + FA(:) = 0.0_SiKi END IF ELSE ! Wave stretching enabled @@ -582,8 +614,8 @@ SUBROUTINE WaveField_GetNodeWaveVelAcc( WaveField, WaveField_m, Time, pos, force ELSE ! Node is out of water - zero-out all wave dynamics nodeInWater = 0_IntKi - FV(:) = 0.0 - FA(:) = 0.0 + FV(:) = 0.0_SiKi + FA(:) = 0.0_SiKi END IF ! If node is in or out of water END IF ! If wave stretching is on or off diff --git a/modules/seastate/src/SeaState_Input.f90 b/modules/seastate/src/SeaState_Input.f90 index 22c87e66d4..c5c5147582 100644 --- a/modules/seastate/src/SeaState_Input.f90 +++ b/modules/seastate/src/SeaState_Input.f90 @@ -925,6 +925,11 @@ subroutine SeaStateInput_ProcessInitData( InitInp, p, InputFileData, ErrStat, Er ! CurrMod - Current profile model switch + if ( ( InputFileData%Current%CurrMod /= 0 ) .AND. ( InitInp%MHK /= MHK_None ) ) then + call SetErrStat( ErrID_Fatal,'CurrMod must be set to 0 for an MHK turbine.',ErrStat,ErrMsg,RoutineName) + return + end if + if ( InitInp%hasCurrField ) then call SetErrStat( ErrID_Warn,'Expecting current field from InflowWind. Setting CurrMod to 0.',ErrStat,ErrMsg,RoutineName) InputFileData%Current%CurrMod = 0 @@ -940,10 +945,6 @@ subroutine SeaStateInput_ProcessInitData( InitInp, p, InputFileData, ErrStat, Er return end if - ! if ( ( InputFileData%Current%CurrMod /= 0 ) .AND. ( InitInp%MHK /= MHK_None ) ) then - ! call SetErrStat( ErrID_Fatal,'CurrMod must be set to 0 for an MHK turbine.',ErrStat,ErrMsg,RoutineName) - ! return - ! end if if ( InputFileData%Current%CurrMod == 1 ) then ! .TRUE if we have standard current. diff --git a/modules/subdyn/src/SubDyn.f90 b/modules/subdyn/src/SubDyn.f90 index 2b27f51bd9..a8b4a78e88 100644 --- a/modules/subdyn/src/SubDyn.f90 +++ b/modules/subdyn/src/SubDyn.f90 @@ -4225,10 +4225,10 @@ SUBROUTINE WriteJSONCommon(FileName, Init, p, m, InitInput, FileKind, UnSum, Err do i = 1, size(p%ElemProps) if (p%ElemProps(i)%eType == idMemberBeamRect) then ! Rectangular beam: MType = 1r. eType = -1 - write(UnSum, '(A,I0,A,F8.4,A,F8.4,A, F10.6,A,F10.6,A,F10.6,A)', advance='no') ' {"shape": "rectangle", "type": ',p%ElemProps(i)%eType, ', "SideA":',p%ElemProps(i)%Sa(1), ', "SideB":',p%ElemProps(i)%Sb(1), ', "SideA_dir":[',p%ElemProps(i)%DirCos(1,1), ',',p%ElemProps(i)%DirCos(2,1), ',',p%ElemProps(i)%DirCos(3,1),']}' + write(UnSum, '(A,I0,A,F8.4,A,F8.4,A,F10.6,A,F10.6,A,F10.6,A)', advance='no') ' {"shape": "rectangle", "type": ',p%ElemProps(i)%eType, ', "SideA":',p%ElemProps(i)%Sa(1), ', "SideB":',p%ElemProps(i)%Sb(1), ', "SideA_dir": [',p%ElemProps(i)%DirCos(1,1), ',',p%ElemProps(i)%DirCos(2,1), ',',p%ElemProps(i)%DirCos(3,1),']}' else ! Cylindrical shapes (MType = 1 or 1c [cylindrical beam], 2 [cable element], 3 [rigid link]. eType = 1, 2, 3) - write(UnSum, '(A,I0,A,F8.4,A)', advance='no') ' {"shape": "cylinder", "type": ',p%ElemProps(i)%eType, ', "Diam":',p%ElemProps(i)%D(1),'}' + write(UnSum, '(A,I0,A,F8.4,A,F10.6,A,F10.6,A,F10.6,A)', advance='no') ' {"shape": "cylinder", "type": ',p%ElemProps(i)%eType, ', "Diam":',p%ElemProps(i)%D(1), ', "x_e": [',p%ElemProps(i)%DirCos(1,1), ',',p%ElemProps(i)%DirCos(2,1), ',',p%ElemProps(i)%DirCos(3,1),']}' endif if (i p%x_Buff ) then + xd%NumPlanes = max( xd%NumPlanes - 1.0, 2.0 ) ! Plane indexing includes 0, hence the -1.0 + cycle + endif - xd%NumPlanes = max( xd%NumPlanes - 1.0, 2.0 ) - - else if ( i+1 < NINT(xd%NumPlanes) .and. xd%x_plane(i) >= xd%x_plane(i+1) ) then - - call SetErrStat(ErrID_Warn, ' Turbine '//trim(num2lstr(p%TurbNum))//' wake plane '//trim(num2lstr(i))//' (x_plane='//trim(num2lstr(xd%x_plane(i)))//') has overtaken wake plane '//trim(num2lstr(i+1))//' (x_plane='//trim(num2lstr(xd%x_plane(i+1)))//'). Offending wake plane removed. Reduce f_c to prevent planes from passing each other. ', errStat, errMsg, RoutineName) - if (errStat >= AbortErrLev) then - call Cleanup() - return - end if - - ! Remove offending plane and shift everything behind up - - xd%NumPlanes = xd%NumPlanes - 1.0 - - ! Didn't check xd%NumPlanes >= 2 here. The first wake plane is unlikely to move upwind of the rotor. - - do j = i+1,NINT(xd%NumPlanes)-1 + ! If a plane overtakes another plane, merge the planes by averaging, then shift all remaining planes forward. + if ( i+1 < NINT(xd%NumPlanes)) then ! don't overstep bounds with i+1 indexing + if (xd%x_plane(i) >= xd%x_plane(i+1) ) then - xd%Vx_wind_disk_filt(j-1) = xd%Vx_wind_disk_filt(j) - xd%x_plane ( j-1) = xd%x_plane ( j) - xd%TI_amb_filt ( j-1) = xd%TI_amb_filt ( j) - xd%D_rotor_filt ( j-1) = xd%D_rotor_filt ( j) - xd%YawErr_filt ( j-1) = xd%YawErr_filt ( j) - xd%p_plane ( :,j-1) = xd%p_plane ( :,j) - xd%xhat_plane ( :,j-1) = xd%xhat_plane ( :,j) - xd%V_plane_filt ( :,j-1) = xd%V_plane_filt ( :,j) - xd%Vx_wake ( :,j-1) = xd%Vx_wake ( :,j) - xd%Vr_wake ( :,j-1) = xd%Vr_wake ( :,j) - xd%Vx_wake2 (:,:,j-1) = xd%Vx_wake2 (:,:,j) - xd%Vy_wake2 (:,:,j-1) = xd%Vy_wake2 (:,:,j) - xd%Vz_wake2 (:,:,j-1) = xd%Vz_wake2 (:,:,j) + call SetErrStat(ErrID_Warn, ' Turbine '//trim(num2lstr(p%TurbNum))//' wake plane '//trim(num2lstr(i))// & + ' (x_plane='//trim(num2lstr(xd%x_plane(i)))//') has overtaken wake plane '//trim(num2lstr(i+1))// & + ' (x_plane='//trim(num2lstr(xd%x_plane(i+1)))// & + '). Merging planes by averaging. Reduce f_c to prevent planes from passing each other. ', errStat, errMsg, RoutineName) + if (errStat >= AbortErrLev) then + call Cleanup() + return + end if - end do + ! Merge the i and i+1 plane by averaging them together + xd%Vx_wind_disk_filt(i) = (xd%Vx_wind_disk_filt(i) + xd%Vx_wind_disk_filt(i+1)) / 2.0_ReKi + xd%x_plane ( i) = (xd%x_plane ( i) + xd%x_plane ( i+1)) / 2.0_ReKi + xd%TI_amb_filt ( i) = (xd%TI_amb_filt ( i) + xd%TI_amb_filt ( i+1)) / 2.0_ReKi + xd%D_rotor_filt ( i) = (xd%D_rotor_filt ( i) + xd%D_rotor_filt ( i+1)) / 2.0_ReKi + xd%YawErr_filt ( i) = (xd%YawErr_filt ( i) + xd%YawErr_filt ( i+1)) / 2.0_ReKi + xd%p_plane ( :,i) = (xd%p_plane ( :,i) + xd%p_plane ( :,i+1)) / 2.0_ReKi + xd%xhat_plane ( :,i) = (xd%xhat_plane ( :,i) + xd%xhat_plane ( :,i+1)) / 2.0_ReKi + xd%xhat_plane ( :,i) = xd%xhat_plane ( :,i) / TwoNorm(xd%xhat_plane( :,i)) ! renormalize + xd%V_plane_filt ( :,i) = (xd%V_plane_filt ( :,i) + xd%V_plane_filt ( :,i+1)) / 2.0_ReKi + xd%Vx_wake ( :,i) = (xd%Vx_wake ( :,i) + xd%Vx_wake ( :,i+1)) / 2.0_ReKi + xd%Vr_wake ( :,i) = (xd%Vr_wake ( :,i) + xd%Vr_wake ( :,i+1)) / 2.0_ReKi + xd%Vx_wake2 (:,:,i) = (xd%Vx_wake2 (:,:,i) + xd%Vx_wake2 (:,:,i+1)) / 2.0_ReKi + xd%Vy_wake2 (:,:,i) = (xd%Vy_wake2 (:,:,i) + xd%Vy_wake2 (:,:,i+1)) / 2.0_ReKi + xd%Vz_wake2 (:,:,i) = (xd%Vz_wake2 (:,:,i) + xd%Vz_wake2 (:,:,i+1)) / 2.0_ReKi + + ! Since i and i+1 planes are now merged effectively dropping a plane, shift all planes that follow forward + do j = i+1,NINT(xd%NumPlanes)-2 ! NumPlanes includes 0 index plane, so last valid index is NumPlanes-1. + xd%Vx_wind_disk_filt(j) = xd%Vx_wind_disk_filt(j+1) + xd%x_plane ( j) = xd%x_plane ( j+1) + xd%TI_amb_filt ( j) = xd%TI_amb_filt ( j+1) + xd%D_rotor_filt ( j) = xd%D_rotor_filt ( j+1) + xd%YawErr_filt ( j) = xd%YawErr_filt ( j+1) + xd%p_plane ( :,j) = xd%p_plane ( :,j+1) + xd%xhat_plane ( :,j) = xd%xhat_plane ( :,j+1) + xd%V_plane_filt ( :,j) = xd%V_plane_filt ( :,j+1) + xd%Vx_wake ( :,j) = xd%Vx_wake ( :,j+1) + xd%Vr_wake ( :,j) = xd%Vr_wake ( :,j+1) + xd%Vx_wake2 (:,:,j) = xd%Vx_wake2 (:,:,j+1) + xd%Vy_wake2 (:,:,j) = xd%Vy_wake2 (:,:,j+1) + xd%Vz_wake2 (:,:,j) = xd%Vz_wake2 (:,:,j+1) + end do + + ! Now that we shifted the planes up, remove the last one + xd%NumPlanes = xd%NumPlanes - 1.0 + end if end if end do diff --git a/modules/wakedynamics/src/WakeDynamics_Registry.txt b/modules/wakedynamics/src/WakeDynamics_Registry.txt index 56ae0024ef..692d06973b 100644 --- a/modules/wakedynamics/src/WakeDynamics_Registry.txt +++ b/modules/wakedynamics/src/WakeDynamics_Registry.txt @@ -25,8 +25,8 @@ param ^ - INTEGER Mod_Wake_Cartesian # ..... InputFile Data ....................................................................................................... typedef ^ WD_InputFileType ReKi dr - - - "Radial increment of radial finite-difference grid [>0.0]" m typedef ^ WD_InputFileType IntKi NumRadii - - - "Number of radii in the radial finite-difference grid [>=2]" - -typedef ^ WD_InputFileType IntKi NumDFull - - - "Distance of full wake propagation as a multiple of RotorDiamRef" - -typedef ^ WD_InputFileType IntKi NumDBuff - - - "Length of wake propagation buffer region as a multiple of RotorDiamRef" - +typedef ^ WD_InputFileType ReKi NumDFull - - - "Distance of full wake propagation as a multiple of RotorDiamRef" - +typedef ^ WD_InputFileType ReKi NumDBuff - - - "Length of wake propagation buffer region as a multiple of RotorDiamRef" - typedef ^ WD_InputFileType IntKi Mod_Wake - - - "Switch between wake formulations 1=Polar, 2=Cartesian, 3=Curl" - typedef ^ WD_InputFileType ReKi f_c - - - "Cut-off frequency of the low-pass time-filter for the wake advection, deflection, and meandering model [>0.0]" Hz typedef ^ WD_InputFileType ReKi C_HWkDfl_O - - - "Calibrated parameter in the correction for wake deflection defining the horizontal offset at the rotor" m diff --git a/modules/wakedynamics/src/WakeDynamics_Types.f90 b/modules/wakedynamics/src/WakeDynamics_Types.f90 index 23368a4d45..faec69b17a 100644 --- a/modules/wakedynamics/src/WakeDynamics_Types.f90 +++ b/modules/wakedynamics/src/WakeDynamics_Types.f90 @@ -44,8 +44,8 @@ MODULE WakeDynamics_Types TYPE, PUBLIC :: WD_InputFileType REAL(ReKi) :: dr = 0.0_ReKi !< Radial increment of radial finite-difference grid [>0.0] [m] INTEGER(IntKi) :: NumRadii = 0_IntKi !< Number of radii in the radial finite-difference grid [>=2] [-] - INTEGER(IntKi) :: NumDFull = 0_IntKi !< Distance of full wake propagation as a multiple of RotorDiamRef [-] - INTEGER(IntKi) :: NumDBuff = 0_IntKi !< Length of wake propagation buffer region as a multiple of RotorDiamRef [-] + REAL(ReKi) :: NumDFull = 0.0_ReKi !< Distance of full wake propagation as a multiple of RotorDiamRef [-] + REAL(ReKi) :: NumDBuff = 0.0_ReKi !< Length of wake propagation buffer region as a multiple of RotorDiamRef [-] INTEGER(IntKi) :: Mod_Wake = 0_IntKi !< Switch between wake formulations 1=Polar, 2=Cartesian, 3=Curl [-] REAL(ReKi) :: f_c = 0.0_ReKi !< Cut-off frequency of the low-pass time-filter for the wake advection, deflection, and meandering model [>0.0] [Hz] REAL(ReKi) :: C_HWkDfl_O = 0.0_ReKi !< Calibrated parameter in the correction for wake deflection defining the horizontal offset at the rotor [m] diff --git a/reg_tests/r-test b/reg_tests/r-test index ff9b577119..25466634af 160000 --- a/reg_tests/r-test +++ b/reg_tests/r-test @@ -1 +1 @@ -Subproject commit ff9b577119f5d056168d711b291d0156ee033955 +Subproject commit 25466634afabc3e697f3e7ca0897e1b84b3045b5