diff --git a/modules/extptfm/src/ExtPtfm_MCKF.f90 b/modules/extptfm/src/ExtPtfm_MCKF.f90 index 9676887c1b..86f78e2f35 100644 --- a/modules/extptfm/src/ExtPtfm_MCKF.f90 +++ b/modules/extptfm/src/ExtPtfm_MCKF.f90 @@ -29,7 +29,7 @@ MODULE ExtPtfm_MCKF USE ExtPtfm_MCKF_Types - USE ExtPtfm_MCKF_Parameters ! ID_*, N_INPUTS, N_OUTPUTS + USE ExtPtfm_MCKF_Parameters ! ID_* USE NWTC_Library USE NWTC_LAPACK @@ -123,7 +123,7 @@ SUBROUTINE ExtPtfm_Init( InitInp, u, p, x, xd, z, OtherState, y, m, dt_gluecode, p%nTot = -1 p%nCB = -1 - call ReadPrimaryFile(InitInp%InputFile, p, InitInp%RootName, InputFileData, ErrStat, ErrMsg); if(Failed()) return + call ReadPrimaryFile(InitInp%InputFile, InitInp, p, InitInp%RootName, InputFileData, ErrStat, ErrMsg); if(Failed()) return ! --- Setting Params from Input file data p%IntMethod = InputFileData%IntMethod @@ -132,6 +132,9 @@ SUBROUTINE ExtPtfm_Init( InitInp, u, p, x, xd, z, OtherState, y, m, dt_gluecode, else p%EP_DeltaT = InputFileData%DT endif + ! Switch for modeling rigid-body modes + p%RBMod = InputFileData%RBMod + p%hasRBMode = InputFileData%hasRBMode ! Setting p%OutParam from OutList call SetOutParam(InputFileData%OutList, InputFileData%NumOuts, p, ErrStat, ErrMsg); if(Failed()) return ! Set the constant state matrices A,B,C,D @@ -177,19 +180,37 @@ SUBROUTINE ExtPtfm_Init( InitInp, u, p, x, xd, z, OtherState, y, m, dt_gluecode, !m%EquilStart = InputFileData%EquilStart m%EquilStart = .False. ! Feature not yet implemented - m%Indx = 1 ! used to optimize interpolation of loads in time - call AllocAry( m%F_at_t, p%nTot,'Loads at t', ErrStat,ErrMsg); if(Failed()) return - do I=1,p%nTot; m%F_at_t(I)=0; end do + m%Indx_UsrModeF = 1 ! used to optimize interpolation of loads in time + m%Indx_UsrConnF = 1 ! used to optimize interpolation of loads in time + call AllocAry( m%F_at_t, p%nTot,'User-defined modal loads at t', ErrStat,ErrMsg); if(Failed()) return + call AllocAry( m%FConn_at_t, 3*p%nConn,'User-defined connection loads at t', ErrStat,ErrMsg); if(Failed()) return + call AllocAry( m%F1, 6,'Interface/rigid-body mode forcing', ErrStat,ErrMsg); if(Failed()) return + call AllocAry( m%F2, p%nCB,'Internal elastic mode forcing', ErrStat,ErrMsg); if(Failed()) return + call AllocAry( m%Weight, p%nTot,'Structure self-weight', ErrStat,ErrMsg); if(Failed()) return + call AllocAry( m%DConn, 3_IntKi*p%nConn, 'Connection point displacement', ErrStat,ErrMsg); if(Failed()) return + call AllocAry( m%VConn, 3_IntKi*p%nConn, 'Connection point velocity', ErrStat,ErrMsg); if(Failed()) return + call AllocAry( m%AConn, 3_IntKi*p%nConn, 'Connection point acceleration', ErrStat,ErrMsg); if(Failed()) return + call AllocAry( m%FConn, 3_IntKi*p%nConn, 'Connection force vector', ErrStat,ErrMsg); if(Failed()) return + call AllocAry( m%FConnCB, p%nTot, 'Connection force vector', ErrStat,ErrMsg); if(Failed()) return call AllocAry( m%xFlat, 2*p%nCB,'xFlat', ErrStat,ErrMsg); if(Failed()) return - do I=1,2*p%nCB; m%xFlat(I)=0; end do - do I=1,N_INPUTS; m%uFlat(I)=0; end do + m%xFlat=0.0_ReKi + m%uFlat=0.0_ReKi ! Define initial guess (set up mesh first) for the system inputs here: - call Init_meshes(u, y, InitInp, ErrStat, ErrMsg); if(Failed()) return + call Init_meshes(u, p, y, InitInp, ErrStat, ErrMsg); if(Failed()) return + call AllocAry( u%Fm, p%nCB, 'Internal elastic mode forcing', ErrStat,ErrMsg); if(Failed()) return + u%Fm = 0.0_ReKi ! --- Outputs - CALL AllocAry( m%AllOuts, ID_QStart+3*p%nCBFull-1, "ExtPtfm AllOut", ErrStat,ErrMsg ); if(Failed()) return - m%AllOuts(1:ID_QStart+3*p%nCBFull-1) = 0.0 + call AllocAry( y%qm, p%nCB, 'Internal elastic mode displacement', ErrStat,ErrMsg); if(Failed()) return + call AllocAry( y%qmdot, p%nCB, 'Internal elastic mode velocity', ErrStat,ErrMsg); if(Failed()) return + call AllocAry( y%qmdotdot, p%nCB, 'Internal elastic mode acceleration', ErrStat,ErrMsg); if(Failed()) return + y%qm = x%qm + y%qmdot = x%qmdot + y%qmdotdot = 0.0_ReKi + + CALL AllocAry( m%AllOuts, ID_QStart+4*p%nCBFull-1, "ExtPtfm AllOut", ErrStat,ErrMsg ); if(Failed()) return + m%AllOuts(1:ID_QStart+4*p%nCBFull-1) = 0.0 call AllocAry( y%WriteOutput, p%NumOuts,'WriteOutput', ErrStat,ErrMsg); if(Failed()) return call AllocAry(InitOut%WriteOutputHdr,p%NumOuts,'WriteOutputHdr',ErrStat,ErrMsg); if(Failed()) return call AllocAry(InitOut%WriteOutputUnt,p%NumOuts,'WriteOutputUnt',ErrStat,ErrMsg); if(Failed()) return @@ -238,6 +259,10 @@ subroutine ExtPtfm_InitVars(u, p, x, y, m, Vars, InputFileData, Linearize, ErrSt ErrStat = ErrID_None ErrMsg = "" + ScaleLength = 100 + MaxThrust = 490.0_R8Ki * pi_D / 9.0_R8Ki * ScaleLength**2 + MaxTorque = 122.5_R8Ki * pi_D / 27.0_R8Ki * ScaleLength**3 + ! Clear module variables type call NWTC_Library_DestroyModVarsType(Vars, ErrStat2, ErrMsg2); if (Failed()) return @@ -248,13 +273,17 @@ subroutine ExtPtfm_InitVars(u, p, x, y, m, Vars, InputFileData, Linearize, ErrSt do i = 1, p%nCB call MV_AddVar(Vars%x, "Mode"//trim(Num2LStr(p%ActiveCBDOF(i))), FieldTransDisp, & DL=DatLoc(ExtPtfm_x_qm), iAry=i, & + DerivOrder=0, & + Perturb=2.0_ReKi*D2R_D, & LinNames=['Mode '//trim(Num2LStr(p%ActiveCBDOF(i)))//' displacement, -']) end do do i = 1, p%nCB call MV_AddVar(Vars%x, "Mode"//trim(Num2LStr(p%ActiveCBDOF(i))), FieldTransVel, & - DL=DatLoc(ExtPtfm_x_qm), iAry=i, & - LinNames=['Mode '//trim(Num2LStr(p%ActiveCBDOF(i)))//' velocity, -']) + DL=DatLoc(ExtPtfm_x_qmdot), iAry=i, & + DerivOrder=1, & + Perturb=2.0_ReKi*D2R_D, & + LinNames=['Mode '//trim(Num2LStr(p%ActiveCBDOF(i)))//' velocity, -/s']) end do !--------------------------------------------------------------------------- @@ -264,8 +293,37 @@ subroutine ExtPtfm_InitVars(u, p, x, y, m, Vars, InputFileData, Linearize, ErrSt call MV_AddMeshVar(Vars%u, 'Interface node', MotionFields, & DatLoc(ExtPtfm_u_PtfmMesh), & Mesh=u%PtfmMesh, & + Perturbs=[2.0_R8Ki*D2R_D, & ! TranslationDisp + 2.0_R8Ki*D2R_D, & ! Orientation + 2.0_R8Ki*D2R_D, & ! TranslationVel + 2.0_R8Ki*D2R_D, & ! RotationVel + 2.0_R8Ki*D2R_D, & ! TranslationAcc + 2.0_R8Ki*D2R_D],& ! RotationalAcc Flags=VF_SmallAngle) + call MV_AddMeshVar(Vars%u, 'Rigid-body load mesh', LoadFields, & + DatLoc(ExtPtfm_u_FBMesh), & + Mesh=u%FBMesh, & + Perturbs=[MaxThrust/100.0_R8Ki, & ! Force + MaxTorque/100.0_R8Ki]) ! Moment + + if ( p%nConn > 0_IntKi ) then + call MV_AddMeshVar(Vars%u, 'Connection load mesh', LoadFields, & + DatLoc(ExtPtfm_u_ConnLDMesh), & + Mesh=u%ConnLdMesh, & + PerTurbs=[MaxThrust/100.0_R8Ki, & ! Force + MaxTorque/100.0_R8Ki]) ! Moment + end if + + if ( p%nCB > 0_IntKi ) then + call MV_AddVar(Vars%u, 'Fm', FieldScalar, & + DL=DatLoc(ExtPtfm_u_Fm), & + Num=size(u%Fm), & + Flags = VF_Linearize, & + Perturb = 2.0_R8Ki*D2R_D, & ! The inertias of Craig-Bampton modes are normalized to O(1) + LinNames=[('Follower mode '//trim(num2lstr(i))//' forcing, -', i=1,size(u%Fm))]) + end if + !--------------------------------------------------------------------------- ! Output variables !--------------------------------------------------------------------------- @@ -274,11 +332,40 @@ subroutine ExtPtfm_InitVars(u, p, x, y, m, Vars, InputFileData, Linearize, ErrSt DL=DatLoc(ExtPtfm_y_PtfmMesh), & Mesh=y%PtfmMesh) - call MV_AddVar(Vars%y, p%OutParam(i)%Name, FieldScalar, & - DL=DatLoc(ExtPtfm_y_WriteOutput), & - Num=p%NumOuts, & - Flags=VF_WriteOut, & - LinNames=[(WriteOutLinName(i), i=1, p%NumOuts)]) + call MV_AddMeshVar(Vars%y, "Rigid-body motion mesh", MotionFields, & + DL=DatLoc(ExtPtfm_y_FBMesh), & + Mesh=y%FBMesh) + + if ( p%nConn > 0_IntKi ) then + call MV_AddMeshVar(Vars%y, 'Connection point mesh', MotionFields, & + DL=DatLoc(ExtPtfm_y_ConnMesh), & + Mesh=y%ConnMesh) + end if + + if ( p%nCB>0_IntKi ) then + call MV_AddVar(Vars%y, "qm", FieldScalar, & + DL=DatLoc(ExtPtfm_y_qm), & + Num=size(y%qm), & + LinNames=[('Follower mode '//trim(num2lstr(i))//' displacement, -', i=1,size(y%qm))]) + + call MV_AddVar(Vars%y, "qmdot", FieldScalar, & + DL=DatLoc(ExtPtfm_y_qmdot), & + Num=size(y%qmdot), & + LinNames=[('Follower mode '//trim(num2lstr(i))//' velocity, -/s', i=1,size(y%qmdot))]) + + call MV_AddVar(Vars%y, "qmdotdot", FieldScalar, & + DL=DatLoc(ExtPtfm_y_qmdotdot), & + Num=size(y%qmdotdot), & + LinNames=[('Follower mode '//trim(num2lstr(i))//' acceleration, -/s^2', i=1,size(y%qmdotdot))]) + end if + + if ( p%NumOuts > 0_IntKi ) then + call MV_AddVar(Vars%y, "WriteOutput", FieldScalar, & + DL=DatLoc(ExtPtfm_y_WriteOutput), & + Num=p%NumOuts, & + Flags=VF_WriteOut, & + LinNames=[(WriteOutLinName(i), i=1, p%NumOuts)]) + end if !--------------------------------------------------------------------------- ! Initialization dependent on linearization @@ -286,12 +373,12 @@ subroutine ExtPtfm_InitVars(u, p, x, y, m, Vars, InputFileData, Linearize, ErrSt call MV_InitVarsJac(Vars, m%Jac, Linearize, ErrStat2, ErrMsg2); if (Failed()) return - if (Linearize) then - call ExtPtfm_CopyContState(x, m%x_perturb, MESH_NEWCOPY, ErrStat2, ErrMsg2); if (Failed()) return - call ExtPtfm_CopyContState(x, m%dxdt_lin, MESH_NEWCOPY, ErrStat2, ErrMsg2); if (Failed()) return - call ExtPtfm_CopyInput(u, m%u_perturb, MESH_NEWCOPY, ErrStat2, ErrMsg2); if (Failed()) return - call ExtPtfm_CopyOutput(y, m%y_lin, MESH_NEWCOPY, ErrStat2, ErrMsg2); if (Failed()) return - end if + ! if (Linearize) then + call ExtPtfm_CopyContState(x, m%x_perturb, MESH_NEWCOPY, ErrStat2, ErrMsg2); if (Failed()) return + call ExtPtfm_CopyContState(x, m%dxdt_lin, MESH_NEWCOPY, ErrStat2, ErrMsg2); if (Failed()) return + call ExtPtfm_CopyInput(u, m%u_perturb, MESH_NEWCOPY, ErrStat2, ErrMsg2); if (Failed()) return + call ExtPtfm_CopyOutput(y, m%y_lin, MESH_NEWCOPY, ErrStat2, ErrMsg2); if (Failed()) return + ! end if contains function WriteOutLinName(iParam) result(Name) @@ -313,89 +400,103 @@ SUBROUTINE SetStateMatrices( p, ErrStat, ErrMsg) CHARACTER(*), INTENT(OUT) :: ErrMsg !< Error message ! Local variables: INTEGER(IntKi) :: I ! loop counter - INTEGER(IntKi) :: nX ! Number of states - INTEGER(IntKi) :: nU ! Number of inputs - INTEGER(IntKi) :: nY ! Number of ouputs INTEGER(IntKi) :: n1 ! Number of interface DOF INTEGER(IntKi) :: n2 ! Number of CB DOF - real(ReKi), dimension(:,:), allocatable :: I22 - ! Init - nX = 2*p%nCB - nU = 3*6 - nY = 6 - n1 = 6 + + ErrStat = ErrID_None + ErrMsg = "" + + n1 = 6_IntKi n2 = p%nCB - if (allocated(p%AMat)) deallocate(p%AMat) - if (allocated(p%BMat)) deallocate(p%BMat) - if (allocated(p%CMat)) deallocate(p%CMat) - if (allocated(p%DMat)) deallocate(p%DMat) - if (allocated(p%M11)) deallocate(p%M11) - if (allocated(p%M12)) deallocate(p%M12) - if (allocated(p%M22)) deallocate(p%M22) - if (allocated(p%M21)) deallocate(p%M21) - if (allocated(p%C11)) deallocate(p%C11) - if (allocated(p%C12)) deallocate(p%C12) - if (allocated(p%C22)) deallocate(p%C22) - if (allocated(p%C21)) deallocate(p%C21) - if (allocated(p%K11)) deallocate(p%C11) - if (allocated(p%K22)) deallocate(p%C22) - ! Allocation - call allocAry(p%AMat, nX, nX, 'p%AMat', ErrStat, ErrMsg); if(Failed()) return ; p%AMat(1:nX,1:nX) =0 - call allocAry(p%BMat, nX, nU, 'p%BMat', ErrStat, ErrMsg); if(Failed()) return ; p%BMat(1:nX,1:nU) =0 - call allocAry(p%FX , nX, 'p%FX' , ErrStat, ErrMsg); if(Failed()) return ; p%Fx (1:nX) =0 - call allocAry(p%CMat, nY, nX, 'p%CMat', ErrStat, ErrMsg); if(Failed()) return ; p%CMat(1:nY,1:nX) =0 - call allocAry(p%DMat, nY, nU, 'p%DMat', ErrStat, ErrMsg); if(Failed()) return ; p%DMat(1:nY,1:nU) =0 - call allocAry(p%FY , nY, 'p%FY' , ErrStat, ErrMsg); if(Failed()) return ; p%FY (1:nY) =0 - call allocAry(p%M11 , n1, n1, 'p%M11' , ErrStat, ErrMsg); if(Failed()) return ; p%M11 (1:n1,1:n1) =0 - call allocAry(p%K11 , n1, n1, 'p%K11' , ErrStat, ErrMsg); if(Failed()) return ; p%K11 (1:n1,1:n1) =0 - call allocAry(p%C11 , n1, n1, 'p%C11' , ErrStat, ErrMsg); if(Failed()) return ; p%C11 (1:n1,1:n1) =0 - call allocAry(p%M22 , n2, n2, 'p%M22' , ErrStat, ErrMsg); if(Failed()) return ; p%M22 (1:n2,1:n2) =0 - call allocAry(p%K22 , n2, n2, 'p%K22' , ErrStat, ErrMsg); if(Failed()) return ; p%K22 (1:n2,1:n2) =0 - call allocAry(p%C22 , n2, n2, 'p%C22' , ErrStat, ErrMsg); if(Failed()) return ; p%C22 (1:n2,1:n2) =0 - call allocAry(p%M12 , n1, n2, 'p%M12' , ErrStat, ErrMsg); if(Failed()) return ; p%M12 (1:n1,1:n2) =0 - call allocAry(p%C12 , n1, n2, 'p%C12' , ErrStat, ErrMsg); if(Failed()) return ; p%C12 (1:n1,1:n2) =0 - call allocAry(p%M21 , n2, n1, 'p%M21' , ErrStat, ErrMsg); if(Failed()) return ; p%M21 (1:n2,1:n1) =0 - call allocAry(p%C21 , n2, n1, 'p%C21' , ErrStat, ErrMsg); if(Failed()) return ; p%C21 (1:n2,1:n1) =0 - call allocAry( I22 , n2, n2, ' I22' , ErrStat, ErrMsg); if(Failed()) return ; I22 (1:n2,1:n2) =0 - do I=1,n2 ; I22(I,I)=1; enddo ! Identity matrix + + call allocAry(p%M11 , n1, n1, 'p%M11' , ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%M12 , n1, n2, 'p%M12' , ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%M21 , n2, n1, 'p%M21' , ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%M22 , n2, n2, 'p%M22' , ErrStat, ErrMsg); if(Failed()) return + + call allocAry(p%K11 , n1, n1, 'p%K11' , ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%K12 , n1, n2, 'p%K12' , ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%K21 , n2, n1, 'p%K21' , ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%K22 , n2, n2, 'p%K22' , ErrStat, ErrMsg); if(Failed()) return + + call allocAry(p%C11 , n1, n1, 'p%C11' , ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%C12 , n1, n2, 'p%C12' , ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%C21 , n2, n1, 'p%C21' , ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%C22 , n2, n2, 'p%C22' , ErrStat, ErrMsg); if(Failed()) return + + call allocAry(p%A1Mat, n2, n2, 'p%A1Mat', ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%A2Mat, n2, n2, 'p%A2Mat', ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%B1Mat, n2, n1, 'p%A1Mat', ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%B2Mat, n2, n1, 'p%A2Mat', ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%B3Mat, n2, n1, 'p%A1Mat', ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%B4Mat, n2, n2, 'p%A2Mat', ErrStat, ErrMsg); if(Failed()) return + + call allocAry(p%C1Mat, n1, n2, 'p%A1Mat', ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%C2Mat, n1, n2, 'p%A2Mat', ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%D1Mat, n1, n1, 'p%A1Mat', ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%D2Mat, n1, n1, 'p%A2Mat', ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%D3Mat, n1, n1, 'p%A1Mat', ErrStat, ErrMsg); if(Failed()) return + call allocAry(p%D4Mat, n1, n2, 'p%A2Mat', ErrStat, ErrMsg); if(Failed()) return + ! Submatrices - p%M11(1:n1,1:n1) = p%Mass(1:n1 ,1:n1 ) - p%C11(1:n1,1:n1) = p%Damp(1:n1 ,1:n1 ) - p%K11(1:n1,1:n1) = p%Stff(1:n1 ,1:n1 ) - p%M12(1:n1,1:n2) = p%Mass(1:n1 ,n1+1:n1+n2) - p%C12(1:n1,1:n2) = p%Damp(1:n1 ,n1+1:n1+n2) - p%M21(1:n2,1:n1) = p%Mass(n1+1:n1+n2,1:n1 ) - p%C21(1:n2,1:n1) = p%Damp(n1+1:n1+n2,1:n1 ) - p%M22(1:n2,1:n2) = p%Mass(n1+1:n1+n2,n1+1:n1+n2) - p%C22(1:n2,1:n2) = p%Damp(n1+1:n1+n2,n1+1:n1+n2) - p%K22(1:n2,1:n2) = p%Stff(n1+1:n1+n2,n1+1:n1+n2) - ! A matrix - p%AMat(1:n2 ,n2+1:nX) = I22 (1:n2,1:n2) - p%AMat(n2+1:nX,1:n2 ) = -p%K22(1:n2,1:n2) - p%AMat(n2+1:nX,n2+1:nX) = -p%C22(1:n2,1:n2) - ! B matrix - p%BMat(n2+1:nX,7 :12 ) = -p%C21(1:n2,1:6) - p%BMat(n2+1:nX,13:18 ) = -p%M21(1:n2,1:6) - ! C matrix - p%CMat(1:nY,1:n2 ) = matmul(p%M12,p%K22) - p%CMat(1:nY,n2+1:nX) = matmul(p%M12,p%C22) - p%C12 - ! D matrix - p%DMat(1:nY,1:6 ) = -p%K11 - p%DMat(1:nY,7:12 ) = -p%C11 + matmul(p%M12,p%C21) - p%DMat(1:nY,13:18 ) = -p%M11 + matmul(p%M12,p%M21) -CONTAINS + p%M11 = p%Mass( 1:n1 , 1:n1 ) + p%M12 = p%Mass( 1:n1 ,n1+1:n1+n2) + p%M21 = p%Mass(n1+1:n1+n2, 1:n1 ) + p%M22 = p%Mass(n1+1:n1+n2,n1+1:n1+n2) + if ( n2 > 0_IntKi ) then + call PseudoInverse(p%M22, p%M22Inv, ErrStat, ErrMsg); if(Failed()) return + else + call allocAry( p%M22Inv , n2, n2, 'p%M22Inv' , ErrStat, ErrMsg); if(Failed()) return ! Empty placeholder array + end if + + p%C11 = p%Damp( 1:n1 , 1:n1 ) + p%C12 = p%Damp( 1:n1 ,n1+1:n1+n2) + p%C21 = p%Damp(n1+1:n1+n2, 1:n1 ) + p%C22 = p%Damp(n1+1:n1+n2,n1+1:n1+n2) + + p%K11 = p%Stff( 1:n1 , 1:n1 ) + p%K12 = p%Stff( 1:n1 ,n1+1:n1+n2) + p%K21 = p%Stff(n1+1:n1+n2, 1:n1 ) + p%K22 = p%Stff(n1+1:n1+n2,n1+1:n1+n2) + + ! A matrices + p%A1Mat = - matmul(p%M22Inv, p%K22) + p%A2Mat = - matmul(p%M22Inv, p%C22) + + ! B matrices + p%B1Mat = - matmul(p%M22Inv, p%K21) + p%B2Mat = - matmul(p%M22Inv, p%C21) + p%B3Mat = - matmul(p%M22Inv, p%M21) + p%B4Mat = p%M22Inv + + ! C matrices + p%C1Mat = p%K12 + matmul( p%M12, p%A1Mat ) + p%C2Mat = p%C12 + matmul( p%M12, p%A2Mat ) + + ! D matrices + p%D1Mat = p%K11 + matmul( p%M12, p%B1Mat ) + p%D2Mat = p%C11 + matmul( p%M12, p%B2Mat ) + p%D3Mat = p%M11 + matmul( p%M12, p%B3Mat ) + p%D4Mat = matmul( p%M12, p%B4Mat ) + + CONTAINS logical function Failed() CALL SetErrStatSimple(ErrStat, ErrMsg, 'ExtPtfm_SetStateMatrices') Failed = ErrStat >= AbortErrLev end function Failed END SUBROUTINE SetStateMatrices !---------------------------------------------------------------------------------------------------------------------------------- -SUBROUTINE Init_meshes(u, y, InitInp, ErrStat, ErrMsg) +SUBROUTINE Init_meshes(u, p, y, InitInp, ErrStat, ErrMsg) TYPE(ExtPtfm_InputType), INTENT(INOUT) :: u !< System inputs + TYPE(ExtPtfm_ParameterType), INTENT(IN ) :: p !< All the parameter matrices stored in this input file TYPE(ExtPtfm_OutputType), INTENT(INOUT) :: y !< System outputs TYPE(ExtPtfm_InitInputType), INTENT(IN ) :: InitInp !< Input data for initialization routine INTEGER(IntKi), INTENT( OUT) :: ErrStat !< Error status of the operation CHARACTER(*), INTENT( OUT) :: ErrMsg !< Error message if ErrStat /= ErrID_None + + ! Local variables: + INTEGER(IntKi) :: I ! loop counter + ! Create the input and output meshes associated with platform loads CALL MeshCreate( BlankMesh = u%PtfmMesh , & IOS = COMPONENT_INPUT , & @@ -409,16 +510,73 @@ SUBROUTINE Init_meshes(u, y, InitInp, ErrStat, ErrMsg) TranslationAcc = .TRUE. , & RotationAcc = .TRUE.) if(Failed()) return - ! Create the node on the mesh, the node is located at the PlatformRefzt, to match ElastoDyn - CALL MeshPositionNode (u%PtfmMesh, 1, (/0.0_ReKi, 0.0_ReKi, InitInp%PtfmRefzt/), ErrStat, ErrMsg ); if(Failed()) return + CALL MeshPositionNode (u%PtfmMesh, 1, [InitInp%PtfmRefxt, InitInp%PtfmRefyt, InitInp%PtfmRefzt], ErrStat, ErrMsg ); if(Failed()) return ! Create the mesh element CALL MeshConstructElement ( u%PtfmMesh, ELEMENT_POINT, ErrStat, ErrMsg, 1 ); if(Failed()) return CALL MeshCommit ( u%PtfmMesh, ErrStat, ErrMsg ); if(Failed()) return + ! the output mesh is a sibling of the input: CALL MeshCopy( SrcMesh=u%PtfmMesh, DestMesh=y%PtfmMesh, CtrlCode=MESH_SIBLING, IOS=COMPONENT_OUTPUT, & ErrStat=ErrStat, ErrMess=ErrMsg, Force=.TRUE., Moment=.TRUE. ) if(Failed()) return + + ! Create the input and output meshes associated with platform loads + CALL MeshCreate( BlankMesh = u%FBMesh , & + IOS = COMPONENT_INPUT , & + Nnodes = 1 , & + ErrStat = ErrStat , & + ErrMess = ErrMsg , & + Force = .TRUE. , & + Moment = .TRUE.) + if(Failed()) return + ! Create the node on the mesh, the node is located at the PlatformRefzt, to match ElastoDyn + CALL MeshPositionNode (u%FBMesh, 1, [InitInp%PtfmRefxt, InitInp%PtfmRefyt, InitInp%PtfmRefzt], ErrStat, ErrMsg ); if(Failed()) return + ! Create the mesh element + CALL MeshConstructElement ( u%FBMesh, ELEMENT_POINT, ErrStat, ErrMsg, 1 ); if(Failed()) return + CALL MeshCommit ( u%FBMesh, ErrStat, ErrMsg ); if(Failed()) return + + ! the output mesh is a sibling of the input: + CALL MeshCopy( SrcMesh=u%FBMesh, DestMesh=y%FBMesh, CtrlCode=MESH_SIBLING, IOS=COMPONENT_OUTPUT, & + ErrStat=ErrStat, ErrMess=ErrMsg , & + TranslationDisp = .TRUE. , & + Orientation = .TRUE. , & + TranslationVel = .TRUE. , & + RotationVel = .TRUE. , & + TranslationAcc = .TRUE. , & + RotationAcc = .TRUE. ) + if(Failed()) return + + if (p%nConn>0_IntKi) then + ! Create the input and output meshes associated with platform loads + CALL MeshCreate( BlankMesh = u%ConnLdMesh , & + IOS = COMPONENT_INPUT , & + Nnodes = p%nConn , & + ErrStat = ErrStat , & + ErrMess = ErrMsg , & + Force = .TRUE. , & + Moment = .TRUE.) + if(Failed()) return + do i = 1,p%nConn + ! Create the node on the mesh, the node is located at the user-defined connection points + CALL MeshPositionNode(u%ConnLdMesh, i, p%PosConn(i,:), ErrStat, ErrMsg ); if(Failed()) return + ! Create the mesh element + CALL MeshConstructElement(u%ConnLdMesh, ELEMENT_POINT, ErrStat, ErrMsg, i ); if(Failed()) return + end do + CALL MeshCommit ( u%ConnLdMesh, ErrStat, ErrMsg ); if(Failed()) return + + ! the output mesh is a sibling of the input: + CALL MeshCopy( SrcMesh=u%ConnLdMesh, DestMesh=y%ConnMesh, CtrlCode=MESH_SIBLING, IOS=COMPONENT_OUTPUT, & + ErrStat=ErrStat, ErrMess=ErrMsg , & + TranslationDisp = .TRUE. , & + Orientation = .TRUE. , & + TranslationVel = .TRUE. , & + RotationVel = .TRUE. , & + TranslationAcc = .TRUE. , & + RotationAcc = .TRUE. ) + if(Failed()) return + end if + CONTAINS logical function Failed() CALL SetErrStatSimple(ErrStat, ErrMsg, 'Init_meshes') @@ -737,45 +895,195 @@ SUBROUTINE ExtPtfm_CalcOutput( t, u, p, x, xd, z, OtherState, y, m, ErrStat, Err INTEGER(IntKi), INTENT( OUT) :: ErrStat !< Error status of the operation CHARACTER(*), INTENT( OUT) :: ErrMsg !< Error message if ErrStat /= ErrID_None ! Local variables - INTEGER(IntKi) :: I !< Generic counters - real(ReKi), dimension(6) :: Fc !< Output coupling force - ! Compute the loads `fr1 fr2` at t (fr1 without added mass) by time interpolation of the inputs loads p%Forces - call InterpStpMat(REAL(t,ReKi), p%times, p%Forces, m%Indx, p%nTimeSteps, m%F_at_t) - - ! --- Flatening vectors and using linear state formulation y=Cx+Du+Fy - ! u flat (x1, \dot{x1}, \ddot{x1}) - m%uFlat(1:3) = u%PtfmMesh%TranslationDisp(:,1) - m%uFlat(4:6) = GetSmllRotAngs(u%PtfmMesh%Orientation(:,:,1), ErrStat, ErrMsg); CALL SetErrStatSimple(ErrStat, ErrMsg, 'ExtPtfm_CalcOutput') - m%uFlat(7:9 ) = u%PtfmMesh%TranslationVel(:,1) - m%uFlat(10:12) = u%PtfmMesh%RotationVel (:,1) - m%uFlat(13:15) = u%PtfmMesh%TranslationAcc(:,1) - m%uFlat(16:18) = u%PtfmMesh%RotationAcc (:,1) - - !--- Computing output: y = Cx + Du + Fy - ! - if (p%nCB>0) then - ! x flat - m%xFlat( 1:p%nCB ) = x%qm (1:p%nCB) - m%xFlat(p%nCB+1:2*p%nCB) = x%qmdot(1:p%nCB) - - ! >>> MATMUL implementation - !Fc = matmul(p%CMat, m%xFlat) + matmul(p%DMat, m%uFlat) + m%F_at_t(1:6) - matmul(p%M12, m%F_at_t(6+1:6+p%nCB)) - - ! >>> LAPACK implementation - Fc(1:6) = m%F_at_t(1:6) ! Fc = F1r + ... - ! GEMV(TRS, M , N , alpha , A , LDA, X ,INCX, Beta , Y, IncY) - CALL LAPACK_GEMV('n', 6 , 2*p%nCB, 1.0_ReKi, p%CMat, 6 , m%xFlat , 1, 1.0_ReKi, Fc, 1 ) ! = C*x + (F1r) - CALL LAPACK_GEMV('n', 6 , 18 , 1.0_ReKi, p%DMat, 6 , m%uFlat , 1, 1.0_ReKi, Fc, 1 ) ! + D*u - CALL LAPACK_GEMV('n', 6 , p%nCB , -1.0_ReKi, p%M12 , 6 , m%F_at_t(6+1:6+p%nCB), 1, 1.0_ReKi, Fc, 1 ) ! - M12*F2r + INTEGER(IntKi) :: I !< Generic counters + real(ReKi), dimension(6) :: Fc !< Output coupling force + TYPE(ExtPtfm_ContinuousStateType) :: xdot ! time derivatives of continuous states + real(R8Ki), dimension(3,3) :: Rg2b ! Rotation matrix from global earth-fixed coordinate system to rigid-body coordinate system + real(R8Ki), dimension(3,3) :: Rb2g ! Rotation matrix from rigid-body coordinate system to global earth-fixed coordinate system + real(ReKi), dimension(3) :: RelPosConn + real(ReKi), dimension(3) :: RelPosConn0 + real(ReKi), dimension(3) :: RelVelConn + real(ReKi), dimension(3) :: omega + real(ReKi), dimension(3) :: omega_dot + real(ReKi), dimension(3) :: RdU + real(ReKi), dimension(3) :: RdUdot + real(ReKi), dimension(3) :: RdUdotdot + + ErrStat = ErrID_None + ErrMsg = "" + + ! Compute the loads `fr1 fr2` at t (fr1 without added mass) by time interpolation of the inputs loads p%UsrModeF%Forces + call InterpStpMat(REAL(t,ReKi), p%UsrModeF%times, p%UsrModeF%Forces, m%Indx_UsrModeF, p%UsrModeF%nTimeSteps, m%F_at_t) + call InterpStpMat(REAL(t,ReKi), p%UsrConnF%times, p%UsrConnF%Forces, m%Indx_UsrConnF, p%UsrConnF%nTimeSteps, m%FConn_at_t) + + if ( p%hasRBMode ) then + Rg2b = u%PtfmMesh%Orientation(:,:,1) + Rb2g = transpose(Rg2b) + ! u flat (x1, \dot{x1}, \ddot{x1}) in body-fixed coordinate system + m%uFlat(1:3) = 0.0_ReKi ! Translational displacement is zero in body-fixed system - corresponding stiffness terms must be zero + m%uFlat(4:6) = EulerExtractZYX(u%PtfmMesh%Orientation(:,:,1)) + m%uFlat(7:9 ) = matmul( Rg2b, u%PtfmMesh%TranslationVel(:,1) ) + m%uFlat(10:12) = matmul( Rg2b, u%PtfmMesh%RotationVel (:,1) ) + m%uFlat(13:15) = matmul( Rg2b, u%PtfmMesh%TranslationAcc(:,1) ) + m%uFlat(16:18) = matmul( Rg2b, u%PtfmMesh%RotationAcc (:,1) ) + do i=1,p%nConn + m%FConn((i-1)*3+1:(i-1)*3+3) = matmul( Rg2b, u%ConnLdMesh%Force(:,i) + m%FConn_at_t((i-1)*3+1:(i-1)*3+3) ) + end do else - Fc = matmul(p%DMat, m%uFlat) + m%F_at_t(1:6) - endif + call eye(Rg2b,ErrStat,ErrMsg); if (failed()) return + call eye(Rb2g,ErrStat,ErrMsg); if (failed()) return + ! u flat (x1, \dot{x1}, \ddot{x1}) in global coordinate system + m%uFlat(1:3) = u%PtfmMesh%TranslationDisp(:,1) + m%uFlat(4:6) = GetSmllRotAngs(u%PtfmMesh%Orientation(:,:,1), ErrStat, ErrMsg); CALL SetErrStatSimple(ErrStat, ErrMsg, 'ExtPtfm_CalcOutput') + m%uFlat(7:9 ) = u%PtfmMesh%TranslationVel(:,1) + m%uFlat(10:12) = u%PtfmMesh%RotationVel (:,1) + m%uFlat(13:15) = u%PtfmMesh%TranslationAcc(:,1) + m%uFlat(16:18) = u%PtfmMesh%RotationAcc (:,1) + do i=1,p%nConn + m%FConn((i-1)*3+1:(i-1)*3+3) = u%ConnLdMesh%Force(:,i) + m%FConn_at_t((i-1)*3+1:(i-1)*3+3) + end do + end if + + !--- Compute external loads + ! Note: m%F1 is the interface/rigid-body mode forcing kept in earth-fixed system + ! m%F2 is the forcing to the internal elastic modes + m%F1(1:3) = u%FBMesh%Force (:,1) + m%F1(4:6) = u%FBMesh%Moment(:,1) + m%F1 = m%F1 + m%F_at_t(1:6) + m%F2 = u%Fm + m%F_at_t(6+1:6+p%nCB) + + ! Structure self-weight + if ( p%hasRBMode ) then + select case (p%RBMod) + case (1_IntKi) + ! Compute self-weight based on stiffness and convert to earth-fixed frame + m%Weight(1:6) = p%W0(1:6) & + - matmul( p%WStff(1:6,4:5) , m%uFlat(4:5) ) & + - matmul( p%WStff(1:6,6+1:6+p%nCB) , x%qm ) + m%Weight(1:3) = matmul( Rb2g, m%Weight(1:3)) + m%Weight(4:6) = matmul( Rb2g, m%Weight(4:6)) + case (2_IntKi) + ! Compute exact self-weight in earth-fixed frame + m%Weight(1:3) = [0.0_ReKi,0.0_ReKi,p%W0(3)] + m%Weight(4:6) = cross_product( matmul( Rb2g , p%RBCoG), m%Weight(1:3) ) + end select + m%Weight(6+1:6+p%nCB) = p%W0(6+1:6+p%nCB) & + - matmul( p%WStff(6+1:6+p%nCB,4:5) , m%uFlat(4:5) ) & + - matmul( p%WStff(6+1:6+p%nCB,6+1:6+p%nCB) , x%qm ) + else + ! Fully linearized formulation + m%Weight = p%W0 & + - matmul( p%WStff(:,1:6) , m%uFlat(1:6) ) & + - matmul( p%WStff(:,6+1:6+p%nCB) , x%qm ) + end if + m%F1 = m%F1 + m%Weight(1:6) + m%F2 = m%F2 + m%Weight(6+1:6+p%nCB) + + ! Loads from connection points + if (p%nConn>0_IntKi) then + m%FConnCB = matmul( transpose(p%PhiConn) , m%FConn ) + if ( p%hasRBMode ) then + m%F1(1:3) = m%F1(1:3) + matmul( Rb2g, m%FConnCB(1:3) ) + m%F1(4:6) = m%F1(4:6) + matmul( Rb2g, m%FConnCB(4:6) ) + else + m%F1 = m%F1 + m%FConnCB(1:6) + end if + m%F2 = m%F2 + m%FConnCB(6+1:6+p%nCB) + end if + + !--- Compute reaction load applied to tower base. Output y = Cx + Du + Fy + Fc = matmul( p%D1Mat, m%uFlat(1:6) ) + matmul( p%D2Mat, m%uFlat(7:12) ) + matmul( p%D3Mat, m%uFlat(13:18) ) + if (p%nCB>0) then + Fc = Fc + matmul( p%C1Mat, x%qm ) + matmul( p%C2Mat, x%qmdot ) + matmul( p%D4Mat, m%F2 ) + end if + if ( p%hasRBMode ) then + if (p%RBMod==2_IntKi) then + Fc(1:3) = Fc(1:3) + p%RBMass*cross_product( m%uFlat(10:12), cross_product( m%uFlat(10:12), p%RBCoG ) ) + Fc(4:6) = Fc(4:6) + cross_product( m%uFlat(10:12), matmul( p%RBInertia, m%uFlat(10:12)) ) + end if + Fc(1:3) = matmul( Rb2g, Fc(1:3) ) + Fc(4:6) = matmul( Rb2g, Fc(4:6) ) + end if + Fc = -Fc + m%F1 + + ! Update output states + if (p%nCB>0) then + CALL ExtPtfm_CalcContStateDeriv( t, u, p, x, xd, z, OtherState, m, xdot, ErrStat, ErrMsg ) + y%qm = x%qm + y%qmdot = x%qmdot + y%qmdotdot = xdot%qmdot + end if ! Update the output mesh - do i=1,3 - y%PtfmMesh%Force(I,1) = Fc(I) - y%PtfmMesh%Moment(I,1) = Fc(I+3) - enddo + y%PtfmMesh%Force(:,1) = Fc(1:3) + y%PtfmMesh%Moment(:,1) = Fc(4:6) + if (.not.p%HasRBMode) then + ! Interface moment correction for fixed-bottom structure similar to SubDyn + y%PtfmMesh%Moment(:,1) = y%PtfmMesh%Moment(:,1) - cross_product( u%PtfmMesh%TranslationDisp(:,1), Fc(1:3) ) + end if + + if (p%HasRBMode) then + y%FBMesh%TranslationDisp = u%PtfmMesh%TranslationDisp + y%FBMesh%Orientation = u%PtfmMesh%Orientation + y%FBMesh%TranslationVel = u%PtfmMesh%TranslationVel + y%FBMesh%RotationVel = u%PtfmMesh%RotationVel + y%FBMesh%TranslationAcc = u%PtfmMesh%TranslationAcc + y%FBMesh%RotationAcc = u%PtfmMesh%RotationAcc + end if + + if (p%nConn > 0_IntKi) then + if (p%HasRBMode) then + if (p%nCB>0) then + ! Elastic mode contributions in rigid-body frame + m%DConn = matmul( p%PhiConn(:,7:6+p%nCB), y%qm ) + m%VConn = matmul( p%PhiConn(:,7:6+p%nCB), y%qmdot ) + m%AConn = matmul( p%PhiConn(:,7:6+p%nCB), y%qmdotdot ) + else + m%DConn = 0.0_ReKi + m%VConn = 0.0_ReKi + m%AConn = 0.0_ReKi + end if + do i = 1,p%nConn + RdU = matmul( Rb2g, m%DConn(3*(i-1)+1:3*(i-1)+3) ) + RdUdot = matmul( Rb2g, m%VConn(3*(i-1)+1:3*(i-1)+3) ) + RdUdotdot = matmul( Rb2g, m%AConn(3*(i-1)+1:3*(i-1)+3) ) + RelPosConn0 = y%ConnMesh%Position(:,i) - u%PtfmMesh%Position(:,1) + RelPosConn = matmul( Rb2g, RelPosConn0 ) + RdU + omega = u%PtfmMesh%RotationVel(:,1) + omega_dot = u%PtfmMesh%RotationAcc(:,1) + + ! Compute absolute translation displacement, velocity, and acceleration of connection points in earth-fixed frame + y%ConnMesh%TranslationDisp(:,i) = u%PtfmMesh%TranslationDisp(:,1) + RelPosConn - RelPosConn0 + y%ConnMesh%TranslationVel (:,i) = u%PtfmMesh%TranslationVel (:,1) + RdUdot + cross_product( omega, RelPosConn ) + RelVelConn = y%ConnMesh%TranslationVel(:,i) - u%PtfmMesh%TranslationVel(:,1) + y%ConnMesh%TranslationAcc (:,i) = u%PtfmMesh%TranslationAcc (:,1) + RdUdotdot + cross_product( omega_dot, RelPosConn ) + cross_product( omega, RdUdot + RelVelConn ) + + ! No contribution from elasticity to rotation for now + y%ConnMesh%Orientation(:,:,i) = Rg2b + y%ConnMesh%RotationVel(:,i) = u%PtfmMesh%RotationVel(:,1) + y%ConnMesh%RotationAcc(:,i) = u%PtfmMesh%RotationAcc(:,1) + end do + else + ! Interface mode contributions + m%DConn = matmul( p%PhiConn(:,1:6), m%uFlat( 1: 6) ) + m%VConn = matmul( p%PhiConn(:,1:6), m%uFlat( 7:12) ) + m%AConn = matmul( p%PhiConn(:,1:6), m%uFlat(13:18) ) + if (p%nCB>0) then ! Elastic mode contributions + m%DConn = m%DConn + matmul( p%PhiConn(:,7:6+p%nCB), y%qm ) + m%VConn = m%VConn + matmul( p%PhiConn(:,7:6+p%nCB), y%qmdot ) + m%AConn = m%AConn + matmul( p%PhiConn(:,7:6+p%nCB), y%qmdotdot ) + end if + do i = 1,p%nConn + ! No contribution from elasticity to rotation for now + y%ConnMesh%TranslationDisp(:,i) = m%DConn(3*(i-1)+1:3*(i-1)+3) + y%ConnMesh%Orientation(:,:,i) = Rg2b + y%ConnMesh%TranslationVel(:,i) = m%VConn(3*(i-1)+1:3*(i-1)+3) + y%ConnMesh%RotationVel(:,i) = 0.0_ReKi + y%ConnMesh%TranslationAcc(:,i) = m%AConn(3*(i-1)+1:3*(i-1)+3) + y%ConnMesh%RotationAcc(:,i) = 0.0_ReKi + end do + end if + end if ! --- All Outputs m%AllOuts(ID_PtfFx) = y%PtfmMesh%Force (1,1) @@ -784,17 +1092,17 @@ SUBROUTINE ExtPtfm_CalcOutput( t, u, p, x, xd, z, OtherState, y, m, ErrStat, Err m%AllOuts(ID_PtfMx) = y%PtfmMesh%Moment(1,1) m%AllOuts(ID_PtfMy) = y%PtfmMesh%Moment(2,1) m%AllOuts(ID_PtfMz) = y%PtfmMesh%Moment(3,1) - m%AllOuts(ID_InpFx) = m%F_at_t(1) - m%AllOuts(ID_InpFy) = m%F_at_t(2) - m%AllOuts(ID_InpFz) = m%F_at_t(3) - m%AllOuts(ID_InpMx) = m%F_at_t(4) - m%AllOuts(ID_InpMy) = m%F_at_t(5) - m%AllOuts(ID_InpMz) = m%F_at_t(6) - !y%WriteOutput(ID_WaveElev) = .. ! TODO + m%AllOuts(ID_InpFx) = m%F1(1) + m%AllOuts(ID_InpFy) = m%F1(2) + m%AllOuts(ID_InpFz) = m%F1(3) + m%AllOuts(ID_InpMx) = m%F1(4) + m%AllOuts(ID_InpMy) = m%F1(5) + m%AllOuts(ID_InpMz) = m%F1(6) do i=1,p%nCB - m%AllOuts(ID_QStart + 0*p%nCBFull -1 + p%ActiveCBDOF(I)) = x%qm (I) ! CBQ - DOF Positions - m%AllOuts(ID_QStart + 1*p%nCBFull -1 + p%ActiveCBDOF(I)) = x%qmdot(I) ! CBQD - DOF Velocities - m%AllOuts(ID_QStart + 2*p%nCBFull -1 + p%ActiveCBDOF(I)) = m%F_at_t(6+I) ! CBF - DOF Forces + m%AllOuts(ID_QStart + 0*p%nCBFull -1 + p%ActiveCBDOF(I)) = y%qm (I) ! CBD - DOF Displacements + m%AllOuts(ID_QStart + 1*p%nCBFull -1 + p%ActiveCBDOF(I)) = y%qmdot (I) ! CBV - DOF Velocities + m%AllOuts(ID_QStart + 2*p%nCBFull -1 + p%ActiveCBDOF(I)) = y%qmdotdot(I) ! CBA - DOF Accelerations + m%AllOuts(ID_QStart + 3*p%nCBFull -1 + p%ActiveCBDOF(I)) = m%F2 (I) ! CBF - DOF External Forces enddo ! --- Selected output channels only do I = 1,p%NumOuts @@ -803,7 +1111,13 @@ SUBROUTINE ExtPtfm_CalcOutput( t, u, p, x, xd, z, OtherState, y, m, ErrStat, Err else y%WriteOutput(I) = -9.9999e20 endif - enddo + enddo + + CONTAINS + logical function Failed() + CALL SetErrStatSimple(ErrStat, ErrMsg, 'ExtPtfm_CalcContStateDeriv') + Failed = ErrStat >= AbortErrLev + end function Failed END SUBROUTINE ExtPtfm_CalcOutput !---------------------------------------------------------------------------------------------------------------------------------- @@ -823,42 +1137,71 @@ SUBROUTINE ExtPtfm_CalcContStateDeriv( t, u, p, x, xd, z, OtherState, m, dxdt, E TYPE(ExtPtfm_ContinuousStateType), INTENT( OUT) :: dxdt !< Continuous state derivatives at t INTEGER(IntKi), INTENT( OUT) :: ErrStat !< Error status of the operation CHARACTER(*), INTENT( OUT) :: ErrMsg !< Error message if ErrStat /= ErrID_None + ! Local variables INTEGER(IntKi) :: I + REAL(R8Ki), dimension(3,3) :: Rg2b ! Rotation matrix global 2 body coordinates + REAL(R8Ki), dimension(3,3) :: Rb2g ! Rotation matrix body 2 global coordinates + ! Allocation of output dxdt (since intent(out)) call AllocAry(dxdt%qm, p%nCB, 'dxdt%qm', ErrStat, ErrMsg); if(Failed()) return call AllocAry(dxdt%qmdot, p%nCB, 'dxdt%qmdot', ErrStat, ErrMsg); if(Failed()) return if ( p%nCB == 0 ) return - do I=1,p%nCB; dxdt%qm (I)=0; enddo - do I=1,p%nCB; dxdt%qmdot(I)=0; enddo - - ! Compute the loads `fr1 fr2` at t (fr1 without added mass) by time interpolation of the inputs loads p%F - call InterpStpMat(REAL(t,ReKi), p%times, p%Forces, m%Indx, p%nTimeSteps, m%F_at_t) - - ! u flat (x1, \dot{x1}, \ddot{x1}) - m%uFlat(1:3) = u%PtfmMesh%TranslationDisp(:,1) - m%uFlat(4:6) = GetSmllRotAngs(u%PtfmMesh%Orientation(:,:,1), ErrStat, ErrMsg); if(Failed()) return - m%uFlat(7:9 ) = u%PtfmMesh%TranslationVel(:,1) - m%uFlat(10:12) = u%PtfmMesh%RotationVel (:,1) - m%uFlat(13:15) = u%PtfmMesh%TranslationAcc(:,1) - m%uFlat(16:18) = u%PtfmMesh%RotationAcc (:,1) - - ! --- Computation of qm and qmdot - ! >>> Latex formulae: - ! \ddot{x2} = -K22 x2 - C22 \dot{x2} - C21 \dot{x1} - M21 \ddot{x1} + fr2 - ! >>> MATMUL IMPLEMENTATION - !dxdt%qm= x%qmdot - !dxdt%qmdot = - matmul(p%K22,x%qm) - matmul(p%C22,x%qmdot) & - ! - matmul(p%C21,m%uFlat(7:12)) - matmul(p%M21, m%uFlat(13:18)) + m%F_at_t(6+1:6+p%nCB) - ! >>> BLAS IMPLEMENTATION - ! COPY( N , X , INCX, Y , INCY) - CALL LAPACK_COPY(p%nCB, x%qmdot , 1 , dxdt%qm , 1 ) ! qmdot=qmdot - CALL LAPACK_COPY(p%nCB, m%F_at_t(6+1:6+p%nCB), 1 , dxdt%qmdot , 1 ) ! qmddot = fr2 - ! GEMV(TRS, M , N , alpha , A , LDA , X ,INCX, Beta , Y , IncY) - CALL LAPACK_GEMV('n', p%nCB, p%nCB , -1.0_ReKi, p%K22, p%nCB, x%qm , 1 , 1.0_ReKi, dxdt%qmdot, 1 ) ! - K22 x2 - CALL LAPACK_GEMV('n', p%nCB, 6 , -1.0_ReKi, p%C21, p%nCB, m%uFlat(7:12) , 1 , 1.0_ReKi, dxdt%qmdot, 1 ) ! - C21 \dot{x1} - CALL LAPACK_GEMV('n', p%nCB, p%nCB , -1.0_ReKi, p%C22, p%nCB, x%qmdot , 1 , 1.0_ReKi, dxdt%qmdot, 1 ) ! - C22 \dot{x2} - CALL LAPACK_GEMV('n', p%nCB, 6 , -1.0_ReKi, p%M21, p%nCB, m%uFlat(13:18), 1 , 1.0_ReKi, dxdt%qmdot, 1 ) ! - M21 \ddot{x1} + dxdt%qm =0.0_ReKi + dxdt%qmdot=0.0_ReKi + + ! Compute the loads `fr1 fr2` at t (fr1 without added mass) by time interpolation of the inputs loads p%UsrModeF%Forces + call InterpStpMat(REAL(t,ReKi), p%UsrModeF%times, p%UsrModeF%Forces, m%Indx_UsrModeF, p%UsrModeF%nTimeSteps, m%F_at_t) + call InterpStpMat(REAL(t,ReKi), p%UsrConnF%times, p%UsrConnF%Forces, m%Indx_UsrConnF, p%UsrConnF%nTimeSteps, m%FConn_at_t) + + if ( p%hasRBMode ) then + Rg2b = u%PtfmMesh%Orientation(:,:,1) + Rb2g = transpose(Rg2b) + ! u flat (x1, \dot{x1}, \ddot{x1}) in body-fixed coordinate system + m%uFlat(1:3) = 0.0_ReKi ! u%PtfmMesh%TranslationDisp(:,1) + m%uFlat(4:6) = EulerExtractZYX(u%PtfmMesh%Orientation(:,:,1)) + m%uFlat(7:9 ) = matmul( Rg2b, u%PtfmMesh%TranslationVel(:,1) ) + m%uFlat(10:12) = matmul( Rg2b, u%PtfmMesh%RotationVel (:,1) ) + m%uFlat(13:15) = matmul( Rg2b, u%PtfmMesh%TranslationAcc(:,1) ) + m%uFlat(16:18) = matmul( Rg2b, u%PtfmMesh%RotationAcc (:,1) ) + do i=1,p%nConn + m%FConn((i-1)*3+1:(i-1)*3+3) = matmul( Rg2b, u%ConnLdMesh%Force(:,i) + m%FConn_at_t((i-1)*3+1:(i-1)*3+3) ) + end do + else + ! u flat (x1, \dot{x1}, \ddot{x1}) in global coordinate system + m%uFlat(1:3) = u%PtfmMesh%TranslationDisp(:,1) + m%uFlat(4:6) = GetSmllRotAngs(u%PtfmMesh%Orientation(:,:,1), ErrStat, ErrMsg); if(Failed()) return + m%uFlat(7:9 ) = u%PtfmMesh%TranslationVel(:,1) + m%uFlat(10:12) = u%PtfmMesh%RotationVel (:,1) + m%uFlat(13:15) = u%PtfmMesh%TranslationAcc(:,1) + m%uFlat(16:18) = u%PtfmMesh%RotationAcc (:,1) + do i=1,p%nConn + m%FConn((i-1)*3+1:(i-1)*3+3) = u%ConnLdMesh%Force(:,i) + m%FConn_at_t((i-1)*3+1:(i-1)*3+3) + end do + end if + + ! --- Compute modal forcing + m%F2 = m%F_at_t(6+1:6+p%nCB) & ! User prescribed forces + + u%Fm(1:p%nCB) ! Modal forcing from HydroDyn generalized DOF + ! Structure self-weight + if ( p%hasRBMode ) then + m%Weight(6+1:6+p%nCB) = p%W0(6+1:6+p%nCB) & + - matmul( p%WStff(6+1:6+p%nCB,4:5) , m%uFlat(4:5) ) - matmul( p%WStff(6+1:6+p%nCB,6+1:6+p%nCB) , x%qm ) + else + m%Weight(6+1:6+p%nCB) = p%W0(6+1:6+p%nCB) & + - matmul( p%WStff(6+1:6+p%nCB,1:6) , m%uFlat(1:6) ) - matmul( p%WStff(6+1:6+p%nCB,6+1:6+p%nCB) , x%qm ) + end if + m%F2 = m%F2 + m%Weight(6+1:6+p%nCB) + ! Loads from connection points + if (p%nConn>0_IntKi) then + m%FConnCB = matmul( transpose(p%PhiConn) , m%FConn ) + m%F2 = m%F2 + m%FConnCB(6+1:6+p%nCB) + end if + + ! --- Compute qm and qmdot + dxdt%qm = x%qmdot + dxdt%qmdot = matmul( p%A1Mat, x%qm ) + matmul( p%A2Mat, x%qmdot ) & + + matmul( p%B1Mat, m%uFlat(1:6) ) + matmul( p%B2Mat, m%uFlat(7:12) ) + matmul( p%B3Mat, m%uFlat(13:18) ) + matmul( p%B4Mat, m%F2 ) CONTAINS logical function Failed() @@ -922,13 +1265,13 @@ END SUBROUTINE ExtPtfm_CalcConstrStateResidual SUBROUTINE ExtPtfm_JacobianPInput(Vars, t, u, p, x, xd, z, OtherState, y, m, ErrStat, ErrMsg, dYdu, dXdu, dXddu, dZdu) TYPE(ModVarsType), INTENT(IN ) :: Vars !< Module variables REAL(DbKi), INTENT(IN ) :: t !< Time in seconds at operating point - TYPE(ExtPtfm_InputType), INTENT(IN ) :: u !< Inputs at operating point (may change to inout if a mesh copy is required) + TYPE(ExtPtfm_InputType), INTENT(INOUT) :: u !< Inputs at operating point (may change to inout if a mesh copy is required) TYPE(ExtPtfm_ParameterType), INTENT(IN ) :: p !< Parameters TYPE(ExtPtfm_ContinuousStateType), INTENT(IN ) :: x !< Continuous states at operating point TYPE(ExtPtfm_DiscreteStateType), INTENT(IN ) :: xd !< Discrete states at operating point TYPE(ExtPtfm_ConstraintStateType), INTENT(IN ) :: z !< Constraint states at operating point TYPE(ExtPtfm_OtherStateType), INTENT(IN ) :: OtherState !< Other states at operating point - TYPE(ExtPtfm_OutputType), INTENT(IN ) :: y !< Output (change to inout if a mesh copy is required); + TYPE(ExtPtfm_OutputType), INTENT(INOUT) :: y !< Output (change to inout if a mesh copy is required); !! Output fields are not used by this routine, but type is !! available here so that mesh parameter information (i.e., !! connectivity) does not have to be recalculated for dYdu. @@ -943,62 +1286,88 @@ SUBROUTINE ExtPtfm_JacobianPInput(Vars, t, u, p, x, xd, z, OtherState, y, m, Err !! respect to the inputs (u) [intent in to avoid deallocation] REAL(R8Ki), ALLOCATABLE, OPTIONAL, INTENT(INOUT) :: dZdu(:,:) !< Partial derivatives of constraint state functions (Z) with !! respect to the inputs (u) [intent in to avoid deallocation] - INTEGER(IntKi) :: i, j ! Loop index - logical :: CalcOutputs + character(*), parameter :: RoutineName = 'ExtPtfm_JacobianPInput' + integer(intKi) :: ErrStat2 + character(ErrMsgLen) :: ErrMsg2 + INTEGER(IntKi) :: i, j, col ! Loop index + ! logical :: CalcOutputs ErrStat = ErrID_None ErrMsg = '' - ! allocate and set dYdu + ! Calculate OP values here + call ExtPtfm_CalcOutput(t, u, p, x, xd, z, OtherState, y, m, ErrStat2, ErrMsg2 ); if(Failed()) return + + ! Make a copy of the inputs to perturb + call ExtPtfm_CopyInput(u, m%u_perturb, MESH_UPDATECOPY, ErrStat2, ErrMsg2); if(Failed()) return + call ExtPtfm_VarsPackInput(Vars, u, m%Jac%u) + + ! Calculate the partial derivative of the output functions (Y) with respect to the inputs (u) here: if (present(dYdu)) then if (.not. allocated(dYdu)) then - call AllocAry(dYdu, N_OUTPUTS+p%NumOuts, N_INPUTS, 'dYdu', ErrStat, ErrMsg) - if(Failed()) return - dYdu = 0.0_ReKi + call AllocAry(dYdu, m%Jac%Ny, m%Jac%Nu, 'dYdu', ErrStat2, ErrMsg2); if(Failed()) return end if - - dYdu(1:6, 1:N_INPUTS) = p%DMat(1:6, 1:N_INPUTS) - ! Check if outputs need to be processed - CalcOutputs = .false. - do i = 1, size(Vars%y) - if (MV_HasFlagsAll(Vars%y(i), VF_WriteOut)) CalcOutputs = .true. - end do - - ! dYdu is zero except if WriteOutput is the interface loads - if (CalcOutputs) then - do i = 1, p%NumOuts - select case (p%OutParam(i)%Indx) - case (ID_PtfFx) - dYdu(6+i,1:N_INPUTS) = p%DMat(1,1:N_INPUTS) - case (ID_PtfFy) - dYdu(6+i,1:N_INPUTS) = p%DMat(2,1:N_INPUTS) - case (ID_PtfFz) - dYdu(6+i,1:N_INPUTS) = p%DMat(3,1:N_INPUTS) - case (ID_PtfMx) - dYdu(6+i,1:N_INPUTS) = p%DMat(4,1:N_INPUTS) - case (ID_PtfMy) - dYdu(6+i,1:N_INPUTS) = p%DMat(5,1:N_INPUTS) - case (ID_PtfMz) - dYdu(6+i,1:N_INPUTS) = p%DMat(6,1:N_INPUTS) - case default - dYdu(6+i,1:N_INPUTS) = 0.0_ReKi - end select + ! Loop through input variables + do i = 1, size(Vars%u) + + ! Loop through number of linearization perturbations in variable + do j = 1,Vars%u(i)%Num + + ! Calculate positive perturbation + call MV_Perturb(Vars%u(i), j, 1, m%Jac%u, m%Jac%u_perturb) + call ExtPtfm_VarsUnpackInput(Vars, m%Jac%u_perturb, m%u_perturb) + call ExtPtfm_CalcOutput(t, m%u_perturb, p, x, xd, z, OtherState, m%y_lin, m, ErrStat2, ErrMsg2); if (Failed()) return + call ExtPtfm_VarsPackOutput(Vars, m%y_lin, m%Jac%y_pos) + + ! Calculate negative perturbation + call MV_Perturb(Vars%u(i), j, -1, m%Jac%u, m%Jac%u_perturb) + call ExtPtfm_VarsUnpackInput(Vars, m%Jac%u_perturb, m%u_perturb) + call ExtPtfm_CalcOutput(t, m%u_perturb, p, x, xd, z, OtherState, m%y_lin, m, ErrStat2, ErrMsg2); if (Failed()) return + call ExtPtfm_VarsPackOutput(Vars, m%y_lin, m%Jac%y_neg) + + ! Calculate column index + col = Vars%u(i)%iLoc(1) + j - 1 + + ! Get partial derivative via central difference + call MV_ComputeCentralDiff(Vars%y, Vars%u(i)%Perturb, m%Jac%y_pos, m%Jac%y_neg, dYdu(:,col)) end do - end if + end do end if - ! allocate and set dXdu - if (present(dXdu)) then + ! Calculate the partial derivative of the continuous state functions (X) with respect to the inputs (u) here: + if (present(dXdu) .and. (m%Jac%Nx > 0)) then if (.not. allocated(dXdu)) then - call AllocAry(dXdu, 2*p%nCB, N_INPUTS, 'dXdu', ErrStat, ErrMsg) - if(Failed()) return - dXdu = 0.0_ReKi - end if + call AllocAry(dXdu, m%Jac%Nx, m%Jac%Nu, 'dXdu', ErrStat2, ErrMsg2); if (Failed()) return + endif + + ! Loop through input variables + do i = 1,size(Vars%u) + + ! Loop through number of linearization perturbations in variable + do j = 1,Vars%u(i)%Num + + ! Calculate positive perturbation and resulting continuous state derivatives + call MV_Perturb(Vars%u(i), j, 1, m%Jac%u, m%Jac%u_perturb) + call ExtPtfm_VarsUnpackInput(Vars, m%Jac%u_perturb, m%u_perturb) + call ExtPtfm_CalcContStateDeriv(t, m%u_perturb, p, x, xd, z, OtherState, m, m%dxdt_lin, ErrStat2, ErrMsg2); if (Failed()) return + call ExtPtfm_VarsPackContState(Vars, m%dxdt_lin, m%Jac%x_pos) + + ! Calculate negative perturbation and resulting continuous state derivatives + call MV_Perturb(Vars%u(i), j, -1, m%Jac%u, m%Jac%u_perturb) + call ExtPtfm_VarsUnpackInput(Vars, m%Jac%u_perturb, m%u_perturb) + call ExtPtfm_CalcContStateDeriv(t, m%u_perturb, p, x, xd, z, OtherState, m, m%dxdt_lin, ErrStat2, ErrMsg2); if (Failed()) return + call ExtPtfm_VarsPackContState(Vars, m%dxdt_lin, m%Jac%x_neg) - dXdu(1:2*p%nCB,1:N_INPUTS) = p%BMat(1:2*p%nCB,1:N_INPUTS) + ! Calculate column index + col = Vars%u(i)%iLoc(1) + j - 1 + + ! Get partial derivative via central difference + dXdu(:,col) = (m%Jac%x_pos - m%Jac%x_neg) / (2.0_R8Ki * Vars%u(i)%Perturb) + end do + end do end if if (present(dXddu)) then @@ -1006,6 +1375,7 @@ SUBROUTINE ExtPtfm_JacobianPInput(Vars, t, u, p, x, xd, z, OtherState, y, m, Err if (present(dZdu)) then end if + CONTAINS logical function Failed() CALL SetErrStatSimple(ErrStat, ErrMsg, 'ExtPtfm_JacobianPInput') @@ -1015,8 +1385,9 @@ END SUBROUTINE ExtPtfm_JacobianPInput !---------------------------------------------------------------------------------------------------------------------------------- !> Routine to compute the Jacobians of the output (Y), continuous- (X), discrete- (Xd), and constraint-state (Z) functions !! with respect to the continuous states (x). The partial derivatives dY/dx, dX/dx, dXd/dx, and DZ/dx are returned. -SUBROUTINE ExtPtfm_JacobianPContState( t, u, p, x, xd, z, OtherState, y, m, ErrStat, ErrMsg, dYdx, dXdx, dXddx, dZdx ) +SUBROUTINE ExtPtfm_JacobianPContState(Vars, t, u, p, x, xd, z, OtherState, y, m, ErrStat, ErrMsg, dYdx, dXdx, dXddx, dZdx ) !.................................................................................................................................. + TYPE(ModVarsType), INTENT(IN ) :: Vars !< Module variables REAL(DbKi), INTENT(IN ) :: t !< Time in seconds at operating point TYPE(ExtPtfm_InputType), INTENT(IN ) :: u !< Inputs at operating point (may change to inout if a mesh copy is required) TYPE(ExtPtfm_ParameterType), INTENT(IN ) :: p !< Parameters @@ -1043,59 +1414,101 @@ SUBROUTINE ExtPtfm_JacobianPContState( t, u, p, x, xd, z, OtherState, y, m, ErrS REAL(R8Ki), ALLOCATABLE, OPTIONAL, INTENT(INOUT) :: dZdx(:,:) !< Partial derivatives of constraint state !! functions (Z) with respect to !! the continuous states (x) [intent in to avoid deallocation] - INTEGER(IntKi) :: i,j ! Loop index - INTEGER(IntKi) :: idx ! Index of output channel in AllOuts - INTEGER(IntKi) :: iDOF ! Mode number + + character(*), parameter :: RoutineName = 'ExtPtfm_JacobianPContState' + integer(IntKi) :: ErrStat2 + character(ErrMsgLen) :: ErrMsg2 + INTEGER(IntKi) :: i,j,col ! Loop index + ! INTEGER(IntKi) :: idx ! Index of output channel in AllOuts + ! INTEGER(IntKi) :: iDOF ! Mode number + ! Initialize ErrStat ErrStat = ErrID_None ErrMsg = '' + + ! If no state variables, return + if (m%Jac%Nx == 0) return + + ! make a copy of the continuous states to perturb NOTE: MESH_NEWCOPY + call ExtPtfm_CopyContState(x, m%x_perturb, MESH_UPDATECOPY, ErrStat2, ErrMsg2); if(Failed()) return + call ExtPtfm_VarsPackContState(Vars, x, m%Jac%x) + + ! Calculate the partial derivative of the output functions (Y) with respect to the continuous states (x) here: if (present(dYdx)) then - ! allocate and set dYdx + + ! Allocate dYdx if not allocated if (.not. allocated(dYdx)) then - call AllocAry(dYdx, N_OUTPUTS+p%NumOuts, 2*p%nCB, 'dYdx', ErrStat, ErrMsg); if(Failed()) return - do i=1,size(dYdx,1); do j=1,size(dYdx,2); dYdx(i,j)=0.0_ReKi; enddo;enddo + call AllocAry(dYdx, m%Jac%Ny, m%Jac%Nx, 'dYdx', ErrStat2, ErrMsg2); if(Failed()) return end if - dYdx(1:6,1:2*p%nCB) = p%CMat(1:6, 1:2*p%nCB) - ! WriteOutputs - do i = 1,p%NumOuts - idx = p%OutParam(i)%Indx - iDOF = mod(idx-ID_QSTART, p%nCB)+1 - ! if output is an interface load dYdx is a row of the Cmatrix - if (idx==ID_PtfFx) then; dYdx(6+i,1:2*p%nCB) = p%CMat(1,1:2*p%nCB) - elseif (idx==ID_PtfFy) then; dYdx(6+i,1:2*p%nCB) = p%CMat(2,1:2*p%nCB) - elseif (idx==ID_PtfFx) then; dYdx(6+i,1:2*p%nCB) = p%CMat(3,1:2*p%nCB) - elseif (idx==ID_PtfMx) then; dYdx(6+i,1:2*p%nCB) = p%CMat(4,1:2*p%nCB) - elseif (idx==ID_PtfMy) then; dYdx(6+i,1:2*p%nCB) = p%CMat(5,1:2*p%nCB) - elseif (idx==ID_PtfMz) then; dYdx(6+i,1:2*p%nCB) = p%CMat(6,1:2*p%nCB) - ! Below we look at the index, we assumed an order for the outputs - ! where after the index ID_Qstart, the AllOutputs are: Q,QDot and Qf - ! An alternative coulbe to look at the name of the DOF instead: - ! e.g. if (index(p%OutParam,'CBQ_')>0) then ... (see SetOutParam) - else if ((idx-ID_QStart>= 0 ) .and. (idx-ID_QStart= p%nCB) .and. (idx-ID_QStart<2*p%nCB) ) then - ! Output is a DOF velocity, dYdx has a 1 at the proper location - dYdx(6+i,1:2*p%nCB ) = 0.0_ReKi - dYdx(6+i,p%nCB + iDOF) = 1.0_ReKi ! TODO TODO TODO ALLDOF_2_DOF - else ! e.g. WaveElevation or CB Forces - dYdx(6+i,1:2*p%nCB ) = 0.0_ReKi - endif + + ! Loop through state variables + do i = 1,size(Vars%x) + + ! Loop through number of linearization perturbations in variable + do j = 1,Vars%x(i)%Num + + ! Calculate positive perturbation + call MV_Perturb(Vars%x(i), j, 1, m%Jac%x, m%Jac%x_perturb) + call ExtPtfm_VarsUnpackContState(Vars, m%Jac%x_perturb, m%x_perturb) + call ExtPtfm_CalcOutput(t, u, p, m%x_perturb, xd, z, OtherState, m%y_lin, m, ErrStat2, ErrMsg2); if (Failed()) return + call ExtPtfm_VarsPackOutput(Vars, m%y_lin, m%Jac%y_pos) + + ! Calculate negative perturbation + call MV_Perturb(Vars%x(i), j, -1, m%Jac%x, m%Jac%x_perturb) + call ExtPtfm_VarsUnpackContState(Vars, m%Jac%x_perturb, m%x_perturb) + call ExtPtfm_CalcOutput(t, u, p, m%x_perturb, xd, z, OtherState, m%y_lin, m, ErrStat2, ErrMsg2); if (Failed()) return + call ExtPtfm_VarsPackOutput(Vars, m%y_lin, m%Jac%y_neg) + + ! Calculate column index + col = Vars%x(i)%iLoc(1) + j - 1 + + ! Get partial derivative via central difference and store in full linearization array + call MV_ComputeCentralDiff(Vars%y, Vars%x(i)%Perturb, m%Jac%y_pos, m%Jac%y_neg, dYdx(:,col)) + end do end do end if + + ! Calculate the partial derivative of the continuous state functions (X) with respect to the continuous states (x) here: if (present(dXdx)) then - ! allocate and set dXdx + + ! Allocate dXdx if not allocated if (.not. allocated(dXdx)) then - call AllocAry(dXdx, 2*p%nCB, 2*p%nCB, 'dXdx', ErrStat, ErrMsg); if(Failed()) return - do i=1,size(dXdx,1); do j=1,size(dXdx,2); dXdx(i,j)=0.0_ReKi; enddo;enddo + call AllocAry(dXdx, m%Jac%Nx, m%Jac%Nx, 'dXdx', ErrStat2, ErrMsg2); if(Failed()) return end if - dXdx(1:2*p%nCB,1:2*p%nCB) = p%AMat(1:2*p%nCB,1:2*p%nCB) + + ! Loop through state variables + do i = 1,size(Vars%x) + + ! Loop through number of linearization perturbations in variable + do j = 1, Vars%x(i)%Num + + ! Calculate positive perturbation + call MV_Perturb(Vars%x(i), j, 1, m%Jac%x, m%Jac%x_perturb) + call ExtPtfm_VarsUnpackContState(Vars, m%Jac%x_perturb, m%x_perturb) + call ExtPtfm_CalcContStateDeriv(t, u, p, m%x_perturb, xd, z, OtherState, m, m%dxdt_lin, ErrStat2, ErrMsg2); if (Failed()) return + call ExtPtfm_VarsPackContState(Vars, m%dxdt_lin, m%Jac%x_pos) + + ! Calculate negative perturbation + call MV_Perturb(Vars%x(i), j, -1, m%Jac%x, m%Jac%x_perturb) + call ExtPtfm_VarsUnpackContState(Vars, m%Jac%x_perturb, m%x_perturb) + call ExtPtfm_CalcContStateDeriv(t, u, p, m%x_perturb, xd, z, OtherState, m, m%dxdt_lin, ErrStat2, ErrMsg2); if (Failed()) return + call ExtPtfm_VarsPackContState(Vars, m%dxdt_lin, m%Jac%x_neg) + + ! Calculate column index + col = Vars%x(i)%iLoc(1) + j - 1 + + ! Get partial derivative via central difference and store in full linearization array + dXdx(:,col) = (m%Jac%x_pos - m%Jac%x_neg) / (2.0_R8Ki * Vars%x(i)%Perturb) + end do + end do end if + if (present(dXddx)) then end if + if (present(dZdx)) then end if + CONTAINS logical function Failed() CALL SetErrStatSimple(ErrStat, ErrMsg, 'ExtPtfm_JacobianPInput') @@ -1186,6 +1599,63 @@ SUBROUTINE ExtPtfm_JacobianPConstrState( t, u, p, x, xd, z, OtherState, y, m, Er if (present(dZdz)) then end if END SUBROUTINE ExtPtfm_JacobianPConstrState + +SUBROUTINE PseudoInverse(A, Ainv, ErrStat, ErrMsg) + use NWTC_LAPACK, only: LAPACK_GESVD, LAPACK_GEMM + real(ReKi), dimension(:,:), intent(in) :: A + real(ReKi), dimension(:,:), allocatable :: Ainv + INTEGER(IntKi), INTENT( OUT) :: ErrStat ! < Error status of the operation + CHARACTER(*), INTENT( OUT) :: ErrMsg ! < Error message if ErrStat / = ErrID_None + ! + real(ReKi), dimension(:), allocatable :: S + real(ReKi), dimension(:,:), allocatable :: U + real(ReKi), dimension(:,:), allocatable :: Vt + real(ReKi), dimension(:), allocatable :: WORK + real(ReKi), dimension(:,:), allocatable :: Acopy + integer :: j ! Loop indices + integer :: M !< The number of rows of the input matrix A + integer :: N !< The number of columns of the input matrix A + integer :: K !< + integer :: L !< + integer :: LWORK !< + M = size(A,1) + N = size(A,2) + K = min(M,N) + L = max(M,N) + LWORK = MAX(1,3*K +L,5*K) + allocate(S(K)); S = 0; + !! LWORK >= MAX(1,3*MIN(M,N) + MAX(M,N),5*MIN(M,N)) for the other paths + allocate(Work(LWORK)); Work=0 + allocate(U (M,K) ); U=0; + allocate(Vt(K,N) ); Vt=0; + allocate(Ainv(N,M)); Ainv=0; + allocate(Acopy(M,N)); Acopy=A; + + ! --- Compute the SVD of A + ! [U,S,V] = svd(A) + !call DGESVD ('S', 'S', M, N, A, M, S, U, M , Vt , K, WORK, LWORK, INFO) + call LAPACK_GESVD('S', 'S', M, N, Acopy, S, U, Vt, WORK, LWORK, ErrStat, ErrMsg) + + !--- Compute PINV = V**T * SIGMA * U**T in two steps + ! SIGMA = S^(-1)=1/S(j), S is diagonal + do j = 1, K + U(:,j) = U(:,j)/S(j) + end do + ! Compute Ainv = 1.0*V^t * U^t + 0.0*Ainv V*(inv(S))*U' + !call DGEMM( 'T', 'T', N, M, K, 1.0, V, K, U, M, 0.0, Ainv, N) + call LAPACK_GEMM( 'T', 'T', 1.0_ReKi, Vt, U, 0.0_ReKi, Ainv, ErrStat, ErrMsg) + ! --- Compute rank + !tol=maxval(shape(A))*epsilon(maxval(S)) + !rank=0 + !do i=1,K + ! if(S(i) .gt. tol)then + ! rank=rank+1 + ! end if + !end do + !print*,'Rank',rank + ! Ainv=transpose(matmul(matmul(U(:,1:r),S_inv(1:r,1:r)),Vt(1:r,:))) + END SUBROUTINE PseudoInverse + !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ END MODULE ExtPtfm_MCKF diff --git a/modules/extptfm/src/ExtPtfm_MCKF_IO.f90 b/modules/extptfm/src/ExtPtfm_MCKF_IO.f90 index 4fefde8a42..f6c3f6bc49 100644 --- a/modules/extptfm/src/ExtPtfm_MCKF_IO.f90 +++ b/modules/extptfm/src/ExtPtfm_MCKF_IO.f90 @@ -27,19 +27,11 @@ MODULE ExtPtfm_MCKF_Parameters TYPE(ProgDesc), PARAMETER :: ExtPtfm_Ver = ProgDesc( 'ExtPtfm_MCKF', '', '' ) !< module date/version information ! - INTEGER(IntKi), parameter :: N_INPUTS = 18 - INTEGER(IntKi), parameter :: N_OUTPUTS = 6 - - CHARACTER(len=4), DIMENSION(3), PARAMETER :: StrIntMethod = (/'RK4 ','AB4 ','ABM4'/) ! Variables for output channels - INTEGER(IntKi), PARAMETER :: FILEFORMAT_GUYANASCII = 0 - INTEGER(IntKi), PARAMETER :: FILEFORMAT_FLEXASCII = 1 - - ! Variables for output channels - INTEGER(IntKi), PARAMETER :: MaxOutChs = 9 + 3*200 ! Maximum number of output channels - ! Harcoded to outputs of 200 CB modes + INTEGER(IntKi), PARAMETER :: MaxOutChs = 1 + 12 + 4*200 ! Maximum number of output channels + ! Harcoded to outputs of 200 CB modes INTEGER(IntKi), PARAMETER :: ID_Time = 0 INTEGER(IntKi), PARAMETER :: ID_PtfFx = 1 INTEGER(IntKi), PARAMETER :: ID_PtfFy = 2 @@ -47,14 +39,13 @@ MODULE ExtPtfm_MCKF_Parameters INTEGER(IntKi), PARAMETER :: ID_PtfMx = 4 INTEGER(IntKi), PARAMETER :: ID_PtfMy = 5 INTEGER(IntKi), PARAMETER :: ID_PtfMz = 6 - INTEGER(IntKi), PARAMETER :: ID_WaveElev = 7 - INTEGER(IntKi), PARAMETER :: ID_InpFx = 8 - INTEGER(IntKi), PARAMETER :: ID_InpFy = 9 - INTEGER(IntKi), PARAMETER :: ID_InpFz = 10 - INTEGER(IntKi), PARAMETER :: ID_InpMx = 11 - INTEGER(IntKi), PARAMETER :: ID_InpMy = 12 - INTEGER(IntKi), PARAMETER :: ID_InpMz = 13 - INTEGER(IntKi), PARAMETER :: ID_QStart = 14 + INTEGER(IntKi), PARAMETER :: ID_InpFx = 7 + INTEGER(IntKi), PARAMETER :: ID_InpFy = 8 + INTEGER(IntKi), PARAMETER :: ID_InpFz = 9 + INTEGER(IntKi), PARAMETER :: ID_InpMx = 10 + INTEGER(IntKi), PARAMETER :: ID_InpMy = 11 + INTEGER(IntKi), PARAMETER :: ID_InpMz = 12 + INTEGER(IntKi), PARAMETER :: ID_QStart = 13 END MODULE ExtPtfm_MCKF_Parameters !********************************************************************************************************************************** @@ -82,7 +73,7 @@ subroutine SetErrStatSimple(ErrStat, ErrMess, RoutineName, LineNumber) CHARACTER(*), INTENT(IN ) :: RoutineName ! Name of the routine error occurred in INTEGER(IntKi), INTENT(IN), OPTIONAL :: LineNumber ! Line of input file if (ErrStat /= ErrID_None) then - print*,'ErrMess',ErrMess + print*,'ErrMess',TRIM(ErrMess) write(ErrMess,'(A)') TRIM(RoutineName)//':'//TRIM(ErrMess) if (present(LineNumber)) then ErrMess = TRIM(ErrMess)//' Line: '//TRIM(Num2LStr(LineNumber))//'.' @@ -208,21 +199,19 @@ SUBROUTINE SetOutParam(OutList, NumOuts_in, p, ErrStat, ErrMsg ) CHARACTER(ChanLen) :: OutListTmp ! A string to temporarily hold OutList(I) CHARACTER(*), PARAMETER :: RoutineName = "SetOutParam" - CHARACTER(OutStrLenM1), PARAMETER :: ValidParamAry(13) = (/ & ! This lists the names of the allowed parameters, which must be sorted alphabetically - "INPF_FX ","INPF_FY ","INPF_FZ ","INPF_MX ","INPF_MY ","INPF_MZ ",& - "INTRFFX ","INTRFFY ","INTRFFZ ","INTRFMX ","INTRFMY ","INTRFMZ ",& - "WAVELEV "/) - CHARACTER(OutStrLenM1), PARAMETER :: ParamUnitsAry(13) = (/ & ! This lists the units corresponding to the allowed parameters + CHARACTER(OutStrLenM1), PARAMETER :: ValidParamAry(12) = (/ & ! This lists the names of the allowed parameters, which must be sorted alphabetically + "EXTRNFX ","EXTRNFY ","EXTRNFZ ","EXTRNMX ","EXTRNMY ","EXTRNMZ ",& + "INTRFFX ","INTRFFY ","INTRFFZ ","INTRFMX ","INTRFMY ","INTRFMZ "/) + CHARACTER(OutStrLenM1), PARAMETER :: ParamUnitsAry(12) = (/ & ! This lists the units corresponding to the allowed parameters "(N) ","(N) ","(N) ","(Nm) ","(Nm) ","(Nm) ",& - "(N) ","(N) ","(N) ","(Nm) ","(Nm) ","(Nm) ","(m) "/) - INTEGER(IntKi), PARAMETER :: ParamIndxAry(13) = (/ & ! This lists the index into AllOuts(:) of the allowed parameters ValidParamAry(:) + "(N) ","(N) ","(N) ","(Nm) ","(Nm) ","(Nm) "/) + INTEGER(IntKi), PARAMETER :: ParamIndxAry(12) = (/ & ! This lists the index into AllOuts(:) of the allowed parameters ValidParamAry(:) ID_InpFx, ID_InpFy, ID_InpFz, ID_InpMx, ID_InpMy, ID_InpMz,& - ID_PtfFx, ID_PtfFy, ID_PtfFz, ID_PtfMx, ID_PtfMy, ID_PtfMz,& - ID_WaveElev /) + ID_PtfFx, ID_PtfFy, ID_PtfFz, ID_PtfMx, ID_PtfMy, ID_PtfMz/) character(ErrMsgLen) :: WarnMsg !Warning Message ErrStat = ErrID_None ErrMsg = "" - WarnMsg = "" + WarnMsg = "" p%NumOuts = NumOuts_in allocate(p%OutParam(0:p%NumOuts) , stat=ErrStat ) @@ -256,18 +245,20 @@ SUBROUTINE SetOutParam(OutList, NumOuts_in, p, ErrStat, ErrMsg ) if (Indx>0) then p%OutParam(I)%Indx = ParamIndxAry(Indx) p%OutParam(I)%Units = ParamUnitsAry(Indx) - else if (index(OutListTmp,'CBQ_') > 0 ) then - call setDOFChannel(5,ID_QStart+0*p%nCBFull-1); if(Failed()) return ! NOTE: using full CB - else if (index(OutListTmp,'CBQD_') > 0 ) then - call setDOFChannel(6,ID_QStart+1*p%nCBFull-1); if(Failed()) return ! NOTE: using full CB - else if (index(OutListTmp,'CBF_') > 0 ) then - call setDOFChannel(5,ID_QStart+2*p%nCBFull-1); if(Failed()) return ! NOTE: using full CB + else if (index(OutListTmp,'CBD') > 0 ) then + call setDOFChannel(4,ID_QStart+0*p%nCBFull-1); if(Failed()) return ! NOTE: using full CB + else if (index(OutListTmp,'CBV') > 0 ) then + call setDOFChannel(4,ID_QStart+1*p%nCBFull-1); if(Failed()) return ! NOTE: using full CB + else if (index(OutListTmp,'CBA') > 0 ) then + call setDOFChannel(4,ID_QStart+2*p%nCBFull-1); if(Failed()) return ! NOTE: using full CB + else if (index(OutListTmp,'CBF') > 0 ) then + call setDOFChannel(4,ID_QStart+3*p%nCBFull-1); if(Failed()) return ! NOTE: using full CB else call setInvalidChannel() ! INVALID endif !write(*,*) p%OutParam(I)%Name, p%OutParam(I)%Indx, p%OutParam(I)%Units end do - if (len(WarnMsg)>0) then + if (len(trim(WarnMsg))>0) then call SetErrStat(ErrID_Warn, WarnMsg,ErrStat,ErrMsg,'ExtPtfm_SetOutParam') write(*,'(A)')trim(WarnMsg) endif @@ -304,31 +295,201 @@ subroutine setInvalidChannel() END SUBROUTINE SetOutParam !---------------------------------------------------------------------------------------------------------------------------------- !> Checks that all inputs were correctly read -subroutine CheckInputs(Inp, p, ErrStat, ErrMsg) +subroutine CheckReducedInputs(Inp, p, ErrStat, ErrMsg) TYPE(ExtPtfm_InputFile), INTENT(INOUT) :: Inp !< Data stored in the module's input file TYPE(ExtPtfm_ParameterType), INTENT(INOUT) :: p !< All the parameter matrices stored in this input file - INTEGER(IntKi), INTENT(OUT) :: ErrStat !< Error status + INTEGER(IntKi), INTENT(OUT) :: ErrStat !< Error status CHARACTER(*), INTENT(OUT) :: ErrMsg !< Error message + INTEGER(IntKi) :: i,j + REAL(ReKi), PARAMETER :: RelTol = 0.001_ReKi + REAL(ReKi), PARAMETER :: AbsTol = 0.0001_ReKi ErrStat = ErrID_None ErrMsg = "" - if (ErrStat/=0) return + if (p%nTot<0) then ; ErrStat=ErrID_Fatal; ErrMsg='The total number of DOF was not set'; return; endif if (.not.allocated(p%Mass)) then ; ErrStat=ErrID_Fatal; ErrMsg='The mass matrix was not allocated.' ; return; endif if (.not.allocated(p%Stff)) then ; ErrStat=ErrID_Fatal; ErrMsg='The stiffness matrix was not allocated.' ; return; endif if (.not.allocated(p%Damp)) then ; ErrStat=ErrID_Fatal; ErrMsg='The damping matrix was not allocated.' ; return; endif - if (.not.allocated(p%Forces)) then ; ErrStat=ErrID_Fatal; ErrMsg='The loads were not allocated.';return; endif - if (.not.allocated(p%times)) then ; ErrStat=ErrID_Fatal; ErrMsg='The time vector was not allocated.'; return; endif + if (.not.allocated(p%W0)) then ; ErrStat=ErrID_Fatal; ErrMsg='Constant self-weight was not allocated.';return; endif + if (.not.allocated(p%WStff)) then ; ErrStat=ErrID_Fatal; ErrMsg='Self-weight stiffness matrix was not allocated.';return; endif + !if (.not.allocated(p%Forces)) then ; ErrStat=ErrID_Fatal; ErrMsg='The loads were not allocated.';return; endif + !if (.not.allocated(p%times)) then ; ErrStat=ErrID_Fatal; ErrMsg='The time vector was not allocated.'; return; endif if (allocated(Inp%ActiveCBDOF)) then if (maxval(Inp%ActiveCBDOF)>size(p%Mass,1)-6) then ErrStat=ErrID_Fatal; ErrMsg='The maximum index of `ActiveCBDOF` (active CB DOF) should be less than the total number of CB DOF.'; return; endif endif -end subroutine CheckInputs + + ! Check mass matrix + do i = 1,p%nTot + do j = i+1,p%nTot + if ( ABS( p%Mass(i,j) - p%Mass(j,i) ) > MAX(RelTol*ABS(p%Mass(i,j)),AbsTol) ) then + ErrStat=ErrID_Warn; ErrMsg='Mass matrix is not symmetric'; IF (ErrStat >= AbortErrLev) RETURN + end if + end do + end do + if (Inp%HasRBMode) then + ! Check stiffness matrix + do i = 1,p%nTot + do j = 1,6 + if ( ABS( p%Stff(i,j) ) > AbsTol ) then + ErrStat=ErrID_Warn; ErrMsg='When rigid-body modes are enabled, the stiffness matrix should have only zeros in the first 6 rows and columns.'; IF (ErrStat >= AbortErrLev) RETURN + end if + end do + end do + do i = 1,6 + do j = 7,p%nTot + if ( ABS( p%Stff(i,j) ) > AbsTol ) then + ErrStat=ErrID_Warn; ErrMsg='When rigid-body modes are enabled, the stiffness matrix should have only zeros in the first 6 rows and columns.'; IF (ErrStat >= AbortErrLev) RETURN + end if + end do + end do + ! Check mass matrix + p%RBMass = p%Mass(1,1) + p%RBCoG(1) = p%Mass(2,6)/p%RBMass + p%RBCoG(2) = -p%Mass(1,6)/p%RBMass + p%RBCoG(3) = p%Mass(1,5)/p%RBMass + p%RBInertia = p%Mass(4:6,4:6) + do i = 1,3 + do j = i,3 + if ( i == j ) then + if ( ABS( p%Mass(i,j) - p%RBMass ) > MAX( RelTol*ABS(p%RBMass), AbsTol) ) then + ErrStat=ErrID_Warn; ErrMsg='Mass matrix associated with the first 6 modes inconsistent with rigid-body modes.'; IF (ErrStat >= AbortErrLev) RETURN + end if + else + if ( ABS( p%Mass(i,j) ) > AbsTol ) then + ErrStat=ErrID_Warn; ErrMsg='Mass matrix associated with the first 6 modes inconsistent with rigid-body modes.'; IF (ErrStat >= AbortErrLev) RETURN + end if + end if + end do + if ( ABS( p%Mass(i,i+3) ) > AbsTol ) then + ErrStat=ErrID_Warn; ErrMsg='Mass matrix associated with the first 6 modes inconsistent with rigid-body modes.'; IF (ErrStat >= AbortErrLev) RETURN + end if + end do + if ( ABS( p%Mass(1,5) + p%Mass(2,4) ) > MAX( RelTol*ABS(p%Mass(1,5)), AbsTol ) ) then + ErrStat=ErrID_Warn; ErrMsg='Mass matrix associated with the first 6 modes inconsistent with rigid-body modes.'; IF (ErrStat >= AbortErrLev) RETURN + end if + if ( ABS( p%Mass(1,6) + p%Mass(3,4) ) > MAX( RelTol*ABS(p%Mass(1,6)), AbsTol ) ) then + ErrStat=ErrID_Warn; ErrMsg='Mass matrix associated with the first 6 modes inconsistent with rigid-body modes.'; IF (ErrStat >= AbortErrLev) RETURN + end if + if ( ABS( p%Mass(2,6) + p%Mass(3,5) ) > MAX( RelTol*ABS(p%Mass(2,6)), AbsTol ) ) then + ErrStat=ErrID_Warn; ErrMsg='Mass matrix associated with the first 6 modes inconsistent with rigid-body modes.'; IF (ErrStat >= AbortErrLev) RETURN + end if + ! Check W0 + if ( ABS(p%W0(1)) > AbsTol & + .or. ABS(p%W0(2)) > AbsTol & + .or. ABS(p%W0(6)) > AbsTol ) then + ErrStat=ErrID_Warn; ErrMsg='With RBMod>0, constant self-weight can only have non-zero entires in the (3) heave, (4) roll, and (5) pitch directions.'; IF (ErrStat >= AbortErrLev) RETURN + end if + if ( ABS( p%W0(4) - p%W0(3)*p%RBCoG(2) ) > MAX(RelTol*ABS(p%W0(4)), AbsTol) .or. & + ABS( p%W0(5) + p%W0(3)*p%RBCoG(1) ) > MAX(RelTol*ABS(p%W0(4)), AbsTol) ) then + ErrStat=ErrID_Warn; ErrMsg='With RBMod>0, rigid-body center of mass inconsistent between constant self-weight and mass matrix.'; IF (ErrStat >= AbortErrLev) RETURN + end if + ! Check WStff + do i = 1,p%nTot + if ( ABS(p%WStff(i,1)) > AbsTol & + .or. ABS(p%WStff(i,2)) > AbsTol & + .or. ABS(p%WStff(i,3)) > AbsTol & + .or. ABS(p%WStff(i,6)) > AbsTol ) then + ErrStat=ErrID_Warn; ErrMsg='With RBMod>0, self-weight stiffness matrix must contain only zeros in the first (surge), second (sway), third (heave), and sixth (yaw) columns.'; IF (ErrStat >= AbortErrLev) RETURN + end if + end do + do i = 1,6 + do j = 4,5 + if (i==1 .and. j==5) then + if ( ABS( p%WStff(i,j) - p%W0(3)) > MAX( RelTol * ABS(p%W0(3)), AbsTol) ) then + ErrStat=ErrID_Warn; ErrMsg='With RBMod>0, self-weight stiffness matrix entry (1,5) must be equal to W0(3).'; IF (ErrStat >= AbortErrLev) RETURN + end if + else if (i==2 .and. j==4) then + if ( ABS( p%WStff(i,j) + p%W0(3)) > MAX( RelTol * ABS(p%W0(3)), AbsTol) ) then + ErrStat=ErrID_Warn; ErrMsg='With RBMod>0, self-weight stiffness matrix entry (2,4) must be equal to -W0(3).'; IF (ErrStat >= AbortErrLev) RETURN + end if + else if (i==4 .and. j==4) then + if ( ABS( p%WStff(i,j) - p%W0(3)*p%RBCoG(3) ) > MAX( RelTol * ABS(p%W0(3)*p%RBCoG(3)), AbsTol) ) then + ErrStat=ErrID_Warn; ErrMsg='With RBMod>0, self-weight stiffness matrix entry (4,4) must be equal to W0(3)*zCG.'; IF (ErrStat >= AbortErrLev) RETURN + end if + else if (i==5 .and. j==5) then + if ( ABS( p%WStff(i,j) - p%W0(3)*p%RBCoG(3) ) > MAX( RelTol * ABS(p%W0(3)*p%RBCoG(3)), AbsTol) ) then + ErrStat=ErrID_Warn; ErrMsg='With RBMod>0, self-weight stiffness matrix entry (5,5) must be equal to W0(3)*zCG.'; IF (ErrStat >= AbortErrLev) RETURN + end if + else if (i==6 .and. j==4) then + if ( ABS( p%WStff(i,j) + p%W0(3)*p%RBCoG(1) ) > MAX( RelTol * ABS(p%W0(3)*p%RBCoG(1)), AbsTol) ) then + ErrStat=ErrID_Warn; ErrMsg='With RBMod>0, self-weight stiffness matrix entry (6,4) must be equal to -W0(3)*xCG.'; IF (ErrStat >= AbortErrLev) RETURN + end if + else if (i==6 .and. j==5) then + if ( ABS( p%WStff(i,j) + p%W0(3)*p%RBCoG(2) ) > MAX( RelTol * ABS(p%W0(3)*p%RBCoG(2)), AbsTol) ) then + ErrStat=ErrID_Warn; ErrMsg='With RBMod>0, self-weight stiffness matrix entry (6,5) must be equal to -W0(3)*yCG.'; IF (ErrStat >= AbortErrLev) RETURN + end if + else + if ( ABS( p%WStff(i,j) ) > AbsTol ) then + ErrStat=ErrID_Warn; ErrMsg='With RBMod>0, self-weight stiffness matrix entry ('//TRIM(num2lstr(i))//','//TRIM(num2lstr(j))//') should be zero.'; IF (ErrStat >= AbortErrLev) RETURN + end if + end if + end do + end do + end if +end subroutine CheckReducedInputs +subroutine CheckConnInputs(Inp, InitInp, p, ErrStat, ErrMsg) + TYPE(ExtPtfm_InputFile), INTENT(INOUT) :: Inp !< Data stored in the module's input file + TYPE(ExtPtfm_InitInputType), INTENT(IN ) :: InitInp !< Input data for initialization routine + TYPE(ExtPtfm_ParameterType), INTENT(INOUT) :: p !< All the parameter matrices stored in this input file + INTEGER(IntKi), INTENT(OUT) :: ErrStat !< Error status + CHARACTER(*), INTENT(OUT) :: ErrMsg !< Error message + INTEGER(IntKi) :: i,j,iConn + real(ReKi), dimension(3) :: RelPosConn0 + REAL(ReKi), PARAMETER :: RelTol = 0.001_ReKi + REAL(ReKi), PARAMETER :: AbsTol = 0.0001_ReKi + ErrStat = ErrID_None + ErrMsg = "" + + if ( Inp%HasRBMode ) then + ! If rigid-body modes are present, the first six columns of PhiConn must be consistent with rigid-body kinematics + do iConn=1,p%nConn + RelPosConn0 = p%PosConn(iConn,:) - [InitInp%PtfmRefxt,InitInp%PtfmRefyt,InitInp%PtfmRefzt] + do i = 1,3 + do j = 1,3 + if ( i == j ) then + if ( ABS( p%PhiConn(3*(iConn-1)+i,j) - 1.0_ReKi ) > AbsTol ) then + ErrStat=ErrID_Warn; ErrMsg='With rigid-body modes, entry ('//TRIM(num2lstr(3*(iConn-1)+i))//','//TRIM(num2lstr(j))//') of the connection displacement matrix should be 1.'; IF (ErrStat >= AbortErrLev) RETURN + end if + else + if ( ABS( p%PhiConn(3*(iConn-1)+i,j) ) > AbsTol ) then + ErrStat=ErrID_Warn; ErrMsg='With rigid-body modes, entry ('//TRIM(num2lstr(3*(iConn-1)+i))//','//TRIM(num2lstr(j))//') of the connection displacement matrix should be 0.'; IF (ErrStat >= AbortErrLev) RETURN + end if + end if + end do + if ( ABS( p%PhiConn(3*(iConn-1)+i,i+3) ) > AbsTol ) then + ErrStat=ErrID_Warn; ErrMsg='With rigid-body modes, entry ('//TRIM(num2lstr(3*(iConn-1)+i))//','//TRIM(num2lstr(i+3))//') of the connection displacement matrix should be 0.'; IF (ErrStat >= AbortErrLev) RETURN + end if + end do + if ( ABS( p%PhiConn(3*(iConn-1)+1,5) - RelPosConn0(3) ) > MAX( RelTol*ABS(RelPosConn0(3)) , AbsTol) ) then + ErrStat=ErrID_Warn; ErrMsg='With rigid-body modes, entry ('//TRIM(num2lstr(3*(iConn-1)+1))//','//TRIM(num2lstr(5))//') of the connection displacement matrix should be '//TRIM(num2lstr( RelPosConn0(3)))//'.'; IF (ErrStat >= AbortErrLev) RETURN + end if + if ( ABS( p%PhiConn(3*(iConn-1)+1,6) + RelPosConn0(2) ) > MAX( RelTol*ABS(RelPosConn0(2)) , AbsTol) ) then + ErrStat=ErrID_Warn; ErrMsg='With rigid-body modes, entry ('//TRIM(num2lstr(3*(iConn-1)+1))//','//TRIM(num2lstr(6))//') of the connection displacement matrix should be '//TRIM(num2lstr(-RelPosConn0(2)))//'.'; IF (ErrStat >= AbortErrLev) RETURN + end if + if ( ABS( p%PhiConn(3*(iConn-1)+2,4) + RelPosConn0(3) ) > MAX( RelTol*ABS(RelPosConn0(3)) , AbsTol) ) then + ErrStat=ErrID_Warn; ErrMsg='With rigid-body modes, entry ('//TRIM(num2lstr(3*(iConn-1)+2))//','//TRIM(num2lstr(4))//') of the connection displacement matrix should be '//TRIM(num2lstr(-RelPosConn0(3)))//'.'; IF (ErrStat >= AbortErrLev) RETURN + end if + if ( ABS( p%PhiConn(3*(iConn-1)+2,6) - RelPosConn0(1) ) > MAX( RelTol*ABS(RelPosConn0(1)) , AbsTol) ) then + ErrStat=ErrID_Warn; ErrMsg='With rigid-body modes, entry ('//TRIM(num2lstr(3*(iConn-1)+2))//','//TRIM(num2lstr(6))//') of the connection displacement matrix should be '//TRIM(num2lstr( RelPosConn0(1)))//'.'; IF (ErrStat >= AbortErrLev) RETURN + end if + if ( ABS( p%PhiConn(3*(iConn-1)+3,4) - RelPosConn0(2) ) > MAX( RelTol*ABS(RelPosConn0(2)) , AbsTol) ) then + ErrStat=ErrID_Warn; ErrMsg='With rigid-body modes, entry ('//TRIM(num2lstr(3*(iConn-1)+3))//','//TRIM(num2lstr(4))//') of the connection displacement matrix should be '//TRIM(num2lstr( RelPosConn0(2)))//'.'; IF (ErrStat >= AbortErrLev) RETURN + end if + if ( ABS( p%PhiConn(3*(iConn-1)+3,5) + RelPosConn0(1) ) > MAX( RelTol*ABS(RelPosConn0(1)) , AbsTol) ) then + ErrStat=ErrID_Warn; ErrMsg='With rigid-body modes, entry ('//TRIM(num2lstr(3*(iConn-1)+3))//','//TRIM(num2lstr(5))//') of the connection displacement matrix should be '//TRIM(num2lstr(-RelPosConn0(1)))//'.'; IF (ErrStat >= AbortErrLev) RETURN + end if + end do + end if + +end subroutine CheckConnInputs !---------------------------------------------------------------------------------------------------------------------------------- -SUBROUTINE ReadPrimaryFile(InputFile, p, OutFileRoot, InputFileData, ErrStat, ErrMsg) +SUBROUTINE ReadPrimaryFile(InputFile, InitInp, p, OutFileRoot, InputFileData, ErrStat, ErrMsg) !.................................................................................................................................. ! Passed variables CHARACTER(*), INTENT(IN) :: InputFile !< Name of the file containing the primary input data + TYPE(ExtPtfm_InitInputType), INTENT(IN) :: InitInp !< Initialization input TYPE(ExtPtfm_ParameterType), INTENT(INOUT) :: p !< All the parameter matrices stored in this input file CHARACTER(*), INTENT(IN) :: OutFileRoot !< The rootname of all the output files written by this routine. TYPE(ExtPtfm_InputFile), INTENT(OUT) :: InputFileData ! Data stored in the module's input file @@ -401,13 +562,14 @@ SUBROUTINE ReadPrimaryFile(InputFile, p, OutFileRoot, InputFileData, ErrStat, Er !---------------------- REDUCTION INPUTS --------------------------------------------------- CALL ReadCom(UnIn, InputFile, 'Section Header: ReductionInputs', ErrStat, ErrMsg, UnEc); if(LineFailed()) return - ! File Format switch - CALL ReadVar(UnIn, InputFile, InputFileData%FileFormat, "FileFormat", "File format switch", ErrStat, ErrMsg, UnEc); if(LineFailed()) return + ! Rigid-body mode flag + CALL ReadVar(UnIn, InputFile, InputFileData%RBMod, "RBMod", "Method for handling rigid-body motion", ErrStat, ErrMsg, UnEc); if(LineFailed()) return + InputFileData%hasRBMode = InputFileData%RBMod > 0_IntKi ! Reduction Filename CALL ReadVar(UnIn, InputFile, InputFileData%RedFile , 'Red_FileName', 'Path containing Guyan/Craig-Bampton inputs', ErrStat, ErrMsg, UnEc); if(LineFailed()) return IF ( PathIsRelative(InputFileData%RedFile) ) InputFileData%RedFile = TRIM(PriPath)//TRIM(InputFileData%RedFile) - CALL ReadVar(UnIn, InputFile, InputFileData%RedFileCst, 'RedCst_FileName', 'Path containing Guyan/Craig-Bampton constant inputs', ErrStat, ErrMsg, UnEc); if(LineFailed()) return - IF ( PathIsRelative(InputFileData%RedFileCst) ) InputFileData%RedFileCst = TRIM(PriPath)//TRIM(InputFileData%RedFileCst) + !CALL ReadVar(UnIn, InputFile, InputFileData%RedFileCst, 'RedCst_FileName', 'Path containing Guyan/Craig-Bampton constant inputs', ErrStat, ErrMsg, UnEc); if(LineFailed()) return + !IF ( PathIsRelative(InputFileData%RedFileCst) ) InputFileData%RedFileCst = TRIM(PriPath)//TRIM(InputFileData%RedFileCst) CALL ReadVar(UnIn, InputFile, N , 'NActiveCBDOF','Number of active CB mode listed in ActiveCBDOF, -1 for all modes', ErrStat, ErrMsg, UnEc ); if(LineFailed()) return if (N<0) then CALL ReadCom(UnIn, InputFile, 'ActiveCBDOF', ErrStat, ErrMsg, UnEc); if(LineFailed()) return @@ -434,6 +596,19 @@ SUBROUTINE ReadPrimaryFile(InputFile, p, OutFileRoot, InputFileData, ErrStat, Er CALL AllocAry(InputFileData%InitVelList, N, 'InitVelList', ErrStat, ErrMsg ); if (Failed()) return CALL ReadAry(UnIn, InputFile, InputFileData%InitVelList, N, 'InitVelList', 'Initial velocities', ErrStat, ErrMsg, UnEc); if(LineFailed()) return endif + !---------------------- CONNECTION INPUTS --------------------------------------- + CALL ReadCom(UnIn, InputFile, 'Section Header: Connections', ErrStat, ErrMsg, UnEc); if(LineFailed()) return + CALL ReadVar(UnIn, InputFile, InputFileData%HasConnections, 'Connections','Flag for connections', ErrStat, ErrMsg, UnEc ); if(LineFailed()) return + CALL ReadVar(UnIn, InputFile, InputFileData%ConnFile, 'Conn_FileName', 'Path containing connections inputs', ErrStat, ErrMsg, UnEc); if(LineFailed()) return + IF ( PathIsRelative(InputFileData%ConnFile) ) InputFileData%ConnFile = TRIM(PriPath)//TRIM(InputFileData%ConnFile) + !---------------------- USER FORCING INPUTS --------------------------------------- + CALL ReadCom(UnIn, InputFile, 'Section Header: User Forcing', ErrStat, ErrMsg, UnEc); if(LineFailed()) return + CALL ReadVar(UnIn, InputFile, InputFileData%HasUserForcing, 'UserForcing','Flag for user prescribed modal forcing', ErrStat, ErrMsg, UnEc ); if(LineFailed()) return + CALL ReadVar(UnIn, InputFile, InputFileData%ForceFile, 'Force_FileName', 'Path containing user modal forcing inputs', ErrStat, ErrMsg, UnEc); if(LineFailed()) return + IF ( PathIsRelative(InputFileData%ForceFile) ) InputFileData%ForceFile = TRIM(PriPath)//TRIM(InputFileData%ForceFile) + CALL ReadVar(UnIn, InputFile, InputFileData%HasConnForcing, 'ConnForcing','Flag for user prescribed connection forcing', ErrStat, ErrMsg, UnEc ); if(LineFailed()) return + CALL ReadVar(UnIn, InputFile, InputFileData%FConnFile, 'FConn_FileName', 'Path containing user connection forcing inputs', ErrStat, ErrMsg, UnEc); if(LineFailed()) return + IF ( PathIsRelative(InputFileData%FConnFile) ) InputFileData%FConnFile = TRIM(PriPath)//TRIM(InputFileData%FConnFile) !---------------------- OUTPUT -------------------------------------------------- CALL ReadCom(UnIn, InputFile, 'Section Header: Output', ErrStat, ErrMsg, UnEc); if(LineFailed()) return ! SumPrint - Print summary data to .sum (flag): @@ -454,10 +629,39 @@ SUBROUTINE ReadPrimaryFile(InputFile, p, OutFileRoot, InputFileData, ErrStat, Er call cleanup() ! --- Reading Reduced file - call ReadReducedFile(InputFileData%RedFile, p, InputFileData%FileFormat, ErrStat, ErrMsg); if(Failed()) return; + call ReadReducedFile(InputFileData%RedFile, p, ErrStat, ErrMsg); if(Failed()) return ! Checking that everyting was correctly read and set - call CheckInputs(InputFileData, p, ErrStat, ErrMsg); if(Failed()) return + call CheckReducedInputs(InputFileData, p, ErrStat, ErrMsg); if(Failed()) return + + ! --- Reading connection file + if (InputFileData%hasConnections) then + call ReadConnFile(InputFileData%ConnFile, p, ErrStat, ErrMsg); if(Failed()) return + call CheckConnInputs(InputFileData, InitInp, p, ErrStat, ErrMsg); if(Failed()) return + else + p%NConn = 0_IntKi + end if + + ! --- Reading user modal forcing file + if (InputFileData%HasUserForcing) then + call ReadForceFile(InputFileData%ForceFile, p%nTot, p%UsrModeF, ErrStat, ErrMsg); if(Failed()) return + else + p%UsrModeF%nTimeSteps = 1_IntKi + call allocAry( p%UsrModeF%Forces, 1_IntKi, p%nTot, 'p%UsrModeF%Forces', ErrStat, ErrMsg); if(Failed()) return + call allocAry( p%UsrModeF%times , 1_IntKi, 'p%UsrModeF%times' , ErrStat, ErrMsg); if(Failed()) return + p%UsrModeF%Forces= 0.0_ReKi + p%UsrModeF%times = 0.0_ReKi + end if + ! --- Reading user connection forcing file + if (InputFileData%HasConnForcing) then + call ReadForceFile(InputFileData%FConnFile, p%nConn*3, p%UsrConnF, ErrStat, ErrMsg); if(Failed()) return + else + p%UsrConnF%nTimeSteps = 1_IntKi + call allocAry( p%UsrConnF%Forces, 1_IntKi, p%nConn*3, 'p%UsrConnF%Forces', ErrStat, ErrMsg); if(Failed()) return + call allocAry( p%UsrConnF%times , 1_IntKi, 'p%UsrConnF%times' , ErrStat, ErrMsg); if(Failed()) return + p%UsrConnF%Forces= 0.0_ReKi + p%UsrConnF%times = 0.0_ReKi + end if ! --- Reducing the number of DOF if needed p%nCBFull=p%nCB @@ -515,7 +719,10 @@ SUBROUTINE ReduceNumberOfDOF(p, ErrStat, ErrMsg) call SquareMatRed(p%Mass) call SquareMatRed(p%Stff) call SquareMatRed(p%Damp) - call TimeMatRed(p%Forces) + call TimeMatRed(p%UsrModeF%Forces) + if (allocated(p%PhiConn)) then + call RectMatRed(p%PhiConn) + end if ! Trigger p%nCB = size(p%ActiveCBDOF) @@ -540,6 +747,22 @@ subroutine SquareMatRed(M) deallocate(tmp) end subroutine !> Takes M and returns M(:,I) where I is a list of indexes to keep + subroutine RectMatRed(M) + real(Reki), dimension(:,:), allocatable :: M + real(Reki), dimension(:,:), allocatable :: tmp + integer(IntKi) :: J + ! Storing M to a tmp array + call allocAry( tmp, size(M,1), size(M,2), 'Mtmp', ErrStat, ErrMsg); if(Failed()) return + tmp=M + ! Reallocating M and storing only the desired DOF + deallocate(M) + call allocAry(M, size(tmp,1), nActive, 'M', ErrStat, ErrMsg); if(Failed()) return + do J=1,nActive + M(:,J) = tmp(:, FullActiveCBDOF(J)) + enddo + deallocate(tmp) + end subroutine + !> Takes M and returns M(:,I) where I is a list of indexes to keep subroutine TimeMatRed(M) real(Reki), dimension(:,:), allocatable :: M real(Reki), dimension(:,:), allocatable :: tmp @@ -565,13 +788,12 @@ END SUBROUTINE ReduceNumberOfDOF !.................................................................................................................................. -SUBROUTINE ReadReducedFile( InputFile, p, FileFormat, ErrStat, ErrMsg ) +SUBROUTINE ReadReducedFile( InputFile, p, ErrStat, ErrMsg ) !.................................................................................................................................. ! Passed variables CHARACTER(*), INTENT(IN) :: InputFile !< Name of the file containing the primary input data TYPE(ExtPtfm_ParameterType), INTENT(INOUT) :: p !< All the parameter matrices stored in this input file - INTEGER(IntKi), INTENT(IN) :: FileFormat !< File format for reduction inputs - INTEGER(IntKi), INTENT(OUT) :: ErrStat !< Error status + INTEGER(IntKi), INTENT(OUT) :: ErrStat !< Error status CHARACTER(*), INTENT(OUT) :: ErrMsg !< Error message ! Local variables: REAL(ReKi), dimension(:),allocatable :: TmpAry ! temporary array for reading row from file @@ -581,230 +803,247 @@ SUBROUTINE ReadReducedFile( InputFile, p, FileFormat, ErrStat, ErrMsg ) CHARACTER(4096) :: Line ! Temporary storage of a line from the input file (to compare with "default") ErrStat = ErrID_None ErrMsg = "" - if (FileFormat==FILEFORMAT_GUYANASCII) then - call ReadGuyanASCII() - elseif (FileFormat==FILEFORMAT_FLEXASCII) then - call ReadFlexASCII() - else - call SetErrStat(ErrID_Fatal, 'FileFormat not implemented: '//trim(Num2LStr(FileFormat)), ErrStat, ErrMsg, 'ExtPtfm_ReadReducedFile') - return - endif - ! --- The code below can detect between FlexASCII and GuyanASCII format by looking at the two first lines - ! Get an available unit number for the file. - !CALL GetNewUnit( UnIn, ErrStat, ErrMsg ); if(Failed()) return - !! Open the Primary input file. - !CALL OpenFInpFile ( UnIn, InputFile, ErrStat, ErrMsg ); if(Failed()) return - !iLine=1 - !!-------------------------- Read the first two lines - !CALL ReadStr( UnIn, InputFile, Line, 'Line'//Num2LStr(iLine), 'External Platform MCKF file', ErrStat, ErrMsg) - !if(Failed()) return - !iLine=iLine+1 - !CALL ReadStr( UnIn, InputFile, Line2, 'Line'//Num2LStr(iLine), 'External Platform MCKF file', ErrStat, ErrMsg) - !if(Failed()) return - !iLine=iLine+1 - !call CONV2UC(Line) - !call CONV2UC(Line2) - !call cleanup() - !!-------------------------- Detecting file format - !if (index(Line2,'#MASS')==1) then - ! write(*,*) 'File detected as Guyan ASCII file format: '//trim(InputFile) - ! call ReadGuyanASCII() - !else if (index(Line2,'FLEX 5 FORMAT')>=1) then - ! write(*,*) 'File detected as FLEX ASCII file format: '//trim(InputFile) - ! call ReadFlexASCII() - !endif + + ! Get an available unit number for the file. + CALL GetNewUnit( UnIn, ErrStat, ErrMsg ); if ( ErrStat /= 0 ) return + ! Open the Primary input file. + CALL OpenFInpFile(UnIn, InputFile, ErrStat, ErrMsg); if ( ErrStat /= 0 ) return + + ! --- Reading file line by line + ErrStat=0 + iLine=0 + do while (ErrStat==0) + iLine=iLine+1 + read(UnIn,'(A)', iostat=ErrStat) Line + if (ErrStat/=0) then + if (ErrStat < 0) then + ErrStat=0 ! End of file is fine + else + ErrMsg='Error while reading file '//trim(InputFile)// ' line '//Num2LStr(iLine) + endif + exit + endif + ! Line content is analyzed as case insensitive + call Conv2UC(Line) + if (index(Line,'!DIMENSION')==1) then + p%nTot = ReadIntFromStr(Line(12:), '`dimension`, file '//trim(InputFile)//', line '//Num2LStr(iLine), ErrStat, ErrMsg); if (ErrStat /= 0) exit + p%nCB=p%nTot-6 + + else if (index(Line,'!MASS')==1) then + if (p%nTot<0) exit + call ReadRealMatrix(UnIn, InputFile, p%Mass, 'Mass Matrix', p%nTot, p%nTot, ErrStat, ErrMsg, iLine) + else if (index(Line,'!STIFFNESS')==1) then + if (p%nTot<0) exit + call ReadRealMatrix(UnIn, InputFile, p%Stff, 'Stiffness Matrix', p%nTot, p%nTot, ErrStat, ErrMsg, iLine) + else if (index(Line,'!DAMPING')==1) then + if (p%nTot<0) exit + call ReadRealMatrix(UnIn, InputFile, p%Damp, 'Damping Matrix', p%nTot, p%nTot, ErrStat, ErrMsg, iLine) + else if (index(Line,'!WEIGHT CONSTANT')==1) then + if (p%nTot<0) exit + CALL AllocAry(p%W0, p%nTot, 'W0', ErrStat, ErrMsg ); if (Failed()) return + call ReadAry(UnIn, InputFile, p%W0, p%nTot, 'W0', 'Weight constant', ErrStat, ErrMsg) + else if (index(Line,'!WEIGHT STIFFNESS')==1) then + if (p%nTot<0) exit + call ReadRealMatrix(UnIn, InputFile, p%WStff, 'Weight stiffness', p%nTot, p%nTot, ErrStat, ErrMsg, iLine) + ! elseif (index(Line,'!')==1) then + !write(*,*) 'Ignored comment: '//trim(Line) + ! else + ! Ignore unsupported lines + !write(*,*) 'Ignored line: '//trim(Line) + endif + enddo + close( UnIn ) CONTAINS - !> logical function Failed() CALL SetErrStatSimple(ErrStat, ErrMsg, 'ExtPtfm_ReadReducedFile') Failed = ErrStat >= AbortErrLev if(Failed) call cleanup() end function Failed - !> subroutine cleanup() close( UnIn ) if (allocated(TmpAry)) deallocate(TmpAry) end subroutine cleanup +END SUBROUTINE ReadReducedFile - !> Reads a FLEX ASCII file for Guyan or CraigBampton reductions - SUBROUTINE ReadFlexASCII() - REAL(ReKi) :: dt !< time step - REAL(ReKi) :: T !< total simulation time - - T=-1 - dt=-1 - ! Get an available unit number for the file. - CALL GetNewUnit( UnIn, ErrStat, ErrMsg ); if ( ErrStat /= 0 ) return - ! Open the Primary input file. - CALL OpenFInpFile(UnIn, InputFile, ErrStat, ErrMsg); if ( ErrStat /= 0 ) return - - ! --- Reading file line by line - ErrStat=0 - iLine=0 - do while (ErrStat==0) - iLine=iLine+1 - read(UnIn,'(A)', iostat=ErrStat) Line - if (ErrStat/=0) then - if (ErrStat < 0) then - ErrStat=0 ! End of file is fine - else - ErrMsg='Error while reading file '//trim(InputFile)// ' line '//Num2LStr(iLine) - endif - exit - endif - ! Line content is analyzed as case incensitive - call Conv2UC(Line) - if (index(Line,'!DIMENSION')==1) then - p%nTot = ReadIntFromStr(Line(12:), '`dimension`, file '//trim(InputFile)//', line '//Num2LStr(iLine), ErrStat, ErrMsg); if (ErrStat /= 0) exit - p%nCB=p%nTot-6 - - else if (index(Line,'!TIME INCREMENT IN SIMULATION:')==1) then - dt = ReadFloatFromStr(Line(31:), '`time increment`, file '//trim(InputFile)//', line '//Num2LStr(iLine), ErrStat, ErrMsg); if (ErrStat /= 0) exit - - else if (index(Line,'!TOTAL SIMULATION TIME IN FILE:')==1) then - T = ReadFloatFromStr(Line(32:), '`total simulation time`, file '//trim(InputFile)//', line '//Num2LStr(iLine), ErrStat, ErrMsg ); if (ErrStat /= 0) exit - - else if (index(Line,'!MASS MATRIX')==1) then - iLine=iLine+1 - CALL ReadCom( UnIn, InputFile, 'Comment - Line '//Num2LStr(iLine), ErrStat, ErrMsg); if (ErrStat /= 0) exit - if (p%nTot<0) exit - call ReadRealMatrix(UnIn, InputFile, p%Mass, 'Mass Matrix', p%nTot, p%nTot, ErrStat, ErrMsg, iLine) - - else if (index(Line,'!STIFFNESS MATRIX')==1) then - iLine=iLine+1 - CALL ReadCom( UnIn, InputFile, 'Comment - Line '//Num2LStr(iLine), ErrStat, ErrMsg); if (ErrStat /= 0) exit - if (p%nTot<0) exit - call ReadRealMatrix(UnIn, InputFile, p%Stff, 'Stiffness Matrix', p%nTot, p%nTot, ErrStat, ErrMsg, iLine) - - else if (index(Line,'!DAMPING MATRIX')==1) then - iLine=iLine+1 - CALL ReadCom( UnIn, InputFile, 'Comment - Line '//Num2LStr(iLine), ErrStat, ErrMsg); if (ErrStat /= 0) exit - if (p%nTot<0) exit - call ReadRealMatrix(UnIn, InputFile, p%Damp, 'Damping Matrix', p%nTot, p%nTot, ErrStat, ErrMsg, iLine) - - else if (index(Line,'!LOADING')==1) then - iLine=iLine+1 - CALL ReadCom( UnIn, InputFile, 'Comment - Line '//Num2LStr(iLine), ErrStat, ErrMsg) - if (ErrStat /= 0) exit - p%nTimeSteps = nint(T/dt)+1 - if (p%nTot<0) exit - call allocAry( p%Forces, max(1,p%nTimeSteps), p%nTot, 'p%Forces' , ErrStat, ErrMsg); if (ErrStat /= 0) exit - call allocAry( p%times , max(1,p%nTimeSteps), 'p%times', ErrStat, ErrMsg); if (ErrStat /= 0) exit - if (p%nTimeSteps == 0) then - p%Forces= 0.0_ReKi - p%times = 0.0_ReKi - p%nTimeSteps = 1 - else - allocate(TmpAry(1:p%nTot+1)) - do i=1,p%nTimeSteps - iLine=iLine+1 - TmpAry(1:p%nTot+1)=-999.9E-09 - read(UnIn, fmt='(A)', iostat=ErrStat) Line - if (ErrStat/=0) then - ErrStat = ErrID_Fatal - ErrMSg='Failed to read line '//trim(Num2LStr(iLine))//' (out of '//trim(Num2LStr(p%nTimeSteps))//' expected lines) in file: '//trim(InputFile) - exit - end if - ! Extract fields (ReadR8AryFromStr is in NWTC_IO) - CALL ReadAry(Line, TmpAry, p%nTot+1, 'Forces', 'Forces', ErrStat, ErrMsg) - if (ErrStat/=0) then - ErrStat = ErrID_Fatal - ErrMsg='Failed to extract fields from line '//trim(Num2LStr(iLine))//'. '//trim(ErrMsg)//'. Check that the number of columns is correct in file: '//trim(InputFile) - exit - end if - if (ErrStat /= 0) exit - p%times(i) = TmpAry(1) - p%Forces(i,:) = TmpAry(2:p%nTot+1) - end do - end if +!.................................................................................................................................. +SUBROUTINE ReadConnFile( InputFile, p, ErrStat, ErrMsg ) +!.................................................................................................................................. + ! Passed variables + CHARACTER(*), INTENT(IN) :: InputFile !< Name of the file containing the primary input data + TYPE(ExtPtfm_ParameterType), INTENT(INOUT) :: p !< All the parameter matrices stored in this input file + INTEGER(IntKi), INTENT(OUT) :: ErrStat !< Error status + CHARACTER(*), INTENT(OUT) :: ErrMsg !< Error message + ! Local variables: + INTEGER(IntKi) :: UnIn ! Unit number for reading file + INTEGER(IntKi) :: iLine ! Current position in file + CHARACTER(4096) :: Line ! Temporary storage of a line from the input file (to compare with "default") + ErrStat = ErrID_None + ErrMsg = "" + + ! Get an available unit number for the file. + CALL GetNewUnit( UnIn, ErrStat, ErrMsg ); if (Failed()) return + ! Open the Primary input file. + CALL OpenFInpFile(UnIn, InputFile, ErrStat, ErrMsg); if (Failed()) return - elseif (index(Line,'!')==1) then - !write(*,*) 'Ignored comment: '//trim(Line) + ! --- Reading file line by line + ErrStat=0 + iLine=0 + do while (ErrStat==0) + iLine=iLine+1 + read(UnIn,'(A)', iostat=ErrStat) Line + if (ErrStat/=0) then + if (ErrStat < 0) then + ErrStat=0 ! End of file is fine else - ! Ignore unsupported lines - !write(*,*) 'Ignored line: '//trim(Line) + ErrMsg='Error while reading file '//trim(InputFile)// ' line '//Num2LStr(iLine) endif - enddo - close( UnIn ) - END SUBROUTINE ReadFlexASCII - - !> Reads a Guyan ASCII file - SUBROUTINE ReadGuyanASCII() - ! Guyan reduction has 6 DOF, 0 CB DOFs - p%nCB = 0 - p%nTot = 6 - ! Get an available unit number for the file. - CALL GetNewUnit( UnIn, ErrStat, ErrMsg ); if ( ErrStat /= 0 ) return - ! Open the Primary input file. - CALL OpenFInpFile ( UnIn, InputFile, ErrStat, ErrMsg ); if ( ErrStat /= 0 ) return + exit + endif + ! Line content is analyzed as case insensitive + call Conv2UC(Line) + if (index(Line,'!NCONN:')==1) then + p%nConn = ReadIntFromStr(Line(8:), '`Nconn`, file '//trim(InputFile)//', line '//Num2LStr(iLine), ErrStat, ErrMsg); if (Failed()) return + if (p%nConn<=0_IntKi) return + else if (index(Line,'!CONNECTIONS')==1) then + call ReadRealMatrix(UnIn, InputFile, p%PosConn, 'Connections', p%nConn, 3_IntKi, ErrStat, ErrMsg, iLine) + else if (index(Line,'!DISPLACEMENT')==1) then + call ReadRealMatrix(UnIn, InputFile, p%PhiConn, 'Displacement', 3*p%nConn, p%nTot, ErrStat, ErrMsg, iLine) + ! else if (index(Line,'!')==1) then + !write(*,*) 'Ignored comment: '//trim(Line) + ! else + ! Ignore unsupported lines + !write(*,*) 'Ignored line: '//trim(Line) + end if + end do + close( UnIn ) - !-------------------------- HEADER --------------------------------------------- - CALL ReadStr( UnIn, InputFile, Line, 'Header line', 'File Header: External Platform MCKF Matrices (line 1)', ErrStat, ErrMsg) - if ( ErrStat /= 0 ) return - !---------------------- MASS MATRIX -------------------------------------- - CALL ReadCom( UnIn, InputFile, 'Section Header: Mass Matrix', ErrStat, ErrMsg) - if ( ErrStat /= 0 ) return - CALL ReadRealMatrix(UnIn, InputFile, p%Mass, 'Mass Matrix', p%nTot, p%nTot, ErrStat, ErrMsg, iLine) - if ( ErrStat /= 0 ) return - !---------------------- DAMPING MATRIX -------------------------------------- - CALL ReadCom( UnIn, InputFile, 'Section Header: Damping Matrix', ErrStat, ErrMsg) - if ( ErrStat /= 0 ) return - CALL ReadRealMatrix(UnIn, InputFile, p%Damp, 'Damping Matrix', p%nTot, p%nTot, ErrStat, ErrMsg, iLine) - if ( ErrStat /= 0 ) return - !---------------------- STIFFNESS MATRIX -------------------------------------- - CALL ReadCom( UnIn, InputFile, 'Section Header: Stiffness Matrix', ErrStat, ErrMsg) - if ( ErrStat /= 0 ) return - CALL ReadRealMatrix(UnIn, InputFile, p%Stff, 'Stiffness Matrix', p%nTot, p%nTot, ErrStat, ErrMsg, iLine) - if ( ErrStat /= 0 ) return - !---------------------- LOAD time-history -------------------------------------- - p%nTimeSteps = 0 - CALL ReadCom( UnIn, InputFile, 'Section Header: Loads time-history', ErrStat, ErrMsg) - CALL ReadCom( UnIn, InputFile, 'Loads time-history table channel names', ErrStat, ErrMsg) - CALL ReadCom( UnIn, InputFile, 'Loads time-history table channel units', ErrStat, ErrMsg) - allocate(TmpAry(1:p%nTot+1)) - if (ErrStat < AbortErrLev) then - ! let's figure out how many rows of data are in the time-history table: - read( UnIn, *, IOSTAT=ErrStat ) TmpAry - do while (ErrStat==0) - p%nTimeSteps = p%nTimeSteps + 1 - read( UnIn, *, IOSTAT=ErrStat ) TmpAry - end do - end if - call allocAry( p%Forces, max(1,p%nTimeSteps), p%nTot, 'p%Forces', ErrStat, ErrMsg); if ( ErrStat /= 0 ) return - call allocAry( p%times , max(1,p%nTimeSteps), 'p%times' , ErrStat, ErrMsg); if ( ErrStat /= 0 ) return - if (p%nTimeSteps == 0) then - p%Forces = 0.0_ReKi - p%times = 0.0_ReKi - p%nTimeSteps = 1 - else - rewind(UnIn) - do i=1,25 ! skip the first 25 rows of the file until we get to the data for the time-history table - read(UnIn,*,IOSTAT=ErrStat) line - end do - do i=1,p%nTimeSteps - read(UnIn, fmt='(A)', iostat=ErrStat) Line - if (ErrStat/=0) then +CONTAINS + logical function Failed() + CALL SetErrStatSimple(ErrStat, ErrMsg, 'ExtPtfm_ReadConnFile') + Failed = ErrStat >= AbortErrLev + if(Failed) call cleanup() + end function Failed + subroutine cleanup() + close( UnIn ) + end subroutine cleanup +END SUBROUTINE ReadConnFile + +!.................................................................................................................................. +SUBROUTINE ReadForceFile( InputFile, n, UserForcing, ErrStat, ErrMsg ) +!.................................................................................................................................. + ! Passed variables + CHARACTER(*), INTENT(IN) :: InputFile !< Name of the file containing the primary input data + INTEGER(IntKi), INTENT(IN) :: n !< Number of load components expected + TYPE(UserForcingType), INTENT(INOUT) :: UserForcing !< User-specified forcing time series + INTEGER(IntKi), INTENT(OUT) :: ErrStat !< Error status + CHARACTER(*), INTENT(OUT) :: ErrMsg !< Error message + ! Local variables: + REAL(ReKi), dimension(:),allocatable :: TmpAry ! temporary array for reading row from file + INTEGER(IntKi) :: I ! loop counter + INTEGER(IntKi) :: UnIn ! Unit number for reading file + INTEGER(IntKi) :: iLine ! Current position in file + CHARACTER(4096) :: Line ! Temporary storage of a line from the input file (to compare with "default") + LOGICAL :: foundNSteps + LOGICAL :: foundForcing + ErrStat = ErrID_None + ErrMsg = "" + + foundNSteps = .false. + foundForcing = .false. + + UserForcing%nTimeSteps = 0_IntKi + + ! Get an available unit number for the file. + CALL GetNewUnit( UnIn, ErrStat, ErrMsg ); if (Failed()) return + ! Open the Primary input file. + CALL OpenFInpFile(UnIn, InputFile, ErrStat, ErrMsg); if (Failed()) return + + ! --- Reading file line by line + ErrStat=0 + iLine=0 + do while (ErrStat==0) + iLine=iLine+1 + read(UnIn,'(A)', iostat=ErrStat) Line + if (ErrStat/=0) then + if (ErrStat < 0) then + ErrStat=0 ! End of file is fine + else + ErrMsg='Error while reading file '//trim(InputFile)// ' line '//Num2LStr(iLine) + endif + exit + endif + ! Line content is analyzed as case insensitive + call Conv2UC(Line) + if (index(Line,'!NSTEPS')==1) then + foundNSteps = .true. + UserForcing%nTimeSteps = ReadIntFromStr(Line(9:), '`Nsteps`, file '//trim(InputFile)//', line '//Num2LStr(iLine), ErrStat, ErrMsg); if (Failed()) return + else if (index(Line,'!FORCING')==1) then + foundForcing = .true. + if (n<0 .or. UserForcing%nTimeSteps==0) exit + call allocAry( UserForcing%Forces, max(1,UserForcing%nTimeSteps), n, 'UserForcing%Forces', ErrStat, ErrMsg); if (Failed()) return + call allocAry( UserForcing%times , max(1,UserForcing%nTimeSteps), 'UserForcing%times' , ErrStat, ErrMsg); if (Failed()) return + allocate(TmpAry(1:n+1)) + do i=1,UserForcing%nTimeSteps + iLine=iLine+1 + TmpAry(1:n+1)=-999.9E-09 + read(UnIn, fmt='(A)', iostat=ErrStat) Line + if (ErrStat/=0) then ErrStat = ErrID_Fatal - ErrMSg='Failed to read line '//trim(Num2LStr(iLine))//' (out of '//trim(Num2LStr(p%nTimeSteps))//' expected lines) in file: '//trim(InputFile) + ErrMSg='Failed to read line '//trim(Num2LStr(iLine))//' (out of '//trim(Num2LStr(UserForcing%nTimeSteps))//' expected lines) in file: '//trim(InputFile) exit - end if - ! Extract fields (ReadR8AryFromStr is in NWTC_IO) - CALL ReadAry(Line, TmpAry, p%nTot+1, 'Forces', 'Forces', ErrStat, ErrMsg) - if (ErrStat/=0) then + end if + ! Extract fields (ReadR8AryFromStr is in NWTC_IO) + CALL ReadAry(Line, TmpAry, n+1, 'Forces', 'Forces', ErrStat, ErrMsg) + if (ErrStat/=0) then ErrStat = ErrID_Fatal ErrMsg='Failed to extract fields from line '//trim(Num2LStr(iLine))//'. '//trim(ErrMsg)//'. Check that the number of columns is correct in file: '//trim(InputFile) exit - end if - if ( ErrStat /= 0 ) return - p%times(i) = TmpAry(1) - p%Forces(i,:) = TmpAry(2:p%nTot+1) - end do - end if - !---------------------- END OF FILE ----------------------------------------- - close( UnIn ) - END SUBROUTINE ReadGuyanASCII -END SUBROUTINE ReadReducedFile + end if + if (ErrStat /= 0) exit + UserForcing%times(i) = TmpAry(1) + UserForcing%Forces(i,:) = TmpAry(2:n+1) + end do + ! elseif (index(Line,'!')==1) then + !write(*,*) 'Ignored comment: '//trim(Line) + ! else + ! Ignore unsupported lines + !write(*,*) 'Ignored line: '//trim(Line) + end if + enddo + close( UnIn ) + + if (.not.foundNSteps) then + ErrStat = ErrID_Fatal + ErrMsg = "Did not find '!NSteps:' followed by the number of time steps in file "//trim(InputFile)//"." + if(Failed()) return + end if + + if (.not.foundForcing) then + ErrStat = ErrID_Fatal + ErrMsg = "Did not find forcing time series after '!FORCING' in file "//trim(InputFile)//". Note that the time series should be after '!NSteps:'." + if(Failed()) return + end if + + if (UserForcing%nTimeSteps <= 0_IntKi) then + UserForcing%nTimeSteps = 1_IntKi + call allocAry( UserForcing%Forces, 1_IntKi, n, 'UserForcing%Forces', ErrStat, ErrMsg); if(Failed()) return + call allocAry( UserForcing%times , 1_IntKi, 'UserForcing%times' , ErrStat, ErrMsg); if(Failed()) return + UserForcing%Forces= 0.0_ReKi + UserForcing%times = 0.0_ReKi + end if + +CONTAINS + logical function Failed() + CALL SetErrStatSimple(ErrStat, ErrMsg, 'ExtPtfm_ReadForceFile') + Failed = ErrStat >= AbortErrLev + if(Failed) call cleanup() + end function Failed + subroutine cleanup() + close( UnIn ) + if (allocated(TmpAry)) deallocate(TmpAry) + end subroutine cleanup +END SUBROUTINE ReadForceFile !> This routine generates the summary file, which contains a regurgitation of the input data and interpolated flexible body data. SUBROUTINE ExtPtfm_PrintSum(x, p, m, RootName, ErrStat, ErrMsg) @@ -843,9 +1082,9 @@ SUBROUTINE ExtPtfm_PrintSum(x, p, m, RootName, ErrStat, ErrMsg) write(UnSu,'(A,A)') 'Time integration method : ',StrIntMethod(p%IntMethod) write(UnSu,'(A,F13.8)')'Integration time step : ',p%EP_DeltaT write(UnSu,'(A)') '!Reduction input file' - write(UnSu,'(A,I0)') 'Number of time steps : ',p%nTimeSteps - write(UnSu,'(A,F13.8)')'Start time : ',p%times(1) - write(UnSu,'(A,F13.8)')'End time : ',p%times(p%nTimeSteps) + !write(UnSu,'(A,I0)') 'Number of time steps : ',p%nTimeSteps + !write(UnSu,'(A,F13.8)')'Start time : ',p%times(1) + !write(UnSu,'(A,F13.8)')'End time : ',p%times(p%nTimeSteps) write(UnSu,'(A,I0)') 'Total number of DOF (input) : ',p%nCBFull+6 write(UnSu,'(A,I0)') 'Number of CB modes (input) : ',p%nCBFull write(UnSu,'(A)') '!Degrees of freedom' @@ -861,11 +1100,11 @@ SUBROUTINE ExtPtfm_PrintSum(x, p, m, RootName, ErrStat, ErrMsg) call disp1r8(UnSu, 'qm' ,x%qm) call disp1r8(UnSu, 'qmdot',x%qmdot) - write(UnSu,'(A)')'!State matrices' - call disp2r8(UnSu, 'A',p%AMat) - call disp2r8(UnSu, 'B',p%BMat) - call disp2r8(UnSu, 'C',p%CMat) - call disp2r8(UnSu, 'D',p%DMat) + !write(UnSu,'(A)')'!State matrices' + !call disp2r8(UnSu, 'A',p%AMat) + !call disp2r8(UnSu, 'B',p%BMat) + !call disp2r8(UnSu, 'C',p%CMat) + !call disp2r8(UnSu, 'D',p%DMat) write(UnSu,'(A)')'!Input matrices' call disp2r8(UnSu, 'M',p%Mass) call disp2r8(UnSu, 'K',p%Stff) @@ -883,6 +1122,13 @@ SUBROUTINE ExtPtfm_PrintSum(x, p, m, RootName, ErrStat, ErrMsg) call disp2r8(UnSu, 'C21',p%C21) call disp2r8(UnSu, 'C22',p%C22) + write(UnSu,'(//,A,//)') '!Connections:' + write(UnSu,'(A,I0)') 'Number of connections : ',p%nConn + if (p%nConn>0) then + call disp2r8(UnSu, 'PosConn',p%PosConn) + call disp2r8(UnSu, 'PhiConn',p%PhiConn) + end if + OutPFmt = '( I4, 3X,A '//TRIM(Num2LStr(ChanLen))//',1 X, A'//TRIM(Num2LStr(ChanLen))//' )' OutPFmtS = '( A4, 3X,A '//TRIM(Num2LStr(ChanLen))//',1 X, A'//TRIM(Num2LStr(ChanLen))//' )' write(UnSu,'(//,A,//)') '!Requested Outputs:' diff --git a/modules/extptfm/src/ExtPtfm_MCKF_Registry.txt b/modules/extptfm/src/ExtPtfm_MCKF_Registry.txt index c95cd9ca0f..eea884b253 100644 --- a/modules/extptfm/src/ExtPtfm_MCKF_Registry.txt +++ b/modules/extptfm/src/ExtPtfm_MCKF_Registry.txt @@ -13,13 +13,19 @@ # ...... Include files (definitions from NWTC Library) ............................................................................ include Registry_NWTC_Library.txt +# ..... User-defined forcing ................................................................................................. +typedef ExtPtfm_MCKF/ExtPtfm UserForcingType IntKi nTimeSteps - - - "Number of values of Forces and times" - +typedef ^ ^ ReKi times {:} - - "the time associated with each row of Forces" "s" +typedef ^ ^ ReKi Forces {:}{:} - - "Prescribed reduced loads, the 3 platform forces (in N) and moments (Nm) acting at the platform reference, associated with everything but the added-mass effects; positive forces are in the direction of motion." "N, N-m" # ..... Initialization data ....................................................................................................... # Define inputs that the initialization routine may need here: # e.g., the name of the input file, the file root name, etc. typedef ExtPtfm_MCKF/ExtPtfm InitInputType CHARACTER(1024) InputFile - - - "Name of the input file; remove if there is no file" - typedef ^ ^ LOGICAL Linearize - .FALSE. - "Flag that tells this module if the glue code wants to linearize." - -typedef ^ ^ ReKi PtfmRefzt - - - "Vertical distance from the ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] to the platform reference point" meters +typedef ^ ^ ReKi PtfmRefxt - - - "Longitudinal distance from PRP to the platform reference point" "m" +typedef ^ ^ ReKi PtfmRefyt - - - "Laterl distance from PRP to the platform reference point" "m" +typedef ^ ^ ReKi PtfmRefzt - - - "Vertical distance from the ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] to the platform reference point" "m" typedef ^ ^ CHARACTER(1024) RootName - - - "RootName for writing output files" # ..... Input file data ........................................................................................................... @@ -27,13 +33,20 @@ typedef ^ ^ CHARACTER(1024) RootName - - - # ..... Primary Input file data ........................................................................................................... typedef ExtPtfm_MCKF/ExtPtfm ExtPtfm_InputFile DbKi DT - - - "Requested integration time for ElastoDyn" seconds typedef ^ ^ IntKi IntMethod - - - "Integration Method (1=RK4, 2=AB4, 3=ABM4)" - -typedef ^ ^ IntKi FileFormat - - - "File format switch" - +typedef ^ ^ IntKi RBMod - - - "Method for handling rigid-body modes" - +typedef ^ ^ LOGICAL HasRBMode - - - "True: has rigid-body modes/floating structure; False: no rigid-body modes" - typedef ^ ^ CHARACTER(1024) RedFile - - - "File containing reduction inputs" - typedef ^ ^ CHARACTER(1024) RedFileCst - - - "File containing constant reduction inputs" - typedef ^ ^ LOGICAL EquilStart - - - "Flag to determine the equilibrium positions of the CB modes at initialization (first call)" - typedef ^ ^ IntKi ActiveCBDOF {:} - - "List of active CB DOF" - typedef ^ ^ ReKi InitPosList {:} - - "Initial positions of the CB DOFs" - typedef ^ ^ ReKi InitVelList {:} - - "Initial velocities of the CB DOFs" - +typedef ^ ^ LOGICAL HasConnections - - - "True: has connections; False: no connections" - +typedef ^ ^ CHARACTER(1024) ConnFile - - - "File containing connection inputs" - +typedef ^ ^ LOGICAL HasUserForcing - - - "True: has user forcing; False: no user forcing" - +typedef ^ ^ CHARACTER(1024) ForceFile - - - "File containing user forcing inputs" - +typedef ^ ^ LOGICAL HasConnForcing - - - "True: has user forcing; False: no user forcing" - +typedef ^ ^ CHARACTER(1024) FConnFile - - - "File containing user forcing inputs" - typedef ^ ^ LOGICAL SumPrint - - - "Print summary data to .sum" - typedef ^ ^ IntKi OutFile - - - "Switch to determine where output will be placed: (1: in module output file only; 2: in glue code output file only; 3: both)" - typedef ^ ^ LOGICAL TabDelim - - - "Flag to cause tab-delimited text output (delimited by space otherwise)" - @@ -69,54 +82,90 @@ typedef ^ ^ IntKi n # ..... Parameters ................................................................................................................ # Define parameters here: # Time step for integration of continuous states (if a fixed-step integrator is used) and update of discrete states: -typedef ^ ParameterType ReKi Mass {:}{:} - - "Mass matrix" "kg, kg-m, kg-m^2" -typedef ^ ParameterType ReKi Damp {:}{:} - - "Damping matrix" - -typedef ^ ParameterType ReKi Stff {:}{:} - - "Stiffness matrix" - -typedef ^ ParameterType ReKi Forces {:}{:} - - "Prescribed reduced loads, the 3 platform forces (in N) and moments (Nm) acting at the platform reference, associated with everything but the added-mass effects; positive forces are in the direction of motion." "N, N-m" -typedef ^ ^ ReKi times {:} - - "the time associated with each row of Forces" "s" -typedef ^ ^ ReKi AMat {:}{:} - - "State matrix A" "" -typedef ^ ^ ReKi BMat {:}{:} - - "State matrix B" "" -typedef ^ ^ ReKi CMat {:}{:} - - "State matrix C" "" -typedef ^ ^ ReKi DMat {:}{:} - - "State matrix D" "" -typedef ^ ^ ReKi FX {:} - - "State constant Fx" "" -typedef ^ ^ ReKi FY {:} - - "Output constant Fy" "" +typedef ^ ParameterType Logical hasRBMode - - - "True: has rigid-body modes/floating structure; False: no rigid-body modes" +typedef ^ ^ IntKi RBMod - - - "Method for handling rigid-body modes" - +typedef ^ ^ ReKi Mass {:}{:} - - "Mass matrix" "kg, kg-m, kg-m^2" +typedef ^ ^ ReKi Damp {:}{:} - - "Damping matrix" - +typedef ^ ^ ReKi Stff {:}{:} - - "Stiffness matrix" - +typedef ^ ^ ReKi W0 {:} - - "Prescribed constant external loads including selfweight" - +typedef ^ ^ ReKi WStff {:}{:} - - "Self-weight stiffness matrix" - +typedef ^ ^ ReKi A1Mat {:}{:} - - "State matrix A1" "" +typedef ^ ^ ReKi A2Mat {:}{:} - - "State matrix A2" "" +typedef ^ ^ ReKi B1Mat {:}{:} - - "State matrix B1" "" +typedef ^ ^ ReKi B2Mat {:}{:} - - "State matrix B2" "" +typedef ^ ^ ReKi B3Mat {:}{:} - - "State matrix B3" "" +typedef ^ ^ ReKi B4Mat {:}{:} - - "State matrix B4" "" +typedef ^ ^ ReKi C1Mat {:}{:} - - "State matrix C1" "" +typedef ^ ^ ReKi C2Mat {:}{:} - - "State matrix C2" "" +typedef ^ ^ ReKi D1Mat {:}{:} - - "State matrix D1" "" +typedef ^ ^ ReKi D2Mat {:}{:} - - "State matrix D2" "" +typedef ^ ^ ReKi D3Mat {:}{:} - - "State matrix D3" "" +typedef ^ ^ ReKi D4Mat {:}{:} - - "State matrix D4" "" typedef ^ ^ ReKi M11 {:}{:} - - "Matrix M11" "" typedef ^ ^ ReKi M12 {:}{:} - - "Matrix M12" "" -typedef ^ ^ ReKi M22 {:}{:} - - "Matrix M22" "" typedef ^ ^ ReKi M21 {:}{:} - - "Matrix M21" "" +typedef ^ ^ ReKi M22 {:}{:} - - "Matrix M22" "" +typedef ^ ^ ReKi M22Inv {:}{:} - - "Inverse of matrix M22" "" typedef ^ ^ ReKi K11 {:}{:} - - "Matrix K11" "" +typedef ^ ^ ReKi K12 {:}{:} - - "Matrix K12" "" +typedef ^ ^ ReKi K21 {:}{:} - - "Matrix K21" "" typedef ^ ^ ReKi K22 {:}{:} - - "Matrix K22" "" typedef ^ ^ ReKi C11 {:}{:} - - "Matrix C11" "" typedef ^ ^ ReKi C12 {:}{:} - - "Matrix C12" "" typedef ^ ^ ReKi C22 {:}{:} - - "Matrix C22" "" typedef ^ ^ ReKi C21 {:}{:} - - "Matrix C21" "" +typedef ^ ^ ReKi phiConn {:}{:} - - "Mode shapes of connection points" "" +typedef ^ ^ ReKi PosConn {:}{:} - - "Positions of connection points" "m" +typedef ^ ^ ReKi RBMass - - - "Rigid-body mass" "kg" +typedef ^ ^ ReKi RBCoG {3} - - "Rigid-body center of mass" "m" +typedef ^ ^ ReKi RBInertia {3}{3} - - "Rigid-body moment of inertia matrix" "kgm^2" typedef ^ ^ DbKi EP_DeltaT - - - "Time step (for integration of continuous states)" "seconds" -typedef ^ ^ IntKi nTimeSteps - - - "Number of values of Forces and times" - typedef ^ ^ IntKi nCB - - - "Number of CraigBampton modes active" - -typedef ^ ^ IntKi nCBFull - - - "Totla number of CraigBampton modes given as input" - +typedef ^ ^ IntKi nCBFull - - - "Total number of CraigBampton modes given as input" - typedef ^ ^ IntKi nTot - - - "Total number of debrees of freedom (CB + interface)" - +typedef ^ ^ IntKi nConn - - - "Number of connection points on the structure" - typedef ^ ^ IntKi NumOuts - - - "Number of values in WriteOutput" - typedef ^ ^ IntKi IntMethod - - - "Integration Method (1=RK4, 2=AB4, 3=ABM4)" - typedef ^ ^ IntKi ActiveCBDOF {:} - - "List of active CB DOF" - +typedef ^ ^ UserForcingType UsrModeF - - - "User-defined modal forcing time series" - +typedef ^ ^ UserForcingType UsrConnF - - - "User-defined connection forcing time series" - typedef ^ ^ OutParmType OutParam {:} - - "Names and units (and other characteristics) of all requested output parameters" - typedef ^ ^ IntKi OutParamLinIndx {:}{:} - - "Index into WriteOutput for linearization analysis" - # ..... Inputs .................................................................................................................... -typedef ^ InputType MeshType PtfmMesh - - - "Displacements at the platform reference point" - +typedef ^ InputType MeshType PtfmMesh - - - "Displacements at the platform reference point" - +typedef ^ ^ MeshType ConnLdMesh - - - "Load mesh for connection points on the structure" - +typedef ^ ^ MeshType FBMesh - - - "Load mesh for rigid-body DOF" - +typedef ^ ^ ReKi Fm {:} - - "External forcing to the internal elastic modes" - # ..... Outputs ................................................................................................................... typedef ^ OutputType MeshType PtfmMesh - - - "Loads at the platform reference point" - +typedef ^ ^ MeshType ConnMesh - - - "Motion mesh for connection points on the structure" - +typedef ^ ^ MeshType FBMesh - - - "Motion mesh for rigid-body DOF" - +typedef ^ ^ ReKi qm {:} - - "Displacement of internal elastic modes" - +typedef ^ ^ ReKi qmdot {:} - - "Velocity of internal elastic modes" - +typedef ^ ^ ReKi qmdotdot {:} - - "Acceleration of internal elastic modes" - typedef ^ ^ ReKi WriteOutput {:} - - "Example of data to be written to an output file" "s,-" # ..... Misc/Optimization variables................................................................................................. # Define any data that are used only for efficiency purposes (these variables are not associated with time): # e.g. indices for searching in an array, large arrays that are local variables in any routine called multiple times, etc. typedef ^ MiscVarType ReKi xFlat {:} - - "Flattened vector of states" -typedef ^ MiscVarType ReKi uFlat {18} - - "Flattened vector of inputs" -typedef ^ MiscVarType ReKi F_at_t {:} - - "The 6 interface loads and Craig-Bampton loads at t (force and moment acting at the platform reference (no added-mass effects); positive forces are in the direction of motion)." "N, N-m" -typedef ^ MiscVarType IntKi Indx - - - "Index into times, to speed up interpolation" - -typedef ^ MiscVarType LOGICAL EquilStart - - - "Flag to determine the equilibrium position of the CB DOF at initialization (first call)" - +typedef ^ ^ R8Ki uFlat {18} - - "Flattened vector of inputs" +typedef ^ ^ ReKi F_at_t {:} - - "The 6 interface loads and Craig-Bampton loads at t (force and moment acting at the platform reference (no added-mass effects); positive forces are in the direction of motion)." "N, N-m" +typedef ^ ^ ReKi FConn_at_t {:} - - "The 3DOF forces at each connection point defined by the user" "N" +typedef ^ ^ ReKi F1 {:} - - "Interface/rigid-body mode forcing" - +typedef ^ ^ ReKi F2 {:} - - "Internal elastic mode forcing" - +typedef ^ ^ ReKi Weight {:} - - "Structure self-weight" - +typedef ^ ^ ReKi FConn {:} - - "Connection forces" "N" +typedef ^ ^ ReKi FConnCB {:} - - "Modal forces from connections" "" +typedef ^ ^ ReKi DConn {:} - - "Connection point displacement" "" +typedef ^ ^ ReKi VConn {:} - - "Connection point velocity" "" +typedef ^ ^ ReKi AConn {:} - - "Connection point acceleration" "" +typedef ^ ^ IntKi Indx_UsrModeF - - - "Index into times, to speed up interpolation" - +typedef ^ ^ IntKi Indx_UsrConnF - - - "Index into times, to speed up interpolation" - +typedef ^ ^ LOGICAL EquilStart - - - "Flag to determine the equilibrium position of the CB DOF at initialization (first call)" - typedef ^ ^ ReKi AllOuts {:} - - "An array holding the value of all of the calculated (not only selected) output channels" "see OutListParameters.xlsx spreadsheet" typedef ^ ^ ModJacType Jac - - - "Data structure for calculating module Jacobians" - typedef ^ ^ ExtPtfm_ContinuousStateType x_perturb - - - "" - diff --git a/modules/extptfm/src/ExtPtfm_MCKF_Types.f90 b/modules/extptfm/src/ExtPtfm_MCKF_Types.f90 index bb2fbda8c4..92e7708c21 100644 --- a/modules/extptfm/src/ExtPtfm_MCKF_Types.f90 +++ b/modules/extptfm/src/ExtPtfm_MCKF_Types.f90 @@ -33,11 +33,20 @@ MODULE ExtPtfm_MCKF_Types !--------------------------------------------------------------------------------------------------------------------------------- USE NWTC_Library IMPLICIT NONE +! ========= UserForcingType ======= + TYPE, PUBLIC :: UserForcingType + INTEGER(IntKi) :: nTimeSteps = 0_IntKi !< Number of values of Forces and times [-] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: times !< the time associated with each row of Forces [s] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: Forces !< Prescribed reduced loads, the 3 platform forces (in N) and moments (Nm) acting at the platform reference, associated with everything but the added-mass effects; positive forces are in the direction of motion. [N, N-m] + END TYPE UserForcingType +! ======================= ! ========= ExtPtfm_InitInputType ======= TYPE, PUBLIC :: ExtPtfm_InitInputType CHARACTER(1024) :: InputFile !< Name of the input file; remove if there is no file [-] LOGICAL :: Linearize = .FALSE. !< Flag that tells this module if the glue code wants to linearize. [-] - REAL(ReKi) :: PtfmRefzt = 0.0_ReKi !< Vertical distance from the ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] to the platform reference point [meters] + REAL(ReKi) :: PtfmRefxt = 0.0_ReKi !< Longitudinal distance from PRP to the platform reference point [m] + REAL(ReKi) :: PtfmRefyt = 0.0_ReKi !< Laterl distance from PRP to the platform reference point [m] + REAL(ReKi) :: PtfmRefzt = 0.0_ReKi !< Vertical distance from the ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] to the platform reference point [m] CHARACTER(1024) :: RootName !< RootName for writing output files [-] END TYPE ExtPtfm_InitInputType ! ======================= @@ -45,13 +54,20 @@ MODULE ExtPtfm_MCKF_Types TYPE, PUBLIC :: ExtPtfm_InputFile REAL(DbKi) :: DT = 0.0_R8Ki !< Requested integration time for ElastoDyn [seconds] INTEGER(IntKi) :: IntMethod = 0_IntKi !< Integration Method (1=RK4, 2=AB4, 3=ABM4) [-] - INTEGER(IntKi) :: FileFormat = 0_IntKi !< File format switch [-] + INTEGER(IntKi) :: RBMod = 0_IntKi !< Method for handling rigid-body modes [-] + LOGICAL :: HasRBMode = .false. !< True: has rigid-body modes/floating structure; False: no rigid-body modes [-] CHARACTER(1024) :: RedFile !< File containing reduction inputs [-] CHARACTER(1024) :: RedFileCst !< File containing constant reduction inputs [-] LOGICAL :: EquilStart = .false. !< Flag to determine the equilibrium positions of the CB modes at initialization (first call) [-] INTEGER(IntKi) , DIMENSION(:), ALLOCATABLE :: ActiveCBDOF !< List of active CB DOF [-] REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: InitPosList !< Initial positions of the CB DOFs [-] REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: InitVelList !< Initial velocities of the CB DOFs [-] + LOGICAL :: HasConnections = .false. !< True: has connections; False: no connections [-] + CHARACTER(1024) :: ConnFile !< File containing connection inputs [-] + LOGICAL :: HasUserForcing = .false. !< True: has user forcing; False: no user forcing [-] + CHARACTER(1024) :: ForceFile !< File containing user forcing inputs [-] + LOGICAL :: HasConnForcing = .false. !< True: has user forcing; False: no user forcing [-] + CHARACTER(1024) :: FConnFile !< File containing user forcing inputs [-] LOGICAL :: SumPrint = .false. !< Print summary data to .sum [-] INTEGER(IntKi) :: OutFile = 0_IntKi !< Switch to determine where output will be placed: (1: in module output file only; 2: in glue code output file only; 3: both) [-] LOGICAL :: TabDelim = .false. !< Flag to cause tab-delimited text output (delimited by space otherwise) [-] @@ -93,35 +109,53 @@ MODULE ExtPtfm_MCKF_Types ! ======================= ! ========= ExtPtfm_ParameterType ======= TYPE, PUBLIC :: ExtPtfm_ParameterType + LOGICAL :: hasRBMode = .false. !< True: has rigid-body modes/floating structure; False: no rigid-body modes [-] + INTEGER(IntKi) :: RBMod = 0_IntKi !< Method for handling rigid-body modes [-] REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: Mass !< Mass matrix [kg, kg-m, kg-m^2] REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: Damp !< Damping matrix [-] REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: Stff !< Stiffness matrix [-] - REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: Forces !< Prescribed reduced loads, the 3 platform forces (in N) and moments (Nm) acting at the platform reference, associated with everything but the added-mass effects; positive forces are in the direction of motion. [N, N-m] - REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: times !< the time associated with each row of Forces [s] - REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: AMat !< State matrix A [] - REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: BMat !< State matrix B [] - REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: CMat !< State matrix C [] - REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: DMat !< State matrix D [] - REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: FX !< State constant Fx [] - REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: FY !< Output constant Fy [] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: W0 !< Prescribed constant external loads including selfweight [-] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: WStff !< Self-weight stiffness matrix [-] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: A1Mat !< State matrix A1 [] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: A2Mat !< State matrix A2 [] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: B1Mat !< State matrix B1 [] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: B2Mat !< State matrix B2 [] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: B3Mat !< State matrix B3 [] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: B4Mat !< State matrix B4 [] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: C1Mat !< State matrix C1 [] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: C2Mat !< State matrix C2 [] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: D1Mat !< State matrix D1 [] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: D2Mat !< State matrix D2 [] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: D3Mat !< State matrix D3 [] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: D4Mat !< State matrix D4 [] REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: M11 !< Matrix M11 [] REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: M12 !< Matrix M12 [] - REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: M22 !< Matrix M22 [] REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: M21 !< Matrix M21 [] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: M22 !< Matrix M22 [] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: M22Inv !< Inverse of matrix M22 [] REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: K11 !< Matrix K11 [] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: K12 !< Matrix K12 [] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: K21 !< Matrix K21 [] REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: K22 !< Matrix K22 [] REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: C11 !< Matrix C11 [] REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: C12 !< Matrix C12 [] REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: C22 !< Matrix C22 [] REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: C21 !< Matrix C21 [] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: phiConn !< Mode shapes of connection points [] + REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: PosConn !< Positions of connection points [m] + REAL(ReKi) :: RBMass = 0.0_ReKi !< Rigid-body mass [kg] + REAL(ReKi) , DIMENSION(1:3) :: RBCoG = 0.0_ReKi !< Rigid-body center of mass [m] + REAL(ReKi) , DIMENSION(1:3,1:3) :: RBInertia = 0.0_ReKi !< Rigid-body moment of inertia matrix [kgm^2] REAL(DbKi) :: EP_DeltaT = 0.0_R8Ki !< Time step (for integration of continuous states) [seconds] - INTEGER(IntKi) :: nTimeSteps = 0_IntKi !< Number of values of Forces and times [-] INTEGER(IntKi) :: nCB = 0_IntKi !< Number of CraigBampton modes active [-] - INTEGER(IntKi) :: nCBFull = 0_IntKi !< Totla number of CraigBampton modes given as input [-] + INTEGER(IntKi) :: nCBFull = 0_IntKi !< Total number of CraigBampton modes given as input [-] INTEGER(IntKi) :: nTot = 0_IntKi !< Total number of debrees of freedom (CB + interface) [-] + INTEGER(IntKi) :: nConn = 0_IntKi !< Number of connection points on the structure [-] INTEGER(IntKi) :: NumOuts = 0_IntKi !< Number of values in WriteOutput [-] INTEGER(IntKi) :: IntMethod = 0_IntKi !< Integration Method (1=RK4, 2=AB4, 3=ABM4) [-] INTEGER(IntKi) , DIMENSION(:), ALLOCATABLE :: ActiveCBDOF !< List of active CB DOF [-] + TYPE(UserForcingType) :: UsrModeF !< User-defined modal forcing time series [-] + TYPE(UserForcingType) :: UsrConnF !< User-defined connection forcing time series [-] TYPE(OutParmType) , DIMENSION(:), ALLOCATABLE :: OutParam !< Names and units (and other characteristics) of all requested output parameters [-] INTEGER(IntKi) , DIMENSION(:,:), ALLOCATABLE :: OutParamLinIndx !< Index into WriteOutput for linearization analysis [-] END TYPE ExtPtfm_ParameterType @@ -129,20 +163,38 @@ MODULE ExtPtfm_MCKF_Types ! ========= ExtPtfm_InputType ======= TYPE, PUBLIC :: ExtPtfm_InputType TYPE(MeshType) :: PtfmMesh !< Displacements at the platform reference point [-] + TYPE(MeshType) :: ConnLdMesh !< Load mesh for connection points on the structure [-] + TYPE(MeshType) :: FBMesh !< Load mesh for rigid-body DOF [-] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: Fm !< External forcing to the internal elastic modes [-] END TYPE ExtPtfm_InputType ! ======================= ! ========= ExtPtfm_OutputType ======= TYPE, PUBLIC :: ExtPtfm_OutputType TYPE(MeshType) :: PtfmMesh !< Loads at the platform reference point [-] + TYPE(MeshType) :: ConnMesh !< Motion mesh for connection points on the structure [-] + TYPE(MeshType) :: FBMesh !< Motion mesh for rigid-body DOF [-] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: qm !< Displacement of internal elastic modes [-] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: qmdot !< Velocity of internal elastic modes [-] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: qmdotdot !< Acceleration of internal elastic modes [-] REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: WriteOutput !< Example of data to be written to an output file [s,-] END TYPE ExtPtfm_OutputType ! ======================= ! ========= ExtPtfm_MiscVarType ======= TYPE, PUBLIC :: ExtPtfm_MiscVarType REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: xFlat !< Flattened vector of states [-] - REAL(ReKi) , DIMENSION(1:18) :: uFlat = 0.0_ReKi !< Flattened vector of inputs [-] + REAL(R8Ki) , DIMENSION(1:18) :: uFlat = 0.0_R8Ki !< Flattened vector of inputs [-] REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: F_at_t !< The 6 interface loads and Craig-Bampton loads at t (force and moment acting at the platform reference (no added-mass effects); positive forces are in the direction of motion). [N, N-m] - INTEGER(IntKi) :: Indx = 0_IntKi !< Index into times, to speed up interpolation [-] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: FConn_at_t !< The 3DOF forces at each connection point defined by the user [N] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: F1 !< Interface/rigid-body mode forcing [-] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: F2 !< Internal elastic mode forcing [-] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: Weight !< Structure self-weight [-] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: FConn !< Connection forces [N] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: FConnCB !< Modal forces from connections [] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: DConn !< Connection point displacement [] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: VConn !< Connection point velocity [] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: AConn !< Connection point acceleration [] + INTEGER(IntKi) :: Indx_UsrModeF = 0_IntKi !< Index into times, to speed up interpolation [-] + INTEGER(IntKi) :: Indx_UsrConnF = 0_IntKi !< Index into times, to speed up interpolation [-] LOGICAL :: EquilStart = .false. !< Flag to determine the equilibrium position of the CB DOF at initialization (first call) [-] REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: AllOuts !< An array holding the value of all of the calculated (not only selected) output channels [see OutListParameters.xlsx spreadsheet] TYPE(ModJacType) :: Jac !< Data structure for calculating module Jacobians [-] @@ -155,11 +207,96 @@ MODULE ExtPtfm_MCKF_Types integer(IntKi), public, parameter :: ExtPtfm_x_qm = 1 ! ExtPtfm%qm integer(IntKi), public, parameter :: ExtPtfm_x_qmdot = 2 ! ExtPtfm%qmdot integer(IntKi), public, parameter :: ExtPtfm_u_PtfmMesh = 3 ! ExtPtfm%PtfmMesh - integer(IntKi), public, parameter :: ExtPtfm_y_PtfmMesh = 4 ! ExtPtfm%PtfmMesh - integer(IntKi), public, parameter :: ExtPtfm_y_WriteOutput = 5 ! ExtPtfm%WriteOutput + integer(IntKi), public, parameter :: ExtPtfm_u_ConnLdMesh = 4 ! ExtPtfm%ConnLdMesh + integer(IntKi), public, parameter :: ExtPtfm_u_FBMesh = 5 ! ExtPtfm%FBMesh + integer(IntKi), public, parameter :: ExtPtfm_u_Fm = 6 ! ExtPtfm%Fm + integer(IntKi), public, parameter :: ExtPtfm_y_PtfmMesh = 7 ! ExtPtfm%PtfmMesh + integer(IntKi), public, parameter :: ExtPtfm_y_ConnMesh = 8 ! ExtPtfm%ConnMesh + integer(IntKi), public, parameter :: ExtPtfm_y_FBMesh = 9 ! ExtPtfm%FBMesh + integer(IntKi), public, parameter :: ExtPtfm_y_qm = 10 ! ExtPtfm%qm + integer(IntKi), public, parameter :: ExtPtfm_y_qmdot = 11 ! ExtPtfm%qmdot + integer(IntKi), public, parameter :: ExtPtfm_y_qmdotdot = 12 ! ExtPtfm%qmdotdot + integer(IntKi), public, parameter :: ExtPtfm_y_WriteOutput = 13 ! ExtPtfm%WriteOutput contains +subroutine ExtPtfm_CopyUserForcingType(SrcUserForcingTypeData, DstUserForcingTypeData, CtrlCode, ErrStat, ErrMsg) + type(UserForcingType), intent(in) :: SrcUserForcingTypeData + type(UserForcingType), intent(inout) :: DstUserForcingTypeData + integer(IntKi), intent(in ) :: CtrlCode + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + integer(B4Ki) :: LB(2), UB(2) + integer(IntKi) :: ErrStat2 + character(*), parameter :: RoutineName = 'ExtPtfm_CopyUserForcingType' + ErrStat = ErrID_None + ErrMsg = '' + DstUserForcingTypeData%nTimeSteps = SrcUserForcingTypeData%nTimeSteps + if (allocated(SrcUserForcingTypeData%times)) then + LB(1:1) = lbound(SrcUserForcingTypeData%times) + UB(1:1) = ubound(SrcUserForcingTypeData%times) + if (.not. allocated(DstUserForcingTypeData%times)) then + allocate(DstUserForcingTypeData%times(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstUserForcingTypeData%times.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstUserForcingTypeData%times = SrcUserForcingTypeData%times + end if + if (allocated(SrcUserForcingTypeData%Forces)) then + LB(1:2) = lbound(SrcUserForcingTypeData%Forces) + UB(1:2) = ubound(SrcUserForcingTypeData%Forces) + if (.not. allocated(DstUserForcingTypeData%Forces)) then + allocate(DstUserForcingTypeData%Forces(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstUserForcingTypeData%Forces.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstUserForcingTypeData%Forces = SrcUserForcingTypeData%Forces + end if +end subroutine + +subroutine ExtPtfm_DestroyUserForcingType(UserForcingTypeData, ErrStat, ErrMsg) + type(UserForcingType), intent(inout) :: UserForcingTypeData + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + character(*), parameter :: RoutineName = 'ExtPtfm_DestroyUserForcingType' + ErrStat = ErrID_None + ErrMsg = '' + if (allocated(UserForcingTypeData%times)) then + deallocate(UserForcingTypeData%times) + end if + if (allocated(UserForcingTypeData%Forces)) then + deallocate(UserForcingTypeData%Forces) + end if +end subroutine + +subroutine ExtPtfm_PackUserForcingType(RF, Indata) + type(RegFile), intent(inout) :: RF + type(UserForcingType), intent(in) :: InData + character(*), parameter :: RoutineName = 'ExtPtfm_PackUserForcingType' + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%nTimeSteps) + call RegPackAlloc(RF, InData%times) + call RegPackAlloc(RF, InData%Forces) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine ExtPtfm_UnPackUserForcingType(RF, OutData) + type(RegFile), intent(inout) :: RF + type(UserForcingType), intent(inout) :: OutData + character(*), parameter :: RoutineName = 'ExtPtfm_UnPackUserForcingType' + integer(B4Ki) :: LB(2), UB(2) + integer(IntKi) :: stat + logical :: IsAllocAssoc + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%nTimeSteps); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%times); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Forces); if (RegCheckErr(RF, RoutineName)) return +end subroutine + subroutine ExtPtfm_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) type(ExtPtfm_InitInputType), intent(in) :: SrcInitInputData type(ExtPtfm_InitInputType), intent(inout) :: DstInitInputData @@ -171,6 +308,8 @@ subroutine ExtPtfm_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, E ErrMsg = '' DstInitInputData%InputFile = SrcInitInputData%InputFile DstInitInputData%Linearize = SrcInitInputData%Linearize + DstInitInputData%PtfmRefxt = SrcInitInputData%PtfmRefxt + DstInitInputData%PtfmRefyt = SrcInitInputData%PtfmRefyt DstInitInputData%PtfmRefzt = SrcInitInputData%PtfmRefzt DstInitInputData%RootName = SrcInitInputData%RootName end subroutine @@ -191,6 +330,8 @@ subroutine ExtPtfm_PackInitInput(RF, Indata) if (RF%ErrStat >= AbortErrLev) return call RegPack(RF, InData%InputFile) call RegPack(RF, InData%Linearize) + call RegPack(RF, InData%PtfmRefxt) + call RegPack(RF, InData%PtfmRefyt) call RegPack(RF, InData%PtfmRefzt) call RegPack(RF, InData%RootName) if (RegCheckErr(RF, RoutineName)) return @@ -203,6 +344,8 @@ subroutine ExtPtfm_UnPackInitInput(RF, OutData) if (RF%ErrStat /= ErrID_None) return call RegUnpack(RF, OutData%InputFile); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%Linearize); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmRefxt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmRefyt); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%PtfmRefzt); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return end subroutine @@ -220,7 +363,8 @@ subroutine ExtPtfm_CopyInputFile(SrcInputFileData, DstInputFileData, CtrlCode, E ErrMsg = '' DstInputFileData%DT = SrcInputFileData%DT DstInputFileData%IntMethod = SrcInputFileData%IntMethod - DstInputFileData%FileFormat = SrcInputFileData%FileFormat + DstInputFileData%RBMod = SrcInputFileData%RBMod + DstInputFileData%HasRBMode = SrcInputFileData%HasRBMode DstInputFileData%RedFile = SrcInputFileData%RedFile DstInputFileData%RedFileCst = SrcInputFileData%RedFileCst DstInputFileData%EquilStart = SrcInputFileData%EquilStart @@ -260,6 +404,12 @@ subroutine ExtPtfm_CopyInputFile(SrcInputFileData, DstInputFileData, CtrlCode, E end if DstInputFileData%InitVelList = SrcInputFileData%InitVelList end if + DstInputFileData%HasConnections = SrcInputFileData%HasConnections + DstInputFileData%ConnFile = SrcInputFileData%ConnFile + DstInputFileData%HasUserForcing = SrcInputFileData%HasUserForcing + DstInputFileData%ForceFile = SrcInputFileData%ForceFile + DstInputFileData%HasConnForcing = SrcInputFileData%HasConnForcing + DstInputFileData%FConnFile = SrcInputFileData%FConnFile DstInputFileData%SumPrint = SrcInputFileData%SumPrint DstInputFileData%OutFile = SrcInputFileData%OutFile DstInputFileData%TabDelim = SrcInputFileData%TabDelim @@ -308,13 +458,20 @@ subroutine ExtPtfm_PackInputFile(RF, Indata) if (RF%ErrStat >= AbortErrLev) return call RegPack(RF, InData%DT) call RegPack(RF, InData%IntMethod) - call RegPack(RF, InData%FileFormat) + call RegPack(RF, InData%RBMod) + call RegPack(RF, InData%HasRBMode) call RegPack(RF, InData%RedFile) call RegPack(RF, InData%RedFileCst) call RegPack(RF, InData%EquilStart) call RegPackAlloc(RF, InData%ActiveCBDOF) call RegPackAlloc(RF, InData%InitPosList) call RegPackAlloc(RF, InData%InitVelList) + call RegPack(RF, InData%HasConnections) + call RegPack(RF, InData%ConnFile) + call RegPack(RF, InData%HasUserForcing) + call RegPack(RF, InData%ForceFile) + call RegPack(RF, InData%HasConnForcing) + call RegPack(RF, InData%FConnFile) call RegPack(RF, InData%SumPrint) call RegPack(RF, InData%OutFile) call RegPack(RF, InData%TabDelim) @@ -335,13 +492,20 @@ subroutine ExtPtfm_UnPackInputFile(RF, OutData) if (RF%ErrStat /= ErrID_None) return call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%IntMethod); if (RegCheckErr(RF, RoutineName)) return - call RegUnpack(RF, OutData%FileFormat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RBMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HasRBMode); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%RedFile); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%RedFileCst); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%EquilStart); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%ActiveCBDOF); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%InitPosList); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%InitVelList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HasConnections); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ConnFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HasUserForcing); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ForceFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HasConnForcing); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FConnFile); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%SumPrint); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%OutFile); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%TabDelim); if (RegCheckErr(RF, RoutineName)) return @@ -704,6 +868,8 @@ subroutine ExtPtfm_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrM character(*), parameter :: RoutineName = 'ExtPtfm_CopyParam' ErrStat = ErrID_None ErrMsg = '' + DstParamData%hasRBMode = SrcParamData%hasRBMode + DstParamData%RBMod = SrcParamData%RBMod if (allocated(SrcParamData%Mass)) then LB(1:2) = lbound(SrcParamData%Mass) UB(1:2) = ubound(SrcParamData%Mass) @@ -740,101 +906,173 @@ subroutine ExtPtfm_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrM end if DstParamData%Stff = SrcParamData%Stff end if - if (allocated(SrcParamData%Forces)) then - LB(1:2) = lbound(SrcParamData%Forces) - UB(1:2) = ubound(SrcParamData%Forces) - if (.not. allocated(DstParamData%Forces)) then - allocate(DstParamData%Forces(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (allocated(SrcParamData%W0)) then + LB(1:1) = lbound(SrcParamData%W0) + UB(1:1) = ubound(SrcParamData%W0) + if (.not. allocated(DstParamData%W0)) then + allocate(DstParamData%W0(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%W0.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstParamData%W0 = SrcParamData%W0 + end if + if (allocated(SrcParamData%WStff)) then + LB(1:2) = lbound(SrcParamData%WStff) + UB(1:2) = ubound(SrcParamData%WStff) + if (.not. allocated(DstParamData%WStff)) then + allocate(DstParamData%WStff(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%WStff.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstParamData%WStff = SrcParamData%WStff + end if + if (allocated(SrcParamData%A1Mat)) then + LB(1:2) = lbound(SrcParamData%A1Mat) + UB(1:2) = ubound(SrcParamData%A1Mat) + if (.not. allocated(DstParamData%A1Mat)) then + allocate(DstParamData%A1Mat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%A1Mat.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstParamData%A1Mat = SrcParamData%A1Mat + end if + if (allocated(SrcParamData%A2Mat)) then + LB(1:2) = lbound(SrcParamData%A2Mat) + UB(1:2) = ubound(SrcParamData%A2Mat) + if (.not. allocated(DstParamData%A2Mat)) then + allocate(DstParamData%A2Mat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%Forces.', ErrStat, ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%A2Mat.', ErrStat, ErrMsg, RoutineName) return end if end if - DstParamData%Forces = SrcParamData%Forces + DstParamData%A2Mat = SrcParamData%A2Mat end if - if (allocated(SrcParamData%times)) then - LB(1:1) = lbound(SrcParamData%times) - UB(1:1) = ubound(SrcParamData%times) - if (.not. allocated(DstParamData%times)) then - allocate(DstParamData%times(LB(1):UB(1)), stat=ErrStat2) + if (allocated(SrcParamData%B1Mat)) then + LB(1:2) = lbound(SrcParamData%B1Mat) + UB(1:2) = ubound(SrcParamData%B1Mat) + if (.not. allocated(DstParamData%B1Mat)) then + allocate(DstParamData%B1Mat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%times.', ErrStat, ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%B1Mat.', ErrStat, ErrMsg, RoutineName) return end if end if - DstParamData%times = SrcParamData%times + DstParamData%B1Mat = SrcParamData%B1Mat end if - if (allocated(SrcParamData%AMat)) then - LB(1:2) = lbound(SrcParamData%AMat) - UB(1:2) = ubound(SrcParamData%AMat) - if (.not. allocated(DstParamData%AMat)) then - allocate(DstParamData%AMat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (allocated(SrcParamData%B2Mat)) then + LB(1:2) = lbound(SrcParamData%B2Mat) + UB(1:2) = ubound(SrcParamData%B2Mat) + if (.not. allocated(DstParamData%B2Mat)) then + allocate(DstParamData%B2Mat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%AMat.', ErrStat, ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%B2Mat.', ErrStat, ErrMsg, RoutineName) return end if end if - DstParamData%AMat = SrcParamData%AMat + DstParamData%B2Mat = SrcParamData%B2Mat end if - if (allocated(SrcParamData%BMat)) then - LB(1:2) = lbound(SrcParamData%BMat) - UB(1:2) = ubound(SrcParamData%BMat) - if (.not. allocated(DstParamData%BMat)) then - allocate(DstParamData%BMat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (allocated(SrcParamData%B3Mat)) then + LB(1:2) = lbound(SrcParamData%B3Mat) + UB(1:2) = ubound(SrcParamData%B3Mat) + if (.not. allocated(DstParamData%B3Mat)) then + allocate(DstParamData%B3Mat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%BMat.', ErrStat, ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%B3Mat.', ErrStat, ErrMsg, RoutineName) return end if end if - DstParamData%BMat = SrcParamData%BMat + DstParamData%B3Mat = SrcParamData%B3Mat end if - if (allocated(SrcParamData%CMat)) then - LB(1:2) = lbound(SrcParamData%CMat) - UB(1:2) = ubound(SrcParamData%CMat) - if (.not. allocated(DstParamData%CMat)) then - allocate(DstParamData%CMat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (allocated(SrcParamData%B4Mat)) then + LB(1:2) = lbound(SrcParamData%B4Mat) + UB(1:2) = ubound(SrcParamData%B4Mat) + if (.not. allocated(DstParamData%B4Mat)) then + allocate(DstParamData%B4Mat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%CMat.', ErrStat, ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%B4Mat.', ErrStat, ErrMsg, RoutineName) return end if end if - DstParamData%CMat = SrcParamData%CMat + DstParamData%B4Mat = SrcParamData%B4Mat end if - if (allocated(SrcParamData%DMat)) then - LB(1:2) = lbound(SrcParamData%DMat) - UB(1:2) = ubound(SrcParamData%DMat) - if (.not. allocated(DstParamData%DMat)) then - allocate(DstParamData%DMat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (allocated(SrcParamData%C1Mat)) then + LB(1:2) = lbound(SrcParamData%C1Mat) + UB(1:2) = ubound(SrcParamData%C1Mat) + if (.not. allocated(DstParamData%C1Mat)) then + allocate(DstParamData%C1Mat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%DMat.', ErrStat, ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%C1Mat.', ErrStat, ErrMsg, RoutineName) return end if end if - DstParamData%DMat = SrcParamData%DMat + DstParamData%C1Mat = SrcParamData%C1Mat end if - if (allocated(SrcParamData%FX)) then - LB(1:1) = lbound(SrcParamData%FX) - UB(1:1) = ubound(SrcParamData%FX) - if (.not. allocated(DstParamData%FX)) then - allocate(DstParamData%FX(LB(1):UB(1)), stat=ErrStat2) + if (allocated(SrcParamData%C2Mat)) then + LB(1:2) = lbound(SrcParamData%C2Mat) + UB(1:2) = ubound(SrcParamData%C2Mat) + if (.not. allocated(DstParamData%C2Mat)) then + allocate(DstParamData%C2Mat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%FX.', ErrStat, ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%C2Mat.', ErrStat, ErrMsg, RoutineName) return end if end if - DstParamData%FX = SrcParamData%FX + DstParamData%C2Mat = SrcParamData%C2Mat end if - if (allocated(SrcParamData%FY)) then - LB(1:1) = lbound(SrcParamData%FY) - UB(1:1) = ubound(SrcParamData%FY) - if (.not. allocated(DstParamData%FY)) then - allocate(DstParamData%FY(LB(1):UB(1)), stat=ErrStat2) + if (allocated(SrcParamData%D1Mat)) then + LB(1:2) = lbound(SrcParamData%D1Mat) + UB(1:2) = ubound(SrcParamData%D1Mat) + if (.not. allocated(DstParamData%D1Mat)) then + allocate(DstParamData%D1Mat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%FY.', ErrStat, ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%D1Mat.', ErrStat, ErrMsg, RoutineName) return end if end if - DstParamData%FY = SrcParamData%FY + DstParamData%D1Mat = SrcParamData%D1Mat + end if + if (allocated(SrcParamData%D2Mat)) then + LB(1:2) = lbound(SrcParamData%D2Mat) + UB(1:2) = ubound(SrcParamData%D2Mat) + if (.not. allocated(DstParamData%D2Mat)) then + allocate(DstParamData%D2Mat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%D2Mat.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstParamData%D2Mat = SrcParamData%D2Mat + end if + if (allocated(SrcParamData%D3Mat)) then + LB(1:2) = lbound(SrcParamData%D3Mat) + UB(1:2) = ubound(SrcParamData%D3Mat) + if (.not. allocated(DstParamData%D3Mat)) then + allocate(DstParamData%D3Mat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%D3Mat.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstParamData%D3Mat = SrcParamData%D3Mat + end if + if (allocated(SrcParamData%D4Mat)) then + LB(1:2) = lbound(SrcParamData%D4Mat) + UB(1:2) = ubound(SrcParamData%D4Mat) + if (.not. allocated(DstParamData%D4Mat)) then + allocate(DstParamData%D4Mat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%D4Mat.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstParamData%D4Mat = SrcParamData%D4Mat end if if (allocated(SrcParamData%M11)) then LB(1:2) = lbound(SrcParamData%M11) @@ -860,6 +1098,18 @@ subroutine ExtPtfm_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrM end if DstParamData%M12 = SrcParamData%M12 end if + if (allocated(SrcParamData%M21)) then + LB(1:2) = lbound(SrcParamData%M21) + UB(1:2) = ubound(SrcParamData%M21) + if (.not. allocated(DstParamData%M21)) then + allocate(DstParamData%M21(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%M21.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstParamData%M21 = SrcParamData%M21 + end if if (allocated(SrcParamData%M22)) then LB(1:2) = lbound(SrcParamData%M22) UB(1:2) = ubound(SrcParamData%M22) @@ -872,17 +1122,17 @@ subroutine ExtPtfm_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrM end if DstParamData%M22 = SrcParamData%M22 end if - if (allocated(SrcParamData%M21)) then - LB(1:2) = lbound(SrcParamData%M21) - UB(1:2) = ubound(SrcParamData%M21) - if (.not. allocated(DstParamData%M21)) then - allocate(DstParamData%M21(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (allocated(SrcParamData%M22Inv)) then + LB(1:2) = lbound(SrcParamData%M22Inv) + UB(1:2) = ubound(SrcParamData%M22Inv) + if (.not. allocated(DstParamData%M22Inv)) then + allocate(DstParamData%M22Inv(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%M21.', ErrStat, ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%M22Inv.', ErrStat, ErrMsg, RoutineName) return end if end if - DstParamData%M21 = SrcParamData%M21 + DstParamData%M22Inv = SrcParamData%M22Inv end if if (allocated(SrcParamData%K11)) then LB(1:2) = lbound(SrcParamData%K11) @@ -896,6 +1146,30 @@ subroutine ExtPtfm_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrM end if DstParamData%K11 = SrcParamData%K11 end if + if (allocated(SrcParamData%K12)) then + LB(1:2) = lbound(SrcParamData%K12) + UB(1:2) = ubound(SrcParamData%K12) + if (.not. allocated(DstParamData%K12)) then + allocate(DstParamData%K12(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%K12.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstParamData%K12 = SrcParamData%K12 + end if + if (allocated(SrcParamData%K21)) then + LB(1:2) = lbound(SrcParamData%K21) + UB(1:2) = ubound(SrcParamData%K21) + if (.not. allocated(DstParamData%K21)) then + allocate(DstParamData%K21(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%K21.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstParamData%K21 = SrcParamData%K21 + end if if (allocated(SrcParamData%K22)) then LB(1:2) = lbound(SrcParamData%K22) UB(1:2) = ubound(SrcParamData%K22) @@ -956,11 +1230,38 @@ subroutine ExtPtfm_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrM end if DstParamData%C21 = SrcParamData%C21 end if + if (allocated(SrcParamData%phiConn)) then + LB(1:2) = lbound(SrcParamData%phiConn) + UB(1:2) = ubound(SrcParamData%phiConn) + if (.not. allocated(DstParamData%phiConn)) then + allocate(DstParamData%phiConn(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%phiConn.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstParamData%phiConn = SrcParamData%phiConn + end if + if (allocated(SrcParamData%PosConn)) then + LB(1:2) = lbound(SrcParamData%PosConn) + UB(1:2) = ubound(SrcParamData%PosConn) + if (.not. allocated(DstParamData%PosConn)) then + allocate(DstParamData%PosConn(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%PosConn.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstParamData%PosConn = SrcParamData%PosConn + end if + DstParamData%RBMass = SrcParamData%RBMass + DstParamData%RBCoG = SrcParamData%RBCoG + DstParamData%RBInertia = SrcParamData%RBInertia DstParamData%EP_DeltaT = SrcParamData%EP_DeltaT - DstParamData%nTimeSteps = SrcParamData%nTimeSteps DstParamData%nCB = SrcParamData%nCB DstParamData%nCBFull = SrcParamData%nCBFull DstParamData%nTot = SrcParamData%nTot + DstParamData%nConn = SrcParamData%nConn DstParamData%NumOuts = SrcParamData%NumOuts DstParamData%IntMethod = SrcParamData%IntMethod if (allocated(SrcParamData%ActiveCBDOF)) then @@ -975,6 +1276,12 @@ subroutine ExtPtfm_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrM end if DstParamData%ActiveCBDOF = SrcParamData%ActiveCBDOF end if + call ExtPtfm_CopyUserForcingType(SrcParamData%UsrModeF, DstParamData%UsrModeF, CtrlCode, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (ErrStat >= AbortErrLev) return + call ExtPtfm_CopyUserForcingType(SrcParamData%UsrConnF, DstParamData%UsrConnF, CtrlCode, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (ErrStat >= AbortErrLev) return if (allocated(SrcParamData%OutParam)) then LB(1:1) = lbound(SrcParamData%OutParam) UB(1:1) = ubound(SrcParamData%OutParam) @@ -1025,29 +1332,47 @@ subroutine ExtPtfm_DestroyParam(ParamData, ErrStat, ErrMsg) if (allocated(ParamData%Stff)) then deallocate(ParamData%Stff) end if - if (allocated(ParamData%Forces)) then - deallocate(ParamData%Forces) + if (allocated(ParamData%W0)) then + deallocate(ParamData%W0) + end if + if (allocated(ParamData%WStff)) then + deallocate(ParamData%WStff) end if - if (allocated(ParamData%times)) then - deallocate(ParamData%times) + if (allocated(ParamData%A1Mat)) then + deallocate(ParamData%A1Mat) end if - if (allocated(ParamData%AMat)) then - deallocate(ParamData%AMat) + if (allocated(ParamData%A2Mat)) then + deallocate(ParamData%A2Mat) end if - if (allocated(ParamData%BMat)) then - deallocate(ParamData%BMat) + if (allocated(ParamData%B1Mat)) then + deallocate(ParamData%B1Mat) end if - if (allocated(ParamData%CMat)) then - deallocate(ParamData%CMat) + if (allocated(ParamData%B2Mat)) then + deallocate(ParamData%B2Mat) end if - if (allocated(ParamData%DMat)) then - deallocate(ParamData%DMat) + if (allocated(ParamData%B3Mat)) then + deallocate(ParamData%B3Mat) end if - if (allocated(ParamData%FX)) then - deallocate(ParamData%FX) + if (allocated(ParamData%B4Mat)) then + deallocate(ParamData%B4Mat) end if - if (allocated(ParamData%FY)) then - deallocate(ParamData%FY) + if (allocated(ParamData%C1Mat)) then + deallocate(ParamData%C1Mat) + end if + if (allocated(ParamData%C2Mat)) then + deallocate(ParamData%C2Mat) + end if + if (allocated(ParamData%D1Mat)) then + deallocate(ParamData%D1Mat) + end if + if (allocated(ParamData%D2Mat)) then + deallocate(ParamData%D2Mat) + end if + if (allocated(ParamData%D3Mat)) then + deallocate(ParamData%D3Mat) + end if + if (allocated(ParamData%D4Mat)) then + deallocate(ParamData%D4Mat) end if if (allocated(ParamData%M11)) then deallocate(ParamData%M11) @@ -1055,15 +1380,24 @@ subroutine ExtPtfm_DestroyParam(ParamData, ErrStat, ErrMsg) if (allocated(ParamData%M12)) then deallocate(ParamData%M12) end if + if (allocated(ParamData%M21)) then + deallocate(ParamData%M21) + end if if (allocated(ParamData%M22)) then deallocate(ParamData%M22) end if - if (allocated(ParamData%M21)) then - deallocate(ParamData%M21) + if (allocated(ParamData%M22Inv)) then + deallocate(ParamData%M22Inv) end if if (allocated(ParamData%K11)) then deallocate(ParamData%K11) end if + if (allocated(ParamData%K12)) then + deallocate(ParamData%K12) + end if + if (allocated(ParamData%K21)) then + deallocate(ParamData%K21) + end if if (allocated(ParamData%K22)) then deallocate(ParamData%K22) end if @@ -1079,9 +1413,19 @@ subroutine ExtPtfm_DestroyParam(ParamData, ErrStat, ErrMsg) if (allocated(ParamData%C21)) then deallocate(ParamData%C21) end if + if (allocated(ParamData%phiConn)) then + deallocate(ParamData%phiConn) + end if + if (allocated(ParamData%PosConn)) then + deallocate(ParamData%PosConn) + end if if (allocated(ParamData%ActiveCBDOF)) then deallocate(ParamData%ActiveCBDOF) end if + call ExtPtfm_DestroyUserForcingType(ParamData%UsrModeF, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call ExtPtfm_DestroyUserForcingType(ParamData%UsrConnF, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) if (allocated(ParamData%OutParam)) then LB(1:1) = lbound(ParamData%OutParam) UB(1:1) = ubound(ParamData%OutParam) @@ -1103,35 +1447,53 @@ subroutine ExtPtfm_PackParam(RF, Indata) integer(B4Ki) :: i1, i2 integer(B4Ki) :: LB(2), UB(2) if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%hasRBMode) + call RegPack(RF, InData%RBMod) call RegPackAlloc(RF, InData%Mass) call RegPackAlloc(RF, InData%Damp) call RegPackAlloc(RF, InData%Stff) - call RegPackAlloc(RF, InData%Forces) - call RegPackAlloc(RF, InData%times) - call RegPackAlloc(RF, InData%AMat) - call RegPackAlloc(RF, InData%BMat) - call RegPackAlloc(RF, InData%CMat) - call RegPackAlloc(RF, InData%DMat) - call RegPackAlloc(RF, InData%FX) - call RegPackAlloc(RF, InData%FY) + call RegPackAlloc(RF, InData%W0) + call RegPackAlloc(RF, InData%WStff) + call RegPackAlloc(RF, InData%A1Mat) + call RegPackAlloc(RF, InData%A2Mat) + call RegPackAlloc(RF, InData%B1Mat) + call RegPackAlloc(RF, InData%B2Mat) + call RegPackAlloc(RF, InData%B3Mat) + call RegPackAlloc(RF, InData%B4Mat) + call RegPackAlloc(RF, InData%C1Mat) + call RegPackAlloc(RF, InData%C2Mat) + call RegPackAlloc(RF, InData%D1Mat) + call RegPackAlloc(RF, InData%D2Mat) + call RegPackAlloc(RF, InData%D3Mat) + call RegPackAlloc(RF, InData%D4Mat) call RegPackAlloc(RF, InData%M11) call RegPackAlloc(RF, InData%M12) - call RegPackAlloc(RF, InData%M22) call RegPackAlloc(RF, InData%M21) + call RegPackAlloc(RF, InData%M22) + call RegPackAlloc(RF, InData%M22Inv) call RegPackAlloc(RF, InData%K11) + call RegPackAlloc(RF, InData%K12) + call RegPackAlloc(RF, InData%K21) call RegPackAlloc(RF, InData%K22) call RegPackAlloc(RF, InData%C11) call RegPackAlloc(RF, InData%C12) call RegPackAlloc(RF, InData%C22) call RegPackAlloc(RF, InData%C21) + call RegPackAlloc(RF, InData%phiConn) + call RegPackAlloc(RF, InData%PosConn) + call RegPack(RF, InData%RBMass) + call RegPack(RF, InData%RBCoG) + call RegPack(RF, InData%RBInertia) call RegPack(RF, InData%EP_DeltaT) - call RegPack(RF, InData%nTimeSteps) call RegPack(RF, InData%nCB) call RegPack(RF, InData%nCBFull) call RegPack(RF, InData%nTot) + call RegPack(RF, InData%nConn) call RegPack(RF, InData%NumOuts) call RegPack(RF, InData%IntMethod) call RegPackAlloc(RF, InData%ActiveCBDOF) + call ExtPtfm_PackUserForcingType(RF, InData%UsrModeF) + call ExtPtfm_PackUserForcingType(RF, InData%UsrConnF) call RegPack(RF, allocated(InData%OutParam)) if (allocated(InData%OutParam)) then call RegPackBounds(RF, 1, lbound(InData%OutParam), ubound(InData%OutParam)) @@ -1154,35 +1516,53 @@ subroutine ExtPtfm_UnPackParam(RF, OutData) integer(IntKi) :: stat logical :: IsAllocAssoc if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%hasRBMode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RBMod); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%Mass); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%Damp); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%Stff); if (RegCheckErr(RF, RoutineName)) return - call RegUnpackAlloc(RF, OutData%Forces); if (RegCheckErr(RF, RoutineName)) return - call RegUnpackAlloc(RF, OutData%times); if (RegCheckErr(RF, RoutineName)) return - call RegUnpackAlloc(RF, OutData%AMat); if (RegCheckErr(RF, RoutineName)) return - call RegUnpackAlloc(RF, OutData%BMat); if (RegCheckErr(RF, RoutineName)) return - call RegUnpackAlloc(RF, OutData%CMat); if (RegCheckErr(RF, RoutineName)) return - call RegUnpackAlloc(RF, OutData%DMat); if (RegCheckErr(RF, RoutineName)) return - call RegUnpackAlloc(RF, OutData%FX); if (RegCheckErr(RF, RoutineName)) return - call RegUnpackAlloc(RF, OutData%FY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%W0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WStff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%A1Mat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%A2Mat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%B1Mat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%B2Mat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%B3Mat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%B4Mat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%C1Mat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%C2Mat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%D1Mat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%D2Mat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%D3Mat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%D4Mat); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%M11); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%M12); if (RegCheckErr(RF, RoutineName)) return - call RegUnpackAlloc(RF, OutData%M22); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%M21); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%M22); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%M22Inv); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%K11); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%K12); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%K21); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%K22); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%C11); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%C12); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%C22); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%C21); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%phiConn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PosConn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RBMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RBCoG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RBInertia); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%EP_DeltaT); if (RegCheckErr(RF, RoutineName)) return - call RegUnpack(RF, OutData%nTimeSteps); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%nCB); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%nCBFull); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%nTot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nConn); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%IntMethod); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%ActiveCBDOF); if (RegCheckErr(RF, RoutineName)) return + call ExtPtfm_UnpackUserForcingType(RF, OutData%UsrModeF) ! UsrModeF + call ExtPtfm_UnpackUserForcingType(RF, OutData%UsrConnF) ! UsrConnF if (allocated(OutData%OutParam)) deallocate(OutData%OutParam) call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then @@ -1205,6 +1585,7 @@ subroutine ExtPtfm_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrM integer(IntKi), intent(in ) :: CtrlCode integer(IntKi), intent( out) :: ErrStat character(*), intent( out) :: ErrMsg + integer(B4Ki) :: LB(1), UB(1) integer(IntKi) :: ErrStat2 character(ErrMsgLen) :: ErrMsg2 character(*), parameter :: RoutineName = 'ExtPtfm_CopyInput' @@ -1213,6 +1594,24 @@ subroutine ExtPtfm_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrM call MeshCopy(SrcInputData%PtfmMesh, DstInputData%PtfmMesh, CtrlCode, ErrStat2, ErrMsg2 ) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) if (ErrStat >= AbortErrLev) return + call MeshCopy(SrcInputData%ConnLdMesh, DstInputData%ConnLdMesh, CtrlCode, ErrStat2, ErrMsg2 ) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (ErrStat >= AbortErrLev) return + call MeshCopy(SrcInputData%FBMesh, DstInputData%FBMesh, CtrlCode, ErrStat2, ErrMsg2 ) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (ErrStat >= AbortErrLev) return + if (allocated(SrcInputData%Fm)) then + LB(1:1) = lbound(SrcInputData%Fm) + UB(1:1) = ubound(SrcInputData%Fm) + if (.not. allocated(DstInputData%Fm)) then + allocate(DstInputData%Fm(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstInputData%Fm.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstInputData%Fm = SrcInputData%Fm + end if end subroutine subroutine ExtPtfm_DestroyInput(InputData, ErrStat, ErrMsg) @@ -1226,6 +1625,13 @@ subroutine ExtPtfm_DestroyInput(InputData, ErrStat, ErrMsg) ErrMsg = '' call MeshDestroy( InputData%PtfmMesh, ErrStat2, ErrMsg2) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call MeshDestroy( InputData%ConnLdMesh, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call MeshDestroy( InputData%FBMesh, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (allocated(InputData%Fm)) then + deallocate(InputData%Fm) + end if end subroutine subroutine ExtPtfm_PackInput(RF, Indata) @@ -1234,6 +1640,9 @@ subroutine ExtPtfm_PackInput(RF, Indata) character(*), parameter :: RoutineName = 'ExtPtfm_PackInput' if (RF%ErrStat >= AbortErrLev) return call MeshPack(RF, InData%PtfmMesh) + call MeshPack(RF, InData%ConnLdMesh) + call MeshPack(RF, InData%FBMesh) + call RegPackAlloc(RF, InData%Fm) if (RegCheckErr(RF, RoutineName)) return end subroutine @@ -1241,8 +1650,14 @@ subroutine ExtPtfm_UnPackInput(RF, OutData) type(RegFile), intent(inout) :: RF type(ExtPtfm_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtPtfm_UnPackInput' + integer(B4Ki) :: LB(1), UB(1) + integer(IntKi) :: stat + logical :: IsAllocAssoc if (RF%ErrStat /= ErrID_None) return call MeshUnpack(RF, OutData%PtfmMesh) ! PtfmMesh + call MeshUnpack(RF, OutData%ConnLdMesh) ! ConnLdMesh + call MeshUnpack(RF, OutData%FBMesh) ! FBMesh + call RegUnpackAlloc(RF, OutData%Fm); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ExtPtfm_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -1260,6 +1675,48 @@ subroutine ExtPtfm_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, E call MeshCopy(SrcOutputData%PtfmMesh, DstOutputData%PtfmMesh, CtrlCode, ErrStat2, ErrMsg2 ) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) if (ErrStat >= AbortErrLev) return + call MeshCopy(SrcOutputData%ConnMesh, DstOutputData%ConnMesh, CtrlCode, ErrStat2, ErrMsg2 ) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (ErrStat >= AbortErrLev) return + call MeshCopy(SrcOutputData%FBMesh, DstOutputData%FBMesh, CtrlCode, ErrStat2, ErrMsg2 ) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (ErrStat >= AbortErrLev) return + if (allocated(SrcOutputData%qm)) then + LB(1:1) = lbound(SrcOutputData%qm) + UB(1:1) = ubound(SrcOutputData%qm) + if (.not. allocated(DstOutputData%qm)) then + allocate(DstOutputData%qm(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstOutputData%qm.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstOutputData%qm = SrcOutputData%qm + end if + if (allocated(SrcOutputData%qmdot)) then + LB(1:1) = lbound(SrcOutputData%qmdot) + UB(1:1) = ubound(SrcOutputData%qmdot) + if (.not. allocated(DstOutputData%qmdot)) then + allocate(DstOutputData%qmdot(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstOutputData%qmdot.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstOutputData%qmdot = SrcOutputData%qmdot + end if + if (allocated(SrcOutputData%qmdotdot)) then + LB(1:1) = lbound(SrcOutputData%qmdotdot) + UB(1:1) = ubound(SrcOutputData%qmdotdot) + if (.not. allocated(DstOutputData%qmdotdot)) then + allocate(DstOutputData%qmdotdot(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstOutputData%qmdotdot.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstOutputData%qmdotdot = SrcOutputData%qmdotdot + end if if (allocated(SrcOutputData%WriteOutput)) then LB(1:1) = lbound(SrcOutputData%WriteOutput) UB(1:1) = ubound(SrcOutputData%WriteOutput) @@ -1285,6 +1742,19 @@ subroutine ExtPtfm_DestroyOutput(OutputData, ErrStat, ErrMsg) ErrMsg = '' call MeshDestroy( OutputData%PtfmMesh, ErrStat2, ErrMsg2) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call MeshDestroy( OutputData%ConnMesh, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call MeshDestroy( OutputData%FBMesh, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (allocated(OutputData%qm)) then + deallocate(OutputData%qm) + end if + if (allocated(OutputData%qmdot)) then + deallocate(OutputData%qmdot) + end if + if (allocated(OutputData%qmdotdot)) then + deallocate(OutputData%qmdotdot) + end if if (allocated(OutputData%WriteOutput)) then deallocate(OutputData%WriteOutput) end if @@ -1296,6 +1766,11 @@ subroutine ExtPtfm_PackOutput(RF, Indata) character(*), parameter :: RoutineName = 'ExtPtfm_PackOutput' if (RF%ErrStat >= AbortErrLev) return call MeshPack(RF, InData%PtfmMesh) + call MeshPack(RF, InData%ConnMesh) + call MeshPack(RF, InData%FBMesh) + call RegPackAlloc(RF, InData%qm) + call RegPackAlloc(RF, InData%qmdot) + call RegPackAlloc(RF, InData%qmdotdot) call RegPackAlloc(RF, InData%WriteOutput) if (RegCheckErr(RF, RoutineName)) return end subroutine @@ -1309,6 +1784,11 @@ subroutine ExtPtfm_UnPackOutput(RF, OutData) logical :: IsAllocAssoc if (RF%ErrStat /= ErrID_None) return call MeshUnpack(RF, OutData%PtfmMesh) ! PtfmMesh + call MeshUnpack(RF, OutData%ConnMesh) ! ConnMesh + call MeshUnpack(RF, OutData%FBMesh) ! FBMesh + call RegUnpackAlloc(RF, OutData%qm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%qmdot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%qmdotdot); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine @@ -1349,7 +1829,116 @@ subroutine ExtPtfm_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) end if DstMiscData%F_at_t = SrcMiscData%F_at_t end if - DstMiscData%Indx = SrcMiscData%Indx + if (allocated(SrcMiscData%FConn_at_t)) then + LB(1:1) = lbound(SrcMiscData%FConn_at_t) + UB(1:1) = ubound(SrcMiscData%FConn_at_t) + if (.not. allocated(DstMiscData%FConn_at_t)) then + allocate(DstMiscData%FConn_at_t(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMiscData%FConn_at_t.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMiscData%FConn_at_t = SrcMiscData%FConn_at_t + end if + if (allocated(SrcMiscData%F1)) then + LB(1:1) = lbound(SrcMiscData%F1) + UB(1:1) = ubound(SrcMiscData%F1) + if (.not. allocated(DstMiscData%F1)) then + allocate(DstMiscData%F1(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMiscData%F1.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMiscData%F1 = SrcMiscData%F1 + end if + if (allocated(SrcMiscData%F2)) then + LB(1:1) = lbound(SrcMiscData%F2) + UB(1:1) = ubound(SrcMiscData%F2) + if (.not. allocated(DstMiscData%F2)) then + allocate(DstMiscData%F2(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMiscData%F2.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMiscData%F2 = SrcMiscData%F2 + end if + if (allocated(SrcMiscData%Weight)) then + LB(1:1) = lbound(SrcMiscData%Weight) + UB(1:1) = ubound(SrcMiscData%Weight) + if (.not. allocated(DstMiscData%Weight)) then + allocate(DstMiscData%Weight(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMiscData%Weight.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMiscData%Weight = SrcMiscData%Weight + end if + if (allocated(SrcMiscData%FConn)) then + LB(1:1) = lbound(SrcMiscData%FConn) + UB(1:1) = ubound(SrcMiscData%FConn) + if (.not. allocated(DstMiscData%FConn)) then + allocate(DstMiscData%FConn(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMiscData%FConn.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMiscData%FConn = SrcMiscData%FConn + end if + if (allocated(SrcMiscData%FConnCB)) then + LB(1:1) = lbound(SrcMiscData%FConnCB) + UB(1:1) = ubound(SrcMiscData%FConnCB) + if (.not. allocated(DstMiscData%FConnCB)) then + allocate(DstMiscData%FConnCB(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMiscData%FConnCB.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMiscData%FConnCB = SrcMiscData%FConnCB + end if + if (allocated(SrcMiscData%DConn)) then + LB(1:1) = lbound(SrcMiscData%DConn) + UB(1:1) = ubound(SrcMiscData%DConn) + if (.not. allocated(DstMiscData%DConn)) then + allocate(DstMiscData%DConn(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMiscData%DConn.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMiscData%DConn = SrcMiscData%DConn + end if + if (allocated(SrcMiscData%VConn)) then + LB(1:1) = lbound(SrcMiscData%VConn) + UB(1:1) = ubound(SrcMiscData%VConn) + if (.not. allocated(DstMiscData%VConn)) then + allocate(DstMiscData%VConn(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMiscData%VConn.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMiscData%VConn = SrcMiscData%VConn + end if + if (allocated(SrcMiscData%AConn)) then + LB(1:1) = lbound(SrcMiscData%AConn) + UB(1:1) = ubound(SrcMiscData%AConn) + if (.not. allocated(DstMiscData%AConn)) then + allocate(DstMiscData%AConn(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMiscData%AConn.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMiscData%AConn = SrcMiscData%AConn + end if + DstMiscData%Indx_UsrModeF = SrcMiscData%Indx_UsrModeF + DstMiscData%Indx_UsrConnF = SrcMiscData%Indx_UsrConnF DstMiscData%EquilStart = SrcMiscData%EquilStart if (allocated(SrcMiscData%AllOuts)) then LB(1:1) = lbound(SrcMiscData%AllOuts) @@ -1395,6 +1984,33 @@ subroutine ExtPtfm_DestroyMisc(MiscData, ErrStat, ErrMsg) if (allocated(MiscData%F_at_t)) then deallocate(MiscData%F_at_t) end if + if (allocated(MiscData%FConn_at_t)) then + deallocate(MiscData%FConn_at_t) + end if + if (allocated(MiscData%F1)) then + deallocate(MiscData%F1) + end if + if (allocated(MiscData%F2)) then + deallocate(MiscData%F2) + end if + if (allocated(MiscData%Weight)) then + deallocate(MiscData%Weight) + end if + if (allocated(MiscData%FConn)) then + deallocate(MiscData%FConn) + end if + if (allocated(MiscData%FConnCB)) then + deallocate(MiscData%FConnCB) + end if + if (allocated(MiscData%DConn)) then + deallocate(MiscData%DConn) + end if + if (allocated(MiscData%VConn)) then + deallocate(MiscData%VConn) + end if + if (allocated(MiscData%AConn)) then + deallocate(MiscData%AConn) + end if if (allocated(MiscData%AllOuts)) then deallocate(MiscData%AllOuts) end if @@ -1418,7 +2034,17 @@ subroutine ExtPtfm_PackMisc(RF, Indata) call RegPackAlloc(RF, InData%xFlat) call RegPack(RF, InData%uFlat) call RegPackAlloc(RF, InData%F_at_t) - call RegPack(RF, InData%Indx) + call RegPackAlloc(RF, InData%FConn_at_t) + call RegPackAlloc(RF, InData%F1) + call RegPackAlloc(RF, InData%F2) + call RegPackAlloc(RF, InData%Weight) + call RegPackAlloc(RF, InData%FConn) + call RegPackAlloc(RF, InData%FConnCB) + call RegPackAlloc(RF, InData%DConn) + call RegPackAlloc(RF, InData%VConn) + call RegPackAlloc(RF, InData%AConn) + call RegPack(RF, InData%Indx_UsrModeF) + call RegPack(RF, InData%Indx_UsrConnF) call RegPack(RF, InData%EquilStart) call RegPackAlloc(RF, InData%AllOuts) call NWTC_Library_PackModJacType(RF, InData%Jac) @@ -1440,7 +2066,17 @@ subroutine ExtPtfm_UnPackMisc(RF, OutData) call RegUnpackAlloc(RF, OutData%xFlat); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%uFlat); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%F_at_t); if (RegCheckErr(RF, RoutineName)) return - call RegUnpack(RF, OutData%Indx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FConn_at_t); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Weight); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FConn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FConnCB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DConn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%VConn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AConn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Indx_UsrModeF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Indx_UsrConnF); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%EquilStart); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%AllOuts); if (RegCheckErr(RF, RoutineName)) return call NWTC_Library_UnpackModJacType(RF, OutData%Jac) ! Jac @@ -1528,6 +2164,8 @@ SUBROUTINE ExtPtfm_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 = '' @@ -1547,6 +2185,13 @@ SUBROUTINE ExtPtfm_Input_ExtrapInterp1(u1, u2, tin, u_out, tin_out, ErrStat, Err CALL MeshExtrapInterp1(u1%PtfmMesh, u2%PtfmMesh, tin, u_out%PtfmMesh, tin_out, ErrStat2, ErrMsg2) CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) + CALL MeshExtrapInterp1(u1%ConnLdMesh, u2%ConnLdMesh, tin, u_out%ConnLdMesh, tin_out, ErrStat2, ErrMsg2) + CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) + CALL MeshExtrapInterp1(u1%FBMesh, u2%FBMesh, tin, u_out%FBMesh, tin_out, ErrStat2, ErrMsg2) + CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) + IF (ALLOCATED(u_out%Fm) .AND. ALLOCATED(u1%Fm)) THEN + u_out%Fm = a1*u1%Fm + a2*u2%Fm + END IF ! check if allocated END SUBROUTINE SUBROUTINE ExtPtfm_Input_ExtrapInterp2(u1, u2, u3, tin, u_out, tin_out, ErrStat, ErrMsg ) @@ -1579,6 +2224,8 @@ SUBROUTINE ExtPtfm_Input_ExtrapInterp2(u1, u2, u3, tin, u_out, tin_out, ErrStat, INTEGER(IntKi) :: ErrStat2 ! local errors CHARACTER(ErrMsgLen) :: ErrMsg2 ! local errors CHARACTER(*), PARAMETER :: RoutineName = 'ExtPtfm_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 = '' @@ -1604,6 +2251,13 @@ SUBROUTINE ExtPtfm_Input_ExtrapInterp2(u1, u2, u3, tin, u_out, tin_out, ErrStat, a3 = (t_out - t(1))*(t_out - t(2))/((t(3) - t(1))*(t(3) - t(2))) CALL MeshExtrapInterp2(u1%PtfmMesh, u2%PtfmMesh, u3%PtfmMesh, tin, u_out%PtfmMesh, tin_out, ErrStat2, ErrMsg2) CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) + CALL MeshExtrapInterp2(u1%ConnLdMesh, u2%ConnLdMesh, u3%ConnLdMesh, tin, u_out%ConnLdMesh, tin_out, ErrStat2, ErrMsg2) + CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) + CALL MeshExtrapInterp2(u1%FBMesh, u2%FBMesh, u3%FBMesh, tin, u_out%FBMesh, tin_out, ErrStat2, ErrMsg2) + CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) + IF (ALLOCATED(u_out%Fm) .AND. ALLOCATED(u1%Fm)) THEN + u_out%Fm = a1*u1%Fm + a2*u2%Fm + a3*u3%Fm + END IF ! check if allocated END SUBROUTINE subroutine ExtPtfm_Output_ExtrapInterp(y, t, y_out, t_out, ErrStat, ErrMsg) @@ -1705,6 +2359,19 @@ SUBROUTINE ExtPtfm_Output_ExtrapInterp1(y1, y2, tin, y_out, tin_out, ErrStat, Er CALL MeshExtrapInterp1(y1%PtfmMesh, y2%PtfmMesh, tin, y_out%PtfmMesh, tin_out, ErrStat2, ErrMsg2) CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) + CALL MeshExtrapInterp1(y1%ConnMesh, y2%ConnMesh, tin, y_out%ConnMesh, tin_out, ErrStat2, ErrMsg2) + CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) + CALL MeshExtrapInterp1(y1%FBMesh, y2%FBMesh, tin, y_out%FBMesh, tin_out, ErrStat2, ErrMsg2) + CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) + IF (ALLOCATED(y_out%qm) .AND. ALLOCATED(y1%qm)) THEN + y_out%qm = a1*y1%qm + a2*y2%qm + END IF ! check if allocated + IF (ALLOCATED(y_out%qmdot) .AND. ALLOCATED(y1%qmdot)) THEN + y_out%qmdot = a1*y1%qmdot + a2*y2%qmdot + END IF ! check if allocated + IF (ALLOCATED(y_out%qmdotdot) .AND. ALLOCATED(y1%qmdotdot)) THEN + y_out%qmdotdot = a1*y1%qmdotdot + a2*y2%qmdotdot + END IF ! check if allocated IF (ALLOCATED(y_out%WriteOutput) .AND. ALLOCATED(y1%WriteOutput)) THEN y_out%WriteOutput = a1*y1%WriteOutput + a2*y2%WriteOutput END IF ! check if allocated @@ -1767,6 +2434,19 @@ SUBROUTINE ExtPtfm_Output_ExtrapInterp2(y1, y2, y3, tin, y_out, tin_out, ErrStat a3 = (t_out - t(1))*(t_out - t(2))/((t(3) - t(1))*(t(3) - t(2))) CALL MeshExtrapInterp2(y1%PtfmMesh, y2%PtfmMesh, y3%PtfmMesh, tin, y_out%PtfmMesh, tin_out, ErrStat2, ErrMsg2) CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) + CALL MeshExtrapInterp2(y1%ConnMesh, y2%ConnMesh, y3%ConnMesh, tin, y_out%ConnMesh, tin_out, ErrStat2, ErrMsg2) + CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) + CALL MeshExtrapInterp2(y1%FBMesh, y2%FBMesh, y3%FBMesh, tin, y_out%FBMesh, tin_out, ErrStat2, ErrMsg2) + CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) + IF (ALLOCATED(y_out%qm) .AND. ALLOCATED(y1%qm)) THEN + y_out%qm = a1*y1%qm + a2*y2%qm + a3*y3%qm + END IF ! check if allocated + IF (ALLOCATED(y_out%qmdot) .AND. ALLOCATED(y1%qmdot)) THEN + y_out%qmdot = a1*y1%qmdot + a2*y2%qmdot + a3*y3%qmdot + END IF ! check if allocated + IF (ALLOCATED(y_out%qmdotdot) .AND. ALLOCATED(y1%qmdotdot)) THEN + y_out%qmdotdot = a1*y1%qmdotdot + a2*y2%qmdotdot + a3*y3%qmdotdot + END IF ! check if allocated IF (ALLOCATED(y_out%WriteOutput) .AND. ALLOCATED(y1%WriteOutput)) THEN y_out%WriteOutput = a1*y1%WriteOutput + a2*y2%WriteOutput + a3*y3%WriteOutput END IF ! check if allocated @@ -1780,6 +2460,10 @@ function ExtPtfm_InputMeshPointer(u, DL) result(Mesh) select case (DL%Num) case (ExtPtfm_u_PtfmMesh) Mesh => u%PtfmMesh + case (ExtPtfm_u_ConnLdMesh) + Mesh => u%ConnLdMesh + case (ExtPtfm_u_FBMesh) + Mesh => u%FBMesh end select end function @@ -1791,6 +2475,10 @@ function ExtPtfm_OutputMeshPointer(y, DL) result(Mesh) select case (DL%Num) case (ExtPtfm_y_PtfmMesh) Mesh => y%PtfmMesh + case (ExtPtfm_y_ConnMesh) + Mesh => y%ConnMesh + case (ExtPtfm_y_FBMesh) + Mesh => y%FBMesh end select end function @@ -1901,6 +2589,12 @@ subroutine ExtPtfm_VarPackInput(V, u, ValAry) select case (DL%Num) case (ExtPtfm_u_PtfmMesh) call MV_PackMesh(V, u%PtfmMesh, ValAry) ! Mesh + case (ExtPtfm_u_ConnLdMesh) + call MV_PackMesh(V, u%ConnLdMesh, ValAry) ! Mesh + case (ExtPtfm_u_FBMesh) + call MV_PackMesh(V, u%FBMesh, ValAry) ! Mesh + case (ExtPtfm_u_Fm) + VarVals = u%Fm(V%iLB:V%iUB) ! Rank 1 Array case default VarVals = 0.0_R8Ki end select @@ -1925,6 +2619,12 @@ subroutine ExtPtfm_VarUnpackInput(V, ValAry, u) select case (DL%Num) case (ExtPtfm_u_PtfmMesh) call MV_UnpackMesh(V, ValAry, u%PtfmMesh) ! Mesh + case (ExtPtfm_u_ConnLdMesh) + call MV_UnpackMesh(V, ValAry, u%ConnLdMesh) ! Mesh + case (ExtPtfm_u_FBMesh) + call MV_UnpackMesh(V, ValAry, u%FBMesh) ! Mesh + case (ExtPtfm_u_Fm) + u%Fm(V%iLB:V%iUB) = VarVals ! Rank 1 Array end select end associate end subroutine @@ -1935,6 +2635,12 @@ function ExtPtfm_InputFieldName(DL) result(Name) select case (DL%Num) case (ExtPtfm_u_PtfmMesh) Name = "u%PtfmMesh" + case (ExtPtfm_u_ConnLdMesh) + Name = "u%ConnLdMesh" + case (ExtPtfm_u_FBMesh) + Name = "u%FBMesh" + case (ExtPtfm_u_Fm) + Name = "u%Fm" case default Name = "Unknown Field" end select @@ -1958,6 +2664,16 @@ subroutine ExtPtfm_VarPackOutput(V, y, ValAry) select case (DL%Num) case (ExtPtfm_y_PtfmMesh) call MV_PackMesh(V, y%PtfmMesh, ValAry) ! Mesh + case (ExtPtfm_y_ConnMesh) + call MV_PackMesh(V, y%ConnMesh, ValAry) ! Mesh + case (ExtPtfm_y_FBMesh) + call MV_PackMesh(V, y%FBMesh, ValAry) ! Mesh + case (ExtPtfm_y_qm) + VarVals = y%qm(V%iLB:V%iUB) ! Rank 1 Array + case (ExtPtfm_y_qmdot) + VarVals = y%qmdot(V%iLB:V%iUB) ! Rank 1 Array + case (ExtPtfm_y_qmdotdot) + VarVals = y%qmdotdot(V%iLB:V%iUB) ! Rank 1 Array case (ExtPtfm_y_WriteOutput) VarVals = y%WriteOutput(V%iLB:V%iUB) ! Rank 1 Array case default @@ -1984,6 +2700,16 @@ subroutine ExtPtfm_VarUnpackOutput(V, ValAry, y) select case (DL%Num) case (ExtPtfm_y_PtfmMesh) call MV_UnpackMesh(V, ValAry, y%PtfmMesh) ! Mesh + case (ExtPtfm_y_ConnMesh) + call MV_UnpackMesh(V, ValAry, y%ConnMesh) ! Mesh + case (ExtPtfm_y_FBMesh) + call MV_UnpackMesh(V, ValAry, y%FBMesh) ! Mesh + case (ExtPtfm_y_qm) + y%qm(V%iLB:V%iUB) = VarVals ! Rank 1 Array + case (ExtPtfm_y_qmdot) + y%qmdot(V%iLB:V%iUB) = VarVals ! Rank 1 Array + case (ExtPtfm_y_qmdotdot) + y%qmdotdot(V%iLB:V%iUB) = VarVals ! Rank 1 Array case (ExtPtfm_y_WriteOutput) y%WriteOutput(V%iLB:V%iUB) = VarVals ! Rank 1 Array end select @@ -1996,6 +2722,16 @@ function ExtPtfm_OutputFieldName(DL) result(Name) select case (DL%Num) case (ExtPtfm_y_PtfmMesh) Name = "y%PtfmMesh" + case (ExtPtfm_y_ConnMesh) + Name = "y%ConnMesh" + case (ExtPtfm_y_FBMesh) + Name = "y%FBMesh" + case (ExtPtfm_y_qm) + Name = "y%qm" + case (ExtPtfm_y_qmdot) + Name = "y%qmdot" + case (ExtPtfm_y_qmdotdot) + Name = "y%qmdotdot" case (ExtPtfm_y_WriteOutput) Name = "y%WriteOutput" case default diff --git a/modules/hydrodyn/src/Conv_Radiation.f90 b/modules/hydrodyn/src/Conv_Radiation.f90 index cab6699ba6..f8aa84010e 100644 --- a/modules/hydrodyn/src/Conv_Radiation.f90 +++ b/modules/hydrodyn/src/Conv_Radiation.f90 @@ -113,7 +113,8 @@ SUBROUTINE Conv_Rdtn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, InitOut, E ! RdtnOmegaMax, Abort because RdtnDT must be reduced in order to have ! sufficient accuracy in the computation of the radiation impulse response ! functions: - p%NBody = InitInp%NBody + p%NBody = InitInp%NBody ! Can be removed in the future. Role replaced by NDOF. + p%NDOF = InitInp%NDOF p%RdtnDT = InitInp%RdtnDT ! this is also Interval RdtnOmegaMax = Pi / InitInp%RdtnDT @@ -125,8 +126,8 @@ SUBROUTINE Conv_Rdtn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, InitOut, E RETURN END IF - call AllocAry( u%Velocity, 6*p%NBody, "u%Velocity" , ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, 'Conv_Rdtn_Init' ) - call AllocAry( y%F_Rdtn , 6*p%NBody, "y%F_Rdtn" , ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, 'Conv_Rdtn_Init' ) + call AllocAry( u%Velocity, p%NDOF, "u%Velocity" , ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, 'Conv_Rdtn_Init' ) + call AllocAry( y%F_Rdtn , p%NDOF, "y%F_Rdtn" , ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, 'Conv_Rdtn_Init' ) u%Velocity = 0.0 !this is an initial guess; @@ -164,14 +165,14 @@ SUBROUTINE Conv_Rdtn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, InitOut, E RETURN END IF - ALLOCATE ( p%RdtnKrnl (6*p%NBody,6*p%NBody,0:p%NStepRdtn-1) , STAT=ErrStat ) + ALLOCATE ( p%RdtnKrnl (p%NDOF,p%NDOF,0:p%NStepRdtn-1) , STAT=ErrStat ) IF ( ErrStat /= ErrID_None ) THEN ErrMsg = ' Error allocating memory for the RdtnKrnl array.' ErrStat = ErrID_Fatal RETURN END IF - ALLOCATE ( xd%XDHistory(6*p%NBody,0:p%NStepRdtn) , STAT=ErrStat ) ! In the numerical convolution we must have NStepRdtn1 elements within the XDHistory array, which is one more than the NStepRdtn elements that are in the RdtnKrnl array + ALLOCATE ( xd%XDHistory(p%NDOF,0:p%NStepRdtn) , STAT=ErrStat ) ! In the numerical convolution we must have NStepRdtn1 elements within the XDHistory array, which is one more than the NStepRdtn elements that are in the RdtnKrnl array IF ( ErrStat /= ErrID_None ) THEN ErrMsg = ' Error allocating memory for the XDHistory array.' ErrStat = ErrID_Fatal @@ -180,7 +181,7 @@ SUBROUTINE Conv_Rdtn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, InitOut, E ! Initialize all elements of the xd%XDHistory array with the initial values of u%Velocity DO K = 0,p%NStepRdtn-1 - DO J = 1,6*p%NBody ! Loop through all DOFs + DO J = 1,p%NDOF ! Loop through all DOFs xd%XDHistory(J,K) = u%Velocity(J) END DO END DO @@ -218,8 +219,8 @@ SUBROUTINE Conv_Rdtn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, InitOut, E ! transform of the wave radiation kernel: ! Indx = 0 - DO J = 1,6*p%NBody ! Loop through all rows of RdtnKrnl - DO K = 1,6*p%NBody ! Loop through all columns of RdtnKrnl above and including the diagonal + DO J = 1,p%NDOF ! Loop through all rows of RdtnKrnl + DO K = 1,p%NDOF ! Loop through all columns of RdtnKrnl above and including the diagonal !Indx = Indx + 1 p%RdtnKrnl(J,K,I) = Krnl_Fact*Omega*( InterpStp( Omega, InitInp%HdroFreq(:), & InitInp%HdroAddMs(: ,J,K), LastInd, InitInp%NInpFreq ) & @@ -243,8 +244,8 @@ SUBROUTINE Conv_Rdtn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, InitOut, E RETURN END IF - DO J = 1,6*p%NBody ! Loop through all rows of RdtnKrnl - DO K = 1,6*p%NBody ! Loop through all columns of RdtnKrnl above and including the diagonal + DO J = 1,p%NDOF ! Loop through all rows of RdtnKrnl + DO K = 1,p%NDOF ! Loop through all columns of RdtnKrnl above and including the diagonal CALL ApplySINT( p%RdtnKrnl(J,K,:), FFT_Data, ErrStat ) IF ( ErrStat /= ErrID_None ) RETURN END DO ! K - All columns of RdtnKrnl above and including the diagonal @@ -290,8 +291,8 @@ SUBROUTINE Conv_Rdtn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, InitOut, E ! transform of the wave radiation kernel: !Indx = 0 - DO J = 1,6*p%NBody ! Loop through all rows of RdtnKrnl - DO K = 1,6*p%NBody ! Loop through all columns of RdtnKrnl above and including the diagonal + DO J = 1,p%NDOF ! Loop through all rows of RdtnKrnl + DO K = 1,p%NDOF ! Loop through all columns of RdtnKrnl above and including the diagonal !Indx = Indx + 1 p%RdtnKrnl(J,K,I) = Krnl_Fact*InterpStp ( Omega, InitInp%HdroFreq(:), InitInp%HdroDmpng(:,J,K), LastInd, InitInp%NInpFreq ) END DO ! K - All columns of RdtnKrnl above and including the diagonal @@ -312,8 +313,8 @@ SUBROUTINE Conv_Rdtn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, InitOut, E RETURN END IF - DO J = 1,6*p%NBody ! Loop through all rows of RdtnKrnl - DO K = 1,6*p%NBody ! Loop through all columns of RdtnKrnl above and including the diagonal + DO J = 1,p%NDOF ! Loop through all rows of RdtnKrnl + DO K = 1,p%NDOF ! Loop through all columns of RdtnKrnl above and including the diagonal CALL ApplyCOST( p%RdtnKrnl(J,K,:), FFT_Data, ErrStat ) IF ( ErrStat /= ErrID_None ) THEN ErrMsg = 'Error applying Cosine Transform' @@ -512,7 +513,7 @@ SUBROUTINE Conv_Rdtn_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat MaxInd = MIN(p%NStepRdtn-1,OtherState%IndRdtn) ! Note: xd%IndRdtn index is from the previous time-step since this state was for the previous time-step - call AllocAry(F_RdtnDT, 6*p%NBody, 1, 'F_RdtnDT', ErrStat2, ErrMsg2) + call AllocAry(F_RdtnDT, p%NDOF, 1, 'F_RdtnDT', ErrStat2, ErrMsg2) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) if (ErrStat >= AbortErrLev) return @@ -536,8 +537,8 @@ SUBROUTINE Conv_Rdtn_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat ! Loop through all wave radiation damping forces and moments ! F_RdtnDT = 0.0 - ! DO I = 1, 6*p%NBody - ! DO J = 1,6*p%NBody ! Loop through all platform DOFs + ! DO I = 1,p%NDOF + ! DO J = 1,p%NDOF ! Loop through all platform DOFs ! ! Contribution from the first and last time steps are halved to make the integration 2nd-order accurate ! F_RdtnDT(I) = F_RdtnDT(I) - 0.5_SiKi * p%RdtnKrnl(MaxInd,I,J)*xd%XDHistory(0,J) & ! - 0.5_SiKi * p%RdtnKrnl(0,I,J)*xd%XDHistory(MaxInd,J) @@ -643,18 +644,18 @@ SUBROUTINE Conv_Rdtn_UpdateDiscState( Time, n, u, p, x, xd, z, OtherState, m, Er ! When IndRdtn > LastIndRdtn, IndRdtn will be greater than LastIndRdtn + 1 if DT > RdtnDT. IF ( OtherState%IndRdtn < (p%NStepRdtn) ) THEN - DO J = 1,6*p%NBody ! Loop through all platform DOFs + DO J = 1,p%NDOF ! Loop through all platform DOFs xd%XDHistory(J,OtherState%IndRdtn) = u%Velocity(J) ! XDHistory was allocated as a zero-based array! END DO ! J - All platform DOFs ELSE ! Shift the stored history by one index DO K = 0,p%NStepRdtn-2 - DO J = 1,6*p%NBody ! Loop through all DOFs + DO J = 1,p%NDOF ! Loop through all DOFs xd%XDHistory(J,K) = xd%XDHistory(J,K+1) END DO END DO - DO J = 1,6*p%NBody ! Loop through all platform DOFs + DO J = 1,p%NDOF ! Loop through all platform DOFs xd%XDHistory(J,p%NStepRdtn-1) = u%Velocity(J) ! Set the last array element to the current velocity END DO ! J - All platform DOFs END IF diff --git a/modules/hydrodyn/src/Conv_Radiation.txt b/modules/hydrodyn/src/Conv_Radiation.txt index 9836df2acf..3ec357e44b 100644 --- a/modules/hydrodyn/src/Conv_Radiation.txt +++ b/modules/hydrodyn/src/Conv_Radiation.txt @@ -21,6 +21,7 @@ include Registry_NWTC_Library.txt typedef Conv_Radiation/Conv_Rdtn InitInputType DbKi RdtnDT - - - "" - typedef ^ ^ CHARACTER(80) RdtnDTChr typedef ^ ^ INTEGER NBody - - - "[>=1; only used when PotMod=1. If NBodyMod=1, the WAMIT data contains a vector of size 6*NBody x 1 and matrices of size 6*NBody x 6*NBody; if NBodyMod>1, there are NBody sets of WAMIT data each with a vector of size 6 x 1 and matrices of size 6 x 6]" - +typedef ^ ^ INTEGER NDOF - - - "Total number of degrees of freedom for all bodies including AddDOF" - typedef ^ ^ ReKi HighFreq - - - "" - typedef ^ ^ CHARACTER(1024) WAMITFile - - - "" - typedef ^ ^ SiKi HdroAddMs {:}{:}{:} - - "" - @@ -68,6 +69,7 @@ typedef ^ MiscVarType INTEGER typedef ^ ParameterType DbKi DT - - - "Time step for continuous state integration & discrete state update" seconds typedef ^ ^ DbKi RdtnDT - - - "" - typedef ^ ^ INTEGER NBody - - - "[>=1; only used when PotMod=1. If NBodyMod=1, the WAMIT data contains a vector of size 6*NBody x 1 and matrices of size 6*NBody x 6*NBody; if NBodyMod>1, there are NBody sets of WAMIT data each with a vector of size 6 x 1 and matrices of size 6 x 6]" - +typedef ^ ^ INTEGER NDOF - - - "Total number of degrees of freedom for all bodies including AddDOF" - typedef ^ ^ SiKi RdtnKrnl {:}{:}{:} - - "" - typedef ^ ^ INTEGER NStepRdtn - - - "" - typedef ^ ^ INTEGER NStepRdtn1 - - - "" - diff --git a/modules/hydrodyn/src/Conv_Radiation_Types.f90 b/modules/hydrodyn/src/Conv_Radiation_Types.f90 index 1cc3ec50bd..dd2c0902a2 100644 --- a/modules/hydrodyn/src/Conv_Radiation_Types.f90 +++ b/modules/hydrodyn/src/Conv_Radiation_Types.f90 @@ -38,6 +38,7 @@ MODULE Conv_Radiation_Types REAL(DbKi) :: RdtnDT = 0.0_R8Ki !< [-] CHARACTER(80) :: RdtnDTChr INTEGER(IntKi) :: NBody = 0_IntKi !< [>=1; only used when PotMod=1. If NBodyMod=1, the WAMIT data contains a vector of size 6*NBody x 1 and matrices of size 6*NBody x 6*NBody; if NBodyMod>1, there are NBody sets of WAMIT data each with a vector of size 6 x 1 and matrices of size 6 x 6] [-] + INTEGER(IntKi) :: NDOF = 0_IntKi !< Total number of degrees of freedom for all bodies including AddDOF [-] REAL(ReKi) :: HighFreq = 0.0_ReKi !< [-] CHARACTER(1024) :: WAMITFile !< [-] REAL(SiKi) , DIMENSION(:,:,:), ALLOCATABLE :: HdroAddMs !< [-] @@ -83,6 +84,7 @@ MODULE Conv_Radiation_Types REAL(DbKi) :: DT = 0.0_R8Ki !< Time step for continuous state integration & discrete state update [seconds] REAL(DbKi) :: RdtnDT = 0.0_R8Ki !< [-] INTEGER(IntKi) :: NBody = 0_IntKi !< [>=1; only used when PotMod=1. If NBodyMod=1, the WAMIT data contains a vector of size 6*NBody x 1 and matrices of size 6*NBody x 6*NBody; if NBodyMod>1, there are NBody sets of WAMIT data each with a vector of size 6 x 1 and matrices of size 6 x 6] [-] + INTEGER(IntKi) :: NDOF = 0_IntKi !< Total number of degrees of freedom for all bodies including AddDOF [-] REAL(SiKi) , DIMENSION(:,:,:), ALLOCATABLE :: RdtnKrnl !< [-] INTEGER(IntKi) :: NStepRdtn = 0_IntKi !< [-] INTEGER(IntKi) :: NStepRdtn1 = 0_IntKi !< [-] @@ -118,6 +120,7 @@ subroutine Conv_Rdtn_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, DstInitInputData%RdtnDT = SrcInitInputData%RdtnDT DstInitInputData%RdtnDTChr = SrcInitInputData%RdtnDTChr DstInitInputData%NBody = SrcInitInputData%NBody + DstInitInputData%NDOF = SrcInitInputData%NDOF DstInitInputData%HighFreq = SrcInitInputData%HighFreq DstInitInputData%WAMITFile = SrcInitInputData%WAMITFile if (allocated(SrcInitInputData%HdroAddMs)) then @@ -186,6 +189,7 @@ subroutine Conv_Rdtn_PackInitInput(RF, Indata) call RegPack(RF, InData%RdtnDT) call RegPack(RF, InData%RdtnDTChr) call RegPack(RF, InData%NBody) + call RegPack(RF, InData%NDOF) call RegPack(RF, InData%HighFreq) call RegPack(RF, InData%WAMITFile) call RegPackAlloc(RF, InData%HdroAddMs) @@ -207,6 +211,7 @@ subroutine Conv_Rdtn_UnPackInitInput(RF, OutData) call RegUnpack(RF, OutData%RdtnDT); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%RdtnDTChr); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%NBody); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NDOF); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%HighFreq); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%WAMITFile); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%HdroAddMs); if (RegCheckErr(RF, RoutineName)) return @@ -480,6 +485,7 @@ subroutine Conv_Rdtn_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, Er DstParamData%DT = SrcParamData%DT DstParamData%RdtnDT = SrcParamData%RdtnDT DstParamData%NBody = SrcParamData%NBody + DstParamData%NDOF = SrcParamData%NDOF if (allocated(SrcParamData%RdtnKrnl)) then LB(1:3) = lbound(SrcParamData%RdtnKrnl) UB(1:3) = ubound(SrcParamData%RdtnKrnl) @@ -516,6 +522,7 @@ subroutine Conv_Rdtn_PackParam(RF, Indata) call RegPack(RF, InData%DT) call RegPack(RF, InData%RdtnDT) call RegPack(RF, InData%NBody) + call RegPack(RF, InData%NDOF) call RegPackAlloc(RF, InData%RdtnKrnl) call RegPack(RF, InData%NStepRdtn) call RegPack(RF, InData%NStepRdtn1) @@ -533,6 +540,7 @@ subroutine Conv_Rdtn_UnPackParam(RF, OutData) call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%RdtnDT); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%NBody); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NDOF); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%RdtnKrnl); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%NStepRdtn); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%NStepRdtn1); if (RegCheckErr(RF, RoutineName)) return diff --git a/modules/hydrodyn/src/HydroDyn.f90 b/modules/hydrodyn/src/HydroDyn.f90 index d1ec250277..a8630a4fbe 100644 --- a/modules/hydrodyn/src/HydroDyn.f90 +++ b/modules/hydrodyn/src/HydroDyn.f90 @@ -110,10 +110,7 @@ SUBROUTINE HydroDyn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, I CHARACTER(1024) :: SummaryName ! name of the HydroDyn summary file TYPE(HydroDyn_InputFile) :: InputFileData !< Data from input file TYPE(FileInfoType) :: InFileInfo !< The derived type for holding the full input file for parsing -- we may pass this in the future -! LOGICAL :: hasWAMITOuts ! Are there any WAMIT-related outputs -! LOGICAL :: hasMorisonOuts ! Are there any Morison-related outputs -! INTEGER :: numHydroOuts ! total number of WAMIT and Morison outputs - INTEGER :: I, J, k, iBody ! Generic counters + INTEGER :: I, J, k, iBody, jBody, iWAMIT ! Generic counters ! These are dummy variables to satisfy the framework, but are not used @@ -295,8 +292,6 @@ SUBROUTINE HydroDyn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, I InputFileData%WAMIT%PlatformPos = InitInp%PlatformPos ! Initial platform/HD origin position p%NBody = InputFileData%NBody p%NBodyMod = InputFileData%NBodyMod - call AllocAry( m%F_PtfmAdd, 6*InputFileData%NBody, "m%F_PtfmAdd", ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) - call AllocAry( m%F_Waves , 6*InputFileData%NBody, "m%F_Waves" , ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) ! Determine how many WAMIT modules we need based on NBody and NBodyMod if (p%NBodyMod == 1) then @@ -310,6 +305,7 @@ SUBROUTINE HydroDyn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, I call AllocAry( InputFileData%WAMIT%PtfmRefztRot, InputFileData%NBody, "PtfmRefztRot", ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) call AllocAry( InputFileData%WAMIT%PtfmCOBxt , InputFileData%NBody, "PtfmCOBxt" , ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) call AllocAry( InputFileData%WAMIT%PtfmCOByt , InputFileData%NBody, "PtfmCOByt" , ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) + call AllocAry( InputFileData%WAMIT%NAddDOF , InputFileData%NBody, "NAddDOF" , ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) allocate( p%WAMIT( 1), stat = ErrStat2 ); if (ErrStat2 /=0) call SetErrStat( ErrID_Fatal, 'Failed to allocate array p%WAMIT.', ErrStat, ErrMsg, RoutineName ) allocate( x%WAMIT( 1), stat = ErrStat2 ); if (ErrStat2 /=0) call SetErrStat( ErrID_Fatal, 'Failed to allocate array x%WAMIT.', ErrStat, ErrMsg, RoutineName ) allocate( xd%WAMIT( 1), stat = ErrStat2 ); if (ErrStat2 /=0) call SetErrStat( ErrID_Fatal, 'Failed to allocate array xd%WAMIT.', ErrStat, ErrMsg, RoutineName ) @@ -326,6 +322,7 @@ SUBROUTINE HydroDyn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, I InputFileData%WAMIT%PtfmRefztRot = InputFileData%PtfmRefztRot InputFileData%WAMIT%PtfmCOBxt = InputFileData%PtfmCOBxt InputFileData%WAMIT%PtfmCOByt = InputFileData%PtfmCOByt + InputFileData%WAMIT%NAddDOF = InputFileData%NAddDOF else InputFileData%WAMIT%NBody = 1 ! Each WAMIT object will only contain one of the NBody WAMIT bodies @@ -337,6 +334,7 @@ SUBROUTINE HydroDyn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, I call AllocAry( InputFileData%WAMIT%PtfmRefztRot, 1, "PtfmRefztRot", ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) call AllocAry( InputFileData%WAMIT%PtfmCOBxt , 1, "PtfmCOBxt" , ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) call AllocAry( InputFileData%WAMIT%PtfmCOByt , 1, "PtfmCOByt" , ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) + call AllocAry( InputFileData%WAMIT%NAddDOF , 1, "NAddDOF" , ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) allocate( p%WAMIT( InputFileData%NBody), stat = ErrStat2 ); if (ErrStat2 /=0) call SetErrStat( ErrID_Fatal, 'Failed to allocate array p%WAMIT.', ErrStat, ErrMsg, RoutineName ) allocate( x%WAMIT( InputFileData%NBody), stat = ErrStat2 ); if (ErrStat2 /=0) call SetErrStat( ErrID_Fatal, 'Failed to allocate array x%WAMIT.', ErrStat, ErrMsg, RoutineName ) allocate( xd%WAMIT( InputFileData%NBody), stat = ErrStat2 ); if (ErrStat2 /=0) call SetErrStat( ErrID_Fatal, 'Failed to allocate array xd%WAMIT.', ErrStat, ErrMsg, RoutineName ) @@ -352,6 +350,7 @@ SUBROUTINE HydroDyn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, I InputFileData%WAMIT%PtfmRefztRot(1) = InputFileData%PtfmRefztRot(1) InputFileData%WAMIT%PtfmCOBxt (1) = InputFileData%PtfmCOBxt (1) InputFileData%WAMIT%PtfmCOByt (1) = InputFileData%PtfmCOByt (1) + InputFileData%WAMIT%NAddDOF (1) = InputFileData%NAddDOF (1) end if @@ -360,7 +359,6 @@ SUBROUTINE HydroDyn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, I return end if - CALL WAMIT_Init(InputFileData%WAMIT, m%u_WAMIT(1), p%WAMIT(1), x%WAMIT(1), xd%WAMIT(1), z%WAMIT, OtherState%WAMIT(1), & y%WAMIT(1), m%WAMIT(1), Interval, ErrStat2, ErrMsg2 ) CALL SetErrStat(ErrStat2,ErrMsg2,ErrStat,ErrMsg,RoutineName) @@ -370,7 +368,7 @@ SUBROUTINE HydroDyn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, I END IF - ! For NBodyMod > 1 and NBody > 1, set the body info and init the WAMIT body + ! For NBodyMod > 1 and NBody > 1, set the body info and init the WAMIT body do i = 2, p%nWAMITObj !----------------------------------------- ! Initialize the WAMIT Calculations @@ -384,6 +382,7 @@ SUBROUTINE HydroDyn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, I InputFileData%WAMIT%PtfmRefztRot(1) = InputFileData%PtfmRefztRot(i) InputFileData%WAMIT%PtfmCOBxt (1) = InputFileData%PtfmCOBxt (i) InputFileData%WAMIT%PtfmCOByt (1) = InputFileData%PtfmCOByt (i) + InputFileData%WAMIT%NAddDOF (1) = InputFileData%NAddDOF (i) CALL WAMIT_Init(InputFileData%WAMIT, m%u_WAMIT(i), p%WAMIT(i), x%WAMIT(i), xd%WAMIT(i), z%WAMIT, OtherState%WAMIT(i), & y%WAMIT(i), m%WAMIT(i), Interval, ErrStat2, ErrMsg2 ) @@ -393,6 +392,28 @@ SUBROUTINE HydroDyn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, I RETURN END IF end do + + ! Initialize parameters and input/output arrays associated with generalized DOF + call AllocAry( p%NAddDOF , p%NBody, 'p%NAddDOF' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call AllocAry( p%BDOFStrt, p%NBody, 'p%BDOFStrt', ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + p%NAddDOF = InputFileData%WAMIT%NAddDOF + p%NDOF = 0_IntKi + do iBody = 1, p%NBody + p%BDOFStrt(iBody) = p%NDOF + 1_IntKi + p%NDOF = p%NDOF + 6_IntKi + p%NAddDOF(iBody) + end do + p%HasAddDOF = ( p%NDOF > 6*p%NBody ) + + if (p%HasAddDOF) then + call AllocAry( u%qAddDOF , p%NDOF-6*p%NBody, "u%qAddDOF" , ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) + call AllocAry( u%qAddDOFDot , p%NDOF-6*p%NBody, "u%qAddDOFDot" , ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) + call AllocAry( u%qAddDOFDotDot, p%NDOF-6*p%NBody, "u%qAddDOFDotDot", ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) + call AllocAry( y%FAddDOF , p%NDOF-6*p%NBody, "y%FAddDOF" , ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) + end if + + ! Initialize misc arrays for output files + call AllocAry( m%F_PtfmAdd, p%NDOF, "m%F_PtfmAdd", ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) + call AllocAry( m%F_Waves , p%NDOF, "m%F_Waves" , ErrStat2, ErrMsg2 ); call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) ! Generate Summary file information for WAMIT module ! Compute the load contribution from hydrostatics: @@ -578,77 +599,71 @@ SUBROUTINE HydroDyn_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, I !=============================================== p%PotMod = InputFileData%Potmod IF ( InputFileData%UnSum > 0 ) THEN - - + IF ( InputFileData%PotMod == 1 .AND. InputFileData%WAMIT%RdtnMod == 1) THEN ! Write the header for this section: Note: When NBodyMod = 1 the kernel is now 6*NBody by 6*Nbody in size, ! and we have NBody 6 by 6 kernels for NBodyMod=2 or 3 - if (p%NBodyMod == 1) then + ! if (p%NBodyMod == 1) then ! NBodyMod=1 kernel printout which is 6*NBody x 6*NBody long - WRITE( InputFileData%UnSum, '(//)' ) - WRITE( InputFileData%UnSum, '(A)' ) 'Radiation memory effect kernel' - WRITE( InputFileData%UnSum, '(//)' ) - + WRITE( InputFileData%UnSum, '(//)' ) + WRITE( InputFileData%UnSum, '(A)' ) 'Radiation memory effect kernel' + WRITE( InputFileData%UnSum, '(//)' ) + + do iWAMIT = 1,p%nWAMITObj WRITE( InputFileData%UnSum, '(1X,A10,2X,A10)',ADVANCE='no' ) ' n ' , ' t ' - do i = 1,6*p%NBody - do j = 1,6*p%NBody - WRITE( InputFileData%UnSum, '(2X,A16)',ADVANCE='no' ) 'K'//trim(num2lstr(i))//trim(num2lstr(j)) + do i = 1,p%WAMIT(iWAMIT)%NDOF + do j = 1,p%WAMIT(iWAMIT)%NDOF + WRITE( InputFileData%UnSum, '(2X,A16)',ADVANCE='no' ) 'K('//trim(num2lstr(i))//','//trim(num2lstr(j))//')' end do end do write(InputFileData%UnSum,'()') ! end of line character - - - WRITE( InputFileData%UnSum, '(1X,A10,2X,A10)',ADVANCE='no' ) ' (-) ' , ' (s) ' - do i = 1,6*p%NBody - do j = 1,6*p%NBody - if ( mod(i-1,6)+1 < 4 ) then - if ( mod(j-1,6)+1 < 4 ) then - WRITE( InputFileData%UnSum, '(2X,A16)',ADVANCE='no' ) ' (kg/s^2) ' - else + + WRITE( InputFileData%UnSum, '(1X,A10,2X,A10)',ADVANCE='no' ) ' (-) ' , ' (s) ' + do i = 1,p%WAMIT(iWAMIT)%NDOF + do iBody = 1,p%WAMIT(iWAMIT)%NBody-1_IntKi + if ( p%WAMIT(iWAMIT)%BDOFStrt(iBody+1_IntKi)>i ) exit + end do + if ( p%WAMIT(iWAMIT)%BDOFStrt(p%WAMIT(iWAMIT)%NBody)<=i ) iBody = p%WAMIT(iWAMIT)%NBody + do j = 1,p%WAMIT(iWAMIT)%NDOF + do jBody = 1,p%WAMIT(iWAMIT)%NBody-1_IntKi + if ( p%WAMIT(iWAMIT)%BDOFStrt(jBody+1_IntKi)>j ) exit + end do + if ( p%WAMIT(iWAMIT)%BDOFStrt(p%WAMIT(iWAMIT)%NBody)<=j ) jBody = p%WAMIT(iWAMIT)%NBody + if ( i-p%WAMIT(iWAMIT)%BDOFStrt(iBody) < 3_IntKi ) then + if ( j-p%WAMIT(iWAMIT)%BDOFStrt(jBody) < 3_IntKi ) then + WRITE( InputFileData%UnSum, '(2X,A16)',ADVANCE='no' ) ' (kg/s^2) ' + else if ( j-p%WAMIT(iWAMIT)%BDOFStrt(jBody) < 6_IntKi ) then WRITE( InputFileData%UnSum, '(2X,A16)',ADVANCE='no' ) ' (kgm/s^2) ' + else + WRITE( InputFileData%UnSum, '(2X,A16)',ADVANCE='no' ) ' (-) ' end if - else - if ( mod(j-1,6)+1 < 4 ) then + else if ( i-p%WAMIT(iWAMIT)%BDOFStrt(iBody) < 6_IntKi ) then + if ( j-p%WAMIT(iWAMIT)%BDOFStrt(jBody) < 3_IntKi ) then WRITE( InputFileData%UnSum, '(2X,A16)',ADVANCE='no' ) ' (kgm/s^2) ' - else + else if ( j-p%WAMIT(iWAMIT)%BDOFStrt(jBody) < 6_IntKi ) then WRITE( InputFileData%UnSum, '(2X,A16)',ADVANCE='no' ) '(kgm^2/s^2)' - end if + else + WRITE( InputFileData%UnSum, '(2X,A16)',ADVANCE='no' ) ' (-) ' + end if + else + WRITE( InputFileData%UnSum, '(2X,A16)',ADVANCE='no' ) ' (-) ' end if end do end do write(InputFileData%UnSum,'()') ! end of line character - - do k= 0,p%WAMIT(1)%Conv_Rdtn%NStepRdtn-1 - WRITE( InputFileData%UnSum, '(1X,I10,2X,E12.5)',ADVANCE='no' ) K, K*p%WAMIT(1)%Conv_Rdtn%RdtnDT - do i = 1,6*p%NBody - do j = 1,6*p%NBody - WRITE( InputFileData%UnSum, '(2X,ES16.5)',ADVANCE='no' ) p%WAMIT(1)%Conv_Rdtn%RdtnKrnl(i,j,k) + + do k= 0,p%WAMIT(iWAMIT)%Conv_Rdtn%NStepRdtn-1 + WRITE( InputFileData%UnSum, '(1X,I10,2X,E12.5)',ADVANCE='no' ) K, K*p%WAMIT(iWAMIT)%Conv_Rdtn%RdtnDT + do i = 1,p%WAMIT(iWAMIT)%NDOF + do j = 1,p%WAMIT(iWAMIT)%NDOF + WRITE( InputFileData%UnSum, '(2X,ES16.5)',ADVANCE='no' ) p%WAMIT(iWAMIT)%Conv_Rdtn%RdtnKrnl(i,j,k) end do end do write(InputFileData%UnSum,'()') ! end of line character end do - - else - do j = 1,p%nWAMITObj - WRITE( InputFileData%UnSum, '(//)' ) - WRITE( InputFileData%UnSum, '(A)' ) 'Radiation memory effect kernel' - WRITE( InputFileData%UnSum, '(//)' ) - WRITE( InputFileData%UnSum, '(1X,A10,2X,A10,21(2X,A16))' ) ' n ' , ' t ', ' K11 ', ' K12 ', ' K13 ', ' K14 ', ' K15 ', ' K16 ', ' K22 ', ' K23 ', ' K24 ', ' K25 ', ' K26 ', ' K33 ', ' K34 ', ' K35 ', 'K36 ', ' K44 ', ' K45 ', ' K46 ', ' K55 ', ' K56 ', ' K66 ' - WRITE( InputFileData%UnSum, '(1X,A10,2X,A10,21(2X,A16))' ) ' (-) ' , ' (s) ', ' (kg/s^2) ', ' (kg/s^2) ', ' (kg/s^2) ', ' (kgm/s^2) ', ' (kgm/s^2) ', ' (kgm/s^2) ', ' (kg/s^2) ', ' (kg/s^2) ', ' (kgm/s^2) ', ' (kgm/s^2) ', ' (kgm/s^2) ', ' (kg/s^2) ', ' (kgm/s^2) ', ' (kgm/s^2) ', ' (kgm/s^2) ', '(kgm^2/s^2)', '(kgm^2/s^2)', '(kgm^2/s^2)', '(kgm^2/s^2)', '(kgm^2/s^2)', '(kgm^2/s^2)' - - ! Write the data - DO I = 0,p%WAMIT(j)%Conv_Rdtn%NStepRdtn-1 - WRITE( InputFileData%UnSum, '(1X,I10,2X,E12.5,21(2X,ES16.5))' ) I, I*p%WAMIT(j)%Conv_Rdtn%RdtnDT, & - p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(1,1,I), p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(1,2,I), p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(1,3,I), & - p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(1,4,I), p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(1,5,I), p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(1,6,I), & - p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(2,2,I), p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(2,3,I), p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(2,4,I), & - p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(2,5,I), p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(2,6,I), p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(3,3,I), & - p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(3,4,I), p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(3,5,I), p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(3,6,I), & - p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(4,4,I), p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(4,5,I), p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(4,6,I), & - p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(5,5,I), p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(5,6,I), p%WAMIT(j)%Conv_Rdtn%RdtnKrnl(6,6,I) - END DO - end do - end if + + end do + END IF END IF @@ -1021,6 +1036,29 @@ subroutine HydroDyn_InitVars(Vars, u, p, x, y, m, InitOut, InputFileData, Linear call MV_AddMeshVar(Vars%u, "Platform-RefPt", MotionFields, DatLoc(HydroDyn_u_PRPMesh), u%PRPMesh, & Perturbs=Perturbs) + if ( p%HasAddDOF ) then + call MV_AddVar(Vars%u, "qAddDOF", FieldScalar, & + DL=DatLoc(HydroDyn_u_qAddDOF), & + Num=size(u%qAddDOF), & + Flags = VF_Linearize, & + Perturb = PerturbRot, & + LinNames=[('Generalized DOF '//trim(num2lstr(i))//' displacement, -', i=1,size(u%qAddDOF))]) + + call MV_AddVar(Vars%u, "qAddDOFDot", FieldScalar, & + DL=DatLoc(HydroDyn_u_qAddDOFDot), & + Num=size(u%qAddDOFDot), & + Flags = VF_Linearize, & + Perturb = PerturbRot, & + LinNames=[('Generalized DOF '//trim(num2lstr(i))//' velocity, -/s', i=1,size(u%qAddDOFDot))]) + + call MV_AddVar(Vars%u, "qAddDOFDotDot", FieldScalar, & + DL=DatLoc(HydroDyn_u_qAddDOFDotDot), & + Num=size(u%qAddDOFDotDot), & + Flags = VF_Linearize, & + Perturb = PerturbRot, & + LinNames=[('Generalized DOF '//trim(num2lstr(i))//' acceleration, -/s^2', i=1,size(u%qAddDOFDotDot))]) + end if + call MV_AddVar(Vars%u, "WaveElev0", FieldScalar, DatLoc(HydroDyn_u_WaveElev0), & Flags=VF_ExtLin + VF_Linearize, & LinNames=['Extended input: wave elevation at platform ref point, m']) @@ -1045,6 +1083,13 @@ subroutine HydroDyn_InitVars(Vars, u, p, x, y, m, InitOut, InputFileData, Linear call MV_AddMeshVar(Vars%y, "WAMITLoads", LoadFields, DatLoc(HydroDyn_y_WAMITMesh), y%WAMITMesh) + if ( p%HasAddDOF ) then + call MV_AddVar(Vars%y, "FAddDOF", FieldScalar, & + DL=DatLoc(HydroDyn_y_FAddDOF), & + Num=size(y%FAddDOF), & + LinNames=[('Generalized DOF '//trim(num2lstr(i))//' force, -', i=1,size(y%FAddDOF))]) + end if + call MV_AddVar(Vars%y, "WriteOutput", FieldScalar, DatLoc(HydroDyn_y_WriteOutput), & Flags=VF_WriteOut, & Num=p%NumTotalOuts, & @@ -1097,6 +1142,7 @@ SUBROUTINE HydroDyn_UpdateStates( t, n, Inputs, InputTimes, p, x, xd, z, OtherSt ! Local variables INTEGER :: I, iWAMIT ! Generic loop counters + INTEGER :: AddDOFCntr INTEGER(IntKi) :: ErrStat2 ! Error status of the operation (secondary error) CHARACTER(ErrMsgLen) :: ErrMsg2 ! Error message if ErrStat2 /= ErrID_None INTEGER :: nTime ! number of inputs @@ -1190,73 +1236,103 @@ SUBROUTINE HydroDyn_UpdateStates( t, n, Inputs, InputTimes, p, x, xd, z, OtherSt IF ( p%PotMod == 0 ) THEN RETURN ELSEIF ( p%PotMod == 1 ) THEN - - ALLOCATE( Inputs_WAMIT(nTime), STAT = ErrStat2 ) - IF (ErrStat2 /=0) THEN - CALL SetErrStat( ErrID_Fatal, 'Failed to allocate array Inputs_WAMIT.', ErrStat, ErrMsg, RoutineName ) - RETURN - END IF if ( p%NBodyMod == 1 .or. p%NBody == 1 ) then + + ALLOCATE( Inputs_WAMIT(nTime), STAT = ErrStat2 ) + IF (ErrStat2 /=0) THEN + CALL SetErrStat( ErrID_Fatal, 'Failed to allocate array Inputs_WAMIT.', ErrStat, ErrMsg, RoutineName ) + RETURN + END IF + ! For this NBodyMod or NBody=1, there is only one WAMIT object, so copy the necessary inputs and then call WAMIT_UpdateStates do I=1,nTime - ! Copy the inputs from the HD mesh into the WAMIT mesh + ! Copy the inputs from the HD mesh into the WAMIT mesh call MeshCopy( Inputs(I)%WAMITMesh, Inputs_WAMIT(I)%Mesh, MESH_NEWCOPY, ErrStat2, ErrMsg2 ) call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) - ! Inputs_WAMIT(I)%PtfmRefY = Inputs(I)%PtfmRefY Inputs_WAMIT(I)%PtfmRefY = xd%PtfmRefY(I) + if (p%HasAddDOF) then + call AllocAry( Inputs_WAMIT(I)%qAddDOF, p%NDOF-6*p%NBody, 'u%qAddDOF' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call AllocAry( Inputs_WAMIT(I)%qAddDOFDot, p%NDOF-6*p%NBody, 'u%qAddDOFDot' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call AllocAry( Inputs_WAMIT(I)%qAddDOFDotDot, p%NDOF-6*p%NBody, 'u%qAddDOFDotDot' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + Inputs_WAMIT(I)%qAddDOF = Inputs(I)%qAddDOF + Inputs_WAMIT(I)%qAddDOFDot = Inputs(I)%qAddDOFDot + Inputs_WAMIT(I)%qAddDOFDotDot = Inputs(I)%qAddDOFDotDot + end if end do - - if (ErrStat < AbortErrLev) then ! if there was an error copying the input meshes, we'll skip this step and then cleanup the temporary input meshes - ! Update the WAMIT module states - - call WAMIT_UpdateStates( t, n, Inputs_WAMIT, InputTimes, p%WAMIT(1), x%WAMIT(1), xd%WAMIT(1), z%WAMIT, OtherState%WAMIT(1), m%WAMIT(1), ErrStat2, ErrMsg2 ) - call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) + if (ErrStat > AbortErrLev) return + + ! Update the WAMIT module states + call WAMIT_UpdateStates( t, n, Inputs_WAMIT, InputTimes, p%WAMIT(1), x%WAMIT(1), xd%WAMIT(1), z%WAMIT, OtherState%WAMIT(1), m%WAMIT(1), ErrStat2, ErrMsg2 ) + call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) + if (ErrStat > AbortErrLev) return + + ! deallocate temporary inputs + do I=1,nTime + call WAMIT_DestroyInput( Inputs_WAMIT(I), ErrStat2, ErrMsg2 ) + call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) + end do + deallocate(Inputs_WAMIT) - end if - else ! We have multiple WAMIT objects - ! Loop over number of inputs and copy them into an array of WAMIT inputs + ! Loop over number of inputs and copy them into an array of WAMIT inputs + AddDOFCntr = 0_IntKi do iWAMIT = 1, p%nWAMITObj - + + ! We can't reuse Inputs_WAMIT for different WAMIT objects now because the size of qAddDOF, qAddDOFDot, and qAddDOFDotDot can be different + ALLOCATE( Inputs_WAMIT(nTime), STAT = ErrStat2 ) + IF (ErrStat2 /=0) THEN + CALL SetErrStat( ErrID_Fatal, 'Failed to allocate array Inputs_WAMIT.', ErrStat, ErrMsg, RoutineName ) + RETURN + END IF + do I=1,nTime - ! We need to create to valid mesh data structures in our Inputs_WAMIT(I)%Mesh using the miscvar version as a template, but the actually data will be generated below + ! We need to create to valid mesh data structures in our Inputs_WAMIT(I)%Mesh using the miscvar version as a template, but the actually data will be generated below call MeshCopy( m%u_WAMIT(iWAMIT)%Mesh, Inputs_WAMIT(I)%Mesh, MESH_NEWCOPY, ErrStat2, ErrMsg2 ) call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) - ! Inputs_WAMIT(I)%PtfmRefY = Inputs(I)%PtfmRefY - Inputs_WAMIT(I)%PtfmRefY = xd%PtfmRefY(I) + if ( p%NAddDOF(iWAMIT)>0_IntKi ) then + call AllocAry( Inputs_WAMIT(I)%qAddDOF, p%NAddDOF(iWAMIT), 'u%qAddDOF' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call AllocAry( Inputs_WAMIT(I)%qAddDOFDot, p%NAddDOF(iWAMIT), 'u%qAddDOFDot' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call AllocAry( Inputs_WAMIT(I)%qAddDOFDotDot, p%NAddDOF(iWAMIT), 'u%qAddDOFDotDot' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + end if end do if (ErrStat > AbortErrLev) exit do I=1,nTime - ! We need to copy the iWAMIT-th node data from the Inputs(I)%WAMITMesh onto the 1st node of the Inputs_WAMIT(I)%Mesh + ! We need to copy the iWAMIT-th node data from the Inputs(I)%WAMITMesh onto the 1st node of the Inputs_WAMIT(I)%Mesh + Inputs_WAMIT(I)%PtfmRefY = xd%PtfmRefY(I) Inputs_WAMIT(I)%Mesh%TranslationDisp(:,1) = Inputs(I)%WAMITMesh%TranslationDisp(:,iWAMIT) Inputs_WAMIT(I)%Mesh%Orientation (:,:,1)= Inputs(I)%WAMITMesh%Orientation (:,:,iWAMIT) Inputs_WAMIT(I)%Mesh%TranslationVel (:,1) = Inputs(I)%WAMITMesh%TranslationVel (:,iWAMIT) Inputs_WAMIT(I)%Mesh%RotationVel (:,1) = Inputs(I)%WAMITMesh%RotationVel (:,iWAMIT) Inputs_WAMIT(I)%Mesh%TranslationAcc (:,1) = Inputs(I)%WAMITMesh%TranslationAcc (:,iWAMIT) - Inputs_WAMIT(I)%Mesh%RotationAcc (:,1) = Inputs(I)%WAMITMesh%RotationAcc (:,iWAMIT) + Inputs_WAMIT(I)%Mesh%RotationAcc (:,1) = Inputs(I)%WAMITMesh%RotationAcc (:,iWAMIT) + if (p%NAddDOF(iWAMIT)>0_IntKi) then + Inputs_WAMIT(I)%qAddDOF = Inputs(I)%qAddDOF (AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iWAMIT)) + Inputs_WAMIT(I)%qAddDOFDot = Inputs(I)%qAddDOFDot (AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iWAMIT)) + Inputs_WAMIT(I)%qAddDOFDotDot = Inputs(I)%qAddDOFDotDot(AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iWAMIT)) + AddDOFCntr = AddDOFCntr + p%NAddDOF(iWAMIT) + end if end do ! UpdateStates for the iWAMIT-th body call WAMIT_UpdateStates( t, n, Inputs_WAMIT, InputTimes, p%WAMIT(iWAMIT), x%WAMIT(iWAMIT), xd%WAMIT(iWAMIT), z%WAMIT, OtherState%WAMIT(iWAMIT), m%WAMIT(iWAMIT), ErrStat2, ErrMsg2 ) call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) if (ErrStat > AbortErrLev) exit + + ! deallocate temporary inputs + do I=1,nTime + call WAMIT_DestroyInput( Inputs_WAMIT(I), ErrStat2, ErrMsg2 ) + call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) + end do + deallocate(Inputs_WAMIT) end do end if - - ! deallocate temporary inputs - do I=1,nTime - call WAMIT_DestroyInput( Inputs_WAMIT(I), ErrStat2, ErrMsg2 ) - call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) - end do - - deallocate(Inputs_WAMIT) #ifdef USE_FIT ELSE IF ( p%PotMod == 2 ) THEN ! FIT @@ -1359,9 +1435,9 @@ SUBROUTINE HydroDyn_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, TYPE(FIT_InputType) :: Inputs_FIT #endif - REAL(ReKi) :: q(6*p%NBody), qdot(6*p%NBody), qdotsq(6*p%NBody), qdotdot(6*p%NBody) + REAL(ReKi) :: q(p%NDOF), qdot(p%NDOF), qdotsq(p%NDOF), qdotdot(p%NDOF) REAL(ReKi) :: rotdisp(3) ! small angle rotational displacements - integer(IntKi) :: iBody, indxStart, indxEnd ! Counters + integer(IntKi) :: iBody, indxStart, indxEnd, AddDOFCntr ! Counters REAL(ReKi), ALLOCATABLE :: RRg2b(:,:), RRb2g(:,:) REAL(ReKi) :: PtfmRefY REAL(R8Ki) :: PRPRotation(3) @@ -1419,84 +1495,180 @@ SUBROUTINE HydroDyn_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, if ( p%PotMod == 1 ) then - ! Transformation matrices between global and PRP frame - ALLOCATE(RRb2g(6*p%NBody,6*p%NBody),STAT=ErrStat2); if (Failed0("RRb2g")) return; - ALLOCATE(RRg2b(6*p%NBody,6*p%NBody),STAT=ErrStat2); if (Failed0("RRg2b")) return; - RRg2b(:,:) = 0.0_ReKi - do iBody = 1, p%NBody - ! Determine the rotational angles from the direction-cosine matrix - ! rotdisp = GetRotAngs ( u%PtfmRefY, u%WAMITMesh%Orientation(:,:,iBody), ErrStat2, ErrMsg2 ) - ! if (Failed()) return - rotdisp = EulerExtractZYX(u%WAMITMesh%Orientation(:,:,iBody)) - indxStart = (iBody-1)*6+1 - indxEnd = indxStart+5 - q (indxStart:indxEnd) = reshape((/real(u%WAMITMesh%TranslationDisp(:,iBody),ReKi),rotdisp(:)/),(/6/)) - qdot (indxStart:indxEnd) = reshape((/u%WAMITMesh%TranslationVel(:,iBody),u%WAMITMesh%RotationVel(:,iBody)/),(/6/)) - qdotdot(indxStart:indxEnd) = reshape((/u%WAMITMesh%TranslationAcc(:,iBody),u%WAMITMesh%RotationAcc(:,iBody)/),(/6/)) - RRg2b(indxStart:(indxStart+2),indxStart:(indxStart+2)) = u%WAMITMesh%Orientation(:,:,iBody) - RRg2b((indxEnd-2):indxEnd,(indxEnd-2):indxEnd) = u%WAMITMesh%Orientation(:,:,iBody) - ! qdotsq is only used to compute the quadratic damping load, so convert to body frame here - qdotsq (indxStart:indxEnd) = matmul(RRg2b(indxStart:indxEnd,indxStart:indxEnd),qdot(indxStart:indxEnd)) - qdotsq (indxStart:indxEnd) = abs( qdotsq (indxStart:indxEnd) ) * qdotsq (indxStart:indxEnd) - end do - RRb2g = transpose(RRg2b) + ! Compute the load contirbution from user-supplied added stiffness and damping + ! Convention: AddF0 and AddCLin are in the earth-fixed frame + ! AddBLin and AddBQuad are in the body-fixed frame + ! Generalized DOF do not have a frame of reference if ( p%NBodyMod == 1 ) then - ! Compute the load contirbution from user-supplied added stiffness and damping - m%F_PtfmAdd = p%AddF0(:,1) - matmul(p%AddCLin(:,:,1), q) & - - matmul( matmul(RRb2g,p%AddBLin(:,:,1) ), matmul(RRg2b,qdot) ) & - - matmul( matmul(RRb2g,p%AddBQuad(:,:,1)), qdotsq) ! Note: qdotsq is already in body frame, see above + + ! Transformation matrices between global and PRP frame + allocate(RRb2g(p%NDOF,p%NDOF),STAT=ErrStat2); if (Failed0("RRb2g")) return + allocate(RRg2b(p%NDOF,p%NDOF),STAT=ErrStat2); if (Failed0("RRg2b")) return + call Eye(RRg2b,ErrStat2,ErrMsg2); if (Failed()) return + + AddDOFCntr = 0_IntKi do iBody = 1, p%NBody - indxStart = (iBody-1)*6+1 - indxEnd = indxStart+5 - ! Attach to the output point mesh - y%WAMITMesh%Force (:,iBody) = m%F_PtfmAdd(indxStart:indxStart+2) - y%WAMITMesh%Moment(:,iBody) = m%F_PtfmAdd(indxStart+3:indxEnd) + + indxStart = p%BDOFStrt(iBody) + indxEnd = p%BDOFStrt(iBody)+5 + RRg2b(indxStart:(indxStart+2),indxStart:(indxStart+2)) = u%WAMITMesh%Orientation(:,:,iBody) + RRg2b((indxEnd-2):indxEnd,(indxEnd-2):indxEnd) = u%WAMITMesh%Orientation(:,:,iBody) + + ! Determine the rotational angles from the direction-cosine matrix + rotdisp = EulerExtractZYX(u%WAMITMesh%Orientation(:,:,iBody)) + q (indxStart:indxEnd) = reshape((/real(u%WAMITMesh%TranslationDisp(:,iBody),ReKi),rotdisp(:)/),(/6/)) + qdot (indxStart:indxEnd) = reshape((/u%WAMITMesh%TranslationVel(:,iBody),u%WAMITMesh%RotationVel(:,iBody)/),(/6/)) + qdotdot(indxStart:indxEnd) = reshape((/u%WAMITMesh%TranslationAcc(:,iBody),u%WAMITMesh%RotationAcc(:,iBody)/),(/6/)) + + ! Populate generalized modes + if ( p%NAddDOF(iBody) > 0_IntKi ) then + indxStart = p%BDOFStrt(iBody)+6 + indxEnd = p%BDOFStrt(iBody)+5+p%NAddDOF(iBody) + q (indxStart:indxEnd) = u%qAddDOF (AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) + qdot (indxStart:indxEnd) = u%qAddDOFDot (AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) + qdotdot(indxStart:indxEnd) = u%qAddDOFDotDot(AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) + AddDOFCntr = AddDOFCntr + p%NAddDOF(iBody) + end if + + ! qdotsq is only used to compute the quadratic damping load, so convert to body frame here + indxStart = p%BDOFStrt(iBody) + indxEnd = p%BDOFStrt(iBody)+5+p%NAddDOF(iBody) + qdotsq (indxStart:indxEnd) = matmul(RRg2b(indxStart:indxEnd,indxStart:indxEnd),qdot(indxStart:indxEnd)) + qdotsq (indxStart:indxEnd) = abs( qdotsq (indxStart:indxEnd) ) * qdotsq (indxStart:indxEnd) + end do + RRb2g = transpose(RRg2b) + + ! Compute forces due to AddF0, AddCLin, AddBLin, and AddBQuad + m%F_PtfmAdd = p%AddF0(:,1) - matmul(p%AddCLin(:,:,1), q) & + - matmul( matmul(RRb2g,p%AddBLin (:,:,1)), matmul(RRg2b,qdot) ) & + - matmul( matmul(RRb2g,p%AddBQuad(:,:,1)), qdotsq) ! Note: qdotsq is already in body frame, see above + + ! Map to output + AddDOFCntr = 0_IntKi + do iBody = 1, p%NBody + indxStart = p%BDOFStrt(iBody) + indxEnd = p%BDOFStrt(iBody)+5+p%NAddDOF(iBody) + + ! Attach rigid-body forcing to the output point mesh + y%WAMITMesh%Force (:,iBody) = m%F_PtfmAdd(indxStart :indxStart+2) + y%WAMITMesh%Moment(:,iBody) = m%F_PtfmAdd(indxStart+3:indxStart+5) + + ! Save generalized DOF forcing to output array + if ( p%NAddDOF(iBody) > 0_IntKi ) then + y%FAddDOF(AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) = m%F_PtfmAdd(indxStart+6:indxEnd) + AddDOFCntr = AddDOFCntr + p%NAddDOF(iBody) + end if + end do + + IF (ALLOCATED(RRb2g)) DEALLOCATE(RRb2g) + IF (ALLOCATED(RRg2b)) DEALLOCATE(RRg2b) - else + else ! NBodyMod>1 + + AddDOFCntr = 0_IntKi do iBody = 1, p%NBody - indxStart = (iBody-1)*6+1 - indxEnd = indxStart+5 - - m%F_PtfmAdd(indxStart:indxEnd) = p%AddF0(:,iBody) - matmul(p%AddCLin(:,:,iBody), q(indxStart:indxEnd)) & - - matmul( matmul(RRb2g(indxStart:indxEnd,indxStart:indxEnd),p%AddBLin(:,:,iBody)), & - matmul(RRg2b(indxStart:indxEnd,indxStart:indxEnd),qdot(indxStart:indxEnd)) ) & - - matmul( matmul(RRb2g(indxStart:indxEnd,indxStart:indxEnd),p%AddBQuad(:,:,iBody)), qdotsq(indxStart:indxEnd)) - - ! Attach to the output point mesh - y%WAMITMesh%Force (:,iBody) = m%F_PtfmAdd(indxStart:indxStart+2) - y%WAMITMesh%Moment(:,iBody) = m%F_PtfmAdd(indxStart+3:indxEnd) + + ! Transformation matrices between global and PRP frame + allocate(RRb2g(6+p%NAddDOF(iBody),6+p%NAddDOF(iBody)),STAT=ErrStat2) + if (ErrStat2/=0) then + call SetErrStat( ErrID_Fatal, 'Failed to allocate matrix RRb2g.', ErrStat, ErrMsg, RoutineName ) + return + end if + allocate(RRg2b(6+p%NAddDOF(iBody),6+p%NAddDOF(iBody)),STAT=ErrStat2) + if (ErrStat2/=0) then + call SetErrStat( ErrID_Fatal, 'Failed to allocate matrix RRg2b.', ErrStat, ErrMsg, RoutineName ) + return + end if + call Eye(RRg2b,ErrStat2,ErrMsg2); if (Failed()) return + RRg2b(1:3,1:3) = u%WAMITMesh%Orientation(:,:,iBody) + RRg2b(4:6,4:6) = u%WAMITMesh%Orientation(:,:,iBody) + RRb2g = transpose(RRg2b) + + ! Populate rigid-body modes + rotdisp = EulerExtractZYX(u%WAMITMesh%Orientation(:,:,iBody)) + indxStart = p%BDOFStrt(iBody) + indxEnd = p%BDOFStrt(iBody)+5 + q (indxStart:indxEnd) = reshape((/real(u%WAMITMesh%TranslationDisp(:,iBody),ReKi),rotdisp(:)/),(/6/)) + qdot (indxStart:indxEnd) = reshape((/u%WAMITMesh%TranslationVel(:,iBody),u%WAMITMesh%RotationVel(:,iBody)/),(/6/)) + qdotdot(indxStart:indxEnd) = reshape((/u%WAMITMesh%TranslationAcc(:,iBody),u%WAMITMesh%RotationAcc(:,iBody)/),(/6/)) + + ! Populate generalized modes + if ( p%NAddDOF(iBody) > 0_IntKi ) then + indxStart = p%BDOFStrt(iBody)+6 + indxEnd = p%BDOFStrt(iBody)+5+p%NAddDOF(iBody) + q (indxStart:indxEnd) = u%qAddDOF (AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) + qdot (indxStart:indxEnd) = u%qAddDOFDot (AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) + qdotdot(indxStart:indxEnd) = u%qAddDOFDotDot(AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) + ! AddDOFCntr is incremented below. + end if + + ! Compute forces due to AddF0, AddCLin, AddBLin, and AddBQuad + indxStart = p%BDOFStrt(iBody) + indxEnd = p%BDOFStrt(iBody)+5+p%NAddDOF(iBody) + + ! qdotsq is only used to compute the quadratic damping load, so convert to body frame here + qdotsq (indxStart:indxEnd) = matmul(RRg2b, qdot(indxStart:indxEnd)) + qdotsq (indxStart:indxEnd) = abs( qdotsq(indxStart:indxEnd) ) * qdotsq (indxStart:indxEnd) + + m%F_PtfmAdd(indxStart:indxEnd) = p%AddF0(:,iBody) & + - matmul(p%AddCLin(:,:,iBody), q(indxStart:indxEnd)) & + - matmul( matmul(RRb2g,p%AddBLin(:,:,iBody)), & + matmul(RRg2b,qdot(indxStart:indxEnd)) ) & + - matmul( matmul(RRb2g,p%AddBQuad(:,:,iBody)), & + qdotsq(indxStart:indxEnd) ) + + ! Attach rigid-body forcing to the output point mesh + y%WAMITMesh%Force (:,iBody) = m%F_PtfmAdd(indxStart :indxStart+2) + y%WAMITMesh%Moment(:,iBody) = m%F_PtfmAdd(indxStart+3:indxStart+5) + + ! Save generalized DOF forcing to output array + if ( p%NAddDOF(iBody) > 0_IntKi ) then + y%FAddDOF(AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) = m%F_PtfmAdd(indxStart+6:indxEnd) + AddDOFCntr = AddDOFCntr + p%NAddDOF(iBody) + end if + + IF (ALLOCATED(RRb2g)) DEALLOCATE(RRb2g) + IF (ALLOCATED(RRg2b)) DEALLOCATE(RRg2b) + end do end if m%F_Waves = 0.0_ReKi - if (allocated(m%u_WAMIT)) then ! Check that we allocated u_WAMIT, otherwise there is an error checking the mesh + if (allocated(m%u_WAMIT)) then ! Check that we allocated u_WAMIT, otherwise there is an error checking the mesh if ( m%u_WAMIT(1)%Mesh%Committed ) then ! Make sure we are using WAMIT / there is a valid mesh if ( p%NBodyMod == 1 .or. p%NBody == 1 ) then - ! Copy the inputs from the HD mesh into the WAMIT mesh + ! Copy the inputs from the HD mesh into the WAMIT mesh call MeshCopy( u%WAMITMesh, m%u_WAMIT(1)%Mesh, MESH_UPDATECOPY, ErrStat2, ErrMsg2 ) if (Failed()) return - ! m%u_WAMIT(1)%PtfmRefY = u%PtfmRefY - m%u_WAMIT(1)%PtfmRefY = PtfmRefY + m%u_WAMIT(1)%PtfmRefY = PtfmRefY + if ( p%HasAddDOF ) then + m%u_WAMIT(1)%qAddDOF = u%qAddDOF + m%u_WAMIT(1)%qAddDOFDot = u%qAddDOFDot + m%u_WAMIT(1)%qAddDOFDotDot = u%qAddDOFDotDot + end if call WAMIT_CalcOutput( Time, m%u_WAMIT(1), p%WAMIT(1), x%WAMIT(1), xd%WAMIT(1), & z%WAMIT, OtherState%WAMIT(1), y%WAMIT(1), m%WAMIT(1), ErrStat2, ErrMsg2 ) if (Failed()) return do iBody=1,p%NBody y%WAMITMesh%Force (:,iBody) = y%WAMITMesh%Force (:,iBody) + y%WAMIT(1)%Mesh%Force (:,iBody) y%WAMITMesh%Moment(:,iBody) = y%WAMITMesh%Moment(:,iBody) + y%WAMIT(1)%Mesh%Moment(:,iBody) - end do - ! Copy the F_Waves1 information to the HydroDyn level so we can combine it with the 2nd order - m%F_Waves = m%F_Waves + m%WAMIT(1)%F_Waves1 + if ( p%HasAddDOF ) then + y%FAddDOF = y%FAddDOF + y%WAMIT(1)%FAddDOF + end if + ! Copy the F_Waves1 information to the HydroDyn level so we can combine it with the 2nd order + m%F_Waves = m%F_Waves + m%WAMIT(1)%F_Waves1 else + AddDOFCntr = 0_IntKi do iBody=1,p%NBody - ! We need to copy the iWAMIT-th node data from the Inputs(I)%WAMITMesh onto the 1st node of the Inputs_WAMIT(I)%Mesh + ! We need to copy the iWAMIT-th node data from the Inputs(I)%WAMITMesh onto the 1st node of the Inputs_WAMIT(I)%Mesh m%u_WAMIT(iBody)%Mesh%TranslationDisp(:,1) = u%WAMITMesh%TranslationDisp(:,iBody) m%u_WAMIT(iBody)%Mesh%Orientation (:,:,1)= u%WAMITMesh%Orientation (:,:,iBody) m%u_WAMIT(iBody)%Mesh%TranslationVel (:,1) = u%WAMITMesh%TranslationVel (:,iBody) @@ -1505,24 +1677,37 @@ SUBROUTINE HydroDyn_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, m%u_WAMIT(iBody)%Mesh%RotationAcc (:,1) = u%WAMITMesh%RotationAcc (:,iBody) m%u_WAMIT(iBody)%PtfmRefY = PtfmRefY + + if ( p%NAddDOF(iBody) > 0_IntKi ) then + m%u_WAMIT(iBody)%qAddDOF = u%qAddDOF (AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) + m%u_WAMIT(iBody)%qAddDOFDot = u%qAddDOFDot (AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) + m%u_WAMIT(iBody)%qAddDOFDotDot = u%qAddDOFDotDot(AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) + ! AddDOFCntr is incremented below. + end if + call WAMIT_CalcOutput( Time, m%u_WAMIT(iBody), p%WAMIT(iBody), x%WAMIT(iBody), xd%WAMIT(iBody), & z%WAMIT, OtherState%WAMIT(iBody), y%WAMIT(iBody), m%WAMIT(iBody), ErrStat2, ErrMsg2 ) if (Failed()) return y%WAMITMesh%Force (:,iBody) = y%WAMITMesh%Force (:,iBody) + y%WAMIT(iBody)%Mesh%Force (:,1) y%WAMITMesh%Moment(:,iBody) = y%WAMITMesh%Moment(:,iBody) + y%WAMIT(iBody)%Mesh%Moment(:,1) - ! Copy the F_Waves1 information to the HydroDyn level so we can combine it with the 2nd order - indxStart = (iBody-1)*6+1 - indxEnd = indxStart+5 + if ( p%NAddDOF(iBody) > 0_IntKi ) then + y%FAddDOF(AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) = y%FAddDOF(AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) + y%WAMIT(iBody)%FAddDOF + AddDOFCntr = AddDOFCntr + p%NAddDOF(iBody) + end if + + ! Copy the F_Waves1 information to the HydroDyn level so we can combine it with the 2nd order + indxStart = p%BDOFStrt(iBody) + indxEnd = p%BDOFStrt(iBody)+5+p%NAddDOF(iBody) m%F_Waves(indxStart:indxEnd) = m%F_Waves(indxStart:indxEnd) + m%WAMIT(iBody)%F_Waves1 + end do end if end if ! m%u_WAMIT(1)%Mesh%Committed end if ! m%u_WAMIT is allocated - - ! Second order + ! Second order <- No generalized DOF if (p%WAMIT2used) then if ( p%NBodyMod == 1 .or. p%NBody == 1 ) then @@ -1532,8 +1717,13 @@ SUBROUTINE HydroDyn_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, y%WAMITMesh%Force (:,iBody) = y%WAMITMesh%Force (:,iBody) + y%WAMIT2(1)%Mesh%Force (:,iBody) y%WAMITMesh%Moment(:,iBody) = y%WAMITMesh%Moment(:,iBody) + y%WAMIT2(1)%Mesh%Moment(:,iBody) end do - ! Add F_Waves2 to m%F_Waves - m%F_Waves = m%F_Waves + m%WAMIT2(1)%F_Waves2 + + ! Add F_Waves2 to m%F_Waves + do iBody=1,p%NBody + indxStart = p%BDOFStrt(iBody) + indxEnd = indxStart+5 + m%F_Waves(indxStart:indxEnd) = m%F_Waves(indxStart:indxEnd) + m%WAMIT2(1)%F_Waves2(6*(iBody-1)+1:6*(iBody-1)+6) + end do else do iBody=1,p%NBody @@ -1542,8 +1732,8 @@ SUBROUTINE HydroDyn_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, y%WAMITMesh%Force (:,iBody) = y%WAMITMesh%Force (:,iBody) + y%WAMIT2(iBody)%Mesh%Force (:,1) y%WAMITMesh%Moment(:,iBody) = y%WAMITMesh%Moment(:,iBody) + y%WAMIT2(iBody)%Mesh%Moment(:,1) - ! Copy the F_Waves1 information to the HydroDyn level so we can combine it with the 2nd order - indxStart = (iBody-1)*6+1 + ! Add F_Waves2 to m%F_Waves + indxStart = p%BDOFStrt(iBody) indxEnd = indxStart+5 m%F_Waves(indxStart:indxEnd) = m%F_Waves(indxStart:indxEnd) + m%WAMIT2(iBody)%F_Waves2 end do @@ -1595,14 +1785,11 @@ SUBROUTINE HydroDyn_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, END IF m%LastOutTime = Time - - IF (ALLOCATED(RRb2g)) DEALLOCATE(RRb2g) - IF (ALLOCATED(RRg2b)) DEALLOCATE(RRg2b) contains logical function Failed() - call SetErrStat(errStat2, errMsg2, errStat, errMsg, RoutineName) - Failed = errStat >= AbortErrLev + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + Failed = ErrStat >= AbortErrLev end function Failed ! check for failed where /= 0 is fatal logical function Failed0(txt) @@ -1701,8 +1888,8 @@ SUBROUTINE HydroDyn_CalcConstrStateResidual( Time, u, p, x, xd, z, OtherState, m ! Initialize ErrStat - ErrStat = ErrID_None - ErrMsg = "" + ErrStat = ErrID_None + ErrMsg = "" ! Nothing to do here since none of the sub-modules have contraint states z_residual = z diff --git a/modules/hydrodyn/src/HydroDyn.txt b/modules/hydrodyn/src/HydroDyn.txt index 529e73214d..ec28bc5f94 100644 --- a/modules/hydrodyn/src/HydroDyn.txt +++ b/modules/hydrodyn/src/HydroDyn.txt @@ -46,6 +46,7 @@ typedef ^ ^ INTEGER typedef ^ ^ INTEGER NBodyMod - - - "Body coupling model {1: include coupling terms between each body and NBody in HydroDyn equals NBODY in WAMIT, 2: neglect coupling terms between each body and NBODY=1 with XBODY=0 in WAMIT, 3: Neglect coupling terms between each body and NBODY=1 with XBODY=/0 in WAMIT} (switch) [only used when PotMod=1]" - typedef ^ ^ ReKi PtfmVol0 {:} - - "" - typedef ^ ^ LOGICAL HasWAMIT - - - ".TRUE. if using WAMIT model, .FALSE. otherwise" - +typedef ^ ^ LOGICAL HasAddDOF - - - ".TRUE. if additional generalized DOF are present, .FALSE. otherwise" - typedef ^ ^ ReKi WAMITULEN {:} - - "" - typedef ^ ^ ReKi PtfmRefxt {:} - - "The xt offset of the body reference point(s) from (0,0,0) [1 to NBody; only used when PotMod=1; must be 0.0 if NBodyMod=2 ]" (m) typedef ^ ^ ReKi PtfmRefyt {:} - - "The yt offset of the body reference point(s) from (0,0,0) [1 to NBody; only used when PotMod=1; must be 0.0 if NBodyMod=2 ]" (m) @@ -53,6 +54,7 @@ typedef ^ ^ ReKi typedef ^ ^ R8Ki PtfmRefztRot {:} - - "The rotation about zt of the body reference frame(s) from xt/yt" radians typedef ^ ^ ReKi PtfmCOBxt {:} - - "" - typedef ^ ^ ReKi PtfmCOByt {:} - - "" - +typedef ^ ^ INTEGER NAddDOF {:} - - "Number of additional generalized degrees of freedom" - typedef ^ ^ WAMIT_InitInputType WAMIT - - - "Initialization data for WAMIT module" - typedef ^ ^ WAMIT2_InitInputType WAMIT2 - - - "Initialization data for WAMIT2 module" - typedef ^ ^ Morison_InitInputType Morison - - - "Initialization data for Morison module" - @@ -135,7 +137,11 @@ typedef ^ ^ LOGICAL typedef ^ ^ Morison_ParameterType Morison - - - "Parameter data for the Morison module" - typedef ^ ^ INTEGER PotMod - - - "1 if using WAMIT model, 0 if no potential flow model, or 2 if FIT model" - typedef ^ ^ INTEGER NBody - - - "[>=1; only used when PotMod=1. If NBodyMod=1, the WAMIT data contains a vector of size 6*NBody x 1 and matrices of size 6*NBody x 6*NBody; if NBodyMod>1, there are NBody sets of WAMIT data each with a vector of size 6 x 1 and matrices of size 6 x 6]" - -typedef ^ ^ INTEGER NBodyMod - - - "Body coupling model {1: include coupling terms between each body and NBody in HydroDyn equals NBODY in WAMIT, 2: neglect coupling terms between each body and NBODY=1 with XBODY=0 in WAMIT, 3: Neglect coupling terms between each body and NBODY=1 with XBODY=/0 in WAMIT} (switch) [only used when PotMod=1]" - +typedef ^ ^ INTEGER NBodyMod - - - "Body coupling model {1: include coupling terms between each body and NBody in HydroDyn equals NBODY in WAMIT, 2: neglect coupling terms between each body and NBODY=1 with XBODY=0 in WAMIT, 3: Neglect coupling terms between each body and NBODY=1 with XBODY=/0 in WAMIT} (switch) [only used when PotMod=1]" - +typedef ^ ^ LOGICAL HasAddDOF - - - ".TRUE. if additional generalized DOF are present, .FALSE. otherwise" - +typedef ^ ^ INTEGER NAddDOF {:} - - "Number of additional generalized degrees of freedom" - +typedef ^ ^ INTEGER NDOF - - - "Total number of degrees of freedom" - +typedef ^ ^ INTEGER BDOFStrt {:} - - "Starting DOF index for each body" - typedef ^ ^ INTEGER totalStates - - - "Number of excitation and radiation states for all WAMIT bodies" - typedef ^ ^ INTEGER totalExctnStates - - - "Number of excitation states for all WAMIT bodies" - typedef ^ ^ INTEGER totalRdtnStates - - - "Number of radiation states for all WAMIT bodies" - @@ -167,17 +173,20 @@ typedef ^ ^ ReKi # Define inputs that are contained on the mesh here: # typedef ^ InputType Morison_InputType Morison - - - "Morison module inputs" - -typedef ^ InputType MeshType WAMITMesh - - - "Motions at the WAMIT reference point(s) in the inertial frame" - -typedef ^ InputType MeshType PRPMesh - - - "Motions at the Platform reference point in the inertial frame" - -# +typedef ^ ^ MeshType WAMITMesh - - - "Motions at the WAMIT reference point(s) in the inertial frame" - +typedef ^ ^ MeshType PRPMesh - - - "Motions at the Platform reference point in the inertial frame" - +typedef ^ ^ ReKi qAddDOF {:} - - "Displacement of potential-flow generalized DOF" - +typedef ^ ^ ReKi qAddDOFDot {:} - - "Velocity of potential-flow generalized DOF" - +typedef ^ ^ ReKi qAddDOFDotDot {:} - - "Acceleration of potential-flow generalized DOF" - # # ..... Outputs ................................................................................................................... # Define outputs that are contained on the mesh here: -typedef ^ OutputType WAMIT_OutputType WAMIT {:} - - "WAMIT module outputs" - -typedef ^ OutputType WAMIT2_OutputType WAMIT2 {:} - - "WAMIT2 module outputs" - -typedef ^ ^ Morison_OutputType Morison - - - "Morison module outputs" - -typedef ^ OutputType MeshType WAMITMesh - - - "Point Loads at the WAMIT reference point(s) in the inertial frame" - -typedef ^ ^ ReKi WriteOutput {:} - - "Outputs to be written to the output file(s)" - +typedef ^ OutputType WAMIT_OutputType WAMIT {:} - - "WAMIT module outputs" - +typedef ^ ^ WAMIT2_OutputType WAMIT2 {:} - - "WAMIT2 module outputs" - +typedef ^ ^ Morison_OutputType Morison - - - "Morison module outputs" - +typedef ^ ^ MeshType WAMITMesh - - - "Point Loads at the WAMIT reference point(s) in the inertial frame" - +typedef ^ ^ ReKi WriteOutput {:} - - "Outputs to be written to the output file(s)" - +typedef ^ ^ ReKi FAddDOF {:} - - "Additional generalized DOF forcing " - # # # ..... Misc/Optimization variables................................................................................................. diff --git a/modules/hydrodyn/src/HydroDyn_DriverCode.f90 b/modules/hydrodyn/src/HydroDyn_DriverCode.f90 index 185c259746..ffee717a36 100644 --- a/modules/hydrodyn/src/HydroDyn_DriverCode.f90 +++ b/modules/hydrodyn/src/HydroDyn_DriverCode.f90 @@ -233,6 +233,20 @@ PROGRAM HydroDynDriver end if END IF + IF ( drvrData%PRPInputsMod<-1_IntKi .and. drvrData%NAddDOF>0 ) THEN + ErrStat = ErrID_Fatal + ErrMsg = 'When multiple WAMIT bodies are present, additional generalized DOF are not supported. Need to set NAddDOF=0.' + CALL CheckError() + END IF + + IF ( p%PotMod == 1_IntKi ) THEN + IF ( drvrData%NAddDOF > p%NAddDOF(1) ) THEN + ErrStat = ErrID_Fatal + ErrMsg = 'NAddDOF in the HydroDyn driver input file is greater than that in the HydroDyn primary input file. This is not allowed.' + CALL CheckError() + END IF + END IF + ! Set initial inputs at t = 0 IF (( drvrData%PRPInputsMod /= 2 ) .AND. ( drvrData%PRPInputsMod >= 0 )) THEN ! Set any steady-state inputs, once before the time-stepping loop (these don't change, so we don't need to update them in the time-marching simulation) diff --git a/modules/hydrodyn/src/HydroDyn_DriverSubs.f90 b/modules/hydrodyn/src/HydroDyn_DriverSubs.f90 index 5a370672ce..4723bb37ce 100644 --- a/modules/hydrodyn/src/HydroDyn_DriverSubs.f90 +++ b/modules/hydrodyn/src/HydroDyn_DriverSubs.f90 @@ -89,6 +89,7 @@ MODULE HydroDynDriverSubs REAL(R8Ki), ALLOCATABLE :: PRPin(:,:) ! Variable for storing time, forces, and body velocities, in m/s or rad/s for PRP REAL(R8Ki), ALLOCATABLE :: PRPinTime(:) ! Variable for storing time, forces, and body velocities, in m/s or rad/s for PRP INTEGER(IntKi) :: NBody ! Number of WAMIT bodies to work with if prescribing kinematics on each body (PRPInputsMod<0) + INTEGER(IntKi) :: NAddDOF ! Number of additional generalized DOF of each WAMIT body (currently only supports NBody=1, i.e., PRPInputsMod=-1) TYPE(HD_Drvr_OutputFile) :: OutData character(500) :: FTitle ! description from 2nd line of driver file @@ -254,6 +255,10 @@ SUBROUTINE ReadDriverInputFile( FileName, drvrData, ErrStat, ErrMsg ) CALL ReadVar ( UnIn, FileName, drvrData%PRPInputsMod, 'PRPInputsMod', 'Model for the PRP (principal reference point) inputs', ErrStat2, ErrMsg2, UnEchoLocal ) if (Failed()) return + ! NAddDOF + CALL ReadVar ( UnIn, FileName, drvrData%NAddDOF, 'NAddDOF', 'Number of additional generalized DOF of each WAMIT body (currently only supports NBODY=1, i.e., PRPInputsMod=-1)', ErrStat2, ErrMsg2, UnEchoLocal ) + if (Failed()) return + ! PtfmRefzt CALL ReadVar ( UnIn, FileName, drvrData%PtfmRefzt, 'PtfmRefzt', 'Vertical distance from the ground level to the platform reference point', ErrStat, ErrMsg, UnEchoLocal ) if (Failed()) return @@ -323,7 +328,7 @@ SUBROUTINE ReadPRPInputsFile( drvrData, ErrStat, ErrMsg ) INTEGER :: UnEchoLocal ! The local unit number for this module's echo file ! CHARACTER(1024) :: EchoFile ! Name of HydroDyn echo file - integer(IntKi) :: n, sizeAry + integer(IntKi) :: n, sizeAry, sizeAryActual integer(IntKi) :: errStat2 ! temporary error status of the operation character(ErrMsgLen) :: errMsg2 ! temporary error message character(*), parameter :: RoutineName = 'ReadDriverInputFile' @@ -345,7 +350,11 @@ SUBROUTINE ReadPRPInputsFile( drvrData, ErrStat, ErrMsg ) ! multi-body kinematics driver option (time, PRP DOFs 1-6, body1 DOFs 1-6, body2 DOFs 1-6...) drvrData%NBody = -drvrData%PRPInputsMod - sizeAry = 7 + 6*drvrData%NBody + IF ( drvrData%NBody == 1_IntKi ) THEN + sizeAry = 7 + 6*drvrData%NBody + drvrData%NAddDOF + ELSE + sizeAry = 7 + 6*drvrData%NBody + END IF call WrScr( 'NBody is '//trim(Num2LStr(drvrData%NBody))//' and planning to read in '//trim(Num2LStr(sizeAry))//' columns from the input file' ) @@ -354,15 +363,22 @@ SUBROUTINE ReadPRPInputsFile( drvrData, ErrStat, ErrMsg ) RETURN END IF - + ! Open the (PRP or WAMIT) inputs data file CALL GetNewUnit( UnIn ) CALL OpenFInpFile ( UnIn, trim(drvrData%PRPInputsFile), ErrStat2, ErrMsg2 ) if (Failed()) return ! Determine how many lines of data (how many time steps) are in the PRP input file - CALL GetFileLength(UnIn, trim(drvrData%PRPInputsFile), sizeAry, NumDataLines, NumHeaderLines, ErrStat2, ErrMsg2) + CALL GetFileLength(UnIn, trim(drvrData%PRPInputsFile), sizeAryActual, NumDataLines, NumHeaderLines, ErrStat2, ErrMsg2) if (Failed()) return + + if (sizeAry /= sizeAryActual) then + ErrStat = ErrID_Fatal + ErrMsg = 'Expected '//trim(num2lstr(sizeAry))//' columns in the PRPInputsFile but found '//trim(num2lstr(sizeAryActual))//' columns instead.' + return + end if + CALL AllocAry(TmpAry, sizeAry, 'TmpAry', ErrStat2, ErrMsg2) if (Failed()) return CALL AllocAry(drvrData%PRPin, NumDataLines, sizeAry-1, 'PRPin', ErrStat2, ErrMsg2) @@ -792,6 +808,12 @@ SUBROUTINE SetHDInputs_Constant(u_HD, mappingData, drvrData, ErrStat, ErrMsg) CALL PRP_TransferToMotionInputs(u_HD, mappingData, ErrStat2, ErrMsg2 ) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + IF (ALLOCATED( u_HD%qAddDOF )) THEN + u_HD%qAddDOF = 0.0_ReKi + u_HD%qAddDOFDot = 0.0_ReKi + u_HD%qAddDOFDotDot = 0.0_ReKi + END IF + END IF END SUBROUTINE SetHDInputs_Constant @@ -818,6 +840,12 @@ SUBROUTINE SetHDInputs(time, n, u_HD, mappingData, drvrData, ErrStat, ErrMsg) ErrStat = ErrID_None ErrMsg = "" + IF (ALLOCATED( u_HD%qAddDOF )) THEN + u_HD%qAddDOF = 0.0_ReKi + u_HD%qAddDOFDot = 0.0_ReKi + u_HD%qAddDOFDotDot = 0.0_ReKi + END IF + ! PRPInputsMod 2: Reads time series of positions, velocities, and accelerations for the platform reference point IF ( drvrData%PRPInputsMod == 2 ) THEN @@ -859,7 +887,7 @@ SUBROUTINE SetHDInputs(time, n, u_HD, mappingData, drvrData, ErrStat, ErrMsg) call SetErrStat(ErrID_Fatal, 'time does not match PRP input file data', ErrStat, ErrMsg, RoutineName) return end if - + ! platform reference point (PRP), and body 1-NBody displacements u_HD%PRPMesh%TranslationDisp(:,1) = drvrData%PRPin(n,1:3) DO I=1,drvrData%NBody @@ -868,11 +896,15 @@ SUBROUTINE SetHDInputs(time, n, u_HD, mappingData, drvrData, ErrStat, ErrMsg) ! PRP and body 1-NBody orientations (skipping the maxAngle stuff) u_HD%PRPMesh%Orientation(:,:,1) = EulerConstructZYX(drvrData%PRPin(n,4:6)) - DO I=1, drvrData%NBody u_HD%WAMITMesh%Orientation(:,:,I) = EulerConstructZYX(drvrData%PRPin(n,(6*I+4):(6*I+6))) END DO + ! Generalized DOF displacement of WAMIT body + IF ( drvrData%NAddDOF > 0_IntKi ) THEN ! Currently only allowed if NBody = 1 + u_HD%qAddDOF(1:drvrData%NAddDOF) = drvrData%PRPin(n, 13:(12+drvrData%NAddDOF)) + END IF + ! use finite differences for velocities and accelerations IF (n == 1) THEN ! use forward differences for first time step indxHigh = n+2 @@ -887,6 +919,10 @@ SUBROUTINE SetHDInputs(time, n, u_HD, mappingData, drvrData, ErrStat, ErrMsg) u_HD%WAMITMesh%RotationVel( :,I) = (drvrData%PRPin(indxMid, 6*I+4:6*I+6) - drvrData%PRPin(indxLow, 6*I+4:6*I+6))/drvrData%TimeInterval END DO + IF ( drvrData%NAddDOF > 0_IntKi ) THEN ! Currently only allowed if NBody = 1 + u_HD%qAddDOFdot(1:drvrData%NAddDOF) = ( drvrData%PRPin(indxMid, 13:(12+drvrData%NAddDOF)) - drvrData%PRPin(indxLow, 13:(12+drvrData%NAddDOF)) )/drvrData%TimeInterval + END IF + ELSE IF (n >= drvrData%NSteps) THEN ! use backward differences for last time step indxHigh = n indxMid = n-1 @@ -899,7 +935,11 @@ SUBROUTINE SetHDInputs(time, n, u_HD, mappingData, drvrData, ErrStat, ErrMsg) u_HD%WAMITMesh%TranslationVel(:,I) = (drvrData%PRPin(indxHigh, 6*I+1:6*I+3) - drvrData%PRPin(indxMid, 6*I+1:6*I+3))/drvrData%TimeInterval u_HD%WAMITMesh%RotationVel( :,I) = (drvrData%PRPin(indxHigh, 6*I+4:6*I+6) - drvrData%PRPin(indxMid, 6*I+4:6*I+6))/drvrData%TimeInterval END DO - + + IF ( drvrData%NAddDOF > 0_IntKi ) THEN ! Currently only allowed if NBody = 1 + u_HD%qAddDOFdot(1:drvrData%NAddDOF) = ( drvrData%PRPin(indxHigh, 13:(12+drvrData%NAddDOF)) - drvrData%PRPin(indxMid, 13:(12+drvrData%NAddDOF)) )/drvrData%TimeInterval + END IF + ELSE ! otherwise use central differences for intermediate time steps indxHigh = n+1 indxMid = n @@ -912,19 +952,28 @@ SUBROUTINE SetHDInputs(time, n, u_HD, mappingData, drvrData, ErrStat, ErrMsg) u_HD%WAMITMesh%TranslationVel(:,I) = (drvrData%PRPin(indxHigh, 6*I+1:6*I+3) - drvrData%PRPin(indxLow, 6*I+1:6*I+3))*0.5/drvrData%TimeInterval u_HD%WAMITMesh%RotationVel( :,I) = (drvrData%PRPin(indxHigh, 6*I+4:6*I+6) - drvrData%PRPin(indxLow, 6*I+4:6*I+6))*0.5/drvrData%TimeInterval END DO - + + IF ( drvrData%NAddDOF > 0_IntKi ) THEN ! Currently only allowed if NBody = 1 + u_HD%qAddDOFdot(1:drvrData%NAddDOF) = ( drvrData%PRPin(indxHigh, 13:(12+drvrData%NAddDOF)) - drvrData%PRPin(indxLow, 13:(12+drvrData%NAddDOF)) )/drvrData%TimeInterval + END IF + END IF ! TO DO: Missing the first and last step below! ! calculate accelerations based on displacements: - u_HD%PRPMesh%TranslationAcc(:,1) = (drvrData%PRPin(indxHigh, 1:3) - 2*drvrData%PRPin(indxMid, 1:3) + drvrData%PRPin(indxLow, 1:3)) /(drvrData%TimeInterval**2) - u_HD%PRPMesh%RotationAcc( :,1) = (drvrData%PRPin(indxHigh, 4:6) - 2*drvrData%PRPin(indxMid, 4:6) + drvrData%PRPin(indxLow, 4:6)) /(drvrData%TimeInterval**2) + u_HD%PRPMesh%TranslationAcc(:,1) = (drvrData%PRPin(indxHigh, 1:3) - 2.0_ReKi*drvrData%PRPin(indxMid, 1:3) + drvrData%PRPin(indxLow, 1:3)) /(drvrData%TimeInterval**2) + u_HD%PRPMesh%RotationAcc( :,1) = (drvrData%PRPin(indxHigh, 4:6) - 2.0_ReKi*drvrData%PRPin(indxMid, 4:6) + drvrData%PRPin(indxLow, 4:6)) /(drvrData%TimeInterval**2) DO I=1,drvrData%NBody - u_HD%WAMITMesh%TranslationAcc(:,I) = (drvrData%PRPin(indxHigh, 6*I+1:6*I+3) - 2*drvrData%PRPin(indxMid, 6*I+1:6*I+3) + drvrData%PRPin(indxLow, 6*I+1:6*I+3))/(drvrData%TimeInterval**2) - u_HD%WAMITMesh%RotationAcc( :,I) = (drvrData%PRPin(indxHigh, 6*I+4:6*I+6) - 2*drvrData%PRPin(indxMid, 6*I+4:6*I+6) + drvrData%PRPin(indxLow, 6*I+4:6*I+6))/(drvrData%TimeInterval**2) + u_HD%WAMITMesh%TranslationAcc(:,I) = (drvrData%PRPin(indxHigh, 6*I+1:6*I+3) - 2.0_ReKi*drvrData%PRPin(indxMid, 6*I+1:6*I+3) + drvrData%PRPin(indxLow, 6*I+1:6*I+3))/(drvrData%TimeInterval**2) + u_HD%WAMITMesh%RotationAcc( :,I) = (drvrData%PRPin(indxHigh, 6*I+4:6*I+6) - 2.0_ReKi*drvrData%PRPin(indxMid, 6*I+4:6*I+6) + drvrData%PRPin(indxLow, 6*I+4:6*I+6))/(drvrData%TimeInterval**2) END DO - + + IF ( drvrData%NAddDOF > 0_IntKi ) THEN ! Currently only allowed if NBody = 1 + u_HD%qAddDOFdotdot(1:drvrData%NAddDOF) = ( drvrData%PRPin(indxHigh, 13:(12+drvrData%NAddDOF)) - 2.0_ReKi*drvrData%PRPin(indxMid, 13:(12+drvrData%NAddDOF)) + drvrData%PRPin(indxLow, 13:(12+drvrData%NAddDOF)) ) & + /(drvrData%TimeInterval**2) + END IF + ! Rotation - Compute angular velocity and acceleration from the rotation angles and time derivatives call EulerDerivativeToAngVelAcc(drvrData%PRPin(n,4:6),& u_HD%PRPMesh%RotationVel(:,1),& @@ -945,7 +994,7 @@ SUBROUTINE SetHDInputs(time, n, u_HD, mappingData, drvrData, ErrStat, ErrMsg) ! half of the PRP_TransferToMotionInputs routine: IF ( u_HD%Morison%Mesh%Initialized ) THEN - ! Map kinematics to the WAMIT mesh with 1 to NBody nodes + ! Map kinematics to the Morison mesh only CALL Transfer_Point_to_Point( u_HD%PRPMesh, u_HD%Morison%Mesh, mappingData%HD_Ref_2_M_P, ErrStat2, ErrMsg2 ) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) END IF diff --git a/modules/hydrodyn/src/HydroDyn_Input.f90 b/modules/hydrodyn/src/HydroDyn_Input.f90 index 84298e59a3..94caccc810 100644 --- a/modules/hydrodyn/src/HydroDyn_Input.f90 +++ b/modules/hydrodyn/src/HydroDyn_Input.f90 @@ -81,6 +81,7 @@ SUBROUTINE HydroDyn_ParseInput( InputFileName, OutRootName, FileInfo_In, InputFi INTEGER :: UnEc ! The local unit number for this module's echo file CHARACTER(1024) :: EchoFile ! Name of HydroDyn echo file CHARACTER(MaxFileInfoLineLen) :: Line ! String to temporarially hold value of read line + INTEGER :: NDOF ! Number of DOF in each WAMIT module real(ReKi), ALLOCATABLE :: tmpVec1(:), tmpVec2(:) ! Temporary arrays for WAMIT data integer(IntKi) :: startIndx, endIndx ! indices into working arrays INTEGER, ALLOCATABLE :: tmpArray(:) ! Temporary array storage of the joint output list @@ -206,7 +207,7 @@ SUBROUTINE HydroDyn_ParseInput( InputFileName, OutRootName, FileInfo_In, InputFi CALL AllocAry( InputFileData%PtfmVol0 , InputFileData%NBody, 'PtfmVol0' , ErrStat2, ErrMsg2); if (Failed()) return; CALL AllocAry( InputFileData%PtfmCOBxt , InputFileData%NBody, 'PtfmCOBxt' , ErrStat2, ErrMsg2); if (Failed()) return; CALL AllocAry( InputFileData%PtfmCOByt , InputFileData%NBody, 'PtfmCOByt' , ErrStat2, ErrMsg2); if (Failed()) return; - + CALL AllocAry( InputFileData%NAddDOF , InputFileData%NBody, 'NAddDOF' , ErrStat2, ErrMsg2); if (Failed()) return; ! PotFile - Root name of Potential flow data files (Could be WAMIT files or the FIT input file) call ParseAry( FileInfo_In, CurLine, 'PotFile', InputFileData%PotFile, InputFileData%nWAMITObj, ErrStat2, ErrMsg2, UnEc ) @@ -245,6 +246,8 @@ SUBROUTINE HydroDyn_ParseInput( InputFileName, OutRootName, FileInfo_In, InputFi call ParseAry( FileInfo_In, CurLine, 'PtfmCOByt', InputFileData%PtfmCOByt, InputFileData%NBody, ErrStat2, ErrMsg2, UnEc ) if (Failed()) return; + call ParseAry( FileInfo_In, CurLine, 'NAddDOF', InputFileData%NAddDOF, InputFileData%NBody, ErrStat2, ErrMsg2, UnEc ) + if (Failed()) return; !------------------------------------------------------------------------------------------------- ! Data section for 2nd order WAMIT forces @@ -277,67 +280,66 @@ SUBROUTINE HydroDyn_ParseInput( InputFileName, OutRootName, FileInfo_In, InputFi ! If NBodyMod = 1 then vecMultiplier = NBody and nWAMITObj = 1 ! Else vecMultiplier = 1 and nWAMITObj = NBody - CALL AllocAry( InputFileData%AddF0, InputFileData%vecMultiplier*6, InputFileData%nWAMITObj, 'InputFileData%AddF0' , ErrStat2, ErrMsg2); if (Failed()) return; - CALL AllocAry( InputFileData%AddCLin, InputFileData%vecMultiplier*6, InputFileData%vecMultiplier*6, InputFileData%nWAMITObj, 'InputFileData%AddCLin' , ErrStat2, ErrMsg2); if (Failed()) return; - CALL AllocAry( InputFileData%AddBLin, InputFileData%vecMultiplier*6, InputFileData%vecMultiplier*6, InputFileData%nWAMITObj, 'InputFileData%AddBLin' , ErrStat2, ErrMsg2); if (Failed()) return; - CALL AllocAry( InputFileData%AddBQuad, InputFileData%vecMultiplier*6, InputFileData%vecMultiplier*6, InputFileData%nWAMITObj, 'InputFileData%AddBQuad' , ErrStat2, ErrMsg2); if (Failed()) return; - CALL AllocAry( tmpVec1, InputFileData%nWAMITObj, 'tmpVec1', ErrStat2, ErrMsg2); if (Failed()) return; - CALL AllocAry( tmpVec2, 6*InputFileData%NBody, 'tmpVec2', ErrStat2, ErrMsg2); if (Failed()) return; - - ! AddF0 - Additional preload - do i = 1,6*InputFileData%vecMultiplier + if ( InputFileData%NBody == 1_IntKi ) then + ! To avoid each WAMITObj having different NDOF, generalized DOF is currently only allowed with NBody = 1 + NDOF = 6+InputFileData%NAddDOF(1) + else + NDOF = 6*InputFileData%vecMultiplier + end if + call AllocAry( InputFileData%AddF0, NDOF, InputFileData%nWAMITObj, 'InputFileData%AddF0' , ErrStat2, ErrMsg2); if (Failed()) return; + call AllocAry( InputFileData%AddCLin, NDOF, NDOF, InputFileData%nWAMITObj, 'InputFileData%AddCLin' , ErrStat2, ErrMsg2); if (Failed()) return; + call AllocAry( InputFileData%AddBLin, NDOF, NDOF, InputFileData%nWAMITObj, 'InputFileData%AddBLin' , ErrStat2, ErrMsg2); if (Failed()) return; + call AllocAry( InputFileData%AddBQuad, NDOF, NDOF, InputFileData%nWAMITObj, 'InputFileData%AddBQuad' , ErrStat2, ErrMsg2); if (Failed()) return; + call AllocAry( tmpVec1, InputFileData%nWAMITObj , 'tmpVec1', ErrStat2, ErrMsg2); if (Failed()) return; + call AllocAry( tmpVec2, InputFileData%nWAMITObj*NDOF, 'tmpVec2', ErrStat2, ErrMsg2); if (Failed()) return; + + ! AddF0 - Additional preload + do i = 1,NDOF call ParseAry( FileInfo_In, CurLine, 'AddF0', tmpVec1, InputFileData%nWAMITObj, ErrStat2, ErrMsg2, UnEc ) if (Failed()) return; - do j = 1, InputFileData%nWAMITObj InputFileData%AddF0(i,j) = tmpVec1(j) end do end do - - ! AddCLin - do i=1,6*InputFileData%vecMultiplier + ! AddCLin + do i = 1, NDOF write(strI,'(I2)') i call ParseAry( FileInfo_In, CurLine, ' Row '//strI//' of the additional linear stiffness matrix', & - tmpVec2, 6*InputFileData%NBody, ErrStat2, ErrMsg2, UnEc ) + tmpVec2, InputFileData%nWAMITObj*NDOF, ErrStat2, ErrMsg2, UnEc ) if (Failed()) return; - do j = 1, InputFileData%nWAMITObj - startIndx = 6*InputFileData%vecMultiplier*(j-1) + 1 - endIndx = startIndx + 6*InputFileData%vecMultiplier - 1 + startIndx = NDOF*(j-1) + 1 + endIndx = startIndx + NDOF - 1 InputFileData%AddCLin(i,:,j) = tmpVec2(startIndx:endIndx) end do end do - - ! AddBLin - DO I=1,6*InputFileData%vecMultiplier - + ! AddBLin + do i = 1, NDOF + write(strI,'(I2)') i call ParseAry( FileInfo_In, CurLine, ' Row '//strI//' of the additional linear damping matrix', & - tmpVec2, 6*InputFileData%NBody, ErrStat2, ErrMsg2, UnEc ) + tmpVec2, InputFileData%nWAMITObj*NDOF, ErrStat2, ErrMsg2, UnEc ) if (Failed()) return; - do j = 1, InputFileData%nWAMITObj - startIndx = 6*InputFileData%vecMultiplier*(j-1) + 1 - endIndx = startIndx + 6*InputFileData%vecMultiplier - 1 - InputFileData%AddBLin(I,:,j) = tmpVec2(startIndx:endIndx) + startIndx = NDOF*(j-1) + 1 + endIndx = startIndx + NDOF - 1 + InputFileData%AddBLin(i,:,j) = tmpVec2(startIndx:endIndx) end do - END DO - - - ! AddBQuad - DO I=1,6*InputFileData%vecMultiplier + end do + ! AddBQuad + do i = 1, NDOF + write(strI,'(I2)') i call ParseAry( FileInfo_In, CurLine, ' Row '//strI//' of the additional quadratic damping matrix', & - tmpVec2, 6*InputFileData%NBody, ErrStat2, ErrMsg2, UnEc ) + tmpVec2, InputFileData%nWAMITObj*NDOF, ErrStat2, ErrMsg2, UnEc ) if (Failed()) return; - do j = 1, InputFileData%nWAMITObj - startIndx = 6*InputFileData%vecMultiplier*(j-1) + 1 - endIndx = startIndx + 6*InputFileData%vecMultiplier - 1 - InputFileData%AddBQuad(I,:,j) = tmpVec2(startIndx:endIndx) + startIndx = NDOF*(j-1) + 1 + endIndx = startIndx + NDOF - 1 + InputFileData%AddBQuad(i,:,j) = tmpVec2(startIndx:endIndx) end do - END DO + end do !------------------------------------------------------------------------------------------------- ! Strip Theory Section @@ -1524,6 +1526,29 @@ SUBROUTINE HydroDynInput_ProcessInitData( InitInp, Interval, InputFileData, ErrS end do END IF + IF ( InputFileData%PotMod == 1 ) THEN + do i = 1,InputFileData%NBody + IF ( InputFileData%NAddDOF(i) < 0 )THEN + CALL SetErrStat( ErrID_Fatal,'NAddDOF must be non-negative for all WAMIT bodies.',ErrStat,ErrMsg,RoutineName) + RETURN + END IF + end do + END IF + + InputFileData%hasAddDOF = any( InputFileData%NAddDOF > 0_IntKi ) + IF ( InputFileData%PotMod == 1 .and. InputFileData%hasAddDOF .and. InputFileData%NBody > 1 ) THEN + CALL SetErrStat( ErrID_Fatal,'Nonzero NAddDOF is currently only allowed with NBody=1.',ErrStat,ErrMsg,RoutineName) + RETURN + END IF + IF ( InputFileData%PotMod == 1 .and. InputFileData%hasAddDOF .and. InputFileData%Wamit%ExctnMod == 2 ) THEN + CALL SetErrStat( ErrID_Fatal,'Nonzero NAddDOF currently cannot be used with state-space wave exctiation model (ExctnMod=2). Need ExctnMod = 0 or 1.',ErrStat,ErrMsg,RoutineName) + RETURN + END IF + IF ( InputFileData%PotMod == 1 .and. InputFileData%hasAddDOF .and. InputFileData%Wamit%RdtnMod == 2 ) THEN + CALL SetErrStat( ErrID_Fatal,'Nonzero NAddDOF currently cannot be used with state-space wave radiation model (RdtnMod=2). Need RdtnMod = 0 or 1.',ErrStat,ErrMsg,RoutineName) + RETURN + END IF + ! RdtnTMax - Analysis time for wave radiation kernel calculations ! NOTE: Use RdtnTMax = 0.0 to eliminate wave radiation damping diff --git a/modules/hydrodyn/src/HydroDyn_Output.f90 b/modules/hydrodyn/src/HydroDyn_Output.f90 index 3d823bcdd9..aab5dab29c 100644 --- a/modules/hydrodyn/src/HydroDyn_Output.f90 +++ b/modules/hydrodyn/src/HydroDyn_Output.f90 @@ -44,537 +44,6774 @@ MODULE HydroDyn_Output ! Time: - INTEGER(IntKi), PARAMETER :: Time = 0 + INTEGER(IntKi), PARAMETER :: Time = 0 ! Integrated Hydrodynamic Loads at (0,0,0): - INTEGER(IntKi), PARAMETER :: HydroFxi = 1 - INTEGER(IntKi), PARAMETER :: HydroFyi = 2 - INTEGER(IntKi), PARAMETER :: HydroFzi = 3 - INTEGER(IntKi), PARAMETER :: HydroMxi = 4 - INTEGER(IntKi), PARAMETER :: HydroMyi = 5 - INTEGER(IntKi), PARAMETER :: HydroMzi = 6 + INTEGER(IntKi), PARAMETER :: HydroFxi = 1 + INTEGER(IntKi), PARAMETER :: HydroFyi = 2 + INTEGER(IntKi), PARAMETER :: HydroFzi = 3 + INTEGER(IntKi), PARAMETER :: HydroMxi = 4 + INTEGER(IntKi), PARAMETER :: HydroMyi = 5 + INTEGER(IntKi), PARAMETER :: HydroMzi = 6 ! PRP Body Kinematics: - INTEGER(IntKi), PARAMETER :: PRPSurge = 7 - INTEGER(IntKi), PARAMETER :: PRPSway = 8 - INTEGER(IntKi), PARAMETER :: PRPHeave = 9 - INTEGER(IntKi), PARAMETER :: PRPRoll = 10 - INTEGER(IntKi), PARAMETER :: PRPPitch = 11 - INTEGER(IntKi), PARAMETER :: PRPYaw = 12 - INTEGER(IntKi), PARAMETER :: PRPTVxi = 13 - INTEGER(IntKi), PARAMETER :: PRPTVyi = 14 - INTEGER(IntKi), PARAMETER :: PRPTVzi = 15 - INTEGER(IntKi), PARAMETER :: PRPRVxi = 16 - INTEGER(IntKi), PARAMETER :: PRPRVyi = 17 - INTEGER(IntKi), PARAMETER :: PRPRVzi = 18 - INTEGER(IntKi), PARAMETER :: PRPTAxi = 19 - INTEGER(IntKi), PARAMETER :: PRPTAyi = 20 - INTEGER(IntKi), PARAMETER :: PRPTAzi = 21 - INTEGER(IntKi), PARAMETER :: PRPRAxi = 22 - INTEGER(IntKi), PARAMETER :: PRPRAyi = 23 - INTEGER(IntKi), PARAMETER :: PRPRAzi = 24 + INTEGER(IntKi), PARAMETER :: PRPSurge = 7 + INTEGER(IntKi), PARAMETER :: PRPSway = 8 + INTEGER(IntKi), PARAMETER :: PRPHeave = 9 + INTEGER(IntKi), PARAMETER :: PRPRoll = 10 + INTEGER(IntKi), PARAMETER :: PRPPitch = 11 + INTEGER(IntKi), PARAMETER :: PRPYaw = 12 + INTEGER(IntKi), PARAMETER :: PRPTVxi = 13 + INTEGER(IntKi), PARAMETER :: PRPTVyi = 14 + INTEGER(IntKi), PARAMETER :: PRPTVzi = 15 + INTEGER(IntKi), PARAMETER :: PRPRVxi = 16 + INTEGER(IntKi), PARAMETER :: PRPRVyi = 17 + INTEGER(IntKi), PARAMETER :: PRPRVzi = 18 + INTEGER(IntKi), PARAMETER :: PRPTAxi = 19 + INTEGER(IntKi), PARAMETER :: PRPTAyi = 20 + INTEGER(IntKi), PARAMETER :: PRPTAzi = 21 + INTEGER(IntKi), PARAMETER :: PRPRAxi = 22 + INTEGER(IntKi), PARAMETER :: PRPRAyi = 23 + INTEGER(IntKi), PARAMETER :: PRPRAzi = 24 ! WAMIT Body Kinematics: - INTEGER(IntKi), PARAMETER :: B1Surge = 25 - INTEGER(IntKi), PARAMETER :: B1Sway = 26 - INTEGER(IntKi), PARAMETER :: B1Heave = 27 - INTEGER(IntKi), PARAMETER :: B1Roll = 28 - INTEGER(IntKi), PARAMETER :: B1Pitch = 29 - INTEGER(IntKi), PARAMETER :: B1Yaw = 30 - INTEGER(IntKi), PARAMETER :: B1TVxi = 31 - INTEGER(IntKi), PARAMETER :: B1TVyi = 32 - INTEGER(IntKi), PARAMETER :: B1TVzi = 33 - INTEGER(IntKi), PARAMETER :: B1RVxi = 34 - INTEGER(IntKi), PARAMETER :: B1RVyi = 35 - INTEGER(IntKi), PARAMETER :: B1RVzi = 36 - INTEGER(IntKi), PARAMETER :: B1TAxi = 37 - INTEGER(IntKi), PARAMETER :: B1TAyi = 38 - INTEGER(IntKi), PARAMETER :: B1TAzi = 39 - INTEGER(IntKi), PARAMETER :: B1RAxi = 40 - INTEGER(IntKi), PARAMETER :: B1RAyi = 41 - INTEGER(IntKi), PARAMETER :: B1RAzi = 42 - INTEGER(IntKi), PARAMETER :: B2Surge = 43 - INTEGER(IntKi), PARAMETER :: B2Sway = 44 - INTEGER(IntKi), PARAMETER :: B2Heave = 45 - INTEGER(IntKi), PARAMETER :: B2Roll = 46 - INTEGER(IntKi), PARAMETER :: B2Pitch = 47 - INTEGER(IntKi), PARAMETER :: B2Yaw = 48 - INTEGER(IntKi), PARAMETER :: B2TVxi = 49 - INTEGER(IntKi), PARAMETER :: B2TVyi = 50 - INTEGER(IntKi), PARAMETER :: B2TVzi = 51 - INTEGER(IntKi), PARAMETER :: B2RVxi = 52 - INTEGER(IntKi), PARAMETER :: B2RVyi = 53 - INTEGER(IntKi), PARAMETER :: B2RVzi = 54 - INTEGER(IntKi), PARAMETER :: B2TAxi = 55 - INTEGER(IntKi), PARAMETER :: B2TAyi = 56 - INTEGER(IntKi), PARAMETER :: B2TAzi = 57 - INTEGER(IntKi), PARAMETER :: B2RAxi = 58 - INTEGER(IntKi), PARAMETER :: B2RAyi = 59 - INTEGER(IntKi), PARAMETER :: B2RAzi = 60 - INTEGER(IntKi), PARAMETER :: B3Surge = 61 - INTEGER(IntKi), PARAMETER :: B3Sway = 62 - INTEGER(IntKi), PARAMETER :: B3Heave = 63 - INTEGER(IntKi), PARAMETER :: B3Roll = 64 - INTEGER(IntKi), PARAMETER :: B3Pitch = 65 - INTEGER(IntKi), PARAMETER :: B3Yaw = 66 - INTEGER(IntKi), PARAMETER :: B3TVxi = 67 - INTEGER(IntKi), PARAMETER :: B3TVyi = 68 - INTEGER(IntKi), PARAMETER :: B3TVzi = 69 - INTEGER(IntKi), PARAMETER :: B3RVxi = 70 - INTEGER(IntKi), PARAMETER :: B3RVyi = 71 - INTEGER(IntKi), PARAMETER :: B3RVzi = 72 - INTEGER(IntKi), PARAMETER :: B3TAxi = 73 - INTEGER(IntKi), PARAMETER :: B3TAyi = 74 - INTEGER(IntKi), PARAMETER :: B3TAzi = 75 - INTEGER(IntKi), PARAMETER :: B3RAxi = 76 - INTEGER(IntKi), PARAMETER :: B3RAyi = 77 - INTEGER(IntKi), PARAMETER :: B3RAzi = 78 - INTEGER(IntKi), PARAMETER :: B4Surge = 79 - INTEGER(IntKi), PARAMETER :: B4Sway = 80 - INTEGER(IntKi), PARAMETER :: B4Heave = 81 - INTEGER(IntKi), PARAMETER :: B4Roll = 82 - INTEGER(IntKi), PARAMETER :: B4Pitch = 83 - INTEGER(IntKi), PARAMETER :: B4Yaw = 84 - INTEGER(IntKi), PARAMETER :: B4TVxi = 85 - INTEGER(IntKi), PARAMETER :: B4TVyi = 86 - INTEGER(IntKi), PARAMETER :: B4TVzi = 87 - INTEGER(IntKi), PARAMETER :: B4RVxi = 88 - INTEGER(IntKi), PARAMETER :: B4RVyi = 89 - INTEGER(IntKi), PARAMETER :: B4RVzi = 90 - INTEGER(IntKi), PARAMETER :: B4TAxi = 91 - INTEGER(IntKi), PARAMETER :: B4TAyi = 92 - INTEGER(IntKi), PARAMETER :: B4TAzi = 93 - INTEGER(IntKi), PARAMETER :: B4RAxi = 94 - INTEGER(IntKi), PARAMETER :: B4RAyi = 95 - INTEGER(IntKi), PARAMETER :: B4RAzi = 96 - INTEGER(IntKi), PARAMETER :: B5Surge = 97 - INTEGER(IntKi), PARAMETER :: B5Sway = 98 - INTEGER(IntKi), PARAMETER :: B5Heave = 99 - INTEGER(IntKi), PARAMETER :: B5Roll = 100 - INTEGER(IntKi), PARAMETER :: B5Pitch = 101 - INTEGER(IntKi), PARAMETER :: B5Yaw = 102 - INTEGER(IntKi), PARAMETER :: B5TVxi = 103 - INTEGER(IntKi), PARAMETER :: B5TVyi = 104 - INTEGER(IntKi), PARAMETER :: B5TVzi = 105 - INTEGER(IntKi), PARAMETER :: B5RVxi = 106 - INTEGER(IntKi), PARAMETER :: B5RVyi = 107 - INTEGER(IntKi), PARAMETER :: B5RVzi = 108 - INTEGER(IntKi), PARAMETER :: B5TAxi = 109 - INTEGER(IntKi), PARAMETER :: B5TAyi = 110 - INTEGER(IntKi), PARAMETER :: B5TAzi = 111 - INTEGER(IntKi), PARAMETER :: B5RAxi = 112 - INTEGER(IntKi), PARAMETER :: B5RAyi = 113 - INTEGER(IntKi), PARAMETER :: B5RAzi = 114 - INTEGER(IntKi), PARAMETER :: B6Surge = 115 - INTEGER(IntKi), PARAMETER :: B6Sway = 116 - INTEGER(IntKi), PARAMETER :: B6Heave = 117 - INTEGER(IntKi), PARAMETER :: B6Roll = 118 - INTEGER(IntKi), PARAMETER :: B6Pitch = 119 - INTEGER(IntKi), PARAMETER :: B6Yaw = 120 - INTEGER(IntKi), PARAMETER :: B6TVxi = 121 - INTEGER(IntKi), PARAMETER :: B6TVyi = 122 - INTEGER(IntKi), PARAMETER :: B6TVzi = 123 - INTEGER(IntKi), PARAMETER :: B6RVxi = 124 - INTEGER(IntKi), PARAMETER :: B6RVyi = 125 - INTEGER(IntKi), PARAMETER :: B6RVzi = 126 - INTEGER(IntKi), PARAMETER :: B6TAxi = 127 - INTEGER(IntKi), PARAMETER :: B6TAyi = 128 - INTEGER(IntKi), PARAMETER :: B6TAzi = 129 - INTEGER(IntKi), PARAMETER :: B6RAxi = 130 - INTEGER(IntKi), PARAMETER :: B6RAyi = 131 - INTEGER(IntKi), PARAMETER :: B6RAzi = 132 - INTEGER(IntKi), PARAMETER :: B7Surge = 133 - INTEGER(IntKi), PARAMETER :: B7Sway = 134 - INTEGER(IntKi), PARAMETER :: B7Heave = 135 - INTEGER(IntKi), PARAMETER :: B7Roll = 136 - INTEGER(IntKi), PARAMETER :: B7Pitch = 137 - INTEGER(IntKi), PARAMETER :: B7Yaw = 138 - INTEGER(IntKi), PARAMETER :: B7TVxi = 139 - INTEGER(IntKi), PARAMETER :: B7TVyi = 140 - INTEGER(IntKi), PARAMETER :: B7TVzi = 141 - INTEGER(IntKi), PARAMETER :: B7RVxi = 142 - INTEGER(IntKi), PARAMETER :: B7RVyi = 143 - INTEGER(IntKi), PARAMETER :: B7RVzi = 144 - INTEGER(IntKi), PARAMETER :: B7TAxi = 145 - INTEGER(IntKi), PARAMETER :: B7TAyi = 146 - INTEGER(IntKi), PARAMETER :: B7TAzi = 147 - INTEGER(IntKi), PARAMETER :: B7RAxi = 148 - INTEGER(IntKi), PARAMETER :: B7RAyi = 149 - INTEGER(IntKi), PARAMETER :: B7RAzi = 150 - INTEGER(IntKi), PARAMETER :: B8Surge = 151 - INTEGER(IntKi), PARAMETER :: B8Sway = 152 - INTEGER(IntKi), PARAMETER :: B8Heave = 153 - INTEGER(IntKi), PARAMETER :: B8Roll = 154 - INTEGER(IntKi), PARAMETER :: B8Pitch = 155 - INTEGER(IntKi), PARAMETER :: B8Yaw = 156 - INTEGER(IntKi), PARAMETER :: B8TVxi = 157 - INTEGER(IntKi), PARAMETER :: B8TVyi = 158 - INTEGER(IntKi), PARAMETER :: B8TVzi = 159 - INTEGER(IntKi), PARAMETER :: B8RVxi = 160 - INTEGER(IntKi), PARAMETER :: B8RVyi = 161 - INTEGER(IntKi), PARAMETER :: B8RVzi = 162 - INTEGER(IntKi), PARAMETER :: B8TAxi = 163 - INTEGER(IntKi), PARAMETER :: B8TAyi = 164 - INTEGER(IntKi), PARAMETER :: B8TAzi = 165 - INTEGER(IntKi), PARAMETER :: B8RAxi = 166 - INTEGER(IntKi), PARAMETER :: B8RAyi = 167 - INTEGER(IntKi), PARAMETER :: B8RAzi = 168 - INTEGER(IntKi), PARAMETER :: B9Surge = 169 - INTEGER(IntKi), PARAMETER :: B9Sway = 170 - INTEGER(IntKi), PARAMETER :: B9Heave = 171 - INTEGER(IntKi), PARAMETER :: B9Roll = 172 - INTEGER(IntKi), PARAMETER :: B9Pitch = 173 - INTEGER(IntKi), PARAMETER :: B9Yaw = 174 - INTEGER(IntKi), PARAMETER :: B9TVxi = 175 - INTEGER(IntKi), PARAMETER :: B9TVyi = 176 - INTEGER(IntKi), PARAMETER :: B9TVzi = 177 - INTEGER(IntKi), PARAMETER :: B9RVxi = 178 - INTEGER(IntKi), PARAMETER :: B9RVyi = 179 - INTEGER(IntKi), PARAMETER :: B9RVzi = 180 - INTEGER(IntKi), PARAMETER :: B9TAxi = 181 - INTEGER(IntKi), PARAMETER :: B9TAyi = 182 - INTEGER(IntKi), PARAMETER :: B9TAzi = 183 - INTEGER(IntKi), PARAMETER :: B9RAxi = 184 - INTEGER(IntKi), PARAMETER :: B9RAyi = 185 - INTEGER(IntKi), PARAMETER :: B9RAzi = 186 + INTEGER(IntKi), PARAMETER :: B1Surge = 25 + INTEGER(IntKi), PARAMETER :: B1Sway = 26 + INTEGER(IntKi), PARAMETER :: B1Heave = 27 + INTEGER(IntKi), PARAMETER :: B1Roll = 28 + INTEGER(IntKi), PARAMETER :: B1Pitch = 29 + INTEGER(IntKi), PARAMETER :: B1Yaw = 30 + INTEGER(IntKi), PARAMETER :: B1TVxi = 31 + INTEGER(IntKi), PARAMETER :: B1TVyi = 32 + INTEGER(IntKi), PARAMETER :: B1TVzi = 33 + INTEGER(IntKi), PARAMETER :: B1RVxi = 34 + INTEGER(IntKi), PARAMETER :: B1RVyi = 35 + INTEGER(IntKi), PARAMETER :: B1RVzi = 36 + INTEGER(IntKi), PARAMETER :: B1TAxi = 37 + INTEGER(IntKi), PARAMETER :: B1TAyi = 38 + INTEGER(IntKi), PARAMETER :: B1TAzi = 39 + INTEGER(IntKi), PARAMETER :: B1RAxi = 40 + INTEGER(IntKi), PARAMETER :: B1RAyi = 41 + INTEGER(IntKi), PARAMETER :: B1RAzi = 42 + INTEGER(IntKi), PARAMETER :: B2Surge = 43 + INTEGER(IntKi), PARAMETER :: B2Sway = 44 + INTEGER(IntKi), PARAMETER :: B2Heave = 45 + INTEGER(IntKi), PARAMETER :: B2Roll = 46 + INTEGER(IntKi), PARAMETER :: B2Pitch = 47 + INTEGER(IntKi), PARAMETER :: B2Yaw = 48 + INTEGER(IntKi), PARAMETER :: B2TVxi = 49 + INTEGER(IntKi), PARAMETER :: B2TVyi = 50 + INTEGER(IntKi), PARAMETER :: B2TVzi = 51 + INTEGER(IntKi), PARAMETER :: B2RVxi = 52 + INTEGER(IntKi), PARAMETER :: B2RVyi = 53 + INTEGER(IntKi), PARAMETER :: B2RVzi = 54 + INTEGER(IntKi), PARAMETER :: B2TAxi = 55 + INTEGER(IntKi), PARAMETER :: B2TAyi = 56 + INTEGER(IntKi), PARAMETER :: B2TAzi = 57 + INTEGER(IntKi), PARAMETER :: B2RAxi = 58 + INTEGER(IntKi), PARAMETER :: B2RAyi = 59 + INTEGER(IntKi), PARAMETER :: B2RAzi = 60 + INTEGER(IntKi), PARAMETER :: B3Surge = 61 + INTEGER(IntKi), PARAMETER :: B3Sway = 62 + INTEGER(IntKi), PARAMETER :: B3Heave = 63 + INTEGER(IntKi), PARAMETER :: B3Roll = 64 + INTEGER(IntKi), PARAMETER :: B3Pitch = 65 + INTEGER(IntKi), PARAMETER :: B3Yaw = 66 + INTEGER(IntKi), PARAMETER :: B3TVxi = 67 + INTEGER(IntKi), PARAMETER :: B3TVyi = 68 + INTEGER(IntKi), PARAMETER :: B3TVzi = 69 + INTEGER(IntKi), PARAMETER :: B3RVxi = 70 + INTEGER(IntKi), PARAMETER :: B3RVyi = 71 + INTEGER(IntKi), PARAMETER :: B3RVzi = 72 + INTEGER(IntKi), PARAMETER :: B3TAxi = 73 + INTEGER(IntKi), PARAMETER :: B3TAyi = 74 + INTEGER(IntKi), PARAMETER :: B3TAzi = 75 + INTEGER(IntKi), PARAMETER :: B3RAxi = 76 + INTEGER(IntKi), PARAMETER :: B3RAyi = 77 + INTEGER(IntKi), PARAMETER :: B3RAzi = 78 + INTEGER(IntKi), PARAMETER :: B4Surge = 79 + INTEGER(IntKi), PARAMETER :: B4Sway = 80 + INTEGER(IntKi), PARAMETER :: B4Heave = 81 + INTEGER(IntKi), PARAMETER :: B4Roll = 82 + INTEGER(IntKi), PARAMETER :: B4Pitch = 83 + INTEGER(IntKi), PARAMETER :: B4Yaw = 84 + INTEGER(IntKi), PARAMETER :: B4TVxi = 85 + INTEGER(IntKi), PARAMETER :: B4TVyi = 86 + INTEGER(IntKi), PARAMETER :: B4TVzi = 87 + INTEGER(IntKi), PARAMETER :: B4RVxi = 88 + INTEGER(IntKi), PARAMETER :: B4RVyi = 89 + INTEGER(IntKi), PARAMETER :: B4RVzi = 90 + INTEGER(IntKi), PARAMETER :: B4TAxi = 91 + INTEGER(IntKi), PARAMETER :: B4TAyi = 92 + INTEGER(IntKi), PARAMETER :: B4TAzi = 93 + INTEGER(IntKi), PARAMETER :: B4RAxi = 94 + INTEGER(IntKi), PARAMETER :: B4RAyi = 95 + INTEGER(IntKi), PARAMETER :: B4RAzi = 96 + INTEGER(IntKi), PARAMETER :: B5Surge = 97 + INTEGER(IntKi), PARAMETER :: B5Sway = 98 + INTEGER(IntKi), PARAMETER :: B5Heave = 99 + INTEGER(IntKi), PARAMETER :: B5Roll = 100 + INTEGER(IntKi), PARAMETER :: B5Pitch = 101 + INTEGER(IntKi), PARAMETER :: B5Yaw = 102 + INTEGER(IntKi), PARAMETER :: B5TVxi = 103 + INTEGER(IntKi), PARAMETER :: B5TVyi = 104 + INTEGER(IntKi), PARAMETER :: B5TVzi = 105 + INTEGER(IntKi), PARAMETER :: B5RVxi = 106 + INTEGER(IntKi), PARAMETER :: B5RVyi = 107 + INTEGER(IntKi), PARAMETER :: B5RVzi = 108 + INTEGER(IntKi), PARAMETER :: B5TAxi = 109 + INTEGER(IntKi), PARAMETER :: B5TAyi = 110 + INTEGER(IntKi), PARAMETER :: B5TAzi = 111 + INTEGER(IntKi), PARAMETER :: B5RAxi = 112 + INTEGER(IntKi), PARAMETER :: B5RAyi = 113 + INTEGER(IntKi), PARAMETER :: B5RAzi = 114 + INTEGER(IntKi), PARAMETER :: B6Surge = 115 + INTEGER(IntKi), PARAMETER :: B6Sway = 116 + INTEGER(IntKi), PARAMETER :: B6Heave = 117 + INTEGER(IntKi), PARAMETER :: B6Roll = 118 + INTEGER(IntKi), PARAMETER :: B6Pitch = 119 + INTEGER(IntKi), PARAMETER :: B6Yaw = 120 + INTEGER(IntKi), PARAMETER :: B6TVxi = 121 + INTEGER(IntKi), PARAMETER :: B6TVyi = 122 + INTEGER(IntKi), PARAMETER :: B6TVzi = 123 + INTEGER(IntKi), PARAMETER :: B6RVxi = 124 + INTEGER(IntKi), PARAMETER :: B6RVyi = 125 + INTEGER(IntKi), PARAMETER :: B6RVzi = 126 + INTEGER(IntKi), PARAMETER :: B6TAxi = 127 + INTEGER(IntKi), PARAMETER :: B6TAyi = 128 + INTEGER(IntKi), PARAMETER :: B6TAzi = 129 + INTEGER(IntKi), PARAMETER :: B6RAxi = 130 + INTEGER(IntKi), PARAMETER :: B6RAyi = 131 + INTEGER(IntKi), PARAMETER :: B6RAzi = 132 + INTEGER(IntKi), PARAMETER :: B7Surge = 133 + INTEGER(IntKi), PARAMETER :: B7Sway = 134 + INTEGER(IntKi), PARAMETER :: B7Heave = 135 + INTEGER(IntKi), PARAMETER :: B7Roll = 136 + INTEGER(IntKi), PARAMETER :: B7Pitch = 137 + INTEGER(IntKi), PARAMETER :: B7Yaw = 138 + INTEGER(IntKi), PARAMETER :: B7TVxi = 139 + INTEGER(IntKi), PARAMETER :: B7TVyi = 140 + INTEGER(IntKi), PARAMETER :: B7TVzi = 141 + INTEGER(IntKi), PARAMETER :: B7RVxi = 142 + INTEGER(IntKi), PARAMETER :: B7RVyi = 143 + INTEGER(IntKi), PARAMETER :: B7RVzi = 144 + INTEGER(IntKi), PARAMETER :: B7TAxi = 145 + INTEGER(IntKi), PARAMETER :: B7TAyi = 146 + INTEGER(IntKi), PARAMETER :: B7TAzi = 147 + INTEGER(IntKi), PARAMETER :: B7RAxi = 148 + INTEGER(IntKi), PARAMETER :: B7RAyi = 149 + INTEGER(IntKi), PARAMETER :: B7RAzi = 150 + INTEGER(IntKi), PARAMETER :: B8Surge = 151 + INTEGER(IntKi), PARAMETER :: B8Sway = 152 + INTEGER(IntKi), PARAMETER :: B8Heave = 153 + INTEGER(IntKi), PARAMETER :: B8Roll = 154 + INTEGER(IntKi), PARAMETER :: B8Pitch = 155 + INTEGER(IntKi), PARAMETER :: B8Yaw = 156 + INTEGER(IntKi), PARAMETER :: B8TVxi = 157 + INTEGER(IntKi), PARAMETER :: B8TVyi = 158 + INTEGER(IntKi), PARAMETER :: B8TVzi = 159 + INTEGER(IntKi), PARAMETER :: B8RVxi = 160 + INTEGER(IntKi), PARAMETER :: B8RVyi = 161 + INTEGER(IntKi), PARAMETER :: B8RVzi = 162 + INTEGER(IntKi), PARAMETER :: B8TAxi = 163 + INTEGER(IntKi), PARAMETER :: B8TAyi = 164 + INTEGER(IntKi), PARAMETER :: B8TAzi = 165 + INTEGER(IntKi), PARAMETER :: B8RAxi = 166 + INTEGER(IntKi), PARAMETER :: B8RAyi = 167 + INTEGER(IntKi), PARAMETER :: B8RAzi = 168 + INTEGER(IntKi), PARAMETER :: B9Surge = 169 + INTEGER(IntKi), PARAMETER :: B9Sway = 170 + INTEGER(IntKi), PARAMETER :: B9Heave = 171 + INTEGER(IntKi), PARAMETER :: B9Roll = 172 + INTEGER(IntKi), PARAMETER :: B9Pitch = 173 + INTEGER(IntKi), PARAMETER :: B9Yaw = 174 + INTEGER(IntKi), PARAMETER :: B9TVxi = 175 + INTEGER(IntKi), PARAMETER :: B9TVyi = 176 + INTEGER(IntKi), PARAMETER :: B9TVzi = 177 + INTEGER(IntKi), PARAMETER :: B9RVxi = 178 + INTEGER(IntKi), PARAMETER :: B9RVyi = 179 + INTEGER(IntKi), PARAMETER :: B9RVzi = 180 + INTEGER(IntKi), PARAMETER :: B9TAxi = 181 + INTEGER(IntKi), PARAMETER :: B9TAyi = 182 + INTEGER(IntKi), PARAMETER :: B9TAzi = 183 + INTEGER(IntKi), PARAMETER :: B9RAxi = 184 + INTEGER(IntKi), PARAMETER :: B9RAyi = 185 + INTEGER(IntKi), PARAMETER :: B9RAzi = 186 + INTEGER(IntKi), PARAMETER :: B1ADOF1D = 187 + INTEGER(IntKi), PARAMETER :: B1ADOF2D = 188 + INTEGER(IntKi), PARAMETER :: B1ADOF3D = 189 + INTEGER(IntKi), PARAMETER :: B1ADOF4D = 190 + INTEGER(IntKi), PARAMETER :: B1ADOF5D = 191 + INTEGER(IntKi), PARAMETER :: B1ADOF6D = 192 + INTEGER(IntKi), PARAMETER :: B1ADOF7D = 193 + INTEGER(IntKi), PARAMETER :: B1ADOF8D = 194 + INTEGER(IntKi), PARAMETER :: B1ADOF9D = 195 + INTEGER(IntKi), PARAMETER :: B1ADOF10D = 196 + INTEGER(IntKi), PARAMETER :: B1ADOF11D = 197 + INTEGER(IntKi), PARAMETER :: B1ADOF12D = 198 + INTEGER(IntKi), PARAMETER :: B1ADOF13D = 199 + INTEGER(IntKi), PARAMETER :: B1ADOF14D = 200 + INTEGER(IntKi), PARAMETER :: B1ADOF15D = 201 + INTEGER(IntKi), PARAMETER :: B1ADOF16D = 202 + INTEGER(IntKi), PARAMETER :: B1ADOF17D = 203 + INTEGER(IntKi), PARAMETER :: B1ADOF18D = 204 + INTEGER(IntKi), PARAMETER :: B1ADOF19D = 205 + INTEGER(IntKi), PARAMETER :: B1ADOF20D = 206 + INTEGER(IntKi), PARAMETER :: B1ADOF21D = 207 + INTEGER(IntKi), PARAMETER :: B1ADOF22D = 208 + INTEGER(IntKi), PARAMETER :: B1ADOF23D = 209 + INTEGER(IntKi), PARAMETER :: B1ADOF24D = 210 + INTEGER(IntKi), PARAMETER :: B1ADOF25D = 211 + INTEGER(IntKi), PARAMETER :: B1ADOF26D = 212 + INTEGER(IntKi), PARAMETER :: B1ADOF27D = 213 + INTEGER(IntKi), PARAMETER :: B1ADOF28D = 214 + INTEGER(IntKi), PARAMETER :: B1ADOF29D = 215 + INTEGER(IntKi), PARAMETER :: B1ADOF30D = 216 + INTEGER(IntKi), PARAMETER :: B1ADOF31D = 217 + INTEGER(IntKi), PARAMETER :: B1ADOF32D = 218 + INTEGER(IntKi), PARAMETER :: B1ADOF33D = 219 + INTEGER(IntKi), PARAMETER :: B1ADOF34D = 220 + INTEGER(IntKi), PARAMETER :: B1ADOF35D = 221 + INTEGER(IntKi), PARAMETER :: B1ADOF36D = 222 + INTEGER(IntKi), PARAMETER :: B1ADOF37D = 223 + INTEGER(IntKi), PARAMETER :: B1ADOF38D = 224 + INTEGER(IntKi), PARAMETER :: B1ADOF39D = 225 + INTEGER(IntKi), PARAMETER :: B1ADOF40D = 226 + INTEGER(IntKi), PARAMETER :: B1ADOF41D = 227 + INTEGER(IntKi), PARAMETER :: B1ADOF42D = 228 + INTEGER(IntKi), PARAMETER :: B1ADOF43D = 229 + INTEGER(IntKi), PARAMETER :: B1ADOF44D = 230 + INTEGER(IntKi), PARAMETER :: B1ADOF45D = 231 + INTEGER(IntKi), PARAMETER :: B1ADOF46D = 232 + INTEGER(IntKi), PARAMETER :: B1ADOF47D = 233 + INTEGER(IntKi), PARAMETER :: B1ADOF48D = 234 + INTEGER(IntKi), PARAMETER :: B1ADOF49D = 235 + INTEGER(IntKi), PARAMETER :: B1ADOF50D = 236 + INTEGER(IntKi), PARAMETER :: B1ADOF51D = 237 + INTEGER(IntKi), PARAMETER :: B1ADOF52D = 238 + INTEGER(IntKi), PARAMETER :: B1ADOF53D = 239 + INTEGER(IntKi), PARAMETER :: B1ADOF54D = 240 + INTEGER(IntKi), PARAMETER :: B1ADOF55D = 241 + INTEGER(IntKi), PARAMETER :: B1ADOF56D = 242 + INTEGER(IntKi), PARAMETER :: B1ADOF57D = 243 + INTEGER(IntKi), PARAMETER :: B1ADOF58D = 244 + INTEGER(IntKi), PARAMETER :: B1ADOF59D = 245 + INTEGER(IntKi), PARAMETER :: B1ADOF60D = 246 + INTEGER(IntKi), PARAMETER :: B1ADOF61D = 247 + INTEGER(IntKi), PARAMETER :: B1ADOF62D = 248 + INTEGER(IntKi), PARAMETER :: B1ADOF63D = 249 + INTEGER(IntKi), PARAMETER :: B1ADOF64D = 250 + INTEGER(IntKi), PARAMETER :: B1ADOF65D = 251 + INTEGER(IntKi), PARAMETER :: B1ADOF66D = 252 + INTEGER(IntKi), PARAMETER :: B1ADOF67D = 253 + INTEGER(IntKi), PARAMETER :: B1ADOF68D = 254 + INTEGER(IntKi), PARAMETER :: B1ADOF69D = 255 + INTEGER(IntKi), PARAMETER :: B1ADOF70D = 256 + INTEGER(IntKi), PARAMETER :: B1ADOF71D = 257 + INTEGER(IntKi), PARAMETER :: B1ADOF72D = 258 + INTEGER(IntKi), PARAMETER :: B1ADOF73D = 259 + INTEGER(IntKi), PARAMETER :: B1ADOF74D = 260 + INTEGER(IntKi), PARAMETER :: B1ADOF75D = 261 + INTEGER(IntKi), PARAMETER :: B1ADOF76D = 262 + INTEGER(IntKi), PARAMETER :: B1ADOF77D = 263 + INTEGER(IntKi), PARAMETER :: B1ADOF78D = 264 + INTEGER(IntKi), PARAMETER :: B1ADOF79D = 265 + INTEGER(IntKi), PARAMETER :: B1ADOF80D = 266 + INTEGER(IntKi), PARAMETER :: B1ADOF81D = 267 + INTEGER(IntKi), PARAMETER :: B1ADOF82D = 268 + INTEGER(IntKi), PARAMETER :: B1ADOF83D = 269 + INTEGER(IntKi), PARAMETER :: B1ADOF84D = 270 + INTEGER(IntKi), PARAMETER :: B1ADOF85D = 271 + INTEGER(IntKi), PARAMETER :: B1ADOF86D = 272 + INTEGER(IntKi), PARAMETER :: B1ADOF87D = 273 + INTEGER(IntKi), PARAMETER :: B1ADOF88D = 274 + INTEGER(IntKi), PARAMETER :: B1ADOF89D = 275 + INTEGER(IntKi), PARAMETER :: B1ADOF90D = 276 + INTEGER(IntKi), PARAMETER :: B1ADOF91D = 277 + INTEGER(IntKi), PARAMETER :: B1ADOF92D = 278 + INTEGER(IntKi), PARAMETER :: B1ADOF93D = 279 + INTEGER(IntKi), PARAMETER :: B1ADOF94D = 280 + INTEGER(IntKi), PARAMETER :: B1ADOF95D = 281 + INTEGER(IntKi), PARAMETER :: B1ADOF96D = 282 + INTEGER(IntKi), PARAMETER :: B1ADOF97D = 283 + INTEGER(IntKi), PARAMETER :: B1ADOF98D = 284 + INTEGER(IntKi), PARAMETER :: B1ADOF99D = 285 + INTEGER(IntKi), PARAMETER :: B2ADOF1D = 286 + INTEGER(IntKi), PARAMETER :: B2ADOF2D = 287 + INTEGER(IntKi), PARAMETER :: B2ADOF3D = 288 + INTEGER(IntKi), PARAMETER :: B2ADOF4D = 289 + INTEGER(IntKi), PARAMETER :: B2ADOF5D = 290 + INTEGER(IntKi), PARAMETER :: B2ADOF6D = 291 + INTEGER(IntKi), PARAMETER :: B2ADOF7D = 292 + INTEGER(IntKi), PARAMETER :: B2ADOF8D = 293 + INTEGER(IntKi), PARAMETER :: B2ADOF9D = 294 + INTEGER(IntKi), PARAMETER :: B2ADOF10D = 295 + INTEGER(IntKi), PARAMETER :: B2ADOF11D = 296 + INTEGER(IntKi), PARAMETER :: B2ADOF12D = 297 + INTEGER(IntKi), PARAMETER :: B2ADOF13D = 298 + INTEGER(IntKi), PARAMETER :: B2ADOF14D = 299 + INTEGER(IntKi), PARAMETER :: B2ADOF15D = 300 + INTEGER(IntKi), PARAMETER :: B2ADOF16D = 301 + INTEGER(IntKi), PARAMETER :: B2ADOF17D = 302 + INTEGER(IntKi), PARAMETER :: B2ADOF18D = 303 + INTEGER(IntKi), PARAMETER :: B2ADOF19D = 304 + INTEGER(IntKi), PARAMETER :: B2ADOF20D = 305 + INTEGER(IntKi), PARAMETER :: B2ADOF21D = 306 + INTEGER(IntKi), PARAMETER :: B2ADOF22D = 307 + INTEGER(IntKi), PARAMETER :: B2ADOF23D = 308 + INTEGER(IntKi), PARAMETER :: B2ADOF24D = 309 + INTEGER(IntKi), PARAMETER :: B2ADOF25D = 310 + INTEGER(IntKi), PARAMETER :: B2ADOF26D = 311 + INTEGER(IntKi), PARAMETER :: B2ADOF27D = 312 + INTEGER(IntKi), PARAMETER :: B2ADOF28D = 313 + INTEGER(IntKi), PARAMETER :: B2ADOF29D = 314 + INTEGER(IntKi), PARAMETER :: B2ADOF30D = 315 + INTEGER(IntKi), PARAMETER :: B2ADOF31D = 316 + INTEGER(IntKi), PARAMETER :: B2ADOF32D = 317 + INTEGER(IntKi), PARAMETER :: B2ADOF33D = 318 + INTEGER(IntKi), PARAMETER :: B2ADOF34D = 319 + INTEGER(IntKi), PARAMETER :: B2ADOF35D = 320 + INTEGER(IntKi), PARAMETER :: B2ADOF36D = 321 + INTEGER(IntKi), PARAMETER :: B2ADOF37D = 322 + INTEGER(IntKi), PARAMETER :: B2ADOF38D = 323 + INTEGER(IntKi), PARAMETER :: B2ADOF39D = 324 + INTEGER(IntKi), PARAMETER :: B2ADOF40D = 325 + INTEGER(IntKi), PARAMETER :: B2ADOF41D = 326 + INTEGER(IntKi), PARAMETER :: B2ADOF42D = 327 + INTEGER(IntKi), PARAMETER :: B2ADOF43D = 328 + INTEGER(IntKi), PARAMETER :: B2ADOF44D = 329 + INTEGER(IntKi), PARAMETER :: B2ADOF45D = 330 + INTEGER(IntKi), PARAMETER :: B2ADOF46D = 331 + INTEGER(IntKi), PARAMETER :: B2ADOF47D = 332 + INTEGER(IntKi), PARAMETER :: B2ADOF48D = 333 + INTEGER(IntKi), PARAMETER :: B2ADOF49D = 334 + INTEGER(IntKi), PARAMETER :: B2ADOF50D = 335 + INTEGER(IntKi), PARAMETER :: B2ADOF51D = 336 + INTEGER(IntKi), PARAMETER :: B2ADOF52D = 337 + INTEGER(IntKi), PARAMETER :: B2ADOF53D = 338 + INTEGER(IntKi), PARAMETER :: B2ADOF54D = 339 + INTEGER(IntKi), PARAMETER :: B2ADOF55D = 340 + INTEGER(IntKi), PARAMETER :: B2ADOF56D = 341 + INTEGER(IntKi), PARAMETER :: B2ADOF57D = 342 + INTEGER(IntKi), PARAMETER :: B2ADOF58D = 343 + INTEGER(IntKi), PARAMETER :: B2ADOF59D = 344 + INTEGER(IntKi), PARAMETER :: B2ADOF60D = 345 + INTEGER(IntKi), PARAMETER :: B2ADOF61D = 346 + INTEGER(IntKi), PARAMETER :: B2ADOF62D = 347 + INTEGER(IntKi), PARAMETER :: B2ADOF63D = 348 + INTEGER(IntKi), PARAMETER :: B2ADOF64D = 349 + INTEGER(IntKi), PARAMETER :: B2ADOF65D = 350 + INTEGER(IntKi), PARAMETER :: B2ADOF66D = 351 + INTEGER(IntKi), PARAMETER :: B2ADOF67D = 352 + INTEGER(IntKi), PARAMETER :: B2ADOF68D = 353 + INTEGER(IntKi), PARAMETER :: B2ADOF69D = 354 + INTEGER(IntKi), PARAMETER :: B2ADOF70D = 355 + INTEGER(IntKi), PARAMETER :: B2ADOF71D = 356 + INTEGER(IntKi), PARAMETER :: B2ADOF72D = 357 + INTEGER(IntKi), PARAMETER :: B2ADOF73D = 358 + INTEGER(IntKi), PARAMETER :: B2ADOF74D = 359 + INTEGER(IntKi), PARAMETER :: B2ADOF75D = 360 + INTEGER(IntKi), PARAMETER :: B2ADOF76D = 361 + INTEGER(IntKi), PARAMETER :: B2ADOF77D = 362 + INTEGER(IntKi), PARAMETER :: B2ADOF78D = 363 + INTEGER(IntKi), PARAMETER :: B2ADOF79D = 364 + INTEGER(IntKi), PARAMETER :: B2ADOF80D = 365 + INTEGER(IntKi), PARAMETER :: B2ADOF81D = 366 + INTEGER(IntKi), PARAMETER :: B2ADOF82D = 367 + INTEGER(IntKi), PARAMETER :: B2ADOF83D = 368 + INTEGER(IntKi), PARAMETER :: B2ADOF84D = 369 + INTEGER(IntKi), PARAMETER :: B2ADOF85D = 370 + INTEGER(IntKi), PARAMETER :: B2ADOF86D = 371 + INTEGER(IntKi), PARAMETER :: B2ADOF87D = 372 + INTEGER(IntKi), PARAMETER :: B2ADOF88D = 373 + INTEGER(IntKi), PARAMETER :: B2ADOF89D = 374 + INTEGER(IntKi), PARAMETER :: B2ADOF90D = 375 + INTEGER(IntKi), PARAMETER :: B2ADOF91D = 376 + INTEGER(IntKi), PARAMETER :: B2ADOF92D = 377 + INTEGER(IntKi), PARAMETER :: B2ADOF93D = 378 + INTEGER(IntKi), PARAMETER :: B2ADOF94D = 379 + INTEGER(IntKi), PARAMETER :: B2ADOF95D = 380 + INTEGER(IntKi), PARAMETER :: B2ADOF96D = 381 + INTEGER(IntKi), PARAMETER :: B2ADOF97D = 382 + INTEGER(IntKi), PARAMETER :: B2ADOF98D = 383 + INTEGER(IntKi), PARAMETER :: B2ADOF99D = 384 + INTEGER(IntKi), PARAMETER :: B3ADOF1D = 385 + INTEGER(IntKi), PARAMETER :: B3ADOF2D = 386 + INTEGER(IntKi), PARAMETER :: B3ADOF3D = 387 + INTEGER(IntKi), PARAMETER :: B3ADOF4D = 388 + INTEGER(IntKi), PARAMETER :: B3ADOF5D = 389 + INTEGER(IntKi), PARAMETER :: B3ADOF6D = 390 + INTEGER(IntKi), PARAMETER :: B3ADOF7D = 391 + INTEGER(IntKi), PARAMETER :: B3ADOF8D = 392 + INTEGER(IntKi), PARAMETER :: B3ADOF9D = 393 + INTEGER(IntKi), PARAMETER :: B3ADOF10D = 394 + INTEGER(IntKi), PARAMETER :: B3ADOF11D = 395 + INTEGER(IntKi), PARAMETER :: B3ADOF12D = 396 + INTEGER(IntKi), PARAMETER :: B3ADOF13D = 397 + INTEGER(IntKi), PARAMETER :: B3ADOF14D = 398 + INTEGER(IntKi), PARAMETER :: B3ADOF15D = 399 + INTEGER(IntKi), PARAMETER :: B3ADOF16D = 400 + INTEGER(IntKi), PARAMETER :: B3ADOF17D = 401 + INTEGER(IntKi), PARAMETER :: B3ADOF18D = 402 + INTEGER(IntKi), PARAMETER :: B3ADOF19D = 403 + INTEGER(IntKi), PARAMETER :: B3ADOF20D = 404 + INTEGER(IntKi), PARAMETER :: B3ADOF21D = 405 + INTEGER(IntKi), PARAMETER :: B3ADOF22D = 406 + INTEGER(IntKi), PARAMETER :: B3ADOF23D = 407 + INTEGER(IntKi), PARAMETER :: B3ADOF24D = 408 + INTEGER(IntKi), PARAMETER :: B3ADOF25D = 409 + INTEGER(IntKi), PARAMETER :: B3ADOF26D = 410 + INTEGER(IntKi), PARAMETER :: B3ADOF27D = 411 + INTEGER(IntKi), PARAMETER :: B3ADOF28D = 412 + INTEGER(IntKi), PARAMETER :: B3ADOF29D = 413 + INTEGER(IntKi), PARAMETER :: B3ADOF30D = 414 + INTEGER(IntKi), PARAMETER :: B3ADOF31D = 415 + INTEGER(IntKi), PARAMETER :: B3ADOF32D = 416 + INTEGER(IntKi), PARAMETER :: B3ADOF33D = 417 + INTEGER(IntKi), PARAMETER :: B3ADOF34D = 418 + INTEGER(IntKi), PARAMETER :: B3ADOF35D = 419 + INTEGER(IntKi), PARAMETER :: B3ADOF36D = 420 + INTEGER(IntKi), PARAMETER :: B3ADOF37D = 421 + INTEGER(IntKi), PARAMETER :: B3ADOF38D = 422 + INTEGER(IntKi), PARAMETER :: B3ADOF39D = 423 + INTEGER(IntKi), PARAMETER :: B3ADOF40D = 424 + INTEGER(IntKi), PARAMETER :: B3ADOF41D = 425 + INTEGER(IntKi), PARAMETER :: B3ADOF42D = 426 + INTEGER(IntKi), PARAMETER :: B3ADOF43D = 427 + INTEGER(IntKi), PARAMETER :: B3ADOF44D = 428 + INTEGER(IntKi), PARAMETER :: B3ADOF45D = 429 + INTEGER(IntKi), PARAMETER :: B3ADOF46D = 430 + INTEGER(IntKi), PARAMETER :: B3ADOF47D = 431 + INTEGER(IntKi), PARAMETER :: B3ADOF48D = 432 + INTEGER(IntKi), PARAMETER :: B3ADOF49D = 433 + INTEGER(IntKi), PARAMETER :: B3ADOF50D = 434 + INTEGER(IntKi), PARAMETER :: B3ADOF51D = 435 + INTEGER(IntKi), PARAMETER :: B3ADOF52D = 436 + INTEGER(IntKi), PARAMETER :: B3ADOF53D = 437 + INTEGER(IntKi), PARAMETER :: B3ADOF54D = 438 + INTEGER(IntKi), PARAMETER :: B3ADOF55D = 439 + INTEGER(IntKi), PARAMETER :: B3ADOF56D = 440 + INTEGER(IntKi), PARAMETER :: B3ADOF57D = 441 + INTEGER(IntKi), PARAMETER :: B3ADOF58D = 442 + INTEGER(IntKi), PARAMETER :: B3ADOF59D = 443 + INTEGER(IntKi), PARAMETER :: B3ADOF60D = 444 + INTEGER(IntKi), PARAMETER :: B3ADOF61D = 445 + INTEGER(IntKi), PARAMETER :: B3ADOF62D = 446 + INTEGER(IntKi), PARAMETER :: B3ADOF63D = 447 + INTEGER(IntKi), PARAMETER :: B3ADOF64D = 448 + INTEGER(IntKi), PARAMETER :: B3ADOF65D = 449 + INTEGER(IntKi), PARAMETER :: B3ADOF66D = 450 + INTEGER(IntKi), PARAMETER :: B3ADOF67D = 451 + INTEGER(IntKi), PARAMETER :: B3ADOF68D = 452 + INTEGER(IntKi), PARAMETER :: B3ADOF69D = 453 + INTEGER(IntKi), PARAMETER :: B3ADOF70D = 454 + INTEGER(IntKi), PARAMETER :: B3ADOF71D = 455 + INTEGER(IntKi), PARAMETER :: B3ADOF72D = 456 + INTEGER(IntKi), PARAMETER :: B3ADOF73D = 457 + INTEGER(IntKi), PARAMETER :: B3ADOF74D = 458 + INTEGER(IntKi), PARAMETER :: B3ADOF75D = 459 + INTEGER(IntKi), PARAMETER :: B3ADOF76D = 460 + INTEGER(IntKi), PARAMETER :: B3ADOF77D = 461 + INTEGER(IntKi), PARAMETER :: B3ADOF78D = 462 + INTEGER(IntKi), PARAMETER :: B3ADOF79D = 463 + INTEGER(IntKi), PARAMETER :: B3ADOF80D = 464 + INTEGER(IntKi), PARAMETER :: B3ADOF81D = 465 + INTEGER(IntKi), PARAMETER :: B3ADOF82D = 466 + INTEGER(IntKi), PARAMETER :: B3ADOF83D = 467 + INTEGER(IntKi), PARAMETER :: B3ADOF84D = 468 + INTEGER(IntKi), PARAMETER :: B3ADOF85D = 469 + INTEGER(IntKi), PARAMETER :: B3ADOF86D = 470 + INTEGER(IntKi), PARAMETER :: B3ADOF87D = 471 + INTEGER(IntKi), PARAMETER :: B3ADOF88D = 472 + INTEGER(IntKi), PARAMETER :: B3ADOF89D = 473 + INTEGER(IntKi), PARAMETER :: B3ADOF90D = 474 + INTEGER(IntKi), PARAMETER :: B3ADOF91D = 475 + INTEGER(IntKi), PARAMETER :: B3ADOF92D = 476 + INTEGER(IntKi), PARAMETER :: B3ADOF93D = 477 + INTEGER(IntKi), PARAMETER :: B3ADOF94D = 478 + INTEGER(IntKi), PARAMETER :: B3ADOF95D = 479 + INTEGER(IntKi), PARAMETER :: B3ADOF96D = 480 + INTEGER(IntKi), PARAMETER :: B3ADOF97D = 481 + INTEGER(IntKi), PARAMETER :: B3ADOF98D = 482 + INTEGER(IntKi), PARAMETER :: B3ADOF99D = 483 + INTEGER(IntKi), PARAMETER :: B4ADOF1D = 484 + INTEGER(IntKi), PARAMETER :: B4ADOF2D = 485 + INTEGER(IntKi), PARAMETER :: B4ADOF3D = 486 + INTEGER(IntKi), PARAMETER :: B4ADOF4D = 487 + INTEGER(IntKi), PARAMETER :: B4ADOF5D = 488 + INTEGER(IntKi), PARAMETER :: B4ADOF6D = 489 + INTEGER(IntKi), PARAMETER :: B4ADOF7D = 490 + INTEGER(IntKi), PARAMETER :: B4ADOF8D = 491 + INTEGER(IntKi), PARAMETER :: B4ADOF9D = 492 + INTEGER(IntKi), PARAMETER :: B4ADOF10D = 493 + INTEGER(IntKi), PARAMETER :: B4ADOF11D = 494 + INTEGER(IntKi), PARAMETER :: B4ADOF12D = 495 + INTEGER(IntKi), PARAMETER :: B4ADOF13D = 496 + INTEGER(IntKi), PARAMETER :: B4ADOF14D = 497 + INTEGER(IntKi), PARAMETER :: B4ADOF15D = 498 + INTEGER(IntKi), PARAMETER :: B4ADOF16D = 499 + INTEGER(IntKi), PARAMETER :: B4ADOF17D = 500 + INTEGER(IntKi), PARAMETER :: B4ADOF18D = 501 + INTEGER(IntKi), PARAMETER :: B4ADOF19D = 502 + INTEGER(IntKi), PARAMETER :: B4ADOF20D = 503 + INTEGER(IntKi), PARAMETER :: B4ADOF21D = 504 + INTEGER(IntKi), PARAMETER :: B4ADOF22D = 505 + INTEGER(IntKi), PARAMETER :: B4ADOF23D = 506 + INTEGER(IntKi), PARAMETER :: B4ADOF24D = 507 + INTEGER(IntKi), PARAMETER :: B4ADOF25D = 508 + INTEGER(IntKi), PARAMETER :: B4ADOF26D = 509 + INTEGER(IntKi), PARAMETER :: B4ADOF27D = 510 + INTEGER(IntKi), PARAMETER :: B4ADOF28D = 511 + INTEGER(IntKi), PARAMETER :: B4ADOF29D = 512 + INTEGER(IntKi), PARAMETER :: B4ADOF30D = 513 + INTEGER(IntKi), PARAMETER :: B4ADOF31D = 514 + INTEGER(IntKi), PARAMETER :: B4ADOF32D = 515 + INTEGER(IntKi), PARAMETER :: B4ADOF33D = 516 + INTEGER(IntKi), PARAMETER :: B4ADOF34D = 517 + INTEGER(IntKi), PARAMETER :: B4ADOF35D = 518 + INTEGER(IntKi), PARAMETER :: B4ADOF36D = 519 + INTEGER(IntKi), PARAMETER :: B4ADOF37D = 520 + INTEGER(IntKi), PARAMETER :: B4ADOF38D = 521 + INTEGER(IntKi), PARAMETER :: B4ADOF39D = 522 + INTEGER(IntKi), PARAMETER :: B4ADOF40D = 523 + INTEGER(IntKi), PARAMETER :: B4ADOF41D = 524 + INTEGER(IntKi), PARAMETER :: B4ADOF42D = 525 + INTEGER(IntKi), PARAMETER :: B4ADOF43D = 526 + INTEGER(IntKi), PARAMETER :: B4ADOF44D = 527 + INTEGER(IntKi), PARAMETER :: B4ADOF45D = 528 + INTEGER(IntKi), PARAMETER :: B4ADOF46D = 529 + INTEGER(IntKi), PARAMETER :: B4ADOF47D = 530 + INTEGER(IntKi), PARAMETER :: B4ADOF48D = 531 + INTEGER(IntKi), PARAMETER :: B4ADOF49D = 532 + INTEGER(IntKi), PARAMETER :: B4ADOF50D = 533 + INTEGER(IntKi), PARAMETER :: B4ADOF51D = 534 + INTEGER(IntKi), PARAMETER :: B4ADOF52D = 535 + INTEGER(IntKi), PARAMETER :: B4ADOF53D = 536 + INTEGER(IntKi), PARAMETER :: B4ADOF54D = 537 + INTEGER(IntKi), PARAMETER :: B4ADOF55D = 538 + INTEGER(IntKi), PARAMETER :: B4ADOF56D = 539 + INTEGER(IntKi), PARAMETER :: B4ADOF57D = 540 + INTEGER(IntKi), PARAMETER :: B4ADOF58D = 541 + INTEGER(IntKi), PARAMETER :: B4ADOF59D = 542 + INTEGER(IntKi), PARAMETER :: B4ADOF60D = 543 + INTEGER(IntKi), PARAMETER :: B4ADOF61D = 544 + INTEGER(IntKi), PARAMETER :: B4ADOF62D = 545 + INTEGER(IntKi), PARAMETER :: B4ADOF63D = 546 + INTEGER(IntKi), PARAMETER :: B4ADOF64D = 547 + INTEGER(IntKi), PARAMETER :: B4ADOF65D = 548 + INTEGER(IntKi), PARAMETER :: B4ADOF66D = 549 + INTEGER(IntKi), PARAMETER :: B4ADOF67D = 550 + INTEGER(IntKi), PARAMETER :: B4ADOF68D = 551 + INTEGER(IntKi), PARAMETER :: B4ADOF69D = 552 + INTEGER(IntKi), PARAMETER :: B4ADOF70D = 553 + INTEGER(IntKi), PARAMETER :: B4ADOF71D = 554 + INTEGER(IntKi), PARAMETER :: B4ADOF72D = 555 + INTEGER(IntKi), PARAMETER :: B4ADOF73D = 556 + INTEGER(IntKi), PARAMETER :: B4ADOF74D = 557 + INTEGER(IntKi), PARAMETER :: B4ADOF75D = 558 + INTEGER(IntKi), PARAMETER :: B4ADOF76D = 559 + INTEGER(IntKi), PARAMETER :: B4ADOF77D = 560 + INTEGER(IntKi), PARAMETER :: B4ADOF78D = 561 + INTEGER(IntKi), PARAMETER :: B4ADOF79D = 562 + INTEGER(IntKi), PARAMETER :: B4ADOF80D = 563 + INTEGER(IntKi), PARAMETER :: B4ADOF81D = 564 + INTEGER(IntKi), PARAMETER :: B4ADOF82D = 565 + INTEGER(IntKi), PARAMETER :: B4ADOF83D = 566 + INTEGER(IntKi), PARAMETER :: B4ADOF84D = 567 + INTEGER(IntKi), PARAMETER :: B4ADOF85D = 568 + INTEGER(IntKi), PARAMETER :: B4ADOF86D = 569 + INTEGER(IntKi), PARAMETER :: B4ADOF87D = 570 + INTEGER(IntKi), PARAMETER :: B4ADOF88D = 571 + INTEGER(IntKi), PARAMETER :: B4ADOF89D = 572 + INTEGER(IntKi), PARAMETER :: B4ADOF90D = 573 + INTEGER(IntKi), PARAMETER :: B4ADOF91D = 574 + INTEGER(IntKi), PARAMETER :: B4ADOF92D = 575 + INTEGER(IntKi), PARAMETER :: B4ADOF93D = 576 + INTEGER(IntKi), PARAMETER :: B4ADOF94D = 577 + INTEGER(IntKi), PARAMETER :: B4ADOF95D = 578 + INTEGER(IntKi), PARAMETER :: B4ADOF96D = 579 + INTEGER(IntKi), PARAMETER :: B4ADOF97D = 580 + INTEGER(IntKi), PARAMETER :: B4ADOF98D = 581 + INTEGER(IntKi), PARAMETER :: B4ADOF99D = 582 + INTEGER(IntKi), PARAMETER :: B5ADOF1D = 583 + INTEGER(IntKi), PARAMETER :: B5ADOF2D = 584 + INTEGER(IntKi), PARAMETER :: B5ADOF3D = 585 + INTEGER(IntKi), PARAMETER :: B5ADOF4D = 586 + INTEGER(IntKi), PARAMETER :: B5ADOF5D = 587 + INTEGER(IntKi), PARAMETER :: B5ADOF6D = 588 + INTEGER(IntKi), PARAMETER :: B5ADOF7D = 589 + INTEGER(IntKi), PARAMETER :: B5ADOF8D = 590 + INTEGER(IntKi), PARAMETER :: B5ADOF9D = 591 + INTEGER(IntKi), PARAMETER :: B5ADOF10D = 592 + INTEGER(IntKi), PARAMETER :: B5ADOF11D = 593 + INTEGER(IntKi), PARAMETER :: B5ADOF12D = 594 + INTEGER(IntKi), PARAMETER :: B5ADOF13D = 595 + INTEGER(IntKi), PARAMETER :: B5ADOF14D = 596 + INTEGER(IntKi), PARAMETER :: B5ADOF15D = 597 + INTEGER(IntKi), PARAMETER :: B5ADOF16D = 598 + INTEGER(IntKi), PARAMETER :: B5ADOF17D = 599 + INTEGER(IntKi), PARAMETER :: B5ADOF18D = 600 + INTEGER(IntKi), PARAMETER :: B5ADOF19D = 601 + INTEGER(IntKi), PARAMETER :: B5ADOF20D = 602 + INTEGER(IntKi), PARAMETER :: B5ADOF21D = 603 + INTEGER(IntKi), PARAMETER :: B5ADOF22D = 604 + INTEGER(IntKi), PARAMETER :: B5ADOF23D = 605 + INTEGER(IntKi), PARAMETER :: B5ADOF24D = 606 + INTEGER(IntKi), PARAMETER :: B5ADOF25D = 607 + INTEGER(IntKi), PARAMETER :: B5ADOF26D = 608 + INTEGER(IntKi), PARAMETER :: B5ADOF27D = 609 + INTEGER(IntKi), PARAMETER :: B5ADOF28D = 610 + INTEGER(IntKi), PARAMETER :: B5ADOF29D = 611 + INTEGER(IntKi), PARAMETER :: B5ADOF30D = 612 + INTEGER(IntKi), PARAMETER :: B5ADOF31D = 613 + INTEGER(IntKi), PARAMETER :: B5ADOF32D = 614 + INTEGER(IntKi), PARAMETER :: B5ADOF33D = 615 + INTEGER(IntKi), PARAMETER :: B5ADOF34D = 616 + INTEGER(IntKi), PARAMETER :: B5ADOF35D = 617 + INTEGER(IntKi), PARAMETER :: B5ADOF36D = 618 + INTEGER(IntKi), PARAMETER :: B5ADOF37D = 619 + INTEGER(IntKi), PARAMETER :: B5ADOF38D = 620 + INTEGER(IntKi), PARAMETER :: B5ADOF39D = 621 + INTEGER(IntKi), PARAMETER :: B5ADOF40D = 622 + INTEGER(IntKi), PARAMETER :: B5ADOF41D = 623 + INTEGER(IntKi), PARAMETER :: B5ADOF42D = 624 + INTEGER(IntKi), PARAMETER :: B5ADOF43D = 625 + INTEGER(IntKi), PARAMETER :: B5ADOF44D = 626 + INTEGER(IntKi), PARAMETER :: B5ADOF45D = 627 + INTEGER(IntKi), PARAMETER :: B5ADOF46D = 628 + INTEGER(IntKi), PARAMETER :: B5ADOF47D = 629 + INTEGER(IntKi), PARAMETER :: B5ADOF48D = 630 + INTEGER(IntKi), PARAMETER :: B5ADOF49D = 631 + INTEGER(IntKi), PARAMETER :: B5ADOF50D = 632 + INTEGER(IntKi), PARAMETER :: B5ADOF51D = 633 + INTEGER(IntKi), PARAMETER :: B5ADOF52D = 634 + INTEGER(IntKi), PARAMETER :: B5ADOF53D = 635 + INTEGER(IntKi), PARAMETER :: B5ADOF54D = 636 + INTEGER(IntKi), PARAMETER :: B5ADOF55D = 637 + INTEGER(IntKi), PARAMETER :: B5ADOF56D = 638 + INTEGER(IntKi), PARAMETER :: B5ADOF57D = 639 + INTEGER(IntKi), PARAMETER :: B5ADOF58D = 640 + INTEGER(IntKi), PARAMETER :: B5ADOF59D = 641 + INTEGER(IntKi), PARAMETER :: B5ADOF60D = 642 + INTEGER(IntKi), PARAMETER :: B5ADOF61D = 643 + INTEGER(IntKi), PARAMETER :: B5ADOF62D = 644 + INTEGER(IntKi), PARAMETER :: B5ADOF63D = 645 + INTEGER(IntKi), PARAMETER :: B5ADOF64D = 646 + INTEGER(IntKi), PARAMETER :: B5ADOF65D = 647 + INTEGER(IntKi), PARAMETER :: B5ADOF66D = 648 + INTEGER(IntKi), PARAMETER :: B5ADOF67D = 649 + INTEGER(IntKi), PARAMETER :: B5ADOF68D = 650 + INTEGER(IntKi), PARAMETER :: B5ADOF69D = 651 + INTEGER(IntKi), PARAMETER :: B5ADOF70D = 652 + INTEGER(IntKi), PARAMETER :: B5ADOF71D = 653 + INTEGER(IntKi), PARAMETER :: B5ADOF72D = 654 + INTEGER(IntKi), PARAMETER :: B5ADOF73D = 655 + INTEGER(IntKi), PARAMETER :: B5ADOF74D = 656 + INTEGER(IntKi), PARAMETER :: B5ADOF75D = 657 + INTEGER(IntKi), PARAMETER :: B5ADOF76D = 658 + INTEGER(IntKi), PARAMETER :: B5ADOF77D = 659 + INTEGER(IntKi), PARAMETER :: B5ADOF78D = 660 + INTEGER(IntKi), PARAMETER :: B5ADOF79D = 661 + INTEGER(IntKi), PARAMETER :: B5ADOF80D = 662 + INTEGER(IntKi), PARAMETER :: B5ADOF81D = 663 + INTEGER(IntKi), PARAMETER :: B5ADOF82D = 664 + INTEGER(IntKi), PARAMETER :: B5ADOF83D = 665 + INTEGER(IntKi), PARAMETER :: B5ADOF84D = 666 + INTEGER(IntKi), PARAMETER :: B5ADOF85D = 667 + INTEGER(IntKi), PARAMETER :: B5ADOF86D = 668 + INTEGER(IntKi), PARAMETER :: B5ADOF87D = 669 + INTEGER(IntKi), PARAMETER :: B5ADOF88D = 670 + INTEGER(IntKi), PARAMETER :: B5ADOF89D = 671 + INTEGER(IntKi), PARAMETER :: B5ADOF90D = 672 + INTEGER(IntKi), PARAMETER :: B5ADOF91D = 673 + INTEGER(IntKi), PARAMETER :: B5ADOF92D = 674 + INTEGER(IntKi), PARAMETER :: B5ADOF93D = 675 + INTEGER(IntKi), PARAMETER :: B5ADOF94D = 676 + INTEGER(IntKi), PARAMETER :: B5ADOF95D = 677 + INTEGER(IntKi), PARAMETER :: B5ADOF96D = 678 + INTEGER(IntKi), PARAMETER :: B5ADOF97D = 679 + INTEGER(IntKi), PARAMETER :: B5ADOF98D = 680 + INTEGER(IntKi), PARAMETER :: B5ADOF99D = 681 + INTEGER(IntKi), PARAMETER :: B6ADOF1D = 682 + INTEGER(IntKi), PARAMETER :: B6ADOF2D = 683 + INTEGER(IntKi), PARAMETER :: B6ADOF3D = 684 + INTEGER(IntKi), PARAMETER :: B6ADOF4D = 685 + INTEGER(IntKi), PARAMETER :: B6ADOF5D = 686 + INTEGER(IntKi), PARAMETER :: B6ADOF6D = 687 + INTEGER(IntKi), PARAMETER :: B6ADOF7D = 688 + INTEGER(IntKi), PARAMETER :: B6ADOF8D = 689 + INTEGER(IntKi), PARAMETER :: B6ADOF9D = 690 + INTEGER(IntKi), PARAMETER :: B6ADOF10D = 691 + INTEGER(IntKi), PARAMETER :: B6ADOF11D = 692 + INTEGER(IntKi), PARAMETER :: B6ADOF12D = 693 + INTEGER(IntKi), PARAMETER :: B6ADOF13D = 694 + INTEGER(IntKi), PARAMETER :: B6ADOF14D = 695 + INTEGER(IntKi), PARAMETER :: B6ADOF15D = 696 + INTEGER(IntKi), PARAMETER :: B6ADOF16D = 697 + INTEGER(IntKi), PARAMETER :: B6ADOF17D = 698 + INTEGER(IntKi), PARAMETER :: B6ADOF18D = 699 + INTEGER(IntKi), PARAMETER :: B6ADOF19D = 700 + INTEGER(IntKi), PARAMETER :: B6ADOF20D = 701 + INTEGER(IntKi), PARAMETER :: B6ADOF21D = 702 + INTEGER(IntKi), PARAMETER :: B6ADOF22D = 703 + INTEGER(IntKi), PARAMETER :: B6ADOF23D = 704 + INTEGER(IntKi), PARAMETER :: B6ADOF24D = 705 + INTEGER(IntKi), PARAMETER :: B6ADOF25D = 706 + INTEGER(IntKi), PARAMETER :: B6ADOF26D = 707 + INTEGER(IntKi), PARAMETER :: B6ADOF27D = 708 + INTEGER(IntKi), PARAMETER :: B6ADOF28D = 709 + INTEGER(IntKi), PARAMETER :: B6ADOF29D = 710 + INTEGER(IntKi), PARAMETER :: B6ADOF30D = 711 + INTEGER(IntKi), PARAMETER :: B6ADOF31D = 712 + INTEGER(IntKi), PARAMETER :: B6ADOF32D = 713 + INTEGER(IntKi), PARAMETER :: B6ADOF33D = 714 + INTEGER(IntKi), PARAMETER :: B6ADOF34D = 715 + INTEGER(IntKi), PARAMETER :: B6ADOF35D = 716 + INTEGER(IntKi), PARAMETER :: B6ADOF36D = 717 + INTEGER(IntKi), PARAMETER :: B6ADOF37D = 718 + INTEGER(IntKi), PARAMETER :: B6ADOF38D = 719 + INTEGER(IntKi), PARAMETER :: B6ADOF39D = 720 + INTEGER(IntKi), PARAMETER :: B6ADOF40D = 721 + INTEGER(IntKi), PARAMETER :: B6ADOF41D = 722 + INTEGER(IntKi), PARAMETER :: B6ADOF42D = 723 + INTEGER(IntKi), PARAMETER :: B6ADOF43D = 724 + INTEGER(IntKi), PARAMETER :: B6ADOF44D = 725 + INTEGER(IntKi), PARAMETER :: B6ADOF45D = 726 + INTEGER(IntKi), PARAMETER :: B6ADOF46D = 727 + INTEGER(IntKi), PARAMETER :: B6ADOF47D = 728 + INTEGER(IntKi), PARAMETER :: B6ADOF48D = 729 + INTEGER(IntKi), PARAMETER :: B6ADOF49D = 730 + INTEGER(IntKi), PARAMETER :: B6ADOF50D = 731 + INTEGER(IntKi), PARAMETER :: B6ADOF51D = 732 + INTEGER(IntKi), PARAMETER :: B6ADOF52D = 733 + INTEGER(IntKi), PARAMETER :: B6ADOF53D = 734 + INTEGER(IntKi), PARAMETER :: B6ADOF54D = 735 + INTEGER(IntKi), PARAMETER :: B6ADOF55D = 736 + INTEGER(IntKi), PARAMETER :: B6ADOF56D = 737 + INTEGER(IntKi), PARAMETER :: B6ADOF57D = 738 + INTEGER(IntKi), PARAMETER :: B6ADOF58D = 739 + INTEGER(IntKi), PARAMETER :: B6ADOF59D = 740 + INTEGER(IntKi), PARAMETER :: B6ADOF60D = 741 + INTEGER(IntKi), PARAMETER :: B6ADOF61D = 742 + INTEGER(IntKi), PARAMETER :: B6ADOF62D = 743 + INTEGER(IntKi), PARAMETER :: B6ADOF63D = 744 + INTEGER(IntKi), PARAMETER :: B6ADOF64D = 745 + INTEGER(IntKi), PARAMETER :: B6ADOF65D = 746 + INTEGER(IntKi), PARAMETER :: B6ADOF66D = 747 + INTEGER(IntKi), PARAMETER :: B6ADOF67D = 748 + INTEGER(IntKi), PARAMETER :: B6ADOF68D = 749 + INTEGER(IntKi), PARAMETER :: B6ADOF69D = 750 + INTEGER(IntKi), PARAMETER :: B6ADOF70D = 751 + INTEGER(IntKi), PARAMETER :: B6ADOF71D = 752 + INTEGER(IntKi), PARAMETER :: B6ADOF72D = 753 + INTEGER(IntKi), PARAMETER :: B6ADOF73D = 754 + INTEGER(IntKi), PARAMETER :: B6ADOF74D = 755 + INTEGER(IntKi), PARAMETER :: B6ADOF75D = 756 + INTEGER(IntKi), PARAMETER :: B6ADOF76D = 757 + INTEGER(IntKi), PARAMETER :: B6ADOF77D = 758 + INTEGER(IntKi), PARAMETER :: B6ADOF78D = 759 + INTEGER(IntKi), PARAMETER :: B6ADOF79D = 760 + INTEGER(IntKi), PARAMETER :: B6ADOF80D = 761 + INTEGER(IntKi), PARAMETER :: B6ADOF81D = 762 + INTEGER(IntKi), PARAMETER :: B6ADOF82D = 763 + INTEGER(IntKi), PARAMETER :: B6ADOF83D = 764 + INTEGER(IntKi), PARAMETER :: B6ADOF84D = 765 + INTEGER(IntKi), PARAMETER :: B6ADOF85D = 766 + INTEGER(IntKi), PARAMETER :: B6ADOF86D = 767 + INTEGER(IntKi), PARAMETER :: B6ADOF87D = 768 + INTEGER(IntKi), PARAMETER :: B6ADOF88D = 769 + INTEGER(IntKi), PARAMETER :: B6ADOF89D = 770 + INTEGER(IntKi), PARAMETER :: B6ADOF90D = 771 + INTEGER(IntKi), PARAMETER :: B6ADOF91D = 772 + INTEGER(IntKi), PARAMETER :: B6ADOF92D = 773 + INTEGER(IntKi), PARAMETER :: B6ADOF93D = 774 + INTEGER(IntKi), PARAMETER :: B6ADOF94D = 775 + INTEGER(IntKi), PARAMETER :: B6ADOF95D = 776 + INTEGER(IntKi), PARAMETER :: B6ADOF96D = 777 + INTEGER(IntKi), PARAMETER :: B6ADOF97D = 778 + INTEGER(IntKi), PARAMETER :: B6ADOF98D = 779 + INTEGER(IntKi), PARAMETER :: B6ADOF99D = 780 + INTEGER(IntKi), PARAMETER :: B7ADOF1D = 781 + INTEGER(IntKi), PARAMETER :: B7ADOF2D = 782 + INTEGER(IntKi), PARAMETER :: B7ADOF3D = 783 + INTEGER(IntKi), PARAMETER :: B7ADOF4D = 784 + INTEGER(IntKi), PARAMETER :: B7ADOF5D = 785 + INTEGER(IntKi), PARAMETER :: B7ADOF6D = 786 + INTEGER(IntKi), PARAMETER :: B7ADOF7D = 787 + INTEGER(IntKi), PARAMETER :: B7ADOF8D = 788 + INTEGER(IntKi), PARAMETER :: B7ADOF9D = 789 + INTEGER(IntKi), PARAMETER :: B7ADOF10D = 790 + INTEGER(IntKi), PARAMETER :: B7ADOF11D = 791 + INTEGER(IntKi), PARAMETER :: B7ADOF12D = 792 + INTEGER(IntKi), PARAMETER :: B7ADOF13D = 793 + INTEGER(IntKi), PARAMETER :: B7ADOF14D = 794 + INTEGER(IntKi), PARAMETER :: B7ADOF15D = 795 + INTEGER(IntKi), PARAMETER :: B7ADOF16D = 796 + INTEGER(IntKi), PARAMETER :: B7ADOF17D = 797 + INTEGER(IntKi), PARAMETER :: B7ADOF18D = 798 + INTEGER(IntKi), PARAMETER :: B7ADOF19D = 799 + INTEGER(IntKi), PARAMETER :: B7ADOF20D = 800 + INTEGER(IntKi), PARAMETER :: B7ADOF21D = 801 + INTEGER(IntKi), PARAMETER :: B7ADOF22D = 802 + INTEGER(IntKi), PARAMETER :: B7ADOF23D = 803 + INTEGER(IntKi), PARAMETER :: B7ADOF24D = 804 + INTEGER(IntKi), PARAMETER :: B7ADOF25D = 805 + INTEGER(IntKi), PARAMETER :: B7ADOF26D = 806 + INTEGER(IntKi), PARAMETER :: B7ADOF27D = 807 + INTEGER(IntKi), PARAMETER :: B7ADOF28D = 808 + INTEGER(IntKi), PARAMETER :: B7ADOF29D = 809 + INTEGER(IntKi), PARAMETER :: B7ADOF30D = 810 + INTEGER(IntKi), PARAMETER :: B7ADOF31D = 811 + INTEGER(IntKi), PARAMETER :: B7ADOF32D = 812 + INTEGER(IntKi), PARAMETER :: B7ADOF33D = 813 + INTEGER(IntKi), PARAMETER :: B7ADOF34D = 814 + INTEGER(IntKi), PARAMETER :: B7ADOF35D = 815 + INTEGER(IntKi), PARAMETER :: B7ADOF36D = 816 + INTEGER(IntKi), PARAMETER :: B7ADOF37D = 817 + INTEGER(IntKi), PARAMETER :: B7ADOF38D = 818 + INTEGER(IntKi), PARAMETER :: B7ADOF39D = 819 + INTEGER(IntKi), PARAMETER :: B7ADOF40D = 820 + INTEGER(IntKi), PARAMETER :: B7ADOF41D = 821 + INTEGER(IntKi), PARAMETER :: B7ADOF42D = 822 + INTEGER(IntKi), PARAMETER :: B7ADOF43D = 823 + INTEGER(IntKi), PARAMETER :: B7ADOF44D = 824 + INTEGER(IntKi), PARAMETER :: B7ADOF45D = 825 + INTEGER(IntKi), PARAMETER :: B7ADOF46D = 826 + INTEGER(IntKi), PARAMETER :: B7ADOF47D = 827 + INTEGER(IntKi), PARAMETER :: B7ADOF48D = 828 + INTEGER(IntKi), PARAMETER :: B7ADOF49D = 829 + INTEGER(IntKi), PARAMETER :: B7ADOF50D = 830 + INTEGER(IntKi), PARAMETER :: B7ADOF51D = 831 + INTEGER(IntKi), PARAMETER :: B7ADOF52D = 832 + INTEGER(IntKi), PARAMETER :: B7ADOF53D = 833 + INTEGER(IntKi), PARAMETER :: B7ADOF54D = 834 + INTEGER(IntKi), PARAMETER :: B7ADOF55D = 835 + INTEGER(IntKi), PARAMETER :: B7ADOF56D = 836 + INTEGER(IntKi), PARAMETER :: B7ADOF57D = 837 + INTEGER(IntKi), PARAMETER :: B7ADOF58D = 838 + INTEGER(IntKi), PARAMETER :: B7ADOF59D = 839 + INTEGER(IntKi), PARAMETER :: B7ADOF60D = 840 + INTEGER(IntKi), PARAMETER :: B7ADOF61D = 841 + INTEGER(IntKi), PARAMETER :: B7ADOF62D = 842 + INTEGER(IntKi), PARAMETER :: B7ADOF63D = 843 + INTEGER(IntKi), PARAMETER :: B7ADOF64D = 844 + INTEGER(IntKi), PARAMETER :: B7ADOF65D = 845 + INTEGER(IntKi), PARAMETER :: B7ADOF66D = 846 + INTEGER(IntKi), PARAMETER :: B7ADOF67D = 847 + INTEGER(IntKi), PARAMETER :: B7ADOF68D = 848 + INTEGER(IntKi), PARAMETER :: B7ADOF69D = 849 + INTEGER(IntKi), PARAMETER :: B7ADOF70D = 850 + INTEGER(IntKi), PARAMETER :: B7ADOF71D = 851 + INTEGER(IntKi), PARAMETER :: B7ADOF72D = 852 + INTEGER(IntKi), PARAMETER :: B7ADOF73D = 853 + INTEGER(IntKi), PARAMETER :: B7ADOF74D = 854 + INTEGER(IntKi), PARAMETER :: B7ADOF75D = 855 + INTEGER(IntKi), PARAMETER :: B7ADOF76D = 856 + INTEGER(IntKi), PARAMETER :: B7ADOF77D = 857 + INTEGER(IntKi), PARAMETER :: B7ADOF78D = 858 + INTEGER(IntKi), PARAMETER :: B7ADOF79D = 859 + INTEGER(IntKi), PARAMETER :: B7ADOF80D = 860 + INTEGER(IntKi), PARAMETER :: B7ADOF81D = 861 + INTEGER(IntKi), PARAMETER :: B7ADOF82D = 862 + INTEGER(IntKi), PARAMETER :: B7ADOF83D = 863 + INTEGER(IntKi), PARAMETER :: B7ADOF84D = 864 + INTEGER(IntKi), PARAMETER :: B7ADOF85D = 865 + INTEGER(IntKi), PARAMETER :: B7ADOF86D = 866 + INTEGER(IntKi), PARAMETER :: B7ADOF87D = 867 + INTEGER(IntKi), PARAMETER :: B7ADOF88D = 868 + INTEGER(IntKi), PARAMETER :: B7ADOF89D = 869 + INTEGER(IntKi), PARAMETER :: B7ADOF90D = 870 + INTEGER(IntKi), PARAMETER :: B7ADOF91D = 871 + INTEGER(IntKi), PARAMETER :: B7ADOF92D = 872 + INTEGER(IntKi), PARAMETER :: B7ADOF93D = 873 + INTEGER(IntKi), PARAMETER :: B7ADOF94D = 874 + INTEGER(IntKi), PARAMETER :: B7ADOF95D = 875 + INTEGER(IntKi), PARAMETER :: B7ADOF96D = 876 + INTEGER(IntKi), PARAMETER :: B7ADOF97D = 877 + INTEGER(IntKi), PARAMETER :: B7ADOF98D = 878 + INTEGER(IntKi), PARAMETER :: B7ADOF99D = 879 + INTEGER(IntKi), PARAMETER :: B8ADOF1D = 880 + INTEGER(IntKi), PARAMETER :: B8ADOF2D = 881 + INTEGER(IntKi), PARAMETER :: B8ADOF3D = 882 + INTEGER(IntKi), PARAMETER :: B8ADOF4D = 883 + INTEGER(IntKi), PARAMETER :: B8ADOF5D = 884 + INTEGER(IntKi), PARAMETER :: B8ADOF6D = 885 + INTEGER(IntKi), PARAMETER :: B8ADOF7D = 886 + INTEGER(IntKi), PARAMETER :: B8ADOF8D = 887 + INTEGER(IntKi), PARAMETER :: B8ADOF9D = 888 + INTEGER(IntKi), PARAMETER :: B8ADOF10D = 889 + INTEGER(IntKi), PARAMETER :: B8ADOF11D = 890 + INTEGER(IntKi), PARAMETER :: B8ADOF12D = 891 + INTEGER(IntKi), PARAMETER :: B8ADOF13D = 892 + INTEGER(IntKi), PARAMETER :: B8ADOF14D = 893 + INTEGER(IntKi), PARAMETER :: B8ADOF15D = 894 + INTEGER(IntKi), PARAMETER :: B8ADOF16D = 895 + INTEGER(IntKi), PARAMETER :: B8ADOF17D = 896 + INTEGER(IntKi), PARAMETER :: B8ADOF18D = 897 + INTEGER(IntKi), PARAMETER :: B8ADOF19D = 898 + INTEGER(IntKi), PARAMETER :: B8ADOF20D = 899 + INTEGER(IntKi), PARAMETER :: B8ADOF21D = 900 + INTEGER(IntKi), PARAMETER :: B8ADOF22D = 901 + INTEGER(IntKi), PARAMETER :: B8ADOF23D = 902 + INTEGER(IntKi), PARAMETER :: B8ADOF24D = 903 + INTEGER(IntKi), PARAMETER :: B8ADOF25D = 904 + INTEGER(IntKi), PARAMETER :: B8ADOF26D = 905 + INTEGER(IntKi), PARAMETER :: B8ADOF27D = 906 + INTEGER(IntKi), PARAMETER :: B8ADOF28D = 907 + INTEGER(IntKi), PARAMETER :: B8ADOF29D = 908 + INTEGER(IntKi), PARAMETER :: B8ADOF30D = 909 + INTEGER(IntKi), PARAMETER :: B8ADOF31D = 910 + INTEGER(IntKi), PARAMETER :: B8ADOF32D = 911 + INTEGER(IntKi), PARAMETER :: B8ADOF33D = 912 + INTEGER(IntKi), PARAMETER :: B8ADOF34D = 913 + INTEGER(IntKi), PARAMETER :: B8ADOF35D = 914 + INTEGER(IntKi), PARAMETER :: B8ADOF36D = 915 + INTEGER(IntKi), PARAMETER :: B8ADOF37D = 916 + INTEGER(IntKi), PARAMETER :: B8ADOF38D = 917 + INTEGER(IntKi), PARAMETER :: B8ADOF39D = 918 + INTEGER(IntKi), PARAMETER :: B8ADOF40D = 919 + INTEGER(IntKi), PARAMETER :: B8ADOF41D = 920 + INTEGER(IntKi), PARAMETER :: B8ADOF42D = 921 + INTEGER(IntKi), PARAMETER :: B8ADOF43D = 922 + INTEGER(IntKi), PARAMETER :: B8ADOF44D = 923 + INTEGER(IntKi), PARAMETER :: B8ADOF45D = 924 + INTEGER(IntKi), PARAMETER :: B8ADOF46D = 925 + INTEGER(IntKi), PARAMETER :: B8ADOF47D = 926 + INTEGER(IntKi), PARAMETER :: B8ADOF48D = 927 + INTEGER(IntKi), PARAMETER :: B8ADOF49D = 928 + INTEGER(IntKi), PARAMETER :: B8ADOF50D = 929 + INTEGER(IntKi), PARAMETER :: B8ADOF51D = 930 + INTEGER(IntKi), PARAMETER :: B8ADOF52D = 931 + INTEGER(IntKi), PARAMETER :: B8ADOF53D = 932 + INTEGER(IntKi), PARAMETER :: B8ADOF54D = 933 + INTEGER(IntKi), PARAMETER :: B8ADOF55D = 934 + INTEGER(IntKi), PARAMETER :: B8ADOF56D = 935 + INTEGER(IntKi), PARAMETER :: B8ADOF57D = 936 + INTEGER(IntKi), PARAMETER :: B8ADOF58D = 937 + INTEGER(IntKi), PARAMETER :: B8ADOF59D = 938 + INTEGER(IntKi), PARAMETER :: B8ADOF60D = 939 + INTEGER(IntKi), PARAMETER :: B8ADOF61D = 940 + INTEGER(IntKi), PARAMETER :: B8ADOF62D = 941 + INTEGER(IntKi), PARAMETER :: B8ADOF63D = 942 + INTEGER(IntKi), PARAMETER :: B8ADOF64D = 943 + INTEGER(IntKi), PARAMETER :: B8ADOF65D = 944 + INTEGER(IntKi), PARAMETER :: B8ADOF66D = 945 + INTEGER(IntKi), PARAMETER :: B8ADOF67D = 946 + INTEGER(IntKi), PARAMETER :: B8ADOF68D = 947 + INTEGER(IntKi), PARAMETER :: B8ADOF69D = 948 + INTEGER(IntKi), PARAMETER :: B8ADOF70D = 949 + INTEGER(IntKi), PARAMETER :: B8ADOF71D = 950 + INTEGER(IntKi), PARAMETER :: B8ADOF72D = 951 + INTEGER(IntKi), PARAMETER :: B8ADOF73D = 952 + INTEGER(IntKi), PARAMETER :: B8ADOF74D = 953 + INTEGER(IntKi), PARAMETER :: B8ADOF75D = 954 + INTEGER(IntKi), PARAMETER :: B8ADOF76D = 955 + INTEGER(IntKi), PARAMETER :: B8ADOF77D = 956 + INTEGER(IntKi), PARAMETER :: B8ADOF78D = 957 + INTEGER(IntKi), PARAMETER :: B8ADOF79D = 958 + INTEGER(IntKi), PARAMETER :: B8ADOF80D = 959 + INTEGER(IntKi), PARAMETER :: B8ADOF81D = 960 + INTEGER(IntKi), PARAMETER :: B8ADOF82D = 961 + INTEGER(IntKi), PARAMETER :: B8ADOF83D = 962 + INTEGER(IntKi), PARAMETER :: B8ADOF84D = 963 + INTEGER(IntKi), PARAMETER :: B8ADOF85D = 964 + INTEGER(IntKi), PARAMETER :: B8ADOF86D = 965 + INTEGER(IntKi), PARAMETER :: B8ADOF87D = 966 + INTEGER(IntKi), PARAMETER :: B8ADOF88D = 967 + INTEGER(IntKi), PARAMETER :: B8ADOF89D = 968 + INTEGER(IntKi), PARAMETER :: B8ADOF90D = 969 + INTEGER(IntKi), PARAMETER :: B8ADOF91D = 970 + INTEGER(IntKi), PARAMETER :: B8ADOF92D = 971 + INTEGER(IntKi), PARAMETER :: B8ADOF93D = 972 + INTEGER(IntKi), PARAMETER :: B8ADOF94D = 973 + INTEGER(IntKi), PARAMETER :: B8ADOF95D = 974 + INTEGER(IntKi), PARAMETER :: B8ADOF96D = 975 + INTEGER(IntKi), PARAMETER :: B8ADOF97D = 976 + INTEGER(IntKi), PARAMETER :: B8ADOF98D = 977 + INTEGER(IntKi), PARAMETER :: B8ADOF99D = 978 + INTEGER(IntKi), PARAMETER :: B9ADOF1D = 979 + INTEGER(IntKi), PARAMETER :: B9ADOF2D = 980 + INTEGER(IntKi), PARAMETER :: B9ADOF3D = 981 + INTEGER(IntKi), PARAMETER :: B9ADOF4D = 982 + INTEGER(IntKi), PARAMETER :: B9ADOF5D = 983 + INTEGER(IntKi), PARAMETER :: B9ADOF6D = 984 + INTEGER(IntKi), PARAMETER :: B9ADOF7D = 985 + INTEGER(IntKi), PARAMETER :: B9ADOF8D = 986 + INTEGER(IntKi), PARAMETER :: B9ADOF9D = 987 + INTEGER(IntKi), PARAMETER :: B9ADOF10D = 988 + INTEGER(IntKi), PARAMETER :: B9ADOF11D = 989 + INTEGER(IntKi), PARAMETER :: B9ADOF12D = 990 + INTEGER(IntKi), PARAMETER :: B9ADOF13D = 991 + INTEGER(IntKi), PARAMETER :: B9ADOF14D = 992 + INTEGER(IntKi), PARAMETER :: B9ADOF15D = 993 + INTEGER(IntKi), PARAMETER :: B9ADOF16D = 994 + INTEGER(IntKi), PARAMETER :: B9ADOF17D = 995 + INTEGER(IntKi), PARAMETER :: B9ADOF18D = 996 + INTEGER(IntKi), PARAMETER :: B9ADOF19D = 997 + INTEGER(IntKi), PARAMETER :: B9ADOF20D = 998 + INTEGER(IntKi), PARAMETER :: B9ADOF21D = 999 + INTEGER(IntKi), PARAMETER :: B9ADOF22D = 1000 + INTEGER(IntKi), PARAMETER :: B9ADOF23D = 1001 + INTEGER(IntKi), PARAMETER :: B9ADOF24D = 1002 + INTEGER(IntKi), PARAMETER :: B9ADOF25D = 1003 + INTEGER(IntKi), PARAMETER :: B9ADOF26D = 1004 + INTEGER(IntKi), PARAMETER :: B9ADOF27D = 1005 + INTEGER(IntKi), PARAMETER :: B9ADOF28D = 1006 + INTEGER(IntKi), PARAMETER :: B9ADOF29D = 1007 + INTEGER(IntKi), PARAMETER :: B9ADOF30D = 1008 + INTEGER(IntKi), PARAMETER :: B9ADOF31D = 1009 + INTEGER(IntKi), PARAMETER :: B9ADOF32D = 1010 + INTEGER(IntKi), PARAMETER :: B9ADOF33D = 1011 + INTEGER(IntKi), PARAMETER :: B9ADOF34D = 1012 + INTEGER(IntKi), PARAMETER :: B9ADOF35D = 1013 + INTEGER(IntKi), PARAMETER :: B9ADOF36D = 1014 + INTEGER(IntKi), PARAMETER :: B9ADOF37D = 1015 + INTEGER(IntKi), PARAMETER :: B9ADOF38D = 1016 + INTEGER(IntKi), PARAMETER :: B9ADOF39D = 1017 + INTEGER(IntKi), PARAMETER :: B9ADOF40D = 1018 + INTEGER(IntKi), PARAMETER :: B9ADOF41D = 1019 + INTEGER(IntKi), PARAMETER :: B9ADOF42D = 1020 + INTEGER(IntKi), PARAMETER :: B9ADOF43D = 1021 + INTEGER(IntKi), PARAMETER :: B9ADOF44D = 1022 + INTEGER(IntKi), PARAMETER :: B9ADOF45D = 1023 + INTEGER(IntKi), PARAMETER :: B9ADOF46D = 1024 + INTEGER(IntKi), PARAMETER :: B9ADOF47D = 1025 + INTEGER(IntKi), PARAMETER :: B9ADOF48D = 1026 + INTEGER(IntKi), PARAMETER :: B9ADOF49D = 1027 + INTEGER(IntKi), PARAMETER :: B9ADOF50D = 1028 + INTEGER(IntKi), PARAMETER :: B9ADOF51D = 1029 + INTEGER(IntKi), PARAMETER :: B9ADOF52D = 1030 + INTEGER(IntKi), PARAMETER :: B9ADOF53D = 1031 + INTEGER(IntKi), PARAMETER :: B9ADOF54D = 1032 + INTEGER(IntKi), PARAMETER :: B9ADOF55D = 1033 + INTEGER(IntKi), PARAMETER :: B9ADOF56D = 1034 + INTEGER(IntKi), PARAMETER :: B9ADOF57D = 1035 + INTEGER(IntKi), PARAMETER :: B9ADOF58D = 1036 + INTEGER(IntKi), PARAMETER :: B9ADOF59D = 1037 + INTEGER(IntKi), PARAMETER :: B9ADOF60D = 1038 + INTEGER(IntKi), PARAMETER :: B9ADOF61D = 1039 + INTEGER(IntKi), PARAMETER :: B9ADOF62D = 1040 + INTEGER(IntKi), PARAMETER :: B9ADOF63D = 1041 + INTEGER(IntKi), PARAMETER :: B9ADOF64D = 1042 + INTEGER(IntKi), PARAMETER :: B9ADOF65D = 1043 + INTEGER(IntKi), PARAMETER :: B9ADOF66D = 1044 + INTEGER(IntKi), PARAMETER :: B9ADOF67D = 1045 + INTEGER(IntKi), PARAMETER :: B9ADOF68D = 1046 + INTEGER(IntKi), PARAMETER :: B9ADOF69D = 1047 + INTEGER(IntKi), PARAMETER :: B9ADOF70D = 1048 + INTEGER(IntKi), PARAMETER :: B9ADOF71D = 1049 + INTEGER(IntKi), PARAMETER :: B9ADOF72D = 1050 + INTEGER(IntKi), PARAMETER :: B9ADOF73D = 1051 + INTEGER(IntKi), PARAMETER :: B9ADOF74D = 1052 + INTEGER(IntKi), PARAMETER :: B9ADOF75D = 1053 + INTEGER(IntKi), PARAMETER :: B9ADOF76D = 1054 + INTEGER(IntKi), PARAMETER :: B9ADOF77D = 1055 + INTEGER(IntKi), PARAMETER :: B9ADOF78D = 1056 + INTEGER(IntKi), PARAMETER :: B9ADOF79D = 1057 + INTEGER(IntKi), PARAMETER :: B9ADOF80D = 1058 + INTEGER(IntKi), PARAMETER :: B9ADOF81D = 1059 + INTEGER(IntKi), PARAMETER :: B9ADOF82D = 1060 + INTEGER(IntKi), PARAMETER :: B9ADOF83D = 1061 + INTEGER(IntKi), PARAMETER :: B9ADOF84D = 1062 + INTEGER(IntKi), PARAMETER :: B9ADOF85D = 1063 + INTEGER(IntKi), PARAMETER :: B9ADOF86D = 1064 + INTEGER(IntKi), PARAMETER :: B9ADOF87D = 1065 + INTEGER(IntKi), PARAMETER :: B9ADOF88D = 1066 + INTEGER(IntKi), PARAMETER :: B9ADOF89D = 1067 + INTEGER(IntKi), PARAMETER :: B9ADOF90D = 1068 + INTEGER(IntKi), PARAMETER :: B9ADOF91D = 1069 + INTEGER(IntKi), PARAMETER :: B9ADOF92D = 1070 + INTEGER(IntKi), PARAMETER :: B9ADOF93D = 1071 + INTEGER(IntKi), PARAMETER :: B9ADOF94D = 1072 + INTEGER(IntKi), PARAMETER :: B9ADOF95D = 1073 + INTEGER(IntKi), PARAMETER :: B9ADOF96D = 1074 + INTEGER(IntKi), PARAMETER :: B9ADOF97D = 1075 + INTEGER(IntKi), PARAMETER :: B9ADOF98D = 1076 + INTEGER(IntKi), PARAMETER :: B9ADOF99D = 1077 + INTEGER(IntKi), PARAMETER :: B1ADOF1V = 1078 + INTEGER(IntKi), PARAMETER :: B1ADOF2V = 1079 + INTEGER(IntKi), PARAMETER :: B1ADOF3V = 1080 + INTEGER(IntKi), PARAMETER :: B1ADOF4V = 1081 + INTEGER(IntKi), PARAMETER :: B1ADOF5V = 1082 + INTEGER(IntKi), PARAMETER :: B1ADOF6V = 1083 + INTEGER(IntKi), PARAMETER :: B1ADOF7V = 1084 + INTEGER(IntKi), PARAMETER :: B1ADOF8V = 1085 + INTEGER(IntKi), PARAMETER :: B1ADOF9V = 1086 + INTEGER(IntKi), PARAMETER :: B1ADOF10V = 1087 + INTEGER(IntKi), PARAMETER :: B1ADOF11V = 1088 + INTEGER(IntKi), PARAMETER :: B1ADOF12V = 1089 + INTEGER(IntKi), PARAMETER :: B1ADOF13V = 1090 + INTEGER(IntKi), PARAMETER :: B1ADOF14V = 1091 + INTEGER(IntKi), PARAMETER :: B1ADOF15V = 1092 + INTEGER(IntKi), PARAMETER :: B1ADOF16V = 1093 + INTEGER(IntKi), PARAMETER :: B1ADOF17V = 1094 + INTEGER(IntKi), PARAMETER :: B1ADOF18V = 1095 + INTEGER(IntKi), PARAMETER :: B1ADOF19V = 1096 + INTEGER(IntKi), PARAMETER :: B1ADOF20V = 1097 + INTEGER(IntKi), PARAMETER :: B1ADOF21V = 1098 + INTEGER(IntKi), PARAMETER :: B1ADOF22V = 1099 + INTEGER(IntKi), PARAMETER :: B1ADOF23V = 1100 + INTEGER(IntKi), PARAMETER :: B1ADOF24V = 1101 + INTEGER(IntKi), PARAMETER :: B1ADOF25V = 1102 + INTEGER(IntKi), PARAMETER :: B1ADOF26V = 1103 + INTEGER(IntKi), PARAMETER :: B1ADOF27V = 1104 + INTEGER(IntKi), PARAMETER :: B1ADOF28V = 1105 + INTEGER(IntKi), PARAMETER :: B1ADOF29V = 1106 + INTEGER(IntKi), PARAMETER :: B1ADOF30V = 1107 + INTEGER(IntKi), PARAMETER :: B1ADOF31V = 1108 + INTEGER(IntKi), PARAMETER :: B1ADOF32V = 1109 + INTEGER(IntKi), PARAMETER :: B1ADOF33V = 1110 + INTEGER(IntKi), PARAMETER :: B1ADOF34V = 1111 + INTEGER(IntKi), PARAMETER :: B1ADOF35V = 1112 + INTEGER(IntKi), PARAMETER :: B1ADOF36V = 1113 + INTEGER(IntKi), PARAMETER :: B1ADOF37V = 1114 + INTEGER(IntKi), PARAMETER :: B1ADOF38V = 1115 + INTEGER(IntKi), PARAMETER :: B1ADOF39V = 1116 + INTEGER(IntKi), PARAMETER :: B1ADOF40V = 1117 + INTEGER(IntKi), PARAMETER :: B1ADOF41V = 1118 + INTEGER(IntKi), PARAMETER :: B1ADOF42V = 1119 + INTEGER(IntKi), PARAMETER :: B1ADOF43V = 1120 + INTEGER(IntKi), PARAMETER :: B1ADOF44V = 1121 + INTEGER(IntKi), PARAMETER :: B1ADOF45V = 1122 + INTEGER(IntKi), PARAMETER :: B1ADOF46V = 1123 + INTEGER(IntKi), PARAMETER :: B1ADOF47V = 1124 + INTEGER(IntKi), PARAMETER :: B1ADOF48V = 1125 + INTEGER(IntKi), PARAMETER :: B1ADOF49V = 1126 + INTEGER(IntKi), PARAMETER :: B1ADOF50V = 1127 + INTEGER(IntKi), PARAMETER :: B1ADOF51V = 1128 + INTEGER(IntKi), PARAMETER :: B1ADOF52V = 1129 + INTEGER(IntKi), PARAMETER :: B1ADOF53V = 1130 + INTEGER(IntKi), PARAMETER :: B1ADOF54V = 1131 + INTEGER(IntKi), PARAMETER :: B1ADOF55V = 1132 + INTEGER(IntKi), PARAMETER :: B1ADOF56V = 1133 + INTEGER(IntKi), PARAMETER :: B1ADOF57V = 1134 + INTEGER(IntKi), PARAMETER :: B1ADOF58V = 1135 + INTEGER(IntKi), PARAMETER :: B1ADOF59V = 1136 + INTEGER(IntKi), PARAMETER :: B1ADOF60V = 1137 + INTEGER(IntKi), PARAMETER :: B1ADOF61V = 1138 + INTEGER(IntKi), PARAMETER :: B1ADOF62V = 1139 + INTEGER(IntKi), PARAMETER :: B1ADOF63V = 1140 + INTEGER(IntKi), PARAMETER :: B1ADOF64V = 1141 + INTEGER(IntKi), PARAMETER :: B1ADOF65V = 1142 + INTEGER(IntKi), PARAMETER :: B1ADOF66V = 1143 + INTEGER(IntKi), PARAMETER :: B1ADOF67V = 1144 + INTEGER(IntKi), PARAMETER :: B1ADOF68V = 1145 + INTEGER(IntKi), PARAMETER :: B1ADOF69V = 1146 + INTEGER(IntKi), PARAMETER :: B1ADOF70V = 1147 + INTEGER(IntKi), PARAMETER :: B1ADOF71V = 1148 + INTEGER(IntKi), PARAMETER :: B1ADOF72V = 1149 + INTEGER(IntKi), PARAMETER :: B1ADOF73V = 1150 + INTEGER(IntKi), PARAMETER :: B1ADOF74V = 1151 + INTEGER(IntKi), PARAMETER :: B1ADOF75V = 1152 + INTEGER(IntKi), PARAMETER :: B1ADOF76V = 1153 + INTEGER(IntKi), PARAMETER :: B1ADOF77V = 1154 + INTEGER(IntKi), PARAMETER :: B1ADOF78V = 1155 + INTEGER(IntKi), PARAMETER :: B1ADOF79V = 1156 + INTEGER(IntKi), PARAMETER :: B1ADOF80V = 1157 + INTEGER(IntKi), PARAMETER :: B1ADOF81V = 1158 + INTEGER(IntKi), PARAMETER :: B1ADOF82V = 1159 + INTEGER(IntKi), PARAMETER :: B1ADOF83V = 1160 + INTEGER(IntKi), PARAMETER :: B1ADOF84V = 1161 + INTEGER(IntKi), PARAMETER :: B1ADOF85V = 1162 + INTEGER(IntKi), PARAMETER :: B1ADOF86V = 1163 + INTEGER(IntKi), PARAMETER :: B1ADOF87V = 1164 + INTEGER(IntKi), PARAMETER :: B1ADOF88V = 1165 + INTEGER(IntKi), PARAMETER :: B1ADOF89V = 1166 + INTEGER(IntKi), PARAMETER :: B1ADOF90V = 1167 + INTEGER(IntKi), PARAMETER :: B1ADOF91V = 1168 + INTEGER(IntKi), PARAMETER :: B1ADOF92V = 1169 + INTEGER(IntKi), PARAMETER :: B1ADOF93V = 1170 + INTEGER(IntKi), PARAMETER :: B1ADOF94V = 1171 + INTEGER(IntKi), PARAMETER :: B1ADOF95V = 1172 + INTEGER(IntKi), PARAMETER :: B1ADOF96V = 1173 + INTEGER(IntKi), PARAMETER :: B1ADOF97V = 1174 + INTEGER(IntKi), PARAMETER :: B1ADOF98V = 1175 + INTEGER(IntKi), PARAMETER :: B1ADOF99V = 1176 + INTEGER(IntKi), PARAMETER :: B2ADOF1V = 1177 + INTEGER(IntKi), PARAMETER :: B2ADOF2V = 1178 + INTEGER(IntKi), PARAMETER :: B2ADOF3V = 1179 + INTEGER(IntKi), PARAMETER :: B2ADOF4V = 1180 + INTEGER(IntKi), PARAMETER :: B2ADOF5V = 1181 + INTEGER(IntKi), PARAMETER :: B2ADOF6V = 1182 + INTEGER(IntKi), PARAMETER :: B2ADOF7V = 1183 + INTEGER(IntKi), PARAMETER :: B2ADOF8V = 1184 + INTEGER(IntKi), PARAMETER :: B2ADOF9V = 1185 + INTEGER(IntKi), PARAMETER :: B2ADOF10V = 1186 + INTEGER(IntKi), PARAMETER :: B2ADOF11V = 1187 + INTEGER(IntKi), PARAMETER :: B2ADOF12V = 1188 + INTEGER(IntKi), PARAMETER :: B2ADOF13V = 1189 + INTEGER(IntKi), PARAMETER :: B2ADOF14V = 1190 + INTEGER(IntKi), PARAMETER :: B2ADOF15V = 1191 + INTEGER(IntKi), PARAMETER :: B2ADOF16V = 1192 + INTEGER(IntKi), PARAMETER :: B2ADOF17V = 1193 + INTEGER(IntKi), PARAMETER :: B2ADOF18V = 1194 + INTEGER(IntKi), PARAMETER :: B2ADOF19V = 1195 + INTEGER(IntKi), PARAMETER :: B2ADOF20V = 1196 + INTEGER(IntKi), PARAMETER :: B2ADOF21V = 1197 + INTEGER(IntKi), PARAMETER :: B2ADOF22V = 1198 + INTEGER(IntKi), PARAMETER :: B2ADOF23V = 1199 + INTEGER(IntKi), PARAMETER :: B2ADOF24V = 1200 + INTEGER(IntKi), PARAMETER :: B2ADOF25V = 1201 + INTEGER(IntKi), PARAMETER :: B2ADOF26V = 1202 + INTEGER(IntKi), PARAMETER :: B2ADOF27V = 1203 + INTEGER(IntKi), PARAMETER :: B2ADOF28V = 1204 + INTEGER(IntKi), PARAMETER :: B2ADOF29V = 1205 + INTEGER(IntKi), PARAMETER :: B2ADOF30V = 1206 + INTEGER(IntKi), PARAMETER :: B2ADOF31V = 1207 + INTEGER(IntKi), PARAMETER :: B2ADOF32V = 1208 + INTEGER(IntKi), PARAMETER :: B2ADOF33V = 1209 + INTEGER(IntKi), PARAMETER :: B2ADOF34V = 1210 + INTEGER(IntKi), PARAMETER :: B2ADOF35V = 1211 + INTEGER(IntKi), PARAMETER :: B2ADOF36V = 1212 + INTEGER(IntKi), PARAMETER :: B2ADOF37V = 1213 + INTEGER(IntKi), PARAMETER :: B2ADOF38V = 1214 + INTEGER(IntKi), PARAMETER :: B2ADOF39V = 1215 + INTEGER(IntKi), PARAMETER :: B2ADOF40V = 1216 + INTEGER(IntKi), PARAMETER :: B2ADOF41V = 1217 + INTEGER(IntKi), PARAMETER :: B2ADOF42V = 1218 + INTEGER(IntKi), PARAMETER :: B2ADOF43V = 1219 + INTEGER(IntKi), PARAMETER :: B2ADOF44V = 1220 + INTEGER(IntKi), PARAMETER :: B2ADOF45V = 1221 + INTEGER(IntKi), PARAMETER :: B2ADOF46V = 1222 + INTEGER(IntKi), PARAMETER :: B2ADOF47V = 1223 + INTEGER(IntKi), PARAMETER :: B2ADOF48V = 1224 + INTEGER(IntKi), PARAMETER :: B2ADOF49V = 1225 + INTEGER(IntKi), PARAMETER :: B2ADOF50V = 1226 + INTEGER(IntKi), PARAMETER :: B2ADOF51V = 1227 + INTEGER(IntKi), PARAMETER :: B2ADOF52V = 1228 + INTEGER(IntKi), PARAMETER :: B2ADOF53V = 1229 + INTEGER(IntKi), PARAMETER :: B2ADOF54V = 1230 + INTEGER(IntKi), PARAMETER :: B2ADOF55V = 1231 + INTEGER(IntKi), PARAMETER :: B2ADOF56V = 1232 + INTEGER(IntKi), PARAMETER :: B2ADOF57V = 1233 + INTEGER(IntKi), PARAMETER :: B2ADOF58V = 1234 + INTEGER(IntKi), PARAMETER :: B2ADOF59V = 1235 + INTEGER(IntKi), PARAMETER :: B2ADOF60V = 1236 + INTEGER(IntKi), PARAMETER :: B2ADOF61V = 1237 + INTEGER(IntKi), PARAMETER :: B2ADOF62V = 1238 + INTEGER(IntKi), PARAMETER :: B2ADOF63V = 1239 + INTEGER(IntKi), PARAMETER :: B2ADOF64V = 1240 + INTEGER(IntKi), PARAMETER :: B2ADOF65V = 1241 + INTEGER(IntKi), PARAMETER :: B2ADOF66V = 1242 + INTEGER(IntKi), PARAMETER :: B2ADOF67V = 1243 + INTEGER(IntKi), PARAMETER :: B2ADOF68V = 1244 + INTEGER(IntKi), PARAMETER :: B2ADOF69V = 1245 + INTEGER(IntKi), PARAMETER :: B2ADOF70V = 1246 + INTEGER(IntKi), PARAMETER :: B2ADOF71V = 1247 + INTEGER(IntKi), PARAMETER :: B2ADOF72V = 1248 + INTEGER(IntKi), PARAMETER :: B2ADOF73V = 1249 + INTEGER(IntKi), PARAMETER :: B2ADOF74V = 1250 + INTEGER(IntKi), PARAMETER :: B2ADOF75V = 1251 + INTEGER(IntKi), PARAMETER :: B2ADOF76V = 1252 + INTEGER(IntKi), PARAMETER :: B2ADOF77V = 1253 + INTEGER(IntKi), PARAMETER :: B2ADOF78V = 1254 + INTEGER(IntKi), PARAMETER :: B2ADOF79V = 1255 + INTEGER(IntKi), PARAMETER :: B2ADOF80V = 1256 + INTEGER(IntKi), PARAMETER :: B2ADOF81V = 1257 + INTEGER(IntKi), PARAMETER :: B2ADOF82V = 1258 + INTEGER(IntKi), PARAMETER :: B2ADOF83V = 1259 + INTEGER(IntKi), PARAMETER :: B2ADOF84V = 1260 + INTEGER(IntKi), PARAMETER :: B2ADOF85V = 1261 + INTEGER(IntKi), PARAMETER :: B2ADOF86V = 1262 + INTEGER(IntKi), PARAMETER :: B2ADOF87V = 1263 + INTEGER(IntKi), PARAMETER :: B2ADOF88V = 1264 + INTEGER(IntKi), PARAMETER :: B2ADOF89V = 1265 + INTEGER(IntKi), PARAMETER :: B2ADOF90V = 1266 + INTEGER(IntKi), PARAMETER :: B2ADOF91V = 1267 + INTEGER(IntKi), PARAMETER :: B2ADOF92V = 1268 + INTEGER(IntKi), PARAMETER :: B2ADOF93V = 1269 + INTEGER(IntKi), PARAMETER :: B2ADOF94V = 1270 + INTEGER(IntKi), PARAMETER :: B2ADOF95V = 1271 + INTEGER(IntKi), PARAMETER :: B2ADOF96V = 1272 + INTEGER(IntKi), PARAMETER :: B2ADOF97V = 1273 + INTEGER(IntKi), PARAMETER :: B2ADOF98V = 1274 + INTEGER(IntKi), PARAMETER :: B2ADOF99V = 1275 + INTEGER(IntKi), PARAMETER :: B3ADOF1V = 1276 + INTEGER(IntKi), PARAMETER :: B3ADOF2V = 1277 + INTEGER(IntKi), PARAMETER :: B3ADOF3V = 1278 + INTEGER(IntKi), PARAMETER :: B3ADOF4V = 1279 + INTEGER(IntKi), PARAMETER :: B3ADOF5V = 1280 + INTEGER(IntKi), PARAMETER :: B3ADOF6V = 1281 + INTEGER(IntKi), PARAMETER :: B3ADOF7V = 1282 + INTEGER(IntKi), PARAMETER :: B3ADOF8V = 1283 + INTEGER(IntKi), PARAMETER :: B3ADOF9V = 1284 + INTEGER(IntKi), PARAMETER :: B3ADOF10V = 1285 + INTEGER(IntKi), PARAMETER :: B3ADOF11V = 1286 + INTEGER(IntKi), PARAMETER :: B3ADOF12V = 1287 + INTEGER(IntKi), PARAMETER :: B3ADOF13V = 1288 + INTEGER(IntKi), PARAMETER :: B3ADOF14V = 1289 + INTEGER(IntKi), PARAMETER :: B3ADOF15V = 1290 + INTEGER(IntKi), PARAMETER :: B3ADOF16V = 1291 + INTEGER(IntKi), PARAMETER :: B3ADOF17V = 1292 + INTEGER(IntKi), PARAMETER :: B3ADOF18V = 1293 + INTEGER(IntKi), PARAMETER :: B3ADOF19V = 1294 + INTEGER(IntKi), PARAMETER :: B3ADOF20V = 1295 + INTEGER(IntKi), PARAMETER :: B3ADOF21V = 1296 + INTEGER(IntKi), PARAMETER :: B3ADOF22V = 1297 + INTEGER(IntKi), PARAMETER :: B3ADOF23V = 1298 + INTEGER(IntKi), PARAMETER :: B3ADOF24V = 1299 + INTEGER(IntKi), PARAMETER :: B3ADOF25V = 1300 + INTEGER(IntKi), PARAMETER :: B3ADOF26V = 1301 + INTEGER(IntKi), PARAMETER :: B3ADOF27V = 1302 + INTEGER(IntKi), PARAMETER :: B3ADOF28V = 1303 + INTEGER(IntKi), PARAMETER :: B3ADOF29V = 1304 + INTEGER(IntKi), PARAMETER :: B3ADOF30V = 1305 + INTEGER(IntKi), PARAMETER :: B3ADOF31V = 1306 + INTEGER(IntKi), PARAMETER :: B3ADOF32V = 1307 + INTEGER(IntKi), PARAMETER :: B3ADOF33V = 1308 + INTEGER(IntKi), PARAMETER :: B3ADOF34V = 1309 + INTEGER(IntKi), PARAMETER :: B3ADOF35V = 1310 + INTEGER(IntKi), PARAMETER :: B3ADOF36V = 1311 + INTEGER(IntKi), PARAMETER :: B3ADOF37V = 1312 + INTEGER(IntKi), PARAMETER :: B3ADOF38V = 1313 + INTEGER(IntKi), PARAMETER :: B3ADOF39V = 1314 + INTEGER(IntKi), PARAMETER :: B3ADOF40V = 1315 + INTEGER(IntKi), PARAMETER :: B3ADOF41V = 1316 + INTEGER(IntKi), PARAMETER :: B3ADOF42V = 1317 + INTEGER(IntKi), PARAMETER :: B3ADOF43V = 1318 + INTEGER(IntKi), PARAMETER :: B3ADOF44V = 1319 + INTEGER(IntKi), PARAMETER :: B3ADOF45V = 1320 + INTEGER(IntKi), PARAMETER :: B3ADOF46V = 1321 + INTEGER(IntKi), PARAMETER :: B3ADOF47V = 1322 + INTEGER(IntKi), PARAMETER :: B3ADOF48V = 1323 + INTEGER(IntKi), PARAMETER :: B3ADOF49V = 1324 + INTEGER(IntKi), PARAMETER :: B3ADOF50V = 1325 + INTEGER(IntKi), PARAMETER :: B3ADOF51V = 1326 + INTEGER(IntKi), PARAMETER :: B3ADOF52V = 1327 + INTEGER(IntKi), PARAMETER :: B3ADOF53V = 1328 + INTEGER(IntKi), PARAMETER :: B3ADOF54V = 1329 + INTEGER(IntKi), PARAMETER :: B3ADOF55V = 1330 + INTEGER(IntKi), PARAMETER :: B3ADOF56V = 1331 + INTEGER(IntKi), PARAMETER :: B3ADOF57V = 1332 + INTEGER(IntKi), PARAMETER :: B3ADOF58V = 1333 + INTEGER(IntKi), PARAMETER :: B3ADOF59V = 1334 + INTEGER(IntKi), PARAMETER :: B3ADOF60V = 1335 + INTEGER(IntKi), PARAMETER :: B3ADOF61V = 1336 + INTEGER(IntKi), PARAMETER :: B3ADOF62V = 1337 + INTEGER(IntKi), PARAMETER :: B3ADOF63V = 1338 + INTEGER(IntKi), PARAMETER :: B3ADOF64V = 1339 + INTEGER(IntKi), PARAMETER :: B3ADOF65V = 1340 + INTEGER(IntKi), PARAMETER :: B3ADOF66V = 1341 + INTEGER(IntKi), PARAMETER :: B3ADOF67V = 1342 + INTEGER(IntKi), PARAMETER :: B3ADOF68V = 1343 + INTEGER(IntKi), PARAMETER :: B3ADOF69V = 1344 + INTEGER(IntKi), PARAMETER :: B3ADOF70V = 1345 + INTEGER(IntKi), PARAMETER :: B3ADOF71V = 1346 + INTEGER(IntKi), PARAMETER :: B3ADOF72V = 1347 + INTEGER(IntKi), PARAMETER :: B3ADOF73V = 1348 + INTEGER(IntKi), PARAMETER :: B3ADOF74V = 1349 + INTEGER(IntKi), PARAMETER :: B3ADOF75V = 1350 + INTEGER(IntKi), PARAMETER :: B3ADOF76V = 1351 + INTEGER(IntKi), PARAMETER :: B3ADOF77V = 1352 + INTEGER(IntKi), PARAMETER :: B3ADOF78V = 1353 + INTEGER(IntKi), PARAMETER :: B3ADOF79V = 1354 + INTEGER(IntKi), PARAMETER :: B3ADOF80V = 1355 + INTEGER(IntKi), PARAMETER :: B3ADOF81V = 1356 + INTEGER(IntKi), PARAMETER :: B3ADOF82V = 1357 + INTEGER(IntKi), PARAMETER :: B3ADOF83V = 1358 + INTEGER(IntKi), PARAMETER :: B3ADOF84V = 1359 + INTEGER(IntKi), PARAMETER :: B3ADOF85V = 1360 + INTEGER(IntKi), PARAMETER :: B3ADOF86V = 1361 + INTEGER(IntKi), PARAMETER :: B3ADOF87V = 1362 + INTEGER(IntKi), PARAMETER :: B3ADOF88V = 1363 + INTEGER(IntKi), PARAMETER :: B3ADOF89V = 1364 + INTEGER(IntKi), PARAMETER :: B3ADOF90V = 1365 + INTEGER(IntKi), PARAMETER :: B3ADOF91V = 1366 + INTEGER(IntKi), PARAMETER :: B3ADOF92V = 1367 + INTEGER(IntKi), PARAMETER :: B3ADOF93V = 1368 + INTEGER(IntKi), PARAMETER :: B3ADOF94V = 1369 + INTEGER(IntKi), PARAMETER :: B3ADOF95V = 1370 + INTEGER(IntKi), PARAMETER :: B3ADOF96V = 1371 + INTEGER(IntKi), PARAMETER :: B3ADOF97V = 1372 + INTEGER(IntKi), PARAMETER :: B3ADOF98V = 1373 + INTEGER(IntKi), PARAMETER :: B3ADOF99V = 1374 + INTEGER(IntKi), PARAMETER :: B4ADOF1V = 1375 + INTEGER(IntKi), PARAMETER :: B4ADOF2V = 1376 + INTEGER(IntKi), PARAMETER :: B4ADOF3V = 1377 + INTEGER(IntKi), PARAMETER :: B4ADOF4V = 1378 + INTEGER(IntKi), PARAMETER :: B4ADOF5V = 1379 + INTEGER(IntKi), PARAMETER :: B4ADOF6V = 1380 + INTEGER(IntKi), PARAMETER :: B4ADOF7V = 1381 + INTEGER(IntKi), PARAMETER :: B4ADOF8V = 1382 + INTEGER(IntKi), PARAMETER :: B4ADOF9V = 1383 + INTEGER(IntKi), PARAMETER :: B4ADOF10V = 1384 + INTEGER(IntKi), PARAMETER :: B4ADOF11V = 1385 + INTEGER(IntKi), PARAMETER :: B4ADOF12V = 1386 + INTEGER(IntKi), PARAMETER :: B4ADOF13V = 1387 + INTEGER(IntKi), PARAMETER :: B4ADOF14V = 1388 + INTEGER(IntKi), PARAMETER :: B4ADOF15V = 1389 + INTEGER(IntKi), PARAMETER :: B4ADOF16V = 1390 + INTEGER(IntKi), PARAMETER :: B4ADOF17V = 1391 + INTEGER(IntKi), PARAMETER :: B4ADOF18V = 1392 + INTEGER(IntKi), PARAMETER :: B4ADOF19V = 1393 + INTEGER(IntKi), PARAMETER :: B4ADOF20V = 1394 + INTEGER(IntKi), PARAMETER :: B4ADOF21V = 1395 + INTEGER(IntKi), PARAMETER :: B4ADOF22V = 1396 + INTEGER(IntKi), PARAMETER :: B4ADOF23V = 1397 + INTEGER(IntKi), PARAMETER :: B4ADOF24V = 1398 + INTEGER(IntKi), PARAMETER :: B4ADOF25V = 1399 + INTEGER(IntKi), PARAMETER :: B4ADOF26V = 1400 + INTEGER(IntKi), PARAMETER :: B4ADOF27V = 1401 + INTEGER(IntKi), PARAMETER :: B4ADOF28V = 1402 + INTEGER(IntKi), PARAMETER :: B4ADOF29V = 1403 + INTEGER(IntKi), PARAMETER :: B4ADOF30V = 1404 + INTEGER(IntKi), PARAMETER :: B4ADOF31V = 1405 + INTEGER(IntKi), PARAMETER :: B4ADOF32V = 1406 + INTEGER(IntKi), PARAMETER :: B4ADOF33V = 1407 + INTEGER(IntKi), PARAMETER :: B4ADOF34V = 1408 + INTEGER(IntKi), PARAMETER :: B4ADOF35V = 1409 + INTEGER(IntKi), PARAMETER :: B4ADOF36V = 1410 + INTEGER(IntKi), PARAMETER :: B4ADOF37V = 1411 + INTEGER(IntKi), PARAMETER :: B4ADOF38V = 1412 + INTEGER(IntKi), PARAMETER :: B4ADOF39V = 1413 + INTEGER(IntKi), PARAMETER :: B4ADOF40V = 1414 + INTEGER(IntKi), PARAMETER :: B4ADOF41V = 1415 + INTEGER(IntKi), PARAMETER :: B4ADOF42V = 1416 + INTEGER(IntKi), PARAMETER :: B4ADOF43V = 1417 + INTEGER(IntKi), PARAMETER :: B4ADOF44V = 1418 + INTEGER(IntKi), PARAMETER :: B4ADOF45V = 1419 + INTEGER(IntKi), PARAMETER :: B4ADOF46V = 1420 + INTEGER(IntKi), PARAMETER :: B4ADOF47V = 1421 + INTEGER(IntKi), PARAMETER :: B4ADOF48V = 1422 + INTEGER(IntKi), PARAMETER :: B4ADOF49V = 1423 + INTEGER(IntKi), PARAMETER :: B4ADOF50V = 1424 + INTEGER(IntKi), PARAMETER :: B4ADOF51V = 1425 + INTEGER(IntKi), PARAMETER :: B4ADOF52V = 1426 + INTEGER(IntKi), PARAMETER :: B4ADOF53V = 1427 + INTEGER(IntKi), PARAMETER :: B4ADOF54V = 1428 + INTEGER(IntKi), PARAMETER :: B4ADOF55V = 1429 + INTEGER(IntKi), PARAMETER :: B4ADOF56V = 1430 + INTEGER(IntKi), PARAMETER :: B4ADOF57V = 1431 + INTEGER(IntKi), PARAMETER :: B4ADOF58V = 1432 + INTEGER(IntKi), PARAMETER :: B4ADOF59V = 1433 + INTEGER(IntKi), PARAMETER :: B4ADOF60V = 1434 + INTEGER(IntKi), PARAMETER :: B4ADOF61V = 1435 + INTEGER(IntKi), PARAMETER :: B4ADOF62V = 1436 + INTEGER(IntKi), PARAMETER :: B4ADOF63V = 1437 + INTEGER(IntKi), PARAMETER :: B4ADOF64V = 1438 + INTEGER(IntKi), PARAMETER :: B4ADOF65V = 1439 + INTEGER(IntKi), PARAMETER :: B4ADOF66V = 1440 + INTEGER(IntKi), PARAMETER :: B4ADOF67V = 1441 + INTEGER(IntKi), PARAMETER :: B4ADOF68V = 1442 + INTEGER(IntKi), PARAMETER :: B4ADOF69V = 1443 + INTEGER(IntKi), PARAMETER :: B4ADOF70V = 1444 + INTEGER(IntKi), PARAMETER :: B4ADOF71V = 1445 + INTEGER(IntKi), PARAMETER :: B4ADOF72V = 1446 + INTEGER(IntKi), PARAMETER :: B4ADOF73V = 1447 + INTEGER(IntKi), PARAMETER :: B4ADOF74V = 1448 + INTEGER(IntKi), PARAMETER :: B4ADOF75V = 1449 + INTEGER(IntKi), PARAMETER :: B4ADOF76V = 1450 + INTEGER(IntKi), PARAMETER :: B4ADOF77V = 1451 + INTEGER(IntKi), PARAMETER :: B4ADOF78V = 1452 + INTEGER(IntKi), PARAMETER :: B4ADOF79V = 1453 + INTEGER(IntKi), PARAMETER :: B4ADOF80V = 1454 + INTEGER(IntKi), PARAMETER :: B4ADOF81V = 1455 + INTEGER(IntKi), PARAMETER :: B4ADOF82V = 1456 + INTEGER(IntKi), PARAMETER :: B4ADOF83V = 1457 + INTEGER(IntKi), PARAMETER :: B4ADOF84V = 1458 + INTEGER(IntKi), PARAMETER :: B4ADOF85V = 1459 + INTEGER(IntKi), PARAMETER :: B4ADOF86V = 1460 + INTEGER(IntKi), PARAMETER :: B4ADOF87V = 1461 + INTEGER(IntKi), PARAMETER :: B4ADOF88V = 1462 + INTEGER(IntKi), PARAMETER :: B4ADOF89V = 1463 + INTEGER(IntKi), PARAMETER :: B4ADOF90V = 1464 + INTEGER(IntKi), PARAMETER :: B4ADOF91V = 1465 + INTEGER(IntKi), PARAMETER :: B4ADOF92V = 1466 + INTEGER(IntKi), PARAMETER :: B4ADOF93V = 1467 + INTEGER(IntKi), PARAMETER :: B4ADOF94V = 1468 + INTEGER(IntKi), PARAMETER :: B4ADOF95V = 1469 + INTEGER(IntKi), PARAMETER :: B4ADOF96V = 1470 + INTEGER(IntKi), PARAMETER :: B4ADOF97V = 1471 + INTEGER(IntKi), PARAMETER :: B4ADOF98V = 1472 + INTEGER(IntKi), PARAMETER :: B4ADOF99V = 1473 + INTEGER(IntKi), PARAMETER :: B5ADOF1V = 1474 + INTEGER(IntKi), PARAMETER :: B5ADOF2V = 1475 + INTEGER(IntKi), PARAMETER :: B5ADOF3V = 1476 + INTEGER(IntKi), PARAMETER :: B5ADOF4V = 1477 + INTEGER(IntKi), PARAMETER :: B5ADOF5V = 1478 + INTEGER(IntKi), PARAMETER :: B5ADOF6V = 1479 + INTEGER(IntKi), PARAMETER :: B5ADOF7V = 1480 + INTEGER(IntKi), PARAMETER :: B5ADOF8V = 1481 + INTEGER(IntKi), PARAMETER :: B5ADOF9V = 1482 + INTEGER(IntKi), PARAMETER :: B5ADOF10V = 1483 + INTEGER(IntKi), PARAMETER :: B5ADOF11V = 1484 + INTEGER(IntKi), PARAMETER :: B5ADOF12V = 1485 + INTEGER(IntKi), PARAMETER :: B5ADOF13V = 1486 + INTEGER(IntKi), PARAMETER :: B5ADOF14V = 1487 + INTEGER(IntKi), PARAMETER :: B5ADOF15V = 1488 + INTEGER(IntKi), PARAMETER :: B5ADOF16V = 1489 + INTEGER(IntKi), PARAMETER :: B5ADOF17V = 1490 + INTEGER(IntKi), PARAMETER :: B5ADOF18V = 1491 + INTEGER(IntKi), PARAMETER :: B5ADOF19V = 1492 + INTEGER(IntKi), PARAMETER :: B5ADOF20V = 1493 + INTEGER(IntKi), PARAMETER :: B5ADOF21V = 1494 + INTEGER(IntKi), PARAMETER :: B5ADOF22V = 1495 + INTEGER(IntKi), PARAMETER :: B5ADOF23V = 1496 + INTEGER(IntKi), PARAMETER :: B5ADOF24V = 1497 + INTEGER(IntKi), PARAMETER :: B5ADOF25V = 1498 + INTEGER(IntKi), PARAMETER :: B5ADOF26V = 1499 + INTEGER(IntKi), PARAMETER :: B5ADOF27V = 1500 + INTEGER(IntKi), PARAMETER :: B5ADOF28V = 1501 + INTEGER(IntKi), PARAMETER :: B5ADOF29V = 1502 + INTEGER(IntKi), PARAMETER :: B5ADOF30V = 1503 + INTEGER(IntKi), PARAMETER :: B5ADOF31V = 1504 + INTEGER(IntKi), PARAMETER :: B5ADOF32V = 1505 + INTEGER(IntKi), PARAMETER :: B5ADOF33V = 1506 + INTEGER(IntKi), PARAMETER :: B5ADOF34V = 1507 + INTEGER(IntKi), PARAMETER :: B5ADOF35V = 1508 + INTEGER(IntKi), PARAMETER :: B5ADOF36V = 1509 + INTEGER(IntKi), PARAMETER :: B5ADOF37V = 1510 + INTEGER(IntKi), PARAMETER :: B5ADOF38V = 1511 + INTEGER(IntKi), PARAMETER :: B5ADOF39V = 1512 + INTEGER(IntKi), PARAMETER :: B5ADOF40V = 1513 + INTEGER(IntKi), PARAMETER :: B5ADOF41V = 1514 + INTEGER(IntKi), PARAMETER :: B5ADOF42V = 1515 + INTEGER(IntKi), PARAMETER :: B5ADOF43V = 1516 + INTEGER(IntKi), PARAMETER :: B5ADOF44V = 1517 + INTEGER(IntKi), PARAMETER :: B5ADOF45V = 1518 + INTEGER(IntKi), PARAMETER :: B5ADOF46V = 1519 + INTEGER(IntKi), PARAMETER :: B5ADOF47V = 1520 + INTEGER(IntKi), PARAMETER :: B5ADOF48V = 1521 + INTEGER(IntKi), PARAMETER :: B5ADOF49V = 1522 + INTEGER(IntKi), PARAMETER :: B5ADOF50V = 1523 + INTEGER(IntKi), PARAMETER :: B5ADOF51V = 1524 + INTEGER(IntKi), PARAMETER :: B5ADOF52V = 1525 + INTEGER(IntKi), PARAMETER :: B5ADOF53V = 1526 + INTEGER(IntKi), PARAMETER :: B5ADOF54V = 1527 + INTEGER(IntKi), PARAMETER :: B5ADOF55V = 1528 + INTEGER(IntKi), PARAMETER :: B5ADOF56V = 1529 + INTEGER(IntKi), PARAMETER :: B5ADOF57V = 1530 + INTEGER(IntKi), PARAMETER :: B5ADOF58V = 1531 + INTEGER(IntKi), PARAMETER :: B5ADOF59V = 1532 + INTEGER(IntKi), PARAMETER :: B5ADOF60V = 1533 + INTEGER(IntKi), PARAMETER :: B5ADOF61V = 1534 + INTEGER(IntKi), PARAMETER :: B5ADOF62V = 1535 + INTEGER(IntKi), PARAMETER :: B5ADOF63V = 1536 + INTEGER(IntKi), PARAMETER :: B5ADOF64V = 1537 + INTEGER(IntKi), PARAMETER :: B5ADOF65V = 1538 + INTEGER(IntKi), PARAMETER :: B5ADOF66V = 1539 + INTEGER(IntKi), PARAMETER :: B5ADOF67V = 1540 + INTEGER(IntKi), PARAMETER :: B5ADOF68V = 1541 + INTEGER(IntKi), PARAMETER :: B5ADOF69V = 1542 + INTEGER(IntKi), PARAMETER :: B5ADOF70V = 1543 + INTEGER(IntKi), PARAMETER :: B5ADOF71V = 1544 + INTEGER(IntKi), PARAMETER :: B5ADOF72V = 1545 + INTEGER(IntKi), PARAMETER :: B5ADOF73V = 1546 + INTEGER(IntKi), PARAMETER :: B5ADOF74V = 1547 + INTEGER(IntKi), PARAMETER :: B5ADOF75V = 1548 + INTEGER(IntKi), PARAMETER :: B5ADOF76V = 1549 + INTEGER(IntKi), PARAMETER :: B5ADOF77V = 1550 + INTEGER(IntKi), PARAMETER :: B5ADOF78V = 1551 + INTEGER(IntKi), PARAMETER :: B5ADOF79V = 1552 + INTEGER(IntKi), PARAMETER :: B5ADOF80V = 1553 + INTEGER(IntKi), PARAMETER :: B5ADOF81V = 1554 + INTEGER(IntKi), PARAMETER :: B5ADOF82V = 1555 + INTEGER(IntKi), PARAMETER :: B5ADOF83V = 1556 + INTEGER(IntKi), PARAMETER :: B5ADOF84V = 1557 + INTEGER(IntKi), PARAMETER :: B5ADOF85V = 1558 + INTEGER(IntKi), PARAMETER :: B5ADOF86V = 1559 + INTEGER(IntKi), PARAMETER :: B5ADOF87V = 1560 + INTEGER(IntKi), PARAMETER :: B5ADOF88V = 1561 + INTEGER(IntKi), PARAMETER :: B5ADOF89V = 1562 + INTEGER(IntKi), PARAMETER :: B5ADOF90V = 1563 + INTEGER(IntKi), PARAMETER :: B5ADOF91V = 1564 + INTEGER(IntKi), PARAMETER :: B5ADOF92V = 1565 + INTEGER(IntKi), PARAMETER :: B5ADOF93V = 1566 + INTEGER(IntKi), PARAMETER :: B5ADOF94V = 1567 + INTEGER(IntKi), PARAMETER :: B5ADOF95V = 1568 + INTEGER(IntKi), PARAMETER :: B5ADOF96V = 1569 + INTEGER(IntKi), PARAMETER :: B5ADOF97V = 1570 + INTEGER(IntKi), PARAMETER :: B5ADOF98V = 1571 + INTEGER(IntKi), PARAMETER :: B5ADOF99V = 1572 + INTEGER(IntKi), PARAMETER :: B6ADOF1V = 1573 + INTEGER(IntKi), PARAMETER :: B6ADOF2V = 1574 + INTEGER(IntKi), PARAMETER :: B6ADOF3V = 1575 + INTEGER(IntKi), PARAMETER :: B6ADOF4V = 1576 + INTEGER(IntKi), PARAMETER :: B6ADOF5V = 1577 + INTEGER(IntKi), PARAMETER :: B6ADOF6V = 1578 + INTEGER(IntKi), PARAMETER :: B6ADOF7V = 1579 + INTEGER(IntKi), PARAMETER :: B6ADOF8V = 1580 + INTEGER(IntKi), PARAMETER :: B6ADOF9V = 1581 + INTEGER(IntKi), PARAMETER :: B6ADOF10V = 1582 + INTEGER(IntKi), PARAMETER :: B6ADOF11V = 1583 + INTEGER(IntKi), PARAMETER :: B6ADOF12V = 1584 + INTEGER(IntKi), PARAMETER :: B6ADOF13V = 1585 + INTEGER(IntKi), PARAMETER :: B6ADOF14V = 1586 + INTEGER(IntKi), PARAMETER :: B6ADOF15V = 1587 + INTEGER(IntKi), PARAMETER :: B6ADOF16V = 1588 + INTEGER(IntKi), PARAMETER :: B6ADOF17V = 1589 + INTEGER(IntKi), PARAMETER :: B6ADOF18V = 1590 + INTEGER(IntKi), PARAMETER :: B6ADOF19V = 1591 + INTEGER(IntKi), PARAMETER :: B6ADOF20V = 1592 + INTEGER(IntKi), PARAMETER :: B6ADOF21V = 1593 + INTEGER(IntKi), PARAMETER :: B6ADOF22V = 1594 + INTEGER(IntKi), PARAMETER :: B6ADOF23V = 1595 + INTEGER(IntKi), PARAMETER :: B6ADOF24V = 1596 + INTEGER(IntKi), PARAMETER :: B6ADOF25V = 1597 + INTEGER(IntKi), PARAMETER :: B6ADOF26V = 1598 + INTEGER(IntKi), PARAMETER :: B6ADOF27V = 1599 + INTEGER(IntKi), PARAMETER :: B6ADOF28V = 1600 + INTEGER(IntKi), PARAMETER :: B6ADOF29V = 1601 + INTEGER(IntKi), PARAMETER :: B6ADOF30V = 1602 + INTEGER(IntKi), PARAMETER :: B6ADOF31V = 1603 + INTEGER(IntKi), PARAMETER :: B6ADOF32V = 1604 + INTEGER(IntKi), PARAMETER :: B6ADOF33V = 1605 + INTEGER(IntKi), PARAMETER :: B6ADOF34V = 1606 + INTEGER(IntKi), PARAMETER :: B6ADOF35V = 1607 + INTEGER(IntKi), PARAMETER :: B6ADOF36V = 1608 + INTEGER(IntKi), PARAMETER :: B6ADOF37V = 1609 + INTEGER(IntKi), PARAMETER :: B6ADOF38V = 1610 + INTEGER(IntKi), PARAMETER :: B6ADOF39V = 1611 + INTEGER(IntKi), PARAMETER :: B6ADOF40V = 1612 + INTEGER(IntKi), PARAMETER :: B6ADOF41V = 1613 + INTEGER(IntKi), PARAMETER :: B6ADOF42V = 1614 + INTEGER(IntKi), PARAMETER :: B6ADOF43V = 1615 + INTEGER(IntKi), PARAMETER :: B6ADOF44V = 1616 + INTEGER(IntKi), PARAMETER :: B6ADOF45V = 1617 + INTEGER(IntKi), PARAMETER :: B6ADOF46V = 1618 + INTEGER(IntKi), PARAMETER :: B6ADOF47V = 1619 + INTEGER(IntKi), PARAMETER :: B6ADOF48V = 1620 + INTEGER(IntKi), PARAMETER :: B6ADOF49V = 1621 + INTEGER(IntKi), PARAMETER :: B6ADOF50V = 1622 + INTEGER(IntKi), PARAMETER :: B6ADOF51V = 1623 + INTEGER(IntKi), PARAMETER :: B6ADOF52V = 1624 + INTEGER(IntKi), PARAMETER :: B6ADOF53V = 1625 + INTEGER(IntKi), PARAMETER :: B6ADOF54V = 1626 + INTEGER(IntKi), PARAMETER :: B6ADOF55V = 1627 + INTEGER(IntKi), PARAMETER :: B6ADOF56V = 1628 + INTEGER(IntKi), PARAMETER :: B6ADOF57V = 1629 + INTEGER(IntKi), PARAMETER :: B6ADOF58V = 1630 + INTEGER(IntKi), PARAMETER :: B6ADOF59V = 1631 + INTEGER(IntKi), PARAMETER :: B6ADOF60V = 1632 + INTEGER(IntKi), PARAMETER :: B6ADOF61V = 1633 + INTEGER(IntKi), PARAMETER :: B6ADOF62V = 1634 + INTEGER(IntKi), PARAMETER :: B6ADOF63V = 1635 + INTEGER(IntKi), PARAMETER :: B6ADOF64V = 1636 + INTEGER(IntKi), PARAMETER :: B6ADOF65V = 1637 + INTEGER(IntKi), PARAMETER :: B6ADOF66V = 1638 + INTEGER(IntKi), PARAMETER :: B6ADOF67V = 1639 + INTEGER(IntKi), PARAMETER :: B6ADOF68V = 1640 + INTEGER(IntKi), PARAMETER :: B6ADOF69V = 1641 + INTEGER(IntKi), PARAMETER :: B6ADOF70V = 1642 + INTEGER(IntKi), PARAMETER :: B6ADOF71V = 1643 + INTEGER(IntKi), PARAMETER :: B6ADOF72V = 1644 + INTEGER(IntKi), PARAMETER :: B6ADOF73V = 1645 + INTEGER(IntKi), PARAMETER :: B6ADOF74V = 1646 + INTEGER(IntKi), PARAMETER :: B6ADOF75V = 1647 + INTEGER(IntKi), PARAMETER :: B6ADOF76V = 1648 + INTEGER(IntKi), PARAMETER :: B6ADOF77V = 1649 + INTEGER(IntKi), PARAMETER :: B6ADOF78V = 1650 + INTEGER(IntKi), PARAMETER :: B6ADOF79V = 1651 + INTEGER(IntKi), PARAMETER :: B6ADOF80V = 1652 + INTEGER(IntKi), PARAMETER :: B6ADOF81V = 1653 + INTEGER(IntKi), PARAMETER :: B6ADOF82V = 1654 + INTEGER(IntKi), PARAMETER :: B6ADOF83V = 1655 + INTEGER(IntKi), PARAMETER :: B6ADOF84V = 1656 + INTEGER(IntKi), PARAMETER :: B6ADOF85V = 1657 + INTEGER(IntKi), PARAMETER :: B6ADOF86V = 1658 + INTEGER(IntKi), PARAMETER :: B6ADOF87V = 1659 + INTEGER(IntKi), PARAMETER :: B6ADOF88V = 1660 + INTEGER(IntKi), PARAMETER :: B6ADOF89V = 1661 + INTEGER(IntKi), PARAMETER :: B6ADOF90V = 1662 + INTEGER(IntKi), PARAMETER :: B6ADOF91V = 1663 + INTEGER(IntKi), PARAMETER :: B6ADOF92V = 1664 + INTEGER(IntKi), PARAMETER :: B6ADOF93V = 1665 + INTEGER(IntKi), PARAMETER :: B6ADOF94V = 1666 + INTEGER(IntKi), PARAMETER :: B6ADOF95V = 1667 + INTEGER(IntKi), PARAMETER :: B6ADOF96V = 1668 + INTEGER(IntKi), PARAMETER :: B6ADOF97V = 1669 + INTEGER(IntKi), PARAMETER :: B6ADOF98V = 1670 + INTEGER(IntKi), PARAMETER :: B6ADOF99V = 1671 + INTEGER(IntKi), PARAMETER :: B7ADOF1V = 1672 + INTEGER(IntKi), PARAMETER :: B7ADOF2V = 1673 + INTEGER(IntKi), PARAMETER :: B7ADOF3V = 1674 + INTEGER(IntKi), PARAMETER :: B7ADOF4V = 1675 + INTEGER(IntKi), PARAMETER :: B7ADOF5V = 1676 + INTEGER(IntKi), PARAMETER :: B7ADOF6V = 1677 + INTEGER(IntKi), PARAMETER :: B7ADOF7V = 1678 + INTEGER(IntKi), PARAMETER :: B7ADOF8V = 1679 + INTEGER(IntKi), PARAMETER :: B7ADOF9V = 1680 + INTEGER(IntKi), PARAMETER :: B7ADOF10V = 1681 + INTEGER(IntKi), PARAMETER :: B7ADOF11V = 1682 + INTEGER(IntKi), PARAMETER :: B7ADOF12V = 1683 + INTEGER(IntKi), PARAMETER :: B7ADOF13V = 1684 + INTEGER(IntKi), PARAMETER :: B7ADOF14V = 1685 + INTEGER(IntKi), PARAMETER :: B7ADOF15V = 1686 + INTEGER(IntKi), PARAMETER :: B7ADOF16V = 1687 + INTEGER(IntKi), PARAMETER :: B7ADOF17V = 1688 + INTEGER(IntKi), PARAMETER :: B7ADOF18V = 1689 + INTEGER(IntKi), PARAMETER :: B7ADOF19V = 1690 + INTEGER(IntKi), PARAMETER :: B7ADOF20V = 1691 + INTEGER(IntKi), PARAMETER :: B7ADOF21V = 1692 + INTEGER(IntKi), PARAMETER :: B7ADOF22V = 1693 + INTEGER(IntKi), PARAMETER :: B7ADOF23V = 1694 + INTEGER(IntKi), PARAMETER :: B7ADOF24V = 1695 + INTEGER(IntKi), PARAMETER :: B7ADOF25V = 1696 + INTEGER(IntKi), PARAMETER :: B7ADOF26V = 1697 + INTEGER(IntKi), PARAMETER :: B7ADOF27V = 1698 + INTEGER(IntKi), PARAMETER :: B7ADOF28V = 1699 + INTEGER(IntKi), PARAMETER :: B7ADOF29V = 1700 + INTEGER(IntKi), PARAMETER :: B7ADOF30V = 1701 + INTEGER(IntKi), PARAMETER :: B7ADOF31V = 1702 + INTEGER(IntKi), PARAMETER :: B7ADOF32V = 1703 + INTEGER(IntKi), PARAMETER :: B7ADOF33V = 1704 + INTEGER(IntKi), PARAMETER :: B7ADOF34V = 1705 + INTEGER(IntKi), PARAMETER :: B7ADOF35V = 1706 + INTEGER(IntKi), PARAMETER :: B7ADOF36V = 1707 + INTEGER(IntKi), PARAMETER :: B7ADOF37V = 1708 + INTEGER(IntKi), PARAMETER :: B7ADOF38V = 1709 + INTEGER(IntKi), PARAMETER :: B7ADOF39V = 1710 + INTEGER(IntKi), PARAMETER :: B7ADOF40V = 1711 + INTEGER(IntKi), PARAMETER :: B7ADOF41V = 1712 + INTEGER(IntKi), PARAMETER :: B7ADOF42V = 1713 + INTEGER(IntKi), PARAMETER :: B7ADOF43V = 1714 + INTEGER(IntKi), PARAMETER :: B7ADOF44V = 1715 + INTEGER(IntKi), PARAMETER :: B7ADOF45V = 1716 + INTEGER(IntKi), PARAMETER :: B7ADOF46V = 1717 + INTEGER(IntKi), PARAMETER :: B7ADOF47V = 1718 + INTEGER(IntKi), PARAMETER :: B7ADOF48V = 1719 + INTEGER(IntKi), PARAMETER :: B7ADOF49V = 1720 + INTEGER(IntKi), PARAMETER :: B7ADOF50V = 1721 + INTEGER(IntKi), PARAMETER :: B7ADOF51V = 1722 + INTEGER(IntKi), PARAMETER :: B7ADOF52V = 1723 + INTEGER(IntKi), PARAMETER :: B7ADOF53V = 1724 + INTEGER(IntKi), PARAMETER :: B7ADOF54V = 1725 + INTEGER(IntKi), PARAMETER :: B7ADOF55V = 1726 + INTEGER(IntKi), PARAMETER :: B7ADOF56V = 1727 + INTEGER(IntKi), PARAMETER :: B7ADOF57V = 1728 + INTEGER(IntKi), PARAMETER :: B7ADOF58V = 1729 + INTEGER(IntKi), PARAMETER :: B7ADOF59V = 1730 + INTEGER(IntKi), PARAMETER :: B7ADOF60V = 1731 + INTEGER(IntKi), PARAMETER :: B7ADOF61V = 1732 + INTEGER(IntKi), PARAMETER :: B7ADOF62V = 1733 + INTEGER(IntKi), PARAMETER :: B7ADOF63V = 1734 + INTEGER(IntKi), PARAMETER :: B7ADOF64V = 1735 + INTEGER(IntKi), PARAMETER :: B7ADOF65V = 1736 + INTEGER(IntKi), PARAMETER :: B7ADOF66V = 1737 + INTEGER(IntKi), PARAMETER :: B7ADOF67V = 1738 + INTEGER(IntKi), PARAMETER :: B7ADOF68V = 1739 + INTEGER(IntKi), PARAMETER :: B7ADOF69V = 1740 + INTEGER(IntKi), PARAMETER :: B7ADOF70V = 1741 + INTEGER(IntKi), PARAMETER :: B7ADOF71V = 1742 + INTEGER(IntKi), PARAMETER :: B7ADOF72V = 1743 + INTEGER(IntKi), PARAMETER :: B7ADOF73V = 1744 + INTEGER(IntKi), PARAMETER :: B7ADOF74V = 1745 + INTEGER(IntKi), PARAMETER :: B7ADOF75V = 1746 + INTEGER(IntKi), PARAMETER :: B7ADOF76V = 1747 + INTEGER(IntKi), PARAMETER :: B7ADOF77V = 1748 + INTEGER(IntKi), PARAMETER :: B7ADOF78V = 1749 + INTEGER(IntKi), PARAMETER :: B7ADOF79V = 1750 + INTEGER(IntKi), PARAMETER :: B7ADOF80V = 1751 + INTEGER(IntKi), PARAMETER :: B7ADOF81V = 1752 + INTEGER(IntKi), PARAMETER :: B7ADOF82V = 1753 + INTEGER(IntKi), PARAMETER :: B7ADOF83V = 1754 + INTEGER(IntKi), PARAMETER :: B7ADOF84V = 1755 + INTEGER(IntKi), PARAMETER :: B7ADOF85V = 1756 + INTEGER(IntKi), PARAMETER :: B7ADOF86V = 1757 + INTEGER(IntKi), PARAMETER :: B7ADOF87V = 1758 + INTEGER(IntKi), PARAMETER :: B7ADOF88V = 1759 + INTEGER(IntKi), PARAMETER :: B7ADOF89V = 1760 + INTEGER(IntKi), PARAMETER :: B7ADOF90V = 1761 + INTEGER(IntKi), PARAMETER :: B7ADOF91V = 1762 + INTEGER(IntKi), PARAMETER :: B7ADOF92V = 1763 + INTEGER(IntKi), PARAMETER :: B7ADOF93V = 1764 + INTEGER(IntKi), PARAMETER :: B7ADOF94V = 1765 + INTEGER(IntKi), PARAMETER :: B7ADOF95V = 1766 + INTEGER(IntKi), PARAMETER :: B7ADOF96V = 1767 + INTEGER(IntKi), PARAMETER :: B7ADOF97V = 1768 + INTEGER(IntKi), PARAMETER :: B7ADOF98V = 1769 + INTEGER(IntKi), PARAMETER :: B7ADOF99V = 1770 + INTEGER(IntKi), PARAMETER :: B8ADOF1V = 1771 + INTEGER(IntKi), PARAMETER :: B8ADOF2V = 1772 + INTEGER(IntKi), PARAMETER :: B8ADOF3V = 1773 + INTEGER(IntKi), PARAMETER :: B8ADOF4V = 1774 + INTEGER(IntKi), PARAMETER :: B8ADOF5V = 1775 + INTEGER(IntKi), PARAMETER :: B8ADOF6V = 1776 + INTEGER(IntKi), PARAMETER :: B8ADOF7V = 1777 + INTEGER(IntKi), PARAMETER :: B8ADOF8V = 1778 + INTEGER(IntKi), PARAMETER :: B8ADOF9V = 1779 + INTEGER(IntKi), PARAMETER :: B8ADOF10V = 1780 + INTEGER(IntKi), PARAMETER :: B8ADOF11V = 1781 + INTEGER(IntKi), PARAMETER :: B8ADOF12V = 1782 + INTEGER(IntKi), PARAMETER :: B8ADOF13V = 1783 + INTEGER(IntKi), PARAMETER :: B8ADOF14V = 1784 + INTEGER(IntKi), PARAMETER :: B8ADOF15V = 1785 + INTEGER(IntKi), PARAMETER :: B8ADOF16V = 1786 + INTEGER(IntKi), PARAMETER :: B8ADOF17V = 1787 + INTEGER(IntKi), PARAMETER :: B8ADOF18V = 1788 + INTEGER(IntKi), PARAMETER :: B8ADOF19V = 1789 + INTEGER(IntKi), PARAMETER :: B8ADOF20V = 1790 + INTEGER(IntKi), PARAMETER :: B8ADOF21V = 1791 + INTEGER(IntKi), PARAMETER :: B8ADOF22V = 1792 + INTEGER(IntKi), PARAMETER :: B8ADOF23V = 1793 + INTEGER(IntKi), PARAMETER :: B8ADOF24V = 1794 + INTEGER(IntKi), PARAMETER :: B8ADOF25V = 1795 + INTEGER(IntKi), PARAMETER :: B8ADOF26V = 1796 + INTEGER(IntKi), PARAMETER :: B8ADOF27V = 1797 + INTEGER(IntKi), PARAMETER :: B8ADOF28V = 1798 + INTEGER(IntKi), PARAMETER :: B8ADOF29V = 1799 + INTEGER(IntKi), PARAMETER :: B8ADOF30V = 1800 + INTEGER(IntKi), PARAMETER :: B8ADOF31V = 1801 + INTEGER(IntKi), PARAMETER :: B8ADOF32V = 1802 + INTEGER(IntKi), PARAMETER :: B8ADOF33V = 1803 + INTEGER(IntKi), PARAMETER :: B8ADOF34V = 1804 + INTEGER(IntKi), PARAMETER :: B8ADOF35V = 1805 + INTEGER(IntKi), PARAMETER :: B8ADOF36V = 1806 + INTEGER(IntKi), PARAMETER :: B8ADOF37V = 1807 + INTEGER(IntKi), PARAMETER :: B8ADOF38V = 1808 + INTEGER(IntKi), PARAMETER :: B8ADOF39V = 1809 + INTEGER(IntKi), PARAMETER :: B8ADOF40V = 1810 + INTEGER(IntKi), PARAMETER :: B8ADOF41V = 1811 + INTEGER(IntKi), PARAMETER :: B8ADOF42V = 1812 + INTEGER(IntKi), PARAMETER :: B8ADOF43V = 1813 + INTEGER(IntKi), PARAMETER :: B8ADOF44V = 1814 + INTEGER(IntKi), PARAMETER :: B8ADOF45V = 1815 + INTEGER(IntKi), PARAMETER :: B8ADOF46V = 1816 + INTEGER(IntKi), PARAMETER :: B8ADOF47V = 1817 + INTEGER(IntKi), PARAMETER :: B8ADOF48V = 1818 + INTEGER(IntKi), PARAMETER :: B8ADOF49V = 1819 + INTEGER(IntKi), PARAMETER :: B8ADOF50V = 1820 + INTEGER(IntKi), PARAMETER :: B8ADOF51V = 1821 + INTEGER(IntKi), PARAMETER :: B8ADOF52V = 1822 + INTEGER(IntKi), PARAMETER :: B8ADOF53V = 1823 + INTEGER(IntKi), PARAMETER :: B8ADOF54V = 1824 + INTEGER(IntKi), PARAMETER :: B8ADOF55V = 1825 + INTEGER(IntKi), PARAMETER :: B8ADOF56V = 1826 + INTEGER(IntKi), PARAMETER :: B8ADOF57V = 1827 + INTEGER(IntKi), PARAMETER :: B8ADOF58V = 1828 + INTEGER(IntKi), PARAMETER :: B8ADOF59V = 1829 + INTEGER(IntKi), PARAMETER :: B8ADOF60V = 1830 + INTEGER(IntKi), PARAMETER :: B8ADOF61V = 1831 + INTEGER(IntKi), PARAMETER :: B8ADOF62V = 1832 + INTEGER(IntKi), PARAMETER :: B8ADOF63V = 1833 + INTEGER(IntKi), PARAMETER :: B8ADOF64V = 1834 + INTEGER(IntKi), PARAMETER :: B8ADOF65V = 1835 + INTEGER(IntKi), PARAMETER :: B8ADOF66V = 1836 + INTEGER(IntKi), PARAMETER :: B8ADOF67V = 1837 + INTEGER(IntKi), PARAMETER :: B8ADOF68V = 1838 + INTEGER(IntKi), PARAMETER :: B8ADOF69V = 1839 + INTEGER(IntKi), PARAMETER :: B8ADOF70V = 1840 + INTEGER(IntKi), PARAMETER :: B8ADOF71V = 1841 + INTEGER(IntKi), PARAMETER :: B8ADOF72V = 1842 + INTEGER(IntKi), PARAMETER :: B8ADOF73V = 1843 + INTEGER(IntKi), PARAMETER :: B8ADOF74V = 1844 + INTEGER(IntKi), PARAMETER :: B8ADOF75V = 1845 + INTEGER(IntKi), PARAMETER :: B8ADOF76V = 1846 + INTEGER(IntKi), PARAMETER :: B8ADOF77V = 1847 + INTEGER(IntKi), PARAMETER :: B8ADOF78V = 1848 + INTEGER(IntKi), PARAMETER :: B8ADOF79V = 1849 + INTEGER(IntKi), PARAMETER :: B8ADOF80V = 1850 + INTEGER(IntKi), PARAMETER :: B8ADOF81V = 1851 + INTEGER(IntKi), PARAMETER :: B8ADOF82V = 1852 + INTEGER(IntKi), PARAMETER :: B8ADOF83V = 1853 + INTEGER(IntKi), PARAMETER :: B8ADOF84V = 1854 + INTEGER(IntKi), PARAMETER :: B8ADOF85V = 1855 + INTEGER(IntKi), PARAMETER :: B8ADOF86V = 1856 + INTEGER(IntKi), PARAMETER :: B8ADOF87V = 1857 + INTEGER(IntKi), PARAMETER :: B8ADOF88V = 1858 + INTEGER(IntKi), PARAMETER :: B8ADOF89V = 1859 + INTEGER(IntKi), PARAMETER :: B8ADOF90V = 1860 + INTEGER(IntKi), PARAMETER :: B8ADOF91V = 1861 + INTEGER(IntKi), PARAMETER :: B8ADOF92V = 1862 + INTEGER(IntKi), PARAMETER :: B8ADOF93V = 1863 + INTEGER(IntKi), PARAMETER :: B8ADOF94V = 1864 + INTEGER(IntKi), PARAMETER :: B8ADOF95V = 1865 + INTEGER(IntKi), PARAMETER :: B8ADOF96V = 1866 + INTEGER(IntKi), PARAMETER :: B8ADOF97V = 1867 + INTEGER(IntKi), PARAMETER :: B8ADOF98V = 1868 + INTEGER(IntKi), PARAMETER :: B8ADOF99V = 1869 + INTEGER(IntKi), PARAMETER :: B9ADOF1V = 1870 + INTEGER(IntKi), PARAMETER :: B9ADOF2V = 1871 + INTEGER(IntKi), PARAMETER :: B9ADOF3V = 1872 + INTEGER(IntKi), PARAMETER :: B9ADOF4V = 1873 + INTEGER(IntKi), PARAMETER :: B9ADOF5V = 1874 + INTEGER(IntKi), PARAMETER :: B9ADOF6V = 1875 + INTEGER(IntKi), PARAMETER :: B9ADOF7V = 1876 + INTEGER(IntKi), PARAMETER :: B9ADOF8V = 1877 + INTEGER(IntKi), PARAMETER :: B9ADOF9V = 1878 + INTEGER(IntKi), PARAMETER :: B9ADOF10V = 1879 + INTEGER(IntKi), PARAMETER :: B9ADOF11V = 1880 + INTEGER(IntKi), PARAMETER :: B9ADOF12V = 1881 + INTEGER(IntKi), PARAMETER :: B9ADOF13V = 1882 + INTEGER(IntKi), PARAMETER :: B9ADOF14V = 1883 + INTEGER(IntKi), PARAMETER :: B9ADOF15V = 1884 + INTEGER(IntKi), PARAMETER :: B9ADOF16V = 1885 + INTEGER(IntKi), PARAMETER :: B9ADOF17V = 1886 + INTEGER(IntKi), PARAMETER :: B9ADOF18V = 1887 + INTEGER(IntKi), PARAMETER :: B9ADOF19V = 1888 + INTEGER(IntKi), PARAMETER :: B9ADOF20V = 1889 + INTEGER(IntKi), PARAMETER :: B9ADOF21V = 1890 + INTEGER(IntKi), PARAMETER :: B9ADOF22V = 1891 + INTEGER(IntKi), PARAMETER :: B9ADOF23V = 1892 + INTEGER(IntKi), PARAMETER :: B9ADOF24V = 1893 + INTEGER(IntKi), PARAMETER :: B9ADOF25V = 1894 + INTEGER(IntKi), PARAMETER :: B9ADOF26V = 1895 + INTEGER(IntKi), PARAMETER :: B9ADOF27V = 1896 + INTEGER(IntKi), PARAMETER :: B9ADOF28V = 1897 + INTEGER(IntKi), PARAMETER :: B9ADOF29V = 1898 + INTEGER(IntKi), PARAMETER :: B9ADOF30V = 1899 + INTEGER(IntKi), PARAMETER :: B9ADOF31V = 1900 + INTEGER(IntKi), PARAMETER :: B9ADOF32V = 1901 + INTEGER(IntKi), PARAMETER :: B9ADOF33V = 1902 + INTEGER(IntKi), PARAMETER :: B9ADOF34V = 1903 + INTEGER(IntKi), PARAMETER :: B9ADOF35V = 1904 + INTEGER(IntKi), PARAMETER :: B9ADOF36V = 1905 + INTEGER(IntKi), PARAMETER :: B9ADOF37V = 1906 + INTEGER(IntKi), PARAMETER :: B9ADOF38V = 1907 + INTEGER(IntKi), PARAMETER :: B9ADOF39V = 1908 + INTEGER(IntKi), PARAMETER :: B9ADOF40V = 1909 + INTEGER(IntKi), PARAMETER :: B9ADOF41V = 1910 + INTEGER(IntKi), PARAMETER :: B9ADOF42V = 1911 + INTEGER(IntKi), PARAMETER :: B9ADOF43V = 1912 + INTEGER(IntKi), PARAMETER :: B9ADOF44V = 1913 + INTEGER(IntKi), PARAMETER :: B9ADOF45V = 1914 + INTEGER(IntKi), PARAMETER :: B9ADOF46V = 1915 + INTEGER(IntKi), PARAMETER :: B9ADOF47V = 1916 + INTEGER(IntKi), PARAMETER :: B9ADOF48V = 1917 + INTEGER(IntKi), PARAMETER :: B9ADOF49V = 1918 + INTEGER(IntKi), PARAMETER :: B9ADOF50V = 1919 + INTEGER(IntKi), PARAMETER :: B9ADOF51V = 1920 + INTEGER(IntKi), PARAMETER :: B9ADOF52V = 1921 + INTEGER(IntKi), PARAMETER :: B9ADOF53V = 1922 + INTEGER(IntKi), PARAMETER :: B9ADOF54V = 1923 + INTEGER(IntKi), PARAMETER :: B9ADOF55V = 1924 + INTEGER(IntKi), PARAMETER :: B9ADOF56V = 1925 + INTEGER(IntKi), PARAMETER :: B9ADOF57V = 1926 + INTEGER(IntKi), PARAMETER :: B9ADOF58V = 1927 + INTEGER(IntKi), PARAMETER :: B9ADOF59V = 1928 + INTEGER(IntKi), PARAMETER :: B9ADOF60V = 1929 + INTEGER(IntKi), PARAMETER :: B9ADOF61V = 1930 + INTEGER(IntKi), PARAMETER :: B9ADOF62V = 1931 + INTEGER(IntKi), PARAMETER :: B9ADOF63V = 1932 + INTEGER(IntKi), PARAMETER :: B9ADOF64V = 1933 + INTEGER(IntKi), PARAMETER :: B9ADOF65V = 1934 + INTEGER(IntKi), PARAMETER :: B9ADOF66V = 1935 + INTEGER(IntKi), PARAMETER :: B9ADOF67V = 1936 + INTEGER(IntKi), PARAMETER :: B9ADOF68V = 1937 + INTEGER(IntKi), PARAMETER :: B9ADOF69V = 1938 + INTEGER(IntKi), PARAMETER :: B9ADOF70V = 1939 + INTEGER(IntKi), PARAMETER :: B9ADOF71V = 1940 + INTEGER(IntKi), PARAMETER :: B9ADOF72V = 1941 + INTEGER(IntKi), PARAMETER :: B9ADOF73V = 1942 + INTEGER(IntKi), PARAMETER :: B9ADOF74V = 1943 + INTEGER(IntKi), PARAMETER :: B9ADOF75V = 1944 + INTEGER(IntKi), PARAMETER :: B9ADOF76V = 1945 + INTEGER(IntKi), PARAMETER :: B9ADOF77V = 1946 + INTEGER(IntKi), PARAMETER :: B9ADOF78V = 1947 + INTEGER(IntKi), PARAMETER :: B9ADOF79V = 1948 + INTEGER(IntKi), PARAMETER :: B9ADOF80V = 1949 + INTEGER(IntKi), PARAMETER :: B9ADOF81V = 1950 + INTEGER(IntKi), PARAMETER :: B9ADOF82V = 1951 + INTEGER(IntKi), PARAMETER :: B9ADOF83V = 1952 + INTEGER(IntKi), PARAMETER :: B9ADOF84V = 1953 + INTEGER(IntKi), PARAMETER :: B9ADOF85V = 1954 + INTEGER(IntKi), PARAMETER :: B9ADOF86V = 1955 + INTEGER(IntKi), PARAMETER :: B9ADOF87V = 1956 + INTEGER(IntKi), PARAMETER :: B9ADOF88V = 1957 + INTEGER(IntKi), PARAMETER :: B9ADOF89V = 1958 + INTEGER(IntKi), PARAMETER :: B9ADOF90V = 1959 + INTEGER(IntKi), PARAMETER :: B9ADOF91V = 1960 + INTEGER(IntKi), PARAMETER :: B9ADOF92V = 1961 + INTEGER(IntKi), PARAMETER :: B9ADOF93V = 1962 + INTEGER(IntKi), PARAMETER :: B9ADOF94V = 1963 + INTEGER(IntKi), PARAMETER :: B9ADOF95V = 1964 + INTEGER(IntKi), PARAMETER :: B9ADOF96V = 1965 + INTEGER(IntKi), PARAMETER :: B9ADOF97V = 1966 + INTEGER(IntKi), PARAMETER :: B9ADOF98V = 1967 + INTEGER(IntKi), PARAMETER :: B9ADOF99V = 1968 + INTEGER(IntKi), PARAMETER :: B1ADOF1A = 1969 + INTEGER(IntKi), PARAMETER :: B1ADOF2A = 1970 + INTEGER(IntKi), PARAMETER :: B1ADOF3A = 1971 + INTEGER(IntKi), PARAMETER :: B1ADOF4A = 1972 + INTEGER(IntKi), PARAMETER :: B1ADOF5A = 1973 + INTEGER(IntKi), PARAMETER :: B1ADOF6A = 1974 + INTEGER(IntKi), PARAMETER :: B1ADOF7A = 1975 + INTEGER(IntKi), PARAMETER :: B1ADOF8A = 1976 + INTEGER(IntKi), PARAMETER :: B1ADOF9A = 1977 + INTEGER(IntKi), PARAMETER :: B1ADOF10A = 1978 + INTEGER(IntKi), PARAMETER :: B1ADOF11A = 1979 + INTEGER(IntKi), PARAMETER :: B1ADOF12A = 1980 + INTEGER(IntKi), PARAMETER :: B1ADOF13A = 1981 + INTEGER(IntKi), PARAMETER :: B1ADOF14A = 1982 + INTEGER(IntKi), PARAMETER :: B1ADOF15A = 1983 + INTEGER(IntKi), PARAMETER :: B1ADOF16A = 1984 + INTEGER(IntKi), PARAMETER :: B1ADOF17A = 1985 + INTEGER(IntKi), PARAMETER :: B1ADOF18A = 1986 + INTEGER(IntKi), PARAMETER :: B1ADOF19A = 1987 + INTEGER(IntKi), PARAMETER :: B1ADOF20A = 1988 + INTEGER(IntKi), PARAMETER :: B1ADOF21A = 1989 + INTEGER(IntKi), PARAMETER :: B1ADOF22A = 1990 + INTEGER(IntKi), PARAMETER :: B1ADOF23A = 1991 + INTEGER(IntKi), PARAMETER :: B1ADOF24A = 1992 + INTEGER(IntKi), PARAMETER :: B1ADOF25A = 1993 + INTEGER(IntKi), PARAMETER :: B1ADOF26A = 1994 + INTEGER(IntKi), PARAMETER :: B1ADOF27A = 1995 + INTEGER(IntKi), PARAMETER :: B1ADOF28A = 1996 + INTEGER(IntKi), PARAMETER :: B1ADOF29A = 1997 + INTEGER(IntKi), PARAMETER :: B1ADOF30A = 1998 + INTEGER(IntKi), PARAMETER :: B1ADOF31A = 1999 + INTEGER(IntKi), PARAMETER :: B1ADOF32A = 2000 + INTEGER(IntKi), PARAMETER :: B1ADOF33A = 2001 + INTEGER(IntKi), PARAMETER :: B1ADOF34A = 2002 + INTEGER(IntKi), PARAMETER :: B1ADOF35A = 2003 + INTEGER(IntKi), PARAMETER :: B1ADOF36A = 2004 + INTEGER(IntKi), PARAMETER :: B1ADOF37A = 2005 + INTEGER(IntKi), PARAMETER :: B1ADOF38A = 2006 + INTEGER(IntKi), PARAMETER :: B1ADOF39A = 2007 + INTEGER(IntKi), PARAMETER :: B1ADOF40A = 2008 + INTEGER(IntKi), PARAMETER :: B1ADOF41A = 2009 + INTEGER(IntKi), PARAMETER :: B1ADOF42A = 2010 + INTEGER(IntKi), PARAMETER :: B1ADOF43A = 2011 + INTEGER(IntKi), PARAMETER :: B1ADOF44A = 2012 + INTEGER(IntKi), PARAMETER :: B1ADOF45A = 2013 + INTEGER(IntKi), PARAMETER :: B1ADOF46A = 2014 + INTEGER(IntKi), PARAMETER :: B1ADOF47A = 2015 + INTEGER(IntKi), PARAMETER :: B1ADOF48A = 2016 + INTEGER(IntKi), PARAMETER :: B1ADOF49A = 2017 + INTEGER(IntKi), PARAMETER :: B1ADOF50A = 2018 + INTEGER(IntKi), PARAMETER :: B1ADOF51A = 2019 + INTEGER(IntKi), PARAMETER :: B1ADOF52A = 2020 + INTEGER(IntKi), PARAMETER :: B1ADOF53A = 2021 + INTEGER(IntKi), PARAMETER :: B1ADOF54A = 2022 + INTEGER(IntKi), PARAMETER :: B1ADOF55A = 2023 + INTEGER(IntKi), PARAMETER :: B1ADOF56A = 2024 + INTEGER(IntKi), PARAMETER :: B1ADOF57A = 2025 + INTEGER(IntKi), PARAMETER :: B1ADOF58A = 2026 + INTEGER(IntKi), PARAMETER :: B1ADOF59A = 2027 + INTEGER(IntKi), PARAMETER :: B1ADOF60A = 2028 + INTEGER(IntKi), PARAMETER :: B1ADOF61A = 2029 + INTEGER(IntKi), PARAMETER :: B1ADOF62A = 2030 + INTEGER(IntKi), PARAMETER :: B1ADOF63A = 2031 + INTEGER(IntKi), PARAMETER :: B1ADOF64A = 2032 + INTEGER(IntKi), PARAMETER :: B1ADOF65A = 2033 + INTEGER(IntKi), PARAMETER :: B1ADOF66A = 2034 + INTEGER(IntKi), PARAMETER :: B1ADOF67A = 2035 + INTEGER(IntKi), PARAMETER :: B1ADOF68A = 2036 + INTEGER(IntKi), PARAMETER :: B1ADOF69A = 2037 + INTEGER(IntKi), PARAMETER :: B1ADOF70A = 2038 + INTEGER(IntKi), PARAMETER :: B1ADOF71A = 2039 + INTEGER(IntKi), PARAMETER :: B1ADOF72A = 2040 + INTEGER(IntKi), PARAMETER :: B1ADOF73A = 2041 + INTEGER(IntKi), PARAMETER :: B1ADOF74A = 2042 + INTEGER(IntKi), PARAMETER :: B1ADOF75A = 2043 + INTEGER(IntKi), PARAMETER :: B1ADOF76A = 2044 + INTEGER(IntKi), PARAMETER :: B1ADOF77A = 2045 + INTEGER(IntKi), PARAMETER :: B1ADOF78A = 2046 + INTEGER(IntKi), PARAMETER :: B1ADOF79A = 2047 + INTEGER(IntKi), PARAMETER :: B1ADOF80A = 2048 + INTEGER(IntKi), PARAMETER :: B1ADOF81A = 2049 + INTEGER(IntKi), PARAMETER :: B1ADOF82A = 2050 + INTEGER(IntKi), PARAMETER :: B1ADOF83A = 2051 + INTEGER(IntKi), PARAMETER :: B1ADOF84A = 2052 + INTEGER(IntKi), PARAMETER :: B1ADOF85A = 2053 + INTEGER(IntKi), PARAMETER :: B1ADOF86A = 2054 + INTEGER(IntKi), PARAMETER :: B1ADOF87A = 2055 + INTEGER(IntKi), PARAMETER :: B1ADOF88A = 2056 + INTEGER(IntKi), PARAMETER :: B1ADOF89A = 2057 + INTEGER(IntKi), PARAMETER :: B1ADOF90A = 2058 + INTEGER(IntKi), PARAMETER :: B1ADOF91A = 2059 + INTEGER(IntKi), PARAMETER :: B1ADOF92A = 2060 + INTEGER(IntKi), PARAMETER :: B1ADOF93A = 2061 + INTEGER(IntKi), PARAMETER :: B1ADOF94A = 2062 + INTEGER(IntKi), PARAMETER :: B1ADOF95A = 2063 + INTEGER(IntKi), PARAMETER :: B1ADOF96A = 2064 + INTEGER(IntKi), PARAMETER :: B1ADOF97A = 2065 + INTEGER(IntKi), PARAMETER :: B1ADOF98A = 2066 + INTEGER(IntKi), PARAMETER :: B1ADOF99A = 2067 + INTEGER(IntKi), PARAMETER :: B2ADOF1A = 2068 + INTEGER(IntKi), PARAMETER :: B2ADOF2A = 2069 + INTEGER(IntKi), PARAMETER :: B2ADOF3A = 2070 + INTEGER(IntKi), PARAMETER :: B2ADOF4A = 2071 + INTEGER(IntKi), PARAMETER :: B2ADOF5A = 2072 + INTEGER(IntKi), PARAMETER :: B2ADOF6A = 2073 + INTEGER(IntKi), PARAMETER :: B2ADOF7A = 2074 + INTEGER(IntKi), PARAMETER :: B2ADOF8A = 2075 + INTEGER(IntKi), PARAMETER :: B2ADOF9A = 2076 + INTEGER(IntKi), PARAMETER :: B2ADOF10A = 2077 + INTEGER(IntKi), PARAMETER :: B2ADOF11A = 2078 + INTEGER(IntKi), PARAMETER :: B2ADOF12A = 2079 + INTEGER(IntKi), PARAMETER :: B2ADOF13A = 2080 + INTEGER(IntKi), PARAMETER :: B2ADOF14A = 2081 + INTEGER(IntKi), PARAMETER :: B2ADOF15A = 2082 + INTEGER(IntKi), PARAMETER :: B2ADOF16A = 2083 + INTEGER(IntKi), PARAMETER :: B2ADOF17A = 2084 + INTEGER(IntKi), PARAMETER :: B2ADOF18A = 2085 + INTEGER(IntKi), PARAMETER :: B2ADOF19A = 2086 + INTEGER(IntKi), PARAMETER :: B2ADOF20A = 2087 + INTEGER(IntKi), PARAMETER :: B2ADOF21A = 2088 + INTEGER(IntKi), PARAMETER :: B2ADOF22A = 2089 + INTEGER(IntKi), PARAMETER :: B2ADOF23A = 2090 + INTEGER(IntKi), PARAMETER :: B2ADOF24A = 2091 + INTEGER(IntKi), PARAMETER :: B2ADOF25A = 2092 + INTEGER(IntKi), PARAMETER :: B2ADOF26A = 2093 + INTEGER(IntKi), PARAMETER :: B2ADOF27A = 2094 + INTEGER(IntKi), PARAMETER :: B2ADOF28A = 2095 + INTEGER(IntKi), PARAMETER :: B2ADOF29A = 2096 + INTEGER(IntKi), PARAMETER :: B2ADOF30A = 2097 + INTEGER(IntKi), PARAMETER :: B2ADOF31A = 2098 + INTEGER(IntKi), PARAMETER :: B2ADOF32A = 2099 + INTEGER(IntKi), PARAMETER :: B2ADOF33A = 2100 + INTEGER(IntKi), PARAMETER :: B2ADOF34A = 2101 + INTEGER(IntKi), PARAMETER :: B2ADOF35A = 2102 + INTEGER(IntKi), PARAMETER :: B2ADOF36A = 2103 + INTEGER(IntKi), PARAMETER :: B2ADOF37A = 2104 + INTEGER(IntKi), PARAMETER :: B2ADOF38A = 2105 + INTEGER(IntKi), PARAMETER :: B2ADOF39A = 2106 + INTEGER(IntKi), PARAMETER :: B2ADOF40A = 2107 + INTEGER(IntKi), PARAMETER :: B2ADOF41A = 2108 + INTEGER(IntKi), PARAMETER :: B2ADOF42A = 2109 + INTEGER(IntKi), PARAMETER :: B2ADOF43A = 2110 + INTEGER(IntKi), PARAMETER :: B2ADOF44A = 2111 + INTEGER(IntKi), PARAMETER :: B2ADOF45A = 2112 + INTEGER(IntKi), PARAMETER :: B2ADOF46A = 2113 + INTEGER(IntKi), PARAMETER :: B2ADOF47A = 2114 + INTEGER(IntKi), PARAMETER :: B2ADOF48A = 2115 + INTEGER(IntKi), PARAMETER :: B2ADOF49A = 2116 + INTEGER(IntKi), PARAMETER :: B2ADOF50A = 2117 + INTEGER(IntKi), PARAMETER :: B2ADOF51A = 2118 + INTEGER(IntKi), PARAMETER :: B2ADOF52A = 2119 + INTEGER(IntKi), PARAMETER :: B2ADOF53A = 2120 + INTEGER(IntKi), PARAMETER :: B2ADOF54A = 2121 + INTEGER(IntKi), PARAMETER :: B2ADOF55A = 2122 + INTEGER(IntKi), PARAMETER :: B2ADOF56A = 2123 + INTEGER(IntKi), PARAMETER :: B2ADOF57A = 2124 + INTEGER(IntKi), PARAMETER :: B2ADOF58A = 2125 + INTEGER(IntKi), PARAMETER :: B2ADOF59A = 2126 + INTEGER(IntKi), PARAMETER :: B2ADOF60A = 2127 + INTEGER(IntKi), PARAMETER :: B2ADOF61A = 2128 + INTEGER(IntKi), PARAMETER :: B2ADOF62A = 2129 + INTEGER(IntKi), PARAMETER :: B2ADOF63A = 2130 + INTEGER(IntKi), PARAMETER :: B2ADOF64A = 2131 + INTEGER(IntKi), PARAMETER :: B2ADOF65A = 2132 + INTEGER(IntKi), PARAMETER :: B2ADOF66A = 2133 + INTEGER(IntKi), PARAMETER :: B2ADOF67A = 2134 + INTEGER(IntKi), PARAMETER :: B2ADOF68A = 2135 + INTEGER(IntKi), PARAMETER :: B2ADOF69A = 2136 + INTEGER(IntKi), PARAMETER :: B2ADOF70A = 2137 + INTEGER(IntKi), PARAMETER :: B2ADOF71A = 2138 + INTEGER(IntKi), PARAMETER :: B2ADOF72A = 2139 + INTEGER(IntKi), PARAMETER :: B2ADOF73A = 2140 + INTEGER(IntKi), PARAMETER :: B2ADOF74A = 2141 + INTEGER(IntKi), PARAMETER :: B2ADOF75A = 2142 + INTEGER(IntKi), PARAMETER :: B2ADOF76A = 2143 + INTEGER(IntKi), PARAMETER :: B2ADOF77A = 2144 + INTEGER(IntKi), PARAMETER :: B2ADOF78A = 2145 + INTEGER(IntKi), PARAMETER :: B2ADOF79A = 2146 + INTEGER(IntKi), PARAMETER :: B2ADOF80A = 2147 + INTEGER(IntKi), PARAMETER :: B2ADOF81A = 2148 + INTEGER(IntKi), PARAMETER :: B2ADOF82A = 2149 + INTEGER(IntKi), PARAMETER :: B2ADOF83A = 2150 + INTEGER(IntKi), PARAMETER :: B2ADOF84A = 2151 + INTEGER(IntKi), PARAMETER :: B2ADOF85A = 2152 + INTEGER(IntKi), PARAMETER :: B2ADOF86A = 2153 + INTEGER(IntKi), PARAMETER :: B2ADOF87A = 2154 + INTEGER(IntKi), PARAMETER :: B2ADOF88A = 2155 + INTEGER(IntKi), PARAMETER :: B2ADOF89A = 2156 + INTEGER(IntKi), PARAMETER :: B2ADOF90A = 2157 + INTEGER(IntKi), PARAMETER :: B2ADOF91A = 2158 + INTEGER(IntKi), PARAMETER :: B2ADOF92A = 2159 + INTEGER(IntKi), PARAMETER :: B2ADOF93A = 2160 + INTEGER(IntKi), PARAMETER :: B2ADOF94A = 2161 + INTEGER(IntKi), PARAMETER :: B2ADOF95A = 2162 + INTEGER(IntKi), PARAMETER :: B2ADOF96A = 2163 + INTEGER(IntKi), PARAMETER :: B2ADOF97A = 2164 + INTEGER(IntKi), PARAMETER :: B2ADOF98A = 2165 + INTEGER(IntKi), PARAMETER :: B2ADOF99A = 2166 + INTEGER(IntKi), PARAMETER :: B3ADOF1A = 2167 + INTEGER(IntKi), PARAMETER :: B3ADOF2A = 2168 + INTEGER(IntKi), PARAMETER :: B3ADOF3A = 2169 + INTEGER(IntKi), PARAMETER :: B3ADOF4A = 2170 + INTEGER(IntKi), PARAMETER :: B3ADOF5A = 2171 + INTEGER(IntKi), PARAMETER :: B3ADOF6A = 2172 + INTEGER(IntKi), PARAMETER :: B3ADOF7A = 2173 + INTEGER(IntKi), PARAMETER :: B3ADOF8A = 2174 + INTEGER(IntKi), PARAMETER :: B3ADOF9A = 2175 + INTEGER(IntKi), PARAMETER :: B3ADOF10A = 2176 + INTEGER(IntKi), PARAMETER :: B3ADOF11A = 2177 + INTEGER(IntKi), PARAMETER :: B3ADOF12A = 2178 + INTEGER(IntKi), PARAMETER :: B3ADOF13A = 2179 + INTEGER(IntKi), PARAMETER :: B3ADOF14A = 2180 + INTEGER(IntKi), PARAMETER :: B3ADOF15A = 2181 + INTEGER(IntKi), PARAMETER :: B3ADOF16A = 2182 + INTEGER(IntKi), PARAMETER :: B3ADOF17A = 2183 + INTEGER(IntKi), PARAMETER :: B3ADOF18A = 2184 + INTEGER(IntKi), PARAMETER :: B3ADOF19A = 2185 + INTEGER(IntKi), PARAMETER :: B3ADOF20A = 2186 + INTEGER(IntKi), PARAMETER :: B3ADOF21A = 2187 + INTEGER(IntKi), PARAMETER :: B3ADOF22A = 2188 + INTEGER(IntKi), PARAMETER :: B3ADOF23A = 2189 + INTEGER(IntKi), PARAMETER :: B3ADOF24A = 2190 + INTEGER(IntKi), PARAMETER :: B3ADOF25A = 2191 + INTEGER(IntKi), PARAMETER :: B3ADOF26A = 2192 + INTEGER(IntKi), PARAMETER :: B3ADOF27A = 2193 + INTEGER(IntKi), PARAMETER :: B3ADOF28A = 2194 + INTEGER(IntKi), PARAMETER :: B3ADOF29A = 2195 + INTEGER(IntKi), PARAMETER :: B3ADOF30A = 2196 + INTEGER(IntKi), PARAMETER :: B3ADOF31A = 2197 + INTEGER(IntKi), PARAMETER :: B3ADOF32A = 2198 + INTEGER(IntKi), PARAMETER :: B3ADOF33A = 2199 + INTEGER(IntKi), PARAMETER :: B3ADOF34A = 2200 + INTEGER(IntKi), PARAMETER :: B3ADOF35A = 2201 + INTEGER(IntKi), PARAMETER :: B3ADOF36A = 2202 + INTEGER(IntKi), PARAMETER :: B3ADOF37A = 2203 + INTEGER(IntKi), PARAMETER :: B3ADOF38A = 2204 + INTEGER(IntKi), PARAMETER :: B3ADOF39A = 2205 + INTEGER(IntKi), PARAMETER :: B3ADOF40A = 2206 + INTEGER(IntKi), PARAMETER :: B3ADOF41A = 2207 + INTEGER(IntKi), PARAMETER :: B3ADOF42A = 2208 + INTEGER(IntKi), PARAMETER :: B3ADOF43A = 2209 + INTEGER(IntKi), PARAMETER :: B3ADOF44A = 2210 + INTEGER(IntKi), PARAMETER :: B3ADOF45A = 2211 + INTEGER(IntKi), PARAMETER :: B3ADOF46A = 2212 + INTEGER(IntKi), PARAMETER :: B3ADOF47A = 2213 + INTEGER(IntKi), PARAMETER :: B3ADOF48A = 2214 + INTEGER(IntKi), PARAMETER :: B3ADOF49A = 2215 + INTEGER(IntKi), PARAMETER :: B3ADOF50A = 2216 + INTEGER(IntKi), PARAMETER :: B3ADOF51A = 2217 + INTEGER(IntKi), PARAMETER :: B3ADOF52A = 2218 + INTEGER(IntKi), PARAMETER :: B3ADOF53A = 2219 + INTEGER(IntKi), PARAMETER :: B3ADOF54A = 2220 + INTEGER(IntKi), PARAMETER :: B3ADOF55A = 2221 + INTEGER(IntKi), PARAMETER :: B3ADOF56A = 2222 + INTEGER(IntKi), PARAMETER :: B3ADOF57A = 2223 + INTEGER(IntKi), PARAMETER :: B3ADOF58A = 2224 + INTEGER(IntKi), PARAMETER :: B3ADOF59A = 2225 + INTEGER(IntKi), PARAMETER :: B3ADOF60A = 2226 + INTEGER(IntKi), PARAMETER :: B3ADOF61A = 2227 + INTEGER(IntKi), PARAMETER :: B3ADOF62A = 2228 + INTEGER(IntKi), PARAMETER :: B3ADOF63A = 2229 + INTEGER(IntKi), PARAMETER :: B3ADOF64A = 2230 + INTEGER(IntKi), PARAMETER :: B3ADOF65A = 2231 + INTEGER(IntKi), PARAMETER :: B3ADOF66A = 2232 + INTEGER(IntKi), PARAMETER :: B3ADOF67A = 2233 + INTEGER(IntKi), PARAMETER :: B3ADOF68A = 2234 + INTEGER(IntKi), PARAMETER :: B3ADOF69A = 2235 + INTEGER(IntKi), PARAMETER :: B3ADOF70A = 2236 + INTEGER(IntKi), PARAMETER :: B3ADOF71A = 2237 + INTEGER(IntKi), PARAMETER :: B3ADOF72A = 2238 + INTEGER(IntKi), PARAMETER :: B3ADOF73A = 2239 + INTEGER(IntKi), PARAMETER :: B3ADOF74A = 2240 + INTEGER(IntKi), PARAMETER :: B3ADOF75A = 2241 + INTEGER(IntKi), PARAMETER :: B3ADOF76A = 2242 + INTEGER(IntKi), PARAMETER :: B3ADOF77A = 2243 + INTEGER(IntKi), PARAMETER :: B3ADOF78A = 2244 + INTEGER(IntKi), PARAMETER :: B3ADOF79A = 2245 + INTEGER(IntKi), PARAMETER :: B3ADOF80A = 2246 + INTEGER(IntKi), PARAMETER :: B3ADOF81A = 2247 + INTEGER(IntKi), PARAMETER :: B3ADOF82A = 2248 + INTEGER(IntKi), PARAMETER :: B3ADOF83A = 2249 + INTEGER(IntKi), PARAMETER :: B3ADOF84A = 2250 + INTEGER(IntKi), PARAMETER :: B3ADOF85A = 2251 + INTEGER(IntKi), PARAMETER :: B3ADOF86A = 2252 + INTEGER(IntKi), PARAMETER :: B3ADOF87A = 2253 + INTEGER(IntKi), PARAMETER :: B3ADOF88A = 2254 + INTEGER(IntKi), PARAMETER :: B3ADOF89A = 2255 + INTEGER(IntKi), PARAMETER :: B3ADOF90A = 2256 + INTEGER(IntKi), PARAMETER :: B3ADOF91A = 2257 + INTEGER(IntKi), PARAMETER :: B3ADOF92A = 2258 + INTEGER(IntKi), PARAMETER :: B3ADOF93A = 2259 + INTEGER(IntKi), PARAMETER :: B3ADOF94A = 2260 + INTEGER(IntKi), PARAMETER :: B3ADOF95A = 2261 + INTEGER(IntKi), PARAMETER :: B3ADOF96A = 2262 + INTEGER(IntKi), PARAMETER :: B3ADOF97A = 2263 + INTEGER(IntKi), PARAMETER :: B3ADOF98A = 2264 + INTEGER(IntKi), PARAMETER :: B3ADOF99A = 2265 + INTEGER(IntKi), PARAMETER :: B4ADOF1A = 2266 + INTEGER(IntKi), PARAMETER :: B4ADOF2A = 2267 + INTEGER(IntKi), PARAMETER :: B4ADOF3A = 2268 + INTEGER(IntKi), PARAMETER :: B4ADOF4A = 2269 + INTEGER(IntKi), PARAMETER :: B4ADOF5A = 2270 + INTEGER(IntKi), PARAMETER :: B4ADOF6A = 2271 + INTEGER(IntKi), PARAMETER :: B4ADOF7A = 2272 + INTEGER(IntKi), PARAMETER :: B4ADOF8A = 2273 + INTEGER(IntKi), PARAMETER :: B4ADOF9A = 2274 + INTEGER(IntKi), PARAMETER :: B4ADOF10A = 2275 + INTEGER(IntKi), PARAMETER :: B4ADOF11A = 2276 + INTEGER(IntKi), PARAMETER :: B4ADOF12A = 2277 + INTEGER(IntKi), PARAMETER :: B4ADOF13A = 2278 + INTEGER(IntKi), PARAMETER :: B4ADOF14A = 2279 + INTEGER(IntKi), PARAMETER :: B4ADOF15A = 2280 + INTEGER(IntKi), PARAMETER :: B4ADOF16A = 2281 + INTEGER(IntKi), PARAMETER :: B4ADOF17A = 2282 + INTEGER(IntKi), PARAMETER :: B4ADOF18A = 2283 + INTEGER(IntKi), PARAMETER :: B4ADOF19A = 2284 + INTEGER(IntKi), PARAMETER :: B4ADOF20A = 2285 + INTEGER(IntKi), PARAMETER :: B4ADOF21A = 2286 + INTEGER(IntKi), PARAMETER :: B4ADOF22A = 2287 + INTEGER(IntKi), PARAMETER :: B4ADOF23A = 2288 + INTEGER(IntKi), PARAMETER :: B4ADOF24A = 2289 + INTEGER(IntKi), PARAMETER :: B4ADOF25A = 2290 + INTEGER(IntKi), PARAMETER :: B4ADOF26A = 2291 + INTEGER(IntKi), PARAMETER :: B4ADOF27A = 2292 + INTEGER(IntKi), PARAMETER :: B4ADOF28A = 2293 + INTEGER(IntKi), PARAMETER :: B4ADOF29A = 2294 + INTEGER(IntKi), PARAMETER :: B4ADOF30A = 2295 + INTEGER(IntKi), PARAMETER :: B4ADOF31A = 2296 + INTEGER(IntKi), PARAMETER :: B4ADOF32A = 2297 + INTEGER(IntKi), PARAMETER :: B4ADOF33A = 2298 + INTEGER(IntKi), PARAMETER :: B4ADOF34A = 2299 + INTEGER(IntKi), PARAMETER :: B4ADOF35A = 2300 + INTEGER(IntKi), PARAMETER :: B4ADOF36A = 2301 + INTEGER(IntKi), PARAMETER :: B4ADOF37A = 2302 + INTEGER(IntKi), PARAMETER :: B4ADOF38A = 2303 + INTEGER(IntKi), PARAMETER :: B4ADOF39A = 2304 + INTEGER(IntKi), PARAMETER :: B4ADOF40A = 2305 + INTEGER(IntKi), PARAMETER :: B4ADOF41A = 2306 + INTEGER(IntKi), PARAMETER :: B4ADOF42A = 2307 + INTEGER(IntKi), PARAMETER :: B4ADOF43A = 2308 + INTEGER(IntKi), PARAMETER :: B4ADOF44A = 2309 + INTEGER(IntKi), PARAMETER :: B4ADOF45A = 2310 + INTEGER(IntKi), PARAMETER :: B4ADOF46A = 2311 + INTEGER(IntKi), PARAMETER :: B4ADOF47A = 2312 + INTEGER(IntKi), PARAMETER :: B4ADOF48A = 2313 + INTEGER(IntKi), PARAMETER :: B4ADOF49A = 2314 + INTEGER(IntKi), PARAMETER :: B4ADOF50A = 2315 + INTEGER(IntKi), PARAMETER :: B4ADOF51A = 2316 + INTEGER(IntKi), PARAMETER :: B4ADOF52A = 2317 + INTEGER(IntKi), PARAMETER :: B4ADOF53A = 2318 + INTEGER(IntKi), PARAMETER :: B4ADOF54A = 2319 + INTEGER(IntKi), PARAMETER :: B4ADOF55A = 2320 + INTEGER(IntKi), PARAMETER :: B4ADOF56A = 2321 + INTEGER(IntKi), PARAMETER :: B4ADOF57A = 2322 + INTEGER(IntKi), PARAMETER :: B4ADOF58A = 2323 + INTEGER(IntKi), PARAMETER :: B4ADOF59A = 2324 + INTEGER(IntKi), PARAMETER :: B4ADOF60A = 2325 + INTEGER(IntKi), PARAMETER :: B4ADOF61A = 2326 + INTEGER(IntKi), PARAMETER :: B4ADOF62A = 2327 + INTEGER(IntKi), PARAMETER :: B4ADOF63A = 2328 + INTEGER(IntKi), PARAMETER :: B4ADOF64A = 2329 + INTEGER(IntKi), PARAMETER :: B4ADOF65A = 2330 + INTEGER(IntKi), PARAMETER :: B4ADOF66A = 2331 + INTEGER(IntKi), PARAMETER :: B4ADOF67A = 2332 + INTEGER(IntKi), PARAMETER :: B4ADOF68A = 2333 + INTEGER(IntKi), PARAMETER :: B4ADOF69A = 2334 + INTEGER(IntKi), PARAMETER :: B4ADOF70A = 2335 + INTEGER(IntKi), PARAMETER :: B4ADOF71A = 2336 + INTEGER(IntKi), PARAMETER :: B4ADOF72A = 2337 + INTEGER(IntKi), PARAMETER :: B4ADOF73A = 2338 + INTEGER(IntKi), PARAMETER :: B4ADOF74A = 2339 + INTEGER(IntKi), PARAMETER :: B4ADOF75A = 2340 + INTEGER(IntKi), PARAMETER :: B4ADOF76A = 2341 + INTEGER(IntKi), PARAMETER :: B4ADOF77A = 2342 + INTEGER(IntKi), PARAMETER :: B4ADOF78A = 2343 + INTEGER(IntKi), PARAMETER :: B4ADOF79A = 2344 + INTEGER(IntKi), PARAMETER :: B4ADOF80A = 2345 + INTEGER(IntKi), PARAMETER :: B4ADOF81A = 2346 + INTEGER(IntKi), PARAMETER :: B4ADOF82A = 2347 + INTEGER(IntKi), PARAMETER :: B4ADOF83A = 2348 + INTEGER(IntKi), PARAMETER :: B4ADOF84A = 2349 + INTEGER(IntKi), PARAMETER :: B4ADOF85A = 2350 + INTEGER(IntKi), PARAMETER :: B4ADOF86A = 2351 + INTEGER(IntKi), PARAMETER :: B4ADOF87A = 2352 + INTEGER(IntKi), PARAMETER :: B4ADOF88A = 2353 + INTEGER(IntKi), PARAMETER :: B4ADOF89A = 2354 + INTEGER(IntKi), PARAMETER :: B4ADOF90A = 2355 + INTEGER(IntKi), PARAMETER :: B4ADOF91A = 2356 + INTEGER(IntKi), PARAMETER :: B4ADOF92A = 2357 + INTEGER(IntKi), PARAMETER :: B4ADOF93A = 2358 + INTEGER(IntKi), PARAMETER :: B4ADOF94A = 2359 + INTEGER(IntKi), PARAMETER :: B4ADOF95A = 2360 + INTEGER(IntKi), PARAMETER :: B4ADOF96A = 2361 + INTEGER(IntKi), PARAMETER :: B4ADOF97A = 2362 + INTEGER(IntKi), PARAMETER :: B4ADOF98A = 2363 + INTEGER(IntKi), PARAMETER :: B4ADOF99A = 2364 + INTEGER(IntKi), PARAMETER :: B5ADOF1A = 2365 + INTEGER(IntKi), PARAMETER :: B5ADOF2A = 2366 + INTEGER(IntKi), PARAMETER :: B5ADOF3A = 2367 + INTEGER(IntKi), PARAMETER :: B5ADOF4A = 2368 + INTEGER(IntKi), PARAMETER :: B5ADOF5A = 2369 + INTEGER(IntKi), PARAMETER :: B5ADOF6A = 2370 + INTEGER(IntKi), PARAMETER :: B5ADOF7A = 2371 + INTEGER(IntKi), PARAMETER :: B5ADOF8A = 2372 + INTEGER(IntKi), PARAMETER :: B5ADOF9A = 2373 + INTEGER(IntKi), PARAMETER :: B5ADOF10A = 2374 + INTEGER(IntKi), PARAMETER :: B5ADOF11A = 2375 + INTEGER(IntKi), PARAMETER :: B5ADOF12A = 2376 + INTEGER(IntKi), PARAMETER :: B5ADOF13A = 2377 + INTEGER(IntKi), PARAMETER :: B5ADOF14A = 2378 + INTEGER(IntKi), PARAMETER :: B5ADOF15A = 2379 + INTEGER(IntKi), PARAMETER :: B5ADOF16A = 2380 + INTEGER(IntKi), PARAMETER :: B5ADOF17A = 2381 + INTEGER(IntKi), PARAMETER :: B5ADOF18A = 2382 + INTEGER(IntKi), PARAMETER :: B5ADOF19A = 2383 + INTEGER(IntKi), PARAMETER :: B5ADOF20A = 2384 + INTEGER(IntKi), PARAMETER :: B5ADOF21A = 2385 + INTEGER(IntKi), PARAMETER :: B5ADOF22A = 2386 + INTEGER(IntKi), PARAMETER :: B5ADOF23A = 2387 + INTEGER(IntKi), PARAMETER :: B5ADOF24A = 2388 + INTEGER(IntKi), PARAMETER :: B5ADOF25A = 2389 + INTEGER(IntKi), PARAMETER :: B5ADOF26A = 2390 + INTEGER(IntKi), PARAMETER :: B5ADOF27A = 2391 + INTEGER(IntKi), PARAMETER :: B5ADOF28A = 2392 + INTEGER(IntKi), PARAMETER :: B5ADOF29A = 2393 + INTEGER(IntKi), PARAMETER :: B5ADOF30A = 2394 + INTEGER(IntKi), PARAMETER :: B5ADOF31A = 2395 + INTEGER(IntKi), PARAMETER :: B5ADOF32A = 2396 + INTEGER(IntKi), PARAMETER :: B5ADOF33A = 2397 + INTEGER(IntKi), PARAMETER :: B5ADOF34A = 2398 + INTEGER(IntKi), PARAMETER :: B5ADOF35A = 2399 + INTEGER(IntKi), PARAMETER :: B5ADOF36A = 2400 + INTEGER(IntKi), PARAMETER :: B5ADOF37A = 2401 + INTEGER(IntKi), PARAMETER :: B5ADOF38A = 2402 + INTEGER(IntKi), PARAMETER :: B5ADOF39A = 2403 + INTEGER(IntKi), PARAMETER :: B5ADOF40A = 2404 + INTEGER(IntKi), PARAMETER :: B5ADOF41A = 2405 + INTEGER(IntKi), PARAMETER :: B5ADOF42A = 2406 + INTEGER(IntKi), PARAMETER :: B5ADOF43A = 2407 + INTEGER(IntKi), PARAMETER :: B5ADOF44A = 2408 + INTEGER(IntKi), PARAMETER :: B5ADOF45A = 2409 + INTEGER(IntKi), PARAMETER :: B5ADOF46A = 2410 + INTEGER(IntKi), PARAMETER :: B5ADOF47A = 2411 + INTEGER(IntKi), PARAMETER :: B5ADOF48A = 2412 + INTEGER(IntKi), PARAMETER :: B5ADOF49A = 2413 + INTEGER(IntKi), PARAMETER :: B5ADOF50A = 2414 + INTEGER(IntKi), PARAMETER :: B5ADOF51A = 2415 + INTEGER(IntKi), PARAMETER :: B5ADOF52A = 2416 + INTEGER(IntKi), PARAMETER :: B5ADOF53A = 2417 + INTEGER(IntKi), PARAMETER :: B5ADOF54A = 2418 + INTEGER(IntKi), PARAMETER :: B5ADOF55A = 2419 + INTEGER(IntKi), PARAMETER :: B5ADOF56A = 2420 + INTEGER(IntKi), PARAMETER :: B5ADOF57A = 2421 + INTEGER(IntKi), PARAMETER :: B5ADOF58A = 2422 + INTEGER(IntKi), PARAMETER :: B5ADOF59A = 2423 + INTEGER(IntKi), PARAMETER :: B5ADOF60A = 2424 + INTEGER(IntKi), PARAMETER :: B5ADOF61A = 2425 + INTEGER(IntKi), PARAMETER :: B5ADOF62A = 2426 + INTEGER(IntKi), PARAMETER :: B5ADOF63A = 2427 + INTEGER(IntKi), PARAMETER :: B5ADOF64A = 2428 + INTEGER(IntKi), PARAMETER :: B5ADOF65A = 2429 + INTEGER(IntKi), PARAMETER :: B5ADOF66A = 2430 + INTEGER(IntKi), PARAMETER :: B5ADOF67A = 2431 + INTEGER(IntKi), PARAMETER :: B5ADOF68A = 2432 + INTEGER(IntKi), PARAMETER :: B5ADOF69A = 2433 + INTEGER(IntKi), PARAMETER :: B5ADOF70A = 2434 + INTEGER(IntKi), PARAMETER :: B5ADOF71A = 2435 + INTEGER(IntKi), PARAMETER :: B5ADOF72A = 2436 + INTEGER(IntKi), PARAMETER :: B5ADOF73A = 2437 + INTEGER(IntKi), PARAMETER :: B5ADOF74A = 2438 + INTEGER(IntKi), PARAMETER :: B5ADOF75A = 2439 + INTEGER(IntKi), PARAMETER :: B5ADOF76A = 2440 + INTEGER(IntKi), PARAMETER :: B5ADOF77A = 2441 + INTEGER(IntKi), PARAMETER :: B5ADOF78A = 2442 + INTEGER(IntKi), PARAMETER :: B5ADOF79A = 2443 + INTEGER(IntKi), PARAMETER :: B5ADOF80A = 2444 + INTEGER(IntKi), PARAMETER :: B5ADOF81A = 2445 + INTEGER(IntKi), PARAMETER :: B5ADOF82A = 2446 + INTEGER(IntKi), PARAMETER :: B5ADOF83A = 2447 + INTEGER(IntKi), PARAMETER :: B5ADOF84A = 2448 + INTEGER(IntKi), PARAMETER :: B5ADOF85A = 2449 + INTEGER(IntKi), PARAMETER :: B5ADOF86A = 2450 + INTEGER(IntKi), PARAMETER :: B5ADOF87A = 2451 + INTEGER(IntKi), PARAMETER :: B5ADOF88A = 2452 + INTEGER(IntKi), PARAMETER :: B5ADOF89A = 2453 + INTEGER(IntKi), PARAMETER :: B5ADOF90A = 2454 + INTEGER(IntKi), PARAMETER :: B5ADOF91A = 2455 + INTEGER(IntKi), PARAMETER :: B5ADOF92A = 2456 + INTEGER(IntKi), PARAMETER :: B5ADOF93A = 2457 + INTEGER(IntKi), PARAMETER :: B5ADOF94A = 2458 + INTEGER(IntKi), PARAMETER :: B5ADOF95A = 2459 + INTEGER(IntKi), PARAMETER :: B5ADOF96A = 2460 + INTEGER(IntKi), PARAMETER :: B5ADOF97A = 2461 + INTEGER(IntKi), PARAMETER :: B5ADOF98A = 2462 + INTEGER(IntKi), PARAMETER :: B5ADOF99A = 2463 + INTEGER(IntKi), PARAMETER :: B6ADOF1A = 2464 + INTEGER(IntKi), PARAMETER :: B6ADOF2A = 2465 + INTEGER(IntKi), PARAMETER :: B6ADOF3A = 2466 + INTEGER(IntKi), PARAMETER :: B6ADOF4A = 2467 + INTEGER(IntKi), PARAMETER :: B6ADOF5A = 2468 + INTEGER(IntKi), PARAMETER :: B6ADOF6A = 2469 + INTEGER(IntKi), PARAMETER :: B6ADOF7A = 2470 + INTEGER(IntKi), PARAMETER :: B6ADOF8A = 2471 + INTEGER(IntKi), PARAMETER :: B6ADOF9A = 2472 + INTEGER(IntKi), PARAMETER :: B6ADOF10A = 2473 + INTEGER(IntKi), PARAMETER :: B6ADOF11A = 2474 + INTEGER(IntKi), PARAMETER :: B6ADOF12A = 2475 + INTEGER(IntKi), PARAMETER :: B6ADOF13A = 2476 + INTEGER(IntKi), PARAMETER :: B6ADOF14A = 2477 + INTEGER(IntKi), PARAMETER :: B6ADOF15A = 2478 + INTEGER(IntKi), PARAMETER :: B6ADOF16A = 2479 + INTEGER(IntKi), PARAMETER :: B6ADOF17A = 2480 + INTEGER(IntKi), PARAMETER :: B6ADOF18A = 2481 + INTEGER(IntKi), PARAMETER :: B6ADOF19A = 2482 + INTEGER(IntKi), PARAMETER :: B6ADOF20A = 2483 + INTEGER(IntKi), PARAMETER :: B6ADOF21A = 2484 + INTEGER(IntKi), PARAMETER :: B6ADOF22A = 2485 + INTEGER(IntKi), PARAMETER :: B6ADOF23A = 2486 + INTEGER(IntKi), PARAMETER :: B6ADOF24A = 2487 + INTEGER(IntKi), PARAMETER :: B6ADOF25A = 2488 + INTEGER(IntKi), PARAMETER :: B6ADOF26A = 2489 + INTEGER(IntKi), PARAMETER :: B6ADOF27A = 2490 + INTEGER(IntKi), PARAMETER :: B6ADOF28A = 2491 + INTEGER(IntKi), PARAMETER :: B6ADOF29A = 2492 + INTEGER(IntKi), PARAMETER :: B6ADOF30A = 2493 + INTEGER(IntKi), PARAMETER :: B6ADOF31A = 2494 + INTEGER(IntKi), PARAMETER :: B6ADOF32A = 2495 + INTEGER(IntKi), PARAMETER :: B6ADOF33A = 2496 + INTEGER(IntKi), PARAMETER :: B6ADOF34A = 2497 + INTEGER(IntKi), PARAMETER :: B6ADOF35A = 2498 + INTEGER(IntKi), PARAMETER :: B6ADOF36A = 2499 + INTEGER(IntKi), PARAMETER :: B6ADOF37A = 2500 + INTEGER(IntKi), PARAMETER :: B6ADOF38A = 2501 + INTEGER(IntKi), PARAMETER :: B6ADOF39A = 2502 + INTEGER(IntKi), PARAMETER :: B6ADOF40A = 2503 + INTEGER(IntKi), PARAMETER :: B6ADOF41A = 2504 + INTEGER(IntKi), PARAMETER :: B6ADOF42A = 2505 + INTEGER(IntKi), PARAMETER :: B6ADOF43A = 2506 + INTEGER(IntKi), PARAMETER :: B6ADOF44A = 2507 + INTEGER(IntKi), PARAMETER :: B6ADOF45A = 2508 + INTEGER(IntKi), PARAMETER :: B6ADOF46A = 2509 + INTEGER(IntKi), PARAMETER :: B6ADOF47A = 2510 + INTEGER(IntKi), PARAMETER :: B6ADOF48A = 2511 + INTEGER(IntKi), PARAMETER :: B6ADOF49A = 2512 + INTEGER(IntKi), PARAMETER :: B6ADOF50A = 2513 + INTEGER(IntKi), PARAMETER :: B6ADOF51A = 2514 + INTEGER(IntKi), PARAMETER :: B6ADOF52A = 2515 + INTEGER(IntKi), PARAMETER :: B6ADOF53A = 2516 + INTEGER(IntKi), PARAMETER :: B6ADOF54A = 2517 + INTEGER(IntKi), PARAMETER :: B6ADOF55A = 2518 + INTEGER(IntKi), PARAMETER :: B6ADOF56A = 2519 + INTEGER(IntKi), PARAMETER :: B6ADOF57A = 2520 + INTEGER(IntKi), PARAMETER :: B6ADOF58A = 2521 + INTEGER(IntKi), PARAMETER :: B6ADOF59A = 2522 + INTEGER(IntKi), PARAMETER :: B6ADOF60A = 2523 + INTEGER(IntKi), PARAMETER :: B6ADOF61A = 2524 + INTEGER(IntKi), PARAMETER :: B6ADOF62A = 2525 + INTEGER(IntKi), PARAMETER :: B6ADOF63A = 2526 + INTEGER(IntKi), PARAMETER :: B6ADOF64A = 2527 + INTEGER(IntKi), PARAMETER :: B6ADOF65A = 2528 + INTEGER(IntKi), PARAMETER :: B6ADOF66A = 2529 + INTEGER(IntKi), PARAMETER :: B6ADOF67A = 2530 + INTEGER(IntKi), PARAMETER :: B6ADOF68A = 2531 + INTEGER(IntKi), PARAMETER :: B6ADOF69A = 2532 + INTEGER(IntKi), PARAMETER :: B6ADOF70A = 2533 + INTEGER(IntKi), PARAMETER :: B6ADOF71A = 2534 + INTEGER(IntKi), PARAMETER :: B6ADOF72A = 2535 + INTEGER(IntKi), PARAMETER :: B6ADOF73A = 2536 + INTEGER(IntKi), PARAMETER :: B6ADOF74A = 2537 + INTEGER(IntKi), PARAMETER :: B6ADOF75A = 2538 + INTEGER(IntKi), PARAMETER :: B6ADOF76A = 2539 + INTEGER(IntKi), PARAMETER :: B6ADOF77A = 2540 + INTEGER(IntKi), PARAMETER :: B6ADOF78A = 2541 + INTEGER(IntKi), PARAMETER :: B6ADOF79A = 2542 + INTEGER(IntKi), PARAMETER :: B6ADOF80A = 2543 + INTEGER(IntKi), PARAMETER :: B6ADOF81A = 2544 + INTEGER(IntKi), PARAMETER :: B6ADOF82A = 2545 + INTEGER(IntKi), PARAMETER :: B6ADOF83A = 2546 + INTEGER(IntKi), PARAMETER :: B6ADOF84A = 2547 + INTEGER(IntKi), PARAMETER :: B6ADOF85A = 2548 + INTEGER(IntKi), PARAMETER :: B6ADOF86A = 2549 + INTEGER(IntKi), PARAMETER :: B6ADOF87A = 2550 + INTEGER(IntKi), PARAMETER :: B6ADOF88A = 2551 + INTEGER(IntKi), PARAMETER :: B6ADOF89A = 2552 + INTEGER(IntKi), PARAMETER :: B6ADOF90A = 2553 + INTEGER(IntKi), PARAMETER :: B6ADOF91A = 2554 + INTEGER(IntKi), PARAMETER :: B6ADOF92A = 2555 + INTEGER(IntKi), PARAMETER :: B6ADOF93A = 2556 + INTEGER(IntKi), PARAMETER :: B6ADOF94A = 2557 + INTEGER(IntKi), PARAMETER :: B6ADOF95A = 2558 + INTEGER(IntKi), PARAMETER :: B6ADOF96A = 2559 + INTEGER(IntKi), PARAMETER :: B6ADOF97A = 2560 + INTEGER(IntKi), PARAMETER :: B6ADOF98A = 2561 + INTEGER(IntKi), PARAMETER :: B6ADOF99A = 2562 + INTEGER(IntKi), PARAMETER :: B7ADOF1A = 2563 + INTEGER(IntKi), PARAMETER :: B7ADOF2A = 2564 + INTEGER(IntKi), PARAMETER :: B7ADOF3A = 2565 + INTEGER(IntKi), PARAMETER :: B7ADOF4A = 2566 + INTEGER(IntKi), PARAMETER :: B7ADOF5A = 2567 + INTEGER(IntKi), PARAMETER :: B7ADOF6A = 2568 + INTEGER(IntKi), PARAMETER :: B7ADOF7A = 2569 + INTEGER(IntKi), PARAMETER :: B7ADOF8A = 2570 + INTEGER(IntKi), PARAMETER :: B7ADOF9A = 2571 + INTEGER(IntKi), PARAMETER :: B7ADOF10A = 2572 + INTEGER(IntKi), PARAMETER :: B7ADOF11A = 2573 + INTEGER(IntKi), PARAMETER :: B7ADOF12A = 2574 + INTEGER(IntKi), PARAMETER :: B7ADOF13A = 2575 + INTEGER(IntKi), PARAMETER :: B7ADOF14A = 2576 + INTEGER(IntKi), PARAMETER :: B7ADOF15A = 2577 + INTEGER(IntKi), PARAMETER :: B7ADOF16A = 2578 + INTEGER(IntKi), PARAMETER :: B7ADOF17A = 2579 + INTEGER(IntKi), PARAMETER :: B7ADOF18A = 2580 + INTEGER(IntKi), PARAMETER :: B7ADOF19A = 2581 + INTEGER(IntKi), PARAMETER :: B7ADOF20A = 2582 + INTEGER(IntKi), PARAMETER :: B7ADOF21A = 2583 + INTEGER(IntKi), PARAMETER :: B7ADOF22A = 2584 + INTEGER(IntKi), PARAMETER :: B7ADOF23A = 2585 + INTEGER(IntKi), PARAMETER :: B7ADOF24A = 2586 + INTEGER(IntKi), PARAMETER :: B7ADOF25A = 2587 + INTEGER(IntKi), PARAMETER :: B7ADOF26A = 2588 + INTEGER(IntKi), PARAMETER :: B7ADOF27A = 2589 + INTEGER(IntKi), PARAMETER :: B7ADOF28A = 2590 + INTEGER(IntKi), PARAMETER :: B7ADOF29A = 2591 + INTEGER(IntKi), PARAMETER :: B7ADOF30A = 2592 + INTEGER(IntKi), PARAMETER :: B7ADOF31A = 2593 + INTEGER(IntKi), PARAMETER :: B7ADOF32A = 2594 + INTEGER(IntKi), PARAMETER :: B7ADOF33A = 2595 + INTEGER(IntKi), PARAMETER :: B7ADOF34A = 2596 + INTEGER(IntKi), PARAMETER :: B7ADOF35A = 2597 + INTEGER(IntKi), PARAMETER :: B7ADOF36A = 2598 + INTEGER(IntKi), PARAMETER :: B7ADOF37A = 2599 + INTEGER(IntKi), PARAMETER :: B7ADOF38A = 2600 + INTEGER(IntKi), PARAMETER :: B7ADOF39A = 2601 + INTEGER(IntKi), PARAMETER :: B7ADOF40A = 2602 + INTEGER(IntKi), PARAMETER :: B7ADOF41A = 2603 + INTEGER(IntKi), PARAMETER :: B7ADOF42A = 2604 + INTEGER(IntKi), PARAMETER :: B7ADOF43A = 2605 + INTEGER(IntKi), PARAMETER :: B7ADOF44A = 2606 + INTEGER(IntKi), PARAMETER :: B7ADOF45A = 2607 + INTEGER(IntKi), PARAMETER :: B7ADOF46A = 2608 + INTEGER(IntKi), PARAMETER :: B7ADOF47A = 2609 + INTEGER(IntKi), PARAMETER :: B7ADOF48A = 2610 + INTEGER(IntKi), PARAMETER :: B7ADOF49A = 2611 + INTEGER(IntKi), PARAMETER :: B7ADOF50A = 2612 + INTEGER(IntKi), PARAMETER :: B7ADOF51A = 2613 + INTEGER(IntKi), PARAMETER :: B7ADOF52A = 2614 + INTEGER(IntKi), PARAMETER :: B7ADOF53A = 2615 + INTEGER(IntKi), PARAMETER :: B7ADOF54A = 2616 + INTEGER(IntKi), PARAMETER :: B7ADOF55A = 2617 + INTEGER(IntKi), PARAMETER :: B7ADOF56A = 2618 + INTEGER(IntKi), PARAMETER :: B7ADOF57A = 2619 + INTEGER(IntKi), PARAMETER :: B7ADOF58A = 2620 + INTEGER(IntKi), PARAMETER :: B7ADOF59A = 2621 + INTEGER(IntKi), PARAMETER :: B7ADOF60A = 2622 + INTEGER(IntKi), PARAMETER :: B7ADOF61A = 2623 + INTEGER(IntKi), PARAMETER :: B7ADOF62A = 2624 + INTEGER(IntKi), PARAMETER :: B7ADOF63A = 2625 + INTEGER(IntKi), PARAMETER :: B7ADOF64A = 2626 + INTEGER(IntKi), PARAMETER :: B7ADOF65A = 2627 + INTEGER(IntKi), PARAMETER :: B7ADOF66A = 2628 + INTEGER(IntKi), PARAMETER :: B7ADOF67A = 2629 + INTEGER(IntKi), PARAMETER :: B7ADOF68A = 2630 + INTEGER(IntKi), PARAMETER :: B7ADOF69A = 2631 + INTEGER(IntKi), PARAMETER :: B7ADOF70A = 2632 + INTEGER(IntKi), PARAMETER :: B7ADOF71A = 2633 + INTEGER(IntKi), PARAMETER :: B7ADOF72A = 2634 + INTEGER(IntKi), PARAMETER :: B7ADOF73A = 2635 + INTEGER(IntKi), PARAMETER :: B7ADOF74A = 2636 + INTEGER(IntKi), PARAMETER :: B7ADOF75A = 2637 + INTEGER(IntKi), PARAMETER :: B7ADOF76A = 2638 + INTEGER(IntKi), PARAMETER :: B7ADOF77A = 2639 + INTEGER(IntKi), PARAMETER :: B7ADOF78A = 2640 + INTEGER(IntKi), PARAMETER :: B7ADOF79A = 2641 + INTEGER(IntKi), PARAMETER :: B7ADOF80A = 2642 + INTEGER(IntKi), PARAMETER :: B7ADOF81A = 2643 + INTEGER(IntKi), PARAMETER :: B7ADOF82A = 2644 + INTEGER(IntKi), PARAMETER :: B7ADOF83A = 2645 + INTEGER(IntKi), PARAMETER :: B7ADOF84A = 2646 + INTEGER(IntKi), PARAMETER :: B7ADOF85A = 2647 + INTEGER(IntKi), PARAMETER :: B7ADOF86A = 2648 + INTEGER(IntKi), PARAMETER :: B7ADOF87A = 2649 + INTEGER(IntKi), PARAMETER :: B7ADOF88A = 2650 + INTEGER(IntKi), PARAMETER :: B7ADOF89A = 2651 + INTEGER(IntKi), PARAMETER :: B7ADOF90A = 2652 + INTEGER(IntKi), PARAMETER :: B7ADOF91A = 2653 + INTEGER(IntKi), PARAMETER :: B7ADOF92A = 2654 + INTEGER(IntKi), PARAMETER :: B7ADOF93A = 2655 + INTEGER(IntKi), PARAMETER :: B7ADOF94A = 2656 + INTEGER(IntKi), PARAMETER :: B7ADOF95A = 2657 + INTEGER(IntKi), PARAMETER :: B7ADOF96A = 2658 + INTEGER(IntKi), PARAMETER :: B7ADOF97A = 2659 + INTEGER(IntKi), PARAMETER :: B7ADOF98A = 2660 + INTEGER(IntKi), PARAMETER :: B7ADOF99A = 2661 + INTEGER(IntKi), PARAMETER :: B8ADOF1A = 2662 + INTEGER(IntKi), PARAMETER :: B8ADOF2A = 2663 + INTEGER(IntKi), PARAMETER :: B8ADOF3A = 2664 + INTEGER(IntKi), PARAMETER :: B8ADOF4A = 2665 + INTEGER(IntKi), PARAMETER :: B8ADOF5A = 2666 + INTEGER(IntKi), PARAMETER :: B8ADOF6A = 2667 + INTEGER(IntKi), PARAMETER :: B8ADOF7A = 2668 + INTEGER(IntKi), PARAMETER :: B8ADOF8A = 2669 + INTEGER(IntKi), PARAMETER :: B8ADOF9A = 2670 + INTEGER(IntKi), PARAMETER :: B8ADOF10A = 2671 + INTEGER(IntKi), PARAMETER :: B8ADOF11A = 2672 + INTEGER(IntKi), PARAMETER :: B8ADOF12A = 2673 + INTEGER(IntKi), PARAMETER :: B8ADOF13A = 2674 + INTEGER(IntKi), PARAMETER :: B8ADOF14A = 2675 + INTEGER(IntKi), PARAMETER :: B8ADOF15A = 2676 + INTEGER(IntKi), PARAMETER :: B8ADOF16A = 2677 + INTEGER(IntKi), PARAMETER :: B8ADOF17A = 2678 + INTEGER(IntKi), PARAMETER :: B8ADOF18A = 2679 + INTEGER(IntKi), PARAMETER :: B8ADOF19A = 2680 + INTEGER(IntKi), PARAMETER :: B8ADOF20A = 2681 + INTEGER(IntKi), PARAMETER :: B8ADOF21A = 2682 + INTEGER(IntKi), PARAMETER :: B8ADOF22A = 2683 + INTEGER(IntKi), PARAMETER :: B8ADOF23A = 2684 + INTEGER(IntKi), PARAMETER :: B8ADOF24A = 2685 + INTEGER(IntKi), PARAMETER :: B8ADOF25A = 2686 + INTEGER(IntKi), PARAMETER :: B8ADOF26A = 2687 + INTEGER(IntKi), PARAMETER :: B8ADOF27A = 2688 + INTEGER(IntKi), PARAMETER :: B8ADOF28A = 2689 + INTEGER(IntKi), PARAMETER :: B8ADOF29A = 2690 + INTEGER(IntKi), PARAMETER :: B8ADOF30A = 2691 + INTEGER(IntKi), PARAMETER :: B8ADOF31A = 2692 + INTEGER(IntKi), PARAMETER :: B8ADOF32A = 2693 + INTEGER(IntKi), PARAMETER :: B8ADOF33A = 2694 + INTEGER(IntKi), PARAMETER :: B8ADOF34A = 2695 + INTEGER(IntKi), PARAMETER :: B8ADOF35A = 2696 + INTEGER(IntKi), PARAMETER :: B8ADOF36A = 2697 + INTEGER(IntKi), PARAMETER :: B8ADOF37A = 2698 + INTEGER(IntKi), PARAMETER :: B8ADOF38A = 2699 + INTEGER(IntKi), PARAMETER :: B8ADOF39A = 2700 + INTEGER(IntKi), PARAMETER :: B8ADOF40A = 2701 + INTEGER(IntKi), PARAMETER :: B8ADOF41A = 2702 + INTEGER(IntKi), PARAMETER :: B8ADOF42A = 2703 + INTEGER(IntKi), PARAMETER :: B8ADOF43A = 2704 + INTEGER(IntKi), PARAMETER :: B8ADOF44A = 2705 + INTEGER(IntKi), PARAMETER :: B8ADOF45A = 2706 + INTEGER(IntKi), PARAMETER :: B8ADOF46A = 2707 + INTEGER(IntKi), PARAMETER :: B8ADOF47A = 2708 + INTEGER(IntKi), PARAMETER :: B8ADOF48A = 2709 + INTEGER(IntKi), PARAMETER :: B8ADOF49A = 2710 + INTEGER(IntKi), PARAMETER :: B8ADOF50A = 2711 + INTEGER(IntKi), PARAMETER :: B8ADOF51A = 2712 + INTEGER(IntKi), PARAMETER :: B8ADOF52A = 2713 + INTEGER(IntKi), PARAMETER :: B8ADOF53A = 2714 + INTEGER(IntKi), PARAMETER :: B8ADOF54A = 2715 + INTEGER(IntKi), PARAMETER :: B8ADOF55A = 2716 + INTEGER(IntKi), PARAMETER :: B8ADOF56A = 2717 + INTEGER(IntKi), PARAMETER :: B8ADOF57A = 2718 + INTEGER(IntKi), PARAMETER :: B8ADOF58A = 2719 + INTEGER(IntKi), PARAMETER :: B8ADOF59A = 2720 + INTEGER(IntKi), PARAMETER :: B8ADOF60A = 2721 + INTEGER(IntKi), PARAMETER :: B8ADOF61A = 2722 + INTEGER(IntKi), PARAMETER :: B8ADOF62A = 2723 + INTEGER(IntKi), PARAMETER :: B8ADOF63A = 2724 + INTEGER(IntKi), PARAMETER :: B8ADOF64A = 2725 + INTEGER(IntKi), PARAMETER :: B8ADOF65A = 2726 + INTEGER(IntKi), PARAMETER :: B8ADOF66A = 2727 + INTEGER(IntKi), PARAMETER :: B8ADOF67A = 2728 + INTEGER(IntKi), PARAMETER :: B8ADOF68A = 2729 + INTEGER(IntKi), PARAMETER :: B8ADOF69A = 2730 + INTEGER(IntKi), PARAMETER :: B8ADOF70A = 2731 + INTEGER(IntKi), PARAMETER :: B8ADOF71A = 2732 + INTEGER(IntKi), PARAMETER :: B8ADOF72A = 2733 + INTEGER(IntKi), PARAMETER :: B8ADOF73A = 2734 + INTEGER(IntKi), PARAMETER :: B8ADOF74A = 2735 + INTEGER(IntKi), PARAMETER :: B8ADOF75A = 2736 + INTEGER(IntKi), PARAMETER :: B8ADOF76A = 2737 + INTEGER(IntKi), PARAMETER :: B8ADOF77A = 2738 + INTEGER(IntKi), PARAMETER :: B8ADOF78A = 2739 + INTEGER(IntKi), PARAMETER :: B8ADOF79A = 2740 + INTEGER(IntKi), PARAMETER :: B8ADOF80A = 2741 + INTEGER(IntKi), PARAMETER :: B8ADOF81A = 2742 + INTEGER(IntKi), PARAMETER :: B8ADOF82A = 2743 + INTEGER(IntKi), PARAMETER :: B8ADOF83A = 2744 + INTEGER(IntKi), PARAMETER :: B8ADOF84A = 2745 + INTEGER(IntKi), PARAMETER :: B8ADOF85A = 2746 + INTEGER(IntKi), PARAMETER :: B8ADOF86A = 2747 + INTEGER(IntKi), PARAMETER :: B8ADOF87A = 2748 + INTEGER(IntKi), PARAMETER :: B8ADOF88A = 2749 + INTEGER(IntKi), PARAMETER :: B8ADOF89A = 2750 + INTEGER(IntKi), PARAMETER :: B8ADOF90A = 2751 + INTEGER(IntKi), PARAMETER :: B8ADOF91A = 2752 + INTEGER(IntKi), PARAMETER :: B8ADOF92A = 2753 + INTEGER(IntKi), PARAMETER :: B8ADOF93A = 2754 + INTEGER(IntKi), PARAMETER :: B8ADOF94A = 2755 + INTEGER(IntKi), PARAMETER :: B8ADOF95A = 2756 + INTEGER(IntKi), PARAMETER :: B8ADOF96A = 2757 + INTEGER(IntKi), PARAMETER :: B8ADOF97A = 2758 + INTEGER(IntKi), PARAMETER :: B8ADOF98A = 2759 + INTEGER(IntKi), PARAMETER :: B8ADOF99A = 2760 + INTEGER(IntKi), PARAMETER :: B9ADOF1A = 2761 + INTEGER(IntKi), PARAMETER :: B9ADOF2A = 2762 + INTEGER(IntKi), PARAMETER :: B9ADOF3A = 2763 + INTEGER(IntKi), PARAMETER :: B9ADOF4A = 2764 + INTEGER(IntKi), PARAMETER :: B9ADOF5A = 2765 + INTEGER(IntKi), PARAMETER :: B9ADOF6A = 2766 + INTEGER(IntKi), PARAMETER :: B9ADOF7A = 2767 + INTEGER(IntKi), PARAMETER :: B9ADOF8A = 2768 + INTEGER(IntKi), PARAMETER :: B9ADOF9A = 2769 + INTEGER(IntKi), PARAMETER :: B9ADOF10A = 2770 + INTEGER(IntKi), PARAMETER :: B9ADOF11A = 2771 + INTEGER(IntKi), PARAMETER :: B9ADOF12A = 2772 + INTEGER(IntKi), PARAMETER :: B9ADOF13A = 2773 + INTEGER(IntKi), PARAMETER :: B9ADOF14A = 2774 + INTEGER(IntKi), PARAMETER :: B9ADOF15A = 2775 + INTEGER(IntKi), PARAMETER :: B9ADOF16A = 2776 + INTEGER(IntKi), PARAMETER :: B9ADOF17A = 2777 + INTEGER(IntKi), PARAMETER :: B9ADOF18A = 2778 + INTEGER(IntKi), PARAMETER :: B9ADOF19A = 2779 + INTEGER(IntKi), PARAMETER :: B9ADOF20A = 2780 + INTEGER(IntKi), PARAMETER :: B9ADOF21A = 2781 + INTEGER(IntKi), PARAMETER :: B9ADOF22A = 2782 + INTEGER(IntKi), PARAMETER :: B9ADOF23A = 2783 + INTEGER(IntKi), PARAMETER :: B9ADOF24A = 2784 + INTEGER(IntKi), PARAMETER :: B9ADOF25A = 2785 + INTEGER(IntKi), PARAMETER :: B9ADOF26A = 2786 + INTEGER(IntKi), PARAMETER :: B9ADOF27A = 2787 + INTEGER(IntKi), PARAMETER :: B9ADOF28A = 2788 + INTEGER(IntKi), PARAMETER :: B9ADOF29A = 2789 + INTEGER(IntKi), PARAMETER :: B9ADOF30A = 2790 + INTEGER(IntKi), PARAMETER :: B9ADOF31A = 2791 + INTEGER(IntKi), PARAMETER :: B9ADOF32A = 2792 + INTEGER(IntKi), PARAMETER :: B9ADOF33A = 2793 + INTEGER(IntKi), PARAMETER :: B9ADOF34A = 2794 + INTEGER(IntKi), PARAMETER :: B9ADOF35A = 2795 + INTEGER(IntKi), PARAMETER :: B9ADOF36A = 2796 + INTEGER(IntKi), PARAMETER :: B9ADOF37A = 2797 + INTEGER(IntKi), PARAMETER :: B9ADOF38A = 2798 + INTEGER(IntKi), PARAMETER :: B9ADOF39A = 2799 + INTEGER(IntKi), PARAMETER :: B9ADOF40A = 2800 + INTEGER(IntKi), PARAMETER :: B9ADOF41A = 2801 + INTEGER(IntKi), PARAMETER :: B9ADOF42A = 2802 + INTEGER(IntKi), PARAMETER :: B9ADOF43A = 2803 + INTEGER(IntKi), PARAMETER :: B9ADOF44A = 2804 + INTEGER(IntKi), PARAMETER :: B9ADOF45A = 2805 + INTEGER(IntKi), PARAMETER :: B9ADOF46A = 2806 + INTEGER(IntKi), PARAMETER :: B9ADOF47A = 2807 + INTEGER(IntKi), PARAMETER :: B9ADOF48A = 2808 + INTEGER(IntKi), PARAMETER :: B9ADOF49A = 2809 + INTEGER(IntKi), PARAMETER :: B9ADOF50A = 2810 + INTEGER(IntKi), PARAMETER :: B9ADOF51A = 2811 + INTEGER(IntKi), PARAMETER :: B9ADOF52A = 2812 + INTEGER(IntKi), PARAMETER :: B9ADOF53A = 2813 + INTEGER(IntKi), PARAMETER :: B9ADOF54A = 2814 + INTEGER(IntKi), PARAMETER :: B9ADOF55A = 2815 + INTEGER(IntKi), PARAMETER :: B9ADOF56A = 2816 + INTEGER(IntKi), PARAMETER :: B9ADOF57A = 2817 + INTEGER(IntKi), PARAMETER :: B9ADOF58A = 2818 + INTEGER(IntKi), PARAMETER :: B9ADOF59A = 2819 + INTEGER(IntKi), PARAMETER :: B9ADOF60A = 2820 + INTEGER(IntKi), PARAMETER :: B9ADOF61A = 2821 + INTEGER(IntKi), PARAMETER :: B9ADOF62A = 2822 + INTEGER(IntKi), PARAMETER :: B9ADOF63A = 2823 + INTEGER(IntKi), PARAMETER :: B9ADOF64A = 2824 + INTEGER(IntKi), PARAMETER :: B9ADOF65A = 2825 + INTEGER(IntKi), PARAMETER :: B9ADOF66A = 2826 + INTEGER(IntKi), PARAMETER :: B9ADOF67A = 2827 + INTEGER(IntKi), PARAMETER :: B9ADOF68A = 2828 + INTEGER(IntKi), PARAMETER :: B9ADOF69A = 2829 + INTEGER(IntKi), PARAMETER :: B9ADOF70A = 2830 + INTEGER(IntKi), PARAMETER :: B9ADOF71A = 2831 + INTEGER(IntKi), PARAMETER :: B9ADOF72A = 2832 + INTEGER(IntKi), PARAMETER :: B9ADOF73A = 2833 + INTEGER(IntKi), PARAMETER :: B9ADOF74A = 2834 + INTEGER(IntKi), PARAMETER :: B9ADOF75A = 2835 + INTEGER(IntKi), PARAMETER :: B9ADOF76A = 2836 + INTEGER(IntKi), PARAMETER :: B9ADOF77A = 2837 + INTEGER(IntKi), PARAMETER :: B9ADOF78A = 2838 + INTEGER(IntKi), PARAMETER :: B9ADOF79A = 2839 + INTEGER(IntKi), PARAMETER :: B9ADOF80A = 2840 + INTEGER(IntKi), PARAMETER :: B9ADOF81A = 2841 + INTEGER(IntKi), PARAMETER :: B9ADOF82A = 2842 + INTEGER(IntKi), PARAMETER :: B9ADOF83A = 2843 + INTEGER(IntKi), PARAMETER :: B9ADOF84A = 2844 + INTEGER(IntKi), PARAMETER :: B9ADOF85A = 2845 + INTEGER(IntKi), PARAMETER :: B9ADOF86A = 2846 + INTEGER(IntKi), PARAMETER :: B9ADOF87A = 2847 + INTEGER(IntKi), PARAMETER :: B9ADOF88A = 2848 + INTEGER(IntKi), PARAMETER :: B9ADOF89A = 2849 + INTEGER(IntKi), PARAMETER :: B9ADOF90A = 2850 + INTEGER(IntKi), PARAMETER :: B9ADOF91A = 2851 + INTEGER(IntKi), PARAMETER :: B9ADOF92A = 2852 + INTEGER(IntKi), PARAMETER :: B9ADOF93A = 2853 + INTEGER(IntKi), PARAMETER :: B9ADOF94A = 2854 + INTEGER(IntKi), PARAMETER :: B9ADOF95A = 2855 + INTEGER(IntKi), PARAMETER :: B9ADOF96A = 2856 + INTEGER(IntKi), PARAMETER :: B9ADOF97A = 2857 + INTEGER(IntKi), PARAMETER :: B9ADOF98A = 2858 + INTEGER(IntKi), PARAMETER :: B9ADOF99A = 2859 ! WAMIT Body Forces: - INTEGER(IntKi), PARAMETER :: B1AddFxi = 187 - INTEGER(IntKi), PARAMETER :: B1AddFyi = 188 - INTEGER(IntKi), PARAMETER :: B1AddFzi = 189 - INTEGER(IntKi), PARAMETER :: B1AddMxi = 190 - INTEGER(IntKi), PARAMETER :: B1AddMyi = 191 - INTEGER(IntKi), PARAMETER :: B1AddMzi = 192 - INTEGER(IntKi), PARAMETER :: B1WvsF1xi = 193 - INTEGER(IntKi), PARAMETER :: B1WvsF1yi = 194 - INTEGER(IntKi), PARAMETER :: B1WvsF1zi = 195 - INTEGER(IntKi), PARAMETER :: B1WvsM1xi = 196 - INTEGER(IntKi), PARAMETER :: B1WvsM1yi = 197 - INTEGER(IntKi), PARAMETER :: B1WvsM1zi = 198 - INTEGER(IntKi), PARAMETER :: B1WvsFxi = 199 - INTEGER(IntKi), PARAMETER :: B1WvsFyi = 200 - INTEGER(IntKi), PARAMETER :: B1WvsFzi = 201 - INTEGER(IntKi), PARAMETER :: B1WvsMxi = 202 - INTEGER(IntKi), PARAMETER :: B1WvsMyi = 203 - INTEGER(IntKi), PARAMETER :: B1WvsMzi = 204 - INTEGER(IntKi), PARAMETER :: B1HdSFxi = 205 - INTEGER(IntKi), PARAMETER :: B1HdSFyi = 206 - INTEGER(IntKi), PARAMETER :: B1HdSFzi = 207 - INTEGER(IntKi), PARAMETER :: B1HdSMxi = 208 - INTEGER(IntKi), PARAMETER :: B1HdSMyi = 209 - INTEGER(IntKi), PARAMETER :: B1HdSMzi = 210 - INTEGER(IntKi), PARAMETER :: B1RdtFxi = 211 - INTEGER(IntKi), PARAMETER :: B1RdtFyi = 212 - INTEGER(IntKi), PARAMETER :: B1RdtFzi = 213 - INTEGER(IntKi), PARAMETER :: B1RdtMxi = 214 - INTEGER(IntKi), PARAMETER :: B1RdtMyi = 215 - INTEGER(IntKi), PARAMETER :: B1RdtMzi = 216 - INTEGER(IntKi), PARAMETER :: B2AddFxi = 217 - INTEGER(IntKi), PARAMETER :: B2AddFyi = 218 - INTEGER(IntKi), PARAMETER :: B2AddFzi = 219 - INTEGER(IntKi), PARAMETER :: B2AddMxi = 220 - INTEGER(IntKi), PARAMETER :: B2AddMyi = 221 - INTEGER(IntKi), PARAMETER :: B2AddMzi = 222 - INTEGER(IntKi), PARAMETER :: B2WvsF1xi = 223 - INTEGER(IntKi), PARAMETER :: B2WvsF1yi = 224 - INTEGER(IntKi), PARAMETER :: B2WvsF1zi = 225 - INTEGER(IntKi), PARAMETER :: B2WvsM1xi = 226 - INTEGER(IntKi), PARAMETER :: B2WvsM1yi = 227 - INTEGER(IntKi), PARAMETER :: B2WvsM1zi = 228 - INTEGER(IntKi), PARAMETER :: B2WvsFxi = 229 - INTEGER(IntKi), PARAMETER :: B2WvsFyi = 230 - INTEGER(IntKi), PARAMETER :: B2WvsFzi = 231 - INTEGER(IntKi), PARAMETER :: B2WvsMxi = 232 - INTEGER(IntKi), PARAMETER :: B2WvsMyi = 233 - INTEGER(IntKi), PARAMETER :: B2WvsMzi = 234 - INTEGER(IntKi), PARAMETER :: B2HdSFxi = 235 - INTEGER(IntKi), PARAMETER :: B2HdSFyi = 236 - INTEGER(IntKi), PARAMETER :: B2HdSFzi = 237 - INTEGER(IntKi), PARAMETER :: B2HdSMxi = 238 - INTEGER(IntKi), PARAMETER :: B2HdSMyi = 239 - INTEGER(IntKi), PARAMETER :: B2HdSMzi = 240 - INTEGER(IntKi), PARAMETER :: B2RdtFxi = 241 - INTEGER(IntKi), PARAMETER :: B2RdtFyi = 242 - INTEGER(IntKi), PARAMETER :: B2RdtFzi = 243 - INTEGER(IntKi), PARAMETER :: B2RdtMxi = 244 - INTEGER(IntKi), PARAMETER :: B2RdtMyi = 245 - INTEGER(IntKi), PARAMETER :: B2RdtMzi = 246 - INTEGER(IntKi), PARAMETER :: B3AddFxi = 247 - INTEGER(IntKi), PARAMETER :: B3AddFyi = 248 - INTEGER(IntKi), PARAMETER :: B3AddFzi = 249 - INTEGER(IntKi), PARAMETER :: B3AddMxi = 250 - INTEGER(IntKi), PARAMETER :: B3AddMyi = 251 - INTEGER(IntKi), PARAMETER :: B3AddMzi = 252 - INTEGER(IntKi), PARAMETER :: B3WvsF1xi = 253 - INTEGER(IntKi), PARAMETER :: B3WvsF1yi = 254 - INTEGER(IntKi), PARAMETER :: B3WvsF1zi = 255 - INTEGER(IntKi), PARAMETER :: B3WvsM1xi = 256 - INTEGER(IntKi), PARAMETER :: B3WvsM1yi = 257 - INTEGER(IntKi), PARAMETER :: B3WvsM1zi = 258 - INTEGER(IntKi), PARAMETER :: B3WvsFxi = 259 - INTEGER(IntKi), PARAMETER :: B3WvsFyi = 260 - INTEGER(IntKi), PARAMETER :: B3WvsFzi = 261 - INTEGER(IntKi), PARAMETER :: B3WvsMxi = 262 - INTEGER(IntKi), PARAMETER :: B3WvsMyi = 263 - INTEGER(IntKi), PARAMETER :: B3WvsMzi = 264 - INTEGER(IntKi), PARAMETER :: B3HdSFxi = 265 - INTEGER(IntKi), PARAMETER :: B3HdSFyi = 266 - INTEGER(IntKi), PARAMETER :: B3HdSFzi = 267 - INTEGER(IntKi), PARAMETER :: B3HdSMxi = 268 - INTEGER(IntKi), PARAMETER :: B3HdSMyi = 269 - INTEGER(IntKi), PARAMETER :: B3HdSMzi = 270 - INTEGER(IntKi), PARAMETER :: B3RdtFxi = 271 - INTEGER(IntKi), PARAMETER :: B3RdtFyi = 272 - INTEGER(IntKi), PARAMETER :: B3RdtFzi = 273 - INTEGER(IntKi), PARAMETER :: B3RdtMxi = 274 - INTEGER(IntKi), PARAMETER :: B3RdtMyi = 275 - INTEGER(IntKi), PARAMETER :: B3RdtMzi = 276 - INTEGER(IntKi), PARAMETER :: B4AddFxi = 277 - INTEGER(IntKi), PARAMETER :: B4AddFyi = 278 - INTEGER(IntKi), PARAMETER :: B4AddFzi = 279 - INTEGER(IntKi), PARAMETER :: B4AddMxi = 280 - INTEGER(IntKi), PARAMETER :: B4AddMyi = 281 - INTEGER(IntKi), PARAMETER :: B4AddMzi = 282 - INTEGER(IntKi), PARAMETER :: B4WvsF1xi = 283 - INTEGER(IntKi), PARAMETER :: B4WvsF1yi = 284 - INTEGER(IntKi), PARAMETER :: B4WvsF1zi = 285 - INTEGER(IntKi), PARAMETER :: B4WvsM1xi = 286 - INTEGER(IntKi), PARAMETER :: B4WvsM1yi = 287 - INTEGER(IntKi), PARAMETER :: B4WvsM1zi = 288 - INTEGER(IntKi), PARAMETER :: B4WvsFxi = 289 - INTEGER(IntKi), PARAMETER :: B4WvsFyi = 290 - INTEGER(IntKi), PARAMETER :: B4WvsFzi = 291 - INTEGER(IntKi), PARAMETER :: B4WvsMxi = 292 - INTEGER(IntKi), PARAMETER :: B4WvsMyi = 293 - INTEGER(IntKi), PARAMETER :: B4WvsMzi = 294 - INTEGER(IntKi), PARAMETER :: B4HdSFxi = 295 - INTEGER(IntKi), PARAMETER :: B4HdSFyi = 296 - INTEGER(IntKi), PARAMETER :: B4HdSFzi = 297 - INTEGER(IntKi), PARAMETER :: B4HdSMxi = 298 - INTEGER(IntKi), PARAMETER :: B4HdSMyi = 299 - INTEGER(IntKi), PARAMETER :: B4HdSMzi = 300 - INTEGER(IntKi), PARAMETER :: B4RdtFxi = 301 - INTEGER(IntKi), PARAMETER :: B4RdtFyi = 302 - INTEGER(IntKi), PARAMETER :: B4RdtFzi = 303 - INTEGER(IntKi), PARAMETER :: B4RdtMxi = 304 - INTEGER(IntKi), PARAMETER :: B4RdtMyi = 305 - INTEGER(IntKi), PARAMETER :: B4RdtMzi = 306 - INTEGER(IntKi), PARAMETER :: B5AddFxi = 307 - INTEGER(IntKi), PARAMETER :: B5AddFyi = 308 - INTEGER(IntKi), PARAMETER :: B5AddFzi = 309 - INTEGER(IntKi), PARAMETER :: B5AddMxi = 310 - INTEGER(IntKi), PARAMETER :: B5AddMyi = 311 - INTEGER(IntKi), PARAMETER :: B5AddMzi = 312 - INTEGER(IntKi), PARAMETER :: B5WvsF1xi = 313 - INTEGER(IntKi), PARAMETER :: B5WvsF1yi = 314 - INTEGER(IntKi), PARAMETER :: B5WvsF1zi = 315 - INTEGER(IntKi), PARAMETER :: B5WvsM1xi = 316 - INTEGER(IntKi), PARAMETER :: B5WvsM1yi = 317 - INTEGER(IntKi), PARAMETER :: B5WvsM1zi = 318 - INTEGER(IntKi), PARAMETER :: B5WvsFxi = 319 - INTEGER(IntKi), PARAMETER :: B5WvsFyi = 320 - INTEGER(IntKi), PARAMETER :: B5WvsFzi = 321 - INTEGER(IntKi), PARAMETER :: B5WvsMxi = 322 - INTEGER(IntKi), PARAMETER :: B5WvsMyi = 323 - INTEGER(IntKi), PARAMETER :: B5WvsMzi = 324 - INTEGER(IntKi), PARAMETER :: B5HdSFxi = 325 - INTEGER(IntKi), PARAMETER :: B5HdSFyi = 326 - INTEGER(IntKi), PARAMETER :: B5HdSFzi = 327 - INTEGER(IntKi), PARAMETER :: B5HdSMxi = 328 - INTEGER(IntKi), PARAMETER :: B5HdSMyi = 329 - INTEGER(IntKi), PARAMETER :: B5HdSMzi = 330 - INTEGER(IntKi), PARAMETER :: B5RdtFxi = 331 - INTEGER(IntKi), PARAMETER :: B5RdtFyi = 332 - INTEGER(IntKi), PARAMETER :: B5RdtFzi = 333 - INTEGER(IntKi), PARAMETER :: B5RdtMxi = 334 - INTEGER(IntKi), PARAMETER :: B5RdtMyi = 335 - INTEGER(IntKi), PARAMETER :: B5RdtMzi = 336 - INTEGER(IntKi), PARAMETER :: B6AddFxi = 337 - INTEGER(IntKi), PARAMETER :: B6AddFyi = 338 - INTEGER(IntKi), PARAMETER :: B6AddFzi = 339 - INTEGER(IntKi), PARAMETER :: B6AddMxi = 340 - INTEGER(IntKi), PARAMETER :: B6AddMyi = 341 - INTEGER(IntKi), PARAMETER :: B6AddMzi = 342 - INTEGER(IntKi), PARAMETER :: B6WvsF1xi = 343 - INTEGER(IntKi), PARAMETER :: B6WvsF1yi = 344 - INTEGER(IntKi), PARAMETER :: B6WvsF1zi = 345 - INTEGER(IntKi), PARAMETER :: B6WvsM1xi = 346 - INTEGER(IntKi), PARAMETER :: B6WvsM1yi = 347 - INTEGER(IntKi), PARAMETER :: B6WvsM1zi = 348 - INTEGER(IntKi), PARAMETER :: B6WvsFxi = 349 - INTEGER(IntKi), PARAMETER :: B6WvsFyi = 350 - INTEGER(IntKi), PARAMETER :: B6WvsFzi = 351 - INTEGER(IntKi), PARAMETER :: B6WvsMxi = 352 - INTEGER(IntKi), PARAMETER :: B6WvsMyi = 353 - INTEGER(IntKi), PARAMETER :: B6WvsMzi = 354 - INTEGER(IntKi), PARAMETER :: B6HdSFxi = 355 - INTEGER(IntKi), PARAMETER :: B6HdSFyi = 356 - INTEGER(IntKi), PARAMETER :: B6HdSFzi = 357 - INTEGER(IntKi), PARAMETER :: B6HdSMxi = 358 - INTEGER(IntKi), PARAMETER :: B6HdSMyi = 359 - INTEGER(IntKi), PARAMETER :: B6HdSMzi = 360 - INTEGER(IntKi), PARAMETER :: B6RdtFxi = 361 - INTEGER(IntKi), PARAMETER :: B6RdtFyi = 362 - INTEGER(IntKi), PARAMETER :: B6RdtFzi = 363 - INTEGER(IntKi), PARAMETER :: B6RdtMxi = 364 - INTEGER(IntKi), PARAMETER :: B6RdtMyi = 365 - INTEGER(IntKi), PARAMETER :: B6RdtMzi = 366 - INTEGER(IntKi), PARAMETER :: B7AddFxi = 367 - INTEGER(IntKi), PARAMETER :: B7AddFyi = 368 - INTEGER(IntKi), PARAMETER :: B7AddFzi = 369 - INTEGER(IntKi), PARAMETER :: B7AddMxi = 370 - INTEGER(IntKi), PARAMETER :: B7AddMyi = 371 - INTEGER(IntKi), PARAMETER :: B7AddMzi = 372 - INTEGER(IntKi), PARAMETER :: B7WvsF1xi = 373 - INTEGER(IntKi), PARAMETER :: B7WvsF1yi = 374 - INTEGER(IntKi), PARAMETER :: B7WvsF1zi = 375 - INTEGER(IntKi), PARAMETER :: B7WvsM1xi = 376 - INTEGER(IntKi), PARAMETER :: B7WvsM1yi = 377 - INTEGER(IntKi), PARAMETER :: B7WvsM1zi = 378 - INTEGER(IntKi), PARAMETER :: B7WvsFxi = 379 - INTEGER(IntKi), PARAMETER :: B7WvsFyi = 380 - INTEGER(IntKi), PARAMETER :: B7WvsFzi = 381 - INTEGER(IntKi), PARAMETER :: B7WvsMxi = 382 - INTEGER(IntKi), PARAMETER :: B7WvsMyi = 383 - INTEGER(IntKi), PARAMETER :: B7WvsMzi = 384 - INTEGER(IntKi), PARAMETER :: B7HdSFxi = 385 - INTEGER(IntKi), PARAMETER :: B7HdSFyi = 386 - INTEGER(IntKi), PARAMETER :: B7HdSFzi = 387 - INTEGER(IntKi), PARAMETER :: B7HdSMxi = 388 - INTEGER(IntKi), PARAMETER :: B7HdSMyi = 389 - INTEGER(IntKi), PARAMETER :: B7HdSMzi = 390 - INTEGER(IntKi), PARAMETER :: B7RdtFxi = 391 - INTEGER(IntKi), PARAMETER :: B7RdtFyi = 392 - INTEGER(IntKi), PARAMETER :: B7RdtFzi = 393 - INTEGER(IntKi), PARAMETER :: B7RdtMxi = 394 - INTEGER(IntKi), PARAMETER :: B7RdtMyi = 395 - INTEGER(IntKi), PARAMETER :: B7RdtMzi = 396 - INTEGER(IntKi), PARAMETER :: B8AddFxi = 397 - INTEGER(IntKi), PARAMETER :: B8AddFyi = 398 - INTEGER(IntKi), PARAMETER :: B8AddFzi = 399 - INTEGER(IntKi), PARAMETER :: B8AddMxi = 400 - INTEGER(IntKi), PARAMETER :: B8AddMyi = 401 - INTEGER(IntKi), PARAMETER :: B8AddMzi = 402 - INTEGER(IntKi), PARAMETER :: B8WvsF1xi = 403 - INTEGER(IntKi), PARAMETER :: B8WvsF1yi = 404 - INTEGER(IntKi), PARAMETER :: B8WvsF1zi = 405 - INTEGER(IntKi), PARAMETER :: B8WvsM1xi = 406 - INTEGER(IntKi), PARAMETER :: B8WvsM1yi = 407 - INTEGER(IntKi), PARAMETER :: B8WvsM1zi = 408 - INTEGER(IntKi), PARAMETER :: B8WvsFxi = 409 - INTEGER(IntKi), PARAMETER :: B8WvsFyi = 410 - INTEGER(IntKi), PARAMETER :: B8WvsFzi = 411 - INTEGER(IntKi), PARAMETER :: B8WvsMxi = 412 - INTEGER(IntKi), PARAMETER :: B8WvsMyi = 413 - INTEGER(IntKi), PARAMETER :: B8WvsMzi = 414 - INTEGER(IntKi), PARAMETER :: B8HdSFxi = 415 - INTEGER(IntKi), PARAMETER :: B8HdSFyi = 416 - INTEGER(IntKi), PARAMETER :: B8HdSFzi = 417 - INTEGER(IntKi), PARAMETER :: B8HdSMxi = 418 - INTEGER(IntKi), PARAMETER :: B8HdSMyi = 419 - INTEGER(IntKi), PARAMETER :: B8HdSMzi = 420 - INTEGER(IntKi), PARAMETER :: B8RdtFxi = 421 - INTEGER(IntKi), PARAMETER :: B8RdtFyi = 422 - INTEGER(IntKi), PARAMETER :: B8RdtFzi = 423 - INTEGER(IntKi), PARAMETER :: B8RdtMxi = 424 - INTEGER(IntKi), PARAMETER :: B8RdtMyi = 425 - INTEGER(IntKi), PARAMETER :: B8RdtMzi = 426 - INTEGER(IntKi), PARAMETER :: B9AddFxi = 427 - INTEGER(IntKi), PARAMETER :: B9AddFyi = 428 - INTEGER(IntKi), PARAMETER :: B9AddFzi = 429 - INTEGER(IntKi), PARAMETER :: B9AddMxi = 430 - INTEGER(IntKi), PARAMETER :: B9AddMyi = 431 - INTEGER(IntKi), PARAMETER :: B9AddMzi = 432 - INTEGER(IntKi), PARAMETER :: B9WvsF1xi = 433 - INTEGER(IntKi), PARAMETER :: B9WvsF1yi = 434 - INTEGER(IntKi), PARAMETER :: B9WvsF1zi = 435 - INTEGER(IntKi), PARAMETER :: B9WvsM1xi = 436 - INTEGER(IntKi), PARAMETER :: B9WvsM1yi = 437 - INTEGER(IntKi), PARAMETER :: B9WvsM1zi = 438 - INTEGER(IntKi), PARAMETER :: B9WvsFxi = 439 - INTEGER(IntKi), PARAMETER :: B9WvsFyi = 440 - INTEGER(IntKi), PARAMETER :: B9WvsFzi = 441 - INTEGER(IntKi), PARAMETER :: B9WvsMxi = 442 - INTEGER(IntKi), PARAMETER :: B9WvsMyi = 443 - INTEGER(IntKi), PARAMETER :: B9WvsMzi = 444 - INTEGER(IntKi), PARAMETER :: B9HdSFxi = 445 - INTEGER(IntKi), PARAMETER :: B9HdSFyi = 446 - INTEGER(IntKi), PARAMETER :: B9HdSFzi = 447 - INTEGER(IntKi), PARAMETER :: B9HdSMxi = 448 - INTEGER(IntKi), PARAMETER :: B9HdSMyi = 449 - INTEGER(IntKi), PARAMETER :: B9HdSMzi = 450 - INTEGER(IntKi), PARAMETER :: B9RdtFxi = 451 - INTEGER(IntKi), PARAMETER :: B9RdtFyi = 452 - INTEGER(IntKi), PARAMETER :: B9RdtFzi = 453 - INTEGER(IntKi), PARAMETER :: B9RdtMxi = 454 - INTEGER(IntKi), PARAMETER :: B9RdtMyi = 455 - INTEGER(IntKi), PARAMETER :: B9RdtMzi = 456 - INTEGER(IntKi), PARAMETER :: B1WvsF2xi = 457 - INTEGER(IntKi), PARAMETER :: B1WvsF2yi = 458 - INTEGER(IntKi), PARAMETER :: B1WvsF2zi = 459 - INTEGER(IntKi), PARAMETER :: B1WvsM2xi = 460 - INTEGER(IntKi), PARAMETER :: B1WvsM2yi = 461 - INTEGER(IntKi), PARAMETER :: B1WvsM2zi = 462 - INTEGER(IntKi), PARAMETER :: B2WvsF2xi = 463 - INTEGER(IntKi), PARAMETER :: B2WvsF2yi = 464 - INTEGER(IntKi), PARAMETER :: B2WvsF2zi = 465 - INTEGER(IntKi), PARAMETER :: B2WvsM2xi = 466 - INTEGER(IntKi), PARAMETER :: B2WvsM2yi = 467 - INTEGER(IntKi), PARAMETER :: B2WvsM2zi = 468 - INTEGER(IntKi), PARAMETER :: B3WvsF2xi = 469 - INTEGER(IntKi), PARAMETER :: B3WvsF2yi = 470 - INTEGER(IntKi), PARAMETER :: B3WvsF2zi = 471 - INTEGER(IntKi), PARAMETER :: B3WvsM2xi = 472 - INTEGER(IntKi), PARAMETER :: B3WvsM2yi = 473 - INTEGER(IntKi), PARAMETER :: B3WvsM2zi = 474 - INTEGER(IntKi), PARAMETER :: B4WvsF2xi = 475 - INTEGER(IntKi), PARAMETER :: B4WvsF2yi = 476 - INTEGER(IntKi), PARAMETER :: B4WvsF2zi = 477 - INTEGER(IntKi), PARAMETER :: B4WvsM2xi = 478 - INTEGER(IntKi), PARAMETER :: B4WvsM2yi = 479 - INTEGER(IntKi), PARAMETER :: B4WvsM2zi = 480 - INTEGER(IntKi), PARAMETER :: B5WvsF2xi = 481 - INTEGER(IntKi), PARAMETER :: B5WvsF2yi = 482 - INTEGER(IntKi), PARAMETER :: B5WvsF2zi = 483 - INTEGER(IntKi), PARAMETER :: B5WvsM2xi = 484 - INTEGER(IntKi), PARAMETER :: B5WvsM2yi = 485 - INTEGER(IntKi), PARAMETER :: B5WvsM2zi = 486 - INTEGER(IntKi), PARAMETER :: B6WvsF2xi = 487 - INTEGER(IntKi), PARAMETER :: B6WvsF2yi = 488 - INTEGER(IntKi), PARAMETER :: B6WvsF2zi = 489 - INTEGER(IntKi), PARAMETER :: B6WvsM2xi = 490 - INTEGER(IntKi), PARAMETER :: B6WvsM2yi = 491 - INTEGER(IntKi), PARAMETER :: B6WvsM2zi = 492 - INTEGER(IntKi), PARAMETER :: B7WvsF2xi = 493 - INTEGER(IntKi), PARAMETER :: B7WvsF2yi = 494 - INTEGER(IntKi), PARAMETER :: B7WvsF2zi = 495 - INTEGER(IntKi), PARAMETER :: B7WvsM2xi = 496 - INTEGER(IntKi), PARAMETER :: B7WvsM2yi = 497 - INTEGER(IntKi), PARAMETER :: B7WvsM2zi = 498 - INTEGER(IntKi), PARAMETER :: B8WvsF2xi = 499 - INTEGER(IntKi), PARAMETER :: B8WvsF2yi = 500 - INTEGER(IntKi), PARAMETER :: B8WvsF2zi = 501 - INTEGER(IntKi), PARAMETER :: B8WvsM2xi = 502 - INTEGER(IntKi), PARAMETER :: B8WvsM2yi = 503 - INTEGER(IntKi), PARAMETER :: B8WvsM2zi = 504 - INTEGER(IntKi), PARAMETER :: B9WvsF2xi = 505 - INTEGER(IntKi), PARAMETER :: B9WvsF2yi = 506 - INTEGER(IntKi), PARAMETER :: B9WvsF2zi = 507 - INTEGER(IntKi), PARAMETER :: B9WvsM2xi = 508 - INTEGER(IntKi), PARAMETER :: B9WvsM2yi = 509 - INTEGER(IntKi), PARAMETER :: B9WvsM2zi = 510 + INTEGER(IntKi), PARAMETER :: B1AddFxi = 2860 + INTEGER(IntKi), PARAMETER :: B1AddFyi = 2861 + INTEGER(IntKi), PARAMETER :: B1AddFzi = 2862 + INTEGER(IntKi), PARAMETER :: B1AddMxi = 2863 + INTEGER(IntKi), PARAMETER :: B1AddMyi = 2864 + INTEGER(IntKi), PARAMETER :: B1AddMzi = 2865 + INTEGER(IntKi), PARAMETER :: B1WvsF1xi = 2866 + INTEGER(IntKi), PARAMETER :: B1WvsF1yi = 2867 + INTEGER(IntKi), PARAMETER :: B1WvsF1zi = 2868 + INTEGER(IntKi), PARAMETER :: B1WvsM1xi = 2869 + INTEGER(IntKi), PARAMETER :: B1WvsM1yi = 2870 + INTEGER(IntKi), PARAMETER :: B1WvsM1zi = 2871 + INTEGER(IntKi), PARAMETER :: B1WvsFxi = 2872 + INTEGER(IntKi), PARAMETER :: B1WvsFyi = 2873 + INTEGER(IntKi), PARAMETER :: B1WvsFzi = 2874 + INTEGER(IntKi), PARAMETER :: B1WvsMxi = 2875 + INTEGER(IntKi), PARAMETER :: B1WvsMyi = 2876 + INTEGER(IntKi), PARAMETER :: B1WvsMzi = 2877 + INTEGER(IntKi), PARAMETER :: B1HdSFxi = 2878 + INTEGER(IntKi), PARAMETER :: B1HdSFyi = 2879 + INTEGER(IntKi), PARAMETER :: B1HdSFzi = 2880 + INTEGER(IntKi), PARAMETER :: B1HdSMxi = 2881 + INTEGER(IntKi), PARAMETER :: B1HdSMyi = 2882 + INTEGER(IntKi), PARAMETER :: B1HdSMzi = 2883 + INTEGER(IntKi), PARAMETER :: B1RdtFxi = 2884 + INTEGER(IntKi), PARAMETER :: B1RdtFyi = 2885 + INTEGER(IntKi), PARAMETER :: B1RdtFzi = 2886 + INTEGER(IntKi), PARAMETER :: B1RdtMxi = 2887 + INTEGER(IntKi), PARAMETER :: B1RdtMyi = 2888 + INTEGER(IntKi), PARAMETER :: B1RdtMzi = 2889 + INTEGER(IntKi), PARAMETER :: B2AddFxi = 2890 + INTEGER(IntKi), PARAMETER :: B2AddFyi = 2891 + INTEGER(IntKi), PARAMETER :: B2AddFzi = 2892 + INTEGER(IntKi), PARAMETER :: B2AddMxi = 2893 + INTEGER(IntKi), PARAMETER :: B2AddMyi = 2894 + INTEGER(IntKi), PARAMETER :: B2AddMzi = 2895 + INTEGER(IntKi), PARAMETER :: B2WvsF1xi = 2896 + INTEGER(IntKi), PARAMETER :: B2WvsF1yi = 2897 + INTEGER(IntKi), PARAMETER :: B2WvsF1zi = 2898 + INTEGER(IntKi), PARAMETER :: B2WvsM1xi = 2899 + INTEGER(IntKi), PARAMETER :: B2WvsM1yi = 2900 + INTEGER(IntKi), PARAMETER :: B2WvsM1zi = 2901 + INTEGER(IntKi), PARAMETER :: B2WvsFxi = 2902 + INTEGER(IntKi), PARAMETER :: B2WvsFyi = 2903 + INTEGER(IntKi), PARAMETER :: B2WvsFzi = 2904 + INTEGER(IntKi), PARAMETER :: B2WvsMxi = 2905 + INTEGER(IntKi), PARAMETER :: B2WvsMyi = 2906 + INTEGER(IntKi), PARAMETER :: B2WvsMzi = 2907 + INTEGER(IntKi), PARAMETER :: B2HdSFxi = 2908 + INTEGER(IntKi), PARAMETER :: B2HdSFyi = 2909 + INTEGER(IntKi), PARAMETER :: B2HdSFzi = 2910 + INTEGER(IntKi), PARAMETER :: B2HdSMxi = 2911 + INTEGER(IntKi), PARAMETER :: B2HdSMyi = 2912 + INTEGER(IntKi), PARAMETER :: B2HdSMzi = 2913 + INTEGER(IntKi), PARAMETER :: B2RdtFxi = 2914 + INTEGER(IntKi), PARAMETER :: B2RdtFyi = 2915 + INTEGER(IntKi), PARAMETER :: B2RdtFzi = 2916 + INTEGER(IntKi), PARAMETER :: B2RdtMxi = 2917 + INTEGER(IntKi), PARAMETER :: B2RdtMyi = 2918 + INTEGER(IntKi), PARAMETER :: B2RdtMzi = 2919 + INTEGER(IntKi), PARAMETER :: B3AddFxi = 2920 + INTEGER(IntKi), PARAMETER :: B3AddFyi = 2921 + INTEGER(IntKi), PARAMETER :: B3AddFzi = 2922 + INTEGER(IntKi), PARAMETER :: B3AddMxi = 2923 + INTEGER(IntKi), PARAMETER :: B3AddMyi = 2924 + INTEGER(IntKi), PARAMETER :: B3AddMzi = 2925 + INTEGER(IntKi), PARAMETER :: B3WvsF1xi = 2926 + INTEGER(IntKi), PARAMETER :: B3WvsF1yi = 2927 + INTEGER(IntKi), PARAMETER :: B3WvsF1zi = 2928 + INTEGER(IntKi), PARAMETER :: B3WvsM1xi = 2929 + INTEGER(IntKi), PARAMETER :: B3WvsM1yi = 2930 + INTEGER(IntKi), PARAMETER :: B3WvsM1zi = 2931 + INTEGER(IntKi), PARAMETER :: B3WvsFxi = 2932 + INTEGER(IntKi), PARAMETER :: B3WvsFyi = 2933 + INTEGER(IntKi), PARAMETER :: B3WvsFzi = 2934 + INTEGER(IntKi), PARAMETER :: B3WvsMxi = 2935 + INTEGER(IntKi), PARAMETER :: B3WvsMyi = 2936 + INTEGER(IntKi), PARAMETER :: B3WvsMzi = 2937 + INTEGER(IntKi), PARAMETER :: B3HdSFxi = 2938 + INTEGER(IntKi), PARAMETER :: B3HdSFyi = 2939 + INTEGER(IntKi), PARAMETER :: B3HdSFzi = 2940 + INTEGER(IntKi), PARAMETER :: B3HdSMxi = 2941 + INTEGER(IntKi), PARAMETER :: B3HdSMyi = 2942 + INTEGER(IntKi), PARAMETER :: B3HdSMzi = 2943 + INTEGER(IntKi), PARAMETER :: B3RdtFxi = 2944 + INTEGER(IntKi), PARAMETER :: B3RdtFyi = 2945 + INTEGER(IntKi), PARAMETER :: B3RdtFzi = 2946 + INTEGER(IntKi), PARAMETER :: B3RdtMxi = 2947 + INTEGER(IntKi), PARAMETER :: B3RdtMyi = 2948 + INTEGER(IntKi), PARAMETER :: B3RdtMzi = 2949 + INTEGER(IntKi), PARAMETER :: B4AddFxi = 2950 + INTEGER(IntKi), PARAMETER :: B4AddFyi = 2951 + INTEGER(IntKi), PARAMETER :: B4AddFzi = 2952 + INTEGER(IntKi), PARAMETER :: B4AddMxi = 2953 + INTEGER(IntKi), PARAMETER :: B4AddMyi = 2954 + INTEGER(IntKi), PARAMETER :: B4AddMzi = 2955 + INTEGER(IntKi), PARAMETER :: B4WvsF1xi = 2956 + INTEGER(IntKi), PARAMETER :: B4WvsF1yi = 2957 + INTEGER(IntKi), PARAMETER :: B4WvsF1zi = 2958 + INTEGER(IntKi), PARAMETER :: B4WvsM1xi = 2959 + INTEGER(IntKi), PARAMETER :: B4WvsM1yi = 2960 + INTEGER(IntKi), PARAMETER :: B4WvsM1zi = 2961 + INTEGER(IntKi), PARAMETER :: B4WvsFxi = 2962 + INTEGER(IntKi), PARAMETER :: B4WvsFyi = 2963 + INTEGER(IntKi), PARAMETER :: B4WvsFzi = 2964 + INTEGER(IntKi), PARAMETER :: B4WvsMxi = 2965 + INTEGER(IntKi), PARAMETER :: B4WvsMyi = 2966 + INTEGER(IntKi), PARAMETER :: B4WvsMzi = 2967 + INTEGER(IntKi), PARAMETER :: B4HdSFxi = 2968 + INTEGER(IntKi), PARAMETER :: B4HdSFyi = 2969 + INTEGER(IntKi), PARAMETER :: B4HdSFzi = 2970 + INTEGER(IntKi), PARAMETER :: B4HdSMxi = 2971 + INTEGER(IntKi), PARAMETER :: B4HdSMyi = 2972 + INTEGER(IntKi), PARAMETER :: B4HdSMzi = 2973 + INTEGER(IntKi), PARAMETER :: B4RdtFxi = 2974 + INTEGER(IntKi), PARAMETER :: B4RdtFyi = 2975 + INTEGER(IntKi), PARAMETER :: B4RdtFzi = 2976 + INTEGER(IntKi), PARAMETER :: B4RdtMxi = 2977 + INTEGER(IntKi), PARAMETER :: B4RdtMyi = 2978 + INTEGER(IntKi), PARAMETER :: B4RdtMzi = 2979 + INTEGER(IntKi), PARAMETER :: B5AddFxi = 2980 + INTEGER(IntKi), PARAMETER :: B5AddFyi = 2981 + INTEGER(IntKi), PARAMETER :: B5AddFzi = 2982 + INTEGER(IntKi), PARAMETER :: B5AddMxi = 2983 + INTEGER(IntKi), PARAMETER :: B5AddMyi = 2984 + INTEGER(IntKi), PARAMETER :: B5AddMzi = 2985 + INTEGER(IntKi), PARAMETER :: B5WvsF1xi = 2986 + INTEGER(IntKi), PARAMETER :: B5WvsF1yi = 2987 + INTEGER(IntKi), PARAMETER :: B5WvsF1zi = 2988 + INTEGER(IntKi), PARAMETER :: B5WvsM1xi = 2989 + INTEGER(IntKi), PARAMETER :: B5WvsM1yi = 2990 + INTEGER(IntKi), PARAMETER :: B5WvsM1zi = 2991 + INTEGER(IntKi), PARAMETER :: B5WvsFxi = 2992 + INTEGER(IntKi), PARAMETER :: B5WvsFyi = 2993 + INTEGER(IntKi), PARAMETER :: B5WvsFzi = 2994 + INTEGER(IntKi), PARAMETER :: B5WvsMxi = 2995 + INTEGER(IntKi), PARAMETER :: B5WvsMyi = 2996 + INTEGER(IntKi), PARAMETER :: B5WvsMzi = 2997 + INTEGER(IntKi), PARAMETER :: B5HdSFxi = 2998 + INTEGER(IntKi), PARAMETER :: B5HdSFyi = 2999 + INTEGER(IntKi), PARAMETER :: B5HdSFzi = 3000 + INTEGER(IntKi), PARAMETER :: B5HdSMxi = 3001 + INTEGER(IntKi), PARAMETER :: B5HdSMyi = 3002 + INTEGER(IntKi), PARAMETER :: B5HdSMzi = 3003 + INTEGER(IntKi), PARAMETER :: B5RdtFxi = 3004 + INTEGER(IntKi), PARAMETER :: B5RdtFyi = 3005 + INTEGER(IntKi), PARAMETER :: B5RdtFzi = 3006 + INTEGER(IntKi), PARAMETER :: B5RdtMxi = 3007 + INTEGER(IntKi), PARAMETER :: B5RdtMyi = 3008 + INTEGER(IntKi), PARAMETER :: B5RdtMzi = 3009 + INTEGER(IntKi), PARAMETER :: B6AddFxi = 3010 + INTEGER(IntKi), PARAMETER :: B6AddFyi = 3011 + INTEGER(IntKi), PARAMETER :: B6AddFzi = 3012 + INTEGER(IntKi), PARAMETER :: B6AddMxi = 3013 + INTEGER(IntKi), PARAMETER :: B6AddMyi = 3014 + INTEGER(IntKi), PARAMETER :: B6AddMzi = 3015 + INTEGER(IntKi), PARAMETER :: B6WvsF1xi = 3016 + INTEGER(IntKi), PARAMETER :: B6WvsF1yi = 3017 + INTEGER(IntKi), PARAMETER :: B6WvsF1zi = 3018 + INTEGER(IntKi), PARAMETER :: B6WvsM1xi = 3019 + INTEGER(IntKi), PARAMETER :: B6WvsM1yi = 3020 + INTEGER(IntKi), PARAMETER :: B6WvsM1zi = 3021 + INTEGER(IntKi), PARAMETER :: B6WvsFxi = 3022 + INTEGER(IntKi), PARAMETER :: B6WvsFyi = 3023 + INTEGER(IntKi), PARAMETER :: B6WvsFzi = 3024 + INTEGER(IntKi), PARAMETER :: B6WvsMxi = 3025 + INTEGER(IntKi), PARAMETER :: B6WvsMyi = 3026 + INTEGER(IntKi), PARAMETER :: B6WvsMzi = 3027 + INTEGER(IntKi), PARAMETER :: B6HdSFxi = 3028 + INTEGER(IntKi), PARAMETER :: B6HdSFyi = 3029 + INTEGER(IntKi), PARAMETER :: B6HdSFzi = 3030 + INTEGER(IntKi), PARAMETER :: B6HdSMxi = 3031 + INTEGER(IntKi), PARAMETER :: B6HdSMyi = 3032 + INTEGER(IntKi), PARAMETER :: B6HdSMzi = 3033 + INTEGER(IntKi), PARAMETER :: B6RdtFxi = 3034 + INTEGER(IntKi), PARAMETER :: B6RdtFyi = 3035 + INTEGER(IntKi), PARAMETER :: B6RdtFzi = 3036 + INTEGER(IntKi), PARAMETER :: B6RdtMxi = 3037 + INTEGER(IntKi), PARAMETER :: B6RdtMyi = 3038 + INTEGER(IntKi), PARAMETER :: B6RdtMzi = 3039 + INTEGER(IntKi), PARAMETER :: B7AddFxi = 3040 + INTEGER(IntKi), PARAMETER :: B7AddFyi = 3041 + INTEGER(IntKi), PARAMETER :: B7AddFzi = 3042 + INTEGER(IntKi), PARAMETER :: B7AddMxi = 3043 + INTEGER(IntKi), PARAMETER :: B7AddMyi = 3044 + INTEGER(IntKi), PARAMETER :: B7AddMzi = 3045 + INTEGER(IntKi), PARAMETER :: B7WvsF1xi = 3046 + INTEGER(IntKi), PARAMETER :: B7WvsF1yi = 3047 + INTEGER(IntKi), PARAMETER :: B7WvsF1zi = 3048 + INTEGER(IntKi), PARAMETER :: B7WvsM1xi = 3049 + INTEGER(IntKi), PARAMETER :: B7WvsM1yi = 3050 + INTEGER(IntKi), PARAMETER :: B7WvsM1zi = 3051 + INTEGER(IntKi), PARAMETER :: B7WvsFxi = 3052 + INTEGER(IntKi), PARAMETER :: B7WvsFyi = 3053 + INTEGER(IntKi), PARAMETER :: B7WvsFzi = 3054 + INTEGER(IntKi), PARAMETER :: B7WvsMxi = 3055 + INTEGER(IntKi), PARAMETER :: B7WvsMyi = 3056 + INTEGER(IntKi), PARAMETER :: B7WvsMzi = 3057 + INTEGER(IntKi), PARAMETER :: B7HdSFxi = 3058 + INTEGER(IntKi), PARAMETER :: B7HdSFyi = 3059 + INTEGER(IntKi), PARAMETER :: B7HdSFzi = 3060 + INTEGER(IntKi), PARAMETER :: B7HdSMxi = 3061 + INTEGER(IntKi), PARAMETER :: B7HdSMyi = 3062 + INTEGER(IntKi), PARAMETER :: B7HdSMzi = 3063 + INTEGER(IntKi), PARAMETER :: B7RdtFxi = 3064 + INTEGER(IntKi), PARAMETER :: B7RdtFyi = 3065 + INTEGER(IntKi), PARAMETER :: B7RdtFzi = 3066 + INTEGER(IntKi), PARAMETER :: B7RdtMxi = 3067 + INTEGER(IntKi), PARAMETER :: B7RdtMyi = 3068 + INTEGER(IntKi), PARAMETER :: B7RdtMzi = 3069 + INTEGER(IntKi), PARAMETER :: B8AddFxi = 3070 + INTEGER(IntKi), PARAMETER :: B8AddFyi = 3071 + INTEGER(IntKi), PARAMETER :: B8AddFzi = 3072 + INTEGER(IntKi), PARAMETER :: B8AddMxi = 3073 + INTEGER(IntKi), PARAMETER :: B8AddMyi = 3074 + INTEGER(IntKi), PARAMETER :: B8AddMzi = 3075 + INTEGER(IntKi), PARAMETER :: B8WvsF1xi = 3076 + INTEGER(IntKi), PARAMETER :: B8WvsF1yi = 3077 + INTEGER(IntKi), PARAMETER :: B8WvsF1zi = 3078 + INTEGER(IntKi), PARAMETER :: B8WvsM1xi = 3079 + INTEGER(IntKi), PARAMETER :: B8WvsM1yi = 3080 + INTEGER(IntKi), PARAMETER :: B8WvsM1zi = 3081 + INTEGER(IntKi), PARAMETER :: B8WvsFxi = 3082 + INTEGER(IntKi), PARAMETER :: B8WvsFyi = 3083 + INTEGER(IntKi), PARAMETER :: B8WvsFzi = 3084 + INTEGER(IntKi), PARAMETER :: B8WvsMxi = 3085 + INTEGER(IntKi), PARAMETER :: B8WvsMyi = 3086 + INTEGER(IntKi), PARAMETER :: B8WvsMzi = 3087 + INTEGER(IntKi), PARAMETER :: B8HdSFxi = 3088 + INTEGER(IntKi), PARAMETER :: B8HdSFyi = 3089 + INTEGER(IntKi), PARAMETER :: B8HdSFzi = 3090 + INTEGER(IntKi), PARAMETER :: B8HdSMxi = 3091 + INTEGER(IntKi), PARAMETER :: B8HdSMyi = 3092 + INTEGER(IntKi), PARAMETER :: B8HdSMzi = 3093 + INTEGER(IntKi), PARAMETER :: B8RdtFxi = 3094 + INTEGER(IntKi), PARAMETER :: B8RdtFyi = 3095 + INTEGER(IntKi), PARAMETER :: B8RdtFzi = 3096 + INTEGER(IntKi), PARAMETER :: B8RdtMxi = 3097 + INTEGER(IntKi), PARAMETER :: B8RdtMyi = 3098 + INTEGER(IntKi), PARAMETER :: B8RdtMzi = 3099 + INTEGER(IntKi), PARAMETER :: B9AddFxi = 3100 + INTEGER(IntKi), PARAMETER :: B9AddFyi = 3101 + INTEGER(IntKi), PARAMETER :: B9AddFzi = 3102 + INTEGER(IntKi), PARAMETER :: B9AddMxi = 3103 + INTEGER(IntKi), PARAMETER :: B9AddMyi = 3104 + INTEGER(IntKi), PARAMETER :: B9AddMzi = 3105 + INTEGER(IntKi), PARAMETER :: B9WvsF1xi = 3106 + INTEGER(IntKi), PARAMETER :: B9WvsF1yi = 3107 + INTEGER(IntKi), PARAMETER :: B9WvsF1zi = 3108 + INTEGER(IntKi), PARAMETER :: B9WvsM1xi = 3109 + INTEGER(IntKi), PARAMETER :: B9WvsM1yi = 3110 + INTEGER(IntKi), PARAMETER :: B9WvsM1zi = 3111 + INTEGER(IntKi), PARAMETER :: B9WvsFxi = 3112 + INTEGER(IntKi), PARAMETER :: B9WvsFyi = 3113 + INTEGER(IntKi), PARAMETER :: B9WvsFzi = 3114 + INTEGER(IntKi), PARAMETER :: B9WvsMxi = 3115 + INTEGER(IntKi), PARAMETER :: B9WvsMyi = 3116 + INTEGER(IntKi), PARAMETER :: B9WvsMzi = 3117 + INTEGER(IntKi), PARAMETER :: B9HdSFxi = 3118 + INTEGER(IntKi), PARAMETER :: B9HdSFyi = 3119 + INTEGER(IntKi), PARAMETER :: B9HdSFzi = 3120 + INTEGER(IntKi), PARAMETER :: B9HdSMxi = 3121 + INTEGER(IntKi), PARAMETER :: B9HdSMyi = 3122 + INTEGER(IntKi), PARAMETER :: B9HdSMzi = 3123 + INTEGER(IntKi), PARAMETER :: B9RdtFxi = 3124 + INTEGER(IntKi), PARAMETER :: B9RdtFyi = 3125 + INTEGER(IntKi), PARAMETER :: B9RdtFzi = 3126 + INTEGER(IntKi), PARAMETER :: B9RdtMxi = 3127 + INTEGER(IntKi), PARAMETER :: B9RdtMyi = 3128 + INTEGER(IntKi), PARAMETER :: B9RdtMzi = 3129 + INTEGER(IntKi), PARAMETER :: B1WvsF2xi = 3130 + INTEGER(IntKi), PARAMETER :: B1WvsF2yi = 3131 + INTEGER(IntKi), PARAMETER :: B1WvsF2zi = 3132 + INTEGER(IntKi), PARAMETER :: B1WvsM2xi = 3133 + INTEGER(IntKi), PARAMETER :: B1WvsM2yi = 3134 + INTEGER(IntKi), PARAMETER :: B1WvsM2zi = 3135 + INTEGER(IntKi), PARAMETER :: B2WvsF2xi = 3136 + INTEGER(IntKi), PARAMETER :: B2WvsF2yi = 3137 + INTEGER(IntKi), PARAMETER :: B2WvsF2zi = 3138 + INTEGER(IntKi), PARAMETER :: B2WvsM2xi = 3139 + INTEGER(IntKi), PARAMETER :: B2WvsM2yi = 3140 + INTEGER(IntKi), PARAMETER :: B2WvsM2zi = 3141 + INTEGER(IntKi), PARAMETER :: B3WvsF2xi = 3142 + INTEGER(IntKi), PARAMETER :: B3WvsF2yi = 3143 + INTEGER(IntKi), PARAMETER :: B3WvsF2zi = 3144 + INTEGER(IntKi), PARAMETER :: B3WvsM2xi = 3145 + INTEGER(IntKi), PARAMETER :: B3WvsM2yi = 3146 + INTEGER(IntKi), PARAMETER :: B3WvsM2zi = 3147 + INTEGER(IntKi), PARAMETER :: B4WvsF2xi = 3148 + INTEGER(IntKi), PARAMETER :: B4WvsF2yi = 3149 + INTEGER(IntKi), PARAMETER :: B4WvsF2zi = 3150 + INTEGER(IntKi), PARAMETER :: B4WvsM2xi = 3151 + INTEGER(IntKi), PARAMETER :: B4WvsM2yi = 3152 + INTEGER(IntKi), PARAMETER :: B4WvsM2zi = 3153 + INTEGER(IntKi), PARAMETER :: B5WvsF2xi = 3154 + INTEGER(IntKi), PARAMETER :: B5WvsF2yi = 3155 + INTEGER(IntKi), PARAMETER :: B5WvsF2zi = 3156 + INTEGER(IntKi), PARAMETER :: B5WvsM2xi = 3157 + INTEGER(IntKi), PARAMETER :: B5WvsM2yi = 3158 + INTEGER(IntKi), PARAMETER :: B5WvsM2zi = 3159 + INTEGER(IntKi), PARAMETER :: B6WvsF2xi = 3160 + INTEGER(IntKi), PARAMETER :: B6WvsF2yi = 3161 + INTEGER(IntKi), PARAMETER :: B6WvsF2zi = 3162 + INTEGER(IntKi), PARAMETER :: B6WvsM2xi = 3163 + INTEGER(IntKi), PARAMETER :: B6WvsM2yi = 3164 + INTEGER(IntKi), PARAMETER :: B6WvsM2zi = 3165 + INTEGER(IntKi), PARAMETER :: B7WvsF2xi = 3166 + INTEGER(IntKi), PARAMETER :: B7WvsF2yi = 3167 + INTEGER(IntKi), PARAMETER :: B7WvsF2zi = 3168 + INTEGER(IntKi), PARAMETER :: B7WvsM2xi = 3169 + INTEGER(IntKi), PARAMETER :: B7WvsM2yi = 3170 + INTEGER(IntKi), PARAMETER :: B7WvsM2zi = 3171 + INTEGER(IntKi), PARAMETER :: B8WvsF2xi = 3172 + INTEGER(IntKi), PARAMETER :: B8WvsF2yi = 3173 + INTEGER(IntKi), PARAMETER :: B8WvsF2zi = 3174 + INTEGER(IntKi), PARAMETER :: B8WvsM2xi = 3175 + INTEGER(IntKi), PARAMETER :: B8WvsM2yi = 3176 + INTEGER(IntKi), PARAMETER :: B8WvsM2zi = 3177 + INTEGER(IntKi), PARAMETER :: B9WvsF2xi = 3178 + INTEGER(IntKi), PARAMETER :: B9WvsF2yi = 3179 + INTEGER(IntKi), PARAMETER :: B9WvsF2zi = 3180 + INTEGER(IntKi), PARAMETER :: B9WvsM2xi = 3181 + INTEGER(IntKi), PARAMETER :: B9WvsM2yi = 3182 + INTEGER(IntKi), PARAMETER :: B9WvsM2zi = 3183 + INTEGER(IntKi), PARAMETER :: B1ADOF1Add = 3184 + INTEGER(IntKi), PARAMETER :: B1ADOF2Add = 3185 + INTEGER(IntKi), PARAMETER :: B1ADOF3Add = 3186 + INTEGER(IntKi), PARAMETER :: B1ADOF4Add = 3187 + INTEGER(IntKi), PARAMETER :: B1ADOF5Add = 3188 + INTEGER(IntKi), PARAMETER :: B1ADOF6Add = 3189 + INTEGER(IntKi), PARAMETER :: B1ADOF7Add = 3190 + INTEGER(IntKi), PARAMETER :: B1ADOF8Add = 3191 + INTEGER(IntKi), PARAMETER :: B1ADOF9Add = 3192 + INTEGER(IntKi), PARAMETER :: B1ADOF10Add = 3193 + INTEGER(IntKi), PARAMETER :: B1ADOF11Add = 3194 + INTEGER(IntKi), PARAMETER :: B1ADOF12Add = 3195 + INTEGER(IntKi), PARAMETER :: B1ADOF13Add = 3196 + INTEGER(IntKi), PARAMETER :: B1ADOF14Add = 3197 + INTEGER(IntKi), PARAMETER :: B1ADOF15Add = 3198 + INTEGER(IntKi), PARAMETER :: B1ADOF16Add = 3199 + INTEGER(IntKi), PARAMETER :: B1ADOF17Add = 3200 + INTEGER(IntKi), PARAMETER :: B1ADOF18Add = 3201 + INTEGER(IntKi), PARAMETER :: B1ADOF19Add = 3202 + INTEGER(IntKi), PARAMETER :: B1ADOF20Add = 3203 + INTEGER(IntKi), PARAMETER :: B1ADOF21Add = 3204 + INTEGER(IntKi), PARAMETER :: B1ADOF22Add = 3205 + INTEGER(IntKi), PARAMETER :: B1ADOF23Add = 3206 + INTEGER(IntKi), PARAMETER :: B1ADOF24Add = 3207 + INTEGER(IntKi), PARAMETER :: B1ADOF25Add = 3208 + INTEGER(IntKi), PARAMETER :: B1ADOF26Add = 3209 + INTEGER(IntKi), PARAMETER :: B1ADOF27Add = 3210 + INTEGER(IntKi), PARAMETER :: B1ADOF28Add = 3211 + INTEGER(IntKi), PARAMETER :: B1ADOF29Add = 3212 + INTEGER(IntKi), PARAMETER :: B1ADOF30Add = 3213 + INTEGER(IntKi), PARAMETER :: B1ADOF31Add = 3214 + INTEGER(IntKi), PARAMETER :: B1ADOF32Add = 3215 + INTEGER(IntKi), PARAMETER :: B1ADOF33Add = 3216 + INTEGER(IntKi), PARAMETER :: B1ADOF34Add = 3217 + INTEGER(IntKi), PARAMETER :: B1ADOF35Add = 3218 + INTEGER(IntKi), PARAMETER :: B1ADOF36Add = 3219 + INTEGER(IntKi), PARAMETER :: B1ADOF37Add = 3220 + INTEGER(IntKi), PARAMETER :: B1ADOF38Add = 3221 + INTEGER(IntKi), PARAMETER :: B1ADOF39Add = 3222 + INTEGER(IntKi), PARAMETER :: B1ADOF40Add = 3223 + INTEGER(IntKi), PARAMETER :: B1ADOF41Add = 3224 + INTEGER(IntKi), PARAMETER :: B1ADOF42Add = 3225 + INTEGER(IntKi), PARAMETER :: B1ADOF43Add = 3226 + INTEGER(IntKi), PARAMETER :: B1ADOF44Add = 3227 + INTEGER(IntKi), PARAMETER :: B1ADOF45Add = 3228 + INTEGER(IntKi), PARAMETER :: B1ADOF46Add = 3229 + INTEGER(IntKi), PARAMETER :: B1ADOF47Add = 3230 + INTEGER(IntKi), PARAMETER :: B1ADOF48Add = 3231 + INTEGER(IntKi), PARAMETER :: B1ADOF49Add = 3232 + INTEGER(IntKi), PARAMETER :: B1ADOF50Add = 3233 + INTEGER(IntKi), PARAMETER :: B1ADOF51Add = 3234 + INTEGER(IntKi), PARAMETER :: B1ADOF52Add = 3235 + INTEGER(IntKi), PARAMETER :: B1ADOF53Add = 3236 + INTEGER(IntKi), PARAMETER :: B1ADOF54Add = 3237 + INTEGER(IntKi), PARAMETER :: B1ADOF55Add = 3238 + INTEGER(IntKi), PARAMETER :: B1ADOF56Add = 3239 + INTEGER(IntKi), PARAMETER :: B1ADOF57Add = 3240 + INTEGER(IntKi), PARAMETER :: B1ADOF58Add = 3241 + INTEGER(IntKi), PARAMETER :: B1ADOF59Add = 3242 + INTEGER(IntKi), PARAMETER :: B1ADOF60Add = 3243 + INTEGER(IntKi), PARAMETER :: B1ADOF61Add = 3244 + INTEGER(IntKi), PARAMETER :: B1ADOF62Add = 3245 + INTEGER(IntKi), PARAMETER :: B1ADOF63Add = 3246 + INTEGER(IntKi), PARAMETER :: B1ADOF64Add = 3247 + INTEGER(IntKi), PARAMETER :: B1ADOF65Add = 3248 + INTEGER(IntKi), PARAMETER :: B1ADOF66Add = 3249 + INTEGER(IntKi), PARAMETER :: B1ADOF67Add = 3250 + INTEGER(IntKi), PARAMETER :: B1ADOF68Add = 3251 + INTEGER(IntKi), PARAMETER :: B1ADOF69Add = 3252 + INTEGER(IntKi), PARAMETER :: B1ADOF70Add = 3253 + INTEGER(IntKi), PARAMETER :: B1ADOF71Add = 3254 + INTEGER(IntKi), PARAMETER :: B1ADOF72Add = 3255 + INTEGER(IntKi), PARAMETER :: B1ADOF73Add = 3256 + INTEGER(IntKi), PARAMETER :: B1ADOF74Add = 3257 + INTEGER(IntKi), PARAMETER :: B1ADOF75Add = 3258 + INTEGER(IntKi), PARAMETER :: B1ADOF76Add = 3259 + INTEGER(IntKi), PARAMETER :: B1ADOF77Add = 3260 + INTEGER(IntKi), PARAMETER :: B1ADOF78Add = 3261 + INTEGER(IntKi), PARAMETER :: B1ADOF79Add = 3262 + INTEGER(IntKi), PARAMETER :: B1ADOF80Add = 3263 + INTEGER(IntKi), PARAMETER :: B1ADOF81Add = 3264 + INTEGER(IntKi), PARAMETER :: B1ADOF82Add = 3265 + INTEGER(IntKi), PARAMETER :: B1ADOF83Add = 3266 + INTEGER(IntKi), PARAMETER :: B1ADOF84Add = 3267 + INTEGER(IntKi), PARAMETER :: B1ADOF85Add = 3268 + INTEGER(IntKi), PARAMETER :: B1ADOF86Add = 3269 + INTEGER(IntKi), PARAMETER :: B1ADOF87Add = 3270 + INTEGER(IntKi), PARAMETER :: B1ADOF88Add = 3271 + INTEGER(IntKi), PARAMETER :: B1ADOF89Add = 3272 + INTEGER(IntKi), PARAMETER :: B1ADOF90Add = 3273 + INTEGER(IntKi), PARAMETER :: B1ADOF91Add = 3274 + INTEGER(IntKi), PARAMETER :: B1ADOF92Add = 3275 + INTEGER(IntKi), PARAMETER :: B1ADOF93Add = 3276 + INTEGER(IntKi), PARAMETER :: B1ADOF94Add = 3277 + INTEGER(IntKi), PARAMETER :: B1ADOF95Add = 3278 + INTEGER(IntKi), PARAMETER :: B1ADOF96Add = 3279 + INTEGER(IntKi), PARAMETER :: B1ADOF97Add = 3280 + INTEGER(IntKi), PARAMETER :: B1ADOF98Add = 3281 + INTEGER(IntKi), PARAMETER :: B1ADOF99Add = 3282 + INTEGER(IntKi), PARAMETER :: B2ADOF1Add = 3283 + INTEGER(IntKi), PARAMETER :: B2ADOF2Add = 3284 + INTEGER(IntKi), PARAMETER :: B2ADOF3Add = 3285 + INTEGER(IntKi), PARAMETER :: B2ADOF4Add = 3286 + INTEGER(IntKi), PARAMETER :: B2ADOF5Add = 3287 + INTEGER(IntKi), PARAMETER :: B2ADOF6Add = 3288 + INTEGER(IntKi), PARAMETER :: B2ADOF7Add = 3289 + INTEGER(IntKi), PARAMETER :: B2ADOF8Add = 3290 + INTEGER(IntKi), PARAMETER :: B2ADOF9Add = 3291 + INTEGER(IntKi), PARAMETER :: B2ADOF10Add = 3292 + INTEGER(IntKi), PARAMETER :: B2ADOF11Add = 3293 + INTEGER(IntKi), PARAMETER :: B2ADOF12Add = 3294 + INTEGER(IntKi), PARAMETER :: B2ADOF13Add = 3295 + INTEGER(IntKi), PARAMETER :: B2ADOF14Add = 3296 + INTEGER(IntKi), PARAMETER :: B2ADOF15Add = 3297 + INTEGER(IntKi), PARAMETER :: B2ADOF16Add = 3298 + INTEGER(IntKi), PARAMETER :: B2ADOF17Add = 3299 + INTEGER(IntKi), PARAMETER :: B2ADOF18Add = 3300 + INTEGER(IntKi), PARAMETER :: B2ADOF19Add = 3301 + INTEGER(IntKi), PARAMETER :: B2ADOF20Add = 3302 + INTEGER(IntKi), PARAMETER :: B2ADOF21Add = 3303 + INTEGER(IntKi), PARAMETER :: B2ADOF22Add = 3304 + INTEGER(IntKi), PARAMETER :: B2ADOF23Add = 3305 + INTEGER(IntKi), PARAMETER :: B2ADOF24Add = 3306 + INTEGER(IntKi), PARAMETER :: B2ADOF25Add = 3307 + INTEGER(IntKi), PARAMETER :: B2ADOF26Add = 3308 + INTEGER(IntKi), PARAMETER :: B2ADOF27Add = 3309 + INTEGER(IntKi), PARAMETER :: B2ADOF28Add = 3310 + INTEGER(IntKi), PARAMETER :: B2ADOF29Add = 3311 + INTEGER(IntKi), PARAMETER :: B2ADOF30Add = 3312 + INTEGER(IntKi), PARAMETER :: B2ADOF31Add = 3313 + INTEGER(IntKi), PARAMETER :: B2ADOF32Add = 3314 + INTEGER(IntKi), PARAMETER :: B2ADOF33Add = 3315 + INTEGER(IntKi), PARAMETER :: B2ADOF34Add = 3316 + INTEGER(IntKi), PARAMETER :: B2ADOF35Add = 3317 + INTEGER(IntKi), PARAMETER :: B2ADOF36Add = 3318 + INTEGER(IntKi), PARAMETER :: B2ADOF37Add = 3319 + INTEGER(IntKi), PARAMETER :: B2ADOF38Add = 3320 + INTEGER(IntKi), PARAMETER :: B2ADOF39Add = 3321 + INTEGER(IntKi), PARAMETER :: B2ADOF40Add = 3322 + INTEGER(IntKi), PARAMETER :: B2ADOF41Add = 3323 + INTEGER(IntKi), PARAMETER :: B2ADOF42Add = 3324 + INTEGER(IntKi), PARAMETER :: B2ADOF43Add = 3325 + INTEGER(IntKi), PARAMETER :: B2ADOF44Add = 3326 + INTEGER(IntKi), PARAMETER :: B2ADOF45Add = 3327 + INTEGER(IntKi), PARAMETER :: B2ADOF46Add = 3328 + INTEGER(IntKi), PARAMETER :: B2ADOF47Add = 3329 + INTEGER(IntKi), PARAMETER :: B2ADOF48Add = 3330 + INTEGER(IntKi), PARAMETER :: B2ADOF49Add = 3331 + INTEGER(IntKi), PARAMETER :: B2ADOF50Add = 3332 + INTEGER(IntKi), PARAMETER :: B2ADOF51Add = 3333 + INTEGER(IntKi), PARAMETER :: B2ADOF52Add = 3334 + INTEGER(IntKi), PARAMETER :: B2ADOF53Add = 3335 + INTEGER(IntKi), PARAMETER :: B2ADOF54Add = 3336 + INTEGER(IntKi), PARAMETER :: B2ADOF55Add = 3337 + INTEGER(IntKi), PARAMETER :: B2ADOF56Add = 3338 + INTEGER(IntKi), PARAMETER :: B2ADOF57Add = 3339 + INTEGER(IntKi), PARAMETER :: B2ADOF58Add = 3340 + INTEGER(IntKi), PARAMETER :: B2ADOF59Add = 3341 + INTEGER(IntKi), PARAMETER :: B2ADOF60Add = 3342 + INTEGER(IntKi), PARAMETER :: B2ADOF61Add = 3343 + INTEGER(IntKi), PARAMETER :: B2ADOF62Add = 3344 + INTEGER(IntKi), PARAMETER :: B2ADOF63Add = 3345 + INTEGER(IntKi), PARAMETER :: B2ADOF64Add = 3346 + INTEGER(IntKi), PARAMETER :: B2ADOF65Add = 3347 + INTEGER(IntKi), PARAMETER :: B2ADOF66Add = 3348 + INTEGER(IntKi), PARAMETER :: B2ADOF67Add = 3349 + INTEGER(IntKi), PARAMETER :: B2ADOF68Add = 3350 + INTEGER(IntKi), PARAMETER :: B2ADOF69Add = 3351 + INTEGER(IntKi), PARAMETER :: B2ADOF70Add = 3352 + INTEGER(IntKi), PARAMETER :: B2ADOF71Add = 3353 + INTEGER(IntKi), PARAMETER :: B2ADOF72Add = 3354 + INTEGER(IntKi), PARAMETER :: B2ADOF73Add = 3355 + INTEGER(IntKi), PARAMETER :: B2ADOF74Add = 3356 + INTEGER(IntKi), PARAMETER :: B2ADOF75Add = 3357 + INTEGER(IntKi), PARAMETER :: B2ADOF76Add = 3358 + INTEGER(IntKi), PARAMETER :: B2ADOF77Add = 3359 + INTEGER(IntKi), PARAMETER :: B2ADOF78Add = 3360 + INTEGER(IntKi), PARAMETER :: B2ADOF79Add = 3361 + INTEGER(IntKi), PARAMETER :: B2ADOF80Add = 3362 + INTEGER(IntKi), PARAMETER :: B2ADOF81Add = 3363 + INTEGER(IntKi), PARAMETER :: B2ADOF82Add = 3364 + INTEGER(IntKi), PARAMETER :: B2ADOF83Add = 3365 + INTEGER(IntKi), PARAMETER :: B2ADOF84Add = 3366 + INTEGER(IntKi), PARAMETER :: B2ADOF85Add = 3367 + INTEGER(IntKi), PARAMETER :: B2ADOF86Add = 3368 + INTEGER(IntKi), PARAMETER :: B2ADOF87Add = 3369 + INTEGER(IntKi), PARAMETER :: B2ADOF88Add = 3370 + INTEGER(IntKi), PARAMETER :: B2ADOF89Add = 3371 + INTEGER(IntKi), PARAMETER :: B2ADOF90Add = 3372 + INTEGER(IntKi), PARAMETER :: B2ADOF91Add = 3373 + INTEGER(IntKi), PARAMETER :: B2ADOF92Add = 3374 + INTEGER(IntKi), PARAMETER :: B2ADOF93Add = 3375 + INTEGER(IntKi), PARAMETER :: B2ADOF94Add = 3376 + INTEGER(IntKi), PARAMETER :: B2ADOF95Add = 3377 + INTEGER(IntKi), PARAMETER :: B2ADOF96Add = 3378 + INTEGER(IntKi), PARAMETER :: B2ADOF97Add = 3379 + INTEGER(IntKi), PARAMETER :: B2ADOF98Add = 3380 + INTEGER(IntKi), PARAMETER :: B2ADOF99Add = 3381 + INTEGER(IntKi), PARAMETER :: B3ADOF1Add = 3382 + INTEGER(IntKi), PARAMETER :: B3ADOF2Add = 3383 + INTEGER(IntKi), PARAMETER :: B3ADOF3Add = 3384 + INTEGER(IntKi), PARAMETER :: B3ADOF4Add = 3385 + INTEGER(IntKi), PARAMETER :: B3ADOF5Add = 3386 + INTEGER(IntKi), PARAMETER :: B3ADOF6Add = 3387 + INTEGER(IntKi), PARAMETER :: B3ADOF7Add = 3388 + INTEGER(IntKi), PARAMETER :: B3ADOF8Add = 3389 + INTEGER(IntKi), PARAMETER :: B3ADOF9Add = 3390 + INTEGER(IntKi), PARAMETER :: B3ADOF10Add = 3391 + INTEGER(IntKi), PARAMETER :: B3ADOF11Add = 3392 + INTEGER(IntKi), PARAMETER :: B3ADOF12Add = 3393 + INTEGER(IntKi), PARAMETER :: B3ADOF13Add = 3394 + INTEGER(IntKi), PARAMETER :: B3ADOF14Add = 3395 + INTEGER(IntKi), PARAMETER :: B3ADOF15Add = 3396 + INTEGER(IntKi), PARAMETER :: B3ADOF16Add = 3397 + INTEGER(IntKi), PARAMETER :: B3ADOF17Add = 3398 + INTEGER(IntKi), PARAMETER :: B3ADOF18Add = 3399 + INTEGER(IntKi), PARAMETER :: B3ADOF19Add = 3400 + INTEGER(IntKi), PARAMETER :: B3ADOF20Add = 3401 + INTEGER(IntKi), PARAMETER :: B3ADOF21Add = 3402 + INTEGER(IntKi), PARAMETER :: B3ADOF22Add = 3403 + INTEGER(IntKi), PARAMETER :: B3ADOF23Add = 3404 + INTEGER(IntKi), PARAMETER :: B3ADOF24Add = 3405 + INTEGER(IntKi), PARAMETER :: B3ADOF25Add = 3406 + INTEGER(IntKi), PARAMETER :: B3ADOF26Add = 3407 + INTEGER(IntKi), PARAMETER :: B3ADOF27Add = 3408 + INTEGER(IntKi), PARAMETER :: B3ADOF28Add = 3409 + INTEGER(IntKi), PARAMETER :: B3ADOF29Add = 3410 + INTEGER(IntKi), PARAMETER :: B3ADOF30Add = 3411 + INTEGER(IntKi), PARAMETER :: B3ADOF31Add = 3412 + INTEGER(IntKi), PARAMETER :: B3ADOF32Add = 3413 + INTEGER(IntKi), PARAMETER :: B3ADOF33Add = 3414 + INTEGER(IntKi), PARAMETER :: B3ADOF34Add = 3415 + INTEGER(IntKi), PARAMETER :: B3ADOF35Add = 3416 + INTEGER(IntKi), PARAMETER :: B3ADOF36Add = 3417 + INTEGER(IntKi), PARAMETER :: B3ADOF37Add = 3418 + INTEGER(IntKi), PARAMETER :: B3ADOF38Add = 3419 + INTEGER(IntKi), PARAMETER :: B3ADOF39Add = 3420 + INTEGER(IntKi), PARAMETER :: B3ADOF40Add = 3421 + INTEGER(IntKi), PARAMETER :: B3ADOF41Add = 3422 + INTEGER(IntKi), PARAMETER :: B3ADOF42Add = 3423 + INTEGER(IntKi), PARAMETER :: B3ADOF43Add = 3424 + INTEGER(IntKi), PARAMETER :: B3ADOF44Add = 3425 + INTEGER(IntKi), PARAMETER :: B3ADOF45Add = 3426 + INTEGER(IntKi), PARAMETER :: B3ADOF46Add = 3427 + INTEGER(IntKi), PARAMETER :: B3ADOF47Add = 3428 + INTEGER(IntKi), PARAMETER :: B3ADOF48Add = 3429 + INTEGER(IntKi), PARAMETER :: B3ADOF49Add = 3430 + INTEGER(IntKi), PARAMETER :: B3ADOF50Add = 3431 + INTEGER(IntKi), PARAMETER :: B3ADOF51Add = 3432 + INTEGER(IntKi), PARAMETER :: B3ADOF52Add = 3433 + INTEGER(IntKi), PARAMETER :: B3ADOF53Add = 3434 + INTEGER(IntKi), PARAMETER :: B3ADOF54Add = 3435 + INTEGER(IntKi), PARAMETER :: B3ADOF55Add = 3436 + INTEGER(IntKi), PARAMETER :: B3ADOF56Add = 3437 + INTEGER(IntKi), PARAMETER :: B3ADOF57Add = 3438 + INTEGER(IntKi), PARAMETER :: B3ADOF58Add = 3439 + INTEGER(IntKi), PARAMETER :: B3ADOF59Add = 3440 + INTEGER(IntKi), PARAMETER :: B3ADOF60Add = 3441 + INTEGER(IntKi), PARAMETER :: B3ADOF61Add = 3442 + INTEGER(IntKi), PARAMETER :: B3ADOF62Add = 3443 + INTEGER(IntKi), PARAMETER :: B3ADOF63Add = 3444 + INTEGER(IntKi), PARAMETER :: B3ADOF64Add = 3445 + INTEGER(IntKi), PARAMETER :: B3ADOF65Add = 3446 + INTEGER(IntKi), PARAMETER :: B3ADOF66Add = 3447 + INTEGER(IntKi), PARAMETER :: B3ADOF67Add = 3448 + INTEGER(IntKi), PARAMETER :: B3ADOF68Add = 3449 + INTEGER(IntKi), PARAMETER :: B3ADOF69Add = 3450 + INTEGER(IntKi), PARAMETER :: B3ADOF70Add = 3451 + INTEGER(IntKi), PARAMETER :: B3ADOF71Add = 3452 + INTEGER(IntKi), PARAMETER :: B3ADOF72Add = 3453 + INTEGER(IntKi), PARAMETER :: B3ADOF73Add = 3454 + INTEGER(IntKi), PARAMETER :: B3ADOF74Add = 3455 + INTEGER(IntKi), PARAMETER :: B3ADOF75Add = 3456 + INTEGER(IntKi), PARAMETER :: B3ADOF76Add = 3457 + INTEGER(IntKi), PARAMETER :: B3ADOF77Add = 3458 + INTEGER(IntKi), PARAMETER :: B3ADOF78Add = 3459 + INTEGER(IntKi), PARAMETER :: B3ADOF79Add = 3460 + INTEGER(IntKi), PARAMETER :: B3ADOF80Add = 3461 + INTEGER(IntKi), PARAMETER :: B3ADOF81Add = 3462 + INTEGER(IntKi), PARAMETER :: B3ADOF82Add = 3463 + INTEGER(IntKi), PARAMETER :: B3ADOF83Add = 3464 + INTEGER(IntKi), PARAMETER :: B3ADOF84Add = 3465 + INTEGER(IntKi), PARAMETER :: B3ADOF85Add = 3466 + INTEGER(IntKi), PARAMETER :: B3ADOF86Add = 3467 + INTEGER(IntKi), PARAMETER :: B3ADOF87Add = 3468 + INTEGER(IntKi), PARAMETER :: B3ADOF88Add = 3469 + INTEGER(IntKi), PARAMETER :: B3ADOF89Add = 3470 + INTEGER(IntKi), PARAMETER :: B3ADOF90Add = 3471 + INTEGER(IntKi), PARAMETER :: B3ADOF91Add = 3472 + INTEGER(IntKi), PARAMETER :: B3ADOF92Add = 3473 + INTEGER(IntKi), PARAMETER :: B3ADOF93Add = 3474 + INTEGER(IntKi), PARAMETER :: B3ADOF94Add = 3475 + INTEGER(IntKi), PARAMETER :: B3ADOF95Add = 3476 + INTEGER(IntKi), PARAMETER :: B3ADOF96Add = 3477 + INTEGER(IntKi), PARAMETER :: B3ADOF97Add = 3478 + INTEGER(IntKi), PARAMETER :: B3ADOF98Add = 3479 + INTEGER(IntKi), PARAMETER :: B3ADOF99Add = 3480 + INTEGER(IntKi), PARAMETER :: B4ADOF1Add = 3481 + INTEGER(IntKi), PARAMETER :: B4ADOF2Add = 3482 + INTEGER(IntKi), PARAMETER :: B4ADOF3Add = 3483 + INTEGER(IntKi), PARAMETER :: B4ADOF4Add = 3484 + INTEGER(IntKi), PARAMETER :: B4ADOF5Add = 3485 + INTEGER(IntKi), PARAMETER :: B4ADOF6Add = 3486 + INTEGER(IntKi), PARAMETER :: B4ADOF7Add = 3487 + INTEGER(IntKi), PARAMETER :: B4ADOF8Add = 3488 + INTEGER(IntKi), PARAMETER :: B4ADOF9Add = 3489 + INTEGER(IntKi), PARAMETER :: B4ADOF10Add = 3490 + INTEGER(IntKi), PARAMETER :: B4ADOF11Add = 3491 + INTEGER(IntKi), PARAMETER :: B4ADOF12Add = 3492 + INTEGER(IntKi), PARAMETER :: B4ADOF13Add = 3493 + INTEGER(IntKi), PARAMETER :: B4ADOF14Add = 3494 + INTEGER(IntKi), PARAMETER :: B4ADOF15Add = 3495 + INTEGER(IntKi), PARAMETER :: B4ADOF16Add = 3496 + INTEGER(IntKi), PARAMETER :: B4ADOF17Add = 3497 + INTEGER(IntKi), PARAMETER :: B4ADOF18Add = 3498 + INTEGER(IntKi), PARAMETER :: B4ADOF19Add = 3499 + INTEGER(IntKi), PARAMETER :: B4ADOF20Add = 3500 + INTEGER(IntKi), PARAMETER :: B4ADOF21Add = 3501 + INTEGER(IntKi), PARAMETER :: B4ADOF22Add = 3502 + INTEGER(IntKi), PARAMETER :: B4ADOF23Add = 3503 + INTEGER(IntKi), PARAMETER :: B4ADOF24Add = 3504 + INTEGER(IntKi), PARAMETER :: B4ADOF25Add = 3505 + INTEGER(IntKi), PARAMETER :: B4ADOF26Add = 3506 + INTEGER(IntKi), PARAMETER :: B4ADOF27Add = 3507 + INTEGER(IntKi), PARAMETER :: B4ADOF28Add = 3508 + INTEGER(IntKi), PARAMETER :: B4ADOF29Add = 3509 + INTEGER(IntKi), PARAMETER :: B4ADOF30Add = 3510 + INTEGER(IntKi), PARAMETER :: B4ADOF31Add = 3511 + INTEGER(IntKi), PARAMETER :: B4ADOF32Add = 3512 + INTEGER(IntKi), PARAMETER :: B4ADOF33Add = 3513 + INTEGER(IntKi), PARAMETER :: B4ADOF34Add = 3514 + INTEGER(IntKi), PARAMETER :: B4ADOF35Add = 3515 + INTEGER(IntKi), PARAMETER :: B4ADOF36Add = 3516 + INTEGER(IntKi), PARAMETER :: B4ADOF37Add = 3517 + INTEGER(IntKi), PARAMETER :: B4ADOF38Add = 3518 + INTEGER(IntKi), PARAMETER :: B4ADOF39Add = 3519 + INTEGER(IntKi), PARAMETER :: B4ADOF40Add = 3520 + INTEGER(IntKi), PARAMETER :: B4ADOF41Add = 3521 + INTEGER(IntKi), PARAMETER :: B4ADOF42Add = 3522 + INTEGER(IntKi), PARAMETER :: B4ADOF43Add = 3523 + INTEGER(IntKi), PARAMETER :: B4ADOF44Add = 3524 + INTEGER(IntKi), PARAMETER :: B4ADOF45Add = 3525 + INTEGER(IntKi), PARAMETER :: B4ADOF46Add = 3526 + INTEGER(IntKi), PARAMETER :: B4ADOF47Add = 3527 + INTEGER(IntKi), PARAMETER :: B4ADOF48Add = 3528 + INTEGER(IntKi), PARAMETER :: B4ADOF49Add = 3529 + INTEGER(IntKi), PARAMETER :: B4ADOF50Add = 3530 + INTEGER(IntKi), PARAMETER :: B4ADOF51Add = 3531 + INTEGER(IntKi), PARAMETER :: B4ADOF52Add = 3532 + INTEGER(IntKi), PARAMETER :: B4ADOF53Add = 3533 + INTEGER(IntKi), PARAMETER :: B4ADOF54Add = 3534 + INTEGER(IntKi), PARAMETER :: B4ADOF55Add = 3535 + INTEGER(IntKi), PARAMETER :: B4ADOF56Add = 3536 + INTEGER(IntKi), PARAMETER :: B4ADOF57Add = 3537 + INTEGER(IntKi), PARAMETER :: B4ADOF58Add = 3538 + INTEGER(IntKi), PARAMETER :: B4ADOF59Add = 3539 + INTEGER(IntKi), PARAMETER :: B4ADOF60Add = 3540 + INTEGER(IntKi), PARAMETER :: B4ADOF61Add = 3541 + INTEGER(IntKi), PARAMETER :: B4ADOF62Add = 3542 + INTEGER(IntKi), PARAMETER :: B4ADOF63Add = 3543 + INTEGER(IntKi), PARAMETER :: B4ADOF64Add = 3544 + INTEGER(IntKi), PARAMETER :: B4ADOF65Add = 3545 + INTEGER(IntKi), PARAMETER :: B4ADOF66Add = 3546 + INTEGER(IntKi), PARAMETER :: B4ADOF67Add = 3547 + INTEGER(IntKi), PARAMETER :: B4ADOF68Add = 3548 + INTEGER(IntKi), PARAMETER :: B4ADOF69Add = 3549 + INTEGER(IntKi), PARAMETER :: B4ADOF70Add = 3550 + INTEGER(IntKi), PARAMETER :: B4ADOF71Add = 3551 + INTEGER(IntKi), PARAMETER :: B4ADOF72Add = 3552 + INTEGER(IntKi), PARAMETER :: B4ADOF73Add = 3553 + INTEGER(IntKi), PARAMETER :: B4ADOF74Add = 3554 + INTEGER(IntKi), PARAMETER :: B4ADOF75Add = 3555 + INTEGER(IntKi), PARAMETER :: B4ADOF76Add = 3556 + INTEGER(IntKi), PARAMETER :: B4ADOF77Add = 3557 + INTEGER(IntKi), PARAMETER :: B4ADOF78Add = 3558 + INTEGER(IntKi), PARAMETER :: B4ADOF79Add = 3559 + INTEGER(IntKi), PARAMETER :: B4ADOF80Add = 3560 + INTEGER(IntKi), PARAMETER :: B4ADOF81Add = 3561 + INTEGER(IntKi), PARAMETER :: B4ADOF82Add = 3562 + INTEGER(IntKi), PARAMETER :: B4ADOF83Add = 3563 + INTEGER(IntKi), PARAMETER :: B4ADOF84Add = 3564 + INTEGER(IntKi), PARAMETER :: B4ADOF85Add = 3565 + INTEGER(IntKi), PARAMETER :: B4ADOF86Add = 3566 + INTEGER(IntKi), PARAMETER :: B4ADOF87Add = 3567 + INTEGER(IntKi), PARAMETER :: B4ADOF88Add = 3568 + INTEGER(IntKi), PARAMETER :: B4ADOF89Add = 3569 + INTEGER(IntKi), PARAMETER :: B4ADOF90Add = 3570 + INTEGER(IntKi), PARAMETER :: B4ADOF91Add = 3571 + INTEGER(IntKi), PARAMETER :: B4ADOF92Add = 3572 + INTEGER(IntKi), PARAMETER :: B4ADOF93Add = 3573 + INTEGER(IntKi), PARAMETER :: B4ADOF94Add = 3574 + INTEGER(IntKi), PARAMETER :: B4ADOF95Add = 3575 + INTEGER(IntKi), PARAMETER :: B4ADOF96Add = 3576 + INTEGER(IntKi), PARAMETER :: B4ADOF97Add = 3577 + INTEGER(IntKi), PARAMETER :: B4ADOF98Add = 3578 + INTEGER(IntKi), PARAMETER :: B4ADOF99Add = 3579 + INTEGER(IntKi), PARAMETER :: B5ADOF1Add = 3580 + INTEGER(IntKi), PARAMETER :: B5ADOF2Add = 3581 + INTEGER(IntKi), PARAMETER :: B5ADOF3Add = 3582 + INTEGER(IntKi), PARAMETER :: B5ADOF4Add = 3583 + INTEGER(IntKi), PARAMETER :: B5ADOF5Add = 3584 + INTEGER(IntKi), PARAMETER :: B5ADOF6Add = 3585 + INTEGER(IntKi), PARAMETER :: B5ADOF7Add = 3586 + INTEGER(IntKi), PARAMETER :: B5ADOF8Add = 3587 + INTEGER(IntKi), PARAMETER :: B5ADOF9Add = 3588 + INTEGER(IntKi), PARAMETER :: B5ADOF10Add = 3589 + INTEGER(IntKi), PARAMETER :: B5ADOF11Add = 3590 + INTEGER(IntKi), PARAMETER :: B5ADOF12Add = 3591 + INTEGER(IntKi), PARAMETER :: B5ADOF13Add = 3592 + INTEGER(IntKi), PARAMETER :: B5ADOF14Add = 3593 + INTEGER(IntKi), PARAMETER :: B5ADOF15Add = 3594 + INTEGER(IntKi), PARAMETER :: B5ADOF16Add = 3595 + INTEGER(IntKi), PARAMETER :: B5ADOF17Add = 3596 + INTEGER(IntKi), PARAMETER :: B5ADOF18Add = 3597 + INTEGER(IntKi), PARAMETER :: B5ADOF19Add = 3598 + INTEGER(IntKi), PARAMETER :: B5ADOF20Add = 3599 + INTEGER(IntKi), PARAMETER :: B5ADOF21Add = 3600 + INTEGER(IntKi), PARAMETER :: B5ADOF22Add = 3601 + INTEGER(IntKi), PARAMETER :: B5ADOF23Add = 3602 + INTEGER(IntKi), PARAMETER :: B5ADOF24Add = 3603 + INTEGER(IntKi), PARAMETER :: B5ADOF25Add = 3604 + INTEGER(IntKi), PARAMETER :: B5ADOF26Add = 3605 + INTEGER(IntKi), PARAMETER :: B5ADOF27Add = 3606 + INTEGER(IntKi), PARAMETER :: B5ADOF28Add = 3607 + INTEGER(IntKi), PARAMETER :: B5ADOF29Add = 3608 + INTEGER(IntKi), PARAMETER :: B5ADOF30Add = 3609 + INTEGER(IntKi), PARAMETER :: B5ADOF31Add = 3610 + INTEGER(IntKi), PARAMETER :: B5ADOF32Add = 3611 + INTEGER(IntKi), PARAMETER :: B5ADOF33Add = 3612 + INTEGER(IntKi), PARAMETER :: B5ADOF34Add = 3613 + INTEGER(IntKi), PARAMETER :: B5ADOF35Add = 3614 + INTEGER(IntKi), PARAMETER :: B5ADOF36Add = 3615 + INTEGER(IntKi), PARAMETER :: B5ADOF37Add = 3616 + INTEGER(IntKi), PARAMETER :: B5ADOF38Add = 3617 + INTEGER(IntKi), PARAMETER :: B5ADOF39Add = 3618 + INTEGER(IntKi), PARAMETER :: B5ADOF40Add = 3619 + INTEGER(IntKi), PARAMETER :: B5ADOF41Add = 3620 + INTEGER(IntKi), PARAMETER :: B5ADOF42Add = 3621 + INTEGER(IntKi), PARAMETER :: B5ADOF43Add = 3622 + INTEGER(IntKi), PARAMETER :: B5ADOF44Add = 3623 + INTEGER(IntKi), PARAMETER :: B5ADOF45Add = 3624 + INTEGER(IntKi), PARAMETER :: B5ADOF46Add = 3625 + INTEGER(IntKi), PARAMETER :: B5ADOF47Add = 3626 + INTEGER(IntKi), PARAMETER :: B5ADOF48Add = 3627 + INTEGER(IntKi), PARAMETER :: B5ADOF49Add = 3628 + INTEGER(IntKi), PARAMETER :: B5ADOF50Add = 3629 + INTEGER(IntKi), PARAMETER :: B5ADOF51Add = 3630 + INTEGER(IntKi), PARAMETER :: B5ADOF52Add = 3631 + INTEGER(IntKi), PARAMETER :: B5ADOF53Add = 3632 + INTEGER(IntKi), PARAMETER :: B5ADOF54Add = 3633 + INTEGER(IntKi), PARAMETER :: B5ADOF55Add = 3634 + INTEGER(IntKi), PARAMETER :: B5ADOF56Add = 3635 + INTEGER(IntKi), PARAMETER :: B5ADOF57Add = 3636 + INTEGER(IntKi), PARAMETER :: B5ADOF58Add = 3637 + INTEGER(IntKi), PARAMETER :: B5ADOF59Add = 3638 + INTEGER(IntKi), PARAMETER :: B5ADOF60Add = 3639 + INTEGER(IntKi), PARAMETER :: B5ADOF61Add = 3640 + INTEGER(IntKi), PARAMETER :: B5ADOF62Add = 3641 + INTEGER(IntKi), PARAMETER :: B5ADOF63Add = 3642 + INTEGER(IntKi), PARAMETER :: B5ADOF64Add = 3643 + INTEGER(IntKi), PARAMETER :: B5ADOF65Add = 3644 + INTEGER(IntKi), PARAMETER :: B5ADOF66Add = 3645 + INTEGER(IntKi), PARAMETER :: B5ADOF67Add = 3646 + INTEGER(IntKi), PARAMETER :: B5ADOF68Add = 3647 + INTEGER(IntKi), PARAMETER :: B5ADOF69Add = 3648 + INTEGER(IntKi), PARAMETER :: B5ADOF70Add = 3649 + INTEGER(IntKi), PARAMETER :: B5ADOF71Add = 3650 + INTEGER(IntKi), PARAMETER :: B5ADOF72Add = 3651 + INTEGER(IntKi), PARAMETER :: B5ADOF73Add = 3652 + INTEGER(IntKi), PARAMETER :: B5ADOF74Add = 3653 + INTEGER(IntKi), PARAMETER :: B5ADOF75Add = 3654 + INTEGER(IntKi), PARAMETER :: B5ADOF76Add = 3655 + INTEGER(IntKi), PARAMETER :: B5ADOF77Add = 3656 + INTEGER(IntKi), PARAMETER :: B5ADOF78Add = 3657 + INTEGER(IntKi), PARAMETER :: B5ADOF79Add = 3658 + INTEGER(IntKi), PARAMETER :: B5ADOF80Add = 3659 + INTEGER(IntKi), PARAMETER :: B5ADOF81Add = 3660 + INTEGER(IntKi), PARAMETER :: B5ADOF82Add = 3661 + INTEGER(IntKi), PARAMETER :: B5ADOF83Add = 3662 + INTEGER(IntKi), PARAMETER :: B5ADOF84Add = 3663 + INTEGER(IntKi), PARAMETER :: B5ADOF85Add = 3664 + INTEGER(IntKi), PARAMETER :: B5ADOF86Add = 3665 + INTEGER(IntKi), PARAMETER :: B5ADOF87Add = 3666 + INTEGER(IntKi), PARAMETER :: B5ADOF88Add = 3667 + INTEGER(IntKi), PARAMETER :: B5ADOF89Add = 3668 + INTEGER(IntKi), PARAMETER :: B5ADOF90Add = 3669 + INTEGER(IntKi), PARAMETER :: B5ADOF91Add = 3670 + INTEGER(IntKi), PARAMETER :: B5ADOF92Add = 3671 + INTEGER(IntKi), PARAMETER :: B5ADOF93Add = 3672 + INTEGER(IntKi), PARAMETER :: B5ADOF94Add = 3673 + INTEGER(IntKi), PARAMETER :: B5ADOF95Add = 3674 + INTEGER(IntKi), PARAMETER :: B5ADOF96Add = 3675 + INTEGER(IntKi), PARAMETER :: B5ADOF97Add = 3676 + INTEGER(IntKi), PARAMETER :: B5ADOF98Add = 3677 + INTEGER(IntKi), PARAMETER :: B5ADOF99Add = 3678 + INTEGER(IntKi), PARAMETER :: B6ADOF1Add = 3679 + INTEGER(IntKi), PARAMETER :: B6ADOF2Add = 3680 + INTEGER(IntKi), PARAMETER :: B6ADOF3Add = 3681 + INTEGER(IntKi), PARAMETER :: B6ADOF4Add = 3682 + INTEGER(IntKi), PARAMETER :: B6ADOF5Add = 3683 + INTEGER(IntKi), PARAMETER :: B6ADOF6Add = 3684 + INTEGER(IntKi), PARAMETER :: B6ADOF7Add = 3685 + INTEGER(IntKi), PARAMETER :: B6ADOF8Add = 3686 + INTEGER(IntKi), PARAMETER :: B6ADOF9Add = 3687 + INTEGER(IntKi), PARAMETER :: B6ADOF10Add = 3688 + INTEGER(IntKi), PARAMETER :: B6ADOF11Add = 3689 + INTEGER(IntKi), PARAMETER :: B6ADOF12Add = 3690 + INTEGER(IntKi), PARAMETER :: B6ADOF13Add = 3691 + INTEGER(IntKi), PARAMETER :: B6ADOF14Add = 3692 + INTEGER(IntKi), PARAMETER :: B6ADOF15Add = 3693 + INTEGER(IntKi), PARAMETER :: B6ADOF16Add = 3694 + INTEGER(IntKi), PARAMETER :: B6ADOF17Add = 3695 + INTEGER(IntKi), PARAMETER :: B6ADOF18Add = 3696 + INTEGER(IntKi), PARAMETER :: B6ADOF19Add = 3697 + INTEGER(IntKi), PARAMETER :: B6ADOF20Add = 3698 + INTEGER(IntKi), PARAMETER :: B6ADOF21Add = 3699 + INTEGER(IntKi), PARAMETER :: B6ADOF22Add = 3700 + INTEGER(IntKi), PARAMETER :: B6ADOF23Add = 3701 + INTEGER(IntKi), PARAMETER :: B6ADOF24Add = 3702 + INTEGER(IntKi), PARAMETER :: B6ADOF25Add = 3703 + INTEGER(IntKi), PARAMETER :: B6ADOF26Add = 3704 + INTEGER(IntKi), PARAMETER :: B6ADOF27Add = 3705 + INTEGER(IntKi), PARAMETER :: B6ADOF28Add = 3706 + INTEGER(IntKi), PARAMETER :: B6ADOF29Add = 3707 + INTEGER(IntKi), PARAMETER :: B6ADOF30Add = 3708 + INTEGER(IntKi), PARAMETER :: B6ADOF31Add = 3709 + INTEGER(IntKi), PARAMETER :: B6ADOF32Add = 3710 + INTEGER(IntKi), PARAMETER :: B6ADOF33Add = 3711 + INTEGER(IntKi), PARAMETER :: B6ADOF34Add = 3712 + INTEGER(IntKi), PARAMETER :: B6ADOF35Add = 3713 + INTEGER(IntKi), PARAMETER :: B6ADOF36Add = 3714 + INTEGER(IntKi), PARAMETER :: B6ADOF37Add = 3715 + INTEGER(IntKi), PARAMETER :: B6ADOF38Add = 3716 + INTEGER(IntKi), PARAMETER :: B6ADOF39Add = 3717 + INTEGER(IntKi), PARAMETER :: B6ADOF40Add = 3718 + INTEGER(IntKi), PARAMETER :: B6ADOF41Add = 3719 + INTEGER(IntKi), PARAMETER :: B6ADOF42Add = 3720 + INTEGER(IntKi), PARAMETER :: B6ADOF43Add = 3721 + INTEGER(IntKi), PARAMETER :: B6ADOF44Add = 3722 + INTEGER(IntKi), PARAMETER :: B6ADOF45Add = 3723 + INTEGER(IntKi), PARAMETER :: B6ADOF46Add = 3724 + INTEGER(IntKi), PARAMETER :: B6ADOF47Add = 3725 + INTEGER(IntKi), PARAMETER :: B6ADOF48Add = 3726 + INTEGER(IntKi), PARAMETER :: B6ADOF49Add = 3727 + INTEGER(IntKi), PARAMETER :: B6ADOF50Add = 3728 + INTEGER(IntKi), PARAMETER :: B6ADOF51Add = 3729 + INTEGER(IntKi), PARAMETER :: B6ADOF52Add = 3730 + INTEGER(IntKi), PARAMETER :: B6ADOF53Add = 3731 + INTEGER(IntKi), PARAMETER :: B6ADOF54Add = 3732 + INTEGER(IntKi), PARAMETER :: B6ADOF55Add = 3733 + INTEGER(IntKi), PARAMETER :: B6ADOF56Add = 3734 + INTEGER(IntKi), PARAMETER :: B6ADOF57Add = 3735 + INTEGER(IntKi), PARAMETER :: B6ADOF58Add = 3736 + INTEGER(IntKi), PARAMETER :: B6ADOF59Add = 3737 + INTEGER(IntKi), PARAMETER :: B6ADOF60Add = 3738 + INTEGER(IntKi), PARAMETER :: B6ADOF61Add = 3739 + INTEGER(IntKi), PARAMETER :: B6ADOF62Add = 3740 + INTEGER(IntKi), PARAMETER :: B6ADOF63Add = 3741 + INTEGER(IntKi), PARAMETER :: B6ADOF64Add = 3742 + INTEGER(IntKi), PARAMETER :: B6ADOF65Add = 3743 + INTEGER(IntKi), PARAMETER :: B6ADOF66Add = 3744 + INTEGER(IntKi), PARAMETER :: B6ADOF67Add = 3745 + INTEGER(IntKi), PARAMETER :: B6ADOF68Add = 3746 + INTEGER(IntKi), PARAMETER :: B6ADOF69Add = 3747 + INTEGER(IntKi), PARAMETER :: B6ADOF70Add = 3748 + INTEGER(IntKi), PARAMETER :: B6ADOF71Add = 3749 + INTEGER(IntKi), PARAMETER :: B6ADOF72Add = 3750 + INTEGER(IntKi), PARAMETER :: B6ADOF73Add = 3751 + INTEGER(IntKi), PARAMETER :: B6ADOF74Add = 3752 + INTEGER(IntKi), PARAMETER :: B6ADOF75Add = 3753 + INTEGER(IntKi), PARAMETER :: B6ADOF76Add = 3754 + INTEGER(IntKi), PARAMETER :: B6ADOF77Add = 3755 + INTEGER(IntKi), PARAMETER :: B6ADOF78Add = 3756 + INTEGER(IntKi), PARAMETER :: B6ADOF79Add = 3757 + INTEGER(IntKi), PARAMETER :: B6ADOF80Add = 3758 + INTEGER(IntKi), PARAMETER :: B6ADOF81Add = 3759 + INTEGER(IntKi), PARAMETER :: B6ADOF82Add = 3760 + INTEGER(IntKi), PARAMETER :: B6ADOF83Add = 3761 + INTEGER(IntKi), PARAMETER :: B6ADOF84Add = 3762 + INTEGER(IntKi), PARAMETER :: B6ADOF85Add = 3763 + INTEGER(IntKi), PARAMETER :: B6ADOF86Add = 3764 + INTEGER(IntKi), PARAMETER :: B6ADOF87Add = 3765 + INTEGER(IntKi), PARAMETER :: B6ADOF88Add = 3766 + INTEGER(IntKi), PARAMETER :: B6ADOF89Add = 3767 + INTEGER(IntKi), PARAMETER :: B6ADOF90Add = 3768 + INTEGER(IntKi), PARAMETER :: B6ADOF91Add = 3769 + INTEGER(IntKi), PARAMETER :: B6ADOF92Add = 3770 + INTEGER(IntKi), PARAMETER :: B6ADOF93Add = 3771 + INTEGER(IntKi), PARAMETER :: B6ADOF94Add = 3772 + INTEGER(IntKi), PARAMETER :: B6ADOF95Add = 3773 + INTEGER(IntKi), PARAMETER :: B6ADOF96Add = 3774 + INTEGER(IntKi), PARAMETER :: B6ADOF97Add = 3775 + INTEGER(IntKi), PARAMETER :: B6ADOF98Add = 3776 + INTEGER(IntKi), PARAMETER :: B6ADOF99Add = 3777 + INTEGER(IntKi), PARAMETER :: B7ADOF1Add = 3778 + INTEGER(IntKi), PARAMETER :: B7ADOF2Add = 3779 + INTEGER(IntKi), PARAMETER :: B7ADOF3Add = 3780 + INTEGER(IntKi), PARAMETER :: B7ADOF4Add = 3781 + INTEGER(IntKi), PARAMETER :: B7ADOF5Add = 3782 + INTEGER(IntKi), PARAMETER :: B7ADOF6Add = 3783 + INTEGER(IntKi), PARAMETER :: B7ADOF7Add = 3784 + INTEGER(IntKi), PARAMETER :: B7ADOF8Add = 3785 + INTEGER(IntKi), PARAMETER :: B7ADOF9Add = 3786 + INTEGER(IntKi), PARAMETER :: B7ADOF10Add = 3787 + INTEGER(IntKi), PARAMETER :: B7ADOF11Add = 3788 + INTEGER(IntKi), PARAMETER :: B7ADOF12Add = 3789 + INTEGER(IntKi), PARAMETER :: B7ADOF13Add = 3790 + INTEGER(IntKi), PARAMETER :: B7ADOF14Add = 3791 + INTEGER(IntKi), PARAMETER :: B7ADOF15Add = 3792 + INTEGER(IntKi), PARAMETER :: B7ADOF16Add = 3793 + INTEGER(IntKi), PARAMETER :: B7ADOF17Add = 3794 + INTEGER(IntKi), PARAMETER :: B7ADOF18Add = 3795 + INTEGER(IntKi), PARAMETER :: B7ADOF19Add = 3796 + INTEGER(IntKi), PARAMETER :: B7ADOF20Add = 3797 + INTEGER(IntKi), PARAMETER :: B7ADOF21Add = 3798 + INTEGER(IntKi), PARAMETER :: B7ADOF22Add = 3799 + INTEGER(IntKi), PARAMETER :: B7ADOF23Add = 3800 + INTEGER(IntKi), PARAMETER :: B7ADOF24Add = 3801 + INTEGER(IntKi), PARAMETER :: B7ADOF25Add = 3802 + INTEGER(IntKi), PARAMETER :: B7ADOF26Add = 3803 + INTEGER(IntKi), PARAMETER :: B7ADOF27Add = 3804 + INTEGER(IntKi), PARAMETER :: B7ADOF28Add = 3805 + INTEGER(IntKi), PARAMETER :: B7ADOF29Add = 3806 + INTEGER(IntKi), PARAMETER :: B7ADOF30Add = 3807 + INTEGER(IntKi), PARAMETER :: B7ADOF31Add = 3808 + INTEGER(IntKi), PARAMETER :: B7ADOF32Add = 3809 + INTEGER(IntKi), PARAMETER :: B7ADOF33Add = 3810 + INTEGER(IntKi), PARAMETER :: B7ADOF34Add = 3811 + INTEGER(IntKi), PARAMETER :: B7ADOF35Add = 3812 + INTEGER(IntKi), PARAMETER :: B7ADOF36Add = 3813 + INTEGER(IntKi), PARAMETER :: B7ADOF37Add = 3814 + INTEGER(IntKi), PARAMETER :: B7ADOF38Add = 3815 + INTEGER(IntKi), PARAMETER :: B7ADOF39Add = 3816 + INTEGER(IntKi), PARAMETER :: B7ADOF40Add = 3817 + INTEGER(IntKi), PARAMETER :: B7ADOF41Add = 3818 + INTEGER(IntKi), PARAMETER :: B7ADOF42Add = 3819 + INTEGER(IntKi), PARAMETER :: B7ADOF43Add = 3820 + INTEGER(IntKi), PARAMETER :: B7ADOF44Add = 3821 + INTEGER(IntKi), PARAMETER :: B7ADOF45Add = 3822 + INTEGER(IntKi), PARAMETER :: B7ADOF46Add = 3823 + INTEGER(IntKi), PARAMETER :: B7ADOF47Add = 3824 + INTEGER(IntKi), PARAMETER :: B7ADOF48Add = 3825 + INTEGER(IntKi), PARAMETER :: B7ADOF49Add = 3826 + INTEGER(IntKi), PARAMETER :: B7ADOF50Add = 3827 + INTEGER(IntKi), PARAMETER :: B7ADOF51Add = 3828 + INTEGER(IntKi), PARAMETER :: B7ADOF52Add = 3829 + INTEGER(IntKi), PARAMETER :: B7ADOF53Add = 3830 + INTEGER(IntKi), PARAMETER :: B7ADOF54Add = 3831 + INTEGER(IntKi), PARAMETER :: B7ADOF55Add = 3832 + INTEGER(IntKi), PARAMETER :: B7ADOF56Add = 3833 + INTEGER(IntKi), PARAMETER :: B7ADOF57Add = 3834 + INTEGER(IntKi), PARAMETER :: B7ADOF58Add = 3835 + INTEGER(IntKi), PARAMETER :: B7ADOF59Add = 3836 + INTEGER(IntKi), PARAMETER :: B7ADOF60Add = 3837 + INTEGER(IntKi), PARAMETER :: B7ADOF61Add = 3838 + INTEGER(IntKi), PARAMETER :: B7ADOF62Add = 3839 + INTEGER(IntKi), PARAMETER :: B7ADOF63Add = 3840 + INTEGER(IntKi), PARAMETER :: B7ADOF64Add = 3841 + INTEGER(IntKi), PARAMETER :: B7ADOF65Add = 3842 + INTEGER(IntKi), PARAMETER :: B7ADOF66Add = 3843 + INTEGER(IntKi), PARAMETER :: B7ADOF67Add = 3844 + INTEGER(IntKi), PARAMETER :: B7ADOF68Add = 3845 + INTEGER(IntKi), PARAMETER :: B7ADOF69Add = 3846 + INTEGER(IntKi), PARAMETER :: B7ADOF70Add = 3847 + INTEGER(IntKi), PARAMETER :: B7ADOF71Add = 3848 + INTEGER(IntKi), PARAMETER :: B7ADOF72Add = 3849 + INTEGER(IntKi), PARAMETER :: B7ADOF73Add = 3850 + INTEGER(IntKi), PARAMETER :: B7ADOF74Add = 3851 + INTEGER(IntKi), PARAMETER :: B7ADOF75Add = 3852 + INTEGER(IntKi), PARAMETER :: B7ADOF76Add = 3853 + INTEGER(IntKi), PARAMETER :: B7ADOF77Add = 3854 + INTEGER(IntKi), PARAMETER :: B7ADOF78Add = 3855 + INTEGER(IntKi), PARAMETER :: B7ADOF79Add = 3856 + INTEGER(IntKi), PARAMETER :: B7ADOF80Add = 3857 + INTEGER(IntKi), PARAMETER :: B7ADOF81Add = 3858 + INTEGER(IntKi), PARAMETER :: B7ADOF82Add = 3859 + INTEGER(IntKi), PARAMETER :: B7ADOF83Add = 3860 + INTEGER(IntKi), PARAMETER :: B7ADOF84Add = 3861 + INTEGER(IntKi), PARAMETER :: B7ADOF85Add = 3862 + INTEGER(IntKi), PARAMETER :: B7ADOF86Add = 3863 + INTEGER(IntKi), PARAMETER :: B7ADOF87Add = 3864 + INTEGER(IntKi), PARAMETER :: B7ADOF88Add = 3865 + INTEGER(IntKi), PARAMETER :: B7ADOF89Add = 3866 + INTEGER(IntKi), PARAMETER :: B7ADOF90Add = 3867 + INTEGER(IntKi), PARAMETER :: B7ADOF91Add = 3868 + INTEGER(IntKi), PARAMETER :: B7ADOF92Add = 3869 + INTEGER(IntKi), PARAMETER :: B7ADOF93Add = 3870 + INTEGER(IntKi), PARAMETER :: B7ADOF94Add = 3871 + INTEGER(IntKi), PARAMETER :: B7ADOF95Add = 3872 + INTEGER(IntKi), PARAMETER :: B7ADOF96Add = 3873 + INTEGER(IntKi), PARAMETER :: B7ADOF97Add = 3874 + INTEGER(IntKi), PARAMETER :: B7ADOF98Add = 3875 + INTEGER(IntKi), PARAMETER :: B7ADOF99Add = 3876 + INTEGER(IntKi), PARAMETER :: B8ADOF1Add = 3877 + INTEGER(IntKi), PARAMETER :: B8ADOF2Add = 3878 + INTEGER(IntKi), PARAMETER :: B8ADOF3Add = 3879 + INTEGER(IntKi), PARAMETER :: B8ADOF4Add = 3880 + INTEGER(IntKi), PARAMETER :: B8ADOF5Add = 3881 + INTEGER(IntKi), PARAMETER :: B8ADOF6Add = 3882 + INTEGER(IntKi), PARAMETER :: B8ADOF7Add = 3883 + INTEGER(IntKi), PARAMETER :: B8ADOF8Add = 3884 + INTEGER(IntKi), PARAMETER :: B8ADOF9Add = 3885 + INTEGER(IntKi), PARAMETER :: B8ADOF10Add = 3886 + INTEGER(IntKi), PARAMETER :: B8ADOF11Add = 3887 + INTEGER(IntKi), PARAMETER :: B8ADOF12Add = 3888 + INTEGER(IntKi), PARAMETER :: B8ADOF13Add = 3889 + INTEGER(IntKi), PARAMETER :: B8ADOF14Add = 3890 + INTEGER(IntKi), PARAMETER :: B8ADOF15Add = 3891 + INTEGER(IntKi), PARAMETER :: B8ADOF16Add = 3892 + INTEGER(IntKi), PARAMETER :: B8ADOF17Add = 3893 + INTEGER(IntKi), PARAMETER :: B8ADOF18Add = 3894 + INTEGER(IntKi), PARAMETER :: B8ADOF19Add = 3895 + INTEGER(IntKi), PARAMETER :: B8ADOF20Add = 3896 + INTEGER(IntKi), PARAMETER :: B8ADOF21Add = 3897 + INTEGER(IntKi), PARAMETER :: B8ADOF22Add = 3898 + INTEGER(IntKi), PARAMETER :: B8ADOF23Add = 3899 + INTEGER(IntKi), PARAMETER :: B8ADOF24Add = 3900 + INTEGER(IntKi), PARAMETER :: B8ADOF25Add = 3901 + INTEGER(IntKi), PARAMETER :: B8ADOF26Add = 3902 + INTEGER(IntKi), PARAMETER :: B8ADOF27Add = 3903 + INTEGER(IntKi), PARAMETER :: B8ADOF28Add = 3904 + INTEGER(IntKi), PARAMETER :: B8ADOF29Add = 3905 + INTEGER(IntKi), PARAMETER :: B8ADOF30Add = 3906 + INTEGER(IntKi), PARAMETER :: B8ADOF31Add = 3907 + INTEGER(IntKi), PARAMETER :: B8ADOF32Add = 3908 + INTEGER(IntKi), PARAMETER :: B8ADOF33Add = 3909 + INTEGER(IntKi), PARAMETER :: B8ADOF34Add = 3910 + INTEGER(IntKi), PARAMETER :: B8ADOF35Add = 3911 + INTEGER(IntKi), PARAMETER :: B8ADOF36Add = 3912 + INTEGER(IntKi), PARAMETER :: B8ADOF37Add = 3913 + INTEGER(IntKi), PARAMETER :: B8ADOF38Add = 3914 + INTEGER(IntKi), PARAMETER :: B8ADOF39Add = 3915 + INTEGER(IntKi), PARAMETER :: B8ADOF40Add = 3916 + INTEGER(IntKi), PARAMETER :: B8ADOF41Add = 3917 + INTEGER(IntKi), PARAMETER :: B8ADOF42Add = 3918 + INTEGER(IntKi), PARAMETER :: B8ADOF43Add = 3919 + INTEGER(IntKi), PARAMETER :: B8ADOF44Add = 3920 + INTEGER(IntKi), PARAMETER :: B8ADOF45Add = 3921 + INTEGER(IntKi), PARAMETER :: B8ADOF46Add = 3922 + INTEGER(IntKi), PARAMETER :: B8ADOF47Add = 3923 + INTEGER(IntKi), PARAMETER :: B8ADOF48Add = 3924 + INTEGER(IntKi), PARAMETER :: B8ADOF49Add = 3925 + INTEGER(IntKi), PARAMETER :: B8ADOF50Add = 3926 + INTEGER(IntKi), PARAMETER :: B8ADOF51Add = 3927 + INTEGER(IntKi), PARAMETER :: B8ADOF52Add = 3928 + INTEGER(IntKi), PARAMETER :: B8ADOF53Add = 3929 + INTEGER(IntKi), PARAMETER :: B8ADOF54Add = 3930 + INTEGER(IntKi), PARAMETER :: B8ADOF55Add = 3931 + INTEGER(IntKi), PARAMETER :: B8ADOF56Add = 3932 + INTEGER(IntKi), PARAMETER :: B8ADOF57Add = 3933 + INTEGER(IntKi), PARAMETER :: B8ADOF58Add = 3934 + INTEGER(IntKi), PARAMETER :: B8ADOF59Add = 3935 + INTEGER(IntKi), PARAMETER :: B8ADOF60Add = 3936 + INTEGER(IntKi), PARAMETER :: B8ADOF61Add = 3937 + INTEGER(IntKi), PARAMETER :: B8ADOF62Add = 3938 + INTEGER(IntKi), PARAMETER :: B8ADOF63Add = 3939 + INTEGER(IntKi), PARAMETER :: B8ADOF64Add = 3940 + INTEGER(IntKi), PARAMETER :: B8ADOF65Add = 3941 + INTEGER(IntKi), PARAMETER :: B8ADOF66Add = 3942 + INTEGER(IntKi), PARAMETER :: B8ADOF67Add = 3943 + INTEGER(IntKi), PARAMETER :: B8ADOF68Add = 3944 + INTEGER(IntKi), PARAMETER :: B8ADOF69Add = 3945 + INTEGER(IntKi), PARAMETER :: B8ADOF70Add = 3946 + INTEGER(IntKi), PARAMETER :: B8ADOF71Add = 3947 + INTEGER(IntKi), PARAMETER :: B8ADOF72Add = 3948 + INTEGER(IntKi), PARAMETER :: B8ADOF73Add = 3949 + INTEGER(IntKi), PARAMETER :: B8ADOF74Add = 3950 + INTEGER(IntKi), PARAMETER :: B8ADOF75Add = 3951 + INTEGER(IntKi), PARAMETER :: B8ADOF76Add = 3952 + INTEGER(IntKi), PARAMETER :: B8ADOF77Add = 3953 + INTEGER(IntKi), PARAMETER :: B8ADOF78Add = 3954 + INTEGER(IntKi), PARAMETER :: B8ADOF79Add = 3955 + INTEGER(IntKi), PARAMETER :: B8ADOF80Add = 3956 + INTEGER(IntKi), PARAMETER :: B8ADOF81Add = 3957 + INTEGER(IntKi), PARAMETER :: B8ADOF82Add = 3958 + INTEGER(IntKi), PARAMETER :: B8ADOF83Add = 3959 + INTEGER(IntKi), PARAMETER :: B8ADOF84Add = 3960 + INTEGER(IntKi), PARAMETER :: B8ADOF85Add = 3961 + INTEGER(IntKi), PARAMETER :: B8ADOF86Add = 3962 + INTEGER(IntKi), PARAMETER :: B8ADOF87Add = 3963 + INTEGER(IntKi), PARAMETER :: B8ADOF88Add = 3964 + INTEGER(IntKi), PARAMETER :: B8ADOF89Add = 3965 + INTEGER(IntKi), PARAMETER :: B8ADOF90Add = 3966 + INTEGER(IntKi), PARAMETER :: B8ADOF91Add = 3967 + INTEGER(IntKi), PARAMETER :: B8ADOF92Add = 3968 + INTEGER(IntKi), PARAMETER :: B8ADOF93Add = 3969 + INTEGER(IntKi), PARAMETER :: B8ADOF94Add = 3970 + INTEGER(IntKi), PARAMETER :: B8ADOF95Add = 3971 + INTEGER(IntKi), PARAMETER :: B8ADOF96Add = 3972 + INTEGER(IntKi), PARAMETER :: B8ADOF97Add = 3973 + INTEGER(IntKi), PARAMETER :: B8ADOF98Add = 3974 + INTEGER(IntKi), PARAMETER :: B8ADOF99Add = 3975 + INTEGER(IntKi), PARAMETER :: B9ADOF1Add = 3976 + INTEGER(IntKi), PARAMETER :: B9ADOF2Add = 3977 + INTEGER(IntKi), PARAMETER :: B9ADOF3Add = 3978 + INTEGER(IntKi), PARAMETER :: B9ADOF4Add = 3979 + INTEGER(IntKi), PARAMETER :: B9ADOF5Add = 3980 + INTEGER(IntKi), PARAMETER :: B9ADOF6Add = 3981 + INTEGER(IntKi), PARAMETER :: B9ADOF7Add = 3982 + INTEGER(IntKi), PARAMETER :: B9ADOF8Add = 3983 + INTEGER(IntKi), PARAMETER :: B9ADOF9Add = 3984 + INTEGER(IntKi), PARAMETER :: B9ADOF10Add = 3985 + INTEGER(IntKi), PARAMETER :: B9ADOF11Add = 3986 + INTEGER(IntKi), PARAMETER :: B9ADOF12Add = 3987 + INTEGER(IntKi), PARAMETER :: B9ADOF13Add = 3988 + INTEGER(IntKi), PARAMETER :: B9ADOF14Add = 3989 + INTEGER(IntKi), PARAMETER :: B9ADOF15Add = 3990 + INTEGER(IntKi), PARAMETER :: B9ADOF16Add = 3991 + INTEGER(IntKi), PARAMETER :: B9ADOF17Add = 3992 + INTEGER(IntKi), PARAMETER :: B9ADOF18Add = 3993 + INTEGER(IntKi), PARAMETER :: B9ADOF19Add = 3994 + INTEGER(IntKi), PARAMETER :: B9ADOF20Add = 3995 + INTEGER(IntKi), PARAMETER :: B9ADOF21Add = 3996 + INTEGER(IntKi), PARAMETER :: B9ADOF22Add = 3997 + INTEGER(IntKi), PARAMETER :: B9ADOF23Add = 3998 + INTEGER(IntKi), PARAMETER :: B9ADOF24Add = 3999 + INTEGER(IntKi), PARAMETER :: B9ADOF25Add = 4000 + INTEGER(IntKi), PARAMETER :: B9ADOF26Add = 4001 + INTEGER(IntKi), PARAMETER :: B9ADOF27Add = 4002 + INTEGER(IntKi), PARAMETER :: B9ADOF28Add = 4003 + INTEGER(IntKi), PARAMETER :: B9ADOF29Add = 4004 + INTEGER(IntKi), PARAMETER :: B9ADOF30Add = 4005 + INTEGER(IntKi), PARAMETER :: B9ADOF31Add = 4006 + INTEGER(IntKi), PARAMETER :: B9ADOF32Add = 4007 + INTEGER(IntKi), PARAMETER :: B9ADOF33Add = 4008 + INTEGER(IntKi), PARAMETER :: B9ADOF34Add = 4009 + INTEGER(IntKi), PARAMETER :: B9ADOF35Add = 4010 + INTEGER(IntKi), PARAMETER :: B9ADOF36Add = 4011 + INTEGER(IntKi), PARAMETER :: B9ADOF37Add = 4012 + INTEGER(IntKi), PARAMETER :: B9ADOF38Add = 4013 + INTEGER(IntKi), PARAMETER :: B9ADOF39Add = 4014 + INTEGER(IntKi), PARAMETER :: B9ADOF40Add = 4015 + INTEGER(IntKi), PARAMETER :: B9ADOF41Add = 4016 + INTEGER(IntKi), PARAMETER :: B9ADOF42Add = 4017 + INTEGER(IntKi), PARAMETER :: B9ADOF43Add = 4018 + INTEGER(IntKi), PARAMETER :: B9ADOF44Add = 4019 + INTEGER(IntKi), PARAMETER :: B9ADOF45Add = 4020 + INTEGER(IntKi), PARAMETER :: B9ADOF46Add = 4021 + INTEGER(IntKi), PARAMETER :: B9ADOF47Add = 4022 + INTEGER(IntKi), PARAMETER :: B9ADOF48Add = 4023 + INTEGER(IntKi), PARAMETER :: B9ADOF49Add = 4024 + INTEGER(IntKi), PARAMETER :: B9ADOF50Add = 4025 + INTEGER(IntKi), PARAMETER :: B9ADOF51Add = 4026 + INTEGER(IntKi), PARAMETER :: B9ADOF52Add = 4027 + INTEGER(IntKi), PARAMETER :: B9ADOF53Add = 4028 + INTEGER(IntKi), PARAMETER :: B9ADOF54Add = 4029 + INTEGER(IntKi), PARAMETER :: B9ADOF55Add = 4030 + INTEGER(IntKi), PARAMETER :: B9ADOF56Add = 4031 + INTEGER(IntKi), PARAMETER :: B9ADOF57Add = 4032 + INTEGER(IntKi), PARAMETER :: B9ADOF58Add = 4033 + INTEGER(IntKi), PARAMETER :: B9ADOF59Add = 4034 + INTEGER(IntKi), PARAMETER :: B9ADOF60Add = 4035 + INTEGER(IntKi), PARAMETER :: B9ADOF61Add = 4036 + INTEGER(IntKi), PARAMETER :: B9ADOF62Add = 4037 + INTEGER(IntKi), PARAMETER :: B9ADOF63Add = 4038 + INTEGER(IntKi), PARAMETER :: B9ADOF64Add = 4039 + INTEGER(IntKi), PARAMETER :: B9ADOF65Add = 4040 + INTEGER(IntKi), PARAMETER :: B9ADOF66Add = 4041 + INTEGER(IntKi), PARAMETER :: B9ADOF67Add = 4042 + INTEGER(IntKi), PARAMETER :: B9ADOF68Add = 4043 + INTEGER(IntKi), PARAMETER :: B9ADOF69Add = 4044 + INTEGER(IntKi), PARAMETER :: B9ADOF70Add = 4045 + INTEGER(IntKi), PARAMETER :: B9ADOF71Add = 4046 + INTEGER(IntKi), PARAMETER :: B9ADOF72Add = 4047 + INTEGER(IntKi), PARAMETER :: B9ADOF73Add = 4048 + INTEGER(IntKi), PARAMETER :: B9ADOF74Add = 4049 + INTEGER(IntKi), PARAMETER :: B9ADOF75Add = 4050 + INTEGER(IntKi), PARAMETER :: B9ADOF76Add = 4051 + INTEGER(IntKi), PARAMETER :: B9ADOF77Add = 4052 + INTEGER(IntKi), PARAMETER :: B9ADOF78Add = 4053 + INTEGER(IntKi), PARAMETER :: B9ADOF79Add = 4054 + INTEGER(IntKi), PARAMETER :: B9ADOF80Add = 4055 + INTEGER(IntKi), PARAMETER :: B9ADOF81Add = 4056 + INTEGER(IntKi), PARAMETER :: B9ADOF82Add = 4057 + INTEGER(IntKi), PARAMETER :: B9ADOF83Add = 4058 + INTEGER(IntKi), PARAMETER :: B9ADOF84Add = 4059 + INTEGER(IntKi), PARAMETER :: B9ADOF85Add = 4060 + INTEGER(IntKi), PARAMETER :: B9ADOF86Add = 4061 + INTEGER(IntKi), PARAMETER :: B9ADOF87Add = 4062 + INTEGER(IntKi), PARAMETER :: B9ADOF88Add = 4063 + INTEGER(IntKi), PARAMETER :: B9ADOF89Add = 4064 + INTEGER(IntKi), PARAMETER :: B9ADOF90Add = 4065 + INTEGER(IntKi), PARAMETER :: B9ADOF91Add = 4066 + INTEGER(IntKi), PARAMETER :: B9ADOF92Add = 4067 + INTEGER(IntKi), PARAMETER :: B9ADOF93Add = 4068 + INTEGER(IntKi), PARAMETER :: B9ADOF94Add = 4069 + INTEGER(IntKi), PARAMETER :: B9ADOF95Add = 4070 + INTEGER(IntKi), PARAMETER :: B9ADOF96Add = 4071 + INTEGER(IntKi), PARAMETER :: B9ADOF97Add = 4072 + INTEGER(IntKi), PARAMETER :: B9ADOF98Add = 4073 + INTEGER(IntKi), PARAMETER :: B9ADOF99Add = 4074 + INTEGER(IntKi), PARAMETER :: B1ADOF1Rdt = 4075 + INTEGER(IntKi), PARAMETER :: B1ADOF2Rdt = 4076 + INTEGER(IntKi), PARAMETER :: B1ADOF3Rdt = 4077 + INTEGER(IntKi), PARAMETER :: B1ADOF4Rdt = 4078 + INTEGER(IntKi), PARAMETER :: B1ADOF5Rdt = 4079 + INTEGER(IntKi), PARAMETER :: B1ADOF6Rdt = 4080 + INTEGER(IntKi), PARAMETER :: B1ADOF7Rdt = 4081 + INTEGER(IntKi), PARAMETER :: B1ADOF8Rdt = 4082 + INTEGER(IntKi), PARAMETER :: B1ADOF9Rdt = 4083 + INTEGER(IntKi), PARAMETER :: B1ADOF10Rdt = 4084 + INTEGER(IntKi), PARAMETER :: B1ADOF11Rdt = 4085 + INTEGER(IntKi), PARAMETER :: B1ADOF12Rdt = 4086 + INTEGER(IntKi), PARAMETER :: B1ADOF13Rdt = 4087 + INTEGER(IntKi), PARAMETER :: B1ADOF14Rdt = 4088 + INTEGER(IntKi), PARAMETER :: B1ADOF15Rdt = 4089 + INTEGER(IntKi), PARAMETER :: B1ADOF16Rdt = 4090 + INTEGER(IntKi), PARAMETER :: B1ADOF17Rdt = 4091 + INTEGER(IntKi), PARAMETER :: B1ADOF18Rdt = 4092 + INTEGER(IntKi), PARAMETER :: B1ADOF19Rdt = 4093 + INTEGER(IntKi), PARAMETER :: B1ADOF20Rdt = 4094 + INTEGER(IntKi), PARAMETER :: B1ADOF21Rdt = 4095 + INTEGER(IntKi), PARAMETER :: B1ADOF22Rdt = 4096 + INTEGER(IntKi), PARAMETER :: B1ADOF23Rdt = 4097 + INTEGER(IntKi), PARAMETER :: B1ADOF24Rdt = 4098 + INTEGER(IntKi), PARAMETER :: B1ADOF25Rdt = 4099 + INTEGER(IntKi), PARAMETER :: B1ADOF26Rdt = 4100 + INTEGER(IntKi), PARAMETER :: B1ADOF27Rdt = 4101 + INTEGER(IntKi), PARAMETER :: B1ADOF28Rdt = 4102 + INTEGER(IntKi), PARAMETER :: B1ADOF29Rdt = 4103 + INTEGER(IntKi), PARAMETER :: B1ADOF30Rdt = 4104 + INTEGER(IntKi), PARAMETER :: B1ADOF31Rdt = 4105 + INTEGER(IntKi), PARAMETER :: B1ADOF32Rdt = 4106 + INTEGER(IntKi), PARAMETER :: B1ADOF33Rdt = 4107 + INTEGER(IntKi), PARAMETER :: B1ADOF34Rdt = 4108 + INTEGER(IntKi), PARAMETER :: B1ADOF35Rdt = 4109 + INTEGER(IntKi), PARAMETER :: B1ADOF36Rdt = 4110 + INTEGER(IntKi), PARAMETER :: B1ADOF37Rdt = 4111 + INTEGER(IntKi), PARAMETER :: B1ADOF38Rdt = 4112 + INTEGER(IntKi), PARAMETER :: B1ADOF39Rdt = 4113 + INTEGER(IntKi), PARAMETER :: B1ADOF40Rdt = 4114 + INTEGER(IntKi), PARAMETER :: B1ADOF41Rdt = 4115 + INTEGER(IntKi), PARAMETER :: B1ADOF42Rdt = 4116 + INTEGER(IntKi), PARAMETER :: B1ADOF43Rdt = 4117 + INTEGER(IntKi), PARAMETER :: B1ADOF44Rdt = 4118 + INTEGER(IntKi), PARAMETER :: B1ADOF45Rdt = 4119 + INTEGER(IntKi), PARAMETER :: B1ADOF46Rdt = 4120 + INTEGER(IntKi), PARAMETER :: B1ADOF47Rdt = 4121 + INTEGER(IntKi), PARAMETER :: B1ADOF48Rdt = 4122 + INTEGER(IntKi), PARAMETER :: B1ADOF49Rdt = 4123 + INTEGER(IntKi), PARAMETER :: B1ADOF50Rdt = 4124 + INTEGER(IntKi), PARAMETER :: B1ADOF51Rdt = 4125 + INTEGER(IntKi), PARAMETER :: B1ADOF52Rdt = 4126 + INTEGER(IntKi), PARAMETER :: B1ADOF53Rdt = 4127 + INTEGER(IntKi), PARAMETER :: B1ADOF54Rdt = 4128 + INTEGER(IntKi), PARAMETER :: B1ADOF55Rdt = 4129 + INTEGER(IntKi), PARAMETER :: B1ADOF56Rdt = 4130 + INTEGER(IntKi), PARAMETER :: B1ADOF57Rdt = 4131 + INTEGER(IntKi), PARAMETER :: B1ADOF58Rdt = 4132 + INTEGER(IntKi), PARAMETER :: B1ADOF59Rdt = 4133 + INTEGER(IntKi), PARAMETER :: B1ADOF60Rdt = 4134 + INTEGER(IntKi), PARAMETER :: B1ADOF61Rdt = 4135 + INTEGER(IntKi), PARAMETER :: B1ADOF62Rdt = 4136 + INTEGER(IntKi), PARAMETER :: B1ADOF63Rdt = 4137 + INTEGER(IntKi), PARAMETER :: B1ADOF64Rdt = 4138 + INTEGER(IntKi), PARAMETER :: B1ADOF65Rdt = 4139 + INTEGER(IntKi), PARAMETER :: B1ADOF66Rdt = 4140 + INTEGER(IntKi), PARAMETER :: B1ADOF67Rdt = 4141 + INTEGER(IntKi), PARAMETER :: B1ADOF68Rdt = 4142 + INTEGER(IntKi), PARAMETER :: B1ADOF69Rdt = 4143 + INTEGER(IntKi), PARAMETER :: B1ADOF70Rdt = 4144 + INTEGER(IntKi), PARAMETER :: B1ADOF71Rdt = 4145 + INTEGER(IntKi), PARAMETER :: B1ADOF72Rdt = 4146 + INTEGER(IntKi), PARAMETER :: B1ADOF73Rdt = 4147 + INTEGER(IntKi), PARAMETER :: B1ADOF74Rdt = 4148 + INTEGER(IntKi), PARAMETER :: B1ADOF75Rdt = 4149 + INTEGER(IntKi), PARAMETER :: B1ADOF76Rdt = 4150 + INTEGER(IntKi), PARAMETER :: B1ADOF77Rdt = 4151 + INTEGER(IntKi), PARAMETER :: B1ADOF78Rdt = 4152 + INTEGER(IntKi), PARAMETER :: B1ADOF79Rdt = 4153 + INTEGER(IntKi), PARAMETER :: B1ADOF80Rdt = 4154 + INTEGER(IntKi), PARAMETER :: B1ADOF81Rdt = 4155 + INTEGER(IntKi), PARAMETER :: B1ADOF82Rdt = 4156 + INTEGER(IntKi), PARAMETER :: B1ADOF83Rdt = 4157 + INTEGER(IntKi), PARAMETER :: B1ADOF84Rdt = 4158 + INTEGER(IntKi), PARAMETER :: B1ADOF85Rdt = 4159 + INTEGER(IntKi), PARAMETER :: B1ADOF86Rdt = 4160 + INTEGER(IntKi), PARAMETER :: B1ADOF87Rdt = 4161 + INTEGER(IntKi), PARAMETER :: B1ADOF88Rdt = 4162 + INTEGER(IntKi), PARAMETER :: B1ADOF89Rdt = 4163 + INTEGER(IntKi), PARAMETER :: B1ADOF90Rdt = 4164 + INTEGER(IntKi), PARAMETER :: B1ADOF91Rdt = 4165 + INTEGER(IntKi), PARAMETER :: B1ADOF92Rdt = 4166 + INTEGER(IntKi), PARAMETER :: B1ADOF93Rdt = 4167 + INTEGER(IntKi), PARAMETER :: B1ADOF94Rdt = 4168 + INTEGER(IntKi), PARAMETER :: B1ADOF95Rdt = 4169 + INTEGER(IntKi), PARAMETER :: B1ADOF96Rdt = 4170 + INTEGER(IntKi), PARAMETER :: B1ADOF97Rdt = 4171 + INTEGER(IntKi), PARAMETER :: B1ADOF98Rdt = 4172 + INTEGER(IntKi), PARAMETER :: B1ADOF99Rdt = 4173 + INTEGER(IntKi), PARAMETER :: B2ADOF1Rdt = 4174 + INTEGER(IntKi), PARAMETER :: B2ADOF2Rdt = 4175 + INTEGER(IntKi), PARAMETER :: B2ADOF3Rdt = 4176 + INTEGER(IntKi), PARAMETER :: B2ADOF4Rdt = 4177 + INTEGER(IntKi), PARAMETER :: B2ADOF5Rdt = 4178 + INTEGER(IntKi), PARAMETER :: B2ADOF6Rdt = 4179 + INTEGER(IntKi), PARAMETER :: B2ADOF7Rdt = 4180 + INTEGER(IntKi), PARAMETER :: B2ADOF8Rdt = 4181 + INTEGER(IntKi), PARAMETER :: B2ADOF9Rdt = 4182 + INTEGER(IntKi), PARAMETER :: B2ADOF10Rdt = 4183 + INTEGER(IntKi), PARAMETER :: B2ADOF11Rdt = 4184 + INTEGER(IntKi), PARAMETER :: B2ADOF12Rdt = 4185 + INTEGER(IntKi), PARAMETER :: B2ADOF13Rdt = 4186 + INTEGER(IntKi), PARAMETER :: B2ADOF14Rdt = 4187 + INTEGER(IntKi), PARAMETER :: B2ADOF15Rdt = 4188 + INTEGER(IntKi), PARAMETER :: B2ADOF16Rdt = 4189 + INTEGER(IntKi), PARAMETER :: B2ADOF17Rdt = 4190 + INTEGER(IntKi), PARAMETER :: B2ADOF18Rdt = 4191 + INTEGER(IntKi), PARAMETER :: B2ADOF19Rdt = 4192 + INTEGER(IntKi), PARAMETER :: B2ADOF20Rdt = 4193 + INTEGER(IntKi), PARAMETER :: B2ADOF21Rdt = 4194 + INTEGER(IntKi), PARAMETER :: B2ADOF22Rdt = 4195 + INTEGER(IntKi), PARAMETER :: B2ADOF23Rdt = 4196 + INTEGER(IntKi), PARAMETER :: B2ADOF24Rdt = 4197 + INTEGER(IntKi), PARAMETER :: B2ADOF25Rdt = 4198 + INTEGER(IntKi), PARAMETER :: B2ADOF26Rdt = 4199 + INTEGER(IntKi), PARAMETER :: B2ADOF27Rdt = 4200 + INTEGER(IntKi), PARAMETER :: B2ADOF28Rdt = 4201 + INTEGER(IntKi), PARAMETER :: B2ADOF29Rdt = 4202 + INTEGER(IntKi), PARAMETER :: B2ADOF30Rdt = 4203 + INTEGER(IntKi), PARAMETER :: B2ADOF31Rdt = 4204 + INTEGER(IntKi), PARAMETER :: B2ADOF32Rdt = 4205 + INTEGER(IntKi), PARAMETER :: B2ADOF33Rdt = 4206 + INTEGER(IntKi), PARAMETER :: B2ADOF34Rdt = 4207 + INTEGER(IntKi), PARAMETER :: B2ADOF35Rdt = 4208 + INTEGER(IntKi), PARAMETER :: B2ADOF36Rdt = 4209 + INTEGER(IntKi), PARAMETER :: B2ADOF37Rdt = 4210 + INTEGER(IntKi), PARAMETER :: B2ADOF38Rdt = 4211 + INTEGER(IntKi), PARAMETER :: B2ADOF39Rdt = 4212 + INTEGER(IntKi), PARAMETER :: B2ADOF40Rdt = 4213 + INTEGER(IntKi), PARAMETER :: B2ADOF41Rdt = 4214 + INTEGER(IntKi), PARAMETER :: B2ADOF42Rdt = 4215 + INTEGER(IntKi), PARAMETER :: B2ADOF43Rdt = 4216 + INTEGER(IntKi), PARAMETER :: B2ADOF44Rdt = 4217 + INTEGER(IntKi), PARAMETER :: B2ADOF45Rdt = 4218 + INTEGER(IntKi), PARAMETER :: B2ADOF46Rdt = 4219 + INTEGER(IntKi), PARAMETER :: B2ADOF47Rdt = 4220 + INTEGER(IntKi), PARAMETER :: B2ADOF48Rdt = 4221 + INTEGER(IntKi), PARAMETER :: B2ADOF49Rdt = 4222 + INTEGER(IntKi), PARAMETER :: B2ADOF50Rdt = 4223 + INTEGER(IntKi), PARAMETER :: B2ADOF51Rdt = 4224 + INTEGER(IntKi), PARAMETER :: B2ADOF52Rdt = 4225 + INTEGER(IntKi), PARAMETER :: B2ADOF53Rdt = 4226 + INTEGER(IntKi), PARAMETER :: B2ADOF54Rdt = 4227 + INTEGER(IntKi), PARAMETER :: B2ADOF55Rdt = 4228 + INTEGER(IntKi), PARAMETER :: B2ADOF56Rdt = 4229 + INTEGER(IntKi), PARAMETER :: B2ADOF57Rdt = 4230 + INTEGER(IntKi), PARAMETER :: B2ADOF58Rdt = 4231 + INTEGER(IntKi), PARAMETER :: B2ADOF59Rdt = 4232 + INTEGER(IntKi), PARAMETER :: B2ADOF60Rdt = 4233 + INTEGER(IntKi), PARAMETER :: B2ADOF61Rdt = 4234 + INTEGER(IntKi), PARAMETER :: B2ADOF62Rdt = 4235 + INTEGER(IntKi), PARAMETER :: B2ADOF63Rdt = 4236 + INTEGER(IntKi), PARAMETER :: B2ADOF64Rdt = 4237 + INTEGER(IntKi), PARAMETER :: B2ADOF65Rdt = 4238 + INTEGER(IntKi), PARAMETER :: B2ADOF66Rdt = 4239 + INTEGER(IntKi), PARAMETER :: B2ADOF67Rdt = 4240 + INTEGER(IntKi), PARAMETER :: B2ADOF68Rdt = 4241 + INTEGER(IntKi), PARAMETER :: B2ADOF69Rdt = 4242 + INTEGER(IntKi), PARAMETER :: B2ADOF70Rdt = 4243 + INTEGER(IntKi), PARAMETER :: B2ADOF71Rdt = 4244 + INTEGER(IntKi), PARAMETER :: B2ADOF72Rdt = 4245 + INTEGER(IntKi), PARAMETER :: B2ADOF73Rdt = 4246 + INTEGER(IntKi), PARAMETER :: B2ADOF74Rdt = 4247 + INTEGER(IntKi), PARAMETER :: B2ADOF75Rdt = 4248 + INTEGER(IntKi), PARAMETER :: B2ADOF76Rdt = 4249 + INTEGER(IntKi), PARAMETER :: B2ADOF77Rdt = 4250 + INTEGER(IntKi), PARAMETER :: B2ADOF78Rdt = 4251 + INTEGER(IntKi), PARAMETER :: B2ADOF79Rdt = 4252 + INTEGER(IntKi), PARAMETER :: B2ADOF80Rdt = 4253 + INTEGER(IntKi), PARAMETER :: B2ADOF81Rdt = 4254 + INTEGER(IntKi), PARAMETER :: B2ADOF82Rdt = 4255 + INTEGER(IntKi), PARAMETER :: B2ADOF83Rdt = 4256 + INTEGER(IntKi), PARAMETER :: B2ADOF84Rdt = 4257 + INTEGER(IntKi), PARAMETER :: B2ADOF85Rdt = 4258 + INTEGER(IntKi), PARAMETER :: B2ADOF86Rdt = 4259 + INTEGER(IntKi), PARAMETER :: B2ADOF87Rdt = 4260 + INTEGER(IntKi), PARAMETER :: B2ADOF88Rdt = 4261 + INTEGER(IntKi), PARAMETER :: B2ADOF89Rdt = 4262 + INTEGER(IntKi), PARAMETER :: B2ADOF90Rdt = 4263 + INTEGER(IntKi), PARAMETER :: B2ADOF91Rdt = 4264 + INTEGER(IntKi), PARAMETER :: B2ADOF92Rdt = 4265 + INTEGER(IntKi), PARAMETER :: B2ADOF93Rdt = 4266 + INTEGER(IntKi), PARAMETER :: B2ADOF94Rdt = 4267 + INTEGER(IntKi), PARAMETER :: B2ADOF95Rdt = 4268 + INTEGER(IntKi), PARAMETER :: B2ADOF96Rdt = 4269 + INTEGER(IntKi), PARAMETER :: B2ADOF97Rdt = 4270 + INTEGER(IntKi), PARAMETER :: B2ADOF98Rdt = 4271 + INTEGER(IntKi), PARAMETER :: B2ADOF99Rdt = 4272 + INTEGER(IntKi), PARAMETER :: B3ADOF1Rdt = 4273 + INTEGER(IntKi), PARAMETER :: B3ADOF2Rdt = 4274 + INTEGER(IntKi), PARAMETER :: B3ADOF3Rdt = 4275 + INTEGER(IntKi), PARAMETER :: B3ADOF4Rdt = 4276 + INTEGER(IntKi), PARAMETER :: B3ADOF5Rdt = 4277 + INTEGER(IntKi), PARAMETER :: B3ADOF6Rdt = 4278 + INTEGER(IntKi), PARAMETER :: B3ADOF7Rdt = 4279 + INTEGER(IntKi), PARAMETER :: B3ADOF8Rdt = 4280 + INTEGER(IntKi), PARAMETER :: B3ADOF9Rdt = 4281 + INTEGER(IntKi), PARAMETER :: B3ADOF10Rdt = 4282 + INTEGER(IntKi), PARAMETER :: B3ADOF11Rdt = 4283 + INTEGER(IntKi), PARAMETER :: B3ADOF12Rdt = 4284 + INTEGER(IntKi), PARAMETER :: B3ADOF13Rdt = 4285 + INTEGER(IntKi), PARAMETER :: B3ADOF14Rdt = 4286 + INTEGER(IntKi), PARAMETER :: B3ADOF15Rdt = 4287 + INTEGER(IntKi), PARAMETER :: B3ADOF16Rdt = 4288 + INTEGER(IntKi), PARAMETER :: B3ADOF17Rdt = 4289 + INTEGER(IntKi), PARAMETER :: B3ADOF18Rdt = 4290 + INTEGER(IntKi), PARAMETER :: B3ADOF19Rdt = 4291 + INTEGER(IntKi), PARAMETER :: B3ADOF20Rdt = 4292 + INTEGER(IntKi), PARAMETER :: B3ADOF21Rdt = 4293 + INTEGER(IntKi), PARAMETER :: B3ADOF22Rdt = 4294 + INTEGER(IntKi), PARAMETER :: B3ADOF23Rdt = 4295 + INTEGER(IntKi), PARAMETER :: B3ADOF24Rdt = 4296 + INTEGER(IntKi), PARAMETER :: B3ADOF25Rdt = 4297 + INTEGER(IntKi), PARAMETER :: B3ADOF26Rdt = 4298 + INTEGER(IntKi), PARAMETER :: B3ADOF27Rdt = 4299 + INTEGER(IntKi), PARAMETER :: B3ADOF28Rdt = 4300 + INTEGER(IntKi), PARAMETER :: B3ADOF29Rdt = 4301 + INTEGER(IntKi), PARAMETER :: B3ADOF30Rdt = 4302 + INTEGER(IntKi), PARAMETER :: B3ADOF31Rdt = 4303 + INTEGER(IntKi), PARAMETER :: B3ADOF32Rdt = 4304 + INTEGER(IntKi), PARAMETER :: B3ADOF33Rdt = 4305 + INTEGER(IntKi), PARAMETER :: B3ADOF34Rdt = 4306 + INTEGER(IntKi), PARAMETER :: B3ADOF35Rdt = 4307 + INTEGER(IntKi), PARAMETER :: B3ADOF36Rdt = 4308 + INTEGER(IntKi), PARAMETER :: B3ADOF37Rdt = 4309 + INTEGER(IntKi), PARAMETER :: B3ADOF38Rdt = 4310 + INTEGER(IntKi), PARAMETER :: B3ADOF39Rdt = 4311 + INTEGER(IntKi), PARAMETER :: B3ADOF40Rdt = 4312 + INTEGER(IntKi), PARAMETER :: B3ADOF41Rdt = 4313 + INTEGER(IntKi), PARAMETER :: B3ADOF42Rdt = 4314 + INTEGER(IntKi), PARAMETER :: B3ADOF43Rdt = 4315 + INTEGER(IntKi), PARAMETER :: B3ADOF44Rdt = 4316 + INTEGER(IntKi), PARAMETER :: B3ADOF45Rdt = 4317 + INTEGER(IntKi), PARAMETER :: B3ADOF46Rdt = 4318 + INTEGER(IntKi), PARAMETER :: B3ADOF47Rdt = 4319 + INTEGER(IntKi), PARAMETER :: B3ADOF48Rdt = 4320 + INTEGER(IntKi), PARAMETER :: B3ADOF49Rdt = 4321 + INTEGER(IntKi), PARAMETER :: B3ADOF50Rdt = 4322 + INTEGER(IntKi), PARAMETER :: B3ADOF51Rdt = 4323 + INTEGER(IntKi), PARAMETER :: B3ADOF52Rdt = 4324 + INTEGER(IntKi), PARAMETER :: B3ADOF53Rdt = 4325 + INTEGER(IntKi), PARAMETER :: B3ADOF54Rdt = 4326 + INTEGER(IntKi), PARAMETER :: B3ADOF55Rdt = 4327 + INTEGER(IntKi), PARAMETER :: B3ADOF56Rdt = 4328 + INTEGER(IntKi), PARAMETER :: B3ADOF57Rdt = 4329 + INTEGER(IntKi), PARAMETER :: B3ADOF58Rdt = 4330 + INTEGER(IntKi), PARAMETER :: B3ADOF59Rdt = 4331 + INTEGER(IntKi), PARAMETER :: B3ADOF60Rdt = 4332 + INTEGER(IntKi), PARAMETER :: B3ADOF61Rdt = 4333 + INTEGER(IntKi), PARAMETER :: B3ADOF62Rdt = 4334 + INTEGER(IntKi), PARAMETER :: B3ADOF63Rdt = 4335 + INTEGER(IntKi), PARAMETER :: B3ADOF64Rdt = 4336 + INTEGER(IntKi), PARAMETER :: B3ADOF65Rdt = 4337 + INTEGER(IntKi), PARAMETER :: B3ADOF66Rdt = 4338 + INTEGER(IntKi), PARAMETER :: B3ADOF67Rdt = 4339 + INTEGER(IntKi), PARAMETER :: B3ADOF68Rdt = 4340 + INTEGER(IntKi), PARAMETER :: B3ADOF69Rdt = 4341 + INTEGER(IntKi), PARAMETER :: B3ADOF70Rdt = 4342 + INTEGER(IntKi), PARAMETER :: B3ADOF71Rdt = 4343 + INTEGER(IntKi), PARAMETER :: B3ADOF72Rdt = 4344 + INTEGER(IntKi), PARAMETER :: B3ADOF73Rdt = 4345 + INTEGER(IntKi), PARAMETER :: B3ADOF74Rdt = 4346 + INTEGER(IntKi), PARAMETER :: B3ADOF75Rdt = 4347 + INTEGER(IntKi), PARAMETER :: B3ADOF76Rdt = 4348 + INTEGER(IntKi), PARAMETER :: B3ADOF77Rdt = 4349 + INTEGER(IntKi), PARAMETER :: B3ADOF78Rdt = 4350 + INTEGER(IntKi), PARAMETER :: B3ADOF79Rdt = 4351 + INTEGER(IntKi), PARAMETER :: B3ADOF80Rdt = 4352 + INTEGER(IntKi), PARAMETER :: B3ADOF81Rdt = 4353 + INTEGER(IntKi), PARAMETER :: B3ADOF82Rdt = 4354 + INTEGER(IntKi), PARAMETER :: B3ADOF83Rdt = 4355 + INTEGER(IntKi), PARAMETER :: B3ADOF84Rdt = 4356 + INTEGER(IntKi), PARAMETER :: B3ADOF85Rdt = 4357 + INTEGER(IntKi), PARAMETER :: B3ADOF86Rdt = 4358 + INTEGER(IntKi), PARAMETER :: B3ADOF87Rdt = 4359 + INTEGER(IntKi), PARAMETER :: B3ADOF88Rdt = 4360 + INTEGER(IntKi), PARAMETER :: B3ADOF89Rdt = 4361 + INTEGER(IntKi), PARAMETER :: B3ADOF90Rdt = 4362 + INTEGER(IntKi), PARAMETER :: B3ADOF91Rdt = 4363 + INTEGER(IntKi), PARAMETER :: B3ADOF92Rdt = 4364 + INTEGER(IntKi), PARAMETER :: B3ADOF93Rdt = 4365 + INTEGER(IntKi), PARAMETER :: B3ADOF94Rdt = 4366 + INTEGER(IntKi), PARAMETER :: B3ADOF95Rdt = 4367 + INTEGER(IntKi), PARAMETER :: B3ADOF96Rdt = 4368 + INTEGER(IntKi), PARAMETER :: B3ADOF97Rdt = 4369 + INTEGER(IntKi), PARAMETER :: B3ADOF98Rdt = 4370 + INTEGER(IntKi), PARAMETER :: B3ADOF99Rdt = 4371 + INTEGER(IntKi), PARAMETER :: B4ADOF1Rdt = 4372 + INTEGER(IntKi), PARAMETER :: B4ADOF2Rdt = 4373 + INTEGER(IntKi), PARAMETER :: B4ADOF3Rdt = 4374 + INTEGER(IntKi), PARAMETER :: B4ADOF4Rdt = 4375 + INTEGER(IntKi), PARAMETER :: B4ADOF5Rdt = 4376 + INTEGER(IntKi), PARAMETER :: B4ADOF6Rdt = 4377 + INTEGER(IntKi), PARAMETER :: B4ADOF7Rdt = 4378 + INTEGER(IntKi), PARAMETER :: B4ADOF8Rdt = 4379 + INTEGER(IntKi), PARAMETER :: B4ADOF9Rdt = 4380 + INTEGER(IntKi), PARAMETER :: B4ADOF10Rdt = 4381 + INTEGER(IntKi), PARAMETER :: B4ADOF11Rdt = 4382 + INTEGER(IntKi), PARAMETER :: B4ADOF12Rdt = 4383 + INTEGER(IntKi), PARAMETER :: B4ADOF13Rdt = 4384 + INTEGER(IntKi), PARAMETER :: B4ADOF14Rdt = 4385 + INTEGER(IntKi), PARAMETER :: B4ADOF15Rdt = 4386 + INTEGER(IntKi), PARAMETER :: B4ADOF16Rdt = 4387 + INTEGER(IntKi), PARAMETER :: B4ADOF17Rdt = 4388 + INTEGER(IntKi), PARAMETER :: B4ADOF18Rdt = 4389 + INTEGER(IntKi), PARAMETER :: B4ADOF19Rdt = 4390 + INTEGER(IntKi), PARAMETER :: B4ADOF20Rdt = 4391 + INTEGER(IntKi), PARAMETER :: B4ADOF21Rdt = 4392 + INTEGER(IntKi), PARAMETER :: B4ADOF22Rdt = 4393 + INTEGER(IntKi), PARAMETER :: B4ADOF23Rdt = 4394 + INTEGER(IntKi), PARAMETER :: B4ADOF24Rdt = 4395 + INTEGER(IntKi), PARAMETER :: B4ADOF25Rdt = 4396 + INTEGER(IntKi), PARAMETER :: B4ADOF26Rdt = 4397 + INTEGER(IntKi), PARAMETER :: B4ADOF27Rdt = 4398 + INTEGER(IntKi), PARAMETER :: B4ADOF28Rdt = 4399 + INTEGER(IntKi), PARAMETER :: B4ADOF29Rdt = 4400 + INTEGER(IntKi), PARAMETER :: B4ADOF30Rdt = 4401 + INTEGER(IntKi), PARAMETER :: B4ADOF31Rdt = 4402 + INTEGER(IntKi), PARAMETER :: B4ADOF32Rdt = 4403 + INTEGER(IntKi), PARAMETER :: B4ADOF33Rdt = 4404 + INTEGER(IntKi), PARAMETER :: B4ADOF34Rdt = 4405 + INTEGER(IntKi), PARAMETER :: B4ADOF35Rdt = 4406 + INTEGER(IntKi), PARAMETER :: B4ADOF36Rdt = 4407 + INTEGER(IntKi), PARAMETER :: B4ADOF37Rdt = 4408 + INTEGER(IntKi), PARAMETER :: B4ADOF38Rdt = 4409 + INTEGER(IntKi), PARAMETER :: B4ADOF39Rdt = 4410 + INTEGER(IntKi), PARAMETER :: B4ADOF40Rdt = 4411 + INTEGER(IntKi), PARAMETER :: B4ADOF41Rdt = 4412 + INTEGER(IntKi), PARAMETER :: B4ADOF42Rdt = 4413 + INTEGER(IntKi), PARAMETER :: B4ADOF43Rdt = 4414 + INTEGER(IntKi), PARAMETER :: B4ADOF44Rdt = 4415 + INTEGER(IntKi), PARAMETER :: B4ADOF45Rdt = 4416 + INTEGER(IntKi), PARAMETER :: B4ADOF46Rdt = 4417 + INTEGER(IntKi), PARAMETER :: B4ADOF47Rdt = 4418 + INTEGER(IntKi), PARAMETER :: B4ADOF48Rdt = 4419 + INTEGER(IntKi), PARAMETER :: B4ADOF49Rdt = 4420 + INTEGER(IntKi), PARAMETER :: B4ADOF50Rdt = 4421 + INTEGER(IntKi), PARAMETER :: B4ADOF51Rdt = 4422 + INTEGER(IntKi), PARAMETER :: B4ADOF52Rdt = 4423 + INTEGER(IntKi), PARAMETER :: B4ADOF53Rdt = 4424 + INTEGER(IntKi), PARAMETER :: B4ADOF54Rdt = 4425 + INTEGER(IntKi), PARAMETER :: B4ADOF55Rdt = 4426 + INTEGER(IntKi), PARAMETER :: B4ADOF56Rdt = 4427 + INTEGER(IntKi), PARAMETER :: B4ADOF57Rdt = 4428 + INTEGER(IntKi), PARAMETER :: B4ADOF58Rdt = 4429 + INTEGER(IntKi), PARAMETER :: B4ADOF59Rdt = 4430 + INTEGER(IntKi), PARAMETER :: B4ADOF60Rdt = 4431 + INTEGER(IntKi), PARAMETER :: B4ADOF61Rdt = 4432 + INTEGER(IntKi), PARAMETER :: B4ADOF62Rdt = 4433 + INTEGER(IntKi), PARAMETER :: B4ADOF63Rdt = 4434 + INTEGER(IntKi), PARAMETER :: B4ADOF64Rdt = 4435 + INTEGER(IntKi), PARAMETER :: B4ADOF65Rdt = 4436 + INTEGER(IntKi), PARAMETER :: B4ADOF66Rdt = 4437 + INTEGER(IntKi), PARAMETER :: B4ADOF67Rdt = 4438 + INTEGER(IntKi), PARAMETER :: B4ADOF68Rdt = 4439 + INTEGER(IntKi), PARAMETER :: B4ADOF69Rdt = 4440 + INTEGER(IntKi), PARAMETER :: B4ADOF70Rdt = 4441 + INTEGER(IntKi), PARAMETER :: B4ADOF71Rdt = 4442 + INTEGER(IntKi), PARAMETER :: B4ADOF72Rdt = 4443 + INTEGER(IntKi), PARAMETER :: B4ADOF73Rdt = 4444 + INTEGER(IntKi), PARAMETER :: B4ADOF74Rdt = 4445 + INTEGER(IntKi), PARAMETER :: B4ADOF75Rdt = 4446 + INTEGER(IntKi), PARAMETER :: B4ADOF76Rdt = 4447 + INTEGER(IntKi), PARAMETER :: B4ADOF77Rdt = 4448 + INTEGER(IntKi), PARAMETER :: B4ADOF78Rdt = 4449 + INTEGER(IntKi), PARAMETER :: B4ADOF79Rdt = 4450 + INTEGER(IntKi), PARAMETER :: B4ADOF80Rdt = 4451 + INTEGER(IntKi), PARAMETER :: B4ADOF81Rdt = 4452 + INTEGER(IntKi), PARAMETER :: B4ADOF82Rdt = 4453 + INTEGER(IntKi), PARAMETER :: B4ADOF83Rdt = 4454 + INTEGER(IntKi), PARAMETER :: B4ADOF84Rdt = 4455 + INTEGER(IntKi), PARAMETER :: B4ADOF85Rdt = 4456 + INTEGER(IntKi), PARAMETER :: B4ADOF86Rdt = 4457 + INTEGER(IntKi), PARAMETER :: B4ADOF87Rdt = 4458 + INTEGER(IntKi), PARAMETER :: B4ADOF88Rdt = 4459 + INTEGER(IntKi), PARAMETER :: B4ADOF89Rdt = 4460 + INTEGER(IntKi), PARAMETER :: B4ADOF90Rdt = 4461 + INTEGER(IntKi), PARAMETER :: B4ADOF91Rdt = 4462 + INTEGER(IntKi), PARAMETER :: B4ADOF92Rdt = 4463 + INTEGER(IntKi), PARAMETER :: B4ADOF93Rdt = 4464 + INTEGER(IntKi), PARAMETER :: B4ADOF94Rdt = 4465 + INTEGER(IntKi), PARAMETER :: B4ADOF95Rdt = 4466 + INTEGER(IntKi), PARAMETER :: B4ADOF96Rdt = 4467 + INTEGER(IntKi), PARAMETER :: B4ADOF97Rdt = 4468 + INTEGER(IntKi), PARAMETER :: B4ADOF98Rdt = 4469 + INTEGER(IntKi), PARAMETER :: B4ADOF99Rdt = 4470 + INTEGER(IntKi), PARAMETER :: B5ADOF1Rdt = 4471 + INTEGER(IntKi), PARAMETER :: B5ADOF2Rdt = 4472 + INTEGER(IntKi), PARAMETER :: B5ADOF3Rdt = 4473 + INTEGER(IntKi), PARAMETER :: B5ADOF4Rdt = 4474 + INTEGER(IntKi), PARAMETER :: B5ADOF5Rdt = 4475 + INTEGER(IntKi), PARAMETER :: B5ADOF6Rdt = 4476 + INTEGER(IntKi), PARAMETER :: B5ADOF7Rdt = 4477 + INTEGER(IntKi), PARAMETER :: B5ADOF8Rdt = 4478 + INTEGER(IntKi), PARAMETER :: B5ADOF9Rdt = 4479 + INTEGER(IntKi), PARAMETER :: B5ADOF10Rdt = 4480 + INTEGER(IntKi), PARAMETER :: B5ADOF11Rdt = 4481 + INTEGER(IntKi), PARAMETER :: B5ADOF12Rdt = 4482 + INTEGER(IntKi), PARAMETER :: B5ADOF13Rdt = 4483 + INTEGER(IntKi), PARAMETER :: B5ADOF14Rdt = 4484 + INTEGER(IntKi), PARAMETER :: B5ADOF15Rdt = 4485 + INTEGER(IntKi), PARAMETER :: B5ADOF16Rdt = 4486 + INTEGER(IntKi), PARAMETER :: B5ADOF17Rdt = 4487 + INTEGER(IntKi), PARAMETER :: B5ADOF18Rdt = 4488 + INTEGER(IntKi), PARAMETER :: B5ADOF19Rdt = 4489 + INTEGER(IntKi), PARAMETER :: B5ADOF20Rdt = 4490 + INTEGER(IntKi), PARAMETER :: B5ADOF21Rdt = 4491 + INTEGER(IntKi), PARAMETER :: B5ADOF22Rdt = 4492 + INTEGER(IntKi), PARAMETER :: B5ADOF23Rdt = 4493 + INTEGER(IntKi), PARAMETER :: B5ADOF24Rdt = 4494 + INTEGER(IntKi), PARAMETER :: B5ADOF25Rdt = 4495 + INTEGER(IntKi), PARAMETER :: B5ADOF26Rdt = 4496 + INTEGER(IntKi), PARAMETER :: B5ADOF27Rdt = 4497 + INTEGER(IntKi), PARAMETER :: B5ADOF28Rdt = 4498 + INTEGER(IntKi), PARAMETER :: B5ADOF29Rdt = 4499 + INTEGER(IntKi), PARAMETER :: B5ADOF30Rdt = 4500 + INTEGER(IntKi), PARAMETER :: B5ADOF31Rdt = 4501 + INTEGER(IntKi), PARAMETER :: B5ADOF32Rdt = 4502 + INTEGER(IntKi), PARAMETER :: B5ADOF33Rdt = 4503 + INTEGER(IntKi), PARAMETER :: B5ADOF34Rdt = 4504 + INTEGER(IntKi), PARAMETER :: B5ADOF35Rdt = 4505 + INTEGER(IntKi), PARAMETER :: B5ADOF36Rdt = 4506 + INTEGER(IntKi), PARAMETER :: B5ADOF37Rdt = 4507 + INTEGER(IntKi), PARAMETER :: B5ADOF38Rdt = 4508 + INTEGER(IntKi), PARAMETER :: B5ADOF39Rdt = 4509 + INTEGER(IntKi), PARAMETER :: B5ADOF40Rdt = 4510 + INTEGER(IntKi), PARAMETER :: B5ADOF41Rdt = 4511 + INTEGER(IntKi), PARAMETER :: B5ADOF42Rdt = 4512 + INTEGER(IntKi), PARAMETER :: B5ADOF43Rdt = 4513 + INTEGER(IntKi), PARAMETER :: B5ADOF44Rdt = 4514 + INTEGER(IntKi), PARAMETER :: B5ADOF45Rdt = 4515 + INTEGER(IntKi), PARAMETER :: B5ADOF46Rdt = 4516 + INTEGER(IntKi), PARAMETER :: B5ADOF47Rdt = 4517 + INTEGER(IntKi), PARAMETER :: B5ADOF48Rdt = 4518 + INTEGER(IntKi), PARAMETER :: B5ADOF49Rdt = 4519 + INTEGER(IntKi), PARAMETER :: B5ADOF50Rdt = 4520 + INTEGER(IntKi), PARAMETER :: B5ADOF51Rdt = 4521 + INTEGER(IntKi), PARAMETER :: B5ADOF52Rdt = 4522 + INTEGER(IntKi), PARAMETER :: B5ADOF53Rdt = 4523 + INTEGER(IntKi), PARAMETER :: B5ADOF54Rdt = 4524 + INTEGER(IntKi), PARAMETER :: B5ADOF55Rdt = 4525 + INTEGER(IntKi), PARAMETER :: B5ADOF56Rdt = 4526 + INTEGER(IntKi), PARAMETER :: B5ADOF57Rdt = 4527 + INTEGER(IntKi), PARAMETER :: B5ADOF58Rdt = 4528 + INTEGER(IntKi), PARAMETER :: B5ADOF59Rdt = 4529 + INTEGER(IntKi), PARAMETER :: B5ADOF60Rdt = 4530 + INTEGER(IntKi), PARAMETER :: B5ADOF61Rdt = 4531 + INTEGER(IntKi), PARAMETER :: B5ADOF62Rdt = 4532 + INTEGER(IntKi), PARAMETER :: B5ADOF63Rdt = 4533 + INTEGER(IntKi), PARAMETER :: B5ADOF64Rdt = 4534 + INTEGER(IntKi), PARAMETER :: B5ADOF65Rdt = 4535 + INTEGER(IntKi), PARAMETER :: B5ADOF66Rdt = 4536 + INTEGER(IntKi), PARAMETER :: B5ADOF67Rdt = 4537 + INTEGER(IntKi), PARAMETER :: B5ADOF68Rdt = 4538 + INTEGER(IntKi), PARAMETER :: B5ADOF69Rdt = 4539 + INTEGER(IntKi), PARAMETER :: B5ADOF70Rdt = 4540 + INTEGER(IntKi), PARAMETER :: B5ADOF71Rdt = 4541 + INTEGER(IntKi), PARAMETER :: B5ADOF72Rdt = 4542 + INTEGER(IntKi), PARAMETER :: B5ADOF73Rdt = 4543 + INTEGER(IntKi), PARAMETER :: B5ADOF74Rdt = 4544 + INTEGER(IntKi), PARAMETER :: B5ADOF75Rdt = 4545 + INTEGER(IntKi), PARAMETER :: B5ADOF76Rdt = 4546 + INTEGER(IntKi), PARAMETER :: B5ADOF77Rdt = 4547 + INTEGER(IntKi), PARAMETER :: B5ADOF78Rdt = 4548 + INTEGER(IntKi), PARAMETER :: B5ADOF79Rdt = 4549 + INTEGER(IntKi), PARAMETER :: B5ADOF80Rdt = 4550 + INTEGER(IntKi), PARAMETER :: B5ADOF81Rdt = 4551 + INTEGER(IntKi), PARAMETER :: B5ADOF82Rdt = 4552 + INTEGER(IntKi), PARAMETER :: B5ADOF83Rdt = 4553 + INTEGER(IntKi), PARAMETER :: B5ADOF84Rdt = 4554 + INTEGER(IntKi), PARAMETER :: B5ADOF85Rdt = 4555 + INTEGER(IntKi), PARAMETER :: B5ADOF86Rdt = 4556 + INTEGER(IntKi), PARAMETER :: B5ADOF87Rdt = 4557 + INTEGER(IntKi), PARAMETER :: B5ADOF88Rdt = 4558 + INTEGER(IntKi), PARAMETER :: B5ADOF89Rdt = 4559 + INTEGER(IntKi), PARAMETER :: B5ADOF90Rdt = 4560 + INTEGER(IntKi), PARAMETER :: B5ADOF91Rdt = 4561 + INTEGER(IntKi), PARAMETER :: B5ADOF92Rdt = 4562 + INTEGER(IntKi), PARAMETER :: B5ADOF93Rdt = 4563 + INTEGER(IntKi), PARAMETER :: B5ADOF94Rdt = 4564 + INTEGER(IntKi), PARAMETER :: B5ADOF95Rdt = 4565 + INTEGER(IntKi), PARAMETER :: B5ADOF96Rdt = 4566 + INTEGER(IntKi), PARAMETER :: B5ADOF97Rdt = 4567 + INTEGER(IntKi), PARAMETER :: B5ADOF98Rdt = 4568 + INTEGER(IntKi), PARAMETER :: B5ADOF99Rdt = 4569 + INTEGER(IntKi), PARAMETER :: B6ADOF1Rdt = 4570 + INTEGER(IntKi), PARAMETER :: B6ADOF2Rdt = 4571 + INTEGER(IntKi), PARAMETER :: B6ADOF3Rdt = 4572 + INTEGER(IntKi), PARAMETER :: B6ADOF4Rdt = 4573 + INTEGER(IntKi), PARAMETER :: B6ADOF5Rdt = 4574 + INTEGER(IntKi), PARAMETER :: B6ADOF6Rdt = 4575 + INTEGER(IntKi), PARAMETER :: B6ADOF7Rdt = 4576 + INTEGER(IntKi), PARAMETER :: B6ADOF8Rdt = 4577 + INTEGER(IntKi), PARAMETER :: B6ADOF9Rdt = 4578 + INTEGER(IntKi), PARAMETER :: B6ADOF10Rdt = 4579 + INTEGER(IntKi), PARAMETER :: B6ADOF11Rdt = 4580 + INTEGER(IntKi), PARAMETER :: B6ADOF12Rdt = 4581 + INTEGER(IntKi), PARAMETER :: B6ADOF13Rdt = 4582 + INTEGER(IntKi), PARAMETER :: B6ADOF14Rdt = 4583 + INTEGER(IntKi), PARAMETER :: B6ADOF15Rdt = 4584 + INTEGER(IntKi), PARAMETER :: B6ADOF16Rdt = 4585 + INTEGER(IntKi), PARAMETER :: B6ADOF17Rdt = 4586 + INTEGER(IntKi), PARAMETER :: B6ADOF18Rdt = 4587 + INTEGER(IntKi), PARAMETER :: B6ADOF19Rdt = 4588 + INTEGER(IntKi), PARAMETER :: B6ADOF20Rdt = 4589 + INTEGER(IntKi), PARAMETER :: B6ADOF21Rdt = 4590 + INTEGER(IntKi), PARAMETER :: B6ADOF22Rdt = 4591 + INTEGER(IntKi), PARAMETER :: B6ADOF23Rdt = 4592 + INTEGER(IntKi), PARAMETER :: B6ADOF24Rdt = 4593 + INTEGER(IntKi), PARAMETER :: B6ADOF25Rdt = 4594 + INTEGER(IntKi), PARAMETER :: B6ADOF26Rdt = 4595 + INTEGER(IntKi), PARAMETER :: B6ADOF27Rdt = 4596 + INTEGER(IntKi), PARAMETER :: B6ADOF28Rdt = 4597 + INTEGER(IntKi), PARAMETER :: B6ADOF29Rdt = 4598 + INTEGER(IntKi), PARAMETER :: B6ADOF30Rdt = 4599 + INTEGER(IntKi), PARAMETER :: B6ADOF31Rdt = 4600 + INTEGER(IntKi), PARAMETER :: B6ADOF32Rdt = 4601 + INTEGER(IntKi), PARAMETER :: B6ADOF33Rdt = 4602 + INTEGER(IntKi), PARAMETER :: B6ADOF34Rdt = 4603 + INTEGER(IntKi), PARAMETER :: B6ADOF35Rdt = 4604 + INTEGER(IntKi), PARAMETER :: B6ADOF36Rdt = 4605 + INTEGER(IntKi), PARAMETER :: B6ADOF37Rdt = 4606 + INTEGER(IntKi), PARAMETER :: B6ADOF38Rdt = 4607 + INTEGER(IntKi), PARAMETER :: B6ADOF39Rdt = 4608 + INTEGER(IntKi), PARAMETER :: B6ADOF40Rdt = 4609 + INTEGER(IntKi), PARAMETER :: B6ADOF41Rdt = 4610 + INTEGER(IntKi), PARAMETER :: B6ADOF42Rdt = 4611 + INTEGER(IntKi), PARAMETER :: B6ADOF43Rdt = 4612 + INTEGER(IntKi), PARAMETER :: B6ADOF44Rdt = 4613 + INTEGER(IntKi), PARAMETER :: B6ADOF45Rdt = 4614 + INTEGER(IntKi), PARAMETER :: B6ADOF46Rdt = 4615 + INTEGER(IntKi), PARAMETER :: B6ADOF47Rdt = 4616 + INTEGER(IntKi), PARAMETER :: B6ADOF48Rdt = 4617 + INTEGER(IntKi), PARAMETER :: B6ADOF49Rdt = 4618 + INTEGER(IntKi), PARAMETER :: B6ADOF50Rdt = 4619 + INTEGER(IntKi), PARAMETER :: B6ADOF51Rdt = 4620 + INTEGER(IntKi), PARAMETER :: B6ADOF52Rdt = 4621 + INTEGER(IntKi), PARAMETER :: B6ADOF53Rdt = 4622 + INTEGER(IntKi), PARAMETER :: B6ADOF54Rdt = 4623 + INTEGER(IntKi), PARAMETER :: B6ADOF55Rdt = 4624 + INTEGER(IntKi), PARAMETER :: B6ADOF56Rdt = 4625 + INTEGER(IntKi), PARAMETER :: B6ADOF57Rdt = 4626 + INTEGER(IntKi), PARAMETER :: B6ADOF58Rdt = 4627 + INTEGER(IntKi), PARAMETER :: B6ADOF59Rdt = 4628 + INTEGER(IntKi), PARAMETER :: B6ADOF60Rdt = 4629 + INTEGER(IntKi), PARAMETER :: B6ADOF61Rdt = 4630 + INTEGER(IntKi), PARAMETER :: B6ADOF62Rdt = 4631 + INTEGER(IntKi), PARAMETER :: B6ADOF63Rdt = 4632 + INTEGER(IntKi), PARAMETER :: B6ADOF64Rdt = 4633 + INTEGER(IntKi), PARAMETER :: B6ADOF65Rdt = 4634 + INTEGER(IntKi), PARAMETER :: B6ADOF66Rdt = 4635 + INTEGER(IntKi), PARAMETER :: B6ADOF67Rdt = 4636 + INTEGER(IntKi), PARAMETER :: B6ADOF68Rdt = 4637 + INTEGER(IntKi), PARAMETER :: B6ADOF69Rdt = 4638 + INTEGER(IntKi), PARAMETER :: B6ADOF70Rdt = 4639 + INTEGER(IntKi), PARAMETER :: B6ADOF71Rdt = 4640 + INTEGER(IntKi), PARAMETER :: B6ADOF72Rdt = 4641 + INTEGER(IntKi), PARAMETER :: B6ADOF73Rdt = 4642 + INTEGER(IntKi), PARAMETER :: B6ADOF74Rdt = 4643 + INTEGER(IntKi), PARAMETER :: B6ADOF75Rdt = 4644 + INTEGER(IntKi), PARAMETER :: B6ADOF76Rdt = 4645 + INTEGER(IntKi), PARAMETER :: B6ADOF77Rdt = 4646 + INTEGER(IntKi), PARAMETER :: B6ADOF78Rdt = 4647 + INTEGER(IntKi), PARAMETER :: B6ADOF79Rdt = 4648 + INTEGER(IntKi), PARAMETER :: B6ADOF80Rdt = 4649 + INTEGER(IntKi), PARAMETER :: B6ADOF81Rdt = 4650 + INTEGER(IntKi), PARAMETER :: B6ADOF82Rdt = 4651 + INTEGER(IntKi), PARAMETER :: B6ADOF83Rdt = 4652 + INTEGER(IntKi), PARAMETER :: B6ADOF84Rdt = 4653 + INTEGER(IntKi), PARAMETER :: B6ADOF85Rdt = 4654 + INTEGER(IntKi), PARAMETER :: B6ADOF86Rdt = 4655 + INTEGER(IntKi), PARAMETER :: B6ADOF87Rdt = 4656 + INTEGER(IntKi), PARAMETER :: B6ADOF88Rdt = 4657 + INTEGER(IntKi), PARAMETER :: B6ADOF89Rdt = 4658 + INTEGER(IntKi), PARAMETER :: B6ADOF90Rdt = 4659 + INTEGER(IntKi), PARAMETER :: B6ADOF91Rdt = 4660 + INTEGER(IntKi), PARAMETER :: B6ADOF92Rdt = 4661 + INTEGER(IntKi), PARAMETER :: B6ADOF93Rdt = 4662 + INTEGER(IntKi), PARAMETER :: B6ADOF94Rdt = 4663 + INTEGER(IntKi), PARAMETER :: B6ADOF95Rdt = 4664 + INTEGER(IntKi), PARAMETER :: B6ADOF96Rdt = 4665 + INTEGER(IntKi), PARAMETER :: B6ADOF97Rdt = 4666 + INTEGER(IntKi), PARAMETER :: B6ADOF98Rdt = 4667 + INTEGER(IntKi), PARAMETER :: B6ADOF99Rdt = 4668 + INTEGER(IntKi), PARAMETER :: B7ADOF1Rdt = 4669 + INTEGER(IntKi), PARAMETER :: B7ADOF2Rdt = 4670 + INTEGER(IntKi), PARAMETER :: B7ADOF3Rdt = 4671 + INTEGER(IntKi), PARAMETER :: B7ADOF4Rdt = 4672 + INTEGER(IntKi), PARAMETER :: B7ADOF5Rdt = 4673 + INTEGER(IntKi), PARAMETER :: B7ADOF6Rdt = 4674 + INTEGER(IntKi), PARAMETER :: B7ADOF7Rdt = 4675 + INTEGER(IntKi), PARAMETER :: B7ADOF8Rdt = 4676 + INTEGER(IntKi), PARAMETER :: B7ADOF9Rdt = 4677 + INTEGER(IntKi), PARAMETER :: B7ADOF10Rdt = 4678 + INTEGER(IntKi), PARAMETER :: B7ADOF11Rdt = 4679 + INTEGER(IntKi), PARAMETER :: B7ADOF12Rdt = 4680 + INTEGER(IntKi), PARAMETER :: B7ADOF13Rdt = 4681 + INTEGER(IntKi), PARAMETER :: B7ADOF14Rdt = 4682 + INTEGER(IntKi), PARAMETER :: B7ADOF15Rdt = 4683 + INTEGER(IntKi), PARAMETER :: B7ADOF16Rdt = 4684 + INTEGER(IntKi), PARAMETER :: B7ADOF17Rdt = 4685 + INTEGER(IntKi), PARAMETER :: B7ADOF18Rdt = 4686 + INTEGER(IntKi), PARAMETER :: B7ADOF19Rdt = 4687 + INTEGER(IntKi), PARAMETER :: B7ADOF20Rdt = 4688 + INTEGER(IntKi), PARAMETER :: B7ADOF21Rdt = 4689 + INTEGER(IntKi), PARAMETER :: B7ADOF22Rdt = 4690 + INTEGER(IntKi), PARAMETER :: B7ADOF23Rdt = 4691 + INTEGER(IntKi), PARAMETER :: B7ADOF24Rdt = 4692 + INTEGER(IntKi), PARAMETER :: B7ADOF25Rdt = 4693 + INTEGER(IntKi), PARAMETER :: B7ADOF26Rdt = 4694 + INTEGER(IntKi), PARAMETER :: B7ADOF27Rdt = 4695 + INTEGER(IntKi), PARAMETER :: B7ADOF28Rdt = 4696 + INTEGER(IntKi), PARAMETER :: B7ADOF29Rdt = 4697 + INTEGER(IntKi), PARAMETER :: B7ADOF30Rdt = 4698 + INTEGER(IntKi), PARAMETER :: B7ADOF31Rdt = 4699 + INTEGER(IntKi), PARAMETER :: B7ADOF32Rdt = 4700 + INTEGER(IntKi), PARAMETER :: B7ADOF33Rdt = 4701 + INTEGER(IntKi), PARAMETER :: B7ADOF34Rdt = 4702 + INTEGER(IntKi), PARAMETER :: B7ADOF35Rdt = 4703 + INTEGER(IntKi), PARAMETER :: B7ADOF36Rdt = 4704 + INTEGER(IntKi), PARAMETER :: B7ADOF37Rdt = 4705 + INTEGER(IntKi), PARAMETER :: B7ADOF38Rdt = 4706 + INTEGER(IntKi), PARAMETER :: B7ADOF39Rdt = 4707 + INTEGER(IntKi), PARAMETER :: B7ADOF40Rdt = 4708 + INTEGER(IntKi), PARAMETER :: B7ADOF41Rdt = 4709 + INTEGER(IntKi), PARAMETER :: B7ADOF42Rdt = 4710 + INTEGER(IntKi), PARAMETER :: B7ADOF43Rdt = 4711 + INTEGER(IntKi), PARAMETER :: B7ADOF44Rdt = 4712 + INTEGER(IntKi), PARAMETER :: B7ADOF45Rdt = 4713 + INTEGER(IntKi), PARAMETER :: B7ADOF46Rdt = 4714 + INTEGER(IntKi), PARAMETER :: B7ADOF47Rdt = 4715 + INTEGER(IntKi), PARAMETER :: B7ADOF48Rdt = 4716 + INTEGER(IntKi), PARAMETER :: B7ADOF49Rdt = 4717 + INTEGER(IntKi), PARAMETER :: B7ADOF50Rdt = 4718 + INTEGER(IntKi), PARAMETER :: B7ADOF51Rdt = 4719 + INTEGER(IntKi), PARAMETER :: B7ADOF52Rdt = 4720 + INTEGER(IntKi), PARAMETER :: B7ADOF53Rdt = 4721 + INTEGER(IntKi), PARAMETER :: B7ADOF54Rdt = 4722 + INTEGER(IntKi), PARAMETER :: B7ADOF55Rdt = 4723 + INTEGER(IntKi), PARAMETER :: B7ADOF56Rdt = 4724 + INTEGER(IntKi), PARAMETER :: B7ADOF57Rdt = 4725 + INTEGER(IntKi), PARAMETER :: B7ADOF58Rdt = 4726 + INTEGER(IntKi), PARAMETER :: B7ADOF59Rdt = 4727 + INTEGER(IntKi), PARAMETER :: B7ADOF60Rdt = 4728 + INTEGER(IntKi), PARAMETER :: B7ADOF61Rdt = 4729 + INTEGER(IntKi), PARAMETER :: B7ADOF62Rdt = 4730 + INTEGER(IntKi), PARAMETER :: B7ADOF63Rdt = 4731 + INTEGER(IntKi), PARAMETER :: B7ADOF64Rdt = 4732 + INTEGER(IntKi), PARAMETER :: B7ADOF65Rdt = 4733 + INTEGER(IntKi), PARAMETER :: B7ADOF66Rdt = 4734 + INTEGER(IntKi), PARAMETER :: B7ADOF67Rdt = 4735 + INTEGER(IntKi), PARAMETER :: B7ADOF68Rdt = 4736 + INTEGER(IntKi), PARAMETER :: B7ADOF69Rdt = 4737 + INTEGER(IntKi), PARAMETER :: B7ADOF70Rdt = 4738 + INTEGER(IntKi), PARAMETER :: B7ADOF71Rdt = 4739 + INTEGER(IntKi), PARAMETER :: B7ADOF72Rdt = 4740 + INTEGER(IntKi), PARAMETER :: B7ADOF73Rdt = 4741 + INTEGER(IntKi), PARAMETER :: B7ADOF74Rdt = 4742 + INTEGER(IntKi), PARAMETER :: B7ADOF75Rdt = 4743 + INTEGER(IntKi), PARAMETER :: B7ADOF76Rdt = 4744 + INTEGER(IntKi), PARAMETER :: B7ADOF77Rdt = 4745 + INTEGER(IntKi), PARAMETER :: B7ADOF78Rdt = 4746 + INTEGER(IntKi), PARAMETER :: B7ADOF79Rdt = 4747 + INTEGER(IntKi), PARAMETER :: B7ADOF80Rdt = 4748 + INTEGER(IntKi), PARAMETER :: B7ADOF81Rdt = 4749 + INTEGER(IntKi), PARAMETER :: B7ADOF82Rdt = 4750 + INTEGER(IntKi), PARAMETER :: B7ADOF83Rdt = 4751 + INTEGER(IntKi), PARAMETER :: B7ADOF84Rdt = 4752 + INTEGER(IntKi), PARAMETER :: B7ADOF85Rdt = 4753 + INTEGER(IntKi), PARAMETER :: B7ADOF86Rdt = 4754 + INTEGER(IntKi), PARAMETER :: B7ADOF87Rdt = 4755 + INTEGER(IntKi), PARAMETER :: B7ADOF88Rdt = 4756 + INTEGER(IntKi), PARAMETER :: B7ADOF89Rdt = 4757 + INTEGER(IntKi), PARAMETER :: B7ADOF90Rdt = 4758 + INTEGER(IntKi), PARAMETER :: B7ADOF91Rdt = 4759 + INTEGER(IntKi), PARAMETER :: B7ADOF92Rdt = 4760 + INTEGER(IntKi), PARAMETER :: B7ADOF93Rdt = 4761 + INTEGER(IntKi), PARAMETER :: B7ADOF94Rdt = 4762 + INTEGER(IntKi), PARAMETER :: B7ADOF95Rdt = 4763 + INTEGER(IntKi), PARAMETER :: B7ADOF96Rdt = 4764 + INTEGER(IntKi), PARAMETER :: B7ADOF97Rdt = 4765 + INTEGER(IntKi), PARAMETER :: B7ADOF98Rdt = 4766 + INTEGER(IntKi), PARAMETER :: B7ADOF99Rdt = 4767 + INTEGER(IntKi), PARAMETER :: B8ADOF1Rdt = 4768 + INTEGER(IntKi), PARAMETER :: B8ADOF2Rdt = 4769 + INTEGER(IntKi), PARAMETER :: B8ADOF3Rdt = 4770 + INTEGER(IntKi), PARAMETER :: B8ADOF4Rdt = 4771 + INTEGER(IntKi), PARAMETER :: B8ADOF5Rdt = 4772 + INTEGER(IntKi), PARAMETER :: B8ADOF6Rdt = 4773 + INTEGER(IntKi), PARAMETER :: B8ADOF7Rdt = 4774 + INTEGER(IntKi), PARAMETER :: B8ADOF8Rdt = 4775 + INTEGER(IntKi), PARAMETER :: B8ADOF9Rdt = 4776 + INTEGER(IntKi), PARAMETER :: B8ADOF10Rdt = 4777 + INTEGER(IntKi), PARAMETER :: B8ADOF11Rdt = 4778 + INTEGER(IntKi), PARAMETER :: B8ADOF12Rdt = 4779 + INTEGER(IntKi), PARAMETER :: B8ADOF13Rdt = 4780 + INTEGER(IntKi), PARAMETER :: B8ADOF14Rdt = 4781 + INTEGER(IntKi), PARAMETER :: B8ADOF15Rdt = 4782 + INTEGER(IntKi), PARAMETER :: B8ADOF16Rdt = 4783 + INTEGER(IntKi), PARAMETER :: B8ADOF17Rdt = 4784 + INTEGER(IntKi), PARAMETER :: B8ADOF18Rdt = 4785 + INTEGER(IntKi), PARAMETER :: B8ADOF19Rdt = 4786 + INTEGER(IntKi), PARAMETER :: B8ADOF20Rdt = 4787 + INTEGER(IntKi), PARAMETER :: B8ADOF21Rdt = 4788 + INTEGER(IntKi), PARAMETER :: B8ADOF22Rdt = 4789 + INTEGER(IntKi), PARAMETER :: B8ADOF23Rdt = 4790 + INTEGER(IntKi), PARAMETER :: B8ADOF24Rdt = 4791 + INTEGER(IntKi), PARAMETER :: B8ADOF25Rdt = 4792 + INTEGER(IntKi), PARAMETER :: B8ADOF26Rdt = 4793 + INTEGER(IntKi), PARAMETER :: B8ADOF27Rdt = 4794 + INTEGER(IntKi), PARAMETER :: B8ADOF28Rdt = 4795 + INTEGER(IntKi), PARAMETER :: B8ADOF29Rdt = 4796 + INTEGER(IntKi), PARAMETER :: B8ADOF30Rdt = 4797 + INTEGER(IntKi), PARAMETER :: B8ADOF31Rdt = 4798 + INTEGER(IntKi), PARAMETER :: B8ADOF32Rdt = 4799 + INTEGER(IntKi), PARAMETER :: B8ADOF33Rdt = 4800 + INTEGER(IntKi), PARAMETER :: B8ADOF34Rdt = 4801 + INTEGER(IntKi), PARAMETER :: B8ADOF35Rdt = 4802 + INTEGER(IntKi), PARAMETER :: B8ADOF36Rdt = 4803 + INTEGER(IntKi), PARAMETER :: B8ADOF37Rdt = 4804 + INTEGER(IntKi), PARAMETER :: B8ADOF38Rdt = 4805 + INTEGER(IntKi), PARAMETER :: B8ADOF39Rdt = 4806 + INTEGER(IntKi), PARAMETER :: B8ADOF40Rdt = 4807 + INTEGER(IntKi), PARAMETER :: B8ADOF41Rdt = 4808 + INTEGER(IntKi), PARAMETER :: B8ADOF42Rdt = 4809 + INTEGER(IntKi), PARAMETER :: B8ADOF43Rdt = 4810 + INTEGER(IntKi), PARAMETER :: B8ADOF44Rdt = 4811 + INTEGER(IntKi), PARAMETER :: B8ADOF45Rdt = 4812 + INTEGER(IntKi), PARAMETER :: B8ADOF46Rdt = 4813 + INTEGER(IntKi), PARAMETER :: B8ADOF47Rdt = 4814 + INTEGER(IntKi), PARAMETER :: B8ADOF48Rdt = 4815 + INTEGER(IntKi), PARAMETER :: B8ADOF49Rdt = 4816 + INTEGER(IntKi), PARAMETER :: B8ADOF50Rdt = 4817 + INTEGER(IntKi), PARAMETER :: B8ADOF51Rdt = 4818 + INTEGER(IntKi), PARAMETER :: B8ADOF52Rdt = 4819 + INTEGER(IntKi), PARAMETER :: B8ADOF53Rdt = 4820 + INTEGER(IntKi), PARAMETER :: B8ADOF54Rdt = 4821 + INTEGER(IntKi), PARAMETER :: B8ADOF55Rdt = 4822 + INTEGER(IntKi), PARAMETER :: B8ADOF56Rdt = 4823 + INTEGER(IntKi), PARAMETER :: B8ADOF57Rdt = 4824 + INTEGER(IntKi), PARAMETER :: B8ADOF58Rdt = 4825 + INTEGER(IntKi), PARAMETER :: B8ADOF59Rdt = 4826 + INTEGER(IntKi), PARAMETER :: B8ADOF60Rdt = 4827 + INTEGER(IntKi), PARAMETER :: B8ADOF61Rdt = 4828 + INTEGER(IntKi), PARAMETER :: B8ADOF62Rdt = 4829 + INTEGER(IntKi), PARAMETER :: B8ADOF63Rdt = 4830 + INTEGER(IntKi), PARAMETER :: B8ADOF64Rdt = 4831 + INTEGER(IntKi), PARAMETER :: B8ADOF65Rdt = 4832 + INTEGER(IntKi), PARAMETER :: B8ADOF66Rdt = 4833 + INTEGER(IntKi), PARAMETER :: B8ADOF67Rdt = 4834 + INTEGER(IntKi), PARAMETER :: B8ADOF68Rdt = 4835 + INTEGER(IntKi), PARAMETER :: B8ADOF69Rdt = 4836 + INTEGER(IntKi), PARAMETER :: B8ADOF70Rdt = 4837 + INTEGER(IntKi), PARAMETER :: B8ADOF71Rdt = 4838 + INTEGER(IntKi), PARAMETER :: B8ADOF72Rdt = 4839 + INTEGER(IntKi), PARAMETER :: B8ADOF73Rdt = 4840 + INTEGER(IntKi), PARAMETER :: B8ADOF74Rdt = 4841 + INTEGER(IntKi), PARAMETER :: B8ADOF75Rdt = 4842 + INTEGER(IntKi), PARAMETER :: B8ADOF76Rdt = 4843 + INTEGER(IntKi), PARAMETER :: B8ADOF77Rdt = 4844 + INTEGER(IntKi), PARAMETER :: B8ADOF78Rdt = 4845 + INTEGER(IntKi), PARAMETER :: B8ADOF79Rdt = 4846 + INTEGER(IntKi), PARAMETER :: B8ADOF80Rdt = 4847 + INTEGER(IntKi), PARAMETER :: B8ADOF81Rdt = 4848 + INTEGER(IntKi), PARAMETER :: B8ADOF82Rdt = 4849 + INTEGER(IntKi), PARAMETER :: B8ADOF83Rdt = 4850 + INTEGER(IntKi), PARAMETER :: B8ADOF84Rdt = 4851 + INTEGER(IntKi), PARAMETER :: B8ADOF85Rdt = 4852 + INTEGER(IntKi), PARAMETER :: B8ADOF86Rdt = 4853 + INTEGER(IntKi), PARAMETER :: B8ADOF87Rdt = 4854 + INTEGER(IntKi), PARAMETER :: B8ADOF88Rdt = 4855 + INTEGER(IntKi), PARAMETER :: B8ADOF89Rdt = 4856 + INTEGER(IntKi), PARAMETER :: B8ADOF90Rdt = 4857 + INTEGER(IntKi), PARAMETER :: B8ADOF91Rdt = 4858 + INTEGER(IntKi), PARAMETER :: B8ADOF92Rdt = 4859 + INTEGER(IntKi), PARAMETER :: B8ADOF93Rdt = 4860 + INTEGER(IntKi), PARAMETER :: B8ADOF94Rdt = 4861 + INTEGER(IntKi), PARAMETER :: B8ADOF95Rdt = 4862 + INTEGER(IntKi), PARAMETER :: B8ADOF96Rdt = 4863 + INTEGER(IntKi), PARAMETER :: B8ADOF97Rdt = 4864 + INTEGER(IntKi), PARAMETER :: B8ADOF98Rdt = 4865 + INTEGER(IntKi), PARAMETER :: B8ADOF99Rdt = 4866 + INTEGER(IntKi), PARAMETER :: B9ADOF1Rdt = 4867 + INTEGER(IntKi), PARAMETER :: B9ADOF2Rdt = 4868 + INTEGER(IntKi), PARAMETER :: B9ADOF3Rdt = 4869 + INTEGER(IntKi), PARAMETER :: B9ADOF4Rdt = 4870 + INTEGER(IntKi), PARAMETER :: B9ADOF5Rdt = 4871 + INTEGER(IntKi), PARAMETER :: B9ADOF6Rdt = 4872 + INTEGER(IntKi), PARAMETER :: B9ADOF7Rdt = 4873 + INTEGER(IntKi), PARAMETER :: B9ADOF8Rdt = 4874 + INTEGER(IntKi), PARAMETER :: B9ADOF9Rdt = 4875 + INTEGER(IntKi), PARAMETER :: B9ADOF10Rdt = 4876 + INTEGER(IntKi), PARAMETER :: B9ADOF11Rdt = 4877 + INTEGER(IntKi), PARAMETER :: B9ADOF12Rdt = 4878 + INTEGER(IntKi), PARAMETER :: B9ADOF13Rdt = 4879 + INTEGER(IntKi), PARAMETER :: B9ADOF14Rdt = 4880 + INTEGER(IntKi), PARAMETER :: B9ADOF15Rdt = 4881 + INTEGER(IntKi), PARAMETER :: B9ADOF16Rdt = 4882 + INTEGER(IntKi), PARAMETER :: B9ADOF17Rdt = 4883 + INTEGER(IntKi), PARAMETER :: B9ADOF18Rdt = 4884 + INTEGER(IntKi), PARAMETER :: B9ADOF19Rdt = 4885 + INTEGER(IntKi), PARAMETER :: B9ADOF20Rdt = 4886 + INTEGER(IntKi), PARAMETER :: B9ADOF21Rdt = 4887 + INTEGER(IntKi), PARAMETER :: B9ADOF22Rdt = 4888 + INTEGER(IntKi), PARAMETER :: B9ADOF23Rdt = 4889 + INTEGER(IntKi), PARAMETER :: B9ADOF24Rdt = 4890 + INTEGER(IntKi), PARAMETER :: B9ADOF25Rdt = 4891 + INTEGER(IntKi), PARAMETER :: B9ADOF26Rdt = 4892 + INTEGER(IntKi), PARAMETER :: B9ADOF27Rdt = 4893 + INTEGER(IntKi), PARAMETER :: B9ADOF28Rdt = 4894 + INTEGER(IntKi), PARAMETER :: B9ADOF29Rdt = 4895 + INTEGER(IntKi), PARAMETER :: B9ADOF30Rdt = 4896 + INTEGER(IntKi), PARAMETER :: B9ADOF31Rdt = 4897 + INTEGER(IntKi), PARAMETER :: B9ADOF32Rdt = 4898 + INTEGER(IntKi), PARAMETER :: B9ADOF33Rdt = 4899 + INTEGER(IntKi), PARAMETER :: B9ADOF34Rdt = 4900 + INTEGER(IntKi), PARAMETER :: B9ADOF35Rdt = 4901 + INTEGER(IntKi), PARAMETER :: B9ADOF36Rdt = 4902 + INTEGER(IntKi), PARAMETER :: B9ADOF37Rdt = 4903 + INTEGER(IntKi), PARAMETER :: B9ADOF38Rdt = 4904 + INTEGER(IntKi), PARAMETER :: B9ADOF39Rdt = 4905 + INTEGER(IntKi), PARAMETER :: B9ADOF40Rdt = 4906 + INTEGER(IntKi), PARAMETER :: B9ADOF41Rdt = 4907 + INTEGER(IntKi), PARAMETER :: B9ADOF42Rdt = 4908 + INTEGER(IntKi), PARAMETER :: B9ADOF43Rdt = 4909 + INTEGER(IntKi), PARAMETER :: B9ADOF44Rdt = 4910 + INTEGER(IntKi), PARAMETER :: B9ADOF45Rdt = 4911 + INTEGER(IntKi), PARAMETER :: B9ADOF46Rdt = 4912 + INTEGER(IntKi), PARAMETER :: B9ADOF47Rdt = 4913 + INTEGER(IntKi), PARAMETER :: B9ADOF48Rdt = 4914 + INTEGER(IntKi), PARAMETER :: B9ADOF49Rdt = 4915 + INTEGER(IntKi), PARAMETER :: B9ADOF50Rdt = 4916 + INTEGER(IntKi), PARAMETER :: B9ADOF51Rdt = 4917 + INTEGER(IntKi), PARAMETER :: B9ADOF52Rdt = 4918 + INTEGER(IntKi), PARAMETER :: B9ADOF53Rdt = 4919 + INTEGER(IntKi), PARAMETER :: B9ADOF54Rdt = 4920 + INTEGER(IntKi), PARAMETER :: B9ADOF55Rdt = 4921 + INTEGER(IntKi), PARAMETER :: B9ADOF56Rdt = 4922 + INTEGER(IntKi), PARAMETER :: B9ADOF57Rdt = 4923 + INTEGER(IntKi), PARAMETER :: B9ADOF58Rdt = 4924 + INTEGER(IntKi), PARAMETER :: B9ADOF59Rdt = 4925 + INTEGER(IntKi), PARAMETER :: B9ADOF60Rdt = 4926 + INTEGER(IntKi), PARAMETER :: B9ADOF61Rdt = 4927 + INTEGER(IntKi), PARAMETER :: B9ADOF62Rdt = 4928 + INTEGER(IntKi), PARAMETER :: B9ADOF63Rdt = 4929 + INTEGER(IntKi), PARAMETER :: B9ADOF64Rdt = 4930 + INTEGER(IntKi), PARAMETER :: B9ADOF65Rdt = 4931 + INTEGER(IntKi), PARAMETER :: B9ADOF66Rdt = 4932 + INTEGER(IntKi), PARAMETER :: B9ADOF67Rdt = 4933 + INTEGER(IntKi), PARAMETER :: B9ADOF68Rdt = 4934 + INTEGER(IntKi), PARAMETER :: B9ADOF69Rdt = 4935 + INTEGER(IntKi), PARAMETER :: B9ADOF70Rdt = 4936 + INTEGER(IntKi), PARAMETER :: B9ADOF71Rdt = 4937 + INTEGER(IntKi), PARAMETER :: B9ADOF72Rdt = 4938 + INTEGER(IntKi), PARAMETER :: B9ADOF73Rdt = 4939 + INTEGER(IntKi), PARAMETER :: B9ADOF74Rdt = 4940 + INTEGER(IntKi), PARAMETER :: B9ADOF75Rdt = 4941 + INTEGER(IntKi), PARAMETER :: B9ADOF76Rdt = 4942 + INTEGER(IntKi), PARAMETER :: B9ADOF77Rdt = 4943 + INTEGER(IntKi), PARAMETER :: B9ADOF78Rdt = 4944 + INTEGER(IntKi), PARAMETER :: B9ADOF79Rdt = 4945 + INTEGER(IntKi), PARAMETER :: B9ADOF80Rdt = 4946 + INTEGER(IntKi), PARAMETER :: B9ADOF81Rdt = 4947 + INTEGER(IntKi), PARAMETER :: B9ADOF82Rdt = 4948 + INTEGER(IntKi), PARAMETER :: B9ADOF83Rdt = 4949 + INTEGER(IntKi), PARAMETER :: B9ADOF84Rdt = 4950 + INTEGER(IntKi), PARAMETER :: B9ADOF85Rdt = 4951 + INTEGER(IntKi), PARAMETER :: B9ADOF86Rdt = 4952 + INTEGER(IntKi), PARAMETER :: B9ADOF87Rdt = 4953 + INTEGER(IntKi), PARAMETER :: B9ADOF88Rdt = 4954 + INTEGER(IntKi), PARAMETER :: B9ADOF89Rdt = 4955 + INTEGER(IntKi), PARAMETER :: B9ADOF90Rdt = 4956 + INTEGER(IntKi), PARAMETER :: B9ADOF91Rdt = 4957 + INTEGER(IntKi), PARAMETER :: B9ADOF92Rdt = 4958 + INTEGER(IntKi), PARAMETER :: B9ADOF93Rdt = 4959 + INTEGER(IntKi), PARAMETER :: B9ADOF94Rdt = 4960 + INTEGER(IntKi), PARAMETER :: B9ADOF95Rdt = 4961 + INTEGER(IntKi), PARAMETER :: B9ADOF96Rdt = 4962 + INTEGER(IntKi), PARAMETER :: B9ADOF97Rdt = 4963 + INTEGER(IntKi), PARAMETER :: B9ADOF98Rdt = 4964 + INTEGER(IntKi), PARAMETER :: B9ADOF99Rdt = 4965 + INTEGER(IntKi), PARAMETER :: B1ADOF1Hds = 4966 + INTEGER(IntKi), PARAMETER :: B1ADOF2Hds = 4967 + INTEGER(IntKi), PARAMETER :: B1ADOF3Hds = 4968 + INTEGER(IntKi), PARAMETER :: B1ADOF4Hds = 4969 + INTEGER(IntKi), PARAMETER :: B1ADOF5Hds = 4970 + INTEGER(IntKi), PARAMETER :: B1ADOF6Hds = 4971 + INTEGER(IntKi), PARAMETER :: B1ADOF7Hds = 4972 + INTEGER(IntKi), PARAMETER :: B1ADOF8Hds = 4973 + INTEGER(IntKi), PARAMETER :: B1ADOF9Hds = 4974 + INTEGER(IntKi), PARAMETER :: B1ADOF10Hds = 4975 + INTEGER(IntKi), PARAMETER :: B1ADOF11Hds = 4976 + INTEGER(IntKi), PARAMETER :: B1ADOF12Hds = 4977 + INTEGER(IntKi), PARAMETER :: B1ADOF13Hds = 4978 + INTEGER(IntKi), PARAMETER :: B1ADOF14Hds = 4979 + INTEGER(IntKi), PARAMETER :: B1ADOF15Hds = 4980 + INTEGER(IntKi), PARAMETER :: B1ADOF16Hds = 4981 + INTEGER(IntKi), PARAMETER :: B1ADOF17Hds = 4982 + INTEGER(IntKi), PARAMETER :: B1ADOF18Hds = 4983 + INTEGER(IntKi), PARAMETER :: B1ADOF19Hds = 4984 + INTEGER(IntKi), PARAMETER :: B1ADOF20Hds = 4985 + INTEGER(IntKi), PARAMETER :: B1ADOF21Hds = 4986 + INTEGER(IntKi), PARAMETER :: B1ADOF22Hds = 4987 + INTEGER(IntKi), PARAMETER :: B1ADOF23Hds = 4988 + INTEGER(IntKi), PARAMETER :: B1ADOF24Hds = 4989 + INTEGER(IntKi), PARAMETER :: B1ADOF25Hds = 4990 + INTEGER(IntKi), PARAMETER :: B1ADOF26Hds = 4991 + INTEGER(IntKi), PARAMETER :: B1ADOF27Hds = 4992 + INTEGER(IntKi), PARAMETER :: B1ADOF28Hds = 4993 + INTEGER(IntKi), PARAMETER :: B1ADOF29Hds = 4994 + INTEGER(IntKi), PARAMETER :: B1ADOF30Hds = 4995 + INTEGER(IntKi), PARAMETER :: B1ADOF31Hds = 4996 + INTEGER(IntKi), PARAMETER :: B1ADOF32Hds = 4997 + INTEGER(IntKi), PARAMETER :: B1ADOF33Hds = 4998 + INTEGER(IntKi), PARAMETER :: B1ADOF34Hds = 4999 + INTEGER(IntKi), PARAMETER :: B1ADOF35Hds = 5000 + INTEGER(IntKi), PARAMETER :: B1ADOF36Hds = 5001 + INTEGER(IntKi), PARAMETER :: B1ADOF37Hds = 5002 + INTEGER(IntKi), PARAMETER :: B1ADOF38Hds = 5003 + INTEGER(IntKi), PARAMETER :: B1ADOF39Hds = 5004 + INTEGER(IntKi), PARAMETER :: B1ADOF40Hds = 5005 + INTEGER(IntKi), PARAMETER :: B1ADOF41Hds = 5006 + INTEGER(IntKi), PARAMETER :: B1ADOF42Hds = 5007 + INTEGER(IntKi), PARAMETER :: B1ADOF43Hds = 5008 + INTEGER(IntKi), PARAMETER :: B1ADOF44Hds = 5009 + INTEGER(IntKi), PARAMETER :: B1ADOF45Hds = 5010 + INTEGER(IntKi), PARAMETER :: B1ADOF46Hds = 5011 + INTEGER(IntKi), PARAMETER :: B1ADOF47Hds = 5012 + INTEGER(IntKi), PARAMETER :: B1ADOF48Hds = 5013 + INTEGER(IntKi), PARAMETER :: B1ADOF49Hds = 5014 + INTEGER(IntKi), PARAMETER :: B1ADOF50Hds = 5015 + INTEGER(IntKi), PARAMETER :: B1ADOF51Hds = 5016 + INTEGER(IntKi), PARAMETER :: B1ADOF52Hds = 5017 + INTEGER(IntKi), PARAMETER :: B1ADOF53Hds = 5018 + INTEGER(IntKi), PARAMETER :: B1ADOF54Hds = 5019 + INTEGER(IntKi), PARAMETER :: B1ADOF55Hds = 5020 + INTEGER(IntKi), PARAMETER :: B1ADOF56Hds = 5021 + INTEGER(IntKi), PARAMETER :: B1ADOF57Hds = 5022 + INTEGER(IntKi), PARAMETER :: B1ADOF58Hds = 5023 + INTEGER(IntKi), PARAMETER :: B1ADOF59Hds = 5024 + INTEGER(IntKi), PARAMETER :: B1ADOF60Hds = 5025 + INTEGER(IntKi), PARAMETER :: B1ADOF61Hds = 5026 + INTEGER(IntKi), PARAMETER :: B1ADOF62Hds = 5027 + INTEGER(IntKi), PARAMETER :: B1ADOF63Hds = 5028 + INTEGER(IntKi), PARAMETER :: B1ADOF64Hds = 5029 + INTEGER(IntKi), PARAMETER :: B1ADOF65Hds = 5030 + INTEGER(IntKi), PARAMETER :: B1ADOF66Hds = 5031 + INTEGER(IntKi), PARAMETER :: B1ADOF67Hds = 5032 + INTEGER(IntKi), PARAMETER :: B1ADOF68Hds = 5033 + INTEGER(IntKi), PARAMETER :: B1ADOF69Hds = 5034 + INTEGER(IntKi), PARAMETER :: B1ADOF70Hds = 5035 + INTEGER(IntKi), PARAMETER :: B1ADOF71Hds = 5036 + INTEGER(IntKi), PARAMETER :: B1ADOF72Hds = 5037 + INTEGER(IntKi), PARAMETER :: B1ADOF73Hds = 5038 + INTEGER(IntKi), PARAMETER :: B1ADOF74Hds = 5039 + INTEGER(IntKi), PARAMETER :: B1ADOF75Hds = 5040 + INTEGER(IntKi), PARAMETER :: B1ADOF76Hds = 5041 + INTEGER(IntKi), PARAMETER :: B1ADOF77Hds = 5042 + INTEGER(IntKi), PARAMETER :: B1ADOF78Hds = 5043 + INTEGER(IntKi), PARAMETER :: B1ADOF79Hds = 5044 + INTEGER(IntKi), PARAMETER :: B1ADOF80Hds = 5045 + INTEGER(IntKi), PARAMETER :: B1ADOF81Hds = 5046 + INTEGER(IntKi), PARAMETER :: B1ADOF82Hds = 5047 + INTEGER(IntKi), PARAMETER :: B1ADOF83Hds = 5048 + INTEGER(IntKi), PARAMETER :: B1ADOF84Hds = 5049 + INTEGER(IntKi), PARAMETER :: B1ADOF85Hds = 5050 + INTEGER(IntKi), PARAMETER :: B1ADOF86Hds = 5051 + INTEGER(IntKi), PARAMETER :: B1ADOF87Hds = 5052 + INTEGER(IntKi), PARAMETER :: B1ADOF88Hds = 5053 + INTEGER(IntKi), PARAMETER :: B1ADOF89Hds = 5054 + INTEGER(IntKi), PARAMETER :: B1ADOF90Hds = 5055 + INTEGER(IntKi), PARAMETER :: B1ADOF91Hds = 5056 + INTEGER(IntKi), PARAMETER :: B1ADOF92Hds = 5057 + INTEGER(IntKi), PARAMETER :: B1ADOF93Hds = 5058 + INTEGER(IntKi), PARAMETER :: B1ADOF94Hds = 5059 + INTEGER(IntKi), PARAMETER :: B1ADOF95Hds = 5060 + INTEGER(IntKi), PARAMETER :: B1ADOF96Hds = 5061 + INTEGER(IntKi), PARAMETER :: B1ADOF97Hds = 5062 + INTEGER(IntKi), PARAMETER :: B1ADOF98Hds = 5063 + INTEGER(IntKi), PARAMETER :: B1ADOF99Hds = 5064 + INTEGER(IntKi), PARAMETER :: B2ADOF1Hds = 5065 + INTEGER(IntKi), PARAMETER :: B2ADOF2Hds = 5066 + INTEGER(IntKi), PARAMETER :: B2ADOF3Hds = 5067 + INTEGER(IntKi), PARAMETER :: B2ADOF4Hds = 5068 + INTEGER(IntKi), PARAMETER :: B2ADOF5Hds = 5069 + INTEGER(IntKi), PARAMETER :: B2ADOF6Hds = 5070 + INTEGER(IntKi), PARAMETER :: B2ADOF7Hds = 5071 + INTEGER(IntKi), PARAMETER :: B2ADOF8Hds = 5072 + INTEGER(IntKi), PARAMETER :: B2ADOF9Hds = 5073 + INTEGER(IntKi), PARAMETER :: B2ADOF10Hds = 5074 + INTEGER(IntKi), PARAMETER :: B2ADOF11Hds = 5075 + INTEGER(IntKi), PARAMETER :: B2ADOF12Hds = 5076 + INTEGER(IntKi), PARAMETER :: B2ADOF13Hds = 5077 + INTEGER(IntKi), PARAMETER :: B2ADOF14Hds = 5078 + INTEGER(IntKi), PARAMETER :: B2ADOF15Hds = 5079 + INTEGER(IntKi), PARAMETER :: B2ADOF16Hds = 5080 + INTEGER(IntKi), PARAMETER :: B2ADOF17Hds = 5081 + INTEGER(IntKi), PARAMETER :: B2ADOF18Hds = 5082 + INTEGER(IntKi), PARAMETER :: B2ADOF19Hds = 5083 + INTEGER(IntKi), PARAMETER :: B2ADOF20Hds = 5084 + INTEGER(IntKi), PARAMETER :: B2ADOF21Hds = 5085 + INTEGER(IntKi), PARAMETER :: B2ADOF22Hds = 5086 + INTEGER(IntKi), PARAMETER :: B2ADOF23Hds = 5087 + INTEGER(IntKi), PARAMETER :: B2ADOF24Hds = 5088 + INTEGER(IntKi), PARAMETER :: B2ADOF25Hds = 5089 + INTEGER(IntKi), PARAMETER :: B2ADOF26Hds = 5090 + INTEGER(IntKi), PARAMETER :: B2ADOF27Hds = 5091 + INTEGER(IntKi), PARAMETER :: B2ADOF28Hds = 5092 + INTEGER(IntKi), PARAMETER :: B2ADOF29Hds = 5093 + INTEGER(IntKi), PARAMETER :: B2ADOF30Hds = 5094 + INTEGER(IntKi), PARAMETER :: B2ADOF31Hds = 5095 + INTEGER(IntKi), PARAMETER :: B2ADOF32Hds = 5096 + INTEGER(IntKi), PARAMETER :: B2ADOF33Hds = 5097 + INTEGER(IntKi), PARAMETER :: B2ADOF34Hds = 5098 + INTEGER(IntKi), PARAMETER :: B2ADOF35Hds = 5099 + INTEGER(IntKi), PARAMETER :: B2ADOF36Hds = 5100 + INTEGER(IntKi), PARAMETER :: B2ADOF37Hds = 5101 + INTEGER(IntKi), PARAMETER :: B2ADOF38Hds = 5102 + INTEGER(IntKi), PARAMETER :: B2ADOF39Hds = 5103 + INTEGER(IntKi), PARAMETER :: B2ADOF40Hds = 5104 + INTEGER(IntKi), PARAMETER :: B2ADOF41Hds = 5105 + INTEGER(IntKi), PARAMETER :: B2ADOF42Hds = 5106 + INTEGER(IntKi), PARAMETER :: B2ADOF43Hds = 5107 + INTEGER(IntKi), PARAMETER :: B2ADOF44Hds = 5108 + INTEGER(IntKi), PARAMETER :: B2ADOF45Hds = 5109 + INTEGER(IntKi), PARAMETER :: B2ADOF46Hds = 5110 + INTEGER(IntKi), PARAMETER :: B2ADOF47Hds = 5111 + INTEGER(IntKi), PARAMETER :: B2ADOF48Hds = 5112 + INTEGER(IntKi), PARAMETER :: B2ADOF49Hds = 5113 + INTEGER(IntKi), PARAMETER :: B2ADOF50Hds = 5114 + INTEGER(IntKi), PARAMETER :: B2ADOF51Hds = 5115 + INTEGER(IntKi), PARAMETER :: B2ADOF52Hds = 5116 + INTEGER(IntKi), PARAMETER :: B2ADOF53Hds = 5117 + INTEGER(IntKi), PARAMETER :: B2ADOF54Hds = 5118 + INTEGER(IntKi), PARAMETER :: B2ADOF55Hds = 5119 + INTEGER(IntKi), PARAMETER :: B2ADOF56Hds = 5120 + INTEGER(IntKi), PARAMETER :: B2ADOF57Hds = 5121 + INTEGER(IntKi), PARAMETER :: B2ADOF58Hds = 5122 + INTEGER(IntKi), PARAMETER :: B2ADOF59Hds = 5123 + INTEGER(IntKi), PARAMETER :: B2ADOF60Hds = 5124 + INTEGER(IntKi), PARAMETER :: B2ADOF61Hds = 5125 + INTEGER(IntKi), PARAMETER :: B2ADOF62Hds = 5126 + INTEGER(IntKi), PARAMETER :: B2ADOF63Hds = 5127 + INTEGER(IntKi), PARAMETER :: B2ADOF64Hds = 5128 + INTEGER(IntKi), PARAMETER :: B2ADOF65Hds = 5129 + INTEGER(IntKi), PARAMETER :: B2ADOF66Hds = 5130 + INTEGER(IntKi), PARAMETER :: B2ADOF67Hds = 5131 + INTEGER(IntKi), PARAMETER :: B2ADOF68Hds = 5132 + INTEGER(IntKi), PARAMETER :: B2ADOF69Hds = 5133 + INTEGER(IntKi), PARAMETER :: B2ADOF70Hds = 5134 + INTEGER(IntKi), PARAMETER :: B2ADOF71Hds = 5135 + INTEGER(IntKi), PARAMETER :: B2ADOF72Hds = 5136 + INTEGER(IntKi), PARAMETER :: B2ADOF73Hds = 5137 + INTEGER(IntKi), PARAMETER :: B2ADOF74Hds = 5138 + INTEGER(IntKi), PARAMETER :: B2ADOF75Hds = 5139 + INTEGER(IntKi), PARAMETER :: B2ADOF76Hds = 5140 + INTEGER(IntKi), PARAMETER :: B2ADOF77Hds = 5141 + INTEGER(IntKi), PARAMETER :: B2ADOF78Hds = 5142 + INTEGER(IntKi), PARAMETER :: B2ADOF79Hds = 5143 + INTEGER(IntKi), PARAMETER :: B2ADOF80Hds = 5144 + INTEGER(IntKi), PARAMETER :: B2ADOF81Hds = 5145 + INTEGER(IntKi), PARAMETER :: B2ADOF82Hds = 5146 + INTEGER(IntKi), PARAMETER :: B2ADOF83Hds = 5147 + INTEGER(IntKi), PARAMETER :: B2ADOF84Hds = 5148 + INTEGER(IntKi), PARAMETER :: B2ADOF85Hds = 5149 + INTEGER(IntKi), PARAMETER :: B2ADOF86Hds = 5150 + INTEGER(IntKi), PARAMETER :: B2ADOF87Hds = 5151 + INTEGER(IntKi), PARAMETER :: B2ADOF88Hds = 5152 + INTEGER(IntKi), PARAMETER :: B2ADOF89Hds = 5153 + INTEGER(IntKi), PARAMETER :: B2ADOF90Hds = 5154 + INTEGER(IntKi), PARAMETER :: B2ADOF91Hds = 5155 + INTEGER(IntKi), PARAMETER :: B2ADOF92Hds = 5156 + INTEGER(IntKi), PARAMETER :: B2ADOF93Hds = 5157 + INTEGER(IntKi), PARAMETER :: B2ADOF94Hds = 5158 + INTEGER(IntKi), PARAMETER :: B2ADOF95Hds = 5159 + INTEGER(IntKi), PARAMETER :: B2ADOF96Hds = 5160 + INTEGER(IntKi), PARAMETER :: B2ADOF97Hds = 5161 + INTEGER(IntKi), PARAMETER :: B2ADOF98Hds = 5162 + INTEGER(IntKi), PARAMETER :: B2ADOF99Hds = 5163 + INTEGER(IntKi), PARAMETER :: B3ADOF1Hds = 5164 + INTEGER(IntKi), PARAMETER :: B3ADOF2Hds = 5165 + INTEGER(IntKi), PARAMETER :: B3ADOF3Hds = 5166 + INTEGER(IntKi), PARAMETER :: B3ADOF4Hds = 5167 + INTEGER(IntKi), PARAMETER :: B3ADOF5Hds = 5168 + INTEGER(IntKi), PARAMETER :: B3ADOF6Hds = 5169 + INTEGER(IntKi), PARAMETER :: B3ADOF7Hds = 5170 + INTEGER(IntKi), PARAMETER :: B3ADOF8Hds = 5171 + INTEGER(IntKi), PARAMETER :: B3ADOF9Hds = 5172 + INTEGER(IntKi), PARAMETER :: B3ADOF10Hds = 5173 + INTEGER(IntKi), PARAMETER :: B3ADOF11Hds = 5174 + INTEGER(IntKi), PARAMETER :: B3ADOF12Hds = 5175 + INTEGER(IntKi), PARAMETER :: B3ADOF13Hds = 5176 + INTEGER(IntKi), PARAMETER :: B3ADOF14Hds = 5177 + INTEGER(IntKi), PARAMETER :: B3ADOF15Hds = 5178 + INTEGER(IntKi), PARAMETER :: B3ADOF16Hds = 5179 + INTEGER(IntKi), PARAMETER :: B3ADOF17Hds = 5180 + INTEGER(IntKi), PARAMETER :: B3ADOF18Hds = 5181 + INTEGER(IntKi), PARAMETER :: B3ADOF19Hds = 5182 + INTEGER(IntKi), PARAMETER :: B3ADOF20Hds = 5183 + INTEGER(IntKi), PARAMETER :: B3ADOF21Hds = 5184 + INTEGER(IntKi), PARAMETER :: B3ADOF22Hds = 5185 + INTEGER(IntKi), PARAMETER :: B3ADOF23Hds = 5186 + INTEGER(IntKi), PARAMETER :: B3ADOF24Hds = 5187 + INTEGER(IntKi), PARAMETER :: B3ADOF25Hds = 5188 + INTEGER(IntKi), PARAMETER :: B3ADOF26Hds = 5189 + INTEGER(IntKi), PARAMETER :: B3ADOF27Hds = 5190 + INTEGER(IntKi), PARAMETER :: B3ADOF28Hds = 5191 + INTEGER(IntKi), PARAMETER :: B3ADOF29Hds = 5192 + INTEGER(IntKi), PARAMETER :: B3ADOF30Hds = 5193 + INTEGER(IntKi), PARAMETER :: B3ADOF31Hds = 5194 + INTEGER(IntKi), PARAMETER :: B3ADOF32Hds = 5195 + INTEGER(IntKi), PARAMETER :: B3ADOF33Hds = 5196 + INTEGER(IntKi), PARAMETER :: B3ADOF34Hds = 5197 + INTEGER(IntKi), PARAMETER :: B3ADOF35Hds = 5198 + INTEGER(IntKi), PARAMETER :: B3ADOF36Hds = 5199 + INTEGER(IntKi), PARAMETER :: B3ADOF37Hds = 5200 + INTEGER(IntKi), PARAMETER :: B3ADOF38Hds = 5201 + INTEGER(IntKi), PARAMETER :: B3ADOF39Hds = 5202 + INTEGER(IntKi), PARAMETER :: B3ADOF40Hds = 5203 + INTEGER(IntKi), PARAMETER :: B3ADOF41Hds = 5204 + INTEGER(IntKi), PARAMETER :: B3ADOF42Hds = 5205 + INTEGER(IntKi), PARAMETER :: B3ADOF43Hds = 5206 + INTEGER(IntKi), PARAMETER :: B3ADOF44Hds = 5207 + INTEGER(IntKi), PARAMETER :: B3ADOF45Hds = 5208 + INTEGER(IntKi), PARAMETER :: B3ADOF46Hds = 5209 + INTEGER(IntKi), PARAMETER :: B3ADOF47Hds = 5210 + INTEGER(IntKi), PARAMETER :: B3ADOF48Hds = 5211 + INTEGER(IntKi), PARAMETER :: B3ADOF49Hds = 5212 + INTEGER(IntKi), PARAMETER :: B3ADOF50Hds = 5213 + INTEGER(IntKi), PARAMETER :: B3ADOF51Hds = 5214 + INTEGER(IntKi), PARAMETER :: B3ADOF52Hds = 5215 + INTEGER(IntKi), PARAMETER :: B3ADOF53Hds = 5216 + INTEGER(IntKi), PARAMETER :: B3ADOF54Hds = 5217 + INTEGER(IntKi), PARAMETER :: B3ADOF55Hds = 5218 + INTEGER(IntKi), PARAMETER :: B3ADOF56Hds = 5219 + INTEGER(IntKi), PARAMETER :: B3ADOF57Hds = 5220 + INTEGER(IntKi), PARAMETER :: B3ADOF58Hds = 5221 + INTEGER(IntKi), PARAMETER :: B3ADOF59Hds = 5222 + INTEGER(IntKi), PARAMETER :: B3ADOF60Hds = 5223 + INTEGER(IntKi), PARAMETER :: B3ADOF61Hds = 5224 + INTEGER(IntKi), PARAMETER :: B3ADOF62Hds = 5225 + INTEGER(IntKi), PARAMETER :: B3ADOF63Hds = 5226 + INTEGER(IntKi), PARAMETER :: B3ADOF64Hds = 5227 + INTEGER(IntKi), PARAMETER :: B3ADOF65Hds = 5228 + INTEGER(IntKi), PARAMETER :: B3ADOF66Hds = 5229 + INTEGER(IntKi), PARAMETER :: B3ADOF67Hds = 5230 + INTEGER(IntKi), PARAMETER :: B3ADOF68Hds = 5231 + INTEGER(IntKi), PARAMETER :: B3ADOF69Hds = 5232 + INTEGER(IntKi), PARAMETER :: B3ADOF70Hds = 5233 + INTEGER(IntKi), PARAMETER :: B3ADOF71Hds = 5234 + INTEGER(IntKi), PARAMETER :: B3ADOF72Hds = 5235 + INTEGER(IntKi), PARAMETER :: B3ADOF73Hds = 5236 + INTEGER(IntKi), PARAMETER :: B3ADOF74Hds = 5237 + INTEGER(IntKi), PARAMETER :: B3ADOF75Hds = 5238 + INTEGER(IntKi), PARAMETER :: B3ADOF76Hds = 5239 + INTEGER(IntKi), PARAMETER :: B3ADOF77Hds = 5240 + INTEGER(IntKi), PARAMETER :: B3ADOF78Hds = 5241 + INTEGER(IntKi), PARAMETER :: B3ADOF79Hds = 5242 + INTEGER(IntKi), PARAMETER :: B3ADOF80Hds = 5243 + INTEGER(IntKi), PARAMETER :: B3ADOF81Hds = 5244 + INTEGER(IntKi), PARAMETER :: B3ADOF82Hds = 5245 + INTEGER(IntKi), PARAMETER :: B3ADOF83Hds = 5246 + INTEGER(IntKi), PARAMETER :: B3ADOF84Hds = 5247 + INTEGER(IntKi), PARAMETER :: B3ADOF85Hds = 5248 + INTEGER(IntKi), PARAMETER :: B3ADOF86Hds = 5249 + INTEGER(IntKi), PARAMETER :: B3ADOF87Hds = 5250 + INTEGER(IntKi), PARAMETER :: B3ADOF88Hds = 5251 + INTEGER(IntKi), PARAMETER :: B3ADOF89Hds = 5252 + INTEGER(IntKi), PARAMETER :: B3ADOF90Hds = 5253 + INTEGER(IntKi), PARAMETER :: B3ADOF91Hds = 5254 + INTEGER(IntKi), PARAMETER :: B3ADOF92Hds = 5255 + INTEGER(IntKi), PARAMETER :: B3ADOF93Hds = 5256 + INTEGER(IntKi), PARAMETER :: B3ADOF94Hds = 5257 + INTEGER(IntKi), PARAMETER :: B3ADOF95Hds = 5258 + INTEGER(IntKi), PARAMETER :: B3ADOF96Hds = 5259 + INTEGER(IntKi), PARAMETER :: B3ADOF97Hds = 5260 + INTEGER(IntKi), PARAMETER :: B3ADOF98Hds = 5261 + INTEGER(IntKi), PARAMETER :: B3ADOF99Hds = 5262 + INTEGER(IntKi), PARAMETER :: B4ADOF1Hds = 5263 + INTEGER(IntKi), PARAMETER :: B4ADOF2Hds = 5264 + INTEGER(IntKi), PARAMETER :: B4ADOF3Hds = 5265 + INTEGER(IntKi), PARAMETER :: B4ADOF4Hds = 5266 + INTEGER(IntKi), PARAMETER :: B4ADOF5Hds = 5267 + INTEGER(IntKi), PARAMETER :: B4ADOF6Hds = 5268 + INTEGER(IntKi), PARAMETER :: B4ADOF7Hds = 5269 + INTEGER(IntKi), PARAMETER :: B4ADOF8Hds = 5270 + INTEGER(IntKi), PARAMETER :: B4ADOF9Hds = 5271 + INTEGER(IntKi), PARAMETER :: B4ADOF10Hds = 5272 + INTEGER(IntKi), PARAMETER :: B4ADOF11Hds = 5273 + INTEGER(IntKi), PARAMETER :: B4ADOF12Hds = 5274 + INTEGER(IntKi), PARAMETER :: B4ADOF13Hds = 5275 + INTEGER(IntKi), PARAMETER :: B4ADOF14Hds = 5276 + INTEGER(IntKi), PARAMETER :: B4ADOF15Hds = 5277 + INTEGER(IntKi), PARAMETER :: B4ADOF16Hds = 5278 + INTEGER(IntKi), PARAMETER :: B4ADOF17Hds = 5279 + INTEGER(IntKi), PARAMETER :: B4ADOF18Hds = 5280 + INTEGER(IntKi), PARAMETER :: B4ADOF19Hds = 5281 + INTEGER(IntKi), PARAMETER :: B4ADOF20Hds = 5282 + INTEGER(IntKi), PARAMETER :: B4ADOF21Hds = 5283 + INTEGER(IntKi), PARAMETER :: B4ADOF22Hds = 5284 + INTEGER(IntKi), PARAMETER :: B4ADOF23Hds = 5285 + INTEGER(IntKi), PARAMETER :: B4ADOF24Hds = 5286 + INTEGER(IntKi), PARAMETER :: B4ADOF25Hds = 5287 + INTEGER(IntKi), PARAMETER :: B4ADOF26Hds = 5288 + INTEGER(IntKi), PARAMETER :: B4ADOF27Hds = 5289 + INTEGER(IntKi), PARAMETER :: B4ADOF28Hds = 5290 + INTEGER(IntKi), PARAMETER :: B4ADOF29Hds = 5291 + INTEGER(IntKi), PARAMETER :: B4ADOF30Hds = 5292 + INTEGER(IntKi), PARAMETER :: B4ADOF31Hds = 5293 + INTEGER(IntKi), PARAMETER :: B4ADOF32Hds = 5294 + INTEGER(IntKi), PARAMETER :: B4ADOF33Hds = 5295 + INTEGER(IntKi), PARAMETER :: B4ADOF34Hds = 5296 + INTEGER(IntKi), PARAMETER :: B4ADOF35Hds = 5297 + INTEGER(IntKi), PARAMETER :: B4ADOF36Hds = 5298 + INTEGER(IntKi), PARAMETER :: B4ADOF37Hds = 5299 + INTEGER(IntKi), PARAMETER :: B4ADOF38Hds = 5300 + INTEGER(IntKi), PARAMETER :: B4ADOF39Hds = 5301 + INTEGER(IntKi), PARAMETER :: B4ADOF40Hds = 5302 + INTEGER(IntKi), PARAMETER :: B4ADOF41Hds = 5303 + INTEGER(IntKi), PARAMETER :: B4ADOF42Hds = 5304 + INTEGER(IntKi), PARAMETER :: B4ADOF43Hds = 5305 + INTEGER(IntKi), PARAMETER :: B4ADOF44Hds = 5306 + INTEGER(IntKi), PARAMETER :: B4ADOF45Hds = 5307 + INTEGER(IntKi), PARAMETER :: B4ADOF46Hds = 5308 + INTEGER(IntKi), PARAMETER :: B4ADOF47Hds = 5309 + INTEGER(IntKi), PARAMETER :: B4ADOF48Hds = 5310 + INTEGER(IntKi), PARAMETER :: B4ADOF49Hds = 5311 + INTEGER(IntKi), PARAMETER :: B4ADOF50Hds = 5312 + INTEGER(IntKi), PARAMETER :: B4ADOF51Hds = 5313 + INTEGER(IntKi), PARAMETER :: B4ADOF52Hds = 5314 + INTEGER(IntKi), PARAMETER :: B4ADOF53Hds = 5315 + INTEGER(IntKi), PARAMETER :: B4ADOF54Hds = 5316 + INTEGER(IntKi), PARAMETER :: B4ADOF55Hds = 5317 + INTEGER(IntKi), PARAMETER :: B4ADOF56Hds = 5318 + INTEGER(IntKi), PARAMETER :: B4ADOF57Hds = 5319 + INTEGER(IntKi), PARAMETER :: B4ADOF58Hds = 5320 + INTEGER(IntKi), PARAMETER :: B4ADOF59Hds = 5321 + INTEGER(IntKi), PARAMETER :: B4ADOF60Hds = 5322 + INTEGER(IntKi), PARAMETER :: B4ADOF61Hds = 5323 + INTEGER(IntKi), PARAMETER :: B4ADOF62Hds = 5324 + INTEGER(IntKi), PARAMETER :: B4ADOF63Hds = 5325 + INTEGER(IntKi), PARAMETER :: B4ADOF64Hds = 5326 + INTEGER(IntKi), PARAMETER :: B4ADOF65Hds = 5327 + INTEGER(IntKi), PARAMETER :: B4ADOF66Hds = 5328 + INTEGER(IntKi), PARAMETER :: B4ADOF67Hds = 5329 + INTEGER(IntKi), PARAMETER :: B4ADOF68Hds = 5330 + INTEGER(IntKi), PARAMETER :: B4ADOF69Hds = 5331 + INTEGER(IntKi), PARAMETER :: B4ADOF70Hds = 5332 + INTEGER(IntKi), PARAMETER :: B4ADOF71Hds = 5333 + INTEGER(IntKi), PARAMETER :: B4ADOF72Hds = 5334 + INTEGER(IntKi), PARAMETER :: B4ADOF73Hds = 5335 + INTEGER(IntKi), PARAMETER :: B4ADOF74Hds = 5336 + INTEGER(IntKi), PARAMETER :: B4ADOF75Hds = 5337 + INTEGER(IntKi), PARAMETER :: B4ADOF76Hds = 5338 + INTEGER(IntKi), PARAMETER :: B4ADOF77Hds = 5339 + INTEGER(IntKi), PARAMETER :: B4ADOF78Hds = 5340 + INTEGER(IntKi), PARAMETER :: B4ADOF79Hds = 5341 + INTEGER(IntKi), PARAMETER :: B4ADOF80Hds = 5342 + INTEGER(IntKi), PARAMETER :: B4ADOF81Hds = 5343 + INTEGER(IntKi), PARAMETER :: B4ADOF82Hds = 5344 + INTEGER(IntKi), PARAMETER :: B4ADOF83Hds = 5345 + INTEGER(IntKi), PARAMETER :: B4ADOF84Hds = 5346 + INTEGER(IntKi), PARAMETER :: B4ADOF85Hds = 5347 + INTEGER(IntKi), PARAMETER :: B4ADOF86Hds = 5348 + INTEGER(IntKi), PARAMETER :: B4ADOF87Hds = 5349 + INTEGER(IntKi), PARAMETER :: B4ADOF88Hds = 5350 + INTEGER(IntKi), PARAMETER :: B4ADOF89Hds = 5351 + INTEGER(IntKi), PARAMETER :: B4ADOF90Hds = 5352 + INTEGER(IntKi), PARAMETER :: B4ADOF91Hds = 5353 + INTEGER(IntKi), PARAMETER :: B4ADOF92Hds = 5354 + INTEGER(IntKi), PARAMETER :: B4ADOF93Hds = 5355 + INTEGER(IntKi), PARAMETER :: B4ADOF94Hds = 5356 + INTEGER(IntKi), PARAMETER :: B4ADOF95Hds = 5357 + INTEGER(IntKi), PARAMETER :: B4ADOF96Hds = 5358 + INTEGER(IntKi), PARAMETER :: B4ADOF97Hds = 5359 + INTEGER(IntKi), PARAMETER :: B4ADOF98Hds = 5360 + INTEGER(IntKi), PARAMETER :: B4ADOF99Hds = 5361 + INTEGER(IntKi), PARAMETER :: B5ADOF1Hds = 5362 + INTEGER(IntKi), PARAMETER :: B5ADOF2Hds = 5363 + INTEGER(IntKi), PARAMETER :: B5ADOF3Hds = 5364 + INTEGER(IntKi), PARAMETER :: B5ADOF4Hds = 5365 + INTEGER(IntKi), PARAMETER :: B5ADOF5Hds = 5366 + INTEGER(IntKi), PARAMETER :: B5ADOF6Hds = 5367 + INTEGER(IntKi), PARAMETER :: B5ADOF7Hds = 5368 + INTEGER(IntKi), PARAMETER :: B5ADOF8Hds = 5369 + INTEGER(IntKi), PARAMETER :: B5ADOF9Hds = 5370 + INTEGER(IntKi), PARAMETER :: B5ADOF10Hds = 5371 + INTEGER(IntKi), PARAMETER :: B5ADOF11Hds = 5372 + INTEGER(IntKi), PARAMETER :: B5ADOF12Hds = 5373 + INTEGER(IntKi), PARAMETER :: B5ADOF13Hds = 5374 + INTEGER(IntKi), PARAMETER :: B5ADOF14Hds = 5375 + INTEGER(IntKi), PARAMETER :: B5ADOF15Hds = 5376 + INTEGER(IntKi), PARAMETER :: B5ADOF16Hds = 5377 + INTEGER(IntKi), PARAMETER :: B5ADOF17Hds = 5378 + INTEGER(IntKi), PARAMETER :: B5ADOF18Hds = 5379 + INTEGER(IntKi), PARAMETER :: B5ADOF19Hds = 5380 + INTEGER(IntKi), PARAMETER :: B5ADOF20Hds = 5381 + INTEGER(IntKi), PARAMETER :: B5ADOF21Hds = 5382 + INTEGER(IntKi), PARAMETER :: B5ADOF22Hds = 5383 + INTEGER(IntKi), PARAMETER :: B5ADOF23Hds = 5384 + INTEGER(IntKi), PARAMETER :: B5ADOF24Hds = 5385 + INTEGER(IntKi), PARAMETER :: B5ADOF25Hds = 5386 + INTEGER(IntKi), PARAMETER :: B5ADOF26Hds = 5387 + INTEGER(IntKi), PARAMETER :: B5ADOF27Hds = 5388 + INTEGER(IntKi), PARAMETER :: B5ADOF28Hds = 5389 + INTEGER(IntKi), PARAMETER :: B5ADOF29Hds = 5390 + INTEGER(IntKi), PARAMETER :: B5ADOF30Hds = 5391 + INTEGER(IntKi), PARAMETER :: B5ADOF31Hds = 5392 + INTEGER(IntKi), PARAMETER :: B5ADOF32Hds = 5393 + INTEGER(IntKi), PARAMETER :: B5ADOF33Hds = 5394 + INTEGER(IntKi), PARAMETER :: B5ADOF34Hds = 5395 + INTEGER(IntKi), PARAMETER :: B5ADOF35Hds = 5396 + INTEGER(IntKi), PARAMETER :: B5ADOF36Hds = 5397 + INTEGER(IntKi), PARAMETER :: B5ADOF37Hds = 5398 + INTEGER(IntKi), PARAMETER :: B5ADOF38Hds = 5399 + INTEGER(IntKi), PARAMETER :: B5ADOF39Hds = 5400 + INTEGER(IntKi), PARAMETER :: B5ADOF40Hds = 5401 + INTEGER(IntKi), PARAMETER :: B5ADOF41Hds = 5402 + INTEGER(IntKi), PARAMETER :: B5ADOF42Hds = 5403 + INTEGER(IntKi), PARAMETER :: B5ADOF43Hds = 5404 + INTEGER(IntKi), PARAMETER :: B5ADOF44Hds = 5405 + INTEGER(IntKi), PARAMETER :: B5ADOF45Hds = 5406 + INTEGER(IntKi), PARAMETER :: B5ADOF46Hds = 5407 + INTEGER(IntKi), PARAMETER :: B5ADOF47Hds = 5408 + INTEGER(IntKi), PARAMETER :: B5ADOF48Hds = 5409 + INTEGER(IntKi), PARAMETER :: B5ADOF49Hds = 5410 + INTEGER(IntKi), PARAMETER :: B5ADOF50Hds = 5411 + INTEGER(IntKi), PARAMETER :: B5ADOF51Hds = 5412 + INTEGER(IntKi), PARAMETER :: B5ADOF52Hds = 5413 + INTEGER(IntKi), PARAMETER :: B5ADOF53Hds = 5414 + INTEGER(IntKi), PARAMETER :: B5ADOF54Hds = 5415 + INTEGER(IntKi), PARAMETER :: B5ADOF55Hds = 5416 + INTEGER(IntKi), PARAMETER :: B5ADOF56Hds = 5417 + INTEGER(IntKi), PARAMETER :: B5ADOF57Hds = 5418 + INTEGER(IntKi), PARAMETER :: B5ADOF58Hds = 5419 + INTEGER(IntKi), PARAMETER :: B5ADOF59Hds = 5420 + INTEGER(IntKi), PARAMETER :: B5ADOF60Hds = 5421 + INTEGER(IntKi), PARAMETER :: B5ADOF61Hds = 5422 + INTEGER(IntKi), PARAMETER :: B5ADOF62Hds = 5423 + INTEGER(IntKi), PARAMETER :: B5ADOF63Hds = 5424 + INTEGER(IntKi), PARAMETER :: B5ADOF64Hds = 5425 + INTEGER(IntKi), PARAMETER :: B5ADOF65Hds = 5426 + INTEGER(IntKi), PARAMETER :: B5ADOF66Hds = 5427 + INTEGER(IntKi), PARAMETER :: B5ADOF67Hds = 5428 + INTEGER(IntKi), PARAMETER :: B5ADOF68Hds = 5429 + INTEGER(IntKi), PARAMETER :: B5ADOF69Hds = 5430 + INTEGER(IntKi), PARAMETER :: B5ADOF70Hds = 5431 + INTEGER(IntKi), PARAMETER :: B5ADOF71Hds = 5432 + INTEGER(IntKi), PARAMETER :: B5ADOF72Hds = 5433 + INTEGER(IntKi), PARAMETER :: B5ADOF73Hds = 5434 + INTEGER(IntKi), PARAMETER :: B5ADOF74Hds = 5435 + INTEGER(IntKi), PARAMETER :: B5ADOF75Hds = 5436 + INTEGER(IntKi), PARAMETER :: B5ADOF76Hds = 5437 + INTEGER(IntKi), PARAMETER :: B5ADOF77Hds = 5438 + INTEGER(IntKi), PARAMETER :: B5ADOF78Hds = 5439 + INTEGER(IntKi), PARAMETER :: B5ADOF79Hds = 5440 + INTEGER(IntKi), PARAMETER :: B5ADOF80Hds = 5441 + INTEGER(IntKi), PARAMETER :: B5ADOF81Hds = 5442 + INTEGER(IntKi), PARAMETER :: B5ADOF82Hds = 5443 + INTEGER(IntKi), PARAMETER :: B5ADOF83Hds = 5444 + INTEGER(IntKi), PARAMETER :: B5ADOF84Hds = 5445 + INTEGER(IntKi), PARAMETER :: B5ADOF85Hds = 5446 + INTEGER(IntKi), PARAMETER :: B5ADOF86Hds = 5447 + INTEGER(IntKi), PARAMETER :: B5ADOF87Hds = 5448 + INTEGER(IntKi), PARAMETER :: B5ADOF88Hds = 5449 + INTEGER(IntKi), PARAMETER :: B5ADOF89Hds = 5450 + INTEGER(IntKi), PARAMETER :: B5ADOF90Hds = 5451 + INTEGER(IntKi), PARAMETER :: B5ADOF91Hds = 5452 + INTEGER(IntKi), PARAMETER :: B5ADOF92Hds = 5453 + INTEGER(IntKi), PARAMETER :: B5ADOF93Hds = 5454 + INTEGER(IntKi), PARAMETER :: B5ADOF94Hds = 5455 + INTEGER(IntKi), PARAMETER :: B5ADOF95Hds = 5456 + INTEGER(IntKi), PARAMETER :: B5ADOF96Hds = 5457 + INTEGER(IntKi), PARAMETER :: B5ADOF97Hds = 5458 + INTEGER(IntKi), PARAMETER :: B5ADOF98Hds = 5459 + INTEGER(IntKi), PARAMETER :: B5ADOF99Hds = 5460 + INTEGER(IntKi), PARAMETER :: B6ADOF1Hds = 5461 + INTEGER(IntKi), PARAMETER :: B6ADOF2Hds = 5462 + INTEGER(IntKi), PARAMETER :: B6ADOF3Hds = 5463 + INTEGER(IntKi), PARAMETER :: B6ADOF4Hds = 5464 + INTEGER(IntKi), PARAMETER :: B6ADOF5Hds = 5465 + INTEGER(IntKi), PARAMETER :: B6ADOF6Hds = 5466 + INTEGER(IntKi), PARAMETER :: B6ADOF7Hds = 5467 + INTEGER(IntKi), PARAMETER :: B6ADOF8Hds = 5468 + INTEGER(IntKi), PARAMETER :: B6ADOF9Hds = 5469 + INTEGER(IntKi), PARAMETER :: B6ADOF10Hds = 5470 + INTEGER(IntKi), PARAMETER :: B6ADOF11Hds = 5471 + INTEGER(IntKi), PARAMETER :: B6ADOF12Hds = 5472 + INTEGER(IntKi), PARAMETER :: B6ADOF13Hds = 5473 + INTEGER(IntKi), PARAMETER :: B6ADOF14Hds = 5474 + INTEGER(IntKi), PARAMETER :: B6ADOF15Hds = 5475 + INTEGER(IntKi), PARAMETER :: B6ADOF16Hds = 5476 + INTEGER(IntKi), PARAMETER :: B6ADOF17Hds = 5477 + INTEGER(IntKi), PARAMETER :: B6ADOF18Hds = 5478 + INTEGER(IntKi), PARAMETER :: B6ADOF19Hds = 5479 + INTEGER(IntKi), PARAMETER :: B6ADOF20Hds = 5480 + INTEGER(IntKi), PARAMETER :: B6ADOF21Hds = 5481 + INTEGER(IntKi), PARAMETER :: B6ADOF22Hds = 5482 + INTEGER(IntKi), PARAMETER :: B6ADOF23Hds = 5483 + INTEGER(IntKi), PARAMETER :: B6ADOF24Hds = 5484 + INTEGER(IntKi), PARAMETER :: B6ADOF25Hds = 5485 + INTEGER(IntKi), PARAMETER :: B6ADOF26Hds = 5486 + INTEGER(IntKi), PARAMETER :: B6ADOF27Hds = 5487 + INTEGER(IntKi), PARAMETER :: B6ADOF28Hds = 5488 + INTEGER(IntKi), PARAMETER :: B6ADOF29Hds = 5489 + INTEGER(IntKi), PARAMETER :: B6ADOF30Hds = 5490 + INTEGER(IntKi), PARAMETER :: B6ADOF31Hds = 5491 + INTEGER(IntKi), PARAMETER :: B6ADOF32Hds = 5492 + INTEGER(IntKi), PARAMETER :: B6ADOF33Hds = 5493 + INTEGER(IntKi), PARAMETER :: B6ADOF34Hds = 5494 + INTEGER(IntKi), PARAMETER :: B6ADOF35Hds = 5495 + INTEGER(IntKi), PARAMETER :: B6ADOF36Hds = 5496 + INTEGER(IntKi), PARAMETER :: B6ADOF37Hds = 5497 + INTEGER(IntKi), PARAMETER :: B6ADOF38Hds = 5498 + INTEGER(IntKi), PARAMETER :: B6ADOF39Hds = 5499 + INTEGER(IntKi), PARAMETER :: B6ADOF40Hds = 5500 + INTEGER(IntKi), PARAMETER :: B6ADOF41Hds = 5501 + INTEGER(IntKi), PARAMETER :: B6ADOF42Hds = 5502 + INTEGER(IntKi), PARAMETER :: B6ADOF43Hds = 5503 + INTEGER(IntKi), PARAMETER :: B6ADOF44Hds = 5504 + INTEGER(IntKi), PARAMETER :: B6ADOF45Hds = 5505 + INTEGER(IntKi), PARAMETER :: B6ADOF46Hds = 5506 + INTEGER(IntKi), PARAMETER :: B6ADOF47Hds = 5507 + INTEGER(IntKi), PARAMETER :: B6ADOF48Hds = 5508 + INTEGER(IntKi), PARAMETER :: B6ADOF49Hds = 5509 + INTEGER(IntKi), PARAMETER :: B6ADOF50Hds = 5510 + INTEGER(IntKi), PARAMETER :: B6ADOF51Hds = 5511 + INTEGER(IntKi), PARAMETER :: B6ADOF52Hds = 5512 + INTEGER(IntKi), PARAMETER :: B6ADOF53Hds = 5513 + INTEGER(IntKi), PARAMETER :: B6ADOF54Hds = 5514 + INTEGER(IntKi), PARAMETER :: B6ADOF55Hds = 5515 + INTEGER(IntKi), PARAMETER :: B6ADOF56Hds = 5516 + INTEGER(IntKi), PARAMETER :: B6ADOF57Hds = 5517 + INTEGER(IntKi), PARAMETER :: B6ADOF58Hds = 5518 + INTEGER(IntKi), PARAMETER :: B6ADOF59Hds = 5519 + INTEGER(IntKi), PARAMETER :: B6ADOF60Hds = 5520 + INTEGER(IntKi), PARAMETER :: B6ADOF61Hds = 5521 + INTEGER(IntKi), PARAMETER :: B6ADOF62Hds = 5522 + INTEGER(IntKi), PARAMETER :: B6ADOF63Hds = 5523 + INTEGER(IntKi), PARAMETER :: B6ADOF64Hds = 5524 + INTEGER(IntKi), PARAMETER :: B6ADOF65Hds = 5525 + INTEGER(IntKi), PARAMETER :: B6ADOF66Hds = 5526 + INTEGER(IntKi), PARAMETER :: B6ADOF67Hds = 5527 + INTEGER(IntKi), PARAMETER :: B6ADOF68Hds = 5528 + INTEGER(IntKi), PARAMETER :: B6ADOF69Hds = 5529 + INTEGER(IntKi), PARAMETER :: B6ADOF70Hds = 5530 + INTEGER(IntKi), PARAMETER :: B6ADOF71Hds = 5531 + INTEGER(IntKi), PARAMETER :: B6ADOF72Hds = 5532 + INTEGER(IntKi), PARAMETER :: B6ADOF73Hds = 5533 + INTEGER(IntKi), PARAMETER :: B6ADOF74Hds = 5534 + INTEGER(IntKi), PARAMETER :: B6ADOF75Hds = 5535 + INTEGER(IntKi), PARAMETER :: B6ADOF76Hds = 5536 + INTEGER(IntKi), PARAMETER :: B6ADOF77Hds = 5537 + INTEGER(IntKi), PARAMETER :: B6ADOF78Hds = 5538 + INTEGER(IntKi), PARAMETER :: B6ADOF79Hds = 5539 + INTEGER(IntKi), PARAMETER :: B6ADOF80Hds = 5540 + INTEGER(IntKi), PARAMETER :: B6ADOF81Hds = 5541 + INTEGER(IntKi), PARAMETER :: B6ADOF82Hds = 5542 + INTEGER(IntKi), PARAMETER :: B6ADOF83Hds = 5543 + INTEGER(IntKi), PARAMETER :: B6ADOF84Hds = 5544 + INTEGER(IntKi), PARAMETER :: B6ADOF85Hds = 5545 + INTEGER(IntKi), PARAMETER :: B6ADOF86Hds = 5546 + INTEGER(IntKi), PARAMETER :: B6ADOF87Hds = 5547 + INTEGER(IntKi), PARAMETER :: B6ADOF88Hds = 5548 + INTEGER(IntKi), PARAMETER :: B6ADOF89Hds = 5549 + INTEGER(IntKi), PARAMETER :: B6ADOF90Hds = 5550 + INTEGER(IntKi), PARAMETER :: B6ADOF91Hds = 5551 + INTEGER(IntKi), PARAMETER :: B6ADOF92Hds = 5552 + INTEGER(IntKi), PARAMETER :: B6ADOF93Hds = 5553 + INTEGER(IntKi), PARAMETER :: B6ADOF94Hds = 5554 + INTEGER(IntKi), PARAMETER :: B6ADOF95Hds = 5555 + INTEGER(IntKi), PARAMETER :: B6ADOF96Hds = 5556 + INTEGER(IntKi), PARAMETER :: B6ADOF97Hds = 5557 + INTEGER(IntKi), PARAMETER :: B6ADOF98Hds = 5558 + INTEGER(IntKi), PARAMETER :: B6ADOF99Hds = 5559 + INTEGER(IntKi), PARAMETER :: B7ADOF1Hds = 5560 + INTEGER(IntKi), PARAMETER :: B7ADOF2Hds = 5561 + INTEGER(IntKi), PARAMETER :: B7ADOF3Hds = 5562 + INTEGER(IntKi), PARAMETER :: B7ADOF4Hds = 5563 + INTEGER(IntKi), PARAMETER :: B7ADOF5Hds = 5564 + INTEGER(IntKi), PARAMETER :: B7ADOF6Hds = 5565 + INTEGER(IntKi), PARAMETER :: B7ADOF7Hds = 5566 + INTEGER(IntKi), PARAMETER :: B7ADOF8Hds = 5567 + INTEGER(IntKi), PARAMETER :: B7ADOF9Hds = 5568 + INTEGER(IntKi), PARAMETER :: B7ADOF10Hds = 5569 + INTEGER(IntKi), PARAMETER :: B7ADOF11Hds = 5570 + INTEGER(IntKi), PARAMETER :: B7ADOF12Hds = 5571 + INTEGER(IntKi), PARAMETER :: B7ADOF13Hds = 5572 + INTEGER(IntKi), PARAMETER :: B7ADOF14Hds = 5573 + INTEGER(IntKi), PARAMETER :: B7ADOF15Hds = 5574 + INTEGER(IntKi), PARAMETER :: B7ADOF16Hds = 5575 + INTEGER(IntKi), PARAMETER :: B7ADOF17Hds = 5576 + INTEGER(IntKi), PARAMETER :: B7ADOF18Hds = 5577 + INTEGER(IntKi), PARAMETER :: B7ADOF19Hds = 5578 + INTEGER(IntKi), PARAMETER :: B7ADOF20Hds = 5579 + INTEGER(IntKi), PARAMETER :: B7ADOF21Hds = 5580 + INTEGER(IntKi), PARAMETER :: B7ADOF22Hds = 5581 + INTEGER(IntKi), PARAMETER :: B7ADOF23Hds = 5582 + INTEGER(IntKi), PARAMETER :: B7ADOF24Hds = 5583 + INTEGER(IntKi), PARAMETER :: B7ADOF25Hds = 5584 + INTEGER(IntKi), PARAMETER :: B7ADOF26Hds = 5585 + INTEGER(IntKi), PARAMETER :: B7ADOF27Hds = 5586 + INTEGER(IntKi), PARAMETER :: B7ADOF28Hds = 5587 + INTEGER(IntKi), PARAMETER :: B7ADOF29Hds = 5588 + INTEGER(IntKi), PARAMETER :: B7ADOF30Hds = 5589 + INTEGER(IntKi), PARAMETER :: B7ADOF31Hds = 5590 + INTEGER(IntKi), PARAMETER :: B7ADOF32Hds = 5591 + INTEGER(IntKi), PARAMETER :: B7ADOF33Hds = 5592 + INTEGER(IntKi), PARAMETER :: B7ADOF34Hds = 5593 + INTEGER(IntKi), PARAMETER :: B7ADOF35Hds = 5594 + INTEGER(IntKi), PARAMETER :: B7ADOF36Hds = 5595 + INTEGER(IntKi), PARAMETER :: B7ADOF37Hds = 5596 + INTEGER(IntKi), PARAMETER :: B7ADOF38Hds = 5597 + INTEGER(IntKi), PARAMETER :: B7ADOF39Hds = 5598 + INTEGER(IntKi), PARAMETER :: B7ADOF40Hds = 5599 + INTEGER(IntKi), PARAMETER :: B7ADOF41Hds = 5600 + INTEGER(IntKi), PARAMETER :: B7ADOF42Hds = 5601 + INTEGER(IntKi), PARAMETER :: B7ADOF43Hds = 5602 + INTEGER(IntKi), PARAMETER :: B7ADOF44Hds = 5603 + INTEGER(IntKi), PARAMETER :: B7ADOF45Hds = 5604 + INTEGER(IntKi), PARAMETER :: B7ADOF46Hds = 5605 + INTEGER(IntKi), PARAMETER :: B7ADOF47Hds = 5606 + INTEGER(IntKi), PARAMETER :: B7ADOF48Hds = 5607 + INTEGER(IntKi), PARAMETER :: B7ADOF49Hds = 5608 + INTEGER(IntKi), PARAMETER :: B7ADOF50Hds = 5609 + INTEGER(IntKi), PARAMETER :: B7ADOF51Hds = 5610 + INTEGER(IntKi), PARAMETER :: B7ADOF52Hds = 5611 + INTEGER(IntKi), PARAMETER :: B7ADOF53Hds = 5612 + INTEGER(IntKi), PARAMETER :: B7ADOF54Hds = 5613 + INTEGER(IntKi), PARAMETER :: B7ADOF55Hds = 5614 + INTEGER(IntKi), PARAMETER :: B7ADOF56Hds = 5615 + INTEGER(IntKi), PARAMETER :: B7ADOF57Hds = 5616 + INTEGER(IntKi), PARAMETER :: B7ADOF58Hds = 5617 + INTEGER(IntKi), PARAMETER :: B7ADOF59Hds = 5618 + INTEGER(IntKi), PARAMETER :: B7ADOF60Hds = 5619 + INTEGER(IntKi), PARAMETER :: B7ADOF61Hds = 5620 + INTEGER(IntKi), PARAMETER :: B7ADOF62Hds = 5621 + INTEGER(IntKi), PARAMETER :: B7ADOF63Hds = 5622 + INTEGER(IntKi), PARAMETER :: B7ADOF64Hds = 5623 + INTEGER(IntKi), PARAMETER :: B7ADOF65Hds = 5624 + INTEGER(IntKi), PARAMETER :: B7ADOF66Hds = 5625 + INTEGER(IntKi), PARAMETER :: B7ADOF67Hds = 5626 + INTEGER(IntKi), PARAMETER :: B7ADOF68Hds = 5627 + INTEGER(IntKi), PARAMETER :: B7ADOF69Hds = 5628 + INTEGER(IntKi), PARAMETER :: B7ADOF70Hds = 5629 + INTEGER(IntKi), PARAMETER :: B7ADOF71Hds = 5630 + INTEGER(IntKi), PARAMETER :: B7ADOF72Hds = 5631 + INTEGER(IntKi), PARAMETER :: B7ADOF73Hds = 5632 + INTEGER(IntKi), PARAMETER :: B7ADOF74Hds = 5633 + INTEGER(IntKi), PARAMETER :: B7ADOF75Hds = 5634 + INTEGER(IntKi), PARAMETER :: B7ADOF76Hds = 5635 + INTEGER(IntKi), PARAMETER :: B7ADOF77Hds = 5636 + INTEGER(IntKi), PARAMETER :: B7ADOF78Hds = 5637 + INTEGER(IntKi), PARAMETER :: B7ADOF79Hds = 5638 + INTEGER(IntKi), PARAMETER :: B7ADOF80Hds = 5639 + INTEGER(IntKi), PARAMETER :: B7ADOF81Hds = 5640 + INTEGER(IntKi), PARAMETER :: B7ADOF82Hds = 5641 + INTEGER(IntKi), PARAMETER :: B7ADOF83Hds = 5642 + INTEGER(IntKi), PARAMETER :: B7ADOF84Hds = 5643 + INTEGER(IntKi), PARAMETER :: B7ADOF85Hds = 5644 + INTEGER(IntKi), PARAMETER :: B7ADOF86Hds = 5645 + INTEGER(IntKi), PARAMETER :: B7ADOF87Hds = 5646 + INTEGER(IntKi), PARAMETER :: B7ADOF88Hds = 5647 + INTEGER(IntKi), PARAMETER :: B7ADOF89Hds = 5648 + INTEGER(IntKi), PARAMETER :: B7ADOF90Hds = 5649 + INTEGER(IntKi), PARAMETER :: B7ADOF91Hds = 5650 + INTEGER(IntKi), PARAMETER :: B7ADOF92Hds = 5651 + INTEGER(IntKi), PARAMETER :: B7ADOF93Hds = 5652 + INTEGER(IntKi), PARAMETER :: B7ADOF94Hds = 5653 + INTEGER(IntKi), PARAMETER :: B7ADOF95Hds = 5654 + INTEGER(IntKi), PARAMETER :: B7ADOF96Hds = 5655 + INTEGER(IntKi), PARAMETER :: B7ADOF97Hds = 5656 + INTEGER(IntKi), PARAMETER :: B7ADOF98Hds = 5657 + INTEGER(IntKi), PARAMETER :: B7ADOF99Hds = 5658 + INTEGER(IntKi), PARAMETER :: B8ADOF1Hds = 5659 + INTEGER(IntKi), PARAMETER :: B8ADOF2Hds = 5660 + INTEGER(IntKi), PARAMETER :: B8ADOF3Hds = 5661 + INTEGER(IntKi), PARAMETER :: B8ADOF4Hds = 5662 + INTEGER(IntKi), PARAMETER :: B8ADOF5Hds = 5663 + INTEGER(IntKi), PARAMETER :: B8ADOF6Hds = 5664 + INTEGER(IntKi), PARAMETER :: B8ADOF7Hds = 5665 + INTEGER(IntKi), PARAMETER :: B8ADOF8Hds = 5666 + INTEGER(IntKi), PARAMETER :: B8ADOF9Hds = 5667 + INTEGER(IntKi), PARAMETER :: B8ADOF10Hds = 5668 + INTEGER(IntKi), PARAMETER :: B8ADOF11Hds = 5669 + INTEGER(IntKi), PARAMETER :: B8ADOF12Hds = 5670 + INTEGER(IntKi), PARAMETER :: B8ADOF13Hds = 5671 + INTEGER(IntKi), PARAMETER :: B8ADOF14Hds = 5672 + INTEGER(IntKi), PARAMETER :: B8ADOF15Hds = 5673 + INTEGER(IntKi), PARAMETER :: B8ADOF16Hds = 5674 + INTEGER(IntKi), PARAMETER :: B8ADOF17Hds = 5675 + INTEGER(IntKi), PARAMETER :: B8ADOF18Hds = 5676 + INTEGER(IntKi), PARAMETER :: B8ADOF19Hds = 5677 + INTEGER(IntKi), PARAMETER :: B8ADOF20Hds = 5678 + INTEGER(IntKi), PARAMETER :: B8ADOF21Hds = 5679 + INTEGER(IntKi), PARAMETER :: B8ADOF22Hds = 5680 + INTEGER(IntKi), PARAMETER :: B8ADOF23Hds = 5681 + INTEGER(IntKi), PARAMETER :: B8ADOF24Hds = 5682 + INTEGER(IntKi), PARAMETER :: B8ADOF25Hds = 5683 + INTEGER(IntKi), PARAMETER :: B8ADOF26Hds = 5684 + INTEGER(IntKi), PARAMETER :: B8ADOF27Hds = 5685 + INTEGER(IntKi), PARAMETER :: B8ADOF28Hds = 5686 + INTEGER(IntKi), PARAMETER :: B8ADOF29Hds = 5687 + INTEGER(IntKi), PARAMETER :: B8ADOF30Hds = 5688 + INTEGER(IntKi), PARAMETER :: B8ADOF31Hds = 5689 + INTEGER(IntKi), PARAMETER :: B8ADOF32Hds = 5690 + INTEGER(IntKi), PARAMETER :: B8ADOF33Hds = 5691 + INTEGER(IntKi), PARAMETER :: B8ADOF34Hds = 5692 + INTEGER(IntKi), PARAMETER :: B8ADOF35Hds = 5693 + INTEGER(IntKi), PARAMETER :: B8ADOF36Hds = 5694 + INTEGER(IntKi), PARAMETER :: B8ADOF37Hds = 5695 + INTEGER(IntKi), PARAMETER :: B8ADOF38Hds = 5696 + INTEGER(IntKi), PARAMETER :: B8ADOF39Hds = 5697 + INTEGER(IntKi), PARAMETER :: B8ADOF40Hds = 5698 + INTEGER(IntKi), PARAMETER :: B8ADOF41Hds = 5699 + INTEGER(IntKi), PARAMETER :: B8ADOF42Hds = 5700 + INTEGER(IntKi), PARAMETER :: B8ADOF43Hds = 5701 + INTEGER(IntKi), PARAMETER :: B8ADOF44Hds = 5702 + INTEGER(IntKi), PARAMETER :: B8ADOF45Hds = 5703 + INTEGER(IntKi), PARAMETER :: B8ADOF46Hds = 5704 + INTEGER(IntKi), PARAMETER :: B8ADOF47Hds = 5705 + INTEGER(IntKi), PARAMETER :: B8ADOF48Hds = 5706 + INTEGER(IntKi), PARAMETER :: B8ADOF49Hds = 5707 + INTEGER(IntKi), PARAMETER :: B8ADOF50Hds = 5708 + INTEGER(IntKi), PARAMETER :: B8ADOF51Hds = 5709 + INTEGER(IntKi), PARAMETER :: B8ADOF52Hds = 5710 + INTEGER(IntKi), PARAMETER :: B8ADOF53Hds = 5711 + INTEGER(IntKi), PARAMETER :: B8ADOF54Hds = 5712 + INTEGER(IntKi), PARAMETER :: B8ADOF55Hds = 5713 + INTEGER(IntKi), PARAMETER :: B8ADOF56Hds = 5714 + INTEGER(IntKi), PARAMETER :: B8ADOF57Hds = 5715 + INTEGER(IntKi), PARAMETER :: B8ADOF58Hds = 5716 + INTEGER(IntKi), PARAMETER :: B8ADOF59Hds = 5717 + INTEGER(IntKi), PARAMETER :: B8ADOF60Hds = 5718 + INTEGER(IntKi), PARAMETER :: B8ADOF61Hds = 5719 + INTEGER(IntKi), PARAMETER :: B8ADOF62Hds = 5720 + INTEGER(IntKi), PARAMETER :: B8ADOF63Hds = 5721 + INTEGER(IntKi), PARAMETER :: B8ADOF64Hds = 5722 + INTEGER(IntKi), PARAMETER :: B8ADOF65Hds = 5723 + INTEGER(IntKi), PARAMETER :: B8ADOF66Hds = 5724 + INTEGER(IntKi), PARAMETER :: B8ADOF67Hds = 5725 + INTEGER(IntKi), PARAMETER :: B8ADOF68Hds = 5726 + INTEGER(IntKi), PARAMETER :: B8ADOF69Hds = 5727 + INTEGER(IntKi), PARAMETER :: B8ADOF70Hds = 5728 + INTEGER(IntKi), PARAMETER :: B8ADOF71Hds = 5729 + INTEGER(IntKi), PARAMETER :: B8ADOF72Hds = 5730 + INTEGER(IntKi), PARAMETER :: B8ADOF73Hds = 5731 + INTEGER(IntKi), PARAMETER :: B8ADOF74Hds = 5732 + INTEGER(IntKi), PARAMETER :: B8ADOF75Hds = 5733 + INTEGER(IntKi), PARAMETER :: B8ADOF76Hds = 5734 + INTEGER(IntKi), PARAMETER :: B8ADOF77Hds = 5735 + INTEGER(IntKi), PARAMETER :: B8ADOF78Hds = 5736 + INTEGER(IntKi), PARAMETER :: B8ADOF79Hds = 5737 + INTEGER(IntKi), PARAMETER :: B8ADOF80Hds = 5738 + INTEGER(IntKi), PARAMETER :: B8ADOF81Hds = 5739 + INTEGER(IntKi), PARAMETER :: B8ADOF82Hds = 5740 + INTEGER(IntKi), PARAMETER :: B8ADOF83Hds = 5741 + INTEGER(IntKi), PARAMETER :: B8ADOF84Hds = 5742 + INTEGER(IntKi), PARAMETER :: B8ADOF85Hds = 5743 + INTEGER(IntKi), PARAMETER :: B8ADOF86Hds = 5744 + INTEGER(IntKi), PARAMETER :: B8ADOF87Hds = 5745 + INTEGER(IntKi), PARAMETER :: B8ADOF88Hds = 5746 + INTEGER(IntKi), PARAMETER :: B8ADOF89Hds = 5747 + INTEGER(IntKi), PARAMETER :: B8ADOF90Hds = 5748 + INTEGER(IntKi), PARAMETER :: B8ADOF91Hds = 5749 + INTEGER(IntKi), PARAMETER :: B8ADOF92Hds = 5750 + INTEGER(IntKi), PARAMETER :: B8ADOF93Hds = 5751 + INTEGER(IntKi), PARAMETER :: B8ADOF94Hds = 5752 + INTEGER(IntKi), PARAMETER :: B8ADOF95Hds = 5753 + INTEGER(IntKi), PARAMETER :: B8ADOF96Hds = 5754 + INTEGER(IntKi), PARAMETER :: B8ADOF97Hds = 5755 + INTEGER(IntKi), PARAMETER :: B8ADOF98Hds = 5756 + INTEGER(IntKi), PARAMETER :: B8ADOF99Hds = 5757 + INTEGER(IntKi), PARAMETER :: B9ADOF1Hds = 5758 + INTEGER(IntKi), PARAMETER :: B9ADOF2Hds = 5759 + INTEGER(IntKi), PARAMETER :: B9ADOF3Hds = 5760 + INTEGER(IntKi), PARAMETER :: B9ADOF4Hds = 5761 + INTEGER(IntKi), PARAMETER :: B9ADOF5Hds = 5762 + INTEGER(IntKi), PARAMETER :: B9ADOF6Hds = 5763 + INTEGER(IntKi), PARAMETER :: B9ADOF7Hds = 5764 + INTEGER(IntKi), PARAMETER :: B9ADOF8Hds = 5765 + INTEGER(IntKi), PARAMETER :: B9ADOF9Hds = 5766 + INTEGER(IntKi), PARAMETER :: B9ADOF10Hds = 5767 + INTEGER(IntKi), PARAMETER :: B9ADOF11Hds = 5768 + INTEGER(IntKi), PARAMETER :: B9ADOF12Hds = 5769 + INTEGER(IntKi), PARAMETER :: B9ADOF13Hds = 5770 + INTEGER(IntKi), PARAMETER :: B9ADOF14Hds = 5771 + INTEGER(IntKi), PARAMETER :: B9ADOF15Hds = 5772 + INTEGER(IntKi), PARAMETER :: B9ADOF16Hds = 5773 + INTEGER(IntKi), PARAMETER :: B9ADOF17Hds = 5774 + INTEGER(IntKi), PARAMETER :: B9ADOF18Hds = 5775 + INTEGER(IntKi), PARAMETER :: B9ADOF19Hds = 5776 + INTEGER(IntKi), PARAMETER :: B9ADOF20Hds = 5777 + INTEGER(IntKi), PARAMETER :: B9ADOF21Hds = 5778 + INTEGER(IntKi), PARAMETER :: B9ADOF22Hds = 5779 + INTEGER(IntKi), PARAMETER :: B9ADOF23Hds = 5780 + INTEGER(IntKi), PARAMETER :: B9ADOF24Hds = 5781 + INTEGER(IntKi), PARAMETER :: B9ADOF25Hds = 5782 + INTEGER(IntKi), PARAMETER :: B9ADOF26Hds = 5783 + INTEGER(IntKi), PARAMETER :: B9ADOF27Hds = 5784 + INTEGER(IntKi), PARAMETER :: B9ADOF28Hds = 5785 + INTEGER(IntKi), PARAMETER :: B9ADOF29Hds = 5786 + INTEGER(IntKi), PARAMETER :: B9ADOF30Hds = 5787 + INTEGER(IntKi), PARAMETER :: B9ADOF31Hds = 5788 + INTEGER(IntKi), PARAMETER :: B9ADOF32Hds = 5789 + INTEGER(IntKi), PARAMETER :: B9ADOF33Hds = 5790 + INTEGER(IntKi), PARAMETER :: B9ADOF34Hds = 5791 + INTEGER(IntKi), PARAMETER :: B9ADOF35Hds = 5792 + INTEGER(IntKi), PARAMETER :: B9ADOF36Hds = 5793 + INTEGER(IntKi), PARAMETER :: B9ADOF37Hds = 5794 + INTEGER(IntKi), PARAMETER :: B9ADOF38Hds = 5795 + INTEGER(IntKi), PARAMETER :: B9ADOF39Hds = 5796 + INTEGER(IntKi), PARAMETER :: B9ADOF40Hds = 5797 + INTEGER(IntKi), PARAMETER :: B9ADOF41Hds = 5798 + INTEGER(IntKi), PARAMETER :: B9ADOF42Hds = 5799 + INTEGER(IntKi), PARAMETER :: B9ADOF43Hds = 5800 + INTEGER(IntKi), PARAMETER :: B9ADOF44Hds = 5801 + INTEGER(IntKi), PARAMETER :: B9ADOF45Hds = 5802 + INTEGER(IntKi), PARAMETER :: B9ADOF46Hds = 5803 + INTEGER(IntKi), PARAMETER :: B9ADOF47Hds = 5804 + INTEGER(IntKi), PARAMETER :: B9ADOF48Hds = 5805 + INTEGER(IntKi), PARAMETER :: B9ADOF49Hds = 5806 + INTEGER(IntKi), PARAMETER :: B9ADOF50Hds = 5807 + INTEGER(IntKi), PARAMETER :: B9ADOF51Hds = 5808 + INTEGER(IntKi), PARAMETER :: B9ADOF52Hds = 5809 + INTEGER(IntKi), PARAMETER :: B9ADOF53Hds = 5810 + INTEGER(IntKi), PARAMETER :: B9ADOF54Hds = 5811 + INTEGER(IntKi), PARAMETER :: B9ADOF55Hds = 5812 + INTEGER(IntKi), PARAMETER :: B9ADOF56Hds = 5813 + INTEGER(IntKi), PARAMETER :: B9ADOF57Hds = 5814 + INTEGER(IntKi), PARAMETER :: B9ADOF58Hds = 5815 + INTEGER(IntKi), PARAMETER :: B9ADOF59Hds = 5816 + INTEGER(IntKi), PARAMETER :: B9ADOF60Hds = 5817 + INTEGER(IntKi), PARAMETER :: B9ADOF61Hds = 5818 + INTEGER(IntKi), PARAMETER :: B9ADOF62Hds = 5819 + INTEGER(IntKi), PARAMETER :: B9ADOF63Hds = 5820 + INTEGER(IntKi), PARAMETER :: B9ADOF64Hds = 5821 + INTEGER(IntKi), PARAMETER :: B9ADOF65Hds = 5822 + INTEGER(IntKi), PARAMETER :: B9ADOF66Hds = 5823 + INTEGER(IntKi), PARAMETER :: B9ADOF67Hds = 5824 + INTEGER(IntKi), PARAMETER :: B9ADOF68Hds = 5825 + INTEGER(IntKi), PARAMETER :: B9ADOF69Hds = 5826 + INTEGER(IntKi), PARAMETER :: B9ADOF70Hds = 5827 + INTEGER(IntKi), PARAMETER :: B9ADOF71Hds = 5828 + INTEGER(IntKi), PARAMETER :: B9ADOF72Hds = 5829 + INTEGER(IntKi), PARAMETER :: B9ADOF73Hds = 5830 + INTEGER(IntKi), PARAMETER :: B9ADOF74Hds = 5831 + INTEGER(IntKi), PARAMETER :: B9ADOF75Hds = 5832 + INTEGER(IntKi), PARAMETER :: B9ADOF76Hds = 5833 + INTEGER(IntKi), PARAMETER :: B9ADOF77Hds = 5834 + INTEGER(IntKi), PARAMETER :: B9ADOF78Hds = 5835 + INTEGER(IntKi), PARAMETER :: B9ADOF79Hds = 5836 + INTEGER(IntKi), PARAMETER :: B9ADOF80Hds = 5837 + INTEGER(IntKi), PARAMETER :: B9ADOF81Hds = 5838 + INTEGER(IntKi), PARAMETER :: B9ADOF82Hds = 5839 + INTEGER(IntKi), PARAMETER :: B9ADOF83Hds = 5840 + INTEGER(IntKi), PARAMETER :: B9ADOF84Hds = 5841 + INTEGER(IntKi), PARAMETER :: B9ADOF85Hds = 5842 + INTEGER(IntKi), PARAMETER :: B9ADOF86Hds = 5843 + INTEGER(IntKi), PARAMETER :: B9ADOF87Hds = 5844 + INTEGER(IntKi), PARAMETER :: B9ADOF88Hds = 5845 + INTEGER(IntKi), PARAMETER :: B9ADOF89Hds = 5846 + INTEGER(IntKi), PARAMETER :: B9ADOF90Hds = 5847 + INTEGER(IntKi), PARAMETER :: B9ADOF91Hds = 5848 + INTEGER(IntKi), PARAMETER :: B9ADOF92Hds = 5849 + INTEGER(IntKi), PARAMETER :: B9ADOF93Hds = 5850 + INTEGER(IntKi), PARAMETER :: B9ADOF94Hds = 5851 + INTEGER(IntKi), PARAMETER :: B9ADOF95Hds = 5852 + INTEGER(IntKi), PARAMETER :: B9ADOF96Hds = 5853 + INTEGER(IntKi), PARAMETER :: B9ADOF97Hds = 5854 + INTEGER(IntKi), PARAMETER :: B9ADOF98Hds = 5855 + INTEGER(IntKi), PARAMETER :: B9ADOF99Hds = 5856 + INTEGER(IntKi), PARAMETER :: B1ADOF1Wvs = 5857 + INTEGER(IntKi), PARAMETER :: B1ADOF2Wvs = 5858 + INTEGER(IntKi), PARAMETER :: B1ADOF3Wvs = 5859 + INTEGER(IntKi), PARAMETER :: B1ADOF4Wvs = 5860 + INTEGER(IntKi), PARAMETER :: B1ADOF5Wvs = 5861 + INTEGER(IntKi), PARAMETER :: B1ADOF6Wvs = 5862 + INTEGER(IntKi), PARAMETER :: B1ADOF7Wvs = 5863 + INTEGER(IntKi), PARAMETER :: B1ADOF8Wvs = 5864 + INTEGER(IntKi), PARAMETER :: B1ADOF9Wvs = 5865 + INTEGER(IntKi), PARAMETER :: B1ADOF10Wvs = 5866 + INTEGER(IntKi), PARAMETER :: B1ADOF11Wvs = 5867 + INTEGER(IntKi), PARAMETER :: B1ADOF12Wvs = 5868 + INTEGER(IntKi), PARAMETER :: B1ADOF13Wvs = 5869 + INTEGER(IntKi), PARAMETER :: B1ADOF14Wvs = 5870 + INTEGER(IntKi), PARAMETER :: B1ADOF15Wvs = 5871 + INTEGER(IntKi), PARAMETER :: B1ADOF16Wvs = 5872 + INTEGER(IntKi), PARAMETER :: B1ADOF17Wvs = 5873 + INTEGER(IntKi), PARAMETER :: B1ADOF18Wvs = 5874 + INTEGER(IntKi), PARAMETER :: B1ADOF19Wvs = 5875 + INTEGER(IntKi), PARAMETER :: B1ADOF20Wvs = 5876 + INTEGER(IntKi), PARAMETER :: B1ADOF21Wvs = 5877 + INTEGER(IntKi), PARAMETER :: B1ADOF22Wvs = 5878 + INTEGER(IntKi), PARAMETER :: B1ADOF23Wvs = 5879 + INTEGER(IntKi), PARAMETER :: B1ADOF24Wvs = 5880 + INTEGER(IntKi), PARAMETER :: B1ADOF25Wvs = 5881 + INTEGER(IntKi), PARAMETER :: B1ADOF26Wvs = 5882 + INTEGER(IntKi), PARAMETER :: B1ADOF27Wvs = 5883 + INTEGER(IntKi), PARAMETER :: B1ADOF28Wvs = 5884 + INTEGER(IntKi), PARAMETER :: B1ADOF29Wvs = 5885 + INTEGER(IntKi), PARAMETER :: B1ADOF30Wvs = 5886 + INTEGER(IntKi), PARAMETER :: B1ADOF31Wvs = 5887 + INTEGER(IntKi), PARAMETER :: B1ADOF32Wvs = 5888 + INTEGER(IntKi), PARAMETER :: B1ADOF33Wvs = 5889 + INTEGER(IntKi), PARAMETER :: B1ADOF34Wvs = 5890 + INTEGER(IntKi), PARAMETER :: B1ADOF35Wvs = 5891 + INTEGER(IntKi), PARAMETER :: B1ADOF36Wvs = 5892 + INTEGER(IntKi), PARAMETER :: B1ADOF37Wvs = 5893 + INTEGER(IntKi), PARAMETER :: B1ADOF38Wvs = 5894 + INTEGER(IntKi), PARAMETER :: B1ADOF39Wvs = 5895 + INTEGER(IntKi), PARAMETER :: B1ADOF40Wvs = 5896 + INTEGER(IntKi), PARAMETER :: B1ADOF41Wvs = 5897 + INTEGER(IntKi), PARAMETER :: B1ADOF42Wvs = 5898 + INTEGER(IntKi), PARAMETER :: B1ADOF43Wvs = 5899 + INTEGER(IntKi), PARAMETER :: B1ADOF44Wvs = 5900 + INTEGER(IntKi), PARAMETER :: B1ADOF45Wvs = 5901 + INTEGER(IntKi), PARAMETER :: B1ADOF46Wvs = 5902 + INTEGER(IntKi), PARAMETER :: B1ADOF47Wvs = 5903 + INTEGER(IntKi), PARAMETER :: B1ADOF48Wvs = 5904 + INTEGER(IntKi), PARAMETER :: B1ADOF49Wvs = 5905 + INTEGER(IntKi), PARAMETER :: B1ADOF50Wvs = 5906 + INTEGER(IntKi), PARAMETER :: B1ADOF51Wvs = 5907 + INTEGER(IntKi), PARAMETER :: B1ADOF52Wvs = 5908 + INTEGER(IntKi), PARAMETER :: B1ADOF53Wvs = 5909 + INTEGER(IntKi), PARAMETER :: B1ADOF54Wvs = 5910 + INTEGER(IntKi), PARAMETER :: B1ADOF55Wvs = 5911 + INTEGER(IntKi), PARAMETER :: B1ADOF56Wvs = 5912 + INTEGER(IntKi), PARAMETER :: B1ADOF57Wvs = 5913 + INTEGER(IntKi), PARAMETER :: B1ADOF58Wvs = 5914 + INTEGER(IntKi), PARAMETER :: B1ADOF59Wvs = 5915 + INTEGER(IntKi), PARAMETER :: B1ADOF60Wvs = 5916 + INTEGER(IntKi), PARAMETER :: B1ADOF61Wvs = 5917 + INTEGER(IntKi), PARAMETER :: B1ADOF62Wvs = 5918 + INTEGER(IntKi), PARAMETER :: B1ADOF63Wvs = 5919 + INTEGER(IntKi), PARAMETER :: B1ADOF64Wvs = 5920 + INTEGER(IntKi), PARAMETER :: B1ADOF65Wvs = 5921 + INTEGER(IntKi), PARAMETER :: B1ADOF66Wvs = 5922 + INTEGER(IntKi), PARAMETER :: B1ADOF67Wvs = 5923 + INTEGER(IntKi), PARAMETER :: B1ADOF68Wvs = 5924 + INTEGER(IntKi), PARAMETER :: B1ADOF69Wvs = 5925 + INTEGER(IntKi), PARAMETER :: B1ADOF70Wvs = 5926 + INTEGER(IntKi), PARAMETER :: B1ADOF71Wvs = 5927 + INTEGER(IntKi), PARAMETER :: B1ADOF72Wvs = 5928 + INTEGER(IntKi), PARAMETER :: B1ADOF73Wvs = 5929 + INTEGER(IntKi), PARAMETER :: B1ADOF74Wvs = 5930 + INTEGER(IntKi), PARAMETER :: B1ADOF75Wvs = 5931 + INTEGER(IntKi), PARAMETER :: B1ADOF76Wvs = 5932 + INTEGER(IntKi), PARAMETER :: B1ADOF77Wvs = 5933 + INTEGER(IntKi), PARAMETER :: B1ADOF78Wvs = 5934 + INTEGER(IntKi), PARAMETER :: B1ADOF79Wvs = 5935 + INTEGER(IntKi), PARAMETER :: B1ADOF80Wvs = 5936 + INTEGER(IntKi), PARAMETER :: B1ADOF81Wvs = 5937 + INTEGER(IntKi), PARAMETER :: B1ADOF82Wvs = 5938 + INTEGER(IntKi), PARAMETER :: B1ADOF83Wvs = 5939 + INTEGER(IntKi), PARAMETER :: B1ADOF84Wvs = 5940 + INTEGER(IntKi), PARAMETER :: B1ADOF85Wvs = 5941 + INTEGER(IntKi), PARAMETER :: B1ADOF86Wvs = 5942 + INTEGER(IntKi), PARAMETER :: B1ADOF87Wvs = 5943 + INTEGER(IntKi), PARAMETER :: B1ADOF88Wvs = 5944 + INTEGER(IntKi), PARAMETER :: B1ADOF89Wvs = 5945 + INTEGER(IntKi), PARAMETER :: B1ADOF90Wvs = 5946 + INTEGER(IntKi), PARAMETER :: B1ADOF91Wvs = 5947 + INTEGER(IntKi), PARAMETER :: B1ADOF92Wvs = 5948 + INTEGER(IntKi), PARAMETER :: B1ADOF93Wvs = 5949 + INTEGER(IntKi), PARAMETER :: B1ADOF94Wvs = 5950 + INTEGER(IntKi), PARAMETER :: B1ADOF95Wvs = 5951 + INTEGER(IntKi), PARAMETER :: B1ADOF96Wvs = 5952 + INTEGER(IntKi), PARAMETER :: B1ADOF97Wvs = 5953 + INTEGER(IntKi), PARAMETER :: B1ADOF98Wvs = 5954 + INTEGER(IntKi), PARAMETER :: B1ADOF99Wvs = 5955 + INTEGER(IntKi), PARAMETER :: B2ADOF1Wvs = 5956 + INTEGER(IntKi), PARAMETER :: B2ADOF2Wvs = 5957 + INTEGER(IntKi), PARAMETER :: B2ADOF3Wvs = 5958 + INTEGER(IntKi), PARAMETER :: B2ADOF4Wvs = 5959 + INTEGER(IntKi), PARAMETER :: B2ADOF5Wvs = 5960 + INTEGER(IntKi), PARAMETER :: B2ADOF6Wvs = 5961 + INTEGER(IntKi), PARAMETER :: B2ADOF7Wvs = 5962 + INTEGER(IntKi), PARAMETER :: B2ADOF8Wvs = 5963 + INTEGER(IntKi), PARAMETER :: B2ADOF9Wvs = 5964 + INTEGER(IntKi), PARAMETER :: B2ADOF10Wvs = 5965 + INTEGER(IntKi), PARAMETER :: B2ADOF11Wvs = 5966 + INTEGER(IntKi), PARAMETER :: B2ADOF12Wvs = 5967 + INTEGER(IntKi), PARAMETER :: B2ADOF13Wvs = 5968 + INTEGER(IntKi), PARAMETER :: B2ADOF14Wvs = 5969 + INTEGER(IntKi), PARAMETER :: B2ADOF15Wvs = 5970 + INTEGER(IntKi), PARAMETER :: B2ADOF16Wvs = 5971 + INTEGER(IntKi), PARAMETER :: B2ADOF17Wvs = 5972 + INTEGER(IntKi), PARAMETER :: B2ADOF18Wvs = 5973 + INTEGER(IntKi), PARAMETER :: B2ADOF19Wvs = 5974 + INTEGER(IntKi), PARAMETER :: B2ADOF20Wvs = 5975 + INTEGER(IntKi), PARAMETER :: B2ADOF21Wvs = 5976 + INTEGER(IntKi), PARAMETER :: B2ADOF22Wvs = 5977 + INTEGER(IntKi), PARAMETER :: B2ADOF23Wvs = 5978 + INTEGER(IntKi), PARAMETER :: B2ADOF24Wvs = 5979 + INTEGER(IntKi), PARAMETER :: B2ADOF25Wvs = 5980 + INTEGER(IntKi), PARAMETER :: B2ADOF26Wvs = 5981 + INTEGER(IntKi), PARAMETER :: B2ADOF27Wvs = 5982 + INTEGER(IntKi), PARAMETER :: B2ADOF28Wvs = 5983 + INTEGER(IntKi), PARAMETER :: B2ADOF29Wvs = 5984 + INTEGER(IntKi), PARAMETER :: B2ADOF30Wvs = 5985 + INTEGER(IntKi), PARAMETER :: B2ADOF31Wvs = 5986 + INTEGER(IntKi), PARAMETER :: B2ADOF32Wvs = 5987 + INTEGER(IntKi), PARAMETER :: B2ADOF33Wvs = 5988 + INTEGER(IntKi), PARAMETER :: B2ADOF34Wvs = 5989 + INTEGER(IntKi), PARAMETER :: B2ADOF35Wvs = 5990 + INTEGER(IntKi), PARAMETER :: B2ADOF36Wvs = 5991 + INTEGER(IntKi), PARAMETER :: B2ADOF37Wvs = 5992 + INTEGER(IntKi), PARAMETER :: B2ADOF38Wvs = 5993 + INTEGER(IntKi), PARAMETER :: B2ADOF39Wvs = 5994 + INTEGER(IntKi), PARAMETER :: B2ADOF40Wvs = 5995 + INTEGER(IntKi), PARAMETER :: B2ADOF41Wvs = 5996 + INTEGER(IntKi), PARAMETER :: B2ADOF42Wvs = 5997 + INTEGER(IntKi), PARAMETER :: B2ADOF43Wvs = 5998 + INTEGER(IntKi), PARAMETER :: B2ADOF44Wvs = 5999 + INTEGER(IntKi), PARAMETER :: B2ADOF45Wvs = 6000 + INTEGER(IntKi), PARAMETER :: B2ADOF46Wvs = 6001 + INTEGER(IntKi), PARAMETER :: B2ADOF47Wvs = 6002 + INTEGER(IntKi), PARAMETER :: B2ADOF48Wvs = 6003 + INTEGER(IntKi), PARAMETER :: B2ADOF49Wvs = 6004 + INTEGER(IntKi), PARAMETER :: B2ADOF50Wvs = 6005 + INTEGER(IntKi), PARAMETER :: B2ADOF51Wvs = 6006 + INTEGER(IntKi), PARAMETER :: B2ADOF52Wvs = 6007 + INTEGER(IntKi), PARAMETER :: B2ADOF53Wvs = 6008 + INTEGER(IntKi), PARAMETER :: B2ADOF54Wvs = 6009 + INTEGER(IntKi), PARAMETER :: B2ADOF55Wvs = 6010 + INTEGER(IntKi), PARAMETER :: B2ADOF56Wvs = 6011 + INTEGER(IntKi), PARAMETER :: B2ADOF57Wvs = 6012 + INTEGER(IntKi), PARAMETER :: B2ADOF58Wvs = 6013 + INTEGER(IntKi), PARAMETER :: B2ADOF59Wvs = 6014 + INTEGER(IntKi), PARAMETER :: B2ADOF60Wvs = 6015 + INTEGER(IntKi), PARAMETER :: B2ADOF61Wvs = 6016 + INTEGER(IntKi), PARAMETER :: B2ADOF62Wvs = 6017 + INTEGER(IntKi), PARAMETER :: B2ADOF63Wvs = 6018 + INTEGER(IntKi), PARAMETER :: B2ADOF64Wvs = 6019 + INTEGER(IntKi), PARAMETER :: B2ADOF65Wvs = 6020 + INTEGER(IntKi), PARAMETER :: B2ADOF66Wvs = 6021 + INTEGER(IntKi), PARAMETER :: B2ADOF67Wvs = 6022 + INTEGER(IntKi), PARAMETER :: B2ADOF68Wvs = 6023 + INTEGER(IntKi), PARAMETER :: B2ADOF69Wvs = 6024 + INTEGER(IntKi), PARAMETER :: B2ADOF70Wvs = 6025 + INTEGER(IntKi), PARAMETER :: B2ADOF71Wvs = 6026 + INTEGER(IntKi), PARAMETER :: B2ADOF72Wvs = 6027 + INTEGER(IntKi), PARAMETER :: B2ADOF73Wvs = 6028 + INTEGER(IntKi), PARAMETER :: B2ADOF74Wvs = 6029 + INTEGER(IntKi), PARAMETER :: B2ADOF75Wvs = 6030 + INTEGER(IntKi), PARAMETER :: B2ADOF76Wvs = 6031 + INTEGER(IntKi), PARAMETER :: B2ADOF77Wvs = 6032 + INTEGER(IntKi), PARAMETER :: B2ADOF78Wvs = 6033 + INTEGER(IntKi), PARAMETER :: B2ADOF79Wvs = 6034 + INTEGER(IntKi), PARAMETER :: B2ADOF80Wvs = 6035 + INTEGER(IntKi), PARAMETER :: B2ADOF81Wvs = 6036 + INTEGER(IntKi), PARAMETER :: B2ADOF82Wvs = 6037 + INTEGER(IntKi), PARAMETER :: B2ADOF83Wvs = 6038 + INTEGER(IntKi), PARAMETER :: B2ADOF84Wvs = 6039 + INTEGER(IntKi), PARAMETER :: B2ADOF85Wvs = 6040 + INTEGER(IntKi), PARAMETER :: B2ADOF86Wvs = 6041 + INTEGER(IntKi), PARAMETER :: B2ADOF87Wvs = 6042 + INTEGER(IntKi), PARAMETER :: B2ADOF88Wvs = 6043 + INTEGER(IntKi), PARAMETER :: B2ADOF89Wvs = 6044 + INTEGER(IntKi), PARAMETER :: B2ADOF90Wvs = 6045 + INTEGER(IntKi), PARAMETER :: B2ADOF91Wvs = 6046 + INTEGER(IntKi), PARAMETER :: B2ADOF92Wvs = 6047 + INTEGER(IntKi), PARAMETER :: B2ADOF93Wvs = 6048 + INTEGER(IntKi), PARAMETER :: B2ADOF94Wvs = 6049 + INTEGER(IntKi), PARAMETER :: B2ADOF95Wvs = 6050 + INTEGER(IntKi), PARAMETER :: B2ADOF96Wvs = 6051 + INTEGER(IntKi), PARAMETER :: B2ADOF97Wvs = 6052 + INTEGER(IntKi), PARAMETER :: B2ADOF98Wvs = 6053 + INTEGER(IntKi), PARAMETER :: B2ADOF99Wvs = 6054 + INTEGER(IntKi), PARAMETER :: B3ADOF1Wvs = 6055 + INTEGER(IntKi), PARAMETER :: B3ADOF2Wvs = 6056 + INTEGER(IntKi), PARAMETER :: B3ADOF3Wvs = 6057 + INTEGER(IntKi), PARAMETER :: B3ADOF4Wvs = 6058 + INTEGER(IntKi), PARAMETER :: B3ADOF5Wvs = 6059 + INTEGER(IntKi), PARAMETER :: B3ADOF6Wvs = 6060 + INTEGER(IntKi), PARAMETER :: B3ADOF7Wvs = 6061 + INTEGER(IntKi), PARAMETER :: B3ADOF8Wvs = 6062 + INTEGER(IntKi), PARAMETER :: B3ADOF9Wvs = 6063 + INTEGER(IntKi), PARAMETER :: B3ADOF10Wvs = 6064 + INTEGER(IntKi), PARAMETER :: B3ADOF11Wvs = 6065 + INTEGER(IntKi), PARAMETER :: B3ADOF12Wvs = 6066 + INTEGER(IntKi), PARAMETER :: B3ADOF13Wvs = 6067 + INTEGER(IntKi), PARAMETER :: B3ADOF14Wvs = 6068 + INTEGER(IntKi), PARAMETER :: B3ADOF15Wvs = 6069 + INTEGER(IntKi), PARAMETER :: B3ADOF16Wvs = 6070 + INTEGER(IntKi), PARAMETER :: B3ADOF17Wvs = 6071 + INTEGER(IntKi), PARAMETER :: B3ADOF18Wvs = 6072 + INTEGER(IntKi), PARAMETER :: B3ADOF19Wvs = 6073 + INTEGER(IntKi), PARAMETER :: B3ADOF20Wvs = 6074 + INTEGER(IntKi), PARAMETER :: B3ADOF21Wvs = 6075 + INTEGER(IntKi), PARAMETER :: B3ADOF22Wvs = 6076 + INTEGER(IntKi), PARAMETER :: B3ADOF23Wvs = 6077 + INTEGER(IntKi), PARAMETER :: B3ADOF24Wvs = 6078 + INTEGER(IntKi), PARAMETER :: B3ADOF25Wvs = 6079 + INTEGER(IntKi), PARAMETER :: B3ADOF26Wvs = 6080 + INTEGER(IntKi), PARAMETER :: B3ADOF27Wvs = 6081 + INTEGER(IntKi), PARAMETER :: B3ADOF28Wvs = 6082 + INTEGER(IntKi), PARAMETER :: B3ADOF29Wvs = 6083 + INTEGER(IntKi), PARAMETER :: B3ADOF30Wvs = 6084 + INTEGER(IntKi), PARAMETER :: B3ADOF31Wvs = 6085 + INTEGER(IntKi), PARAMETER :: B3ADOF32Wvs = 6086 + INTEGER(IntKi), PARAMETER :: B3ADOF33Wvs = 6087 + INTEGER(IntKi), PARAMETER :: B3ADOF34Wvs = 6088 + INTEGER(IntKi), PARAMETER :: B3ADOF35Wvs = 6089 + INTEGER(IntKi), PARAMETER :: B3ADOF36Wvs = 6090 + INTEGER(IntKi), PARAMETER :: B3ADOF37Wvs = 6091 + INTEGER(IntKi), PARAMETER :: B3ADOF38Wvs = 6092 + INTEGER(IntKi), PARAMETER :: B3ADOF39Wvs = 6093 + INTEGER(IntKi), PARAMETER :: B3ADOF40Wvs = 6094 + INTEGER(IntKi), PARAMETER :: B3ADOF41Wvs = 6095 + INTEGER(IntKi), PARAMETER :: B3ADOF42Wvs = 6096 + INTEGER(IntKi), PARAMETER :: B3ADOF43Wvs = 6097 + INTEGER(IntKi), PARAMETER :: B3ADOF44Wvs = 6098 + INTEGER(IntKi), PARAMETER :: B3ADOF45Wvs = 6099 + INTEGER(IntKi), PARAMETER :: B3ADOF46Wvs = 6100 + INTEGER(IntKi), PARAMETER :: B3ADOF47Wvs = 6101 + INTEGER(IntKi), PARAMETER :: B3ADOF48Wvs = 6102 + INTEGER(IntKi), PARAMETER :: B3ADOF49Wvs = 6103 + INTEGER(IntKi), PARAMETER :: B3ADOF50Wvs = 6104 + INTEGER(IntKi), PARAMETER :: B3ADOF51Wvs = 6105 + INTEGER(IntKi), PARAMETER :: B3ADOF52Wvs = 6106 + INTEGER(IntKi), PARAMETER :: B3ADOF53Wvs = 6107 + INTEGER(IntKi), PARAMETER :: B3ADOF54Wvs = 6108 + INTEGER(IntKi), PARAMETER :: B3ADOF55Wvs = 6109 + INTEGER(IntKi), PARAMETER :: B3ADOF56Wvs = 6110 + INTEGER(IntKi), PARAMETER :: B3ADOF57Wvs = 6111 + INTEGER(IntKi), PARAMETER :: B3ADOF58Wvs = 6112 + INTEGER(IntKi), PARAMETER :: B3ADOF59Wvs = 6113 + INTEGER(IntKi), PARAMETER :: B3ADOF60Wvs = 6114 + INTEGER(IntKi), PARAMETER :: B3ADOF61Wvs = 6115 + INTEGER(IntKi), PARAMETER :: B3ADOF62Wvs = 6116 + INTEGER(IntKi), PARAMETER :: B3ADOF63Wvs = 6117 + INTEGER(IntKi), PARAMETER :: B3ADOF64Wvs = 6118 + INTEGER(IntKi), PARAMETER :: B3ADOF65Wvs = 6119 + INTEGER(IntKi), PARAMETER :: B3ADOF66Wvs = 6120 + INTEGER(IntKi), PARAMETER :: B3ADOF67Wvs = 6121 + INTEGER(IntKi), PARAMETER :: B3ADOF68Wvs = 6122 + INTEGER(IntKi), PARAMETER :: B3ADOF69Wvs = 6123 + INTEGER(IntKi), PARAMETER :: B3ADOF70Wvs = 6124 + INTEGER(IntKi), PARAMETER :: B3ADOF71Wvs = 6125 + INTEGER(IntKi), PARAMETER :: B3ADOF72Wvs = 6126 + INTEGER(IntKi), PARAMETER :: B3ADOF73Wvs = 6127 + INTEGER(IntKi), PARAMETER :: B3ADOF74Wvs = 6128 + INTEGER(IntKi), PARAMETER :: B3ADOF75Wvs = 6129 + INTEGER(IntKi), PARAMETER :: B3ADOF76Wvs = 6130 + INTEGER(IntKi), PARAMETER :: B3ADOF77Wvs = 6131 + INTEGER(IntKi), PARAMETER :: B3ADOF78Wvs = 6132 + INTEGER(IntKi), PARAMETER :: B3ADOF79Wvs = 6133 + INTEGER(IntKi), PARAMETER :: B3ADOF80Wvs = 6134 + INTEGER(IntKi), PARAMETER :: B3ADOF81Wvs = 6135 + INTEGER(IntKi), PARAMETER :: B3ADOF82Wvs = 6136 + INTEGER(IntKi), PARAMETER :: B3ADOF83Wvs = 6137 + INTEGER(IntKi), PARAMETER :: B3ADOF84Wvs = 6138 + INTEGER(IntKi), PARAMETER :: B3ADOF85Wvs = 6139 + INTEGER(IntKi), PARAMETER :: B3ADOF86Wvs = 6140 + INTEGER(IntKi), PARAMETER :: B3ADOF87Wvs = 6141 + INTEGER(IntKi), PARAMETER :: B3ADOF88Wvs = 6142 + INTEGER(IntKi), PARAMETER :: B3ADOF89Wvs = 6143 + INTEGER(IntKi), PARAMETER :: B3ADOF90Wvs = 6144 + INTEGER(IntKi), PARAMETER :: B3ADOF91Wvs = 6145 + INTEGER(IntKi), PARAMETER :: B3ADOF92Wvs = 6146 + INTEGER(IntKi), PARAMETER :: B3ADOF93Wvs = 6147 + INTEGER(IntKi), PARAMETER :: B3ADOF94Wvs = 6148 + INTEGER(IntKi), PARAMETER :: B3ADOF95Wvs = 6149 + INTEGER(IntKi), PARAMETER :: B3ADOF96Wvs = 6150 + INTEGER(IntKi), PARAMETER :: B3ADOF97Wvs = 6151 + INTEGER(IntKi), PARAMETER :: B3ADOF98Wvs = 6152 + INTEGER(IntKi), PARAMETER :: B3ADOF99Wvs = 6153 + INTEGER(IntKi), PARAMETER :: B4ADOF1Wvs = 6154 + INTEGER(IntKi), PARAMETER :: B4ADOF2Wvs = 6155 + INTEGER(IntKi), PARAMETER :: B4ADOF3Wvs = 6156 + INTEGER(IntKi), PARAMETER :: B4ADOF4Wvs = 6157 + INTEGER(IntKi), PARAMETER :: B4ADOF5Wvs = 6158 + INTEGER(IntKi), PARAMETER :: B4ADOF6Wvs = 6159 + INTEGER(IntKi), PARAMETER :: B4ADOF7Wvs = 6160 + INTEGER(IntKi), PARAMETER :: B4ADOF8Wvs = 6161 + INTEGER(IntKi), PARAMETER :: B4ADOF9Wvs = 6162 + INTEGER(IntKi), PARAMETER :: B4ADOF10Wvs = 6163 + INTEGER(IntKi), PARAMETER :: B4ADOF11Wvs = 6164 + INTEGER(IntKi), PARAMETER :: B4ADOF12Wvs = 6165 + INTEGER(IntKi), PARAMETER :: B4ADOF13Wvs = 6166 + INTEGER(IntKi), PARAMETER :: B4ADOF14Wvs = 6167 + INTEGER(IntKi), PARAMETER :: B4ADOF15Wvs = 6168 + INTEGER(IntKi), PARAMETER :: B4ADOF16Wvs = 6169 + INTEGER(IntKi), PARAMETER :: B4ADOF17Wvs = 6170 + INTEGER(IntKi), PARAMETER :: B4ADOF18Wvs = 6171 + INTEGER(IntKi), PARAMETER :: B4ADOF19Wvs = 6172 + INTEGER(IntKi), PARAMETER :: B4ADOF20Wvs = 6173 + INTEGER(IntKi), PARAMETER :: B4ADOF21Wvs = 6174 + INTEGER(IntKi), PARAMETER :: B4ADOF22Wvs = 6175 + INTEGER(IntKi), PARAMETER :: B4ADOF23Wvs = 6176 + INTEGER(IntKi), PARAMETER :: B4ADOF24Wvs = 6177 + INTEGER(IntKi), PARAMETER :: B4ADOF25Wvs = 6178 + INTEGER(IntKi), PARAMETER :: B4ADOF26Wvs = 6179 + INTEGER(IntKi), PARAMETER :: B4ADOF27Wvs = 6180 + INTEGER(IntKi), PARAMETER :: B4ADOF28Wvs = 6181 + INTEGER(IntKi), PARAMETER :: B4ADOF29Wvs = 6182 + INTEGER(IntKi), PARAMETER :: B4ADOF30Wvs = 6183 + INTEGER(IntKi), PARAMETER :: B4ADOF31Wvs = 6184 + INTEGER(IntKi), PARAMETER :: B4ADOF32Wvs = 6185 + INTEGER(IntKi), PARAMETER :: B4ADOF33Wvs = 6186 + INTEGER(IntKi), PARAMETER :: B4ADOF34Wvs = 6187 + INTEGER(IntKi), PARAMETER :: B4ADOF35Wvs = 6188 + INTEGER(IntKi), PARAMETER :: B4ADOF36Wvs = 6189 + INTEGER(IntKi), PARAMETER :: B4ADOF37Wvs = 6190 + INTEGER(IntKi), PARAMETER :: B4ADOF38Wvs = 6191 + INTEGER(IntKi), PARAMETER :: B4ADOF39Wvs = 6192 + INTEGER(IntKi), PARAMETER :: B4ADOF40Wvs = 6193 + INTEGER(IntKi), PARAMETER :: B4ADOF41Wvs = 6194 + INTEGER(IntKi), PARAMETER :: B4ADOF42Wvs = 6195 + INTEGER(IntKi), PARAMETER :: B4ADOF43Wvs = 6196 + INTEGER(IntKi), PARAMETER :: B4ADOF44Wvs = 6197 + INTEGER(IntKi), PARAMETER :: B4ADOF45Wvs = 6198 + INTEGER(IntKi), PARAMETER :: B4ADOF46Wvs = 6199 + INTEGER(IntKi), PARAMETER :: B4ADOF47Wvs = 6200 + INTEGER(IntKi), PARAMETER :: B4ADOF48Wvs = 6201 + INTEGER(IntKi), PARAMETER :: B4ADOF49Wvs = 6202 + INTEGER(IntKi), PARAMETER :: B4ADOF50Wvs = 6203 + INTEGER(IntKi), PARAMETER :: B4ADOF51Wvs = 6204 + INTEGER(IntKi), PARAMETER :: B4ADOF52Wvs = 6205 + INTEGER(IntKi), PARAMETER :: B4ADOF53Wvs = 6206 + INTEGER(IntKi), PARAMETER :: B4ADOF54Wvs = 6207 + INTEGER(IntKi), PARAMETER :: B4ADOF55Wvs = 6208 + INTEGER(IntKi), PARAMETER :: B4ADOF56Wvs = 6209 + INTEGER(IntKi), PARAMETER :: B4ADOF57Wvs = 6210 + INTEGER(IntKi), PARAMETER :: B4ADOF58Wvs = 6211 + INTEGER(IntKi), PARAMETER :: B4ADOF59Wvs = 6212 + INTEGER(IntKi), PARAMETER :: B4ADOF60Wvs = 6213 + INTEGER(IntKi), PARAMETER :: B4ADOF61Wvs = 6214 + INTEGER(IntKi), PARAMETER :: B4ADOF62Wvs = 6215 + INTEGER(IntKi), PARAMETER :: B4ADOF63Wvs = 6216 + INTEGER(IntKi), PARAMETER :: B4ADOF64Wvs = 6217 + INTEGER(IntKi), PARAMETER :: B4ADOF65Wvs = 6218 + INTEGER(IntKi), PARAMETER :: B4ADOF66Wvs = 6219 + INTEGER(IntKi), PARAMETER :: B4ADOF67Wvs = 6220 + INTEGER(IntKi), PARAMETER :: B4ADOF68Wvs = 6221 + INTEGER(IntKi), PARAMETER :: B4ADOF69Wvs = 6222 + INTEGER(IntKi), PARAMETER :: B4ADOF70Wvs = 6223 + INTEGER(IntKi), PARAMETER :: B4ADOF71Wvs = 6224 + INTEGER(IntKi), PARAMETER :: B4ADOF72Wvs = 6225 + INTEGER(IntKi), PARAMETER :: B4ADOF73Wvs = 6226 + INTEGER(IntKi), PARAMETER :: B4ADOF74Wvs = 6227 + INTEGER(IntKi), PARAMETER :: B4ADOF75Wvs = 6228 + INTEGER(IntKi), PARAMETER :: B4ADOF76Wvs = 6229 + INTEGER(IntKi), PARAMETER :: B4ADOF77Wvs = 6230 + INTEGER(IntKi), PARAMETER :: B4ADOF78Wvs = 6231 + INTEGER(IntKi), PARAMETER :: B4ADOF79Wvs = 6232 + INTEGER(IntKi), PARAMETER :: B4ADOF80Wvs = 6233 + INTEGER(IntKi), PARAMETER :: B4ADOF81Wvs = 6234 + INTEGER(IntKi), PARAMETER :: B4ADOF82Wvs = 6235 + INTEGER(IntKi), PARAMETER :: B4ADOF83Wvs = 6236 + INTEGER(IntKi), PARAMETER :: B4ADOF84Wvs = 6237 + INTEGER(IntKi), PARAMETER :: B4ADOF85Wvs = 6238 + INTEGER(IntKi), PARAMETER :: B4ADOF86Wvs = 6239 + INTEGER(IntKi), PARAMETER :: B4ADOF87Wvs = 6240 + INTEGER(IntKi), PARAMETER :: B4ADOF88Wvs = 6241 + INTEGER(IntKi), PARAMETER :: B4ADOF89Wvs = 6242 + INTEGER(IntKi), PARAMETER :: B4ADOF90Wvs = 6243 + INTEGER(IntKi), PARAMETER :: B4ADOF91Wvs = 6244 + INTEGER(IntKi), PARAMETER :: B4ADOF92Wvs = 6245 + INTEGER(IntKi), PARAMETER :: B4ADOF93Wvs = 6246 + INTEGER(IntKi), PARAMETER :: B4ADOF94Wvs = 6247 + INTEGER(IntKi), PARAMETER :: B4ADOF95Wvs = 6248 + INTEGER(IntKi), PARAMETER :: B4ADOF96Wvs = 6249 + INTEGER(IntKi), PARAMETER :: B4ADOF97Wvs = 6250 + INTEGER(IntKi), PARAMETER :: B4ADOF98Wvs = 6251 + INTEGER(IntKi), PARAMETER :: B4ADOF99Wvs = 6252 + INTEGER(IntKi), PARAMETER :: B5ADOF1Wvs = 6253 + INTEGER(IntKi), PARAMETER :: B5ADOF2Wvs = 6254 + INTEGER(IntKi), PARAMETER :: B5ADOF3Wvs = 6255 + INTEGER(IntKi), PARAMETER :: B5ADOF4Wvs = 6256 + INTEGER(IntKi), PARAMETER :: B5ADOF5Wvs = 6257 + INTEGER(IntKi), PARAMETER :: B5ADOF6Wvs = 6258 + INTEGER(IntKi), PARAMETER :: B5ADOF7Wvs = 6259 + INTEGER(IntKi), PARAMETER :: B5ADOF8Wvs = 6260 + INTEGER(IntKi), PARAMETER :: B5ADOF9Wvs = 6261 + INTEGER(IntKi), PARAMETER :: B5ADOF10Wvs = 6262 + INTEGER(IntKi), PARAMETER :: B5ADOF11Wvs = 6263 + INTEGER(IntKi), PARAMETER :: B5ADOF12Wvs = 6264 + INTEGER(IntKi), PARAMETER :: B5ADOF13Wvs = 6265 + INTEGER(IntKi), PARAMETER :: B5ADOF14Wvs = 6266 + INTEGER(IntKi), PARAMETER :: B5ADOF15Wvs = 6267 + INTEGER(IntKi), PARAMETER :: B5ADOF16Wvs = 6268 + INTEGER(IntKi), PARAMETER :: B5ADOF17Wvs = 6269 + INTEGER(IntKi), PARAMETER :: B5ADOF18Wvs = 6270 + INTEGER(IntKi), PARAMETER :: B5ADOF19Wvs = 6271 + INTEGER(IntKi), PARAMETER :: B5ADOF20Wvs = 6272 + INTEGER(IntKi), PARAMETER :: B5ADOF21Wvs = 6273 + INTEGER(IntKi), PARAMETER :: B5ADOF22Wvs = 6274 + INTEGER(IntKi), PARAMETER :: B5ADOF23Wvs = 6275 + INTEGER(IntKi), PARAMETER :: B5ADOF24Wvs = 6276 + INTEGER(IntKi), PARAMETER :: B5ADOF25Wvs = 6277 + INTEGER(IntKi), PARAMETER :: B5ADOF26Wvs = 6278 + INTEGER(IntKi), PARAMETER :: B5ADOF27Wvs = 6279 + INTEGER(IntKi), PARAMETER :: B5ADOF28Wvs = 6280 + INTEGER(IntKi), PARAMETER :: B5ADOF29Wvs = 6281 + INTEGER(IntKi), PARAMETER :: B5ADOF30Wvs = 6282 + INTEGER(IntKi), PARAMETER :: B5ADOF31Wvs = 6283 + INTEGER(IntKi), PARAMETER :: B5ADOF32Wvs = 6284 + INTEGER(IntKi), PARAMETER :: B5ADOF33Wvs = 6285 + INTEGER(IntKi), PARAMETER :: B5ADOF34Wvs = 6286 + INTEGER(IntKi), PARAMETER :: B5ADOF35Wvs = 6287 + INTEGER(IntKi), PARAMETER :: B5ADOF36Wvs = 6288 + INTEGER(IntKi), PARAMETER :: B5ADOF37Wvs = 6289 + INTEGER(IntKi), PARAMETER :: B5ADOF38Wvs = 6290 + INTEGER(IntKi), PARAMETER :: B5ADOF39Wvs = 6291 + INTEGER(IntKi), PARAMETER :: B5ADOF40Wvs = 6292 + INTEGER(IntKi), PARAMETER :: B5ADOF41Wvs = 6293 + INTEGER(IntKi), PARAMETER :: B5ADOF42Wvs = 6294 + INTEGER(IntKi), PARAMETER :: B5ADOF43Wvs = 6295 + INTEGER(IntKi), PARAMETER :: B5ADOF44Wvs = 6296 + INTEGER(IntKi), PARAMETER :: B5ADOF45Wvs = 6297 + INTEGER(IntKi), PARAMETER :: B5ADOF46Wvs = 6298 + INTEGER(IntKi), PARAMETER :: B5ADOF47Wvs = 6299 + INTEGER(IntKi), PARAMETER :: B5ADOF48Wvs = 6300 + INTEGER(IntKi), PARAMETER :: B5ADOF49Wvs = 6301 + INTEGER(IntKi), PARAMETER :: B5ADOF50Wvs = 6302 + INTEGER(IntKi), PARAMETER :: B5ADOF51Wvs = 6303 + INTEGER(IntKi), PARAMETER :: B5ADOF52Wvs = 6304 + INTEGER(IntKi), PARAMETER :: B5ADOF53Wvs = 6305 + INTEGER(IntKi), PARAMETER :: B5ADOF54Wvs = 6306 + INTEGER(IntKi), PARAMETER :: B5ADOF55Wvs = 6307 + INTEGER(IntKi), PARAMETER :: B5ADOF56Wvs = 6308 + INTEGER(IntKi), PARAMETER :: B5ADOF57Wvs = 6309 + INTEGER(IntKi), PARAMETER :: B5ADOF58Wvs = 6310 + INTEGER(IntKi), PARAMETER :: B5ADOF59Wvs = 6311 + INTEGER(IntKi), PARAMETER :: B5ADOF60Wvs = 6312 + INTEGER(IntKi), PARAMETER :: B5ADOF61Wvs = 6313 + INTEGER(IntKi), PARAMETER :: B5ADOF62Wvs = 6314 + INTEGER(IntKi), PARAMETER :: B5ADOF63Wvs = 6315 + INTEGER(IntKi), PARAMETER :: B5ADOF64Wvs = 6316 + INTEGER(IntKi), PARAMETER :: B5ADOF65Wvs = 6317 + INTEGER(IntKi), PARAMETER :: B5ADOF66Wvs = 6318 + INTEGER(IntKi), PARAMETER :: B5ADOF67Wvs = 6319 + INTEGER(IntKi), PARAMETER :: B5ADOF68Wvs = 6320 + INTEGER(IntKi), PARAMETER :: B5ADOF69Wvs = 6321 + INTEGER(IntKi), PARAMETER :: B5ADOF70Wvs = 6322 + INTEGER(IntKi), PARAMETER :: B5ADOF71Wvs = 6323 + INTEGER(IntKi), PARAMETER :: B5ADOF72Wvs = 6324 + INTEGER(IntKi), PARAMETER :: B5ADOF73Wvs = 6325 + INTEGER(IntKi), PARAMETER :: B5ADOF74Wvs = 6326 + INTEGER(IntKi), PARAMETER :: B5ADOF75Wvs = 6327 + INTEGER(IntKi), PARAMETER :: B5ADOF76Wvs = 6328 + INTEGER(IntKi), PARAMETER :: B5ADOF77Wvs = 6329 + INTEGER(IntKi), PARAMETER :: B5ADOF78Wvs = 6330 + INTEGER(IntKi), PARAMETER :: B5ADOF79Wvs = 6331 + INTEGER(IntKi), PARAMETER :: B5ADOF80Wvs = 6332 + INTEGER(IntKi), PARAMETER :: B5ADOF81Wvs = 6333 + INTEGER(IntKi), PARAMETER :: B5ADOF82Wvs = 6334 + INTEGER(IntKi), PARAMETER :: B5ADOF83Wvs = 6335 + INTEGER(IntKi), PARAMETER :: B5ADOF84Wvs = 6336 + INTEGER(IntKi), PARAMETER :: B5ADOF85Wvs = 6337 + INTEGER(IntKi), PARAMETER :: B5ADOF86Wvs = 6338 + INTEGER(IntKi), PARAMETER :: B5ADOF87Wvs = 6339 + INTEGER(IntKi), PARAMETER :: B5ADOF88Wvs = 6340 + INTEGER(IntKi), PARAMETER :: B5ADOF89Wvs = 6341 + INTEGER(IntKi), PARAMETER :: B5ADOF90Wvs = 6342 + INTEGER(IntKi), PARAMETER :: B5ADOF91Wvs = 6343 + INTEGER(IntKi), PARAMETER :: B5ADOF92Wvs = 6344 + INTEGER(IntKi), PARAMETER :: B5ADOF93Wvs = 6345 + INTEGER(IntKi), PARAMETER :: B5ADOF94Wvs = 6346 + INTEGER(IntKi), PARAMETER :: B5ADOF95Wvs = 6347 + INTEGER(IntKi), PARAMETER :: B5ADOF96Wvs = 6348 + INTEGER(IntKi), PARAMETER :: B5ADOF97Wvs = 6349 + INTEGER(IntKi), PARAMETER :: B5ADOF98Wvs = 6350 + INTEGER(IntKi), PARAMETER :: B5ADOF99Wvs = 6351 + INTEGER(IntKi), PARAMETER :: B6ADOF1Wvs = 6352 + INTEGER(IntKi), PARAMETER :: B6ADOF2Wvs = 6353 + INTEGER(IntKi), PARAMETER :: B6ADOF3Wvs = 6354 + INTEGER(IntKi), PARAMETER :: B6ADOF4Wvs = 6355 + INTEGER(IntKi), PARAMETER :: B6ADOF5Wvs = 6356 + INTEGER(IntKi), PARAMETER :: B6ADOF6Wvs = 6357 + INTEGER(IntKi), PARAMETER :: B6ADOF7Wvs = 6358 + INTEGER(IntKi), PARAMETER :: B6ADOF8Wvs = 6359 + INTEGER(IntKi), PARAMETER :: B6ADOF9Wvs = 6360 + INTEGER(IntKi), PARAMETER :: B6ADOF10Wvs = 6361 + INTEGER(IntKi), PARAMETER :: B6ADOF11Wvs = 6362 + INTEGER(IntKi), PARAMETER :: B6ADOF12Wvs = 6363 + INTEGER(IntKi), PARAMETER :: B6ADOF13Wvs = 6364 + INTEGER(IntKi), PARAMETER :: B6ADOF14Wvs = 6365 + INTEGER(IntKi), PARAMETER :: B6ADOF15Wvs = 6366 + INTEGER(IntKi), PARAMETER :: B6ADOF16Wvs = 6367 + INTEGER(IntKi), PARAMETER :: B6ADOF17Wvs = 6368 + INTEGER(IntKi), PARAMETER :: B6ADOF18Wvs = 6369 + INTEGER(IntKi), PARAMETER :: B6ADOF19Wvs = 6370 + INTEGER(IntKi), PARAMETER :: B6ADOF20Wvs = 6371 + INTEGER(IntKi), PARAMETER :: B6ADOF21Wvs = 6372 + INTEGER(IntKi), PARAMETER :: B6ADOF22Wvs = 6373 + INTEGER(IntKi), PARAMETER :: B6ADOF23Wvs = 6374 + INTEGER(IntKi), PARAMETER :: B6ADOF24Wvs = 6375 + INTEGER(IntKi), PARAMETER :: B6ADOF25Wvs = 6376 + INTEGER(IntKi), PARAMETER :: B6ADOF26Wvs = 6377 + INTEGER(IntKi), PARAMETER :: B6ADOF27Wvs = 6378 + INTEGER(IntKi), PARAMETER :: B6ADOF28Wvs = 6379 + INTEGER(IntKi), PARAMETER :: B6ADOF29Wvs = 6380 + INTEGER(IntKi), PARAMETER :: B6ADOF30Wvs = 6381 + INTEGER(IntKi), PARAMETER :: B6ADOF31Wvs = 6382 + INTEGER(IntKi), PARAMETER :: B6ADOF32Wvs = 6383 + INTEGER(IntKi), PARAMETER :: B6ADOF33Wvs = 6384 + INTEGER(IntKi), PARAMETER :: B6ADOF34Wvs = 6385 + INTEGER(IntKi), PARAMETER :: B6ADOF35Wvs = 6386 + INTEGER(IntKi), PARAMETER :: B6ADOF36Wvs = 6387 + INTEGER(IntKi), PARAMETER :: B6ADOF37Wvs = 6388 + INTEGER(IntKi), PARAMETER :: B6ADOF38Wvs = 6389 + INTEGER(IntKi), PARAMETER :: B6ADOF39Wvs = 6390 + INTEGER(IntKi), PARAMETER :: B6ADOF40Wvs = 6391 + INTEGER(IntKi), PARAMETER :: B6ADOF41Wvs = 6392 + INTEGER(IntKi), PARAMETER :: B6ADOF42Wvs = 6393 + INTEGER(IntKi), PARAMETER :: B6ADOF43Wvs = 6394 + INTEGER(IntKi), PARAMETER :: B6ADOF44Wvs = 6395 + INTEGER(IntKi), PARAMETER :: B6ADOF45Wvs = 6396 + INTEGER(IntKi), PARAMETER :: B6ADOF46Wvs = 6397 + INTEGER(IntKi), PARAMETER :: B6ADOF47Wvs = 6398 + INTEGER(IntKi), PARAMETER :: B6ADOF48Wvs = 6399 + INTEGER(IntKi), PARAMETER :: B6ADOF49Wvs = 6400 + INTEGER(IntKi), PARAMETER :: B6ADOF50Wvs = 6401 + INTEGER(IntKi), PARAMETER :: B6ADOF51Wvs = 6402 + INTEGER(IntKi), PARAMETER :: B6ADOF52Wvs = 6403 + INTEGER(IntKi), PARAMETER :: B6ADOF53Wvs = 6404 + INTEGER(IntKi), PARAMETER :: B6ADOF54Wvs = 6405 + INTEGER(IntKi), PARAMETER :: B6ADOF55Wvs = 6406 + INTEGER(IntKi), PARAMETER :: B6ADOF56Wvs = 6407 + INTEGER(IntKi), PARAMETER :: B6ADOF57Wvs = 6408 + INTEGER(IntKi), PARAMETER :: B6ADOF58Wvs = 6409 + INTEGER(IntKi), PARAMETER :: B6ADOF59Wvs = 6410 + INTEGER(IntKi), PARAMETER :: B6ADOF60Wvs = 6411 + INTEGER(IntKi), PARAMETER :: B6ADOF61Wvs = 6412 + INTEGER(IntKi), PARAMETER :: B6ADOF62Wvs = 6413 + INTEGER(IntKi), PARAMETER :: B6ADOF63Wvs = 6414 + INTEGER(IntKi), PARAMETER :: B6ADOF64Wvs = 6415 + INTEGER(IntKi), PARAMETER :: B6ADOF65Wvs = 6416 + INTEGER(IntKi), PARAMETER :: B6ADOF66Wvs = 6417 + INTEGER(IntKi), PARAMETER :: B6ADOF67Wvs = 6418 + INTEGER(IntKi), PARAMETER :: B6ADOF68Wvs = 6419 + INTEGER(IntKi), PARAMETER :: B6ADOF69Wvs = 6420 + INTEGER(IntKi), PARAMETER :: B6ADOF70Wvs = 6421 + INTEGER(IntKi), PARAMETER :: B6ADOF71Wvs = 6422 + INTEGER(IntKi), PARAMETER :: B6ADOF72Wvs = 6423 + INTEGER(IntKi), PARAMETER :: B6ADOF73Wvs = 6424 + INTEGER(IntKi), PARAMETER :: B6ADOF74Wvs = 6425 + INTEGER(IntKi), PARAMETER :: B6ADOF75Wvs = 6426 + INTEGER(IntKi), PARAMETER :: B6ADOF76Wvs = 6427 + INTEGER(IntKi), PARAMETER :: B6ADOF77Wvs = 6428 + INTEGER(IntKi), PARAMETER :: B6ADOF78Wvs = 6429 + INTEGER(IntKi), PARAMETER :: B6ADOF79Wvs = 6430 + INTEGER(IntKi), PARAMETER :: B6ADOF80Wvs = 6431 + INTEGER(IntKi), PARAMETER :: B6ADOF81Wvs = 6432 + INTEGER(IntKi), PARAMETER :: B6ADOF82Wvs = 6433 + INTEGER(IntKi), PARAMETER :: B6ADOF83Wvs = 6434 + INTEGER(IntKi), PARAMETER :: B6ADOF84Wvs = 6435 + INTEGER(IntKi), PARAMETER :: B6ADOF85Wvs = 6436 + INTEGER(IntKi), PARAMETER :: B6ADOF86Wvs = 6437 + INTEGER(IntKi), PARAMETER :: B6ADOF87Wvs = 6438 + INTEGER(IntKi), PARAMETER :: B6ADOF88Wvs = 6439 + INTEGER(IntKi), PARAMETER :: B6ADOF89Wvs = 6440 + INTEGER(IntKi), PARAMETER :: B6ADOF90Wvs = 6441 + INTEGER(IntKi), PARAMETER :: B6ADOF91Wvs = 6442 + INTEGER(IntKi), PARAMETER :: B6ADOF92Wvs = 6443 + INTEGER(IntKi), PARAMETER :: B6ADOF93Wvs = 6444 + INTEGER(IntKi), PARAMETER :: B6ADOF94Wvs = 6445 + INTEGER(IntKi), PARAMETER :: B6ADOF95Wvs = 6446 + INTEGER(IntKi), PARAMETER :: B6ADOF96Wvs = 6447 + INTEGER(IntKi), PARAMETER :: B6ADOF97Wvs = 6448 + INTEGER(IntKi), PARAMETER :: B6ADOF98Wvs = 6449 + INTEGER(IntKi), PARAMETER :: B6ADOF99Wvs = 6450 + INTEGER(IntKi), PARAMETER :: B7ADOF1Wvs = 6451 + INTEGER(IntKi), PARAMETER :: B7ADOF2Wvs = 6452 + INTEGER(IntKi), PARAMETER :: B7ADOF3Wvs = 6453 + INTEGER(IntKi), PARAMETER :: B7ADOF4Wvs = 6454 + INTEGER(IntKi), PARAMETER :: B7ADOF5Wvs = 6455 + INTEGER(IntKi), PARAMETER :: B7ADOF6Wvs = 6456 + INTEGER(IntKi), PARAMETER :: B7ADOF7Wvs = 6457 + INTEGER(IntKi), PARAMETER :: B7ADOF8Wvs = 6458 + INTEGER(IntKi), PARAMETER :: B7ADOF9Wvs = 6459 + INTEGER(IntKi), PARAMETER :: B7ADOF10Wvs = 6460 + INTEGER(IntKi), PARAMETER :: B7ADOF11Wvs = 6461 + INTEGER(IntKi), PARAMETER :: B7ADOF12Wvs = 6462 + INTEGER(IntKi), PARAMETER :: B7ADOF13Wvs = 6463 + INTEGER(IntKi), PARAMETER :: B7ADOF14Wvs = 6464 + INTEGER(IntKi), PARAMETER :: B7ADOF15Wvs = 6465 + INTEGER(IntKi), PARAMETER :: B7ADOF16Wvs = 6466 + INTEGER(IntKi), PARAMETER :: B7ADOF17Wvs = 6467 + INTEGER(IntKi), PARAMETER :: B7ADOF18Wvs = 6468 + INTEGER(IntKi), PARAMETER :: B7ADOF19Wvs = 6469 + INTEGER(IntKi), PARAMETER :: B7ADOF20Wvs = 6470 + INTEGER(IntKi), PARAMETER :: B7ADOF21Wvs = 6471 + INTEGER(IntKi), PARAMETER :: B7ADOF22Wvs = 6472 + INTEGER(IntKi), PARAMETER :: B7ADOF23Wvs = 6473 + INTEGER(IntKi), PARAMETER :: B7ADOF24Wvs = 6474 + INTEGER(IntKi), PARAMETER :: B7ADOF25Wvs = 6475 + INTEGER(IntKi), PARAMETER :: B7ADOF26Wvs = 6476 + INTEGER(IntKi), PARAMETER :: B7ADOF27Wvs = 6477 + INTEGER(IntKi), PARAMETER :: B7ADOF28Wvs = 6478 + INTEGER(IntKi), PARAMETER :: B7ADOF29Wvs = 6479 + INTEGER(IntKi), PARAMETER :: B7ADOF30Wvs = 6480 + INTEGER(IntKi), PARAMETER :: B7ADOF31Wvs = 6481 + INTEGER(IntKi), PARAMETER :: B7ADOF32Wvs = 6482 + INTEGER(IntKi), PARAMETER :: B7ADOF33Wvs = 6483 + INTEGER(IntKi), PARAMETER :: B7ADOF34Wvs = 6484 + INTEGER(IntKi), PARAMETER :: B7ADOF35Wvs = 6485 + INTEGER(IntKi), PARAMETER :: B7ADOF36Wvs = 6486 + INTEGER(IntKi), PARAMETER :: B7ADOF37Wvs = 6487 + INTEGER(IntKi), PARAMETER :: B7ADOF38Wvs = 6488 + INTEGER(IntKi), PARAMETER :: B7ADOF39Wvs = 6489 + INTEGER(IntKi), PARAMETER :: B7ADOF40Wvs = 6490 + INTEGER(IntKi), PARAMETER :: B7ADOF41Wvs = 6491 + INTEGER(IntKi), PARAMETER :: B7ADOF42Wvs = 6492 + INTEGER(IntKi), PARAMETER :: B7ADOF43Wvs = 6493 + INTEGER(IntKi), PARAMETER :: B7ADOF44Wvs = 6494 + INTEGER(IntKi), PARAMETER :: B7ADOF45Wvs = 6495 + INTEGER(IntKi), PARAMETER :: B7ADOF46Wvs = 6496 + INTEGER(IntKi), PARAMETER :: B7ADOF47Wvs = 6497 + INTEGER(IntKi), PARAMETER :: B7ADOF48Wvs = 6498 + INTEGER(IntKi), PARAMETER :: B7ADOF49Wvs = 6499 + INTEGER(IntKi), PARAMETER :: B7ADOF50Wvs = 6500 + INTEGER(IntKi), PARAMETER :: B7ADOF51Wvs = 6501 + INTEGER(IntKi), PARAMETER :: B7ADOF52Wvs = 6502 + INTEGER(IntKi), PARAMETER :: B7ADOF53Wvs = 6503 + INTEGER(IntKi), PARAMETER :: B7ADOF54Wvs = 6504 + INTEGER(IntKi), PARAMETER :: B7ADOF55Wvs = 6505 + INTEGER(IntKi), PARAMETER :: B7ADOF56Wvs = 6506 + INTEGER(IntKi), PARAMETER :: B7ADOF57Wvs = 6507 + INTEGER(IntKi), PARAMETER :: B7ADOF58Wvs = 6508 + INTEGER(IntKi), PARAMETER :: B7ADOF59Wvs = 6509 + INTEGER(IntKi), PARAMETER :: B7ADOF60Wvs = 6510 + INTEGER(IntKi), PARAMETER :: B7ADOF61Wvs = 6511 + INTEGER(IntKi), PARAMETER :: B7ADOF62Wvs = 6512 + INTEGER(IntKi), PARAMETER :: B7ADOF63Wvs = 6513 + INTEGER(IntKi), PARAMETER :: B7ADOF64Wvs = 6514 + INTEGER(IntKi), PARAMETER :: B7ADOF65Wvs = 6515 + INTEGER(IntKi), PARAMETER :: B7ADOF66Wvs = 6516 + INTEGER(IntKi), PARAMETER :: B7ADOF67Wvs = 6517 + INTEGER(IntKi), PARAMETER :: B7ADOF68Wvs = 6518 + INTEGER(IntKi), PARAMETER :: B7ADOF69Wvs = 6519 + INTEGER(IntKi), PARAMETER :: B7ADOF70Wvs = 6520 + INTEGER(IntKi), PARAMETER :: B7ADOF71Wvs = 6521 + INTEGER(IntKi), PARAMETER :: B7ADOF72Wvs = 6522 + INTEGER(IntKi), PARAMETER :: B7ADOF73Wvs = 6523 + INTEGER(IntKi), PARAMETER :: B7ADOF74Wvs = 6524 + INTEGER(IntKi), PARAMETER :: B7ADOF75Wvs = 6525 + INTEGER(IntKi), PARAMETER :: B7ADOF76Wvs = 6526 + INTEGER(IntKi), PARAMETER :: B7ADOF77Wvs = 6527 + INTEGER(IntKi), PARAMETER :: B7ADOF78Wvs = 6528 + INTEGER(IntKi), PARAMETER :: B7ADOF79Wvs = 6529 + INTEGER(IntKi), PARAMETER :: B7ADOF80Wvs = 6530 + INTEGER(IntKi), PARAMETER :: B7ADOF81Wvs = 6531 + INTEGER(IntKi), PARAMETER :: B7ADOF82Wvs = 6532 + INTEGER(IntKi), PARAMETER :: B7ADOF83Wvs = 6533 + INTEGER(IntKi), PARAMETER :: B7ADOF84Wvs = 6534 + INTEGER(IntKi), PARAMETER :: B7ADOF85Wvs = 6535 + INTEGER(IntKi), PARAMETER :: B7ADOF86Wvs = 6536 + INTEGER(IntKi), PARAMETER :: B7ADOF87Wvs = 6537 + INTEGER(IntKi), PARAMETER :: B7ADOF88Wvs = 6538 + INTEGER(IntKi), PARAMETER :: B7ADOF89Wvs = 6539 + INTEGER(IntKi), PARAMETER :: B7ADOF90Wvs = 6540 + INTEGER(IntKi), PARAMETER :: B7ADOF91Wvs = 6541 + INTEGER(IntKi), PARAMETER :: B7ADOF92Wvs = 6542 + INTEGER(IntKi), PARAMETER :: B7ADOF93Wvs = 6543 + INTEGER(IntKi), PARAMETER :: B7ADOF94Wvs = 6544 + INTEGER(IntKi), PARAMETER :: B7ADOF95Wvs = 6545 + INTEGER(IntKi), PARAMETER :: B7ADOF96Wvs = 6546 + INTEGER(IntKi), PARAMETER :: B7ADOF97Wvs = 6547 + INTEGER(IntKi), PARAMETER :: B7ADOF98Wvs = 6548 + INTEGER(IntKi), PARAMETER :: B7ADOF99Wvs = 6549 + INTEGER(IntKi), PARAMETER :: B8ADOF1Wvs = 6550 + INTEGER(IntKi), PARAMETER :: B8ADOF2Wvs = 6551 + INTEGER(IntKi), PARAMETER :: B8ADOF3Wvs = 6552 + INTEGER(IntKi), PARAMETER :: B8ADOF4Wvs = 6553 + INTEGER(IntKi), PARAMETER :: B8ADOF5Wvs = 6554 + INTEGER(IntKi), PARAMETER :: B8ADOF6Wvs = 6555 + INTEGER(IntKi), PARAMETER :: B8ADOF7Wvs = 6556 + INTEGER(IntKi), PARAMETER :: B8ADOF8Wvs = 6557 + INTEGER(IntKi), PARAMETER :: B8ADOF9Wvs = 6558 + INTEGER(IntKi), PARAMETER :: B8ADOF10Wvs = 6559 + INTEGER(IntKi), PARAMETER :: B8ADOF11Wvs = 6560 + INTEGER(IntKi), PARAMETER :: B8ADOF12Wvs = 6561 + INTEGER(IntKi), PARAMETER :: B8ADOF13Wvs = 6562 + INTEGER(IntKi), PARAMETER :: B8ADOF14Wvs = 6563 + INTEGER(IntKi), PARAMETER :: B8ADOF15Wvs = 6564 + INTEGER(IntKi), PARAMETER :: B8ADOF16Wvs = 6565 + INTEGER(IntKi), PARAMETER :: B8ADOF17Wvs = 6566 + INTEGER(IntKi), PARAMETER :: B8ADOF18Wvs = 6567 + INTEGER(IntKi), PARAMETER :: B8ADOF19Wvs = 6568 + INTEGER(IntKi), PARAMETER :: B8ADOF20Wvs = 6569 + INTEGER(IntKi), PARAMETER :: B8ADOF21Wvs = 6570 + INTEGER(IntKi), PARAMETER :: B8ADOF22Wvs = 6571 + INTEGER(IntKi), PARAMETER :: B8ADOF23Wvs = 6572 + INTEGER(IntKi), PARAMETER :: B8ADOF24Wvs = 6573 + INTEGER(IntKi), PARAMETER :: B8ADOF25Wvs = 6574 + INTEGER(IntKi), PARAMETER :: B8ADOF26Wvs = 6575 + INTEGER(IntKi), PARAMETER :: B8ADOF27Wvs = 6576 + INTEGER(IntKi), PARAMETER :: B8ADOF28Wvs = 6577 + INTEGER(IntKi), PARAMETER :: B8ADOF29Wvs = 6578 + INTEGER(IntKi), PARAMETER :: B8ADOF30Wvs = 6579 + INTEGER(IntKi), PARAMETER :: B8ADOF31Wvs = 6580 + INTEGER(IntKi), PARAMETER :: B8ADOF32Wvs = 6581 + INTEGER(IntKi), PARAMETER :: B8ADOF33Wvs = 6582 + INTEGER(IntKi), PARAMETER :: B8ADOF34Wvs = 6583 + INTEGER(IntKi), PARAMETER :: B8ADOF35Wvs = 6584 + INTEGER(IntKi), PARAMETER :: B8ADOF36Wvs = 6585 + INTEGER(IntKi), PARAMETER :: B8ADOF37Wvs = 6586 + INTEGER(IntKi), PARAMETER :: B8ADOF38Wvs = 6587 + INTEGER(IntKi), PARAMETER :: B8ADOF39Wvs = 6588 + INTEGER(IntKi), PARAMETER :: B8ADOF40Wvs = 6589 + INTEGER(IntKi), PARAMETER :: B8ADOF41Wvs = 6590 + INTEGER(IntKi), PARAMETER :: B8ADOF42Wvs = 6591 + INTEGER(IntKi), PARAMETER :: B8ADOF43Wvs = 6592 + INTEGER(IntKi), PARAMETER :: B8ADOF44Wvs = 6593 + INTEGER(IntKi), PARAMETER :: B8ADOF45Wvs = 6594 + INTEGER(IntKi), PARAMETER :: B8ADOF46Wvs = 6595 + INTEGER(IntKi), PARAMETER :: B8ADOF47Wvs = 6596 + INTEGER(IntKi), PARAMETER :: B8ADOF48Wvs = 6597 + INTEGER(IntKi), PARAMETER :: B8ADOF49Wvs = 6598 + INTEGER(IntKi), PARAMETER :: B8ADOF50Wvs = 6599 + INTEGER(IntKi), PARAMETER :: B8ADOF51Wvs = 6600 + INTEGER(IntKi), PARAMETER :: B8ADOF52Wvs = 6601 + INTEGER(IntKi), PARAMETER :: B8ADOF53Wvs = 6602 + INTEGER(IntKi), PARAMETER :: B8ADOF54Wvs = 6603 + INTEGER(IntKi), PARAMETER :: B8ADOF55Wvs = 6604 + INTEGER(IntKi), PARAMETER :: B8ADOF56Wvs = 6605 + INTEGER(IntKi), PARAMETER :: B8ADOF57Wvs = 6606 + INTEGER(IntKi), PARAMETER :: B8ADOF58Wvs = 6607 + INTEGER(IntKi), PARAMETER :: B8ADOF59Wvs = 6608 + INTEGER(IntKi), PARAMETER :: B8ADOF60Wvs = 6609 + INTEGER(IntKi), PARAMETER :: B8ADOF61Wvs = 6610 + INTEGER(IntKi), PARAMETER :: B8ADOF62Wvs = 6611 + INTEGER(IntKi), PARAMETER :: B8ADOF63Wvs = 6612 + INTEGER(IntKi), PARAMETER :: B8ADOF64Wvs = 6613 + INTEGER(IntKi), PARAMETER :: B8ADOF65Wvs = 6614 + INTEGER(IntKi), PARAMETER :: B8ADOF66Wvs = 6615 + INTEGER(IntKi), PARAMETER :: B8ADOF67Wvs = 6616 + INTEGER(IntKi), PARAMETER :: B8ADOF68Wvs = 6617 + INTEGER(IntKi), PARAMETER :: B8ADOF69Wvs = 6618 + INTEGER(IntKi), PARAMETER :: B8ADOF70Wvs = 6619 + INTEGER(IntKi), PARAMETER :: B8ADOF71Wvs = 6620 + INTEGER(IntKi), PARAMETER :: B8ADOF72Wvs = 6621 + INTEGER(IntKi), PARAMETER :: B8ADOF73Wvs = 6622 + INTEGER(IntKi), PARAMETER :: B8ADOF74Wvs = 6623 + INTEGER(IntKi), PARAMETER :: B8ADOF75Wvs = 6624 + INTEGER(IntKi), PARAMETER :: B8ADOF76Wvs = 6625 + INTEGER(IntKi), PARAMETER :: B8ADOF77Wvs = 6626 + INTEGER(IntKi), PARAMETER :: B8ADOF78Wvs = 6627 + INTEGER(IntKi), PARAMETER :: B8ADOF79Wvs = 6628 + INTEGER(IntKi), PARAMETER :: B8ADOF80Wvs = 6629 + INTEGER(IntKi), PARAMETER :: B8ADOF81Wvs = 6630 + INTEGER(IntKi), PARAMETER :: B8ADOF82Wvs = 6631 + INTEGER(IntKi), PARAMETER :: B8ADOF83Wvs = 6632 + INTEGER(IntKi), PARAMETER :: B8ADOF84Wvs = 6633 + INTEGER(IntKi), PARAMETER :: B8ADOF85Wvs = 6634 + INTEGER(IntKi), PARAMETER :: B8ADOF86Wvs = 6635 + INTEGER(IntKi), PARAMETER :: B8ADOF87Wvs = 6636 + INTEGER(IntKi), PARAMETER :: B8ADOF88Wvs = 6637 + INTEGER(IntKi), PARAMETER :: B8ADOF89Wvs = 6638 + INTEGER(IntKi), PARAMETER :: B8ADOF90Wvs = 6639 + INTEGER(IntKi), PARAMETER :: B8ADOF91Wvs = 6640 + INTEGER(IntKi), PARAMETER :: B8ADOF92Wvs = 6641 + INTEGER(IntKi), PARAMETER :: B8ADOF93Wvs = 6642 + INTEGER(IntKi), PARAMETER :: B8ADOF94Wvs = 6643 + INTEGER(IntKi), PARAMETER :: B8ADOF95Wvs = 6644 + INTEGER(IntKi), PARAMETER :: B8ADOF96Wvs = 6645 + INTEGER(IntKi), PARAMETER :: B8ADOF97Wvs = 6646 + INTEGER(IntKi), PARAMETER :: B8ADOF98Wvs = 6647 + INTEGER(IntKi), PARAMETER :: B8ADOF99Wvs = 6648 + INTEGER(IntKi), PARAMETER :: B9ADOF1Wvs = 6649 + INTEGER(IntKi), PARAMETER :: B9ADOF2Wvs = 6650 + INTEGER(IntKi), PARAMETER :: B9ADOF3Wvs = 6651 + INTEGER(IntKi), PARAMETER :: B9ADOF4Wvs = 6652 + INTEGER(IntKi), PARAMETER :: B9ADOF5Wvs = 6653 + INTEGER(IntKi), PARAMETER :: B9ADOF6Wvs = 6654 + INTEGER(IntKi), PARAMETER :: B9ADOF7Wvs = 6655 + INTEGER(IntKi), PARAMETER :: B9ADOF8Wvs = 6656 + INTEGER(IntKi), PARAMETER :: B9ADOF9Wvs = 6657 + INTEGER(IntKi), PARAMETER :: B9ADOF10Wvs = 6658 + INTEGER(IntKi), PARAMETER :: B9ADOF11Wvs = 6659 + INTEGER(IntKi), PARAMETER :: B9ADOF12Wvs = 6660 + INTEGER(IntKi), PARAMETER :: B9ADOF13Wvs = 6661 + INTEGER(IntKi), PARAMETER :: B9ADOF14Wvs = 6662 + INTEGER(IntKi), PARAMETER :: B9ADOF15Wvs = 6663 + INTEGER(IntKi), PARAMETER :: B9ADOF16Wvs = 6664 + INTEGER(IntKi), PARAMETER :: B9ADOF17Wvs = 6665 + INTEGER(IntKi), PARAMETER :: B9ADOF18Wvs = 6666 + INTEGER(IntKi), PARAMETER :: B9ADOF19Wvs = 6667 + INTEGER(IntKi), PARAMETER :: B9ADOF20Wvs = 6668 + INTEGER(IntKi), PARAMETER :: B9ADOF21Wvs = 6669 + INTEGER(IntKi), PARAMETER :: B9ADOF22Wvs = 6670 + INTEGER(IntKi), PARAMETER :: B9ADOF23Wvs = 6671 + INTEGER(IntKi), PARAMETER :: B9ADOF24Wvs = 6672 + INTEGER(IntKi), PARAMETER :: B9ADOF25Wvs = 6673 + INTEGER(IntKi), PARAMETER :: B9ADOF26Wvs = 6674 + INTEGER(IntKi), PARAMETER :: B9ADOF27Wvs = 6675 + INTEGER(IntKi), PARAMETER :: B9ADOF28Wvs = 6676 + INTEGER(IntKi), PARAMETER :: B9ADOF29Wvs = 6677 + INTEGER(IntKi), PARAMETER :: B9ADOF30Wvs = 6678 + INTEGER(IntKi), PARAMETER :: B9ADOF31Wvs = 6679 + INTEGER(IntKi), PARAMETER :: B9ADOF32Wvs = 6680 + INTEGER(IntKi), PARAMETER :: B9ADOF33Wvs = 6681 + INTEGER(IntKi), PARAMETER :: B9ADOF34Wvs = 6682 + INTEGER(IntKi), PARAMETER :: B9ADOF35Wvs = 6683 + INTEGER(IntKi), PARAMETER :: B9ADOF36Wvs = 6684 + INTEGER(IntKi), PARAMETER :: B9ADOF37Wvs = 6685 + INTEGER(IntKi), PARAMETER :: B9ADOF38Wvs = 6686 + INTEGER(IntKi), PARAMETER :: B9ADOF39Wvs = 6687 + INTEGER(IntKi), PARAMETER :: B9ADOF40Wvs = 6688 + INTEGER(IntKi), PARAMETER :: B9ADOF41Wvs = 6689 + INTEGER(IntKi), PARAMETER :: B9ADOF42Wvs = 6690 + INTEGER(IntKi), PARAMETER :: B9ADOF43Wvs = 6691 + INTEGER(IntKi), PARAMETER :: B9ADOF44Wvs = 6692 + INTEGER(IntKi), PARAMETER :: B9ADOF45Wvs = 6693 + INTEGER(IntKi), PARAMETER :: B9ADOF46Wvs = 6694 + INTEGER(IntKi), PARAMETER :: B9ADOF47Wvs = 6695 + INTEGER(IntKi), PARAMETER :: B9ADOF48Wvs = 6696 + INTEGER(IntKi), PARAMETER :: B9ADOF49Wvs = 6697 + INTEGER(IntKi), PARAMETER :: B9ADOF50Wvs = 6698 + INTEGER(IntKi), PARAMETER :: B9ADOF51Wvs = 6699 + INTEGER(IntKi), PARAMETER :: B9ADOF52Wvs = 6700 + INTEGER(IntKi), PARAMETER :: B9ADOF53Wvs = 6701 + INTEGER(IntKi), PARAMETER :: B9ADOF54Wvs = 6702 + INTEGER(IntKi), PARAMETER :: B9ADOF55Wvs = 6703 + INTEGER(IntKi), PARAMETER :: B9ADOF56Wvs = 6704 + INTEGER(IntKi), PARAMETER :: B9ADOF57Wvs = 6705 + INTEGER(IntKi), PARAMETER :: B9ADOF58Wvs = 6706 + INTEGER(IntKi), PARAMETER :: B9ADOF59Wvs = 6707 + INTEGER(IntKi), PARAMETER :: B9ADOF60Wvs = 6708 + INTEGER(IntKi), PARAMETER :: B9ADOF61Wvs = 6709 + INTEGER(IntKi), PARAMETER :: B9ADOF62Wvs = 6710 + INTEGER(IntKi), PARAMETER :: B9ADOF63Wvs = 6711 + INTEGER(IntKi), PARAMETER :: B9ADOF64Wvs = 6712 + INTEGER(IntKi), PARAMETER :: B9ADOF65Wvs = 6713 + INTEGER(IntKi), PARAMETER :: B9ADOF66Wvs = 6714 + INTEGER(IntKi), PARAMETER :: B9ADOF67Wvs = 6715 + INTEGER(IntKi), PARAMETER :: B9ADOF68Wvs = 6716 + INTEGER(IntKi), PARAMETER :: B9ADOF69Wvs = 6717 + INTEGER(IntKi), PARAMETER :: B9ADOF70Wvs = 6718 + INTEGER(IntKi), PARAMETER :: B9ADOF71Wvs = 6719 + INTEGER(IntKi), PARAMETER :: B9ADOF72Wvs = 6720 + INTEGER(IntKi), PARAMETER :: B9ADOF73Wvs = 6721 + INTEGER(IntKi), PARAMETER :: B9ADOF74Wvs = 6722 + INTEGER(IntKi), PARAMETER :: B9ADOF75Wvs = 6723 + INTEGER(IntKi), PARAMETER :: B9ADOF76Wvs = 6724 + INTEGER(IntKi), PARAMETER :: B9ADOF77Wvs = 6725 + INTEGER(IntKi), PARAMETER :: B9ADOF78Wvs = 6726 + INTEGER(IntKi), PARAMETER :: B9ADOF79Wvs = 6727 + INTEGER(IntKi), PARAMETER :: B9ADOF80Wvs = 6728 + INTEGER(IntKi), PARAMETER :: B9ADOF81Wvs = 6729 + INTEGER(IntKi), PARAMETER :: B9ADOF82Wvs = 6730 + INTEGER(IntKi), PARAMETER :: B9ADOF83Wvs = 6731 + INTEGER(IntKi), PARAMETER :: B9ADOF84Wvs = 6732 + INTEGER(IntKi), PARAMETER :: B9ADOF85Wvs = 6733 + INTEGER(IntKi), PARAMETER :: B9ADOF86Wvs = 6734 + INTEGER(IntKi), PARAMETER :: B9ADOF87Wvs = 6735 + INTEGER(IntKi), PARAMETER :: B9ADOF88Wvs = 6736 + INTEGER(IntKi), PARAMETER :: B9ADOF89Wvs = 6737 + INTEGER(IntKi), PARAMETER :: B9ADOF90Wvs = 6738 + INTEGER(IntKi), PARAMETER :: B9ADOF91Wvs = 6739 + INTEGER(IntKi), PARAMETER :: B9ADOF92Wvs = 6740 + INTEGER(IntKi), PARAMETER :: B9ADOF93Wvs = 6741 + INTEGER(IntKi), PARAMETER :: B9ADOF94Wvs = 6742 + INTEGER(IntKi), PARAMETER :: B9ADOF95Wvs = 6743 + INTEGER(IntKi), PARAMETER :: B9ADOF96Wvs = 6744 + INTEGER(IntKi), PARAMETER :: B9ADOF97Wvs = 6745 + INTEGER(IntKi), PARAMETER :: B9ADOF98Wvs = 6746 + INTEGER(IntKi), PARAMETER :: B9ADOF99Wvs = 6747 ! The maximum number of output channels which can be output by the code. - INTEGER(IntKi), PARAMETER, PUBLIC :: MaxOutPts = 510 + INTEGER(IntKi), PARAMETER, PUBLIC :: MaxOutPts = 6747 !End of code generated by Matlab script Write_ChckOutLst ! =================================================================================================== @@ -624,7 +6861,407 @@ 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/), & + (/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/), & + (/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/), & + (/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/), & + (/9,99/))) + INTEGER, PARAMETER :: WBMotions(6,9) = transpose(reshape((/B1Surge,B2Surge,B3Surge,B4Surge,B5Surge,B6Surge,B7Surge,B8Surge,B9Surge, & B1Sway ,B2Sway ,B3Sway ,B4Sway ,B5Sway ,B6Sway ,B7Sway ,B8Sway ,B9Sway , & B1Heave,B2Heave,B3Heave,B4Heave,B5Heave,B6Heave,B7Heave,B8Heave,B9Heave, & @@ -652,74 +7289,1280 @@ MODULE HydroDyn_Output INTEGER, PARAMETER :: PRPMotions(6) = (/PRPSurge,PRPSway,PRPHeave,PRPRoll,PRPPitch,PRPYaw/) INTEGER, PARAMETER :: PRPVel(6) = (/PRPTVxi, PRPTVyi,PRPTVzi, PRPRVxi,PRPRVyi, PRPRVzi/) INTEGER, PARAMETER :: PRPAcc(6) = (/PRPTAxi, PRPTAyi,PRPTAzi, PRPRAxi,PRPRAyi, PRPRAzi/) - - - CHARACTER(OutStrLenM1), PARAMETER :: ValidParamAry(510) = (/ & ! This lists the names of the allowed parameters, which must be sorted alphabetically - "B1ADDFXI ","B1ADDFYI ","B1ADDFZI ","B1ADDMXI ","B1ADDMYI ","B1ADDMZI ","B1HDSFXI ","B1HDSFYI ", & - "B1HDSFZI ","B1HDSMXI ","B1HDSMYI ","B1HDSMZI ","B1HEAVE ","B1PITCH ","B1RAXI ","B1RAYI ", & - "B1RAZI ","B1RDTFXI ","B1RDTFYI ","B1RDTFZI ","B1RDTMXI ","B1RDTMYI ","B1RDTMZI ","B1ROLL ", & - "B1RVXI ","B1RVYI ","B1RVZI ","B1SURGE ","B1SWAY ","B1TAXI ","B1TAYI ","B1TAZI ", & - "B1TVXI ","B1TVYI ","B1TVZI ","B1WVSF1XI","B1WVSF1YI","B1WVSF1ZI","B1WVSF2XI","B1WVSF2YI", & - "B1WVSF2ZI","B1WVSFXI ","B1WVSFYI ","B1WVSFZI ","B1WVSM1XI","B1WVSM1YI","B1WVSM1ZI","B1WVSM2XI", & - "B1WVSM2YI","B1WVSM2ZI","B1WVSMXI ","B1WVSMYI ","B1WVSMZI ","B1YAW ","B2ADDFXI ","B2ADDFYI ", & - "B2ADDFZI ","B2ADDMXI ","B2ADDMYI ","B2ADDMZI ","B2HDSFXI ","B2HDSFYI ","B2HDSFZI ","B2HDSMXI ", & - "B2HDSMYI ","B2HDSMZI ","B2HEAVE ","B2PITCH ","B2RAXI ","B2RAYI ","B2RAZI ","B2RDTFXI ", & - "B2RDTFYI ","B2RDTFZI ","B2RDTMXI ","B2RDTMYI ","B2RDTMZI ","B2ROLL ","B2RVXI ","B2RVYI ", & - "B2RVZI ","B2SURGE ","B2SWAY ","B2TAXI ","B2TAYI ","B2TAZI ","B2TVXI ","B2TVYI ", & - "B2TVZI ","B2WVSF1XI","B2WVSF1YI","B2WVSF1ZI","B2WVSF2XI","B2WVSF2YI","B2WVSF2ZI","B2WVSFXI ", & - "B2WVSFYI ","B2WVSFZI ","B2WVSM1XI","B2WVSM1YI","B2WVSM1ZI","B2WVSM2XI","B2WVSM2YI","B2WVSM2ZI", & - "B2WVSMXI ","B2WVSMYI ","B2WVSMZI ","B2YAW ","B3ADDFXI ","B3ADDFYI ","B3ADDFZI ","B3ADDMXI ", & - "B3ADDMYI ","B3ADDMZI ","B3HDSFXI ","B3HDSFYI ","B3HDSFZI ","B3HDSMXI ","B3HDSMYI ","B3HDSMZI ", & - "B3HEAVE ","B3PITCH ","B3RAXI ","B3RAYI ","B3RAZI ","B3RDTFXI ","B3RDTFYI ","B3RDTFZI ", & - "B3RDTMXI ","B3RDTMYI ","B3RDTMZI ","B3ROLL ","B3RVXI ","B3RVYI ","B3RVZI ","B3SURGE ", & - "B3SWAY ","B3TAXI ","B3TAYI ","B3TAZI ","B3TVXI ","B3TVYI ","B3TVZI ","B3WVSF1XI", & - "B3WVSF1YI","B3WVSF1ZI","B3WVSF2XI","B3WVSF2YI","B3WVSF2ZI","B3WVSFXI ","B3WVSFYI ","B3WVSFZI ", & - "B3WVSM1XI","B3WVSM1YI","B3WVSM1ZI","B3WVSM2XI","B3WVSM2YI","B3WVSM2ZI","B3WVSMXI ","B3WVSMYI ", & - "B3WVSMZI ","B3YAW ","B4ADDFXI ","B4ADDFYI ","B4ADDFZI ","B4ADDMXI ","B4ADDMYI ","B4ADDMZI ", & - "B4HDSFXI ","B4HDSFYI ","B4HDSFZI ","B4HDSMXI ","B4HDSMYI ","B4HDSMZI ","B4HEAVE ","B4PITCH ", & - "B4RAXI ","B4RAYI ","B4RAZI ","B4RDTFXI ","B4RDTFYI ","B4RDTFZI ","B4RDTMXI ","B4RDTMYI ", & - "B4RDTMZI ","B4ROLL ","B4RVXI ","B4RVYI ","B4RVZI ","B4SURGE ","B4SWAY ","B4TAXI ", & - "B4TAYI ","B4TAZI ","B4TVXI ","B4TVYI ","B4TVZI ","B4WVSF1XI","B4WVSF1YI","B4WVSF1ZI", & - "B4WVSF2XI","B4WVSF2YI","B4WVSF2ZI","B4WVSFXI ","B4WVSFYI ","B4WVSFZI ","B4WVSM1XI","B4WVSM1YI", & - "B4WVSM1ZI","B4WVSM2XI","B4WVSM2YI","B4WVSM2ZI","B4WVSMXI ","B4WVSMYI ","B4WVSMZI ","B4YAW ", & - "B5ADDFXI ","B5ADDFYI ","B5ADDFZI ","B5ADDMXI ","B5ADDMYI ","B5ADDMZI ","B5HDSFXI ","B5HDSFYI ", & - "B5HDSFZI ","B5HDSMXI ","B5HDSMYI ","B5HDSMZI ","B5HEAVE ","B5PITCH ","B5RAXI ","B5RAYI ", & - "B5RAZI ","B5RDTFXI ","B5RDTFYI ","B5RDTFZI ","B5RDTMXI ","B5RDTMYI ","B5RDTMZI ","B5ROLL ", & - "B5RVXI ","B5RVYI ","B5RVZI ","B5SURGE ","B5SWAY ","B5TAXI ","B5TAYI ","B5TAZI ", & - "B5TVXI ","B5TVYI ","B5TVZI ","B5WVSF1XI","B5WVSF1YI","B5WVSF1ZI","B5WVSF2XI","B5WVSF2YI", & - "B5WVSF2ZI","B5WVSFXI ","B5WVSFYI ","B5WVSFZI ","B5WVSM1XI","B5WVSM1YI","B5WVSM1ZI","B5WVSM2XI", & - "B5WVSM2YI","B5WVSM2ZI","B5WVSMXI ","B5WVSMYI ","B5WVSMZI ","B5YAW ","B6ADDFXI ","B6ADDFYI ", & - "B6ADDFZI ","B6ADDMXI ","B6ADDMYI ","B6ADDMZI ","B6HDSFXI ","B6HDSFYI ","B6HDSFZI ","B6HDSMXI ", & - "B6HDSMYI ","B6HDSMZI ","B6HEAVE ","B6PITCH ","B6RAXI ","B6RAYI ","B6RAZI ","B6RDTFXI ", & - "B6RDTFYI ","B6RDTFZI ","B6RDTMXI ","B6RDTMYI ","B6RDTMZI ","B6ROLL ","B6RVXI ","B6RVYI ", & - "B6RVZI ","B6SURGE ","B6SWAY ","B6TAXI ","B6TAYI ","B6TAZI ","B6TVXI ","B6TVYI ", & - "B6TVZI ","B6WVSF1XI","B6WVSF1YI","B6WVSF1ZI","B6WVSF2XI","B6WVSF2YI","B6WVSF2ZI","B6WVSFXI ", & - "B6WVSFYI ","B6WVSFZI ","B6WVSM1XI","B6WVSM1YI","B6WVSM1ZI","B6WVSM2XI","B6WVSM2YI","B6WVSM2ZI", & - "B6WVSMXI ","B6WVSMYI ","B6WVSMZI ","B6YAW ","B7ADDFXI ","B7ADDFYI ","B7ADDFZI ","B7ADDMXI ", & - "B7ADDMYI ","B7ADDMZI ","B7HDSFXI ","B7HDSFYI ","B7HDSFZI ","B7HDSMXI ","B7HDSMYI ","B7HDSMZI ", & - "B7HEAVE ","B7PITCH ","B7RAXI ","B7RAYI ","B7RAZI ","B7RDTFXI ","B7RDTFYI ","B7RDTFZI ", & - "B7RDTMXI ","B7RDTMYI ","B7RDTMZI ","B7ROLL ","B7RVXI ","B7RVYI ","B7RVZI ","B7SURGE ", & - "B7SWAY ","B7TAXI ","B7TAYI ","B7TAZI ","B7TVXI ","B7TVYI ","B7TVZI ","B7WVSF1XI", & - "B7WVSF1YI","B7WVSF1ZI","B7WVSF2XI","B7WVSF2YI","B7WVSF2ZI","B7WVSFXI ","B7WVSFYI ","B7WVSFZI ", & - "B7WVSM1XI","B7WVSM1YI","B7WVSM1ZI","B7WVSM2XI","B7WVSM2YI","B7WVSM2ZI","B7WVSMXI ","B7WVSMYI ", & - "B7WVSMZI ","B7YAW ","B8ADDFXI ","B8ADDFYI ","B8ADDFZI ","B8ADDMXI ","B8ADDMYI ","B8ADDMZI ", & - "B8HDSFXI ","B8HDSFYI ","B8HDSFZI ","B8HDSMXI ","B8HDSMYI ","B8HDSMZI ","B8HEAVE ","B8PITCH ", & - "B8RAXI ","B8RAYI ","B8RAZI ","B8RDTFXI ","B8RDTFYI ","B8RDTFZI ","B8RDTMXI ","B8RDTMYI ", & - "B8RDTMZI ","B8ROLL ","B8RVXI ","B8RVYI ","B8RVZI ","B8SURGE ","B8SWAY ","B8TAXI ", & - "B8TAYI ","B8TAZI ","B8TVXI ","B8TVYI ","B8TVZI ","B8WVSF1XI","B8WVSF1YI","B8WVSF1ZI", & - "B8WVSF2XI","B8WVSF2YI","B8WVSF2ZI","B8WVSFXI ","B8WVSFYI ","B8WVSFZI ","B8WVSM1XI","B8WVSM1YI", & - "B8WVSM1ZI","B8WVSM2XI","B8WVSM2YI","B8WVSM2ZI","B8WVSMXI ","B8WVSMYI ","B8WVSMZI ","B8YAW ", & - "B9ADDFXI ","B9ADDFYI ","B9ADDFZI ","B9ADDMXI ","B9ADDMYI ","B9ADDMZI ","B9HDSFXI ","B9HDSFYI ", & - "B9HDSFZI ","B9HDSMXI ","B9HDSMYI ","B9HDSMZI ","B9HEAVE ","B9PITCH ","B9RAXI ","B9RAYI ", & - "B9RAZI ","B9RDTFXI ","B9RDTFYI ","B9RDTFZI ","B9RDTMXI ","B9RDTMYI ","B9RDTMZI ","B9ROLL ", & - "B9RVXI ","B9RVYI ","B9RVZI ","B9SURGE ","B9SWAY ","B9TAXI ","B9TAYI ","B9TAZI ", & - "B9TVXI ","B9TVYI ","B9TVZI ","B9WVSF1XI","B9WVSF1YI","B9WVSF1ZI","B9WVSF2XI","B9WVSF2YI", & - "B9WVSF2ZI","B9WVSFXI ","B9WVSFYI ","B9WVSFZI ","B9WVSM1XI","B9WVSM1YI","B9WVSM1ZI","B9WVSM2XI", & - "B9WVSM2YI","B9WVSM2ZI","B9WVSMXI ","B9WVSMYI ","B9WVSMZI ","B9YAW ","HYDROFXI ","HYDROFYI ", & - "HYDROFZI ","HYDROMXI ","HYDROMYI ","HYDROMZI ","PRPHEAVE ","PRPPITCH ","PRPRAXI ","PRPRAYI ", & - "PRPRAZI ","PRPROLL ","PRPRVXI ","PRPRVYI ","PRPRVZI ","PRPSURGE ","PRPSWAY ","PRPTAXI ", & - "PRPTAYI ","PRPTAZI ","PRPTVXI ","PRPTVYI ","PRPTVZI ","PRPYAW "/) + 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/), & + (/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/), & + (/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/), & + (/9,99/))) + + CHARACTER(OutStrLenM1), PARAMETER :: ValidParamAry1(1687) = (/ & ! This lists the names of the allowed parameters, which must be sorted alphabetically + "B1ADDFXI ","B1ADDFYI ","B1ADDFZI ","B1ADDMXI ","B1ADDMYI ","B1ADDMZI ","B1ADOF10A ", & + "B1ADOF10ADD","B1ADOF10D ","B1ADOF10HDS","B1ADOF10RDT","B1ADOF10V ","B1ADOF10WVS","B1ADOF11A ", & + "B1ADOF11ADD","B1ADOF11D ","B1ADOF11HDS","B1ADOF11RDT","B1ADOF11V ","B1ADOF11WVS","B1ADOF12A ", & + "B1ADOF12ADD","B1ADOF12D ","B1ADOF12HDS","B1ADOF12RDT","B1ADOF12V ","B1ADOF12WVS","B1ADOF13A ", & + "B1ADOF13ADD","B1ADOF13D ","B1ADOF13HDS","B1ADOF13RDT","B1ADOF13V ","B1ADOF13WVS","B1ADOF14A ", & + "B1ADOF14ADD","B1ADOF14D ","B1ADOF14HDS","B1ADOF14RDT","B1ADOF14V ","B1ADOF14WVS","B1ADOF15A ", & + "B1ADOF15ADD","B1ADOF15D ","B1ADOF15HDS","B1ADOF15RDT","B1ADOF15V ","B1ADOF15WVS","B1ADOF16A ", & + "B1ADOF16ADD","B1ADOF16D ","B1ADOF16HDS","B1ADOF16RDT","B1ADOF16V ","B1ADOF16WVS","B1ADOF17A ", & + "B1ADOF17ADD","B1ADOF17D ","B1ADOF17HDS","B1ADOF17RDT","B1ADOF17V ","B1ADOF17WVS","B1ADOF18A ", & + "B1ADOF18ADD","B1ADOF18D ","B1ADOF18HDS","B1ADOF18RDT","B1ADOF18V ","B1ADOF18WVS","B1ADOF19A ", & + "B1ADOF19ADD","B1ADOF19D ","B1ADOF19HDS","B1ADOF19RDT","B1ADOF19V ","B1ADOF19WVS","B1ADOF1A ", & + "B1ADOF1ADD ","B1ADOF1D ","B1ADOF1HDS ","B1ADOF1RDT ","B1ADOF1V ","B1ADOF1WVS ","B1ADOF20A ", & + "B1ADOF20ADD","B1ADOF20D ","B1ADOF20HDS","B1ADOF20RDT","B1ADOF20V ","B1ADOF20WVS","B1ADOF21A ", & + "B1ADOF21ADD","B1ADOF21D ","B1ADOF21HDS","B1ADOF21RDT","B1ADOF21V ","B1ADOF21WVS","B1ADOF22A ", & + "B1ADOF22ADD","B1ADOF22D ","B1ADOF22HDS","B1ADOF22RDT","B1ADOF22V ","B1ADOF22WVS","B1ADOF23A ", & + "B1ADOF23ADD","B1ADOF23D ","B1ADOF23HDS","B1ADOF23RDT","B1ADOF23V ","B1ADOF23WVS","B1ADOF24A ", & + "B1ADOF24ADD","B1ADOF24D ","B1ADOF24HDS","B1ADOF24RDT","B1ADOF24V ","B1ADOF24WVS","B1ADOF25A ", & + "B1ADOF25ADD","B1ADOF25D ","B1ADOF25HDS","B1ADOF25RDT","B1ADOF25V ","B1ADOF25WVS","B1ADOF26A ", & + "B1ADOF26ADD","B1ADOF26D ","B1ADOF26HDS","B1ADOF26RDT","B1ADOF26V ","B1ADOF26WVS","B1ADOF27A ", & + "B1ADOF27ADD","B1ADOF27D ","B1ADOF27HDS","B1ADOF27RDT","B1ADOF27V ","B1ADOF27WVS","B1ADOF28A ", & + "B1ADOF28ADD","B1ADOF28D ","B1ADOF28HDS","B1ADOF28RDT","B1ADOF28V ","B1ADOF28WVS","B1ADOF29A ", & + "B1ADOF29ADD","B1ADOF29D ","B1ADOF29HDS","B1ADOF29RDT","B1ADOF29V ","B1ADOF29WVS","B1ADOF2A ", & + "B1ADOF2ADD ","B1ADOF2D ","B1ADOF2HDS ","B1ADOF2RDT ","B1ADOF2V ","B1ADOF2WVS ","B1ADOF30A ", & + "B1ADOF30ADD","B1ADOF30D ","B1ADOF30HDS","B1ADOF30RDT","B1ADOF30V ","B1ADOF30WVS","B1ADOF31A ", & + "B1ADOF31ADD","B1ADOF31D ","B1ADOF31HDS","B1ADOF31RDT","B1ADOF31V ","B1ADOF31WVS","B1ADOF32A ", & + "B1ADOF32ADD","B1ADOF32D ","B1ADOF32HDS","B1ADOF32RDT","B1ADOF32V ","B1ADOF32WVS","B1ADOF33A ", & + "B1ADOF33ADD","B1ADOF33D ","B1ADOF33HDS","B1ADOF33RDT","B1ADOF33V ","B1ADOF33WVS","B1ADOF34A ", & + "B1ADOF34ADD","B1ADOF34D ","B1ADOF34HDS","B1ADOF34RDT","B1ADOF34V ","B1ADOF34WVS","B1ADOF35A ", & + "B1ADOF35ADD","B1ADOF35D ","B1ADOF35HDS","B1ADOF35RDT","B1ADOF35V ","B1ADOF35WVS","B1ADOF36A ", & + "B1ADOF36ADD","B1ADOF36D ","B1ADOF36HDS","B1ADOF36RDT","B1ADOF36V ","B1ADOF36WVS","B1ADOF37A ", & + "B1ADOF37ADD","B1ADOF37D ","B1ADOF37HDS","B1ADOF37RDT","B1ADOF37V ","B1ADOF37WVS","B1ADOF38A ", & + "B1ADOF38ADD","B1ADOF38D ","B1ADOF38HDS","B1ADOF38RDT","B1ADOF38V ","B1ADOF38WVS","B1ADOF39A ", & + "B1ADOF39ADD","B1ADOF39D ","B1ADOF39HDS","B1ADOF39RDT","B1ADOF39V ","B1ADOF39WVS","B1ADOF3A ", & + "B1ADOF3ADD ","B1ADOF3D ","B1ADOF3HDS ","B1ADOF3RDT ","B1ADOF3V ","B1ADOF3WVS ","B1ADOF40A ", & + "B1ADOF40ADD","B1ADOF40D ","B1ADOF40HDS","B1ADOF40RDT","B1ADOF40V ","B1ADOF40WVS","B1ADOF41A ", & + "B1ADOF41ADD","B1ADOF41D ","B1ADOF41HDS","B1ADOF41RDT","B1ADOF41V ","B1ADOF41WVS","B1ADOF42A ", & + "B1ADOF42ADD","B1ADOF42D ","B1ADOF42HDS","B1ADOF42RDT","B1ADOF42V ","B1ADOF42WVS","B1ADOF43A ", & + "B1ADOF43ADD","B1ADOF43D ","B1ADOF43HDS","B1ADOF43RDT","B1ADOF43V ","B1ADOF43WVS","B1ADOF44A ", & + "B1ADOF44ADD","B1ADOF44D ","B1ADOF44HDS","B1ADOF44RDT","B1ADOF44V ","B1ADOF44WVS","B1ADOF45A ", & + "B1ADOF45ADD","B1ADOF45D ","B1ADOF45HDS","B1ADOF45RDT","B1ADOF45V ","B1ADOF45WVS","B1ADOF46A ", & + "B1ADOF46ADD","B1ADOF46D ","B1ADOF46HDS","B1ADOF46RDT","B1ADOF46V ","B1ADOF46WVS","B1ADOF47A ", & + "B1ADOF47ADD","B1ADOF47D ","B1ADOF47HDS","B1ADOF47RDT","B1ADOF47V ","B1ADOF47WVS","B1ADOF48A ", & + "B1ADOF48ADD","B1ADOF48D ","B1ADOF48HDS","B1ADOF48RDT","B1ADOF48V ","B1ADOF48WVS","B1ADOF49A ", & + "B1ADOF49ADD","B1ADOF49D ","B1ADOF49HDS","B1ADOF49RDT","B1ADOF49V ","B1ADOF49WVS","B1ADOF4A ", & + "B1ADOF4ADD ","B1ADOF4D ","B1ADOF4HDS ","B1ADOF4RDT ","B1ADOF4V ","B1ADOF4WVS ","B1ADOF50A ", & + "B1ADOF50ADD","B1ADOF50D ","B1ADOF50HDS","B1ADOF50RDT","B1ADOF50V ","B1ADOF50WVS","B1ADOF51A ", & + "B1ADOF51ADD","B1ADOF51D ","B1ADOF51HDS","B1ADOF51RDT","B1ADOF51V ","B1ADOF51WVS","B1ADOF52A ", & + "B1ADOF52ADD","B1ADOF52D ","B1ADOF52HDS","B1ADOF52RDT","B1ADOF52V ","B1ADOF52WVS","B1ADOF53A ", & + "B1ADOF53ADD","B1ADOF53D ","B1ADOF53HDS","B1ADOF53RDT","B1ADOF53V ","B1ADOF53WVS","B1ADOF54A ", & + "B1ADOF54ADD","B1ADOF54D ","B1ADOF54HDS","B1ADOF54RDT","B1ADOF54V ","B1ADOF54WVS","B1ADOF55A ", & + "B1ADOF55ADD","B1ADOF55D ","B1ADOF55HDS","B1ADOF55RDT","B1ADOF55V ","B1ADOF55WVS","B1ADOF56A ", & + "B1ADOF56ADD","B1ADOF56D ","B1ADOF56HDS","B1ADOF56RDT","B1ADOF56V ","B1ADOF56WVS","B1ADOF57A ", & + "B1ADOF57ADD","B1ADOF57D ","B1ADOF57HDS","B1ADOF57RDT","B1ADOF57V ","B1ADOF57WVS","B1ADOF58A ", & + "B1ADOF58ADD","B1ADOF58D ","B1ADOF58HDS","B1ADOF58RDT","B1ADOF58V ","B1ADOF58WVS","B1ADOF59A ", & + "B1ADOF59ADD","B1ADOF59D ","B1ADOF59HDS","B1ADOF59RDT","B1ADOF59V ","B1ADOF59WVS","B1ADOF5A ", & + "B1ADOF5ADD ","B1ADOF5D ","B1ADOF5HDS ","B1ADOF5RDT ","B1ADOF5V ","B1ADOF5WVS ","B1ADOF60A ", & + "B1ADOF60ADD","B1ADOF60D ","B1ADOF60HDS","B1ADOF60RDT","B1ADOF60V ","B1ADOF60WVS","B1ADOF61A ", & + "B1ADOF61ADD","B1ADOF61D ","B1ADOF61HDS","B1ADOF61RDT","B1ADOF61V ","B1ADOF61WVS","B1ADOF62A ", & + "B1ADOF62ADD","B1ADOF62D ","B1ADOF62HDS","B1ADOF62RDT","B1ADOF62V ","B1ADOF62WVS","B1ADOF63A ", & + "B1ADOF63ADD","B1ADOF63D ","B1ADOF63HDS","B1ADOF63RDT","B1ADOF63V ","B1ADOF63WVS","B1ADOF64A ", & + "B1ADOF64ADD","B1ADOF64D ","B1ADOF64HDS","B1ADOF64RDT","B1ADOF64V ","B1ADOF64WVS","B1ADOF65A ", & + "B1ADOF65ADD","B1ADOF65D ","B1ADOF65HDS","B1ADOF65RDT","B1ADOF65V ","B1ADOF65WVS","B1ADOF66A ", & + "B1ADOF66ADD","B1ADOF66D ","B1ADOF66HDS","B1ADOF66RDT","B1ADOF66V ","B1ADOF66WVS","B1ADOF67A ", & + "B1ADOF67ADD","B1ADOF67D ","B1ADOF67HDS","B1ADOF67RDT","B1ADOF67V ","B1ADOF67WVS","B1ADOF68A ", & + "B1ADOF68ADD","B1ADOF68D ","B1ADOF68HDS","B1ADOF68RDT","B1ADOF68V ","B1ADOF68WVS","B1ADOF69A ", & + "B1ADOF69ADD","B1ADOF69D ","B1ADOF69HDS","B1ADOF69RDT","B1ADOF69V ","B1ADOF69WVS","B1ADOF6A ", & + "B1ADOF6ADD ","B1ADOF6D ","B1ADOF6HDS ","B1ADOF6RDT ","B1ADOF6V ","B1ADOF6WVS ","B1ADOF70A ", & + "B1ADOF70ADD","B1ADOF70D ","B1ADOF70HDS","B1ADOF70RDT","B1ADOF70V ","B1ADOF70WVS","B1ADOF71A ", & + "B1ADOF71ADD","B1ADOF71D ","B1ADOF71HDS","B1ADOF71RDT","B1ADOF71V ","B1ADOF71WVS","B1ADOF72A ", & + "B1ADOF72ADD","B1ADOF72D ","B1ADOF72HDS","B1ADOF72RDT","B1ADOF72V ","B1ADOF72WVS","B1ADOF73A ", & + "B1ADOF73ADD","B1ADOF73D ","B1ADOF73HDS","B1ADOF73RDT","B1ADOF73V ","B1ADOF73WVS","B1ADOF74A ", & + "B1ADOF74ADD","B1ADOF74D ","B1ADOF74HDS","B1ADOF74RDT","B1ADOF74V ","B1ADOF74WVS","B1ADOF75A ", & + "B1ADOF75ADD","B1ADOF75D ","B1ADOF75HDS","B1ADOF75RDT","B1ADOF75V ","B1ADOF75WVS","B1ADOF76A ", & + "B1ADOF76ADD","B1ADOF76D ","B1ADOF76HDS","B1ADOF76RDT","B1ADOF76V ","B1ADOF76WVS","B1ADOF77A ", & + "B1ADOF77ADD","B1ADOF77D ","B1ADOF77HDS","B1ADOF77RDT","B1ADOF77V ","B1ADOF77WVS","B1ADOF78A ", & + "B1ADOF78ADD","B1ADOF78D ","B1ADOF78HDS","B1ADOF78RDT","B1ADOF78V ","B1ADOF78WVS","B1ADOF79A ", & + "B1ADOF79ADD","B1ADOF79D ","B1ADOF79HDS","B1ADOF79RDT","B1ADOF79V ","B1ADOF79WVS","B1ADOF7A ", & + "B1ADOF7ADD ","B1ADOF7D ","B1ADOF7HDS ","B1ADOF7RDT ","B1ADOF7V ","B1ADOF7WVS ","B1ADOF80A ", & + "B1ADOF80ADD","B1ADOF80D ","B1ADOF80HDS","B1ADOF80RDT","B1ADOF80V ","B1ADOF80WVS","B1ADOF81A ", & + "B1ADOF81ADD","B1ADOF81D ","B1ADOF81HDS","B1ADOF81RDT","B1ADOF81V ","B1ADOF81WVS","B1ADOF82A ", & + "B1ADOF82ADD","B1ADOF82D ","B1ADOF82HDS","B1ADOF82RDT","B1ADOF82V ","B1ADOF82WVS","B1ADOF83A ", & + "B1ADOF83ADD","B1ADOF83D ","B1ADOF83HDS","B1ADOF83RDT","B1ADOF83V ","B1ADOF83WVS","B1ADOF84A ", & + "B1ADOF84ADD","B1ADOF84D ","B1ADOF84HDS","B1ADOF84RDT","B1ADOF84V ","B1ADOF84WVS","B1ADOF85A ", & + "B1ADOF85ADD","B1ADOF85D ","B1ADOF85HDS","B1ADOF85RDT","B1ADOF85V ","B1ADOF85WVS","B1ADOF86A ", & + "B1ADOF86ADD","B1ADOF86D ","B1ADOF86HDS","B1ADOF86RDT","B1ADOF86V ","B1ADOF86WVS","B1ADOF87A ", & + "B1ADOF87ADD","B1ADOF87D ","B1ADOF87HDS","B1ADOF87RDT","B1ADOF87V ","B1ADOF87WVS","B1ADOF88A ", & + "B1ADOF88ADD","B1ADOF88D ","B1ADOF88HDS","B1ADOF88RDT","B1ADOF88V ","B1ADOF88WVS","B1ADOF89A ", & + "B1ADOF89ADD","B1ADOF89D ","B1ADOF89HDS","B1ADOF89RDT","B1ADOF89V ","B1ADOF89WVS","B1ADOF8A ", & + "B1ADOF8ADD ","B1ADOF8D ","B1ADOF8HDS ","B1ADOF8RDT ","B1ADOF8V ","B1ADOF8WVS ","B1ADOF90A ", & + "B1ADOF90ADD","B1ADOF90D ","B1ADOF90HDS","B1ADOF90RDT","B1ADOF90V ","B1ADOF90WVS","B1ADOF91A ", & + "B1ADOF91ADD","B1ADOF91D ","B1ADOF91HDS","B1ADOF91RDT","B1ADOF91V ","B1ADOF91WVS","B1ADOF92A ", & + "B1ADOF92ADD","B1ADOF92D ","B1ADOF92HDS","B1ADOF92RDT","B1ADOF92V ","B1ADOF92WVS","B1ADOF93A ", & + "B1ADOF93ADD","B1ADOF93D ","B1ADOF93HDS","B1ADOF93RDT","B1ADOF93V ","B1ADOF93WVS","B1ADOF94A ", & + "B1ADOF94ADD","B1ADOF94D ","B1ADOF94HDS","B1ADOF94RDT","B1ADOF94V ","B1ADOF94WVS","B1ADOF95A ", & + "B1ADOF95ADD","B1ADOF95D ","B1ADOF95HDS","B1ADOF95RDT","B1ADOF95V ","B1ADOF95WVS","B1ADOF96A ", & + "B1ADOF96ADD","B1ADOF96D ","B1ADOF96HDS","B1ADOF96RDT","B1ADOF96V ","B1ADOF96WVS","B1ADOF97A ", & + "B1ADOF97ADD","B1ADOF97D ","B1ADOF97HDS","B1ADOF97RDT","B1ADOF97V ","B1ADOF97WVS","B1ADOF98A ", & + "B1ADOF98ADD","B1ADOF98D ","B1ADOF98HDS","B1ADOF98RDT","B1ADOF98V ","B1ADOF98WVS","B1ADOF99A ", & + "B1ADOF99ADD","B1ADOF99D ","B1ADOF99HDS","B1ADOF99RDT","B1ADOF99V ","B1ADOF99WVS","B1ADOF9A ", & + "B1ADOF9ADD ","B1ADOF9D ","B1ADOF9HDS ","B1ADOF9RDT ","B1ADOF9V ","B1ADOF9WVS ","B1HDSFXI ", & + "B1HDSFYI ","B1HDSFZI ","B1HDSMXI ","B1HDSMYI ","B1HDSMZI ","B1HEAVE ","B1PITCH ", & + "B1RAXI ","B1RAYI ","B1RAZI ","B1RDTFXI ","B1RDTFYI ","B1RDTFZI ","B1RDTMXI ", & + "B1RDTMYI ","B1RDTMZI ","B1ROLL ","B1RVXI ","B1RVYI ","B1RVZI ","B1SURGE ", & + "B1SWAY ","B1TAXI ","B1TAYI ","B1TAZI ","B1TVXI ","B1TVYI ","B1TVZI ", & + "B1WVSF1XI ","B1WVSF1YI ","B1WVSF1ZI ","B1WVSF2XI ","B1WVSF2YI ","B1WVSF2ZI ","B1WVSFXI ", & + "B1WVSFYI ","B1WVSFZI ","B1WVSM1XI ","B1WVSM1YI ","B1WVSM1ZI ","B1WVSM2XI ","B1WVSM2YI ", & + "B1WVSM2ZI ","B1WVSMXI ","B1WVSMYI ","B1WVSMZI ","B1YAW ","B2ADDFXI ","B2ADDFYI ", & + "B2ADDFZI ","B2ADDMXI ","B2ADDMYI ","B2ADDMZI ","B2ADOF10A ","B2ADOF10ADD","B2ADOF10D ", & + "B2ADOF10HDS","B2ADOF10RDT","B2ADOF10V ","B2ADOF10WVS","B2ADOF11A ","B2ADOF11ADD","B2ADOF11D ", & + "B2ADOF11HDS","B2ADOF11RDT","B2ADOF11V ","B2ADOF11WVS","B2ADOF12A ","B2ADOF12ADD","B2ADOF12D ", & + "B2ADOF12HDS","B2ADOF12RDT","B2ADOF12V ","B2ADOF12WVS","B2ADOF13A ","B2ADOF13ADD","B2ADOF13D ", & + "B2ADOF13HDS","B2ADOF13RDT","B2ADOF13V ","B2ADOF13WVS","B2ADOF14A ","B2ADOF14ADD","B2ADOF14D ", & + "B2ADOF14HDS","B2ADOF14RDT","B2ADOF14V ","B2ADOF14WVS","B2ADOF15A ","B2ADOF15ADD","B2ADOF15D ", & + "B2ADOF15HDS","B2ADOF15RDT","B2ADOF15V ","B2ADOF15WVS","B2ADOF16A ","B2ADOF16ADD","B2ADOF16D ", & + "B2ADOF16HDS","B2ADOF16RDT","B2ADOF16V ","B2ADOF16WVS","B2ADOF17A ","B2ADOF17ADD","B2ADOF17D ", & + "B2ADOF17HDS","B2ADOF17RDT","B2ADOF17V ","B2ADOF17WVS","B2ADOF18A ","B2ADOF18ADD","B2ADOF18D ", & + "B2ADOF18HDS","B2ADOF18RDT","B2ADOF18V ","B2ADOF18WVS","B2ADOF19A ","B2ADOF19ADD","B2ADOF19D ", & + "B2ADOF19HDS","B2ADOF19RDT","B2ADOF19V ","B2ADOF19WVS","B2ADOF1A ","B2ADOF1ADD ","B2ADOF1D ", & + "B2ADOF1HDS ","B2ADOF1RDT ","B2ADOF1V ","B2ADOF1WVS ","B2ADOF20A ","B2ADOF20ADD","B2ADOF20D ", & + "B2ADOF20HDS","B2ADOF20RDT","B2ADOF20V ","B2ADOF20WVS","B2ADOF21A ","B2ADOF21ADD","B2ADOF21D ", & + "B2ADOF21HDS","B2ADOF21RDT","B2ADOF21V ","B2ADOF21WVS","B2ADOF22A ","B2ADOF22ADD","B2ADOF22D ", & + "B2ADOF22HDS","B2ADOF22RDT","B2ADOF22V ","B2ADOF22WVS","B2ADOF23A ","B2ADOF23ADD","B2ADOF23D ", & + "B2ADOF23HDS","B2ADOF23RDT","B2ADOF23V ","B2ADOF23WVS","B2ADOF24A ","B2ADOF24ADD","B2ADOF24D ", & + "B2ADOF24HDS","B2ADOF24RDT","B2ADOF24V ","B2ADOF24WVS","B2ADOF25A ","B2ADOF25ADD","B2ADOF25D ", & + "B2ADOF25HDS","B2ADOF25RDT","B2ADOF25V ","B2ADOF25WVS","B2ADOF26A ","B2ADOF26ADD","B2ADOF26D ", & + "B2ADOF26HDS","B2ADOF26RDT","B2ADOF26V ","B2ADOF26WVS","B2ADOF27A ","B2ADOF27ADD","B2ADOF27D ", & + "B2ADOF27HDS","B2ADOF27RDT","B2ADOF27V ","B2ADOF27WVS","B2ADOF28A ","B2ADOF28ADD","B2ADOF28D ", & + "B2ADOF28HDS","B2ADOF28RDT","B2ADOF28V ","B2ADOF28WVS","B2ADOF29A ","B2ADOF29ADD","B2ADOF29D ", & + "B2ADOF29HDS","B2ADOF29RDT","B2ADOF29V ","B2ADOF29WVS","B2ADOF2A ","B2ADOF2ADD ","B2ADOF2D ", & + "B2ADOF2HDS ","B2ADOF2RDT ","B2ADOF2V ","B2ADOF2WVS ","B2ADOF30A ","B2ADOF30ADD","B2ADOF30D ", & + "B2ADOF30HDS","B2ADOF30RDT","B2ADOF30V ","B2ADOF30WVS","B2ADOF31A ","B2ADOF31ADD","B2ADOF31D ", & + "B2ADOF31HDS","B2ADOF31RDT","B2ADOF31V ","B2ADOF31WVS","B2ADOF32A ","B2ADOF32ADD","B2ADOF32D ", & + "B2ADOF32HDS","B2ADOF32RDT","B2ADOF32V ","B2ADOF32WVS","B2ADOF33A ","B2ADOF33ADD","B2ADOF33D ", & + "B2ADOF33HDS","B2ADOF33RDT","B2ADOF33V ","B2ADOF33WVS","B2ADOF34A ","B2ADOF34ADD","B2ADOF34D ", & + "B2ADOF34HDS","B2ADOF34RDT","B2ADOF34V ","B2ADOF34WVS","B2ADOF35A ","B2ADOF35ADD","B2ADOF35D ", & + "B2ADOF35HDS","B2ADOF35RDT","B2ADOF35V ","B2ADOF35WVS","B2ADOF36A ","B2ADOF36ADD","B2ADOF36D ", & + "B2ADOF36HDS","B2ADOF36RDT","B2ADOF36V ","B2ADOF36WVS","B2ADOF37A ","B2ADOF37ADD","B2ADOF37D ", & + "B2ADOF37HDS","B2ADOF37RDT","B2ADOF37V ","B2ADOF37WVS","B2ADOF38A ","B2ADOF38ADD","B2ADOF38D ", & + "B2ADOF38HDS","B2ADOF38RDT","B2ADOF38V ","B2ADOF38WVS","B2ADOF39A ","B2ADOF39ADD","B2ADOF39D ", & + "B2ADOF39HDS","B2ADOF39RDT","B2ADOF39V ","B2ADOF39WVS","B2ADOF3A ","B2ADOF3ADD ","B2ADOF3D ", & + "B2ADOF3HDS ","B2ADOF3RDT ","B2ADOF3V ","B2ADOF3WVS ","B2ADOF40A ","B2ADOF40ADD","B2ADOF40D ", & + "B2ADOF40HDS","B2ADOF40RDT","B2ADOF40V ","B2ADOF40WVS","B2ADOF41A ","B2ADOF41ADD","B2ADOF41D ", & + "B2ADOF41HDS","B2ADOF41RDT","B2ADOF41V ","B2ADOF41WVS","B2ADOF42A ","B2ADOF42ADD","B2ADOF42D ", & + "B2ADOF42HDS","B2ADOF42RDT","B2ADOF42V ","B2ADOF42WVS","B2ADOF43A ","B2ADOF43ADD","B2ADOF43D ", & + "B2ADOF43HDS","B2ADOF43RDT","B2ADOF43V ","B2ADOF43WVS","B2ADOF44A ","B2ADOF44ADD","B2ADOF44D ", & + "B2ADOF44HDS","B2ADOF44RDT","B2ADOF44V ","B2ADOF44WVS","B2ADOF45A ","B2ADOF45ADD","B2ADOF45D ", & + "B2ADOF45HDS","B2ADOF45RDT","B2ADOF45V ","B2ADOF45WVS","B2ADOF46A ","B2ADOF46ADD","B2ADOF46D ", & + "B2ADOF46HDS","B2ADOF46RDT","B2ADOF46V ","B2ADOF46WVS","B2ADOF47A ","B2ADOF47ADD","B2ADOF47D ", & + "B2ADOF47HDS","B2ADOF47RDT","B2ADOF47V ","B2ADOF47WVS","B2ADOF48A ","B2ADOF48ADD","B2ADOF48D ", & + "B2ADOF48HDS","B2ADOF48RDT","B2ADOF48V ","B2ADOF48WVS","B2ADOF49A ","B2ADOF49ADD","B2ADOF49D ", & + "B2ADOF49HDS","B2ADOF49RDT","B2ADOF49V ","B2ADOF49WVS","B2ADOF4A ","B2ADOF4ADD ","B2ADOF4D ", & + "B2ADOF4HDS ","B2ADOF4RDT ","B2ADOF4V ","B2ADOF4WVS ","B2ADOF50A ","B2ADOF50ADD","B2ADOF50D ", & + "B2ADOF50HDS","B2ADOF50RDT","B2ADOF50V ","B2ADOF50WVS","B2ADOF51A ","B2ADOF51ADD","B2ADOF51D ", & + "B2ADOF51HDS","B2ADOF51RDT","B2ADOF51V ","B2ADOF51WVS","B2ADOF52A ","B2ADOF52ADD","B2ADOF52D ", & + "B2ADOF52HDS","B2ADOF52RDT","B2ADOF52V ","B2ADOF52WVS","B2ADOF53A ","B2ADOF53ADD","B2ADOF53D ", & + "B2ADOF53HDS","B2ADOF53RDT","B2ADOF53V ","B2ADOF53WVS","B2ADOF54A ","B2ADOF54ADD","B2ADOF54D ", & + "B2ADOF54HDS","B2ADOF54RDT","B2ADOF54V ","B2ADOF54WVS","B2ADOF55A ","B2ADOF55ADD","B2ADOF55D ", & + "B2ADOF55HDS","B2ADOF55RDT","B2ADOF55V ","B2ADOF55WVS","B2ADOF56A ","B2ADOF56ADD","B2ADOF56D ", & + "B2ADOF56HDS","B2ADOF56RDT","B2ADOF56V ","B2ADOF56WVS","B2ADOF57A ","B2ADOF57ADD","B2ADOF57D ", & + "B2ADOF57HDS","B2ADOF57RDT","B2ADOF57V ","B2ADOF57WVS","B2ADOF58A ","B2ADOF58ADD","B2ADOF58D ", & + "B2ADOF58HDS","B2ADOF58RDT","B2ADOF58V ","B2ADOF58WVS","B2ADOF59A ","B2ADOF59ADD","B2ADOF59D ", & + "B2ADOF59HDS","B2ADOF59RDT","B2ADOF59V ","B2ADOF59WVS","B2ADOF5A ","B2ADOF5ADD ","B2ADOF5D ", & + "B2ADOF5HDS ","B2ADOF5RDT ","B2ADOF5V ","B2ADOF5WVS ","B2ADOF60A ","B2ADOF60ADD","B2ADOF60D ", & + "B2ADOF60HDS","B2ADOF60RDT","B2ADOF60V ","B2ADOF60WVS","B2ADOF61A ","B2ADOF61ADD","B2ADOF61D ", & + "B2ADOF61HDS","B2ADOF61RDT","B2ADOF61V ","B2ADOF61WVS","B2ADOF62A ","B2ADOF62ADD","B2ADOF62D ", & + "B2ADOF62HDS","B2ADOF62RDT","B2ADOF62V ","B2ADOF62WVS","B2ADOF63A ","B2ADOF63ADD","B2ADOF63D ", & + "B2ADOF63HDS","B2ADOF63RDT","B2ADOF63V ","B2ADOF63WVS","B2ADOF64A ","B2ADOF64ADD","B2ADOF64D ", & + "B2ADOF64HDS","B2ADOF64RDT","B2ADOF64V ","B2ADOF64WVS","B2ADOF65A ","B2ADOF65ADD","B2ADOF65D ", & + "B2ADOF65HDS","B2ADOF65RDT","B2ADOF65V ","B2ADOF65WVS","B2ADOF66A ","B2ADOF66ADD","B2ADOF66D ", & + "B2ADOF66HDS","B2ADOF66RDT","B2ADOF66V ","B2ADOF66WVS","B2ADOF67A ","B2ADOF67ADD","B2ADOF67D ", & + "B2ADOF67HDS","B2ADOF67RDT","B2ADOF67V ","B2ADOF67WVS","B2ADOF68A ","B2ADOF68ADD","B2ADOF68D ", & + "B2ADOF68HDS","B2ADOF68RDT","B2ADOF68V ","B2ADOF68WVS","B2ADOF69A ","B2ADOF69ADD","B2ADOF69D ", & + "B2ADOF69HDS","B2ADOF69RDT","B2ADOF69V ","B2ADOF69WVS","B2ADOF6A ","B2ADOF6ADD ","B2ADOF6D ", & + "B2ADOF6HDS ","B2ADOF6RDT ","B2ADOF6V ","B2ADOF6WVS ","B2ADOF70A ","B2ADOF70ADD","B2ADOF70D ", & + "B2ADOF70HDS","B2ADOF70RDT","B2ADOF70V ","B2ADOF70WVS","B2ADOF71A ","B2ADOF71ADD","B2ADOF71D ", & + "B2ADOF71HDS","B2ADOF71RDT","B2ADOF71V ","B2ADOF71WVS","B2ADOF72A ","B2ADOF72ADD","B2ADOF72D ", & + "B2ADOF72HDS","B2ADOF72RDT","B2ADOF72V ","B2ADOF72WVS","B2ADOF73A ","B2ADOF73ADD","B2ADOF73D ", & + "B2ADOF73HDS","B2ADOF73RDT","B2ADOF73V ","B2ADOF73WVS","B2ADOF74A ","B2ADOF74ADD","B2ADOF74D ", & + "B2ADOF74HDS","B2ADOF74RDT","B2ADOF74V ","B2ADOF74WVS","B2ADOF75A ","B2ADOF75ADD","B2ADOF75D ", & + "B2ADOF75HDS","B2ADOF75RDT","B2ADOF75V ","B2ADOF75WVS","B2ADOF76A ","B2ADOF76ADD","B2ADOF76D ", & + "B2ADOF76HDS","B2ADOF76RDT","B2ADOF76V ","B2ADOF76WVS","B2ADOF77A ","B2ADOF77ADD","B2ADOF77D ", & + "B2ADOF77HDS","B2ADOF77RDT","B2ADOF77V ","B2ADOF77WVS","B2ADOF78A ","B2ADOF78ADD","B2ADOF78D ", & + "B2ADOF78HDS","B2ADOF78RDT","B2ADOF78V ","B2ADOF78WVS","B2ADOF79A ","B2ADOF79ADD","B2ADOF79D ", & + "B2ADOF79HDS","B2ADOF79RDT","B2ADOF79V ","B2ADOF79WVS","B2ADOF7A ","B2ADOF7ADD ","B2ADOF7D ", & + "B2ADOF7HDS ","B2ADOF7RDT ","B2ADOF7V ","B2ADOF7WVS ","B2ADOF80A ","B2ADOF80ADD","B2ADOF80D ", & + "B2ADOF80HDS","B2ADOF80RDT","B2ADOF80V ","B2ADOF80WVS","B2ADOF81A ","B2ADOF81ADD","B2ADOF81D ", & + "B2ADOF81HDS","B2ADOF81RDT","B2ADOF81V ","B2ADOF81WVS","B2ADOF82A ","B2ADOF82ADD","B2ADOF82D ", & + "B2ADOF82HDS","B2ADOF82RDT","B2ADOF82V ","B2ADOF82WVS","B2ADOF83A ","B2ADOF83ADD","B2ADOF83D ", & + "B2ADOF83HDS","B2ADOF83RDT","B2ADOF83V ","B2ADOF83WVS","B2ADOF84A ","B2ADOF84ADD","B2ADOF84D ", & + "B2ADOF84HDS","B2ADOF84RDT","B2ADOF84V ","B2ADOF84WVS","B2ADOF85A ","B2ADOF85ADD","B2ADOF85D ", & + "B2ADOF85HDS","B2ADOF85RDT","B2ADOF85V ","B2ADOF85WVS","B2ADOF86A ","B2ADOF86ADD","B2ADOF86D ", & + "B2ADOF86HDS","B2ADOF86RDT","B2ADOF86V ","B2ADOF86WVS","B2ADOF87A ","B2ADOF87ADD","B2ADOF87D ", & + "B2ADOF87HDS","B2ADOF87RDT","B2ADOF87V ","B2ADOF87WVS","B2ADOF88A ","B2ADOF88ADD","B2ADOF88D ", & + "B2ADOF88HDS","B2ADOF88RDT","B2ADOF88V ","B2ADOF88WVS","B2ADOF89A ","B2ADOF89ADD","B2ADOF89D ", & + "B2ADOF89HDS","B2ADOF89RDT","B2ADOF89V ","B2ADOF89WVS","B2ADOF8A ","B2ADOF8ADD ","B2ADOF8D ", & + "B2ADOF8HDS ","B2ADOF8RDT ","B2ADOF8V ","B2ADOF8WVS ","B2ADOF90A ","B2ADOF90ADD","B2ADOF90D ", & + "B2ADOF90HDS","B2ADOF90RDT","B2ADOF90V ","B2ADOF90WVS","B2ADOF91A ","B2ADOF91ADD","B2ADOF91D ", & + "B2ADOF91HDS","B2ADOF91RDT","B2ADOF91V ","B2ADOF91WVS","B2ADOF92A ","B2ADOF92ADD","B2ADOF92D ", & + "B2ADOF92HDS","B2ADOF92RDT","B2ADOF92V ","B2ADOF92WVS","B2ADOF93A ","B2ADOF93ADD","B2ADOF93D ", & + "B2ADOF93HDS","B2ADOF93RDT","B2ADOF93V ","B2ADOF93WVS","B2ADOF94A ","B2ADOF94ADD","B2ADOF94D ", & + "B2ADOF94HDS","B2ADOF94RDT","B2ADOF94V ","B2ADOF94WVS","B2ADOF95A ","B2ADOF95ADD","B2ADOF95D ", & + "B2ADOF95HDS","B2ADOF95RDT","B2ADOF95V ","B2ADOF95WVS","B2ADOF96A ","B2ADOF96ADD","B2ADOF96D ", & + "B2ADOF96HDS","B2ADOF96RDT","B2ADOF96V ","B2ADOF96WVS","B2ADOF97A ","B2ADOF97ADD","B2ADOF97D ", & + "B2ADOF97HDS","B2ADOF97RDT","B2ADOF97V ","B2ADOF97WVS","B2ADOF98A ","B2ADOF98ADD","B2ADOF98D ", & + "B2ADOF98HDS","B2ADOF98RDT","B2ADOF98V ","B2ADOF98WVS","B2ADOF99A ","B2ADOF99ADD","B2ADOF99D ", & + "B2ADOF99HDS","B2ADOF99RDT","B2ADOF99V ","B2ADOF99WVS","B2ADOF9A ","B2ADOF9ADD ","B2ADOF9D ", & + "B2ADOF9HDS ","B2ADOF9RDT ","B2ADOF9V ","B2ADOF9WVS ","B2HDSFXI ","B2HDSFYI ","B2HDSFZI ", & + "B2HDSMXI ","B2HDSMYI ","B2HDSMZI ","B2HEAVE ","B2PITCH ","B2RAXI ","B2RAYI ", & + "B2RAZI ","B2RDTFXI ","B2RDTFYI ","B2RDTFZI ","B2RDTMXI ","B2RDTMYI ","B2RDTMZI ", & + "B2ROLL ","B2RVXI ","B2RVYI ","B2RVZI ","B2SURGE ","B2SWAY ","B2TAXI ", & + "B2TAYI ","B2TAZI ","B2TVXI ","B2TVYI ","B2TVZI ","B2WVSF1XI ","B2WVSF1YI ", & + "B2WVSF1ZI ","B2WVSF2XI ","B2WVSF2YI ","B2WVSF2ZI ","B2WVSFXI ","B2WVSFYI ","B2WVSFZI ", & + "B2WVSM1XI ","B2WVSM1YI ","B2WVSM1ZI ","B2WVSM2XI ","B2WVSM2YI ","B2WVSM2ZI ","B2WVSMXI ", & + "B2WVSMYI ","B2WVSMZI ","B2YAW ","B3ADDFXI ","B3ADDFYI ","B3ADDFZI ","B3ADDMXI ", & + "B3ADDMYI ","B3ADDMZI ","B3ADOF10A ","B3ADOF10ADD","B3ADOF10D ","B3ADOF10HDS","B3ADOF10RDT", & + "B3ADOF10V ","B3ADOF10WVS","B3ADOF11A ","B3ADOF11ADD","B3ADOF11D ","B3ADOF11HDS","B3ADOF11RDT", & + "B3ADOF11V ","B3ADOF11WVS","B3ADOF12A ","B3ADOF12ADD","B3ADOF12D ","B3ADOF12HDS","B3ADOF12RDT", & + "B3ADOF12V ","B3ADOF12WVS","B3ADOF13A ","B3ADOF13ADD","B3ADOF13D ","B3ADOF13HDS","B3ADOF13RDT", & + "B3ADOF13V ","B3ADOF13WVS","B3ADOF14A ","B3ADOF14ADD","B3ADOF14D ","B3ADOF14HDS","B3ADOF14RDT", & + "B3ADOF14V ","B3ADOF14WVS","B3ADOF15A ","B3ADOF15ADD","B3ADOF15D ","B3ADOF15HDS","B3ADOF15RDT", & + "B3ADOF15V ","B3ADOF15WVS","B3ADOF16A ","B3ADOF16ADD","B3ADOF16D ","B3ADOF16HDS","B3ADOF16RDT", & + "B3ADOF16V ","B3ADOF16WVS","B3ADOF17A ","B3ADOF17ADD","B3ADOF17D ","B3ADOF17HDS","B3ADOF17RDT", & + "B3ADOF17V ","B3ADOF17WVS","B3ADOF18A ","B3ADOF18ADD","B3ADOF18D ","B3ADOF18HDS","B3ADOF18RDT", & + "B3ADOF18V ","B3ADOF18WVS","B3ADOF19A ","B3ADOF19ADD","B3ADOF19D ","B3ADOF19HDS","B3ADOF19RDT", & + "B3ADOF19V ","B3ADOF19WVS","B3ADOF1A ","B3ADOF1ADD ","B3ADOF1D ","B3ADOF1HDS ","B3ADOF1RDT ", & + "B3ADOF1V ","B3ADOF1WVS ","B3ADOF20A ","B3ADOF20ADD","B3ADOF20D ","B3ADOF20HDS","B3ADOF20RDT", & + "B3ADOF20V ","B3ADOF20WVS","B3ADOF21A ","B3ADOF21ADD","B3ADOF21D ","B3ADOF21HDS","B3ADOF21RDT", & + "B3ADOF21V ","B3ADOF21WVS","B3ADOF22A ","B3ADOF22ADD","B3ADOF22D ","B3ADOF22HDS","B3ADOF22RDT", & + "B3ADOF22V ","B3ADOF22WVS","B3ADOF23A ","B3ADOF23ADD","B3ADOF23D ","B3ADOF23HDS","B3ADOF23RDT", & + "B3ADOF23V ","B3ADOF23WVS","B3ADOF24A ","B3ADOF24ADD","B3ADOF24D ","B3ADOF24HDS","B3ADOF24RDT", & + "B3ADOF24V ","B3ADOF24WVS","B3ADOF25A ","B3ADOF25ADD","B3ADOF25D ","B3ADOF25HDS","B3ADOF25RDT", & + "B3ADOF25V ","B3ADOF25WVS","B3ADOF26A ","B3ADOF26ADD","B3ADOF26D ","B3ADOF26HDS","B3ADOF26RDT", & + "B3ADOF26V ","B3ADOF26WVS","B3ADOF27A ","B3ADOF27ADD","B3ADOF27D ","B3ADOF27HDS","B3ADOF27RDT", & + "B3ADOF27V ","B3ADOF27WVS","B3ADOF28A ","B3ADOF28ADD","B3ADOF28D ","B3ADOF28HDS","B3ADOF28RDT", & + "B3ADOF28V ","B3ADOF28WVS","B3ADOF29A ","B3ADOF29ADD","B3ADOF29D ","B3ADOF29HDS","B3ADOF29RDT", & + "B3ADOF29V ","B3ADOF29WVS","B3ADOF2A ","B3ADOF2ADD ","B3ADOF2D ","B3ADOF2HDS ","B3ADOF2RDT ", & + "B3ADOF2V ","B3ADOF2WVS ","B3ADOF30A ","B3ADOF30ADD","B3ADOF30D ","B3ADOF30HDS","B3ADOF30RDT", & + "B3ADOF30V ","B3ADOF30WVS","B3ADOF31A ","B3ADOF31ADD","B3ADOF31D ","B3ADOF31HDS","B3ADOF31RDT", & + "B3ADOF31V ","B3ADOF31WVS","B3ADOF32A ","B3ADOF32ADD","B3ADOF32D ","B3ADOF32HDS","B3ADOF32RDT", & + "B3ADOF32V ","B3ADOF32WVS","B3ADOF33A ","B3ADOF33ADD","B3ADOF33D ","B3ADOF33HDS","B3ADOF33RDT", & + "B3ADOF33V ","B3ADOF33WVS","B3ADOF34A ","B3ADOF34ADD","B3ADOF34D ","B3ADOF34HDS","B3ADOF34RDT"/) + CHARACTER(OutStrLenM1), PARAMETER :: ValidParamAry2(1687) = (/ & ! This lists the names of the allowed parameters, which must be sorted alphabetically + "B3ADOF34V ","B3ADOF34WVS","B3ADOF35A ","B3ADOF35ADD","B3ADOF35D ","B3ADOF35HDS","B3ADOF35RDT", & + "B3ADOF35V ","B3ADOF35WVS","B3ADOF36A ","B3ADOF36ADD","B3ADOF36D ","B3ADOF36HDS","B3ADOF36RDT", & + "B3ADOF36V ","B3ADOF36WVS","B3ADOF37A ","B3ADOF37ADD","B3ADOF37D ","B3ADOF37HDS","B3ADOF37RDT", & + "B3ADOF37V ","B3ADOF37WVS","B3ADOF38A ","B3ADOF38ADD","B3ADOF38D ","B3ADOF38HDS","B3ADOF38RDT", & + "B3ADOF38V ","B3ADOF38WVS","B3ADOF39A ","B3ADOF39ADD","B3ADOF39D ","B3ADOF39HDS","B3ADOF39RDT", & + "B3ADOF39V ","B3ADOF39WVS","B3ADOF3A ","B3ADOF3ADD ","B3ADOF3D ","B3ADOF3HDS ","B3ADOF3RDT ", & + "B3ADOF3V ","B3ADOF3WVS ","B3ADOF40A ","B3ADOF40ADD","B3ADOF40D ","B3ADOF40HDS","B3ADOF40RDT", & + "B3ADOF40V ","B3ADOF40WVS","B3ADOF41A ","B3ADOF41ADD","B3ADOF41D ","B3ADOF41HDS","B3ADOF41RDT", & + "B3ADOF41V ","B3ADOF41WVS","B3ADOF42A ","B3ADOF42ADD","B3ADOF42D ","B3ADOF42HDS","B3ADOF42RDT", & + "B3ADOF42V ","B3ADOF42WVS","B3ADOF43A ","B3ADOF43ADD","B3ADOF43D ","B3ADOF43HDS","B3ADOF43RDT", & + "B3ADOF43V ","B3ADOF43WVS","B3ADOF44A ","B3ADOF44ADD","B3ADOF44D ","B3ADOF44HDS","B3ADOF44RDT", & + "B3ADOF44V ","B3ADOF44WVS","B3ADOF45A ","B3ADOF45ADD","B3ADOF45D ","B3ADOF45HDS","B3ADOF45RDT", & + "B3ADOF45V ","B3ADOF45WVS","B3ADOF46A ","B3ADOF46ADD","B3ADOF46D ","B3ADOF46HDS","B3ADOF46RDT", & + "B3ADOF46V ","B3ADOF46WVS","B3ADOF47A ","B3ADOF47ADD","B3ADOF47D ","B3ADOF47HDS","B3ADOF47RDT", & + "B3ADOF47V ","B3ADOF47WVS","B3ADOF48A ","B3ADOF48ADD","B3ADOF48D ","B3ADOF48HDS","B3ADOF48RDT", & + "B3ADOF48V ","B3ADOF48WVS","B3ADOF49A ","B3ADOF49ADD","B3ADOF49D ","B3ADOF49HDS","B3ADOF49RDT", & + "B3ADOF49V ","B3ADOF49WVS","B3ADOF4A ","B3ADOF4ADD ","B3ADOF4D ","B3ADOF4HDS ","B3ADOF4RDT ", & + "B3ADOF4V ","B3ADOF4WVS ","B3ADOF50A ","B3ADOF50ADD","B3ADOF50D ","B3ADOF50HDS","B3ADOF50RDT", & + "B3ADOF50V ","B3ADOF50WVS","B3ADOF51A ","B3ADOF51ADD","B3ADOF51D ","B3ADOF51HDS","B3ADOF51RDT", & + "B3ADOF51V ","B3ADOF51WVS","B3ADOF52A ","B3ADOF52ADD","B3ADOF52D ","B3ADOF52HDS","B3ADOF52RDT", & + "B3ADOF52V ","B3ADOF52WVS","B3ADOF53A ","B3ADOF53ADD","B3ADOF53D ","B3ADOF53HDS","B3ADOF53RDT", & + "B3ADOF53V ","B3ADOF53WVS","B3ADOF54A ","B3ADOF54ADD","B3ADOF54D ","B3ADOF54HDS","B3ADOF54RDT", & + "B3ADOF54V ","B3ADOF54WVS","B3ADOF55A ","B3ADOF55ADD","B3ADOF55D ","B3ADOF55HDS","B3ADOF55RDT", & + "B3ADOF55V ","B3ADOF55WVS","B3ADOF56A ","B3ADOF56ADD","B3ADOF56D ","B3ADOF56HDS","B3ADOF56RDT", & + "B3ADOF56V ","B3ADOF56WVS","B3ADOF57A ","B3ADOF57ADD","B3ADOF57D ","B3ADOF57HDS","B3ADOF57RDT", & + "B3ADOF57V ","B3ADOF57WVS","B3ADOF58A ","B3ADOF58ADD","B3ADOF58D ","B3ADOF58HDS","B3ADOF58RDT", & + "B3ADOF58V ","B3ADOF58WVS","B3ADOF59A ","B3ADOF59ADD","B3ADOF59D ","B3ADOF59HDS","B3ADOF59RDT", & + "B3ADOF59V ","B3ADOF59WVS","B3ADOF5A ","B3ADOF5ADD ","B3ADOF5D ","B3ADOF5HDS ","B3ADOF5RDT ", & + "B3ADOF5V ","B3ADOF5WVS ","B3ADOF60A ","B3ADOF60ADD","B3ADOF60D ","B3ADOF60HDS","B3ADOF60RDT", & + "B3ADOF60V ","B3ADOF60WVS","B3ADOF61A ","B3ADOF61ADD","B3ADOF61D ","B3ADOF61HDS","B3ADOF61RDT", & + "B3ADOF61V ","B3ADOF61WVS","B3ADOF62A ","B3ADOF62ADD","B3ADOF62D ","B3ADOF62HDS","B3ADOF62RDT", & + "B3ADOF62V ","B3ADOF62WVS","B3ADOF63A ","B3ADOF63ADD","B3ADOF63D ","B3ADOF63HDS","B3ADOF63RDT", & + "B3ADOF63V ","B3ADOF63WVS","B3ADOF64A ","B3ADOF64ADD","B3ADOF64D ","B3ADOF64HDS","B3ADOF64RDT", & + "B3ADOF64V ","B3ADOF64WVS","B3ADOF65A ","B3ADOF65ADD","B3ADOF65D ","B3ADOF65HDS","B3ADOF65RDT", & + "B3ADOF65V ","B3ADOF65WVS","B3ADOF66A ","B3ADOF66ADD","B3ADOF66D ","B3ADOF66HDS","B3ADOF66RDT", & + "B3ADOF66V ","B3ADOF66WVS","B3ADOF67A ","B3ADOF67ADD","B3ADOF67D ","B3ADOF67HDS","B3ADOF67RDT", & + "B3ADOF67V ","B3ADOF67WVS","B3ADOF68A ","B3ADOF68ADD","B3ADOF68D ","B3ADOF68HDS","B3ADOF68RDT", & + "B3ADOF68V ","B3ADOF68WVS","B3ADOF69A ","B3ADOF69ADD","B3ADOF69D ","B3ADOF69HDS","B3ADOF69RDT", & + "B3ADOF69V ","B3ADOF69WVS","B3ADOF6A ","B3ADOF6ADD ","B3ADOF6D ","B3ADOF6HDS ","B3ADOF6RDT ", & + "B3ADOF6V ","B3ADOF6WVS ","B3ADOF70A ","B3ADOF70ADD","B3ADOF70D ","B3ADOF70HDS","B3ADOF70RDT", & + "B3ADOF70V ","B3ADOF70WVS","B3ADOF71A ","B3ADOF71ADD","B3ADOF71D ","B3ADOF71HDS","B3ADOF71RDT", & + "B3ADOF71V ","B3ADOF71WVS","B3ADOF72A ","B3ADOF72ADD","B3ADOF72D ","B3ADOF72HDS","B3ADOF72RDT", & + "B3ADOF72V ","B3ADOF72WVS","B3ADOF73A ","B3ADOF73ADD","B3ADOF73D ","B3ADOF73HDS","B3ADOF73RDT", & + "B3ADOF73V ","B3ADOF73WVS","B3ADOF74A ","B3ADOF74ADD","B3ADOF74D ","B3ADOF74HDS","B3ADOF74RDT", & + "B3ADOF74V ","B3ADOF74WVS","B3ADOF75A ","B3ADOF75ADD","B3ADOF75D ","B3ADOF75HDS","B3ADOF75RDT", & + "B3ADOF75V ","B3ADOF75WVS","B3ADOF76A ","B3ADOF76ADD","B3ADOF76D ","B3ADOF76HDS","B3ADOF76RDT", & + "B3ADOF76V ","B3ADOF76WVS","B3ADOF77A ","B3ADOF77ADD","B3ADOF77D ","B3ADOF77HDS","B3ADOF77RDT", & + "B3ADOF77V ","B3ADOF77WVS","B3ADOF78A ","B3ADOF78ADD","B3ADOF78D ","B3ADOF78HDS","B3ADOF78RDT", & + "B3ADOF78V ","B3ADOF78WVS","B3ADOF79A ","B3ADOF79ADD","B3ADOF79D ","B3ADOF79HDS","B3ADOF79RDT", & + "B3ADOF79V ","B3ADOF79WVS","B3ADOF7A ","B3ADOF7ADD ","B3ADOF7D ","B3ADOF7HDS ","B3ADOF7RDT ", & + "B3ADOF7V ","B3ADOF7WVS ","B3ADOF80A ","B3ADOF80ADD","B3ADOF80D ","B3ADOF80HDS","B3ADOF80RDT", & + "B3ADOF80V ","B3ADOF80WVS","B3ADOF81A ","B3ADOF81ADD","B3ADOF81D ","B3ADOF81HDS","B3ADOF81RDT", & + "B3ADOF81V ","B3ADOF81WVS","B3ADOF82A ","B3ADOF82ADD","B3ADOF82D ","B3ADOF82HDS","B3ADOF82RDT", & + "B3ADOF82V ","B3ADOF82WVS","B3ADOF83A ","B3ADOF83ADD","B3ADOF83D ","B3ADOF83HDS","B3ADOF83RDT", & + "B3ADOF83V ","B3ADOF83WVS","B3ADOF84A ","B3ADOF84ADD","B3ADOF84D ","B3ADOF84HDS","B3ADOF84RDT", & + "B3ADOF84V ","B3ADOF84WVS","B3ADOF85A ","B3ADOF85ADD","B3ADOF85D ","B3ADOF85HDS","B3ADOF85RDT", & + "B3ADOF85V ","B3ADOF85WVS","B3ADOF86A ","B3ADOF86ADD","B3ADOF86D ","B3ADOF86HDS","B3ADOF86RDT", & + "B3ADOF86V ","B3ADOF86WVS","B3ADOF87A ","B3ADOF87ADD","B3ADOF87D ","B3ADOF87HDS","B3ADOF87RDT", & + "B3ADOF87V ","B3ADOF87WVS","B3ADOF88A ","B3ADOF88ADD","B3ADOF88D ","B3ADOF88HDS","B3ADOF88RDT", & + "B3ADOF88V ","B3ADOF88WVS","B3ADOF89A ","B3ADOF89ADD","B3ADOF89D ","B3ADOF89HDS","B3ADOF89RDT", & + "B3ADOF89V ","B3ADOF89WVS","B3ADOF8A ","B3ADOF8ADD ","B3ADOF8D ","B3ADOF8HDS ","B3ADOF8RDT ", & + "B3ADOF8V ","B3ADOF8WVS ","B3ADOF90A ","B3ADOF90ADD","B3ADOF90D ","B3ADOF90HDS","B3ADOF90RDT", & + "B3ADOF90V ","B3ADOF90WVS","B3ADOF91A ","B3ADOF91ADD","B3ADOF91D ","B3ADOF91HDS","B3ADOF91RDT", & + "B3ADOF91V ","B3ADOF91WVS","B3ADOF92A ","B3ADOF92ADD","B3ADOF92D ","B3ADOF92HDS","B3ADOF92RDT", & + "B3ADOF92V ","B3ADOF92WVS","B3ADOF93A ","B3ADOF93ADD","B3ADOF93D ","B3ADOF93HDS","B3ADOF93RDT", & + "B3ADOF93V ","B3ADOF93WVS","B3ADOF94A ","B3ADOF94ADD","B3ADOF94D ","B3ADOF94HDS","B3ADOF94RDT", & + "B3ADOF94V ","B3ADOF94WVS","B3ADOF95A ","B3ADOF95ADD","B3ADOF95D ","B3ADOF95HDS","B3ADOF95RDT", & + "B3ADOF95V ","B3ADOF95WVS","B3ADOF96A ","B3ADOF96ADD","B3ADOF96D ","B3ADOF96HDS","B3ADOF96RDT", & + "B3ADOF96V ","B3ADOF96WVS","B3ADOF97A ","B3ADOF97ADD","B3ADOF97D ","B3ADOF97HDS","B3ADOF97RDT", & + "B3ADOF97V ","B3ADOF97WVS","B3ADOF98A ","B3ADOF98ADD","B3ADOF98D ","B3ADOF98HDS","B3ADOF98RDT", & + "B3ADOF98V ","B3ADOF98WVS","B3ADOF99A ","B3ADOF99ADD","B3ADOF99D ","B3ADOF99HDS","B3ADOF99RDT", & + "B3ADOF99V ","B3ADOF99WVS","B3ADOF9A ","B3ADOF9ADD ","B3ADOF9D ","B3ADOF9HDS ","B3ADOF9RDT ", & + "B3ADOF9V ","B3ADOF9WVS ","B3HDSFXI ","B3HDSFYI ","B3HDSFZI ","B3HDSMXI ","B3HDSMYI ", & + "B3HDSMZI ","B3HEAVE ","B3PITCH ","B3RAXI ","B3RAYI ","B3RAZI ","B3RDTFXI ", & + "B3RDTFYI ","B3RDTFZI ","B3RDTMXI ","B3RDTMYI ","B3RDTMZI ","B3ROLL ","B3RVXI ", & + "B3RVYI ","B3RVZI ","B3SURGE ","B3SWAY ","B3TAXI ","B3TAYI ","B3TAZI ", & + "B3TVXI ","B3TVYI ","B3TVZI ","B3WVSF1XI ","B3WVSF1YI ","B3WVSF1ZI ","B3WVSF2XI ", & + "B3WVSF2YI ","B3WVSF2ZI ","B3WVSFXI ","B3WVSFYI ","B3WVSFZI ","B3WVSM1XI ","B3WVSM1YI ", & + "B3WVSM1ZI ","B3WVSM2XI ","B3WVSM2YI ","B3WVSM2ZI ","B3WVSMXI ","B3WVSMYI ","B3WVSMZI ", & + "B3YAW ","B4ADDFXI ","B4ADDFYI ","B4ADDFZI ","B4ADDMXI ","B4ADDMYI ","B4ADDMZI ", & + "B4ADOF10A ","B4ADOF10ADD","B4ADOF10D ","B4ADOF10HDS","B4ADOF10RDT","B4ADOF10V ","B4ADOF10WVS", & + "B4ADOF11A ","B4ADOF11ADD","B4ADOF11D ","B4ADOF11HDS","B4ADOF11RDT","B4ADOF11V ","B4ADOF11WVS", & + "B4ADOF12A ","B4ADOF12ADD","B4ADOF12D ","B4ADOF12HDS","B4ADOF12RDT","B4ADOF12V ","B4ADOF12WVS", & + "B4ADOF13A ","B4ADOF13ADD","B4ADOF13D ","B4ADOF13HDS","B4ADOF13RDT","B4ADOF13V ","B4ADOF13WVS", & + "B4ADOF14A ","B4ADOF14ADD","B4ADOF14D ","B4ADOF14HDS","B4ADOF14RDT","B4ADOF14V ","B4ADOF14WVS", & + "B4ADOF15A ","B4ADOF15ADD","B4ADOF15D ","B4ADOF15HDS","B4ADOF15RDT","B4ADOF15V ","B4ADOF15WVS", & + "B4ADOF16A ","B4ADOF16ADD","B4ADOF16D ","B4ADOF16HDS","B4ADOF16RDT","B4ADOF16V ","B4ADOF16WVS", & + "B4ADOF17A ","B4ADOF17ADD","B4ADOF17D ","B4ADOF17HDS","B4ADOF17RDT","B4ADOF17V ","B4ADOF17WVS", & + "B4ADOF18A ","B4ADOF18ADD","B4ADOF18D ","B4ADOF18HDS","B4ADOF18RDT","B4ADOF18V ","B4ADOF18WVS", & + "B4ADOF19A ","B4ADOF19ADD","B4ADOF19D ","B4ADOF19HDS","B4ADOF19RDT","B4ADOF19V ","B4ADOF19WVS", & + "B4ADOF1A ","B4ADOF1ADD ","B4ADOF1D ","B4ADOF1HDS ","B4ADOF1RDT ","B4ADOF1V ","B4ADOF1WVS ", & + "B4ADOF20A ","B4ADOF20ADD","B4ADOF20D ","B4ADOF20HDS","B4ADOF20RDT","B4ADOF20V ","B4ADOF20WVS", & + "B4ADOF21A ","B4ADOF21ADD","B4ADOF21D ","B4ADOF21HDS","B4ADOF21RDT","B4ADOF21V ","B4ADOF21WVS", & + "B4ADOF22A ","B4ADOF22ADD","B4ADOF22D ","B4ADOF22HDS","B4ADOF22RDT","B4ADOF22V ","B4ADOF22WVS", & + "B4ADOF23A ","B4ADOF23ADD","B4ADOF23D ","B4ADOF23HDS","B4ADOF23RDT","B4ADOF23V ","B4ADOF23WVS", & + "B4ADOF24A ","B4ADOF24ADD","B4ADOF24D ","B4ADOF24HDS","B4ADOF24RDT","B4ADOF24V ","B4ADOF24WVS", & + "B4ADOF25A ","B4ADOF25ADD","B4ADOF25D ","B4ADOF25HDS","B4ADOF25RDT","B4ADOF25V ","B4ADOF25WVS", & + "B4ADOF26A ","B4ADOF26ADD","B4ADOF26D ","B4ADOF26HDS","B4ADOF26RDT","B4ADOF26V ","B4ADOF26WVS", & + "B4ADOF27A ","B4ADOF27ADD","B4ADOF27D ","B4ADOF27HDS","B4ADOF27RDT","B4ADOF27V ","B4ADOF27WVS", & + "B4ADOF28A ","B4ADOF28ADD","B4ADOF28D ","B4ADOF28HDS","B4ADOF28RDT","B4ADOF28V ","B4ADOF28WVS", & + "B4ADOF29A ","B4ADOF29ADD","B4ADOF29D ","B4ADOF29HDS","B4ADOF29RDT","B4ADOF29V ","B4ADOF29WVS", & + "B4ADOF2A ","B4ADOF2ADD ","B4ADOF2D ","B4ADOF2HDS ","B4ADOF2RDT ","B4ADOF2V ","B4ADOF2WVS ", & + "B4ADOF30A ","B4ADOF30ADD","B4ADOF30D ","B4ADOF30HDS","B4ADOF30RDT","B4ADOF30V ","B4ADOF30WVS", & + "B4ADOF31A ","B4ADOF31ADD","B4ADOF31D ","B4ADOF31HDS","B4ADOF31RDT","B4ADOF31V ","B4ADOF31WVS", & + "B4ADOF32A ","B4ADOF32ADD","B4ADOF32D ","B4ADOF32HDS","B4ADOF32RDT","B4ADOF32V ","B4ADOF32WVS", & + "B4ADOF33A ","B4ADOF33ADD","B4ADOF33D ","B4ADOF33HDS","B4ADOF33RDT","B4ADOF33V ","B4ADOF33WVS", & + "B4ADOF34A ","B4ADOF34ADD","B4ADOF34D ","B4ADOF34HDS","B4ADOF34RDT","B4ADOF34V ","B4ADOF34WVS", & + "B4ADOF35A ","B4ADOF35ADD","B4ADOF35D ","B4ADOF35HDS","B4ADOF35RDT","B4ADOF35V ","B4ADOF35WVS", & + "B4ADOF36A ","B4ADOF36ADD","B4ADOF36D ","B4ADOF36HDS","B4ADOF36RDT","B4ADOF36V ","B4ADOF36WVS", & + "B4ADOF37A ","B4ADOF37ADD","B4ADOF37D ","B4ADOF37HDS","B4ADOF37RDT","B4ADOF37V ","B4ADOF37WVS", & + "B4ADOF38A ","B4ADOF38ADD","B4ADOF38D ","B4ADOF38HDS","B4ADOF38RDT","B4ADOF38V ","B4ADOF38WVS", & + "B4ADOF39A ","B4ADOF39ADD","B4ADOF39D ","B4ADOF39HDS","B4ADOF39RDT","B4ADOF39V ","B4ADOF39WVS", & + "B4ADOF3A ","B4ADOF3ADD ","B4ADOF3D ","B4ADOF3HDS ","B4ADOF3RDT ","B4ADOF3V ","B4ADOF3WVS ", & + "B4ADOF40A ","B4ADOF40ADD","B4ADOF40D ","B4ADOF40HDS","B4ADOF40RDT","B4ADOF40V ","B4ADOF40WVS", & + "B4ADOF41A ","B4ADOF41ADD","B4ADOF41D ","B4ADOF41HDS","B4ADOF41RDT","B4ADOF41V ","B4ADOF41WVS", & + "B4ADOF42A ","B4ADOF42ADD","B4ADOF42D ","B4ADOF42HDS","B4ADOF42RDT","B4ADOF42V ","B4ADOF42WVS", & + "B4ADOF43A ","B4ADOF43ADD","B4ADOF43D ","B4ADOF43HDS","B4ADOF43RDT","B4ADOF43V ","B4ADOF43WVS", & + "B4ADOF44A ","B4ADOF44ADD","B4ADOF44D ","B4ADOF44HDS","B4ADOF44RDT","B4ADOF44V ","B4ADOF44WVS", & + "B4ADOF45A ","B4ADOF45ADD","B4ADOF45D ","B4ADOF45HDS","B4ADOF45RDT","B4ADOF45V ","B4ADOF45WVS", & + "B4ADOF46A ","B4ADOF46ADD","B4ADOF46D ","B4ADOF46HDS","B4ADOF46RDT","B4ADOF46V ","B4ADOF46WVS", & + "B4ADOF47A ","B4ADOF47ADD","B4ADOF47D ","B4ADOF47HDS","B4ADOF47RDT","B4ADOF47V ","B4ADOF47WVS", & + "B4ADOF48A ","B4ADOF48ADD","B4ADOF48D ","B4ADOF48HDS","B4ADOF48RDT","B4ADOF48V ","B4ADOF48WVS", & + "B4ADOF49A ","B4ADOF49ADD","B4ADOF49D ","B4ADOF49HDS","B4ADOF49RDT","B4ADOF49V ","B4ADOF49WVS", & + "B4ADOF4A ","B4ADOF4ADD ","B4ADOF4D ","B4ADOF4HDS ","B4ADOF4RDT ","B4ADOF4V ","B4ADOF4WVS ", & + "B4ADOF50A ","B4ADOF50ADD","B4ADOF50D ","B4ADOF50HDS","B4ADOF50RDT","B4ADOF50V ","B4ADOF50WVS", & + "B4ADOF51A ","B4ADOF51ADD","B4ADOF51D ","B4ADOF51HDS","B4ADOF51RDT","B4ADOF51V ","B4ADOF51WVS", & + "B4ADOF52A ","B4ADOF52ADD","B4ADOF52D ","B4ADOF52HDS","B4ADOF52RDT","B4ADOF52V ","B4ADOF52WVS", & + "B4ADOF53A ","B4ADOF53ADD","B4ADOF53D ","B4ADOF53HDS","B4ADOF53RDT","B4ADOF53V ","B4ADOF53WVS", & + "B4ADOF54A ","B4ADOF54ADD","B4ADOF54D ","B4ADOF54HDS","B4ADOF54RDT","B4ADOF54V ","B4ADOF54WVS", & + "B4ADOF55A ","B4ADOF55ADD","B4ADOF55D ","B4ADOF55HDS","B4ADOF55RDT","B4ADOF55V ","B4ADOF55WVS", & + "B4ADOF56A ","B4ADOF56ADD","B4ADOF56D ","B4ADOF56HDS","B4ADOF56RDT","B4ADOF56V ","B4ADOF56WVS", & + "B4ADOF57A ","B4ADOF57ADD","B4ADOF57D ","B4ADOF57HDS","B4ADOF57RDT","B4ADOF57V ","B4ADOF57WVS", & + "B4ADOF58A ","B4ADOF58ADD","B4ADOF58D ","B4ADOF58HDS","B4ADOF58RDT","B4ADOF58V ","B4ADOF58WVS", & + "B4ADOF59A ","B4ADOF59ADD","B4ADOF59D ","B4ADOF59HDS","B4ADOF59RDT","B4ADOF59V ","B4ADOF59WVS", & + "B4ADOF5A ","B4ADOF5ADD ","B4ADOF5D ","B4ADOF5HDS ","B4ADOF5RDT ","B4ADOF5V ","B4ADOF5WVS ", & + "B4ADOF60A ","B4ADOF60ADD","B4ADOF60D ","B4ADOF60HDS","B4ADOF60RDT","B4ADOF60V ","B4ADOF60WVS", & + "B4ADOF61A ","B4ADOF61ADD","B4ADOF61D ","B4ADOF61HDS","B4ADOF61RDT","B4ADOF61V ","B4ADOF61WVS", & + "B4ADOF62A ","B4ADOF62ADD","B4ADOF62D ","B4ADOF62HDS","B4ADOF62RDT","B4ADOF62V ","B4ADOF62WVS", & + "B4ADOF63A ","B4ADOF63ADD","B4ADOF63D ","B4ADOF63HDS","B4ADOF63RDT","B4ADOF63V ","B4ADOF63WVS", & + "B4ADOF64A ","B4ADOF64ADD","B4ADOF64D ","B4ADOF64HDS","B4ADOF64RDT","B4ADOF64V ","B4ADOF64WVS", & + "B4ADOF65A ","B4ADOF65ADD","B4ADOF65D ","B4ADOF65HDS","B4ADOF65RDT","B4ADOF65V ","B4ADOF65WVS", & + "B4ADOF66A ","B4ADOF66ADD","B4ADOF66D ","B4ADOF66HDS","B4ADOF66RDT","B4ADOF66V ","B4ADOF66WVS", & + "B4ADOF67A ","B4ADOF67ADD","B4ADOF67D ","B4ADOF67HDS","B4ADOF67RDT","B4ADOF67V ","B4ADOF67WVS", & + "B4ADOF68A ","B4ADOF68ADD","B4ADOF68D ","B4ADOF68HDS","B4ADOF68RDT","B4ADOF68V ","B4ADOF68WVS", & + "B4ADOF69A ","B4ADOF69ADD","B4ADOF69D ","B4ADOF69HDS","B4ADOF69RDT","B4ADOF69V ","B4ADOF69WVS", & + "B4ADOF6A ","B4ADOF6ADD ","B4ADOF6D ","B4ADOF6HDS ","B4ADOF6RDT ","B4ADOF6V ","B4ADOF6WVS ", & + "B4ADOF70A ","B4ADOF70ADD","B4ADOF70D ","B4ADOF70HDS","B4ADOF70RDT","B4ADOF70V ","B4ADOF70WVS", & + "B4ADOF71A ","B4ADOF71ADD","B4ADOF71D ","B4ADOF71HDS","B4ADOF71RDT","B4ADOF71V ","B4ADOF71WVS", & + "B4ADOF72A ","B4ADOF72ADD","B4ADOF72D ","B4ADOF72HDS","B4ADOF72RDT","B4ADOF72V ","B4ADOF72WVS", & + "B4ADOF73A ","B4ADOF73ADD","B4ADOF73D ","B4ADOF73HDS","B4ADOF73RDT","B4ADOF73V ","B4ADOF73WVS", & + "B4ADOF74A ","B4ADOF74ADD","B4ADOF74D ","B4ADOF74HDS","B4ADOF74RDT","B4ADOF74V ","B4ADOF74WVS", & + "B4ADOF75A ","B4ADOF75ADD","B4ADOF75D ","B4ADOF75HDS","B4ADOF75RDT","B4ADOF75V ","B4ADOF75WVS", & + "B4ADOF76A ","B4ADOF76ADD","B4ADOF76D ","B4ADOF76HDS","B4ADOF76RDT","B4ADOF76V ","B4ADOF76WVS", & + "B4ADOF77A ","B4ADOF77ADD","B4ADOF77D ","B4ADOF77HDS","B4ADOF77RDT","B4ADOF77V ","B4ADOF77WVS", & + "B4ADOF78A ","B4ADOF78ADD","B4ADOF78D ","B4ADOF78HDS","B4ADOF78RDT","B4ADOF78V ","B4ADOF78WVS", & + "B4ADOF79A ","B4ADOF79ADD","B4ADOF79D ","B4ADOF79HDS","B4ADOF79RDT","B4ADOF79V ","B4ADOF79WVS", & + "B4ADOF7A ","B4ADOF7ADD ","B4ADOF7D ","B4ADOF7HDS ","B4ADOF7RDT ","B4ADOF7V ","B4ADOF7WVS ", & + "B4ADOF80A ","B4ADOF80ADD","B4ADOF80D ","B4ADOF80HDS","B4ADOF80RDT","B4ADOF80V ","B4ADOF80WVS", & + "B4ADOF81A ","B4ADOF81ADD","B4ADOF81D ","B4ADOF81HDS","B4ADOF81RDT","B4ADOF81V ","B4ADOF81WVS", & + "B4ADOF82A ","B4ADOF82ADD","B4ADOF82D ","B4ADOF82HDS","B4ADOF82RDT","B4ADOF82V ","B4ADOF82WVS", & + "B4ADOF83A ","B4ADOF83ADD","B4ADOF83D ","B4ADOF83HDS","B4ADOF83RDT","B4ADOF83V ","B4ADOF83WVS", & + "B4ADOF84A ","B4ADOF84ADD","B4ADOF84D ","B4ADOF84HDS","B4ADOF84RDT","B4ADOF84V ","B4ADOF84WVS", & + "B4ADOF85A ","B4ADOF85ADD","B4ADOF85D ","B4ADOF85HDS","B4ADOF85RDT","B4ADOF85V ","B4ADOF85WVS", & + "B4ADOF86A ","B4ADOF86ADD","B4ADOF86D ","B4ADOF86HDS","B4ADOF86RDT","B4ADOF86V ","B4ADOF86WVS", & + "B4ADOF87A ","B4ADOF87ADD","B4ADOF87D ","B4ADOF87HDS","B4ADOF87RDT","B4ADOF87V ","B4ADOF87WVS", & + "B4ADOF88A ","B4ADOF88ADD","B4ADOF88D ","B4ADOF88HDS","B4ADOF88RDT","B4ADOF88V ","B4ADOF88WVS", & + "B4ADOF89A ","B4ADOF89ADD","B4ADOF89D ","B4ADOF89HDS","B4ADOF89RDT","B4ADOF89V ","B4ADOF89WVS", & + "B4ADOF8A ","B4ADOF8ADD ","B4ADOF8D ","B4ADOF8HDS ","B4ADOF8RDT ","B4ADOF8V ","B4ADOF8WVS ", & + "B4ADOF90A ","B4ADOF90ADD","B4ADOF90D ","B4ADOF90HDS","B4ADOF90RDT","B4ADOF90V ","B4ADOF90WVS", & + "B4ADOF91A ","B4ADOF91ADD","B4ADOF91D ","B4ADOF91HDS","B4ADOF91RDT","B4ADOF91V ","B4ADOF91WVS", & + "B4ADOF92A ","B4ADOF92ADD","B4ADOF92D ","B4ADOF92HDS","B4ADOF92RDT","B4ADOF92V ","B4ADOF92WVS", & + "B4ADOF93A ","B4ADOF93ADD","B4ADOF93D ","B4ADOF93HDS","B4ADOF93RDT","B4ADOF93V ","B4ADOF93WVS", & + "B4ADOF94A ","B4ADOF94ADD","B4ADOF94D ","B4ADOF94HDS","B4ADOF94RDT","B4ADOF94V ","B4ADOF94WVS", & + "B4ADOF95A ","B4ADOF95ADD","B4ADOF95D ","B4ADOF95HDS","B4ADOF95RDT","B4ADOF95V ","B4ADOF95WVS", & + "B4ADOF96A ","B4ADOF96ADD","B4ADOF96D ","B4ADOF96HDS","B4ADOF96RDT","B4ADOF96V ","B4ADOF96WVS", & + "B4ADOF97A ","B4ADOF97ADD","B4ADOF97D ","B4ADOF97HDS","B4ADOF97RDT","B4ADOF97V ","B4ADOF97WVS", & + "B4ADOF98A ","B4ADOF98ADD","B4ADOF98D ","B4ADOF98HDS","B4ADOF98RDT","B4ADOF98V ","B4ADOF98WVS", & + "B4ADOF99A ","B4ADOF99ADD","B4ADOF99D ","B4ADOF99HDS","B4ADOF99RDT","B4ADOF99V ","B4ADOF99WVS", & + "B4ADOF9A ","B4ADOF9ADD ","B4ADOF9D ","B4ADOF9HDS ","B4ADOF9RDT ","B4ADOF9V ","B4ADOF9WVS ", & + "B4HDSFXI ","B4HDSFYI ","B4HDSFZI ","B4HDSMXI ","B4HDSMYI ","B4HDSMZI ","B4HEAVE ", & + "B4PITCH ","B4RAXI ","B4RAYI ","B4RAZI ","B4RDTFXI ","B4RDTFYI ","B4RDTFZI ", & + "B4RDTMXI ","B4RDTMYI ","B4RDTMZI ","B4ROLL ","B4RVXI ","B4RVYI ","B4RVZI ", & + "B4SURGE ","B4SWAY ","B4TAXI ","B4TAYI ","B4TAZI ","B4TVXI ","B4TVYI ", & + "B4TVZI ","B4WVSF1XI ","B4WVSF1YI ","B4WVSF1ZI ","B4WVSF2XI ","B4WVSF2YI ","B4WVSF2ZI ", & + "B4WVSFXI ","B4WVSFYI ","B4WVSFZI ","B4WVSM1XI ","B4WVSM1YI ","B4WVSM1ZI ","B4WVSM2XI ", & + "B4WVSM2YI ","B4WVSM2ZI ","B4WVSMXI ","B4WVSMYI ","B4WVSMZI ","B4YAW ","B5ADDFXI ", & + "B5ADDFYI ","B5ADDFZI ","B5ADDMXI ","B5ADDMYI ","B5ADDMZI ","B5ADOF10A ","B5ADOF10ADD", & + "B5ADOF10D ","B5ADOF10HDS","B5ADOF10RDT","B5ADOF10V ","B5ADOF10WVS","B5ADOF11A ","B5ADOF11ADD", & + "B5ADOF11D ","B5ADOF11HDS","B5ADOF11RDT","B5ADOF11V ","B5ADOF11WVS","B5ADOF12A ","B5ADOF12ADD", & + "B5ADOF12D ","B5ADOF12HDS","B5ADOF12RDT","B5ADOF12V ","B5ADOF12WVS","B5ADOF13A ","B5ADOF13ADD", & + "B5ADOF13D ","B5ADOF13HDS","B5ADOF13RDT","B5ADOF13V ","B5ADOF13WVS","B5ADOF14A ","B5ADOF14ADD", & + "B5ADOF14D ","B5ADOF14HDS","B5ADOF14RDT","B5ADOF14V ","B5ADOF14WVS","B5ADOF15A ","B5ADOF15ADD", & + "B5ADOF15D ","B5ADOF15HDS","B5ADOF15RDT","B5ADOF15V ","B5ADOF15WVS","B5ADOF16A ","B5ADOF16ADD", & + "B5ADOF16D ","B5ADOF16HDS","B5ADOF16RDT","B5ADOF16V ","B5ADOF16WVS","B5ADOF17A ","B5ADOF17ADD", & + "B5ADOF17D ","B5ADOF17HDS","B5ADOF17RDT","B5ADOF17V ","B5ADOF17WVS","B5ADOF18A ","B5ADOF18ADD", & + "B5ADOF18D ","B5ADOF18HDS","B5ADOF18RDT","B5ADOF18V ","B5ADOF18WVS","B5ADOF19A ","B5ADOF19ADD", & + "B5ADOF19D ","B5ADOF19HDS","B5ADOF19RDT","B5ADOF19V ","B5ADOF19WVS","B5ADOF1A ","B5ADOF1ADD ", & + "B5ADOF1D ","B5ADOF1HDS ","B5ADOF1RDT ","B5ADOF1V ","B5ADOF1WVS ","B5ADOF20A ","B5ADOF20ADD", & + "B5ADOF20D ","B5ADOF20HDS","B5ADOF20RDT","B5ADOF20V ","B5ADOF20WVS","B5ADOF21A ","B5ADOF21ADD", & + "B5ADOF21D ","B5ADOF21HDS","B5ADOF21RDT","B5ADOF21V ","B5ADOF21WVS","B5ADOF22A ","B5ADOF22ADD", & + "B5ADOF22D ","B5ADOF22HDS","B5ADOF22RDT","B5ADOF22V ","B5ADOF22WVS","B5ADOF23A ","B5ADOF23ADD", & + "B5ADOF23D ","B5ADOF23HDS","B5ADOF23RDT","B5ADOF23V ","B5ADOF23WVS","B5ADOF24A ","B5ADOF24ADD", & + "B5ADOF24D ","B5ADOF24HDS","B5ADOF24RDT","B5ADOF24V ","B5ADOF24WVS","B5ADOF25A ","B5ADOF25ADD", & + "B5ADOF25D ","B5ADOF25HDS","B5ADOF25RDT","B5ADOF25V ","B5ADOF25WVS","B5ADOF26A ","B5ADOF26ADD", & + "B5ADOF26D ","B5ADOF26HDS","B5ADOF26RDT","B5ADOF26V ","B5ADOF26WVS","B5ADOF27A ","B5ADOF27ADD", & + "B5ADOF27D ","B5ADOF27HDS","B5ADOF27RDT","B5ADOF27V ","B5ADOF27WVS","B5ADOF28A ","B5ADOF28ADD", & + "B5ADOF28D ","B5ADOF28HDS","B5ADOF28RDT","B5ADOF28V ","B5ADOF28WVS","B5ADOF29A ","B5ADOF29ADD", & + "B5ADOF29D ","B5ADOF29HDS","B5ADOF29RDT","B5ADOF29V ","B5ADOF29WVS","B5ADOF2A ","B5ADOF2ADD ", & + "B5ADOF2D ","B5ADOF2HDS ","B5ADOF2RDT ","B5ADOF2V ","B5ADOF2WVS ","B5ADOF30A ","B5ADOF30ADD", & + "B5ADOF30D ","B5ADOF30HDS","B5ADOF30RDT","B5ADOF30V ","B5ADOF30WVS","B5ADOF31A ","B5ADOF31ADD", & + "B5ADOF31D ","B5ADOF31HDS","B5ADOF31RDT","B5ADOF31V ","B5ADOF31WVS","B5ADOF32A ","B5ADOF32ADD", & + "B5ADOF32D ","B5ADOF32HDS","B5ADOF32RDT","B5ADOF32V ","B5ADOF32WVS","B5ADOF33A ","B5ADOF33ADD", & + "B5ADOF33D ","B5ADOF33HDS","B5ADOF33RDT","B5ADOF33V ","B5ADOF33WVS","B5ADOF34A ","B5ADOF34ADD", & + "B5ADOF34D ","B5ADOF34HDS","B5ADOF34RDT","B5ADOF34V ","B5ADOF34WVS","B5ADOF35A ","B5ADOF35ADD", & + "B5ADOF35D ","B5ADOF35HDS","B5ADOF35RDT","B5ADOF35V ","B5ADOF35WVS","B5ADOF36A ","B5ADOF36ADD", & + "B5ADOF36D ","B5ADOF36HDS","B5ADOF36RDT","B5ADOF36V ","B5ADOF36WVS","B5ADOF37A ","B5ADOF37ADD", & + "B5ADOF37D ","B5ADOF37HDS","B5ADOF37RDT","B5ADOF37V ","B5ADOF37WVS","B5ADOF38A ","B5ADOF38ADD", & + "B5ADOF38D ","B5ADOF38HDS","B5ADOF38RDT","B5ADOF38V ","B5ADOF38WVS","B5ADOF39A ","B5ADOF39ADD", & + "B5ADOF39D ","B5ADOF39HDS","B5ADOF39RDT","B5ADOF39V ","B5ADOF39WVS","B5ADOF3A ","B5ADOF3ADD ", & + "B5ADOF3D ","B5ADOF3HDS ","B5ADOF3RDT ","B5ADOF3V ","B5ADOF3WVS ","B5ADOF40A ","B5ADOF40ADD", & + "B5ADOF40D ","B5ADOF40HDS","B5ADOF40RDT","B5ADOF40V ","B5ADOF40WVS","B5ADOF41A ","B5ADOF41ADD", & + "B5ADOF41D ","B5ADOF41HDS","B5ADOF41RDT","B5ADOF41V ","B5ADOF41WVS","B5ADOF42A ","B5ADOF42ADD", & + "B5ADOF42D ","B5ADOF42HDS","B5ADOF42RDT","B5ADOF42V ","B5ADOF42WVS","B5ADOF43A ","B5ADOF43ADD", & + "B5ADOF43D ","B5ADOF43HDS","B5ADOF43RDT","B5ADOF43V ","B5ADOF43WVS","B5ADOF44A ","B5ADOF44ADD", & + "B5ADOF44D ","B5ADOF44HDS","B5ADOF44RDT","B5ADOF44V ","B5ADOF44WVS","B5ADOF45A ","B5ADOF45ADD", & + "B5ADOF45D ","B5ADOF45HDS","B5ADOF45RDT","B5ADOF45V ","B5ADOF45WVS","B5ADOF46A ","B5ADOF46ADD", & + "B5ADOF46D ","B5ADOF46HDS","B5ADOF46RDT","B5ADOF46V ","B5ADOF46WVS","B5ADOF47A ","B5ADOF47ADD", & + "B5ADOF47D ","B5ADOF47HDS","B5ADOF47RDT","B5ADOF47V ","B5ADOF47WVS","B5ADOF48A ","B5ADOF48ADD", & + "B5ADOF48D ","B5ADOF48HDS","B5ADOF48RDT","B5ADOF48V ","B5ADOF48WVS","B5ADOF49A ","B5ADOF49ADD", & + "B5ADOF49D ","B5ADOF49HDS","B5ADOF49RDT","B5ADOF49V ","B5ADOF49WVS","B5ADOF4A ","B5ADOF4ADD ", & + "B5ADOF4D ","B5ADOF4HDS ","B5ADOF4RDT ","B5ADOF4V ","B5ADOF4WVS ","B5ADOF50A ","B5ADOF50ADD", & + "B5ADOF50D ","B5ADOF50HDS","B5ADOF50RDT","B5ADOF50V ","B5ADOF50WVS","B5ADOF51A ","B5ADOF51ADD", & + "B5ADOF51D ","B5ADOF51HDS","B5ADOF51RDT","B5ADOF51V ","B5ADOF51WVS","B5ADOF52A ","B5ADOF52ADD", & + "B5ADOF52D ","B5ADOF52HDS","B5ADOF52RDT","B5ADOF52V ","B5ADOF52WVS","B5ADOF53A ","B5ADOF53ADD", & + "B5ADOF53D ","B5ADOF53HDS","B5ADOF53RDT","B5ADOF53V ","B5ADOF53WVS","B5ADOF54A ","B5ADOF54ADD", & + "B5ADOF54D ","B5ADOF54HDS","B5ADOF54RDT","B5ADOF54V ","B5ADOF54WVS","B5ADOF55A ","B5ADOF55ADD", & + "B5ADOF55D ","B5ADOF55HDS","B5ADOF55RDT","B5ADOF55V ","B5ADOF55WVS","B5ADOF56A ","B5ADOF56ADD", & + "B5ADOF56D ","B5ADOF56HDS","B5ADOF56RDT","B5ADOF56V ","B5ADOF56WVS","B5ADOF57A ","B5ADOF57ADD", & + "B5ADOF57D ","B5ADOF57HDS","B5ADOF57RDT","B5ADOF57V ","B5ADOF57WVS","B5ADOF58A ","B5ADOF58ADD", & + "B5ADOF58D ","B5ADOF58HDS","B5ADOF58RDT","B5ADOF58V ","B5ADOF58WVS","B5ADOF59A ","B5ADOF59ADD", & + "B5ADOF59D ","B5ADOF59HDS","B5ADOF59RDT","B5ADOF59V ","B5ADOF59WVS","B5ADOF5A ","B5ADOF5ADD "/) + CHARACTER(OutStrLenM1), PARAMETER :: ValidParamAry3(1687) = (/ & ! This lists the names of the allowed parameters, which must be sorted alphabetically + "B5ADOF5D ","B5ADOF5HDS ","B5ADOF5RDT ","B5ADOF5V ","B5ADOF5WVS ","B5ADOF60A ","B5ADOF60ADD", & + "B5ADOF60D ","B5ADOF60HDS","B5ADOF60RDT","B5ADOF60V ","B5ADOF60WVS","B5ADOF61A ","B5ADOF61ADD", & + "B5ADOF61D ","B5ADOF61HDS","B5ADOF61RDT","B5ADOF61V ","B5ADOF61WVS","B5ADOF62A ","B5ADOF62ADD", & + "B5ADOF62D ","B5ADOF62HDS","B5ADOF62RDT","B5ADOF62V ","B5ADOF62WVS","B5ADOF63A ","B5ADOF63ADD", & + "B5ADOF63D ","B5ADOF63HDS","B5ADOF63RDT","B5ADOF63V ","B5ADOF63WVS","B5ADOF64A ","B5ADOF64ADD", & + "B5ADOF64D ","B5ADOF64HDS","B5ADOF64RDT","B5ADOF64V ","B5ADOF64WVS","B5ADOF65A ","B5ADOF65ADD", & + "B5ADOF65D ","B5ADOF65HDS","B5ADOF65RDT","B5ADOF65V ","B5ADOF65WVS","B5ADOF66A ","B5ADOF66ADD", & + "B5ADOF66D ","B5ADOF66HDS","B5ADOF66RDT","B5ADOF66V ","B5ADOF66WVS","B5ADOF67A ","B5ADOF67ADD", & + "B5ADOF67D ","B5ADOF67HDS","B5ADOF67RDT","B5ADOF67V ","B5ADOF67WVS","B5ADOF68A ","B5ADOF68ADD", & + "B5ADOF68D ","B5ADOF68HDS","B5ADOF68RDT","B5ADOF68V ","B5ADOF68WVS","B5ADOF69A ","B5ADOF69ADD", & + "B5ADOF69D ","B5ADOF69HDS","B5ADOF69RDT","B5ADOF69V ","B5ADOF69WVS","B5ADOF6A ","B5ADOF6ADD ", & + "B5ADOF6D ","B5ADOF6HDS ","B5ADOF6RDT ","B5ADOF6V ","B5ADOF6WVS ","B5ADOF70A ","B5ADOF70ADD", & + "B5ADOF70D ","B5ADOF70HDS","B5ADOF70RDT","B5ADOF70V ","B5ADOF70WVS","B5ADOF71A ","B5ADOF71ADD", & + "B5ADOF71D ","B5ADOF71HDS","B5ADOF71RDT","B5ADOF71V ","B5ADOF71WVS","B5ADOF72A ","B5ADOF72ADD", & + "B5ADOF72D ","B5ADOF72HDS","B5ADOF72RDT","B5ADOF72V ","B5ADOF72WVS","B5ADOF73A ","B5ADOF73ADD", & + "B5ADOF73D ","B5ADOF73HDS","B5ADOF73RDT","B5ADOF73V ","B5ADOF73WVS","B5ADOF74A ","B5ADOF74ADD", & + "B5ADOF74D ","B5ADOF74HDS","B5ADOF74RDT","B5ADOF74V ","B5ADOF74WVS","B5ADOF75A ","B5ADOF75ADD", & + "B5ADOF75D ","B5ADOF75HDS","B5ADOF75RDT","B5ADOF75V ","B5ADOF75WVS","B5ADOF76A ","B5ADOF76ADD", & + "B5ADOF76D ","B5ADOF76HDS","B5ADOF76RDT","B5ADOF76V ","B5ADOF76WVS","B5ADOF77A ","B5ADOF77ADD", & + "B5ADOF77D ","B5ADOF77HDS","B5ADOF77RDT","B5ADOF77V ","B5ADOF77WVS","B5ADOF78A ","B5ADOF78ADD", & + "B5ADOF78D ","B5ADOF78HDS","B5ADOF78RDT","B5ADOF78V ","B5ADOF78WVS","B5ADOF79A ","B5ADOF79ADD", & + "B5ADOF79D ","B5ADOF79HDS","B5ADOF79RDT","B5ADOF79V ","B5ADOF79WVS","B5ADOF7A ","B5ADOF7ADD ", & + "B5ADOF7D ","B5ADOF7HDS ","B5ADOF7RDT ","B5ADOF7V ","B5ADOF7WVS ","B5ADOF80A ","B5ADOF80ADD", & + "B5ADOF80D ","B5ADOF80HDS","B5ADOF80RDT","B5ADOF80V ","B5ADOF80WVS","B5ADOF81A ","B5ADOF81ADD", & + "B5ADOF81D ","B5ADOF81HDS","B5ADOF81RDT","B5ADOF81V ","B5ADOF81WVS","B5ADOF82A ","B5ADOF82ADD", & + "B5ADOF82D ","B5ADOF82HDS","B5ADOF82RDT","B5ADOF82V ","B5ADOF82WVS","B5ADOF83A ","B5ADOF83ADD", & + "B5ADOF83D ","B5ADOF83HDS","B5ADOF83RDT","B5ADOF83V ","B5ADOF83WVS","B5ADOF84A ","B5ADOF84ADD", & + "B5ADOF84D ","B5ADOF84HDS","B5ADOF84RDT","B5ADOF84V ","B5ADOF84WVS","B5ADOF85A ","B5ADOF85ADD", & + "B5ADOF85D ","B5ADOF85HDS","B5ADOF85RDT","B5ADOF85V ","B5ADOF85WVS","B5ADOF86A ","B5ADOF86ADD", & + "B5ADOF86D ","B5ADOF86HDS","B5ADOF86RDT","B5ADOF86V ","B5ADOF86WVS","B5ADOF87A ","B5ADOF87ADD", & + "B5ADOF87D ","B5ADOF87HDS","B5ADOF87RDT","B5ADOF87V ","B5ADOF87WVS","B5ADOF88A ","B5ADOF88ADD", & + "B5ADOF88D ","B5ADOF88HDS","B5ADOF88RDT","B5ADOF88V ","B5ADOF88WVS","B5ADOF89A ","B5ADOF89ADD", & + "B5ADOF89D ","B5ADOF89HDS","B5ADOF89RDT","B5ADOF89V ","B5ADOF89WVS","B5ADOF8A ","B5ADOF8ADD ", & + "B5ADOF8D ","B5ADOF8HDS ","B5ADOF8RDT ","B5ADOF8V ","B5ADOF8WVS ","B5ADOF90A ","B5ADOF90ADD", & + "B5ADOF90D ","B5ADOF90HDS","B5ADOF90RDT","B5ADOF90V ","B5ADOF90WVS","B5ADOF91A ","B5ADOF91ADD", & + "B5ADOF91D ","B5ADOF91HDS","B5ADOF91RDT","B5ADOF91V ","B5ADOF91WVS","B5ADOF92A ","B5ADOF92ADD", & + "B5ADOF92D ","B5ADOF92HDS","B5ADOF92RDT","B5ADOF92V ","B5ADOF92WVS","B5ADOF93A ","B5ADOF93ADD", & + "B5ADOF93D ","B5ADOF93HDS","B5ADOF93RDT","B5ADOF93V ","B5ADOF93WVS","B5ADOF94A ","B5ADOF94ADD", & + "B5ADOF94D ","B5ADOF94HDS","B5ADOF94RDT","B5ADOF94V ","B5ADOF94WVS","B5ADOF95A ","B5ADOF95ADD", & + "B5ADOF95D ","B5ADOF95HDS","B5ADOF95RDT","B5ADOF95V ","B5ADOF95WVS","B5ADOF96A ","B5ADOF96ADD", & + "B5ADOF96D ","B5ADOF96HDS","B5ADOF96RDT","B5ADOF96V ","B5ADOF96WVS","B5ADOF97A ","B5ADOF97ADD", & + "B5ADOF97D ","B5ADOF97HDS","B5ADOF97RDT","B5ADOF97V ","B5ADOF97WVS","B5ADOF98A ","B5ADOF98ADD", & + "B5ADOF98D ","B5ADOF98HDS","B5ADOF98RDT","B5ADOF98V ","B5ADOF98WVS","B5ADOF99A ","B5ADOF99ADD", & + "B5ADOF99D ","B5ADOF99HDS","B5ADOF99RDT","B5ADOF99V ","B5ADOF99WVS","B5ADOF9A ","B5ADOF9ADD ", & + "B5ADOF9D ","B5ADOF9HDS ","B5ADOF9RDT ","B5ADOF9V ","B5ADOF9WVS ","B5HDSFXI ","B5HDSFYI ", & + "B5HDSFZI ","B5HDSMXI ","B5HDSMYI ","B5HDSMZI ","B5HEAVE ","B5PITCH ","B5RAXI ", & + "B5RAYI ","B5RAZI ","B5RDTFXI ","B5RDTFYI ","B5RDTFZI ","B5RDTMXI ","B5RDTMYI ", & + "B5RDTMZI ","B5ROLL ","B5RVXI ","B5RVYI ","B5RVZI ","B5SURGE ","B5SWAY ", & + "B5TAXI ","B5TAYI ","B5TAZI ","B5TVXI ","B5TVYI ","B5TVZI ","B5WVSF1XI ", & + "B5WVSF1YI ","B5WVSF1ZI ","B5WVSF2XI ","B5WVSF2YI ","B5WVSF2ZI ","B5WVSFXI ","B5WVSFYI ", & + "B5WVSFZI ","B5WVSM1XI ","B5WVSM1YI ","B5WVSM1ZI ","B5WVSM2XI ","B5WVSM2YI ","B5WVSM2ZI ", & + "B5WVSMXI ","B5WVSMYI ","B5WVSMZI ","B5YAW ","B6ADDFXI ","B6ADDFYI ","B6ADDFZI ", & + "B6ADDMXI ","B6ADDMYI ","B6ADDMZI ","B6ADOF10A ","B6ADOF10ADD","B6ADOF10D ","B6ADOF10HDS", & + "B6ADOF10RDT","B6ADOF10V ","B6ADOF10WVS","B6ADOF11A ","B6ADOF11ADD","B6ADOF11D ","B6ADOF11HDS", & + "B6ADOF11RDT","B6ADOF11V ","B6ADOF11WVS","B6ADOF12A ","B6ADOF12ADD","B6ADOF12D ","B6ADOF12HDS", & + "B6ADOF12RDT","B6ADOF12V ","B6ADOF12WVS","B6ADOF13A ","B6ADOF13ADD","B6ADOF13D ","B6ADOF13HDS", & + "B6ADOF13RDT","B6ADOF13V ","B6ADOF13WVS","B6ADOF14A ","B6ADOF14ADD","B6ADOF14D ","B6ADOF14HDS", & + "B6ADOF14RDT","B6ADOF14V ","B6ADOF14WVS","B6ADOF15A ","B6ADOF15ADD","B6ADOF15D ","B6ADOF15HDS", & + "B6ADOF15RDT","B6ADOF15V ","B6ADOF15WVS","B6ADOF16A ","B6ADOF16ADD","B6ADOF16D ","B6ADOF16HDS", & + "B6ADOF16RDT","B6ADOF16V ","B6ADOF16WVS","B6ADOF17A ","B6ADOF17ADD","B6ADOF17D ","B6ADOF17HDS", & + "B6ADOF17RDT","B6ADOF17V ","B6ADOF17WVS","B6ADOF18A ","B6ADOF18ADD","B6ADOF18D ","B6ADOF18HDS", & + "B6ADOF18RDT","B6ADOF18V ","B6ADOF18WVS","B6ADOF19A ","B6ADOF19ADD","B6ADOF19D ","B6ADOF19HDS", & + "B6ADOF19RDT","B6ADOF19V ","B6ADOF19WVS","B6ADOF1A ","B6ADOF1ADD ","B6ADOF1D ","B6ADOF1HDS ", & + "B6ADOF1RDT ","B6ADOF1V ","B6ADOF1WVS ","B6ADOF20A ","B6ADOF20ADD","B6ADOF20D ","B6ADOF20HDS", & + "B6ADOF20RDT","B6ADOF20V ","B6ADOF20WVS","B6ADOF21A ","B6ADOF21ADD","B6ADOF21D ","B6ADOF21HDS", & + "B6ADOF21RDT","B6ADOF21V ","B6ADOF21WVS","B6ADOF22A ","B6ADOF22ADD","B6ADOF22D ","B6ADOF22HDS", & + "B6ADOF22RDT","B6ADOF22V ","B6ADOF22WVS","B6ADOF23A ","B6ADOF23ADD","B6ADOF23D ","B6ADOF23HDS", & + "B6ADOF23RDT","B6ADOF23V ","B6ADOF23WVS","B6ADOF24A ","B6ADOF24ADD","B6ADOF24D ","B6ADOF24HDS", & + "B6ADOF24RDT","B6ADOF24V ","B6ADOF24WVS","B6ADOF25A ","B6ADOF25ADD","B6ADOF25D ","B6ADOF25HDS", & + "B6ADOF25RDT","B6ADOF25V ","B6ADOF25WVS","B6ADOF26A ","B6ADOF26ADD","B6ADOF26D ","B6ADOF26HDS", & + "B6ADOF26RDT","B6ADOF26V ","B6ADOF26WVS","B6ADOF27A ","B6ADOF27ADD","B6ADOF27D ","B6ADOF27HDS", & + "B6ADOF27RDT","B6ADOF27V ","B6ADOF27WVS","B6ADOF28A ","B6ADOF28ADD","B6ADOF28D ","B6ADOF28HDS", & + "B6ADOF28RDT","B6ADOF28V ","B6ADOF28WVS","B6ADOF29A ","B6ADOF29ADD","B6ADOF29D ","B6ADOF29HDS", & + "B6ADOF29RDT","B6ADOF29V ","B6ADOF29WVS","B6ADOF2A ","B6ADOF2ADD ","B6ADOF2D ","B6ADOF2HDS ", & + "B6ADOF2RDT ","B6ADOF2V ","B6ADOF2WVS ","B6ADOF30A ","B6ADOF30ADD","B6ADOF30D ","B6ADOF30HDS", & + "B6ADOF30RDT","B6ADOF30V ","B6ADOF30WVS","B6ADOF31A ","B6ADOF31ADD","B6ADOF31D ","B6ADOF31HDS", & + "B6ADOF31RDT","B6ADOF31V ","B6ADOF31WVS","B6ADOF32A ","B6ADOF32ADD","B6ADOF32D ","B6ADOF32HDS", & + "B6ADOF32RDT","B6ADOF32V ","B6ADOF32WVS","B6ADOF33A ","B6ADOF33ADD","B6ADOF33D ","B6ADOF33HDS", & + "B6ADOF33RDT","B6ADOF33V ","B6ADOF33WVS","B6ADOF34A ","B6ADOF34ADD","B6ADOF34D ","B6ADOF34HDS", & + "B6ADOF34RDT","B6ADOF34V ","B6ADOF34WVS","B6ADOF35A ","B6ADOF35ADD","B6ADOF35D ","B6ADOF35HDS", & + "B6ADOF35RDT","B6ADOF35V ","B6ADOF35WVS","B6ADOF36A ","B6ADOF36ADD","B6ADOF36D ","B6ADOF36HDS", & + "B6ADOF36RDT","B6ADOF36V ","B6ADOF36WVS","B6ADOF37A ","B6ADOF37ADD","B6ADOF37D ","B6ADOF37HDS", & + "B6ADOF37RDT","B6ADOF37V ","B6ADOF37WVS","B6ADOF38A ","B6ADOF38ADD","B6ADOF38D ","B6ADOF38HDS", & + "B6ADOF38RDT","B6ADOF38V ","B6ADOF38WVS","B6ADOF39A ","B6ADOF39ADD","B6ADOF39D ","B6ADOF39HDS", & + "B6ADOF39RDT","B6ADOF39V ","B6ADOF39WVS","B6ADOF3A ","B6ADOF3ADD ","B6ADOF3D ","B6ADOF3HDS ", & + "B6ADOF3RDT ","B6ADOF3V ","B6ADOF3WVS ","B6ADOF40A ","B6ADOF40ADD","B6ADOF40D ","B6ADOF40HDS", & + "B6ADOF40RDT","B6ADOF40V ","B6ADOF40WVS","B6ADOF41A ","B6ADOF41ADD","B6ADOF41D ","B6ADOF41HDS", & + "B6ADOF41RDT","B6ADOF41V ","B6ADOF41WVS","B6ADOF42A ","B6ADOF42ADD","B6ADOF42D ","B6ADOF42HDS", & + "B6ADOF42RDT","B6ADOF42V ","B6ADOF42WVS","B6ADOF43A ","B6ADOF43ADD","B6ADOF43D ","B6ADOF43HDS", & + "B6ADOF43RDT","B6ADOF43V ","B6ADOF43WVS","B6ADOF44A ","B6ADOF44ADD","B6ADOF44D ","B6ADOF44HDS", & + "B6ADOF44RDT","B6ADOF44V ","B6ADOF44WVS","B6ADOF45A ","B6ADOF45ADD","B6ADOF45D ","B6ADOF45HDS", & + "B6ADOF45RDT","B6ADOF45V ","B6ADOF45WVS","B6ADOF46A ","B6ADOF46ADD","B6ADOF46D ","B6ADOF46HDS", & + "B6ADOF46RDT","B6ADOF46V ","B6ADOF46WVS","B6ADOF47A ","B6ADOF47ADD","B6ADOF47D ","B6ADOF47HDS", & + "B6ADOF47RDT","B6ADOF47V ","B6ADOF47WVS","B6ADOF48A ","B6ADOF48ADD","B6ADOF48D ","B6ADOF48HDS", & + "B6ADOF48RDT","B6ADOF48V ","B6ADOF48WVS","B6ADOF49A ","B6ADOF49ADD","B6ADOF49D ","B6ADOF49HDS", & + "B6ADOF49RDT","B6ADOF49V ","B6ADOF49WVS","B6ADOF4A ","B6ADOF4ADD ","B6ADOF4D ","B6ADOF4HDS ", & + "B6ADOF4RDT ","B6ADOF4V ","B6ADOF4WVS ","B6ADOF50A ","B6ADOF50ADD","B6ADOF50D ","B6ADOF50HDS", & + "B6ADOF50RDT","B6ADOF50V ","B6ADOF50WVS","B6ADOF51A ","B6ADOF51ADD","B6ADOF51D ","B6ADOF51HDS", & + "B6ADOF51RDT","B6ADOF51V ","B6ADOF51WVS","B6ADOF52A ","B6ADOF52ADD","B6ADOF52D ","B6ADOF52HDS", & + "B6ADOF52RDT","B6ADOF52V ","B6ADOF52WVS","B6ADOF53A ","B6ADOF53ADD","B6ADOF53D ","B6ADOF53HDS", & + "B6ADOF53RDT","B6ADOF53V ","B6ADOF53WVS","B6ADOF54A ","B6ADOF54ADD","B6ADOF54D ","B6ADOF54HDS", & + "B6ADOF54RDT","B6ADOF54V ","B6ADOF54WVS","B6ADOF55A ","B6ADOF55ADD","B6ADOF55D ","B6ADOF55HDS", & + "B6ADOF55RDT","B6ADOF55V ","B6ADOF55WVS","B6ADOF56A ","B6ADOF56ADD","B6ADOF56D ","B6ADOF56HDS", & + "B6ADOF56RDT","B6ADOF56V ","B6ADOF56WVS","B6ADOF57A ","B6ADOF57ADD","B6ADOF57D ","B6ADOF57HDS", & + "B6ADOF57RDT","B6ADOF57V ","B6ADOF57WVS","B6ADOF58A ","B6ADOF58ADD","B6ADOF58D ","B6ADOF58HDS", & + "B6ADOF58RDT","B6ADOF58V ","B6ADOF58WVS","B6ADOF59A ","B6ADOF59ADD","B6ADOF59D ","B6ADOF59HDS", & + "B6ADOF59RDT","B6ADOF59V ","B6ADOF59WVS","B6ADOF5A ","B6ADOF5ADD ","B6ADOF5D ","B6ADOF5HDS ", & + "B6ADOF5RDT ","B6ADOF5V ","B6ADOF5WVS ","B6ADOF60A ","B6ADOF60ADD","B6ADOF60D ","B6ADOF60HDS", & + "B6ADOF60RDT","B6ADOF60V ","B6ADOF60WVS","B6ADOF61A ","B6ADOF61ADD","B6ADOF61D ","B6ADOF61HDS", & + "B6ADOF61RDT","B6ADOF61V ","B6ADOF61WVS","B6ADOF62A ","B6ADOF62ADD","B6ADOF62D ","B6ADOF62HDS", & + "B6ADOF62RDT","B6ADOF62V ","B6ADOF62WVS","B6ADOF63A ","B6ADOF63ADD","B6ADOF63D ","B6ADOF63HDS", & + "B6ADOF63RDT","B6ADOF63V ","B6ADOF63WVS","B6ADOF64A ","B6ADOF64ADD","B6ADOF64D ","B6ADOF64HDS", & + "B6ADOF64RDT","B6ADOF64V ","B6ADOF64WVS","B6ADOF65A ","B6ADOF65ADD","B6ADOF65D ","B6ADOF65HDS", & + "B6ADOF65RDT","B6ADOF65V ","B6ADOF65WVS","B6ADOF66A ","B6ADOF66ADD","B6ADOF66D ","B6ADOF66HDS", & + "B6ADOF66RDT","B6ADOF66V ","B6ADOF66WVS","B6ADOF67A ","B6ADOF67ADD","B6ADOF67D ","B6ADOF67HDS", & + "B6ADOF67RDT","B6ADOF67V ","B6ADOF67WVS","B6ADOF68A ","B6ADOF68ADD","B6ADOF68D ","B6ADOF68HDS", & + "B6ADOF68RDT","B6ADOF68V ","B6ADOF68WVS","B6ADOF69A ","B6ADOF69ADD","B6ADOF69D ","B6ADOF69HDS", & + "B6ADOF69RDT","B6ADOF69V ","B6ADOF69WVS","B6ADOF6A ","B6ADOF6ADD ","B6ADOF6D ","B6ADOF6HDS ", & + "B6ADOF6RDT ","B6ADOF6V ","B6ADOF6WVS ","B6ADOF70A ","B6ADOF70ADD","B6ADOF70D ","B6ADOF70HDS", & + "B6ADOF70RDT","B6ADOF70V ","B6ADOF70WVS","B6ADOF71A ","B6ADOF71ADD","B6ADOF71D ","B6ADOF71HDS", & + "B6ADOF71RDT","B6ADOF71V ","B6ADOF71WVS","B6ADOF72A ","B6ADOF72ADD","B6ADOF72D ","B6ADOF72HDS", & + "B6ADOF72RDT","B6ADOF72V ","B6ADOF72WVS","B6ADOF73A ","B6ADOF73ADD","B6ADOF73D ","B6ADOF73HDS", & + "B6ADOF73RDT","B6ADOF73V ","B6ADOF73WVS","B6ADOF74A ","B6ADOF74ADD","B6ADOF74D ","B6ADOF74HDS", & + "B6ADOF74RDT","B6ADOF74V ","B6ADOF74WVS","B6ADOF75A ","B6ADOF75ADD","B6ADOF75D ","B6ADOF75HDS", & + "B6ADOF75RDT","B6ADOF75V ","B6ADOF75WVS","B6ADOF76A ","B6ADOF76ADD","B6ADOF76D ","B6ADOF76HDS", & + "B6ADOF76RDT","B6ADOF76V ","B6ADOF76WVS","B6ADOF77A ","B6ADOF77ADD","B6ADOF77D ","B6ADOF77HDS", & + "B6ADOF77RDT","B6ADOF77V ","B6ADOF77WVS","B6ADOF78A ","B6ADOF78ADD","B6ADOF78D ","B6ADOF78HDS", & + "B6ADOF78RDT","B6ADOF78V ","B6ADOF78WVS","B6ADOF79A ","B6ADOF79ADD","B6ADOF79D ","B6ADOF79HDS", & + "B6ADOF79RDT","B6ADOF79V ","B6ADOF79WVS","B6ADOF7A ","B6ADOF7ADD ","B6ADOF7D ","B6ADOF7HDS ", & + "B6ADOF7RDT ","B6ADOF7V ","B6ADOF7WVS ","B6ADOF80A ","B6ADOF80ADD","B6ADOF80D ","B6ADOF80HDS", & + "B6ADOF80RDT","B6ADOF80V ","B6ADOF80WVS","B6ADOF81A ","B6ADOF81ADD","B6ADOF81D ","B6ADOF81HDS", & + "B6ADOF81RDT","B6ADOF81V ","B6ADOF81WVS","B6ADOF82A ","B6ADOF82ADD","B6ADOF82D ","B6ADOF82HDS", & + "B6ADOF82RDT","B6ADOF82V ","B6ADOF82WVS","B6ADOF83A ","B6ADOF83ADD","B6ADOF83D ","B6ADOF83HDS", & + "B6ADOF83RDT","B6ADOF83V ","B6ADOF83WVS","B6ADOF84A ","B6ADOF84ADD","B6ADOF84D ","B6ADOF84HDS", & + "B6ADOF84RDT","B6ADOF84V ","B6ADOF84WVS","B6ADOF85A ","B6ADOF85ADD","B6ADOF85D ","B6ADOF85HDS", & + "B6ADOF85RDT","B6ADOF85V ","B6ADOF85WVS","B6ADOF86A ","B6ADOF86ADD","B6ADOF86D ","B6ADOF86HDS", & + "B6ADOF86RDT","B6ADOF86V ","B6ADOF86WVS","B6ADOF87A ","B6ADOF87ADD","B6ADOF87D ","B6ADOF87HDS", & + "B6ADOF87RDT","B6ADOF87V ","B6ADOF87WVS","B6ADOF88A ","B6ADOF88ADD","B6ADOF88D ","B6ADOF88HDS", & + "B6ADOF88RDT","B6ADOF88V ","B6ADOF88WVS","B6ADOF89A ","B6ADOF89ADD","B6ADOF89D ","B6ADOF89HDS", & + "B6ADOF89RDT","B6ADOF89V ","B6ADOF89WVS","B6ADOF8A ","B6ADOF8ADD ","B6ADOF8D ","B6ADOF8HDS ", & + "B6ADOF8RDT ","B6ADOF8V ","B6ADOF8WVS ","B6ADOF90A ","B6ADOF90ADD","B6ADOF90D ","B6ADOF90HDS", & + "B6ADOF90RDT","B6ADOF90V ","B6ADOF90WVS","B6ADOF91A ","B6ADOF91ADD","B6ADOF91D ","B6ADOF91HDS", & + "B6ADOF91RDT","B6ADOF91V ","B6ADOF91WVS","B6ADOF92A ","B6ADOF92ADD","B6ADOF92D ","B6ADOF92HDS", & + "B6ADOF92RDT","B6ADOF92V ","B6ADOF92WVS","B6ADOF93A ","B6ADOF93ADD","B6ADOF93D ","B6ADOF93HDS", & + "B6ADOF93RDT","B6ADOF93V ","B6ADOF93WVS","B6ADOF94A ","B6ADOF94ADD","B6ADOF94D ","B6ADOF94HDS", & + "B6ADOF94RDT","B6ADOF94V ","B6ADOF94WVS","B6ADOF95A ","B6ADOF95ADD","B6ADOF95D ","B6ADOF95HDS", & + "B6ADOF95RDT","B6ADOF95V ","B6ADOF95WVS","B6ADOF96A ","B6ADOF96ADD","B6ADOF96D ","B6ADOF96HDS", & + "B6ADOF96RDT","B6ADOF96V ","B6ADOF96WVS","B6ADOF97A ","B6ADOF97ADD","B6ADOF97D ","B6ADOF97HDS", & + "B6ADOF97RDT","B6ADOF97V ","B6ADOF97WVS","B6ADOF98A ","B6ADOF98ADD","B6ADOF98D ","B6ADOF98HDS", & + "B6ADOF98RDT","B6ADOF98V ","B6ADOF98WVS","B6ADOF99A ","B6ADOF99ADD","B6ADOF99D ","B6ADOF99HDS", & + "B6ADOF99RDT","B6ADOF99V ","B6ADOF99WVS","B6ADOF9A ","B6ADOF9ADD ","B6ADOF9D ","B6ADOF9HDS ", & + "B6ADOF9RDT ","B6ADOF9V ","B6ADOF9WVS ","B6HDSFXI ","B6HDSFYI ","B6HDSFZI ","B6HDSMXI ", & + "B6HDSMYI ","B6HDSMZI ","B6HEAVE ","B6PITCH ","B6RAXI ","B6RAYI ","B6RAZI ", & + "B6RDTFXI ","B6RDTFYI ","B6RDTFZI ","B6RDTMXI ","B6RDTMYI ","B6RDTMZI ","B6ROLL ", & + "B6RVXI ","B6RVYI ","B6RVZI ","B6SURGE ","B6SWAY ","B6TAXI ","B6TAYI ", & + "B6TAZI ","B6TVXI ","B6TVYI ","B6TVZI ","B6WVSF1XI ","B6WVSF1YI ","B6WVSF1ZI ", & + "B6WVSF2XI ","B6WVSF2YI ","B6WVSF2ZI ","B6WVSFXI ","B6WVSFYI ","B6WVSFZI ","B6WVSM1XI ", & + "B6WVSM1YI ","B6WVSM1ZI ","B6WVSM2XI ","B6WVSM2YI ","B6WVSM2ZI ","B6WVSMXI ","B6WVSMYI ", & + "B6WVSMZI ","B6YAW ","B7ADDFXI ","B7ADDFYI ","B7ADDFZI ","B7ADDMXI ","B7ADDMYI ", & + "B7ADDMZI ","B7ADOF10A ","B7ADOF10ADD","B7ADOF10D ","B7ADOF10HDS","B7ADOF10RDT","B7ADOF10V ", & + "B7ADOF10WVS","B7ADOF11A ","B7ADOF11ADD","B7ADOF11D ","B7ADOF11HDS","B7ADOF11RDT","B7ADOF11V ", & + "B7ADOF11WVS","B7ADOF12A ","B7ADOF12ADD","B7ADOF12D ","B7ADOF12HDS","B7ADOF12RDT","B7ADOF12V ", & + "B7ADOF12WVS","B7ADOF13A ","B7ADOF13ADD","B7ADOF13D ","B7ADOF13HDS","B7ADOF13RDT","B7ADOF13V ", & + "B7ADOF13WVS","B7ADOF14A ","B7ADOF14ADD","B7ADOF14D ","B7ADOF14HDS","B7ADOF14RDT","B7ADOF14V ", & + "B7ADOF14WVS","B7ADOF15A ","B7ADOF15ADD","B7ADOF15D ","B7ADOF15HDS","B7ADOF15RDT","B7ADOF15V ", & + "B7ADOF15WVS","B7ADOF16A ","B7ADOF16ADD","B7ADOF16D ","B7ADOF16HDS","B7ADOF16RDT","B7ADOF16V ", & + "B7ADOF16WVS","B7ADOF17A ","B7ADOF17ADD","B7ADOF17D ","B7ADOF17HDS","B7ADOF17RDT","B7ADOF17V ", & + "B7ADOF17WVS","B7ADOF18A ","B7ADOF18ADD","B7ADOF18D ","B7ADOF18HDS","B7ADOF18RDT","B7ADOF18V ", & + "B7ADOF18WVS","B7ADOF19A ","B7ADOF19ADD","B7ADOF19D ","B7ADOF19HDS","B7ADOF19RDT","B7ADOF19V ", & + "B7ADOF19WVS","B7ADOF1A ","B7ADOF1ADD ","B7ADOF1D ","B7ADOF1HDS ","B7ADOF1RDT ","B7ADOF1V ", & + "B7ADOF1WVS ","B7ADOF20A ","B7ADOF20ADD","B7ADOF20D ","B7ADOF20HDS","B7ADOF20RDT","B7ADOF20V ", & + "B7ADOF20WVS","B7ADOF21A ","B7ADOF21ADD","B7ADOF21D ","B7ADOF21HDS","B7ADOF21RDT","B7ADOF21V ", & + "B7ADOF21WVS","B7ADOF22A ","B7ADOF22ADD","B7ADOF22D ","B7ADOF22HDS","B7ADOF22RDT","B7ADOF22V ", & + "B7ADOF22WVS","B7ADOF23A ","B7ADOF23ADD","B7ADOF23D ","B7ADOF23HDS","B7ADOF23RDT","B7ADOF23V ", & + "B7ADOF23WVS","B7ADOF24A ","B7ADOF24ADD","B7ADOF24D ","B7ADOF24HDS","B7ADOF24RDT","B7ADOF24V ", & + "B7ADOF24WVS","B7ADOF25A ","B7ADOF25ADD","B7ADOF25D ","B7ADOF25HDS","B7ADOF25RDT","B7ADOF25V ", & + "B7ADOF25WVS","B7ADOF26A ","B7ADOF26ADD","B7ADOF26D ","B7ADOF26HDS","B7ADOF26RDT","B7ADOF26V ", & + "B7ADOF26WVS","B7ADOF27A ","B7ADOF27ADD","B7ADOF27D ","B7ADOF27HDS","B7ADOF27RDT","B7ADOF27V ", & + "B7ADOF27WVS","B7ADOF28A ","B7ADOF28ADD","B7ADOF28D ","B7ADOF28HDS","B7ADOF28RDT","B7ADOF28V ", & + "B7ADOF28WVS","B7ADOF29A ","B7ADOF29ADD","B7ADOF29D ","B7ADOF29HDS","B7ADOF29RDT","B7ADOF29V ", & + "B7ADOF29WVS","B7ADOF2A ","B7ADOF2ADD ","B7ADOF2D ","B7ADOF2HDS ","B7ADOF2RDT ","B7ADOF2V ", & + "B7ADOF2WVS ","B7ADOF30A ","B7ADOF30ADD","B7ADOF30D ","B7ADOF30HDS","B7ADOF30RDT","B7ADOF30V ", & + "B7ADOF30WVS","B7ADOF31A ","B7ADOF31ADD","B7ADOF31D ","B7ADOF31HDS","B7ADOF31RDT","B7ADOF31V ", & + "B7ADOF31WVS","B7ADOF32A ","B7ADOF32ADD","B7ADOF32D ","B7ADOF32HDS","B7ADOF32RDT","B7ADOF32V ", & + "B7ADOF32WVS","B7ADOF33A ","B7ADOF33ADD","B7ADOF33D ","B7ADOF33HDS","B7ADOF33RDT","B7ADOF33V ", & + "B7ADOF33WVS","B7ADOF34A ","B7ADOF34ADD","B7ADOF34D ","B7ADOF34HDS","B7ADOF34RDT","B7ADOF34V ", & + "B7ADOF34WVS","B7ADOF35A ","B7ADOF35ADD","B7ADOF35D ","B7ADOF35HDS","B7ADOF35RDT","B7ADOF35V ", & + "B7ADOF35WVS","B7ADOF36A ","B7ADOF36ADD","B7ADOF36D ","B7ADOF36HDS","B7ADOF36RDT","B7ADOF36V ", & + "B7ADOF36WVS","B7ADOF37A ","B7ADOF37ADD","B7ADOF37D ","B7ADOF37HDS","B7ADOF37RDT","B7ADOF37V ", & + "B7ADOF37WVS","B7ADOF38A ","B7ADOF38ADD","B7ADOF38D ","B7ADOF38HDS","B7ADOF38RDT","B7ADOF38V ", & + "B7ADOF38WVS","B7ADOF39A ","B7ADOF39ADD","B7ADOF39D ","B7ADOF39HDS","B7ADOF39RDT","B7ADOF39V ", & + "B7ADOF39WVS","B7ADOF3A ","B7ADOF3ADD ","B7ADOF3D ","B7ADOF3HDS ","B7ADOF3RDT ","B7ADOF3V ", & + "B7ADOF3WVS ","B7ADOF40A ","B7ADOF40ADD","B7ADOF40D ","B7ADOF40HDS","B7ADOF40RDT","B7ADOF40V ", & + "B7ADOF40WVS","B7ADOF41A ","B7ADOF41ADD","B7ADOF41D ","B7ADOF41HDS","B7ADOF41RDT","B7ADOF41V ", & + "B7ADOF41WVS","B7ADOF42A ","B7ADOF42ADD","B7ADOF42D ","B7ADOF42HDS","B7ADOF42RDT","B7ADOF42V ", & + "B7ADOF42WVS","B7ADOF43A ","B7ADOF43ADD","B7ADOF43D ","B7ADOF43HDS","B7ADOF43RDT","B7ADOF43V ", & + "B7ADOF43WVS","B7ADOF44A ","B7ADOF44ADD","B7ADOF44D ","B7ADOF44HDS","B7ADOF44RDT","B7ADOF44V ", & + "B7ADOF44WVS","B7ADOF45A ","B7ADOF45ADD","B7ADOF45D ","B7ADOF45HDS","B7ADOF45RDT","B7ADOF45V ", & + "B7ADOF45WVS","B7ADOF46A ","B7ADOF46ADD","B7ADOF46D ","B7ADOF46HDS","B7ADOF46RDT","B7ADOF46V ", & + "B7ADOF46WVS","B7ADOF47A ","B7ADOF47ADD","B7ADOF47D ","B7ADOF47HDS","B7ADOF47RDT","B7ADOF47V ", & + "B7ADOF47WVS","B7ADOF48A ","B7ADOF48ADD","B7ADOF48D ","B7ADOF48HDS","B7ADOF48RDT","B7ADOF48V ", & + "B7ADOF48WVS","B7ADOF49A ","B7ADOF49ADD","B7ADOF49D ","B7ADOF49HDS","B7ADOF49RDT","B7ADOF49V ", & + "B7ADOF49WVS","B7ADOF4A ","B7ADOF4ADD ","B7ADOF4D ","B7ADOF4HDS ","B7ADOF4RDT ","B7ADOF4V ", & + "B7ADOF4WVS ","B7ADOF50A ","B7ADOF50ADD","B7ADOF50D ","B7ADOF50HDS","B7ADOF50RDT","B7ADOF50V ", & + "B7ADOF50WVS","B7ADOF51A ","B7ADOF51ADD","B7ADOF51D ","B7ADOF51HDS","B7ADOF51RDT","B7ADOF51V ", & + "B7ADOF51WVS","B7ADOF52A ","B7ADOF52ADD","B7ADOF52D ","B7ADOF52HDS","B7ADOF52RDT","B7ADOF52V ", & + "B7ADOF52WVS","B7ADOF53A ","B7ADOF53ADD","B7ADOF53D ","B7ADOF53HDS","B7ADOF53RDT","B7ADOF53V ", & + "B7ADOF53WVS","B7ADOF54A ","B7ADOF54ADD","B7ADOF54D ","B7ADOF54HDS","B7ADOF54RDT","B7ADOF54V ", & + "B7ADOF54WVS","B7ADOF55A ","B7ADOF55ADD","B7ADOF55D ","B7ADOF55HDS","B7ADOF55RDT","B7ADOF55V ", & + "B7ADOF55WVS","B7ADOF56A ","B7ADOF56ADD","B7ADOF56D ","B7ADOF56HDS","B7ADOF56RDT","B7ADOF56V ", & + "B7ADOF56WVS","B7ADOF57A ","B7ADOF57ADD","B7ADOF57D ","B7ADOF57HDS","B7ADOF57RDT","B7ADOF57V ", & + "B7ADOF57WVS","B7ADOF58A ","B7ADOF58ADD","B7ADOF58D ","B7ADOF58HDS","B7ADOF58RDT","B7ADOF58V ", & + "B7ADOF58WVS","B7ADOF59A ","B7ADOF59ADD","B7ADOF59D ","B7ADOF59HDS","B7ADOF59RDT","B7ADOF59V ", & + "B7ADOF59WVS","B7ADOF5A ","B7ADOF5ADD ","B7ADOF5D ","B7ADOF5HDS ","B7ADOF5RDT ","B7ADOF5V ", & + "B7ADOF5WVS ","B7ADOF60A ","B7ADOF60ADD","B7ADOF60D ","B7ADOF60HDS","B7ADOF60RDT","B7ADOF60V ", & + "B7ADOF60WVS","B7ADOF61A ","B7ADOF61ADD","B7ADOF61D ","B7ADOF61HDS","B7ADOF61RDT","B7ADOF61V ", & + "B7ADOF61WVS","B7ADOF62A ","B7ADOF62ADD","B7ADOF62D ","B7ADOF62HDS","B7ADOF62RDT","B7ADOF62V ", & + "B7ADOF62WVS","B7ADOF63A ","B7ADOF63ADD","B7ADOF63D ","B7ADOF63HDS","B7ADOF63RDT","B7ADOF63V ", & + "B7ADOF63WVS","B7ADOF64A ","B7ADOF64ADD","B7ADOF64D ","B7ADOF64HDS","B7ADOF64RDT","B7ADOF64V ", & + "B7ADOF64WVS","B7ADOF65A ","B7ADOF65ADD","B7ADOF65D ","B7ADOF65HDS","B7ADOF65RDT","B7ADOF65V ", & + "B7ADOF65WVS","B7ADOF66A ","B7ADOF66ADD","B7ADOF66D ","B7ADOF66HDS","B7ADOF66RDT","B7ADOF66V ", & + "B7ADOF66WVS","B7ADOF67A ","B7ADOF67ADD","B7ADOF67D ","B7ADOF67HDS","B7ADOF67RDT","B7ADOF67V ", & + "B7ADOF67WVS","B7ADOF68A ","B7ADOF68ADD","B7ADOF68D ","B7ADOF68HDS","B7ADOF68RDT","B7ADOF68V ", & + "B7ADOF68WVS","B7ADOF69A ","B7ADOF69ADD","B7ADOF69D ","B7ADOF69HDS","B7ADOF69RDT","B7ADOF69V ", & + "B7ADOF69WVS","B7ADOF6A ","B7ADOF6ADD ","B7ADOF6D ","B7ADOF6HDS ","B7ADOF6RDT ","B7ADOF6V ", & + "B7ADOF6WVS ","B7ADOF70A ","B7ADOF70ADD","B7ADOF70D ","B7ADOF70HDS","B7ADOF70RDT","B7ADOF70V ", & + "B7ADOF70WVS","B7ADOF71A ","B7ADOF71ADD","B7ADOF71D ","B7ADOF71HDS","B7ADOF71RDT","B7ADOF71V ", & + "B7ADOF71WVS","B7ADOF72A ","B7ADOF72ADD","B7ADOF72D ","B7ADOF72HDS","B7ADOF72RDT","B7ADOF72V ", & + "B7ADOF72WVS","B7ADOF73A ","B7ADOF73ADD","B7ADOF73D ","B7ADOF73HDS","B7ADOF73RDT","B7ADOF73V ", & + "B7ADOF73WVS","B7ADOF74A ","B7ADOF74ADD","B7ADOF74D ","B7ADOF74HDS","B7ADOF74RDT","B7ADOF74V ", & + "B7ADOF74WVS","B7ADOF75A ","B7ADOF75ADD","B7ADOF75D ","B7ADOF75HDS","B7ADOF75RDT","B7ADOF75V ", & + "B7ADOF75WVS","B7ADOF76A ","B7ADOF76ADD","B7ADOF76D ","B7ADOF76HDS","B7ADOF76RDT","B7ADOF76V ", & + "B7ADOF76WVS","B7ADOF77A ","B7ADOF77ADD","B7ADOF77D ","B7ADOF77HDS","B7ADOF77RDT","B7ADOF77V ", & + "B7ADOF77WVS","B7ADOF78A ","B7ADOF78ADD","B7ADOF78D ","B7ADOF78HDS","B7ADOF78RDT","B7ADOF78V ", & + "B7ADOF78WVS","B7ADOF79A ","B7ADOF79ADD","B7ADOF79D ","B7ADOF79HDS","B7ADOF79RDT","B7ADOF79V ", & + "B7ADOF79WVS","B7ADOF7A ","B7ADOF7ADD ","B7ADOF7D ","B7ADOF7HDS ","B7ADOF7RDT ","B7ADOF7V ", & + "B7ADOF7WVS ","B7ADOF80A ","B7ADOF80ADD","B7ADOF80D ","B7ADOF80HDS","B7ADOF80RDT","B7ADOF80V ", & + "B7ADOF80WVS","B7ADOF81A ","B7ADOF81ADD","B7ADOF81D ","B7ADOF81HDS","B7ADOF81RDT","B7ADOF81V ", & + "B7ADOF81WVS","B7ADOF82A ","B7ADOF82ADD","B7ADOF82D ","B7ADOF82HDS","B7ADOF82RDT","B7ADOF82V ", & + "B7ADOF82WVS","B7ADOF83A ","B7ADOF83ADD","B7ADOF83D ","B7ADOF83HDS","B7ADOF83RDT","B7ADOF83V ", & + "B7ADOF83WVS","B7ADOF84A ","B7ADOF84ADD","B7ADOF84D ","B7ADOF84HDS","B7ADOF84RDT","B7ADOF84V "/) + CHARACTER(OutStrLenM1), PARAMETER :: ValidParamAry4(1686) = (/ & ! This lists the names of the allowed parameters, which must be sorted alphabetically + "B7ADOF84WVS","B7ADOF85A ","B7ADOF85ADD","B7ADOF85D ","B7ADOF85HDS","B7ADOF85RDT","B7ADOF85V ", & + "B7ADOF85WVS","B7ADOF86A ","B7ADOF86ADD","B7ADOF86D ","B7ADOF86HDS","B7ADOF86RDT","B7ADOF86V ", & + "B7ADOF86WVS","B7ADOF87A ","B7ADOF87ADD","B7ADOF87D ","B7ADOF87HDS","B7ADOF87RDT","B7ADOF87V ", & + "B7ADOF87WVS","B7ADOF88A ","B7ADOF88ADD","B7ADOF88D ","B7ADOF88HDS","B7ADOF88RDT","B7ADOF88V ", & + "B7ADOF88WVS","B7ADOF89A ","B7ADOF89ADD","B7ADOF89D ","B7ADOF89HDS","B7ADOF89RDT","B7ADOF89V ", & + "B7ADOF89WVS","B7ADOF8A ","B7ADOF8ADD ","B7ADOF8D ","B7ADOF8HDS ","B7ADOF8RDT ","B7ADOF8V ", & + "B7ADOF8WVS ","B7ADOF90A ","B7ADOF90ADD","B7ADOF90D ","B7ADOF90HDS","B7ADOF90RDT","B7ADOF90V ", & + "B7ADOF90WVS","B7ADOF91A ","B7ADOF91ADD","B7ADOF91D ","B7ADOF91HDS","B7ADOF91RDT","B7ADOF91V ", & + "B7ADOF91WVS","B7ADOF92A ","B7ADOF92ADD","B7ADOF92D ","B7ADOF92HDS","B7ADOF92RDT","B7ADOF92V ", & + "B7ADOF92WVS","B7ADOF93A ","B7ADOF93ADD","B7ADOF93D ","B7ADOF93HDS","B7ADOF93RDT","B7ADOF93V ", & + "B7ADOF93WVS","B7ADOF94A ","B7ADOF94ADD","B7ADOF94D ","B7ADOF94HDS","B7ADOF94RDT","B7ADOF94V ", & + "B7ADOF94WVS","B7ADOF95A ","B7ADOF95ADD","B7ADOF95D ","B7ADOF95HDS","B7ADOF95RDT","B7ADOF95V ", & + "B7ADOF95WVS","B7ADOF96A ","B7ADOF96ADD","B7ADOF96D ","B7ADOF96HDS","B7ADOF96RDT","B7ADOF96V ", & + "B7ADOF96WVS","B7ADOF97A ","B7ADOF97ADD","B7ADOF97D ","B7ADOF97HDS","B7ADOF97RDT","B7ADOF97V ", & + "B7ADOF97WVS","B7ADOF98A ","B7ADOF98ADD","B7ADOF98D ","B7ADOF98HDS","B7ADOF98RDT","B7ADOF98V ", & + "B7ADOF98WVS","B7ADOF99A ","B7ADOF99ADD","B7ADOF99D ","B7ADOF99HDS","B7ADOF99RDT","B7ADOF99V ", & + "B7ADOF99WVS","B7ADOF9A ","B7ADOF9ADD ","B7ADOF9D ","B7ADOF9HDS ","B7ADOF9RDT ","B7ADOF9V ", & + "B7ADOF9WVS ","B7HDSFXI ","B7HDSFYI ","B7HDSFZI ","B7HDSMXI ","B7HDSMYI ","B7HDSMZI ", & + "B7HEAVE ","B7PITCH ","B7RAXI ","B7RAYI ","B7RAZI ","B7RDTFXI ","B7RDTFYI ", & + "B7RDTFZI ","B7RDTMXI ","B7RDTMYI ","B7RDTMZI ","B7ROLL ","B7RVXI ","B7RVYI ", & + "B7RVZI ","B7SURGE ","B7SWAY ","B7TAXI ","B7TAYI ","B7TAZI ","B7TVXI ", & + "B7TVYI ","B7TVZI ","B7WVSF1XI ","B7WVSF1YI ","B7WVSF1ZI ","B7WVSF2XI ","B7WVSF2YI ", & + "B7WVSF2ZI ","B7WVSFXI ","B7WVSFYI ","B7WVSFZI ","B7WVSM1XI ","B7WVSM1YI ","B7WVSM1ZI ", & + "B7WVSM2XI ","B7WVSM2YI ","B7WVSM2ZI ","B7WVSMXI ","B7WVSMYI ","B7WVSMZI ","B7YAW ", & + "B8ADDFXI ","B8ADDFYI ","B8ADDFZI ","B8ADDMXI ","B8ADDMYI ","B8ADDMZI ","B8ADOF10A ", & + "B8ADOF10ADD","B8ADOF10D ","B8ADOF10HDS","B8ADOF10RDT","B8ADOF10V ","B8ADOF10WVS","B8ADOF11A ", & + "B8ADOF11ADD","B8ADOF11D ","B8ADOF11HDS","B8ADOF11RDT","B8ADOF11V ","B8ADOF11WVS","B8ADOF12A ", & + "B8ADOF12ADD","B8ADOF12D ","B8ADOF12HDS","B8ADOF12RDT","B8ADOF12V ","B8ADOF12WVS","B8ADOF13A ", & + "B8ADOF13ADD","B8ADOF13D ","B8ADOF13HDS","B8ADOF13RDT","B8ADOF13V ","B8ADOF13WVS","B8ADOF14A ", & + "B8ADOF14ADD","B8ADOF14D ","B8ADOF14HDS","B8ADOF14RDT","B8ADOF14V ","B8ADOF14WVS","B8ADOF15A ", & + "B8ADOF15ADD","B8ADOF15D ","B8ADOF15HDS","B8ADOF15RDT","B8ADOF15V ","B8ADOF15WVS","B8ADOF16A ", & + "B8ADOF16ADD","B8ADOF16D ","B8ADOF16HDS","B8ADOF16RDT","B8ADOF16V ","B8ADOF16WVS","B8ADOF17A ", & + "B8ADOF17ADD","B8ADOF17D ","B8ADOF17HDS","B8ADOF17RDT","B8ADOF17V ","B8ADOF17WVS","B8ADOF18A ", & + "B8ADOF18ADD","B8ADOF18D ","B8ADOF18HDS","B8ADOF18RDT","B8ADOF18V ","B8ADOF18WVS","B8ADOF19A ", & + "B8ADOF19ADD","B8ADOF19D ","B8ADOF19HDS","B8ADOF19RDT","B8ADOF19V ","B8ADOF19WVS","B8ADOF1A ", & + "B8ADOF1ADD ","B8ADOF1D ","B8ADOF1HDS ","B8ADOF1RDT ","B8ADOF1V ","B8ADOF1WVS ","B8ADOF20A ", & + "B8ADOF20ADD","B8ADOF20D ","B8ADOF20HDS","B8ADOF20RDT","B8ADOF20V ","B8ADOF20WVS","B8ADOF21A ", & + "B8ADOF21ADD","B8ADOF21D ","B8ADOF21HDS","B8ADOF21RDT","B8ADOF21V ","B8ADOF21WVS","B8ADOF22A ", & + "B8ADOF22ADD","B8ADOF22D ","B8ADOF22HDS","B8ADOF22RDT","B8ADOF22V ","B8ADOF22WVS","B8ADOF23A ", & + "B8ADOF23ADD","B8ADOF23D ","B8ADOF23HDS","B8ADOF23RDT","B8ADOF23V ","B8ADOF23WVS","B8ADOF24A ", & + "B8ADOF24ADD","B8ADOF24D ","B8ADOF24HDS","B8ADOF24RDT","B8ADOF24V ","B8ADOF24WVS","B8ADOF25A ", & + "B8ADOF25ADD","B8ADOF25D ","B8ADOF25HDS","B8ADOF25RDT","B8ADOF25V ","B8ADOF25WVS","B8ADOF26A ", & + "B8ADOF26ADD","B8ADOF26D ","B8ADOF26HDS","B8ADOF26RDT","B8ADOF26V ","B8ADOF26WVS","B8ADOF27A ", & + "B8ADOF27ADD","B8ADOF27D ","B8ADOF27HDS","B8ADOF27RDT","B8ADOF27V ","B8ADOF27WVS","B8ADOF28A ", & + "B8ADOF28ADD","B8ADOF28D ","B8ADOF28HDS","B8ADOF28RDT","B8ADOF28V ","B8ADOF28WVS","B8ADOF29A ", & + "B8ADOF29ADD","B8ADOF29D ","B8ADOF29HDS","B8ADOF29RDT","B8ADOF29V ","B8ADOF29WVS","B8ADOF2A ", & + "B8ADOF2ADD ","B8ADOF2D ","B8ADOF2HDS ","B8ADOF2RDT ","B8ADOF2V ","B8ADOF2WVS ","B8ADOF30A ", & + "B8ADOF30ADD","B8ADOF30D ","B8ADOF30HDS","B8ADOF30RDT","B8ADOF30V ","B8ADOF30WVS","B8ADOF31A ", & + "B8ADOF31ADD","B8ADOF31D ","B8ADOF31HDS","B8ADOF31RDT","B8ADOF31V ","B8ADOF31WVS","B8ADOF32A ", & + "B8ADOF32ADD","B8ADOF32D ","B8ADOF32HDS","B8ADOF32RDT","B8ADOF32V ","B8ADOF32WVS","B8ADOF33A ", & + "B8ADOF33ADD","B8ADOF33D ","B8ADOF33HDS","B8ADOF33RDT","B8ADOF33V ","B8ADOF33WVS","B8ADOF34A ", & + "B8ADOF34ADD","B8ADOF34D ","B8ADOF34HDS","B8ADOF34RDT","B8ADOF34V ","B8ADOF34WVS","B8ADOF35A ", & + "B8ADOF35ADD","B8ADOF35D ","B8ADOF35HDS","B8ADOF35RDT","B8ADOF35V ","B8ADOF35WVS","B8ADOF36A ", & + "B8ADOF36ADD","B8ADOF36D ","B8ADOF36HDS","B8ADOF36RDT","B8ADOF36V ","B8ADOF36WVS","B8ADOF37A ", & + "B8ADOF37ADD","B8ADOF37D ","B8ADOF37HDS","B8ADOF37RDT","B8ADOF37V ","B8ADOF37WVS","B8ADOF38A ", & + "B8ADOF38ADD","B8ADOF38D ","B8ADOF38HDS","B8ADOF38RDT","B8ADOF38V ","B8ADOF38WVS","B8ADOF39A ", & + "B8ADOF39ADD","B8ADOF39D ","B8ADOF39HDS","B8ADOF39RDT","B8ADOF39V ","B8ADOF39WVS","B8ADOF3A ", & + "B8ADOF3ADD ","B8ADOF3D ","B8ADOF3HDS ","B8ADOF3RDT ","B8ADOF3V ","B8ADOF3WVS ","B8ADOF40A ", & + "B8ADOF40ADD","B8ADOF40D ","B8ADOF40HDS","B8ADOF40RDT","B8ADOF40V ","B8ADOF40WVS","B8ADOF41A ", & + "B8ADOF41ADD","B8ADOF41D ","B8ADOF41HDS","B8ADOF41RDT","B8ADOF41V ","B8ADOF41WVS","B8ADOF42A ", & + "B8ADOF42ADD","B8ADOF42D ","B8ADOF42HDS","B8ADOF42RDT","B8ADOF42V ","B8ADOF42WVS","B8ADOF43A ", & + "B8ADOF43ADD","B8ADOF43D ","B8ADOF43HDS","B8ADOF43RDT","B8ADOF43V ","B8ADOF43WVS","B8ADOF44A ", & + "B8ADOF44ADD","B8ADOF44D ","B8ADOF44HDS","B8ADOF44RDT","B8ADOF44V ","B8ADOF44WVS","B8ADOF45A ", & + "B8ADOF45ADD","B8ADOF45D ","B8ADOF45HDS","B8ADOF45RDT","B8ADOF45V ","B8ADOF45WVS","B8ADOF46A ", & + "B8ADOF46ADD","B8ADOF46D ","B8ADOF46HDS","B8ADOF46RDT","B8ADOF46V ","B8ADOF46WVS","B8ADOF47A ", & + "B8ADOF47ADD","B8ADOF47D ","B8ADOF47HDS","B8ADOF47RDT","B8ADOF47V ","B8ADOF47WVS","B8ADOF48A ", & + "B8ADOF48ADD","B8ADOF48D ","B8ADOF48HDS","B8ADOF48RDT","B8ADOF48V ","B8ADOF48WVS","B8ADOF49A ", & + "B8ADOF49ADD","B8ADOF49D ","B8ADOF49HDS","B8ADOF49RDT","B8ADOF49V ","B8ADOF49WVS","B8ADOF4A ", & + "B8ADOF4ADD ","B8ADOF4D ","B8ADOF4HDS ","B8ADOF4RDT ","B8ADOF4V ","B8ADOF4WVS ","B8ADOF50A ", & + "B8ADOF50ADD","B8ADOF50D ","B8ADOF50HDS","B8ADOF50RDT","B8ADOF50V ","B8ADOF50WVS","B8ADOF51A ", & + "B8ADOF51ADD","B8ADOF51D ","B8ADOF51HDS","B8ADOF51RDT","B8ADOF51V ","B8ADOF51WVS","B8ADOF52A ", & + "B8ADOF52ADD","B8ADOF52D ","B8ADOF52HDS","B8ADOF52RDT","B8ADOF52V ","B8ADOF52WVS","B8ADOF53A ", & + "B8ADOF53ADD","B8ADOF53D ","B8ADOF53HDS","B8ADOF53RDT","B8ADOF53V ","B8ADOF53WVS","B8ADOF54A ", & + "B8ADOF54ADD","B8ADOF54D ","B8ADOF54HDS","B8ADOF54RDT","B8ADOF54V ","B8ADOF54WVS","B8ADOF55A ", & + "B8ADOF55ADD","B8ADOF55D ","B8ADOF55HDS","B8ADOF55RDT","B8ADOF55V ","B8ADOF55WVS","B8ADOF56A ", & + "B8ADOF56ADD","B8ADOF56D ","B8ADOF56HDS","B8ADOF56RDT","B8ADOF56V ","B8ADOF56WVS","B8ADOF57A ", & + "B8ADOF57ADD","B8ADOF57D ","B8ADOF57HDS","B8ADOF57RDT","B8ADOF57V ","B8ADOF57WVS","B8ADOF58A ", & + "B8ADOF58ADD","B8ADOF58D ","B8ADOF58HDS","B8ADOF58RDT","B8ADOF58V ","B8ADOF58WVS","B8ADOF59A ", & + "B8ADOF59ADD","B8ADOF59D ","B8ADOF59HDS","B8ADOF59RDT","B8ADOF59V ","B8ADOF59WVS","B8ADOF5A ", & + "B8ADOF5ADD ","B8ADOF5D ","B8ADOF5HDS ","B8ADOF5RDT ","B8ADOF5V ","B8ADOF5WVS ","B8ADOF60A ", & + "B8ADOF60ADD","B8ADOF60D ","B8ADOF60HDS","B8ADOF60RDT","B8ADOF60V ","B8ADOF60WVS","B8ADOF61A ", & + "B8ADOF61ADD","B8ADOF61D ","B8ADOF61HDS","B8ADOF61RDT","B8ADOF61V ","B8ADOF61WVS","B8ADOF62A ", & + "B8ADOF62ADD","B8ADOF62D ","B8ADOF62HDS","B8ADOF62RDT","B8ADOF62V ","B8ADOF62WVS","B8ADOF63A ", & + "B8ADOF63ADD","B8ADOF63D ","B8ADOF63HDS","B8ADOF63RDT","B8ADOF63V ","B8ADOF63WVS","B8ADOF64A ", & + "B8ADOF64ADD","B8ADOF64D ","B8ADOF64HDS","B8ADOF64RDT","B8ADOF64V ","B8ADOF64WVS","B8ADOF65A ", & + "B8ADOF65ADD","B8ADOF65D ","B8ADOF65HDS","B8ADOF65RDT","B8ADOF65V ","B8ADOF65WVS","B8ADOF66A ", & + "B8ADOF66ADD","B8ADOF66D ","B8ADOF66HDS","B8ADOF66RDT","B8ADOF66V ","B8ADOF66WVS","B8ADOF67A ", & + "B8ADOF67ADD","B8ADOF67D ","B8ADOF67HDS","B8ADOF67RDT","B8ADOF67V ","B8ADOF67WVS","B8ADOF68A ", & + "B8ADOF68ADD","B8ADOF68D ","B8ADOF68HDS","B8ADOF68RDT","B8ADOF68V ","B8ADOF68WVS","B8ADOF69A ", & + "B8ADOF69ADD","B8ADOF69D ","B8ADOF69HDS","B8ADOF69RDT","B8ADOF69V ","B8ADOF69WVS","B8ADOF6A ", & + "B8ADOF6ADD ","B8ADOF6D ","B8ADOF6HDS ","B8ADOF6RDT ","B8ADOF6V ","B8ADOF6WVS ","B8ADOF70A ", & + "B8ADOF70ADD","B8ADOF70D ","B8ADOF70HDS","B8ADOF70RDT","B8ADOF70V ","B8ADOF70WVS","B8ADOF71A ", & + "B8ADOF71ADD","B8ADOF71D ","B8ADOF71HDS","B8ADOF71RDT","B8ADOF71V ","B8ADOF71WVS","B8ADOF72A ", & + "B8ADOF72ADD","B8ADOF72D ","B8ADOF72HDS","B8ADOF72RDT","B8ADOF72V ","B8ADOF72WVS","B8ADOF73A ", & + "B8ADOF73ADD","B8ADOF73D ","B8ADOF73HDS","B8ADOF73RDT","B8ADOF73V ","B8ADOF73WVS","B8ADOF74A ", & + "B8ADOF74ADD","B8ADOF74D ","B8ADOF74HDS","B8ADOF74RDT","B8ADOF74V ","B8ADOF74WVS","B8ADOF75A ", & + "B8ADOF75ADD","B8ADOF75D ","B8ADOF75HDS","B8ADOF75RDT","B8ADOF75V ","B8ADOF75WVS","B8ADOF76A ", & + "B8ADOF76ADD","B8ADOF76D ","B8ADOF76HDS","B8ADOF76RDT","B8ADOF76V ","B8ADOF76WVS","B8ADOF77A ", & + "B8ADOF77ADD","B8ADOF77D ","B8ADOF77HDS","B8ADOF77RDT","B8ADOF77V ","B8ADOF77WVS","B8ADOF78A ", & + "B8ADOF78ADD","B8ADOF78D ","B8ADOF78HDS","B8ADOF78RDT","B8ADOF78V ","B8ADOF78WVS","B8ADOF79A ", & + "B8ADOF79ADD","B8ADOF79D ","B8ADOF79HDS","B8ADOF79RDT","B8ADOF79V ","B8ADOF79WVS","B8ADOF7A ", & + "B8ADOF7ADD ","B8ADOF7D ","B8ADOF7HDS ","B8ADOF7RDT ","B8ADOF7V ","B8ADOF7WVS ","B8ADOF80A ", & + "B8ADOF80ADD","B8ADOF80D ","B8ADOF80HDS","B8ADOF80RDT","B8ADOF80V ","B8ADOF80WVS","B8ADOF81A ", & + "B8ADOF81ADD","B8ADOF81D ","B8ADOF81HDS","B8ADOF81RDT","B8ADOF81V ","B8ADOF81WVS","B8ADOF82A ", & + "B8ADOF82ADD","B8ADOF82D ","B8ADOF82HDS","B8ADOF82RDT","B8ADOF82V ","B8ADOF82WVS","B8ADOF83A ", & + "B8ADOF83ADD","B8ADOF83D ","B8ADOF83HDS","B8ADOF83RDT","B8ADOF83V ","B8ADOF83WVS","B8ADOF84A ", & + "B8ADOF84ADD","B8ADOF84D ","B8ADOF84HDS","B8ADOF84RDT","B8ADOF84V ","B8ADOF84WVS","B8ADOF85A ", & + "B8ADOF85ADD","B8ADOF85D ","B8ADOF85HDS","B8ADOF85RDT","B8ADOF85V ","B8ADOF85WVS","B8ADOF86A ", & + "B8ADOF86ADD","B8ADOF86D ","B8ADOF86HDS","B8ADOF86RDT","B8ADOF86V ","B8ADOF86WVS","B8ADOF87A ", & + "B8ADOF87ADD","B8ADOF87D ","B8ADOF87HDS","B8ADOF87RDT","B8ADOF87V ","B8ADOF87WVS","B8ADOF88A ", & + "B8ADOF88ADD","B8ADOF88D ","B8ADOF88HDS","B8ADOF88RDT","B8ADOF88V ","B8ADOF88WVS","B8ADOF89A ", & + "B8ADOF89ADD","B8ADOF89D ","B8ADOF89HDS","B8ADOF89RDT","B8ADOF89V ","B8ADOF89WVS","B8ADOF8A ", & + "B8ADOF8ADD ","B8ADOF8D ","B8ADOF8HDS ","B8ADOF8RDT ","B8ADOF8V ","B8ADOF8WVS ","B8ADOF90A ", & + "B8ADOF90ADD","B8ADOF90D ","B8ADOF90HDS","B8ADOF90RDT","B8ADOF90V ","B8ADOF90WVS","B8ADOF91A ", & + "B8ADOF91ADD","B8ADOF91D ","B8ADOF91HDS","B8ADOF91RDT","B8ADOF91V ","B8ADOF91WVS","B8ADOF92A ", & + "B8ADOF92ADD","B8ADOF92D ","B8ADOF92HDS","B8ADOF92RDT","B8ADOF92V ","B8ADOF92WVS","B8ADOF93A ", & + "B8ADOF93ADD","B8ADOF93D ","B8ADOF93HDS","B8ADOF93RDT","B8ADOF93V ","B8ADOF93WVS","B8ADOF94A ", & + "B8ADOF94ADD","B8ADOF94D ","B8ADOF94HDS","B8ADOF94RDT","B8ADOF94V ","B8ADOF94WVS","B8ADOF95A ", & + "B8ADOF95ADD","B8ADOF95D ","B8ADOF95HDS","B8ADOF95RDT","B8ADOF95V ","B8ADOF95WVS","B8ADOF96A ", & + "B8ADOF96ADD","B8ADOF96D ","B8ADOF96HDS","B8ADOF96RDT","B8ADOF96V ","B8ADOF96WVS","B8ADOF97A ", & + "B8ADOF97ADD","B8ADOF97D ","B8ADOF97HDS","B8ADOF97RDT","B8ADOF97V ","B8ADOF97WVS","B8ADOF98A ", & + "B8ADOF98ADD","B8ADOF98D ","B8ADOF98HDS","B8ADOF98RDT","B8ADOF98V ","B8ADOF98WVS","B8ADOF99A ", & + "B8ADOF99ADD","B8ADOF99D ","B8ADOF99HDS","B8ADOF99RDT","B8ADOF99V ","B8ADOF99WVS","B8ADOF9A ", & + "B8ADOF9ADD ","B8ADOF9D ","B8ADOF9HDS ","B8ADOF9RDT ","B8ADOF9V ","B8ADOF9WVS ","B8HDSFXI ", & + "B8HDSFYI ","B8HDSFZI ","B8HDSMXI ","B8HDSMYI ","B8HDSMZI ","B8HEAVE ","B8PITCH ", & + "B8RAXI ","B8RAYI ","B8RAZI ","B8RDTFXI ","B8RDTFYI ","B8RDTFZI ","B8RDTMXI ", & + "B8RDTMYI ","B8RDTMZI ","B8ROLL ","B8RVXI ","B8RVYI ","B8RVZI ","B8SURGE ", & + "B8SWAY ","B8TAXI ","B8TAYI ","B8TAZI ","B8TVXI ","B8TVYI ","B8TVZI ", & + "B8WVSF1XI ","B8WVSF1YI ","B8WVSF1ZI ","B8WVSF2XI ","B8WVSF2YI ","B8WVSF2ZI ","B8WVSFXI ", & + "B8WVSFYI ","B8WVSFZI ","B8WVSM1XI ","B8WVSM1YI ","B8WVSM1ZI ","B8WVSM2XI ","B8WVSM2YI ", & + "B8WVSM2ZI ","B8WVSMXI ","B8WVSMYI ","B8WVSMZI ","B8YAW ","B9ADDFXI ","B9ADDFYI ", & + "B9ADDFZI ","B9ADDMXI ","B9ADDMYI ","B9ADDMZI ","B9ADOF10A ","B9ADOF10ADD","B9ADOF10D ", & + "B9ADOF10HDS","B9ADOF10RDT","B9ADOF10V ","B9ADOF10WVS","B9ADOF11A ","B9ADOF11ADD","B9ADOF11D ", & + "B9ADOF11HDS","B9ADOF11RDT","B9ADOF11V ","B9ADOF11WVS","B9ADOF12A ","B9ADOF12ADD","B9ADOF12D ", & + "B9ADOF12HDS","B9ADOF12RDT","B9ADOF12V ","B9ADOF12WVS","B9ADOF13A ","B9ADOF13ADD","B9ADOF13D ", & + "B9ADOF13HDS","B9ADOF13RDT","B9ADOF13V ","B9ADOF13WVS","B9ADOF14A ","B9ADOF14ADD","B9ADOF14D ", & + "B9ADOF14HDS","B9ADOF14RDT","B9ADOF14V ","B9ADOF14WVS","B9ADOF15A ","B9ADOF15ADD","B9ADOF15D ", & + "B9ADOF15HDS","B9ADOF15RDT","B9ADOF15V ","B9ADOF15WVS","B9ADOF16A ","B9ADOF16ADD","B9ADOF16D ", & + "B9ADOF16HDS","B9ADOF16RDT","B9ADOF16V ","B9ADOF16WVS","B9ADOF17A ","B9ADOF17ADD","B9ADOF17D ", & + "B9ADOF17HDS","B9ADOF17RDT","B9ADOF17V ","B9ADOF17WVS","B9ADOF18A ","B9ADOF18ADD","B9ADOF18D ", & + "B9ADOF18HDS","B9ADOF18RDT","B9ADOF18V ","B9ADOF18WVS","B9ADOF19A ","B9ADOF19ADD","B9ADOF19D ", & + "B9ADOF19HDS","B9ADOF19RDT","B9ADOF19V ","B9ADOF19WVS","B9ADOF1A ","B9ADOF1ADD ","B9ADOF1D ", & + "B9ADOF1HDS ","B9ADOF1RDT ","B9ADOF1V ","B9ADOF1WVS ","B9ADOF20A ","B9ADOF20ADD","B9ADOF20D ", & + "B9ADOF20HDS","B9ADOF20RDT","B9ADOF20V ","B9ADOF20WVS","B9ADOF21A ","B9ADOF21ADD","B9ADOF21D ", & + "B9ADOF21HDS","B9ADOF21RDT","B9ADOF21V ","B9ADOF21WVS","B9ADOF22A ","B9ADOF22ADD","B9ADOF22D ", & + "B9ADOF22HDS","B9ADOF22RDT","B9ADOF22V ","B9ADOF22WVS","B9ADOF23A ","B9ADOF23ADD","B9ADOF23D ", & + "B9ADOF23HDS","B9ADOF23RDT","B9ADOF23V ","B9ADOF23WVS","B9ADOF24A ","B9ADOF24ADD","B9ADOF24D ", & + "B9ADOF24HDS","B9ADOF24RDT","B9ADOF24V ","B9ADOF24WVS","B9ADOF25A ","B9ADOF25ADD","B9ADOF25D ", & + "B9ADOF25HDS","B9ADOF25RDT","B9ADOF25V ","B9ADOF25WVS","B9ADOF26A ","B9ADOF26ADD","B9ADOF26D ", & + "B9ADOF26HDS","B9ADOF26RDT","B9ADOF26V ","B9ADOF26WVS","B9ADOF27A ","B9ADOF27ADD","B9ADOF27D ", & + "B9ADOF27HDS","B9ADOF27RDT","B9ADOF27V ","B9ADOF27WVS","B9ADOF28A ","B9ADOF28ADD","B9ADOF28D ", & + "B9ADOF28HDS","B9ADOF28RDT","B9ADOF28V ","B9ADOF28WVS","B9ADOF29A ","B9ADOF29ADD","B9ADOF29D ", & + "B9ADOF29HDS","B9ADOF29RDT","B9ADOF29V ","B9ADOF29WVS","B9ADOF2A ","B9ADOF2ADD ","B9ADOF2D ", & + "B9ADOF2HDS ","B9ADOF2RDT ","B9ADOF2V ","B9ADOF2WVS ","B9ADOF30A ","B9ADOF30ADD","B9ADOF30D ", & + "B9ADOF30HDS","B9ADOF30RDT","B9ADOF30V ","B9ADOF30WVS","B9ADOF31A ","B9ADOF31ADD","B9ADOF31D ", & + "B9ADOF31HDS","B9ADOF31RDT","B9ADOF31V ","B9ADOF31WVS","B9ADOF32A ","B9ADOF32ADD","B9ADOF32D ", & + "B9ADOF32HDS","B9ADOF32RDT","B9ADOF32V ","B9ADOF32WVS","B9ADOF33A ","B9ADOF33ADD","B9ADOF33D ", & + "B9ADOF33HDS","B9ADOF33RDT","B9ADOF33V ","B9ADOF33WVS","B9ADOF34A ","B9ADOF34ADD","B9ADOF34D ", & + "B9ADOF34HDS","B9ADOF34RDT","B9ADOF34V ","B9ADOF34WVS","B9ADOF35A ","B9ADOF35ADD","B9ADOF35D ", & + "B9ADOF35HDS","B9ADOF35RDT","B9ADOF35V ","B9ADOF35WVS","B9ADOF36A ","B9ADOF36ADD","B9ADOF36D ", & + "B9ADOF36HDS","B9ADOF36RDT","B9ADOF36V ","B9ADOF36WVS","B9ADOF37A ","B9ADOF37ADD","B9ADOF37D ", & + "B9ADOF37HDS","B9ADOF37RDT","B9ADOF37V ","B9ADOF37WVS","B9ADOF38A ","B9ADOF38ADD","B9ADOF38D ", & + "B9ADOF38HDS","B9ADOF38RDT","B9ADOF38V ","B9ADOF38WVS","B9ADOF39A ","B9ADOF39ADD","B9ADOF39D ", & + "B9ADOF39HDS","B9ADOF39RDT","B9ADOF39V ","B9ADOF39WVS","B9ADOF3A ","B9ADOF3ADD ","B9ADOF3D ", & + "B9ADOF3HDS ","B9ADOF3RDT ","B9ADOF3V ","B9ADOF3WVS ","B9ADOF40A ","B9ADOF40ADD","B9ADOF40D ", & + "B9ADOF40HDS","B9ADOF40RDT","B9ADOF40V ","B9ADOF40WVS","B9ADOF41A ","B9ADOF41ADD","B9ADOF41D ", & + "B9ADOF41HDS","B9ADOF41RDT","B9ADOF41V ","B9ADOF41WVS","B9ADOF42A ","B9ADOF42ADD","B9ADOF42D ", & + "B9ADOF42HDS","B9ADOF42RDT","B9ADOF42V ","B9ADOF42WVS","B9ADOF43A ","B9ADOF43ADD","B9ADOF43D ", & + "B9ADOF43HDS","B9ADOF43RDT","B9ADOF43V ","B9ADOF43WVS","B9ADOF44A ","B9ADOF44ADD","B9ADOF44D ", & + "B9ADOF44HDS","B9ADOF44RDT","B9ADOF44V ","B9ADOF44WVS","B9ADOF45A ","B9ADOF45ADD","B9ADOF45D ", & + "B9ADOF45HDS","B9ADOF45RDT","B9ADOF45V ","B9ADOF45WVS","B9ADOF46A ","B9ADOF46ADD","B9ADOF46D ", & + "B9ADOF46HDS","B9ADOF46RDT","B9ADOF46V ","B9ADOF46WVS","B9ADOF47A ","B9ADOF47ADD","B9ADOF47D ", & + "B9ADOF47HDS","B9ADOF47RDT","B9ADOF47V ","B9ADOF47WVS","B9ADOF48A ","B9ADOF48ADD","B9ADOF48D ", & + "B9ADOF48HDS","B9ADOF48RDT","B9ADOF48V ","B9ADOF48WVS","B9ADOF49A ","B9ADOF49ADD","B9ADOF49D ", & + "B9ADOF49HDS","B9ADOF49RDT","B9ADOF49V ","B9ADOF49WVS","B9ADOF4A ","B9ADOF4ADD ","B9ADOF4D ", & + "B9ADOF4HDS ","B9ADOF4RDT ","B9ADOF4V ","B9ADOF4WVS ","B9ADOF50A ","B9ADOF50ADD","B9ADOF50D ", & + "B9ADOF50HDS","B9ADOF50RDT","B9ADOF50V ","B9ADOF50WVS","B9ADOF51A ","B9ADOF51ADD","B9ADOF51D ", & + "B9ADOF51HDS","B9ADOF51RDT","B9ADOF51V ","B9ADOF51WVS","B9ADOF52A ","B9ADOF52ADD","B9ADOF52D ", & + "B9ADOF52HDS","B9ADOF52RDT","B9ADOF52V ","B9ADOF52WVS","B9ADOF53A ","B9ADOF53ADD","B9ADOF53D ", & + "B9ADOF53HDS","B9ADOF53RDT","B9ADOF53V ","B9ADOF53WVS","B9ADOF54A ","B9ADOF54ADD","B9ADOF54D ", & + "B9ADOF54HDS","B9ADOF54RDT","B9ADOF54V ","B9ADOF54WVS","B9ADOF55A ","B9ADOF55ADD","B9ADOF55D ", & + "B9ADOF55HDS","B9ADOF55RDT","B9ADOF55V ","B9ADOF55WVS","B9ADOF56A ","B9ADOF56ADD","B9ADOF56D ", & + "B9ADOF56HDS","B9ADOF56RDT","B9ADOF56V ","B9ADOF56WVS","B9ADOF57A ","B9ADOF57ADD","B9ADOF57D ", & + "B9ADOF57HDS","B9ADOF57RDT","B9ADOF57V ","B9ADOF57WVS","B9ADOF58A ","B9ADOF58ADD","B9ADOF58D ", & + "B9ADOF58HDS","B9ADOF58RDT","B9ADOF58V ","B9ADOF58WVS","B9ADOF59A ","B9ADOF59ADD","B9ADOF59D ", & + "B9ADOF59HDS","B9ADOF59RDT","B9ADOF59V ","B9ADOF59WVS","B9ADOF5A ","B9ADOF5ADD ","B9ADOF5D ", & + "B9ADOF5HDS ","B9ADOF5RDT ","B9ADOF5V ","B9ADOF5WVS ","B9ADOF60A ","B9ADOF60ADD","B9ADOF60D ", & + "B9ADOF60HDS","B9ADOF60RDT","B9ADOF60V ","B9ADOF60WVS","B9ADOF61A ","B9ADOF61ADD","B9ADOF61D ", & + "B9ADOF61HDS","B9ADOF61RDT","B9ADOF61V ","B9ADOF61WVS","B9ADOF62A ","B9ADOF62ADD","B9ADOF62D ", & + "B9ADOF62HDS","B9ADOF62RDT","B9ADOF62V ","B9ADOF62WVS","B9ADOF63A ","B9ADOF63ADD","B9ADOF63D ", & + "B9ADOF63HDS","B9ADOF63RDT","B9ADOF63V ","B9ADOF63WVS","B9ADOF64A ","B9ADOF64ADD","B9ADOF64D ", & + "B9ADOF64HDS","B9ADOF64RDT","B9ADOF64V ","B9ADOF64WVS","B9ADOF65A ","B9ADOF65ADD","B9ADOF65D ", & + "B9ADOF65HDS","B9ADOF65RDT","B9ADOF65V ","B9ADOF65WVS","B9ADOF66A ","B9ADOF66ADD","B9ADOF66D ", & + "B9ADOF66HDS","B9ADOF66RDT","B9ADOF66V ","B9ADOF66WVS","B9ADOF67A ","B9ADOF67ADD","B9ADOF67D ", & + "B9ADOF67HDS","B9ADOF67RDT","B9ADOF67V ","B9ADOF67WVS","B9ADOF68A ","B9ADOF68ADD","B9ADOF68D ", & + "B9ADOF68HDS","B9ADOF68RDT","B9ADOF68V ","B9ADOF68WVS","B9ADOF69A ","B9ADOF69ADD","B9ADOF69D ", & + "B9ADOF69HDS","B9ADOF69RDT","B9ADOF69V ","B9ADOF69WVS","B9ADOF6A ","B9ADOF6ADD ","B9ADOF6D ", & + "B9ADOF6HDS ","B9ADOF6RDT ","B9ADOF6V ","B9ADOF6WVS ","B9ADOF70A ","B9ADOF70ADD","B9ADOF70D ", & + "B9ADOF70HDS","B9ADOF70RDT","B9ADOF70V ","B9ADOF70WVS","B9ADOF71A ","B9ADOF71ADD","B9ADOF71D ", & + "B9ADOF71HDS","B9ADOF71RDT","B9ADOF71V ","B9ADOF71WVS","B9ADOF72A ","B9ADOF72ADD","B9ADOF72D ", & + "B9ADOF72HDS","B9ADOF72RDT","B9ADOF72V ","B9ADOF72WVS","B9ADOF73A ","B9ADOF73ADD","B9ADOF73D ", & + "B9ADOF73HDS","B9ADOF73RDT","B9ADOF73V ","B9ADOF73WVS","B9ADOF74A ","B9ADOF74ADD","B9ADOF74D ", & + "B9ADOF74HDS","B9ADOF74RDT","B9ADOF74V ","B9ADOF74WVS","B9ADOF75A ","B9ADOF75ADD","B9ADOF75D ", & + "B9ADOF75HDS","B9ADOF75RDT","B9ADOF75V ","B9ADOF75WVS","B9ADOF76A ","B9ADOF76ADD","B9ADOF76D ", & + "B9ADOF76HDS","B9ADOF76RDT","B9ADOF76V ","B9ADOF76WVS","B9ADOF77A ","B9ADOF77ADD","B9ADOF77D ", & + "B9ADOF77HDS","B9ADOF77RDT","B9ADOF77V ","B9ADOF77WVS","B9ADOF78A ","B9ADOF78ADD","B9ADOF78D ", & + "B9ADOF78HDS","B9ADOF78RDT","B9ADOF78V ","B9ADOF78WVS","B9ADOF79A ","B9ADOF79ADD","B9ADOF79D ", & + "B9ADOF79HDS","B9ADOF79RDT","B9ADOF79V ","B9ADOF79WVS","B9ADOF7A ","B9ADOF7ADD ","B9ADOF7D ", & + "B9ADOF7HDS ","B9ADOF7RDT ","B9ADOF7V ","B9ADOF7WVS ","B9ADOF80A ","B9ADOF80ADD","B9ADOF80D ", & + "B9ADOF80HDS","B9ADOF80RDT","B9ADOF80V ","B9ADOF80WVS","B9ADOF81A ","B9ADOF81ADD","B9ADOF81D ", & + "B9ADOF81HDS","B9ADOF81RDT","B9ADOF81V ","B9ADOF81WVS","B9ADOF82A ","B9ADOF82ADD","B9ADOF82D ", & + "B9ADOF82HDS","B9ADOF82RDT","B9ADOF82V ","B9ADOF82WVS","B9ADOF83A ","B9ADOF83ADD","B9ADOF83D ", & + "B9ADOF83HDS","B9ADOF83RDT","B9ADOF83V ","B9ADOF83WVS","B9ADOF84A ","B9ADOF84ADD","B9ADOF84D ", & + "B9ADOF84HDS","B9ADOF84RDT","B9ADOF84V ","B9ADOF84WVS","B9ADOF85A ","B9ADOF85ADD","B9ADOF85D ", & + "B9ADOF85HDS","B9ADOF85RDT","B9ADOF85V ","B9ADOF85WVS","B9ADOF86A ","B9ADOF86ADD","B9ADOF86D ", & + "B9ADOF86HDS","B9ADOF86RDT","B9ADOF86V ","B9ADOF86WVS","B9ADOF87A ","B9ADOF87ADD","B9ADOF87D ", & + "B9ADOF87HDS","B9ADOF87RDT","B9ADOF87V ","B9ADOF87WVS","B9ADOF88A ","B9ADOF88ADD","B9ADOF88D ", & + "B9ADOF88HDS","B9ADOF88RDT","B9ADOF88V ","B9ADOF88WVS","B9ADOF89A ","B9ADOF89ADD","B9ADOF89D ", & + "B9ADOF89HDS","B9ADOF89RDT","B9ADOF89V ","B9ADOF89WVS","B9ADOF8A ","B9ADOF8ADD ","B9ADOF8D ", & + "B9ADOF8HDS ","B9ADOF8RDT ","B9ADOF8V ","B9ADOF8WVS ","B9ADOF90A ","B9ADOF90ADD","B9ADOF90D ", & + "B9ADOF90HDS","B9ADOF90RDT","B9ADOF90V ","B9ADOF90WVS","B9ADOF91A ","B9ADOF91ADD","B9ADOF91D ", & + "B9ADOF91HDS","B9ADOF91RDT","B9ADOF91V ","B9ADOF91WVS","B9ADOF92A ","B9ADOF92ADD","B9ADOF92D ", & + "B9ADOF92HDS","B9ADOF92RDT","B9ADOF92V ","B9ADOF92WVS","B9ADOF93A ","B9ADOF93ADD","B9ADOF93D ", & + "B9ADOF93HDS","B9ADOF93RDT","B9ADOF93V ","B9ADOF93WVS","B9ADOF94A ","B9ADOF94ADD","B9ADOF94D ", & + "B9ADOF94HDS","B9ADOF94RDT","B9ADOF94V ","B9ADOF94WVS","B9ADOF95A ","B9ADOF95ADD","B9ADOF95D ", & + "B9ADOF95HDS","B9ADOF95RDT","B9ADOF95V ","B9ADOF95WVS","B9ADOF96A ","B9ADOF96ADD","B9ADOF96D ", & + "B9ADOF96HDS","B9ADOF96RDT","B9ADOF96V ","B9ADOF96WVS","B9ADOF97A ","B9ADOF97ADD","B9ADOF97D ", & + "B9ADOF97HDS","B9ADOF97RDT","B9ADOF97V ","B9ADOF97WVS","B9ADOF98A ","B9ADOF98ADD","B9ADOF98D ", & + "B9ADOF98HDS","B9ADOF98RDT","B9ADOF98V ","B9ADOF98WVS","B9ADOF99A ","B9ADOF99ADD","B9ADOF99D ", & + "B9ADOF99HDS","B9ADOF99RDT","B9ADOF99V ","B9ADOF99WVS","B9ADOF9A ","B9ADOF9ADD ","B9ADOF9D ", & + "B9ADOF9HDS ","B9ADOF9RDT ","B9ADOF9V ","B9ADOF9WVS ","B9HDSFXI ","B9HDSFYI ","B9HDSFZI ", & + "B9HDSMXI ","B9HDSMYI ","B9HDSMZI ","B9HEAVE ","B9PITCH ","B9RAXI ","B9RAYI ", & + "B9RAZI ","B9RDTFXI ","B9RDTFYI ","B9RDTFZI ","B9RDTMXI ","B9RDTMYI ","B9RDTMZI ", & + "B9ROLL ","B9RVXI ","B9RVYI ","B9RVZI ","B9SURGE ","B9SWAY ","B9TAXI ", & + "B9TAYI ","B9TAZI ","B9TVXI ","B9TVYI ","B9TVZI ","B9WVSF1XI ","B9WVSF1YI ", & + "B9WVSF1ZI ","B9WVSF2XI ","B9WVSF2YI ","B9WVSF2ZI ","B9WVSFXI ","B9WVSFYI ","B9WVSFZI ", & + "B9WVSM1XI ","B9WVSM1YI ","B9WVSM1ZI ","B9WVSM2XI ","B9WVSM2YI ","B9WVSM2ZI ","B9WVSMXI ", & + "B9WVSMYI ","B9WVSMZI ","B9YAW ","HYDROFXI ","HYDROFYI ","HYDROFZI ","HYDROMXI ", & + "HYDROMYI ","HYDROMZI ","PRPHEAVE ","PRPPITCH ","PRPRAXI ","PRPRAYI ","PRPRAZI ", & + "PRPROLL ","PRPRVXI ","PRPRVYI ","PRPRVZI ","PRPSURGE ","PRPSWAY ","PRPTAXI ", & + "PRPTAYI ","PRPTAZI ","PRPTVXI ","PRPTVYI ","PRPTVZI ","PRPYAW "/) + CHARACTER(OutStrLenM1), PARAMETER :: ValidParamAry(6747) = (/ & ! This lists the names of the allowed parameters, which must be sorted alphabetically + ValidParamAry1, ValidParamAry2, ValidParamAry3, ValidParamAry4/) ! ..... Public Subroutines ................................................................................................... PUBLIC :: HDOut_CloseSum @@ -833,7 +8676,7 @@ SUBROUTINE HDOut_MapOutputs( p, y, m_WAMIT, m_WAMIT2, F_Add, F_Waves, F_Hydro, P INTEGER(IntKi), INTENT( OUT ) :: ErrStat ! Error status of the operation CHARACTER(*), INTENT( OUT ) :: ErrMsg ! Error message if ErrStat /= ErrID_None - INTEGER :: i, iBody, startIndx, endIndx + INTEGER :: i, iBody, startIndx, endIndx, NAddDOFOut integer(IntKi) :: ErrStat2 character(ErrMsgLen) :: ErrMsg2 real(ReKi) :: rotdisp(3) @@ -845,8 +8688,6 @@ SUBROUTINE HDOut_MapOutputs( p, y, m_WAMIT, m_WAMIT2, F_Add, F_Waves, F_Hydro, P ! Initialize all unused channels to zero (in case they don't get set, but are still requested) AllOuts = 0.0_ReKi - ! rotdisp = GetRotAngs ( PtfmRefY, PRPMesh%Orientation(:,:,1), ErrStat2, ErrMsg2 ) - ! CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, 'HDOut_MapOutputs' ) rotdisp = EulerExtractZYX(PRPMesh%Orientation(:,:,1)) AllOuts(PRPMotions) = reshape((/real(PRPMesh%TranslationDisp(:,1),ReKi),rotdisp(:)/),(/6/)) AllOuts(PRPVel) = reshape((/PRPMesh%TranslationVel(:,1),PRPMesh%RotationVel(:,1)/),(/6/)) @@ -855,36 +8696,58 @@ SUBROUTINE HDOut_MapOutputs( p, y, m_WAMIT, m_WAMIT2, F_Add, F_Waves, F_Hydro, P ! Need to use individual components of force for output reporting, the y%mesh data has total forces from all contributions if ( p%potMod == 1 ) then if ( p%NBodyMod == 1 .or. p%NBody == 1 ) then - do iBody = 1,min(p%NBody,9) ! Can only output the first 9 bodies for now - startIndx = 6*(iBody-1) + 1 - endIndx = startIndx + 5 + do iBody = 1,min(p%NBody,9) ! Can only output the first 9 bodies for now; rigid-body modes only for now + startIndx = p%BDOFStrt(iBody) + endIndx = p%BDOFStrt(iBody) + 5 AllOuts(FWaves1 (:,iBody)) = m_WAMIT(1)%F_Waves1(startIndx:endIndx) AllOuts(FHdrSttc (:,iBody)) = m_WAMIT(1)%F_HS(startIndx:endIndx) AllOuts(FRdtn (:,iBody)) = m_WAMIT(1)%F_Rdtn(startIndx:endIndx) + m_WAMIT(1)%F_PtfmAM(startIndx:endIndx) - if (p%WAMIT2used) AllOuts(FWaves2 (:,iBody)) = m_WAMIT2(1)%F_Waves2(startIndx:endIndx) ! These are reported by the WAMIT2 module + if (p%WAMIT2used) AllOuts(FWaves2 (:,iBody)) = m_WAMIT2(1)%F_Waves2(6*(iBody-1)+1:6*(iBody-1)+6) ! These are reported by the WAMIT2 module AllOuts(FAdd (:,iBody)) = F_Add(startIndx:endIndx) AllOuts(FWavesTot(:,iBody)) = F_Waves(startIndx:endIndx) AllOuts(WBMotions(:,iBody)) = q(startIndx:endIndx) AllOuts(WBVel (:,iBody)) = qdot(startIndx:endIndx) - AllOuts(WBAcc (:,iBody)) = qdotdot(startIndx:endIndx) + AllOuts(WBAcc (:,iBody)) = qdotdot(startIndx:endIndx) + if ( p%NAddDOF(iBody) > 0_IntKi ) then + NAddDOFOut = min( p%NAddDOF(iBody) , 99_IntKi ) + startIndx = p%BDOFStrt(iBody) + 6 + endIndx = p%BDOFStrt(iBody) + 5 + NAddDOFOut + AllOuts(FADOFWvs(1:NAddDOFOut,iBody)) = m_WAMIT(1)%F_Waves1(startIndx:endIndx) + AllOuts(FADOFHds(1:NAddDOFOut,iBody)) = m_WAMIT(1)%F_HS(startIndx:endIndx) + AllOuts(FADOFRdt(1:NAddDOFOut,iBody)) = m_WAMIT(1)%F_Rdtn(startIndx:endIndx) + m_WAMIT(1)%F_PtfmAM(startIndx:endIndx) + AllOuts(FADOFAdd(1:NAddDOFOut,iBody)) = F_Add(startIndx:endIndx) + AllOuts( ADOFDsp(1:NAddDOFOut,iBody)) = q (startIndx:endIndx) + AllOuts( ADOFVel(1:NAddDOFOut,iBody)) = qdot (startIndx:endIndx) + AllOuts( ADOFAcc(1:NAddDOFOut,iBody)) = qdotdot(startIndx:endIndx) + end if end do else - ! This happens when NBodyMod > 1, in which case, each WAMIT object is for a single body, but there may be multiple bodies in the HydroDyn model, ! so we need to use BodyID to determine the index into the complete HydroDyn list of WAMIT bodies - - do iBody = 1,min(p%NBody,9) ! Can only output the first 9 bodies for now - startIndx = 6*(iBody-1) + 1 - endIndx = startIndx + 5 - AllOuts(FWaves1 (:,iBody)) = m_WAMIT(iBody)%F_Waves1 - AllOuts(FHdrSttc (:,iBody)) = m_WAMIT(iBody)%F_HS - AllOuts(FRdtn (:,iBody)) = m_WAMIT(iBody)%F_Rdtn + m_WAMIT(iBody)%F_PtfmAM + do iBody = 1,min(p%NBody,9) ! Can only output the first 9 bodies for now; rigid-body modes only for now + startIndx = p%BDOFStrt(iBody) + endIndx = p%BDOFStrt(iBody) + 5 + AllOuts(FWaves1 (:,iBody)) = m_WAMIT(iBody)%F_Waves1(1:6) + AllOuts(FHdrSttc (:,iBody)) = m_WAMIT(iBody)%F_HS(1:6) + AllOuts(FRdtn (:,iBody)) = m_WAMIT(iBody)%F_Rdtn(1:6) + m_WAMIT(iBody)%F_PtfmAM(1:6) if (p%WAMIT2used) AllOuts(FWaves2 (:,iBody)) = m_WAMIT2(iBody)%F_Waves2 AllOuts(FAdd (:,iBody)) = F_Add(startIndx:endIndx) AllOuts(FWavesTot(:,iBody)) = F_Waves(startIndx:endIndx) AllOuts(WBMotions(:,iBody)) = q(startIndx:endIndx) AllOuts(WBVel (:,iBody)) = qdot(startIndx:endIndx) - AllOuts(WBAcc (:,iBody)) = qdotdot(startIndx:endIndx) + AllOuts(WBAcc (:,iBody)) = qdotdot(startIndx:endIndx) + if ( p%WAMIT(iBody)%NAddDOF(1) > 0_IntKi ) then + NAddDOFOut = min( p%WAMIT(iBody)%NAddDOF(1) , 99_IntKi ) + AllOuts(FADOFWvs(1:NAddDOFOut,iBody)) = m_WAMIT(iBody)%F_Waves1(7:6+NAddDOFOut) + AllOuts(FADOFHds(1:NAddDOFOut,iBody)) = m_WAMIT(iBody)%F_HS(7:6+NAddDOFOut) + AllOuts(FADOFRdt(1:NAddDOFOut,iBody)) = m_WAMIT(iBody)%F_Rdtn(7:6+NAddDOFOut) + m_WAMIT(iBody)%F_PtfmAM(7:6+NAddDOFOut) + AllOuts(FADOFAdd(1:NAddDOFOut,iBody)) = F_Add(endIndx+1:endIndx+NAddDOFOut) + startIndx = p%BDOFStrt(iBody) + 6 + endIndx = p%BDOFStrt(iBody) + 5 + NAddDOFOut + AllOuts( ADOFDsp(1:NAddDOFOut,iBody)) = q (startIndx:endIndx) + AllOuts( ADOFVel(1:NAddDOFOut,iBody)) = qdot (startIndx:endIndx) + AllOuts( ADOFAcc(1:NAddDOFOut,iBody)) = qdotdot(startIndx:endIndx) + end if end do end if end if @@ -1281,136 +9144,1947 @@ SUBROUTINE SetOutParam(OutList, p, ErrStat, ErrMsg ) LOGICAL :: InvalidOutput(0:MaxOutPts) ! This array determines if the output channel is valid for this configuration CHARACTER(*), PARAMETER :: RoutineName = "SetOutParam" - INTEGER(IntKi), PARAMETER :: ParamIndxAry(510) = (/ & ! This lists the index into AllOuts(:) of the allowed parameters ValidParamAry(:) - B1AddFxi , B1AddFyi , B1AddFzi , B1AddMxi , B1AddMyi , B1AddMzi , B1HdSFxi , B1HdSFyi , & - B1HdSFzi , B1HdSMxi , B1HdSMyi , B1HdSMzi , B1Heave , B1Pitch , B1RAxi , B1RAyi , & - B1RAzi , B1RdtFxi , B1RdtFyi , B1RdtFzi , B1RdtMxi , B1RdtMyi , B1RdtMzi , B1Roll , & - B1RVxi , B1RVyi , B1RVzi , B1Surge , B1Sway , B1TAxi , B1TAyi , B1TAzi , & - B1TVxi , B1TVyi , B1TVzi , B1WvsF1xi , B1WvsF1yi , B1WvsF1zi , B1WvsF2xi , B1WvsF2yi , & - B1WvsF2zi , B1WvsFxi , B1WvsFyi , B1WvsFzi , B1WvsM1xi , B1WvsM1yi , B1WvsM1zi , B1WvsM2xi , & - B1WvsM2yi , B1WvsM2zi , B1WvsMxi , B1WvsMyi , B1WvsMzi , B1Yaw , B2AddFxi , B2AddFyi , & - B2AddFzi , B2AddMxi , B2AddMyi , B2AddMzi , B2HdSFxi , B2HdSFyi , B2HdSFzi , B2HdSMxi , & - B2HdSMyi , B2HdSMzi , B2Heave , B2Pitch , B2RAxi , B2RAyi , B2RAzi , B2RdtFxi , & - B2RdtFyi , B2RdtFzi , B2RdtMxi , B2RdtMyi , B2RdtMzi , B2Roll , B2RVxi , B2RVyi , & - B2RVzi , B2Surge , B2Sway , B2TAxi , B2TAyi , B2TAzi , B2TVxi , B2TVyi , & - B2TVzi , B2WvsF1xi , B2WvsF1yi , B2WvsF1zi , B2WvsF2xi , B2WvsF2yi , B2WvsF2zi , B2WvsFxi , & - B2WvsFyi , B2WvsFzi , B2WvsM1xi , B2WvsM1yi , B2WvsM1zi , B2WvsM2xi , B2WvsM2yi , B2WvsM2zi , & - B2WvsMxi , B2WvsMyi , B2WvsMzi , B2Yaw , B3AddFxi , B3AddFyi , B3AddFzi , B3AddMxi , & - B3AddMyi , B3AddMzi , B3HdSFxi , B3HdSFyi , B3HdSFzi , B3HdSMxi , B3HdSMyi , B3HdSMzi , & - B3Heave , B3Pitch , B3RAxi , B3RAyi , B3RAzi , B3RdtFxi , B3RdtFyi , B3RdtFzi , & - B3RdtMxi , B3RdtMyi , B3RdtMzi , B3Roll , B3RVxi , B3RVyi , B3RVzi , B3Surge , & - B3Sway , B3TAxi , B3TAyi , B3TAzi , B3TVxi , B3TVyi , B3TVzi , B3WvsF1xi , & - B3WvsF1yi , B3WvsF1zi , B3WvsF2xi , B3WvsF2yi , B3WvsF2zi , B3WvsFxi , B3WvsFyi , B3WvsFzi , & - B3WvsM1xi , B3WvsM1yi , B3WvsM1zi , B3WvsM2xi , B3WvsM2yi , B3WvsM2zi , B3WvsMxi , B3WvsMyi , & - B3WvsMzi , B3Yaw , B4AddFxi , B4AddFyi , B4AddFzi , B4AddMxi , B4AddMyi , B4AddMzi , & - B4HdSFxi , B4HdSFyi , B4HdSFzi , B4HdSMxi , B4HdSMyi , B4HdSMzi , B4Heave , B4Pitch , & - B4RAxi , B4RAyi , B4RAzi , B4RdtFxi , B4RdtFyi , B4RdtFzi , B4RdtMxi , B4RdtMyi , & - B4RdtMzi , B4Roll , B4RVxi , B4RVyi , B4RVzi , B4Surge , B4Sway , B4TAxi , & - B4TAyi , B4TAzi , B4TVxi , B4TVyi , B4TVzi , B4WvsF1xi , B4WvsF1yi , B4WvsF1zi , & - B4WvsF2xi , B4WvsF2yi , B4WvsF2zi , B4WvsFxi , B4WvsFyi , B4WvsFzi , B4WvsM1xi , B4WvsM1yi , & - B4WvsM1zi , B4WvsM2xi , B4WvsM2yi , B4WvsM2zi , B4WvsMxi , B4WvsMyi , B4WvsMzi , B4Yaw , & - B5AddFxi , B5AddFyi , B5AddFzi , B5AddMxi , B5AddMyi , B5AddMzi , B5HdSFxi , B5HdSFyi , & - B5HdSFzi , B5HdSMxi , B5HdSMyi , B5HdSMzi , B5Heave , B5Pitch , B5RAxi , B5RAyi , & - B5RAzi , B5RdtFxi , B5RdtFyi , B5RdtFzi , B5RdtMxi , B5RdtMyi , B5RdtMzi , B5Roll , & - B5RVxi , B5RVyi , B5RVzi , B5Surge , B5Sway , B5TAxi , B5TAyi , B5TAzi , & - B5TVxi , B5TVyi , B5TVzi , B5WvsF1xi , B5WvsF1yi , B5WvsF1zi , B5WvsF2xi , B5WvsF2yi , & - B5WvsF2zi , B5WvsFxi , B5WvsFyi , B5WvsFzi , B5WvsM1xi , B5WvsM1yi , B5WvsM1zi , B5WvsM2xi , & - B5WvsM2yi , B5WvsM2zi , B5WvsMxi , B5WvsMyi , B5WvsMzi , B5Yaw , B6AddFxi , B6AddFyi , & - B6AddFzi , B6AddMxi , B6AddMyi , B6AddMzi , B6HdSFxi , B6HdSFyi , B6HdSFzi , B6HdSMxi , & - B6HdSMyi , B6HdSMzi , B6Heave , B6Pitch , B6RAxi , B6RAyi , B6RAzi , B6RdtFxi , & - B6RdtFyi , B6RdtFzi , B6RdtMxi , B6RdtMyi , B6RdtMzi , B6Roll , B6RVxi , B6RVyi , & - B6RVzi , B6Surge , B6Sway , B6TAxi , B6TAyi , B6TAzi , B6TVxi , B6TVyi , & - B6TVzi , B6WvsF1xi , B6WvsF1yi , B6WvsF1zi , B6WvsF2xi , B6WvsF2yi , B6WvsF2zi , B6WvsFxi , & - B6WvsFyi , B6WvsFzi , B6WvsM1xi , B6WvsM1yi , B6WvsM1zi , B6WvsM2xi , B6WvsM2yi , B6WvsM2zi , & - B6WvsMxi , B6WvsMyi , B6WvsMzi , B6Yaw , B7AddFxi , B7AddFyi , B7AddFzi , B7AddMxi , & - B7AddMyi , B7AddMzi , B7HdSFxi , B7HdSFyi , B7HdSFzi , B7HdSMxi , B7HdSMyi , B7HdSMzi , & - B7Heave , B7Pitch , B7RAxi , B7RAyi , B7RAzi , B7RdtFxi , B7RdtFyi , B7RdtFzi , & - B7RdtMxi , B7RdtMyi , B7RdtMzi , B7Roll , B7RVxi , B7RVyi , B7RVzi , B7Surge , & - B7Sway , B7TAxi , B7TAyi , B7TAzi , B7TVxi , B7TVyi , B7TVzi , B7WvsF1xi , & - B7WvsF1yi , B7WvsF1zi , B7WvsF2xi , B7WvsF2yi , B7WvsF2zi , B7WvsFxi , B7WvsFyi , B7WvsFzi , & - B7WvsM1xi , B7WvsM1yi , B7WvsM1zi , B7WvsM2xi , B7WvsM2yi , B7WvsM2zi , B7WvsMxi , B7WvsMyi , & - B7WvsMzi , B7Yaw , B8AddFxi , B8AddFyi , B8AddFzi , B8AddMxi , B8AddMyi , B8AddMzi , & - B8HdSFxi , B8HdSFyi , B8HdSFzi , B8HdSMxi , B8HdSMyi , B8HdSMzi , B8Heave , B8Pitch , & - B8RAxi , B8RAyi , B8RAzi , B8RdtFxi , B8RdtFyi , B8RdtFzi , B8RdtMxi , B8RdtMyi , & - B8RdtMzi , B8Roll , B8RVxi , B8RVyi , B8RVzi , B8Surge , B8Sway , B8TAxi , & - B8TAyi , B8TAzi , B8TVxi , B8TVyi , B8TVzi , B8WvsF1xi , B8WvsF1yi , B8WvsF1zi , & - B8WvsF2xi , B8WvsF2yi , B8WvsF2zi , B8WvsFxi , B8WvsFyi , B8WvsFzi , B8WvsM1xi , B8WvsM1yi , & - B8WvsM1zi , B8WvsM2xi , B8WvsM2yi , B8WvsM2zi , B8WvsMxi , B8WvsMyi , B8WvsMzi , B8Yaw , & - B9AddFxi , B9AddFyi , B9AddFzi , B9AddMxi , B9AddMyi , B9AddMzi , B9HdSFxi , B9HdSFyi , & - B9HdSFzi , B9HdSMxi , B9HdSMyi , B9HdSMzi , B9Heave , B9Pitch , B9RAxi , B9RAyi , & - B9RAzi , B9RdtFxi , B9RdtFyi , B9RdtFzi , B9RdtMxi , B9RdtMyi , B9RdtMzi , B9Roll , & - B9RVxi , B9RVyi , B9RVzi , B9Surge , B9Sway , B9TAxi , B9TAyi , B9TAzi , & - B9TVxi , B9TVyi , B9TVzi , B9WvsF1xi , B9WvsF1yi , B9WvsF1zi , B9WvsF2xi , B9WvsF2yi , & - B9WvsF2zi , B9WvsFxi , B9WvsFyi , B9WvsFzi , B9WvsM1xi , B9WvsM1yi , B9WvsM1zi , B9WvsM2xi , & - B9WvsM2yi , B9WvsM2zi , B9WvsMxi , B9WvsMyi , B9WvsMzi , B9Yaw , HydroFxi , HydroFyi , & - HydroFzi , HydroMxi , HydroMyi , HydroMzi , PRPHeave , PRPPitch , PRPRAxi , PRPRAyi , & - PRPRAzi , PRPRoll , PRPRVxi , PRPRVyi , PRPRVzi , PRPSurge , PRPSway , PRPTAxi , & - PRPTAyi , PRPTAzi , PRPTVxi , PRPTVyi , PRPTVzi , PRPYaw /) - CHARACTER(ChanLen), PARAMETER :: ParamUnitsAry(510) = (/ character(ChanLen) :: & ! This lists the units corresponding to the allowed parameters - "(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(N) ","(N) ", & - "(N) ","(N-m) ","(N-m) ","(N-m) ","(m) ","(rad) ","(rad/s^2)","(rad/s^2)", & - "(rad/s^2)","(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(rad) ", & - "(rad/s) ","(rad/s) ","(rad/s) ","(m) ","(m) ","(m/s^2) ","(m/s^2) ","(m/s^2) ", & - "(m/s) ","(m/s) ","(m/s) ","(N) ","(N) ","(N) ","(N) ","(N) ", & - "(N) ","(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ", & - "(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(rad) ","(N) ","(N) ", & - "(N) ","(N-m) ","(N-m) ","(N-m) ","(N) ","(N) ","(N) ","(N-m) ", & - "(N-m) ","(N-m) ","(m) ","(rad) ","(rad/s^2)","(rad/s^2)","(rad/s^2)","(N) ", & - "(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(rad) ","(rad/s) ","(rad/s) ", & - "(rad/s) ","(m) ","(m) ","(m/s^2) ","(m/s^2) ","(m/s^2) ","(m/s) ","(m/s) ", & - "(m/s) ","(N) ","(N) ","(N) ","(N) ","(N) ","(N) ","(N) ", & - "(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ", & - "(N-m) ","(N-m) ","(N-m) ","(rad) ","(N) ","(N) ","(N) ","(N-m) ", & - "(N-m) ","(N-m) ","(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ", & - "(m) ","(rad) ","(rad/s^2)","(rad/s^2)","(rad/s^2)","(N) ","(N) ","(N) ", & - "(N-m) ","(N-m) ","(N-m) ","(rad) ","(rad/s) ","(rad/s) ","(rad/s) ","(m) ", & - "(m) ","(m/s^2) ","(m/s^2) ","(m/s^2) ","(m/s) ","(m/s) ","(m/s) ","(N) ", & - "(N) ","(N) ","(N) ","(N) ","(N) ","(N) ","(N) ","(N) ", & - "(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ", & - "(N-m) ","(rad) ","(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ", & - "(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(m) ","(rad) ", & - "(rad/s^2)","(rad/s^2)","(rad/s^2)","(N) ","(N) ","(N) ","(N-m) ","(N-m) ", & - "(N-m) ","(rad) ","(rad/s) ","(rad/s) ","(rad/s) ","(m) ","(m) ","(m/s^2) ", & - "(m/s^2) ","(m/s^2) ","(m/s) ","(m/s) ","(m/s) ","(N) ","(N) ","(N) ", & - "(N) ","(N) ","(N) ","(N) ","(N) ","(N) ","(N-m) ","(N-m) ", & - "(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(rad) ", & - "(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(N) ","(N) ", & - "(N) ","(N-m) ","(N-m) ","(N-m) ","(m) ","(rad) ","(rad/s^2)","(rad/s^2)", & - "(rad/s^2)","(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(rad) ", & - "(rad/s) ","(rad/s) ","(rad/s) ","(m) ","(m) ","(m/s^2) ","(m/s^2) ","(m/s^2) ", & - "(m/s) ","(m/s) ","(m/s) ","(N) ","(N) ","(N) ","(N) ","(N) ", & - "(N) ","(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ", & - "(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(rad) ","(N) ","(N) ", & - "(N) ","(N-m) ","(N-m) ","(N-m) ","(N) ","(N) ","(N) ","(N-m) ", & - "(N-m) ","(N-m) ","(m) ","(rad) ","(rad/s^2)","(rad/s^2)","(rad/s^2)","(N) ", & - "(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(rad) ","(rad/s) ","(rad/s) ", & - "(rad/s) ","(m) ","(m) ","(m/s^2) ","(m/s^2) ","(m/s^2) ","(m/s) ","(m/s) ", & - "(m/s) ","(N) ","(N) ","(N) ","(N) ","(N) ","(N) ","(N) ", & - "(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ", & - "(N-m) ","(N-m) ","(N-m) ","(rad) ","(N) ","(N) ","(N) ","(N-m) ", & - "(N-m) ","(N-m) ","(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ", & - "(m) ","(rad) ","(rad/s^2)","(rad/s^2)","(rad/s^2)","(N) ","(N) ","(N) ", & - "(N-m) ","(N-m) ","(N-m) ","(rad) ","(rad/s) ","(rad/s) ","(rad/s) ","(m) ", & - "(m) ","(m/s^2) ","(m/s^2) ","(m/s^2) ","(m/s) ","(m/s) ","(m/s) ","(N) ", & - "(N) ","(N) ","(N) ","(N) ","(N) ","(N) ","(N) ","(N) ", & - "(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ", & - "(N-m) ","(rad) ","(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ", & - "(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(m) ","(rad) ", & - "(rad/s^2)","(rad/s^2)","(rad/s^2)","(N) ","(N) ","(N) ","(N-m) ","(N-m) ", & - "(N-m) ","(rad) ","(rad/s) ","(rad/s) ","(rad/s) ","(m) ","(m) ","(m/s^2) ", & - "(m/s^2) ","(m/s^2) ","(m/s) ","(m/s) ","(m/s) ","(N) ","(N) ","(N) ", & - "(N) ","(N) ","(N) ","(N) ","(N) ","(N) ","(N-m) ","(N-m) ", & - "(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(rad) ", & - "(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(N) ","(N) ", & - "(N) ","(N-m) ","(N-m) ","(N-m) ","(m) ","(rad) ","(rad/s^2)","(rad/s^2)", & - "(rad/s^2)","(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(rad) ", & - "(rad/s) ","(rad/s) ","(rad/s) ","(m) ","(m) ","(m/s^2) ","(m/s^2) ","(m/s^2) ", & - "(m/s) ","(m/s) ","(m/s) ","(N) ","(N) ","(N) ","(N) ","(N) ", & - "(N) ","(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ", & - "(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(rad) ","(N) ","(N) ", & - "(N) ","(N-m) ","(N-m) ","(N-m) ","(m) ","(rad) ","(rad/s^2)","(rad/s^2)", & - "(rad/s^2)","(rad) ","(rad/s) ","(rad/s) ","(rad/s) ","(m) ","(m) ","(m/s^2) ", & + INTEGER(IntKi), PARAMETER :: ParamIndxAry1(1687) = (/ & ! This lists the index into AllOuts(:) of the allowed parameters ValidParamAry(:) + B1AddFxi , B1AddFyi , B1AddFzi , B1AddMxi , B1AddMyi , B1AddMzi , B1ADOF10A , & + B1ADOF10Add , B1ADOF10D , B1ADOF10Hds , B1ADOF10Rdt , B1ADOF10V , B1ADOF10Wvs , B1ADOF11A , & + B1ADOF11Add , B1ADOF11D , B1ADOF11Hds , B1ADOF11Rdt , B1ADOF11V , B1ADOF11Wvs , B1ADOF12A , & + B1ADOF12Add , B1ADOF12D , B1ADOF12Hds , B1ADOF12Rdt , B1ADOF12V , B1ADOF12Wvs , B1ADOF13A , & + B1ADOF13Add , B1ADOF13D , B1ADOF13Hds , B1ADOF13Rdt , B1ADOF13V , B1ADOF13Wvs , B1ADOF14A , & + B1ADOF14Add , B1ADOF14D , B1ADOF14Hds , B1ADOF14Rdt , B1ADOF14V , B1ADOF14Wvs , B1ADOF15A , & + B1ADOF15Add , B1ADOF15D , B1ADOF15Hds , B1ADOF15Rdt , B1ADOF15V , B1ADOF15Wvs , B1ADOF16A , & + B1ADOF16Add , B1ADOF16D , B1ADOF16Hds , B1ADOF16Rdt , B1ADOF16V , B1ADOF16Wvs , B1ADOF17A , & + B1ADOF17Add , B1ADOF17D , B1ADOF17Hds , B1ADOF17Rdt , B1ADOF17V , B1ADOF17Wvs , B1ADOF18A , & + B1ADOF18Add , B1ADOF18D , B1ADOF18Hds , B1ADOF18Rdt , B1ADOF18V , B1ADOF18Wvs , B1ADOF19A , & + B1ADOF19Add , B1ADOF19D , B1ADOF19Hds , B1ADOF19Rdt , B1ADOF19V , B1ADOF19Wvs , B1ADOF1A , & + B1ADOF1Add , B1ADOF1D , B1ADOF1Hds , B1ADOF1Rdt , B1ADOF1V , B1ADOF1Wvs , B1ADOF20A , & + B1ADOF20Add , B1ADOF20D , B1ADOF20Hds , B1ADOF20Rdt , B1ADOF20V , B1ADOF20Wvs , B1ADOF21A , & + B1ADOF21Add , B1ADOF21D , B1ADOF21Hds , B1ADOF21Rdt , B1ADOF21V , B1ADOF21Wvs , B1ADOF22A , & + B1ADOF22Add , B1ADOF22D , B1ADOF22Hds , B1ADOF22Rdt , B1ADOF22V , B1ADOF22Wvs , B1ADOF23A , & + B1ADOF23Add , B1ADOF23D , B1ADOF23Hds , B1ADOF23Rdt , B1ADOF23V , B1ADOF23Wvs , B1ADOF24A , & + B1ADOF24Add , B1ADOF24D , B1ADOF24Hds , B1ADOF24Rdt , B1ADOF24V , B1ADOF24Wvs , B1ADOF25A , & + B1ADOF25Add , B1ADOF25D , B1ADOF25Hds , B1ADOF25Rdt , B1ADOF25V , B1ADOF25Wvs , B1ADOF26A , & + B1ADOF26Add , B1ADOF26D , B1ADOF26Hds , B1ADOF26Rdt , B1ADOF26V , B1ADOF26Wvs , B1ADOF27A , & + B1ADOF27Add , B1ADOF27D , B1ADOF27Hds , B1ADOF27Rdt , B1ADOF27V , B1ADOF27Wvs , B1ADOF28A , & + B1ADOF28Add , B1ADOF28D , B1ADOF28Hds , B1ADOF28Rdt , B1ADOF28V , B1ADOF28Wvs , B1ADOF29A , & + B1ADOF29Add , B1ADOF29D , B1ADOF29Hds , B1ADOF29Rdt , B1ADOF29V , B1ADOF29Wvs , B1ADOF2A , & + B1ADOF2Add , B1ADOF2D , B1ADOF2Hds , B1ADOF2Rdt , B1ADOF2V , B1ADOF2Wvs , B1ADOF30A , & + B1ADOF30Add , B1ADOF30D , B1ADOF30Hds , B1ADOF30Rdt , B1ADOF30V , B1ADOF30Wvs , B1ADOF31A , & + B1ADOF31Add , B1ADOF31D , B1ADOF31Hds , B1ADOF31Rdt , B1ADOF31V , B1ADOF31Wvs , B1ADOF32A , & + B1ADOF32Add , B1ADOF32D , B1ADOF32Hds , B1ADOF32Rdt , B1ADOF32V , B1ADOF32Wvs , B1ADOF33A , & + B1ADOF33Add , B1ADOF33D , B1ADOF33Hds , B1ADOF33Rdt , B1ADOF33V , B1ADOF33Wvs , B1ADOF34A , & + B1ADOF34Add , B1ADOF34D , B1ADOF34Hds , B1ADOF34Rdt , B1ADOF34V , B1ADOF34Wvs , B1ADOF35A , & + B1ADOF35Add , B1ADOF35D , B1ADOF35Hds , B1ADOF35Rdt , B1ADOF35V , B1ADOF35Wvs , B1ADOF36A , & + B1ADOF36Add , B1ADOF36D , B1ADOF36Hds , B1ADOF36Rdt , B1ADOF36V , B1ADOF36Wvs , B1ADOF37A , & + B1ADOF37Add , B1ADOF37D , B1ADOF37Hds , B1ADOF37Rdt , B1ADOF37V , B1ADOF37Wvs , B1ADOF38A , & + B1ADOF38Add , B1ADOF38D , B1ADOF38Hds , B1ADOF38Rdt , B1ADOF38V , B1ADOF38Wvs , B1ADOF39A , & + B1ADOF39Add , B1ADOF39D , B1ADOF39Hds , B1ADOF39Rdt , B1ADOF39V , B1ADOF39Wvs , B1ADOF3A , & + B1ADOF3Add , B1ADOF3D , B1ADOF3Hds , B1ADOF3Rdt , B1ADOF3V , B1ADOF3Wvs , B1ADOF40A , & + B1ADOF40Add , B1ADOF40D , B1ADOF40Hds , B1ADOF40Rdt , B1ADOF40V , B1ADOF40Wvs , B1ADOF41A , & + B1ADOF41Add , B1ADOF41D , B1ADOF41Hds , B1ADOF41Rdt , B1ADOF41V , B1ADOF41Wvs , B1ADOF42A , & + B1ADOF42Add , B1ADOF42D , B1ADOF42Hds , B1ADOF42Rdt , B1ADOF42V , B1ADOF42Wvs , B1ADOF43A , & + B1ADOF43Add , B1ADOF43D , B1ADOF43Hds , B1ADOF43Rdt , B1ADOF43V , B1ADOF43Wvs , B1ADOF44A , & + B1ADOF44Add , B1ADOF44D , B1ADOF44Hds , B1ADOF44Rdt , B1ADOF44V , B1ADOF44Wvs , B1ADOF45A , & + B1ADOF45Add , B1ADOF45D , B1ADOF45Hds , B1ADOF45Rdt , B1ADOF45V , B1ADOF45Wvs , B1ADOF46A , & + B1ADOF46Add , B1ADOF46D , B1ADOF46Hds , B1ADOF46Rdt , B1ADOF46V , B1ADOF46Wvs , B1ADOF47A , & + B1ADOF47Add , B1ADOF47D , B1ADOF47Hds , B1ADOF47Rdt , B1ADOF47V , B1ADOF47Wvs , B1ADOF48A , & + B1ADOF48Add , B1ADOF48D , B1ADOF48Hds , B1ADOF48Rdt , B1ADOF48V , B1ADOF48Wvs , B1ADOF49A , & + B1ADOF49Add , B1ADOF49D , B1ADOF49Hds , B1ADOF49Rdt , B1ADOF49V , B1ADOF49Wvs , B1ADOF4A , & + B1ADOF4Add , B1ADOF4D , B1ADOF4Hds , B1ADOF4Rdt , B1ADOF4V , B1ADOF4Wvs , B1ADOF50A , & + B1ADOF50Add , B1ADOF50D , B1ADOF50Hds , B1ADOF50Rdt , B1ADOF50V , B1ADOF50Wvs , B1ADOF51A , & + B1ADOF51Add , B1ADOF51D , B1ADOF51Hds , B1ADOF51Rdt , B1ADOF51V , B1ADOF51Wvs , B1ADOF52A , & + B1ADOF52Add , B1ADOF52D , B1ADOF52Hds , B1ADOF52Rdt , B1ADOF52V , B1ADOF52Wvs , B1ADOF53A , & + B1ADOF53Add , B1ADOF53D , B1ADOF53Hds , B1ADOF53Rdt , B1ADOF53V , B1ADOF53Wvs , B1ADOF54A , & + B1ADOF54Add , B1ADOF54D , B1ADOF54Hds , B1ADOF54Rdt , B1ADOF54V , B1ADOF54Wvs , B1ADOF55A , & + B1ADOF55Add , B1ADOF55D , B1ADOF55Hds , B1ADOF55Rdt , B1ADOF55V , B1ADOF55Wvs , B1ADOF56A , & + B1ADOF56Add , B1ADOF56D , B1ADOF56Hds , B1ADOF56Rdt , B1ADOF56V , B1ADOF56Wvs , B1ADOF57A , & + B1ADOF57Add , B1ADOF57D , B1ADOF57Hds , B1ADOF57Rdt , B1ADOF57V , B1ADOF57Wvs , B1ADOF58A , & + B1ADOF58Add , B1ADOF58D , B1ADOF58Hds , B1ADOF58Rdt , B1ADOF58V , B1ADOF58Wvs , B1ADOF59A , & + B1ADOF59Add , B1ADOF59D , B1ADOF59Hds , B1ADOF59Rdt , B1ADOF59V , B1ADOF59Wvs , B1ADOF5A , & + B1ADOF5Add , B1ADOF5D , B1ADOF5Hds , B1ADOF5Rdt , B1ADOF5V , B1ADOF5Wvs , B1ADOF60A , & + B1ADOF60Add , B1ADOF60D , B1ADOF60Hds , B1ADOF60Rdt , B1ADOF60V , B1ADOF60Wvs , B1ADOF61A , & + B1ADOF61Add , B1ADOF61D , B1ADOF61Hds , B1ADOF61Rdt , B1ADOF61V , B1ADOF61Wvs , B1ADOF62A , & + B1ADOF62Add , B1ADOF62D , B1ADOF62Hds , B1ADOF62Rdt , B1ADOF62V , B1ADOF62Wvs , B1ADOF63A , & + B1ADOF63Add , B1ADOF63D , B1ADOF63Hds , B1ADOF63Rdt , B1ADOF63V , B1ADOF63Wvs , B1ADOF64A , & + B1ADOF64Add , B1ADOF64D , B1ADOF64Hds , B1ADOF64Rdt , B1ADOF64V , B1ADOF64Wvs , B1ADOF65A , & + B1ADOF65Add , B1ADOF65D , B1ADOF65Hds , B1ADOF65Rdt , B1ADOF65V , B1ADOF65Wvs , B1ADOF66A , & + B1ADOF66Add , B1ADOF66D , B1ADOF66Hds , B1ADOF66Rdt , B1ADOF66V , B1ADOF66Wvs , B1ADOF67A , & + B1ADOF67Add , B1ADOF67D , B1ADOF67Hds , B1ADOF67Rdt , B1ADOF67V , B1ADOF67Wvs , B1ADOF68A , & + B1ADOF68Add , B1ADOF68D , B1ADOF68Hds , B1ADOF68Rdt , B1ADOF68V , B1ADOF68Wvs , B1ADOF69A , & + B1ADOF69Add , B1ADOF69D , B1ADOF69Hds , B1ADOF69Rdt , B1ADOF69V , B1ADOF69Wvs , B1ADOF6A , & + B1ADOF6Add , B1ADOF6D , B1ADOF6Hds , B1ADOF6Rdt , B1ADOF6V , B1ADOF6Wvs , B1ADOF70A , & + B1ADOF70Add , B1ADOF70D , B1ADOF70Hds , B1ADOF70Rdt , B1ADOF70V , B1ADOF70Wvs , B1ADOF71A , & + B1ADOF71Add , B1ADOF71D , B1ADOF71Hds , B1ADOF71Rdt , B1ADOF71V , B1ADOF71Wvs , B1ADOF72A , & + B1ADOF72Add , B1ADOF72D , B1ADOF72Hds , B1ADOF72Rdt , B1ADOF72V , B1ADOF72Wvs , B1ADOF73A , & + B1ADOF73Add , B1ADOF73D , B1ADOF73Hds , B1ADOF73Rdt , B1ADOF73V , B1ADOF73Wvs , B1ADOF74A , & + B1ADOF74Add , B1ADOF74D , B1ADOF74Hds , B1ADOF74Rdt , B1ADOF74V , B1ADOF74Wvs , B1ADOF75A , & + B1ADOF75Add , B1ADOF75D , B1ADOF75Hds , B1ADOF75Rdt , B1ADOF75V , B1ADOF75Wvs , B1ADOF76A , & + B1ADOF76Add , B1ADOF76D , B1ADOF76Hds , B1ADOF76Rdt , B1ADOF76V , B1ADOF76Wvs , B1ADOF77A , & + B1ADOF77Add , B1ADOF77D , B1ADOF77Hds , B1ADOF77Rdt , B1ADOF77V , B1ADOF77Wvs , B1ADOF78A , & + B1ADOF78Add , B1ADOF78D , B1ADOF78Hds , B1ADOF78Rdt , B1ADOF78V , B1ADOF78Wvs , B1ADOF79A , & + B1ADOF79Add , B1ADOF79D , B1ADOF79Hds , B1ADOF79Rdt , B1ADOF79V , B1ADOF79Wvs , B1ADOF7A , & + B1ADOF7Add , B1ADOF7D , B1ADOF7Hds , B1ADOF7Rdt , B1ADOF7V , B1ADOF7Wvs , B1ADOF80A , & + B1ADOF80Add , B1ADOF80D , B1ADOF80Hds , B1ADOF80Rdt , B1ADOF80V , B1ADOF80Wvs , B1ADOF81A , & + B1ADOF81Add , B1ADOF81D , B1ADOF81Hds , B1ADOF81Rdt , B1ADOF81V , B1ADOF81Wvs , B1ADOF82A , & + B1ADOF82Add , B1ADOF82D , B1ADOF82Hds , B1ADOF82Rdt , B1ADOF82V , B1ADOF82Wvs , B1ADOF83A , & + B1ADOF83Add , B1ADOF83D , B1ADOF83Hds , B1ADOF83Rdt , B1ADOF83V , B1ADOF83Wvs , B1ADOF84A , & + B1ADOF84Add , B1ADOF84D , B1ADOF84Hds , B1ADOF84Rdt , B1ADOF84V , B1ADOF84Wvs , B1ADOF85A , & + B1ADOF85Add , B1ADOF85D , B1ADOF85Hds , B1ADOF85Rdt , B1ADOF85V , B1ADOF85Wvs , B1ADOF86A , & + B1ADOF86Add , B1ADOF86D , B1ADOF86Hds , B1ADOF86Rdt , B1ADOF86V , B1ADOF86Wvs , B1ADOF87A , & + B1ADOF87Add , B1ADOF87D , B1ADOF87Hds , B1ADOF87Rdt , B1ADOF87V , B1ADOF87Wvs , B1ADOF88A , & + B1ADOF88Add , B1ADOF88D , B1ADOF88Hds , B1ADOF88Rdt , B1ADOF88V , B1ADOF88Wvs , B1ADOF89A , & + B1ADOF89Add , B1ADOF89D , B1ADOF89Hds , B1ADOF89Rdt , B1ADOF89V , B1ADOF89Wvs , B1ADOF8A , & + B1ADOF8Add , B1ADOF8D , B1ADOF8Hds , B1ADOF8Rdt , B1ADOF8V , B1ADOF8Wvs , B1ADOF90A , & + B1ADOF90Add , B1ADOF90D , B1ADOF90Hds , B1ADOF90Rdt , B1ADOF90V , B1ADOF90Wvs , B1ADOF91A , & + B1ADOF91Add , B1ADOF91D , B1ADOF91Hds , B1ADOF91Rdt , B1ADOF91V , B1ADOF91Wvs , B1ADOF92A , & + B1ADOF92Add , B1ADOF92D , B1ADOF92Hds , B1ADOF92Rdt , B1ADOF92V , B1ADOF92Wvs , B1ADOF93A , & + B1ADOF93Add , B1ADOF93D , B1ADOF93Hds , B1ADOF93Rdt , B1ADOF93V , B1ADOF93Wvs , B1ADOF94A , & + B1ADOF94Add , B1ADOF94D , B1ADOF94Hds , B1ADOF94Rdt , B1ADOF94V , B1ADOF94Wvs , B1ADOF95A , & + B1ADOF95Add , B1ADOF95D , B1ADOF95Hds , B1ADOF95Rdt , B1ADOF95V , B1ADOF95Wvs , B1ADOF96A , & + B1ADOF96Add , B1ADOF96D , B1ADOF96Hds , B1ADOF96Rdt , B1ADOF96V , B1ADOF96Wvs , B1ADOF97A , & + B1ADOF97Add , B1ADOF97D , B1ADOF97Hds , B1ADOF97Rdt , B1ADOF97V , B1ADOF97Wvs , B1ADOF98A , & + B1ADOF98Add , B1ADOF98D , B1ADOF98Hds , B1ADOF98Rdt , B1ADOF98V , B1ADOF98Wvs , B1ADOF99A , & + B1ADOF99Add , B1ADOF99D , B1ADOF99Hds , B1ADOF99Rdt , B1ADOF99V , B1ADOF99Wvs , B1ADOF9A , & + B1ADOF9Add , B1ADOF9D , B1ADOF9Hds , B1ADOF9Rdt , B1ADOF9V , B1ADOF9Wvs , B1HdSFxi , & + B1HdSFyi , B1HdSFzi , B1HdSMxi , B1HdSMyi , B1HdSMzi , B1Heave , B1Pitch , & + B1RAxi , B1RAyi , B1RAzi , B1RdtFxi , B1RdtFyi , B1RdtFzi , B1RdtMxi , & + B1RdtMyi , B1RdtMzi , B1Roll , B1RVxi , B1RVyi , B1RVzi , B1Surge , & + B1Sway , B1TAxi , B1TAyi , B1TAzi , B1TVxi , B1TVyi , B1TVzi , & + B1WvsF1xi , B1WvsF1yi , B1WvsF1zi , B1WvsF2xi , B1WvsF2yi , B1WvsF2zi , B1WvsFxi , & + B1WvsFyi , B1WvsFzi , B1WvsM1xi , B1WvsM1yi , B1WvsM1zi , B1WvsM2xi , B1WvsM2yi , & + B1WvsM2zi , B1WvsMxi , B1WvsMyi , B1WvsMzi , B1Yaw , B2AddFxi , B2AddFyi , & + B2AddFzi , B2AddMxi , B2AddMyi , B2AddMzi , B2ADOF10A , B2ADOF10Add , B2ADOF10D , & + B2ADOF10Hds , B2ADOF10Rdt , B2ADOF10V , B2ADOF10Wvs , B2ADOF11A , B2ADOF11Add , B2ADOF11D , & + B2ADOF11Hds , B2ADOF11Rdt , B2ADOF11V , B2ADOF11Wvs , B2ADOF12A , B2ADOF12Add , B2ADOF12D , & + B2ADOF12Hds , B2ADOF12Rdt , B2ADOF12V , B2ADOF12Wvs , B2ADOF13A , B2ADOF13Add , B2ADOF13D , & + B2ADOF13Hds , B2ADOF13Rdt , B2ADOF13V , B2ADOF13Wvs , B2ADOF14A , B2ADOF14Add , B2ADOF14D , & + B2ADOF14Hds , B2ADOF14Rdt , B2ADOF14V , B2ADOF14Wvs , B2ADOF15A , B2ADOF15Add , B2ADOF15D , & + B2ADOF15Hds , B2ADOF15Rdt , B2ADOF15V , B2ADOF15Wvs , B2ADOF16A , B2ADOF16Add , B2ADOF16D , & + B2ADOF16Hds , B2ADOF16Rdt , B2ADOF16V , B2ADOF16Wvs , B2ADOF17A , B2ADOF17Add , B2ADOF17D , & + B2ADOF17Hds , B2ADOF17Rdt , B2ADOF17V , B2ADOF17Wvs , B2ADOF18A , B2ADOF18Add , B2ADOF18D , & + B2ADOF18Hds , B2ADOF18Rdt , B2ADOF18V , B2ADOF18Wvs , B2ADOF19A , B2ADOF19Add , B2ADOF19D , & + B2ADOF19Hds , B2ADOF19Rdt , B2ADOF19V , B2ADOF19Wvs , B2ADOF1A , B2ADOF1Add , B2ADOF1D , & + B2ADOF1Hds , B2ADOF1Rdt , B2ADOF1V , B2ADOF1Wvs , B2ADOF20A , B2ADOF20Add , B2ADOF20D , & + B2ADOF20Hds , B2ADOF20Rdt , B2ADOF20V , B2ADOF20Wvs , B2ADOF21A , B2ADOF21Add , B2ADOF21D , & + B2ADOF21Hds , B2ADOF21Rdt , B2ADOF21V , B2ADOF21Wvs , B2ADOF22A , B2ADOF22Add , B2ADOF22D , & + B2ADOF22Hds , B2ADOF22Rdt , B2ADOF22V , B2ADOF22Wvs , B2ADOF23A , B2ADOF23Add , B2ADOF23D , & + B2ADOF23Hds , B2ADOF23Rdt , B2ADOF23V , B2ADOF23Wvs , B2ADOF24A , B2ADOF24Add , B2ADOF24D , & + B2ADOF24Hds , B2ADOF24Rdt , B2ADOF24V , B2ADOF24Wvs , B2ADOF25A , B2ADOF25Add , B2ADOF25D , & + B2ADOF25Hds , B2ADOF25Rdt , B2ADOF25V , B2ADOF25Wvs , B2ADOF26A , B2ADOF26Add , B2ADOF26D , & + B2ADOF26Hds , B2ADOF26Rdt , B2ADOF26V , B2ADOF26Wvs , B2ADOF27A , B2ADOF27Add , B2ADOF27D , & + B2ADOF27Hds , B2ADOF27Rdt , B2ADOF27V , B2ADOF27Wvs , B2ADOF28A , B2ADOF28Add , B2ADOF28D , & + B2ADOF28Hds , B2ADOF28Rdt , B2ADOF28V , B2ADOF28Wvs , B2ADOF29A , B2ADOF29Add , B2ADOF29D , & + B2ADOF29Hds , B2ADOF29Rdt , B2ADOF29V , B2ADOF29Wvs , B2ADOF2A , B2ADOF2Add , B2ADOF2D , & + B2ADOF2Hds , B2ADOF2Rdt , B2ADOF2V , B2ADOF2Wvs , B2ADOF30A , B2ADOF30Add , B2ADOF30D , & + B2ADOF30Hds , B2ADOF30Rdt , B2ADOF30V , B2ADOF30Wvs , B2ADOF31A , B2ADOF31Add , B2ADOF31D , & + B2ADOF31Hds , B2ADOF31Rdt , B2ADOF31V , B2ADOF31Wvs , B2ADOF32A , B2ADOF32Add , B2ADOF32D , & + B2ADOF32Hds , B2ADOF32Rdt , B2ADOF32V , B2ADOF32Wvs , B2ADOF33A , B2ADOF33Add , B2ADOF33D , & + B2ADOF33Hds , B2ADOF33Rdt , B2ADOF33V , B2ADOF33Wvs , B2ADOF34A , B2ADOF34Add , B2ADOF34D , & + B2ADOF34Hds , B2ADOF34Rdt , B2ADOF34V , B2ADOF34Wvs , B2ADOF35A , B2ADOF35Add , B2ADOF35D , & + B2ADOF35Hds , B2ADOF35Rdt , B2ADOF35V , B2ADOF35Wvs , B2ADOF36A , B2ADOF36Add , B2ADOF36D , & + B2ADOF36Hds , B2ADOF36Rdt , B2ADOF36V , B2ADOF36Wvs , B2ADOF37A , B2ADOF37Add , B2ADOF37D , & + B2ADOF37Hds , B2ADOF37Rdt , B2ADOF37V , B2ADOF37Wvs , B2ADOF38A , B2ADOF38Add , B2ADOF38D , & + B2ADOF38Hds , B2ADOF38Rdt , B2ADOF38V , B2ADOF38Wvs , B2ADOF39A , B2ADOF39Add , B2ADOF39D , & + B2ADOF39Hds , B2ADOF39Rdt , B2ADOF39V , B2ADOF39Wvs , B2ADOF3A , B2ADOF3Add , B2ADOF3D , & + B2ADOF3Hds , B2ADOF3Rdt , B2ADOF3V , B2ADOF3Wvs , B2ADOF40A , B2ADOF40Add , B2ADOF40D , & + B2ADOF40Hds , B2ADOF40Rdt , B2ADOF40V , B2ADOF40Wvs , B2ADOF41A , B2ADOF41Add , B2ADOF41D , & + B2ADOF41Hds , B2ADOF41Rdt , B2ADOF41V , B2ADOF41Wvs , B2ADOF42A , B2ADOF42Add , B2ADOF42D , & + B2ADOF42Hds , B2ADOF42Rdt , B2ADOF42V , B2ADOF42Wvs , B2ADOF43A , B2ADOF43Add , B2ADOF43D , & + B2ADOF43Hds , B2ADOF43Rdt , B2ADOF43V , B2ADOF43Wvs , B2ADOF44A , B2ADOF44Add , B2ADOF44D , & + B2ADOF44Hds , B2ADOF44Rdt , B2ADOF44V , B2ADOF44Wvs , B2ADOF45A , B2ADOF45Add , B2ADOF45D , & + B2ADOF45Hds , B2ADOF45Rdt , B2ADOF45V , B2ADOF45Wvs , B2ADOF46A , B2ADOF46Add , B2ADOF46D , & + B2ADOF46Hds , B2ADOF46Rdt , B2ADOF46V , B2ADOF46Wvs , B2ADOF47A , B2ADOF47Add , B2ADOF47D , & + B2ADOF47Hds , B2ADOF47Rdt , B2ADOF47V , B2ADOF47Wvs , B2ADOF48A , B2ADOF48Add , B2ADOF48D , & + B2ADOF48Hds , B2ADOF48Rdt , B2ADOF48V , B2ADOF48Wvs , B2ADOF49A , B2ADOF49Add , B2ADOF49D , & + B2ADOF49Hds , B2ADOF49Rdt , B2ADOF49V , B2ADOF49Wvs , B2ADOF4A , B2ADOF4Add , B2ADOF4D , & + B2ADOF4Hds , B2ADOF4Rdt , B2ADOF4V , B2ADOF4Wvs , B2ADOF50A , B2ADOF50Add , B2ADOF50D , & + B2ADOF50Hds , B2ADOF50Rdt , B2ADOF50V , B2ADOF50Wvs , B2ADOF51A , B2ADOF51Add , B2ADOF51D , & + B2ADOF51Hds , B2ADOF51Rdt , B2ADOF51V , B2ADOF51Wvs , B2ADOF52A , B2ADOF52Add , B2ADOF52D , & + B2ADOF52Hds , B2ADOF52Rdt , B2ADOF52V , B2ADOF52Wvs , B2ADOF53A , B2ADOF53Add , B2ADOF53D , & + B2ADOF53Hds , B2ADOF53Rdt , B2ADOF53V , B2ADOF53Wvs , B2ADOF54A , B2ADOF54Add , B2ADOF54D , & + B2ADOF54Hds , B2ADOF54Rdt , B2ADOF54V , B2ADOF54Wvs , B2ADOF55A , B2ADOF55Add , B2ADOF55D , & + B2ADOF55Hds , B2ADOF55Rdt , B2ADOF55V , B2ADOF55Wvs , B2ADOF56A , B2ADOF56Add , B2ADOF56D , & + B2ADOF56Hds , B2ADOF56Rdt , B2ADOF56V , B2ADOF56Wvs , B2ADOF57A , B2ADOF57Add , B2ADOF57D , & + B2ADOF57Hds , B2ADOF57Rdt , B2ADOF57V , B2ADOF57Wvs , B2ADOF58A , B2ADOF58Add , B2ADOF58D , & + B2ADOF58Hds , B2ADOF58Rdt , B2ADOF58V , B2ADOF58Wvs , B2ADOF59A , B2ADOF59Add , B2ADOF59D , & + B2ADOF59Hds , B2ADOF59Rdt , B2ADOF59V , B2ADOF59Wvs , B2ADOF5A , B2ADOF5Add , B2ADOF5D , & + B2ADOF5Hds , B2ADOF5Rdt , B2ADOF5V , B2ADOF5Wvs , B2ADOF60A , B2ADOF60Add , B2ADOF60D , & + B2ADOF60Hds , B2ADOF60Rdt , B2ADOF60V , B2ADOF60Wvs , B2ADOF61A , B2ADOF61Add , B2ADOF61D , & + B2ADOF61Hds , B2ADOF61Rdt , B2ADOF61V , B2ADOF61Wvs , B2ADOF62A , B2ADOF62Add , B2ADOF62D , & + B2ADOF62Hds , B2ADOF62Rdt , B2ADOF62V , B2ADOF62Wvs , B2ADOF63A , B2ADOF63Add , B2ADOF63D , & + B2ADOF63Hds , B2ADOF63Rdt , B2ADOF63V , B2ADOF63Wvs , B2ADOF64A , B2ADOF64Add , B2ADOF64D , & + B2ADOF64Hds , B2ADOF64Rdt , B2ADOF64V , B2ADOF64Wvs , B2ADOF65A , B2ADOF65Add , B2ADOF65D , & + B2ADOF65Hds , B2ADOF65Rdt , B2ADOF65V , B2ADOF65Wvs , B2ADOF66A , B2ADOF66Add , B2ADOF66D , & + B2ADOF66Hds , B2ADOF66Rdt , B2ADOF66V , B2ADOF66Wvs , B2ADOF67A , B2ADOF67Add , B2ADOF67D , & + B2ADOF67Hds , B2ADOF67Rdt , B2ADOF67V , B2ADOF67Wvs , B2ADOF68A , B2ADOF68Add , B2ADOF68D , & + B2ADOF68Hds , B2ADOF68Rdt , B2ADOF68V , B2ADOF68Wvs , B2ADOF69A , B2ADOF69Add , B2ADOF69D , & + B2ADOF69Hds , B2ADOF69Rdt , B2ADOF69V , B2ADOF69Wvs , B2ADOF6A , B2ADOF6Add , B2ADOF6D , & + B2ADOF6Hds , B2ADOF6Rdt , B2ADOF6V , B2ADOF6Wvs , B2ADOF70A , B2ADOF70Add , B2ADOF70D , & + B2ADOF70Hds , B2ADOF70Rdt , B2ADOF70V , B2ADOF70Wvs , B2ADOF71A , B2ADOF71Add , B2ADOF71D , & + B2ADOF71Hds , B2ADOF71Rdt , B2ADOF71V , B2ADOF71Wvs , B2ADOF72A , B2ADOF72Add , B2ADOF72D , & + B2ADOF72Hds , B2ADOF72Rdt , B2ADOF72V , B2ADOF72Wvs , B2ADOF73A , B2ADOF73Add , B2ADOF73D , & + B2ADOF73Hds , B2ADOF73Rdt , B2ADOF73V , B2ADOF73Wvs , B2ADOF74A , B2ADOF74Add , B2ADOF74D , & + B2ADOF74Hds , B2ADOF74Rdt , B2ADOF74V , B2ADOF74Wvs , B2ADOF75A , B2ADOF75Add , B2ADOF75D , & + B2ADOF75Hds , B2ADOF75Rdt , B2ADOF75V , B2ADOF75Wvs , B2ADOF76A , B2ADOF76Add , B2ADOF76D , & + B2ADOF76Hds , B2ADOF76Rdt , B2ADOF76V , B2ADOF76Wvs , B2ADOF77A , B2ADOF77Add , B2ADOF77D , & + B2ADOF77Hds , B2ADOF77Rdt , B2ADOF77V , B2ADOF77Wvs , B2ADOF78A , B2ADOF78Add , B2ADOF78D , & + B2ADOF78Hds , B2ADOF78Rdt , B2ADOF78V , B2ADOF78Wvs , B2ADOF79A , B2ADOF79Add , B2ADOF79D , & + B2ADOF79Hds , B2ADOF79Rdt , B2ADOF79V , B2ADOF79Wvs , B2ADOF7A , B2ADOF7Add , B2ADOF7D , & + B2ADOF7Hds , B2ADOF7Rdt , B2ADOF7V , B2ADOF7Wvs , B2ADOF80A , B2ADOF80Add , B2ADOF80D , & + B2ADOF80Hds , B2ADOF80Rdt , B2ADOF80V , B2ADOF80Wvs , B2ADOF81A , B2ADOF81Add , B2ADOF81D , & + B2ADOF81Hds , B2ADOF81Rdt , B2ADOF81V , B2ADOF81Wvs , B2ADOF82A , B2ADOF82Add , B2ADOF82D , & + B2ADOF82Hds , B2ADOF82Rdt , B2ADOF82V , B2ADOF82Wvs , B2ADOF83A , B2ADOF83Add , B2ADOF83D , & + B2ADOF83Hds , B2ADOF83Rdt , B2ADOF83V , B2ADOF83Wvs , B2ADOF84A , B2ADOF84Add , B2ADOF84D , & + B2ADOF84Hds , B2ADOF84Rdt , B2ADOF84V , B2ADOF84Wvs , B2ADOF85A , B2ADOF85Add , B2ADOF85D , & + B2ADOF85Hds , B2ADOF85Rdt , B2ADOF85V , B2ADOF85Wvs , B2ADOF86A , B2ADOF86Add , B2ADOF86D , & + B2ADOF86Hds , B2ADOF86Rdt , B2ADOF86V , B2ADOF86Wvs , B2ADOF87A , B2ADOF87Add , B2ADOF87D , & + B2ADOF87Hds , B2ADOF87Rdt , B2ADOF87V , B2ADOF87Wvs , B2ADOF88A , B2ADOF88Add , B2ADOF88D , & + B2ADOF88Hds , B2ADOF88Rdt , B2ADOF88V , B2ADOF88Wvs , B2ADOF89A , B2ADOF89Add , B2ADOF89D , & + B2ADOF89Hds , B2ADOF89Rdt , B2ADOF89V , B2ADOF89Wvs , B2ADOF8A , B2ADOF8Add , B2ADOF8D , & + B2ADOF8Hds , B2ADOF8Rdt , B2ADOF8V , B2ADOF8Wvs , B2ADOF90A , B2ADOF90Add , B2ADOF90D , & + B2ADOF90Hds , B2ADOF90Rdt , B2ADOF90V , B2ADOF90Wvs , B2ADOF91A , B2ADOF91Add , B2ADOF91D , & + B2ADOF91Hds , B2ADOF91Rdt , B2ADOF91V , B2ADOF91Wvs , B2ADOF92A , B2ADOF92Add , B2ADOF92D , & + B2ADOF92Hds , B2ADOF92Rdt , B2ADOF92V , B2ADOF92Wvs , B2ADOF93A , B2ADOF93Add , B2ADOF93D , & + B2ADOF93Hds , B2ADOF93Rdt , B2ADOF93V , B2ADOF93Wvs , B2ADOF94A , B2ADOF94Add , B2ADOF94D , & + B2ADOF94Hds , B2ADOF94Rdt , B2ADOF94V , B2ADOF94Wvs , B2ADOF95A , B2ADOF95Add , B2ADOF95D , & + B2ADOF95Hds , B2ADOF95Rdt , B2ADOF95V , B2ADOF95Wvs , B2ADOF96A , B2ADOF96Add , B2ADOF96D , & + B2ADOF96Hds , B2ADOF96Rdt , B2ADOF96V , B2ADOF96Wvs , B2ADOF97A , B2ADOF97Add , B2ADOF97D , & + B2ADOF97Hds , B2ADOF97Rdt , B2ADOF97V , B2ADOF97Wvs , B2ADOF98A , B2ADOF98Add , B2ADOF98D , & + B2ADOF98Hds , B2ADOF98Rdt , B2ADOF98V , B2ADOF98Wvs , B2ADOF99A , B2ADOF99Add , B2ADOF99D , & + B2ADOF99Hds , B2ADOF99Rdt , B2ADOF99V , B2ADOF99Wvs , B2ADOF9A , B2ADOF9Add , B2ADOF9D , & + B2ADOF9Hds , B2ADOF9Rdt , B2ADOF9V , B2ADOF9Wvs , B2HdSFxi , B2HdSFyi , B2HdSFzi , & + B2HdSMxi , B2HdSMyi , B2HdSMzi , B2Heave , B2Pitch , B2RAxi , B2RAyi , & + B2RAzi , B2RdtFxi , B2RdtFyi , B2RdtFzi , B2RdtMxi , B2RdtMyi , B2RdtMzi , & + B2Roll , B2RVxi , B2RVyi , B2RVzi , B2Surge , B2Sway , B2TAxi , & + B2TAyi , B2TAzi , B2TVxi , B2TVyi , B2TVzi , B2WvsF1xi , B2WvsF1yi , & + B2WvsF1zi , B2WvsF2xi , B2WvsF2yi , B2WvsF2zi , B2WvsFxi , B2WvsFyi , B2WvsFzi , & + B2WvsM1xi , B2WvsM1yi , B2WvsM1zi , B2WvsM2xi , B2WvsM2yi , B2WvsM2zi , B2WvsMxi , & + B2WvsMyi , B2WvsMzi , B2Yaw , B3AddFxi , B3AddFyi , B3AddFzi , B3AddMxi , & + B3AddMyi , B3AddMzi , B3ADOF10A , B3ADOF10Add , B3ADOF10D , B3ADOF10Hds , B3ADOF10Rdt , & + B3ADOF10V , B3ADOF10Wvs , B3ADOF11A , B3ADOF11Add , B3ADOF11D , B3ADOF11Hds , B3ADOF11Rdt , & + B3ADOF11V , B3ADOF11Wvs , B3ADOF12A , B3ADOF12Add , B3ADOF12D , B3ADOF12Hds , B3ADOF12Rdt , & + B3ADOF12V , B3ADOF12Wvs , B3ADOF13A , B3ADOF13Add , B3ADOF13D , B3ADOF13Hds , B3ADOF13Rdt , & + B3ADOF13V , B3ADOF13Wvs , B3ADOF14A , B3ADOF14Add , B3ADOF14D , B3ADOF14Hds , B3ADOF14Rdt , & + B3ADOF14V , B3ADOF14Wvs , B3ADOF15A , B3ADOF15Add , B3ADOF15D , B3ADOF15Hds , B3ADOF15Rdt , & + B3ADOF15V , B3ADOF15Wvs , B3ADOF16A , B3ADOF16Add , B3ADOF16D , B3ADOF16Hds , B3ADOF16Rdt , & + B3ADOF16V , B3ADOF16Wvs , B3ADOF17A , B3ADOF17Add , B3ADOF17D , B3ADOF17Hds , B3ADOF17Rdt , & + B3ADOF17V , B3ADOF17Wvs , B3ADOF18A , B3ADOF18Add , B3ADOF18D , B3ADOF18Hds , B3ADOF18Rdt , & + B3ADOF18V , B3ADOF18Wvs , B3ADOF19A , B3ADOF19Add , B3ADOF19D , B3ADOF19Hds , B3ADOF19Rdt , & + B3ADOF19V , B3ADOF19Wvs , B3ADOF1A , B3ADOF1Add , B3ADOF1D , B3ADOF1Hds , B3ADOF1Rdt , & + B3ADOF1V , B3ADOF1Wvs , B3ADOF20A , B3ADOF20Add , B3ADOF20D , B3ADOF20Hds , B3ADOF20Rdt , & + B3ADOF20V , B3ADOF20Wvs , B3ADOF21A , B3ADOF21Add , B3ADOF21D , B3ADOF21Hds , B3ADOF21Rdt , & + B3ADOF21V , B3ADOF21Wvs , B3ADOF22A , B3ADOF22Add , B3ADOF22D , B3ADOF22Hds , B3ADOF22Rdt , & + B3ADOF22V , B3ADOF22Wvs , B3ADOF23A , B3ADOF23Add , B3ADOF23D , B3ADOF23Hds , B3ADOF23Rdt , & + B3ADOF23V , B3ADOF23Wvs , B3ADOF24A , B3ADOF24Add , B3ADOF24D , B3ADOF24Hds , B3ADOF24Rdt , & + B3ADOF24V , B3ADOF24Wvs , B3ADOF25A , B3ADOF25Add , B3ADOF25D , B3ADOF25Hds , B3ADOF25Rdt , & + B3ADOF25V , B3ADOF25Wvs , B3ADOF26A , B3ADOF26Add , B3ADOF26D , B3ADOF26Hds , B3ADOF26Rdt , & + B3ADOF26V , B3ADOF26Wvs , B3ADOF27A , B3ADOF27Add , B3ADOF27D , B3ADOF27Hds , B3ADOF27Rdt , & + B3ADOF27V , B3ADOF27Wvs , B3ADOF28A , B3ADOF28Add , B3ADOF28D , B3ADOF28Hds , B3ADOF28Rdt , & + B3ADOF28V , B3ADOF28Wvs , B3ADOF29A , B3ADOF29Add , B3ADOF29D , B3ADOF29Hds , B3ADOF29Rdt , & + B3ADOF29V , B3ADOF29Wvs , B3ADOF2A , B3ADOF2Add , B3ADOF2D , B3ADOF2Hds , B3ADOF2Rdt , & + B3ADOF2V , B3ADOF2Wvs , B3ADOF30A , B3ADOF30Add , B3ADOF30D , B3ADOF30Hds , B3ADOF30Rdt , & + B3ADOF30V , B3ADOF30Wvs , B3ADOF31A , B3ADOF31Add , B3ADOF31D , B3ADOF31Hds , B3ADOF31Rdt , & + B3ADOF31V , B3ADOF31Wvs , B3ADOF32A , B3ADOF32Add , B3ADOF32D , B3ADOF32Hds , B3ADOF32Rdt , & + B3ADOF32V , B3ADOF32Wvs , B3ADOF33A , B3ADOF33Add , B3ADOF33D , B3ADOF33Hds , B3ADOF33Rdt , & + B3ADOF33V , B3ADOF33Wvs , B3ADOF34A , B3ADOF34Add , B3ADOF34D , B3ADOF34Hds , B3ADOF34Rdt /) + INTEGER(IntKi), PARAMETER :: ParamIndxAry2(1687) = (/ & ! This lists the index into AllOuts(:) of the allowed parameters ValidParamAry(:) + B3ADOF34V , B3ADOF34Wvs , B3ADOF35A , B3ADOF35Add , B3ADOF35D , B3ADOF35Hds , B3ADOF35Rdt , & + B3ADOF35V , B3ADOF35Wvs , B3ADOF36A , B3ADOF36Add , B3ADOF36D , B3ADOF36Hds , B3ADOF36Rdt , & + B3ADOF36V , B3ADOF36Wvs , B3ADOF37A , B3ADOF37Add , B3ADOF37D , B3ADOF37Hds , B3ADOF37Rdt , & + B3ADOF37V , B3ADOF37Wvs , B3ADOF38A , B3ADOF38Add , B3ADOF38D , B3ADOF38Hds , B3ADOF38Rdt , & + B3ADOF38V , B3ADOF38Wvs , B3ADOF39A , B3ADOF39Add , B3ADOF39D , B3ADOF39Hds , B3ADOF39Rdt , & + B3ADOF39V , B3ADOF39Wvs , B3ADOF3A , B3ADOF3Add , B3ADOF3D , B3ADOF3Hds , B3ADOF3Rdt , & + B3ADOF3V , B3ADOF3Wvs , B3ADOF40A , B3ADOF40Add , B3ADOF40D , B3ADOF40Hds , B3ADOF40Rdt , & + B3ADOF40V , B3ADOF40Wvs , B3ADOF41A , B3ADOF41Add , B3ADOF41D , B3ADOF41Hds , B3ADOF41Rdt , & + B3ADOF41V , B3ADOF41Wvs , B3ADOF42A , B3ADOF42Add , B3ADOF42D , B3ADOF42Hds , B3ADOF42Rdt , & + B3ADOF42V , B3ADOF42Wvs , B3ADOF43A , B3ADOF43Add , B3ADOF43D , B3ADOF43Hds , B3ADOF43Rdt , & + B3ADOF43V , B3ADOF43Wvs , B3ADOF44A , B3ADOF44Add , B3ADOF44D , B3ADOF44Hds , B3ADOF44Rdt , & + B3ADOF44V , B3ADOF44Wvs , B3ADOF45A , B3ADOF45Add , B3ADOF45D , B3ADOF45Hds , B3ADOF45Rdt , & + B3ADOF45V , B3ADOF45Wvs , B3ADOF46A , B3ADOF46Add , B3ADOF46D , B3ADOF46Hds , B3ADOF46Rdt , & + B3ADOF46V , B3ADOF46Wvs , B3ADOF47A , B3ADOF47Add , B3ADOF47D , B3ADOF47Hds , B3ADOF47Rdt , & + B3ADOF47V , B3ADOF47Wvs , B3ADOF48A , B3ADOF48Add , B3ADOF48D , B3ADOF48Hds , B3ADOF48Rdt , & + B3ADOF48V , B3ADOF48Wvs , B3ADOF49A , B3ADOF49Add , B3ADOF49D , B3ADOF49Hds , B3ADOF49Rdt , & + B3ADOF49V , B3ADOF49Wvs , B3ADOF4A , B3ADOF4Add , B3ADOF4D , B3ADOF4Hds , B3ADOF4Rdt , & + B3ADOF4V , B3ADOF4Wvs , B3ADOF50A , B3ADOF50Add , B3ADOF50D , B3ADOF50Hds , B3ADOF50Rdt , & + B3ADOF50V , B3ADOF50Wvs , B3ADOF51A , B3ADOF51Add , B3ADOF51D , B3ADOF51Hds , B3ADOF51Rdt , & + B3ADOF51V , B3ADOF51Wvs , B3ADOF52A , B3ADOF52Add , B3ADOF52D , B3ADOF52Hds , B3ADOF52Rdt , & + B3ADOF52V , B3ADOF52Wvs , B3ADOF53A , B3ADOF53Add , B3ADOF53D , B3ADOF53Hds , B3ADOF53Rdt , & + B3ADOF53V , B3ADOF53Wvs , B3ADOF54A , B3ADOF54Add , B3ADOF54D , B3ADOF54Hds , B3ADOF54Rdt , & + B3ADOF54V , B3ADOF54Wvs , B3ADOF55A , B3ADOF55Add , B3ADOF55D , B3ADOF55Hds , B3ADOF55Rdt , & + B3ADOF55V , B3ADOF55Wvs , B3ADOF56A , B3ADOF56Add , B3ADOF56D , B3ADOF56Hds , B3ADOF56Rdt , & + B3ADOF56V , B3ADOF56Wvs , B3ADOF57A , B3ADOF57Add , B3ADOF57D , B3ADOF57Hds , B3ADOF57Rdt , & + B3ADOF57V , B3ADOF57Wvs , B3ADOF58A , B3ADOF58Add , B3ADOF58D , B3ADOF58Hds , B3ADOF58Rdt , & + B3ADOF58V , B3ADOF58Wvs , B3ADOF59A , B3ADOF59Add , B3ADOF59D , B3ADOF59Hds , B3ADOF59Rdt , & + B3ADOF59V , B3ADOF59Wvs , B3ADOF5A , B3ADOF5Add , B3ADOF5D , B3ADOF5Hds , B3ADOF5Rdt , & + B3ADOF5V , B3ADOF5Wvs , B3ADOF60A , B3ADOF60Add , B3ADOF60D , B3ADOF60Hds , B3ADOF60Rdt , & + B3ADOF60V , B3ADOF60Wvs , B3ADOF61A , B3ADOF61Add , B3ADOF61D , B3ADOF61Hds , B3ADOF61Rdt , & + B3ADOF61V , B3ADOF61Wvs , B3ADOF62A , B3ADOF62Add , B3ADOF62D , B3ADOF62Hds , B3ADOF62Rdt , & + B3ADOF62V , B3ADOF62Wvs , B3ADOF63A , B3ADOF63Add , B3ADOF63D , B3ADOF63Hds , B3ADOF63Rdt , & + B3ADOF63V , B3ADOF63Wvs , B3ADOF64A , B3ADOF64Add , B3ADOF64D , B3ADOF64Hds , B3ADOF64Rdt , & + B3ADOF64V , B3ADOF64Wvs , B3ADOF65A , B3ADOF65Add , B3ADOF65D , B3ADOF65Hds , B3ADOF65Rdt , & + B3ADOF65V , B3ADOF65Wvs , B3ADOF66A , B3ADOF66Add , B3ADOF66D , B3ADOF66Hds , B3ADOF66Rdt , & + B3ADOF66V , B3ADOF66Wvs , B3ADOF67A , B3ADOF67Add , B3ADOF67D , B3ADOF67Hds , B3ADOF67Rdt , & + B3ADOF67V , B3ADOF67Wvs , B3ADOF68A , B3ADOF68Add , B3ADOF68D , B3ADOF68Hds , B3ADOF68Rdt , & + B3ADOF68V , B3ADOF68Wvs , B3ADOF69A , B3ADOF69Add , B3ADOF69D , B3ADOF69Hds , B3ADOF69Rdt , & + B3ADOF69V , B3ADOF69Wvs , B3ADOF6A , B3ADOF6Add , B3ADOF6D , B3ADOF6Hds , B3ADOF6Rdt , & + B3ADOF6V , B3ADOF6Wvs , B3ADOF70A , B3ADOF70Add , B3ADOF70D , B3ADOF70Hds , B3ADOF70Rdt , & + B3ADOF70V , B3ADOF70Wvs , B3ADOF71A , B3ADOF71Add , B3ADOF71D , B3ADOF71Hds , B3ADOF71Rdt , & + B3ADOF71V , B3ADOF71Wvs , B3ADOF72A , B3ADOF72Add , B3ADOF72D , B3ADOF72Hds , B3ADOF72Rdt , & + B3ADOF72V , B3ADOF72Wvs , B3ADOF73A , B3ADOF73Add , B3ADOF73D , B3ADOF73Hds , B3ADOF73Rdt , & + B3ADOF73V , B3ADOF73Wvs , B3ADOF74A , B3ADOF74Add , B3ADOF74D , B3ADOF74Hds , B3ADOF74Rdt , & + B3ADOF74V , B3ADOF74Wvs , B3ADOF75A , B3ADOF75Add , B3ADOF75D , B3ADOF75Hds , B3ADOF75Rdt , & + B3ADOF75V , B3ADOF75Wvs , B3ADOF76A , B3ADOF76Add , B3ADOF76D , B3ADOF76Hds , B3ADOF76Rdt , & + B3ADOF76V , B3ADOF76Wvs , B3ADOF77A , B3ADOF77Add , B3ADOF77D , B3ADOF77Hds , B3ADOF77Rdt , & + B3ADOF77V , B3ADOF77Wvs , B3ADOF78A , B3ADOF78Add , B3ADOF78D , B3ADOF78Hds , B3ADOF78Rdt , & + B3ADOF78V , B3ADOF78Wvs , B3ADOF79A , B3ADOF79Add , B3ADOF79D , B3ADOF79Hds , B3ADOF79Rdt , & + B3ADOF79V , B3ADOF79Wvs , B3ADOF7A , B3ADOF7Add , B3ADOF7D , B3ADOF7Hds , B3ADOF7Rdt , & + B3ADOF7V , B3ADOF7Wvs , B3ADOF80A , B3ADOF80Add , B3ADOF80D , B3ADOF80Hds , B3ADOF80Rdt , & + B3ADOF80V , B3ADOF80Wvs , B3ADOF81A , B3ADOF81Add , B3ADOF81D , B3ADOF81Hds , B3ADOF81Rdt , & + B3ADOF81V , B3ADOF81Wvs , B3ADOF82A , B3ADOF82Add , B3ADOF82D , B3ADOF82Hds , B3ADOF82Rdt , & + B3ADOF82V , B3ADOF82Wvs , B3ADOF83A , B3ADOF83Add , B3ADOF83D , B3ADOF83Hds , B3ADOF83Rdt , & + B3ADOF83V , B3ADOF83Wvs , B3ADOF84A , B3ADOF84Add , B3ADOF84D , B3ADOF84Hds , B3ADOF84Rdt , & + B3ADOF84V , B3ADOF84Wvs , B3ADOF85A , B3ADOF85Add , B3ADOF85D , B3ADOF85Hds , B3ADOF85Rdt , & + B3ADOF85V , B3ADOF85Wvs , B3ADOF86A , B3ADOF86Add , B3ADOF86D , B3ADOF86Hds , B3ADOF86Rdt , & + B3ADOF86V , B3ADOF86Wvs , B3ADOF87A , B3ADOF87Add , B3ADOF87D , B3ADOF87Hds , B3ADOF87Rdt , & + B3ADOF87V , B3ADOF87Wvs , B3ADOF88A , B3ADOF88Add , B3ADOF88D , B3ADOF88Hds , B3ADOF88Rdt , & + B3ADOF88V , B3ADOF88Wvs , B3ADOF89A , B3ADOF89Add , B3ADOF89D , B3ADOF89Hds , B3ADOF89Rdt , & + B3ADOF89V , B3ADOF89Wvs , B3ADOF8A , B3ADOF8Add , B3ADOF8D , B3ADOF8Hds , B3ADOF8Rdt , & + B3ADOF8V , B3ADOF8Wvs , B3ADOF90A , B3ADOF90Add , B3ADOF90D , B3ADOF90Hds , B3ADOF90Rdt , & + B3ADOF90V , B3ADOF90Wvs , B3ADOF91A , B3ADOF91Add , B3ADOF91D , B3ADOF91Hds , B3ADOF91Rdt , & + B3ADOF91V , B3ADOF91Wvs , B3ADOF92A , B3ADOF92Add , B3ADOF92D , B3ADOF92Hds , B3ADOF92Rdt , & + B3ADOF92V , B3ADOF92Wvs , B3ADOF93A , B3ADOF93Add , B3ADOF93D , B3ADOF93Hds , B3ADOF93Rdt , & + B3ADOF93V , B3ADOF93Wvs , B3ADOF94A , B3ADOF94Add , B3ADOF94D , B3ADOF94Hds , B3ADOF94Rdt , & + B3ADOF94V , B3ADOF94Wvs , B3ADOF95A , B3ADOF95Add , B3ADOF95D , B3ADOF95Hds , B3ADOF95Rdt , & + B3ADOF95V , B3ADOF95Wvs , B3ADOF96A , B3ADOF96Add , B3ADOF96D , B3ADOF96Hds , B3ADOF96Rdt , & + B3ADOF96V , B3ADOF96Wvs , B3ADOF97A , B3ADOF97Add , B3ADOF97D , B3ADOF97Hds , B3ADOF97Rdt , & + B3ADOF97V , B3ADOF97Wvs , B3ADOF98A , B3ADOF98Add , B3ADOF98D , B3ADOF98Hds , B3ADOF98Rdt , & + B3ADOF98V , B3ADOF98Wvs , B3ADOF99A , B3ADOF99Add , B3ADOF99D , B3ADOF99Hds , B3ADOF99Rdt , & + B3ADOF99V , B3ADOF99Wvs , B3ADOF9A , B3ADOF9Add , B3ADOF9D , B3ADOF9Hds , B3ADOF9Rdt , & + B3ADOF9V , B3ADOF9Wvs , B3HdSFxi , B3HdSFyi , B3HdSFzi , B3HdSMxi , B3HdSMyi , & + B3HdSMzi , B3Heave , B3Pitch , B3RAxi , B3RAyi , B3RAzi , B3RdtFxi , & + B3RdtFyi , B3RdtFzi , B3RdtMxi , B3RdtMyi , B3RdtMzi , B3Roll , B3RVxi , & + B3RVyi , B3RVzi , B3Surge , B3Sway , B3TAxi , B3TAyi , B3TAzi , & + B3TVxi , B3TVyi , B3TVzi , B3WvsF1xi , B3WvsF1yi , B3WvsF1zi , B3WvsF2xi , & + B3WvsF2yi , B3WvsF2zi , B3WvsFxi , B3WvsFyi , B3WvsFzi , B3WvsM1xi , B3WvsM1yi , & + B3WvsM1zi , B3WvsM2xi , B3WvsM2yi , B3WvsM2zi , B3WvsMxi , B3WvsMyi , B3WvsMzi , & + B3Yaw , B4AddFxi , B4AddFyi , B4AddFzi , B4AddMxi , B4AddMyi , B4AddMzi , & + B4ADOF10A , B4ADOF10Add , B4ADOF10D , B4ADOF10Hds , B4ADOF10Rdt , B4ADOF10V , B4ADOF10Wvs , & + B4ADOF11A , B4ADOF11Add , B4ADOF11D , B4ADOF11Hds , B4ADOF11Rdt , B4ADOF11V , B4ADOF11Wvs , & + B4ADOF12A , B4ADOF12Add , B4ADOF12D , B4ADOF12Hds , B4ADOF12Rdt , B4ADOF12V , B4ADOF12Wvs , & + B4ADOF13A , B4ADOF13Add , B4ADOF13D , B4ADOF13Hds , B4ADOF13Rdt , B4ADOF13V , B4ADOF13Wvs , & + B4ADOF14A , B4ADOF14Add , B4ADOF14D , B4ADOF14Hds , B4ADOF14Rdt , B4ADOF14V , B4ADOF14Wvs , & + B4ADOF15A , B4ADOF15Add , B4ADOF15D , B4ADOF15Hds , B4ADOF15Rdt , B4ADOF15V , B4ADOF15Wvs , & + B4ADOF16A , B4ADOF16Add , B4ADOF16D , B4ADOF16Hds , B4ADOF16Rdt , B4ADOF16V , B4ADOF16Wvs , & + B4ADOF17A , B4ADOF17Add , B4ADOF17D , B4ADOF17Hds , B4ADOF17Rdt , B4ADOF17V , B4ADOF17Wvs , & + B4ADOF18A , B4ADOF18Add , B4ADOF18D , B4ADOF18Hds , B4ADOF18Rdt , B4ADOF18V , B4ADOF18Wvs , & + B4ADOF19A , B4ADOF19Add , B4ADOF19D , B4ADOF19Hds , B4ADOF19Rdt , B4ADOF19V , B4ADOF19Wvs , & + B4ADOF1A , B4ADOF1Add , B4ADOF1D , B4ADOF1Hds , B4ADOF1Rdt , B4ADOF1V , B4ADOF1Wvs , & + B4ADOF20A , B4ADOF20Add , B4ADOF20D , B4ADOF20Hds , B4ADOF20Rdt , B4ADOF20V , B4ADOF20Wvs , & + B4ADOF21A , B4ADOF21Add , B4ADOF21D , B4ADOF21Hds , B4ADOF21Rdt , B4ADOF21V , B4ADOF21Wvs , & + B4ADOF22A , B4ADOF22Add , B4ADOF22D , B4ADOF22Hds , B4ADOF22Rdt , B4ADOF22V , B4ADOF22Wvs , & + B4ADOF23A , B4ADOF23Add , B4ADOF23D , B4ADOF23Hds , B4ADOF23Rdt , B4ADOF23V , B4ADOF23Wvs , & + B4ADOF24A , B4ADOF24Add , B4ADOF24D , B4ADOF24Hds , B4ADOF24Rdt , B4ADOF24V , B4ADOF24Wvs , & + B4ADOF25A , B4ADOF25Add , B4ADOF25D , B4ADOF25Hds , B4ADOF25Rdt , B4ADOF25V , B4ADOF25Wvs , & + B4ADOF26A , B4ADOF26Add , B4ADOF26D , B4ADOF26Hds , B4ADOF26Rdt , B4ADOF26V , B4ADOF26Wvs , & + B4ADOF27A , B4ADOF27Add , B4ADOF27D , B4ADOF27Hds , B4ADOF27Rdt , B4ADOF27V , B4ADOF27Wvs , & + B4ADOF28A , B4ADOF28Add , B4ADOF28D , B4ADOF28Hds , B4ADOF28Rdt , B4ADOF28V , B4ADOF28Wvs , & + B4ADOF29A , B4ADOF29Add , B4ADOF29D , B4ADOF29Hds , B4ADOF29Rdt , B4ADOF29V , B4ADOF29Wvs , & + B4ADOF2A , B4ADOF2Add , B4ADOF2D , B4ADOF2Hds , B4ADOF2Rdt , B4ADOF2V , B4ADOF2Wvs , & + B4ADOF30A , B4ADOF30Add , B4ADOF30D , B4ADOF30Hds , B4ADOF30Rdt , B4ADOF30V , B4ADOF30Wvs , & + B4ADOF31A , B4ADOF31Add , B4ADOF31D , B4ADOF31Hds , B4ADOF31Rdt , B4ADOF31V , B4ADOF31Wvs , & + B4ADOF32A , B4ADOF32Add , B4ADOF32D , B4ADOF32Hds , B4ADOF32Rdt , B4ADOF32V , B4ADOF32Wvs , & + B4ADOF33A , B4ADOF33Add , B4ADOF33D , B4ADOF33Hds , B4ADOF33Rdt , B4ADOF33V , B4ADOF33Wvs , & + B4ADOF34A , B4ADOF34Add , B4ADOF34D , B4ADOF34Hds , B4ADOF34Rdt , B4ADOF34V , B4ADOF34Wvs , & + B4ADOF35A , B4ADOF35Add , B4ADOF35D , B4ADOF35Hds , B4ADOF35Rdt , B4ADOF35V , B4ADOF35Wvs , & + B4ADOF36A , B4ADOF36Add , B4ADOF36D , B4ADOF36Hds , B4ADOF36Rdt , B4ADOF36V , B4ADOF36Wvs , & + B4ADOF37A , B4ADOF37Add , B4ADOF37D , B4ADOF37Hds , B4ADOF37Rdt , B4ADOF37V , B4ADOF37Wvs , & + B4ADOF38A , B4ADOF38Add , B4ADOF38D , B4ADOF38Hds , B4ADOF38Rdt , B4ADOF38V , B4ADOF38Wvs , & + B4ADOF39A , B4ADOF39Add , B4ADOF39D , B4ADOF39Hds , B4ADOF39Rdt , B4ADOF39V , B4ADOF39Wvs , & + B4ADOF3A , B4ADOF3Add , B4ADOF3D , B4ADOF3Hds , B4ADOF3Rdt , B4ADOF3V , B4ADOF3Wvs , & + B4ADOF40A , B4ADOF40Add , B4ADOF40D , B4ADOF40Hds , B4ADOF40Rdt , B4ADOF40V , B4ADOF40Wvs , & + B4ADOF41A , B4ADOF41Add , B4ADOF41D , B4ADOF41Hds , B4ADOF41Rdt , B4ADOF41V , B4ADOF41Wvs , & + B4ADOF42A , B4ADOF42Add , B4ADOF42D , B4ADOF42Hds , B4ADOF42Rdt , B4ADOF42V , B4ADOF42Wvs , & + B4ADOF43A , B4ADOF43Add , B4ADOF43D , B4ADOF43Hds , B4ADOF43Rdt , B4ADOF43V , B4ADOF43Wvs , & + B4ADOF44A , B4ADOF44Add , B4ADOF44D , B4ADOF44Hds , B4ADOF44Rdt , B4ADOF44V , B4ADOF44Wvs , & + B4ADOF45A , B4ADOF45Add , B4ADOF45D , B4ADOF45Hds , B4ADOF45Rdt , B4ADOF45V , B4ADOF45Wvs , & + B4ADOF46A , B4ADOF46Add , B4ADOF46D , B4ADOF46Hds , B4ADOF46Rdt , B4ADOF46V , B4ADOF46Wvs , & + B4ADOF47A , B4ADOF47Add , B4ADOF47D , B4ADOF47Hds , B4ADOF47Rdt , B4ADOF47V , B4ADOF47Wvs , & + B4ADOF48A , B4ADOF48Add , B4ADOF48D , B4ADOF48Hds , B4ADOF48Rdt , B4ADOF48V , B4ADOF48Wvs , & + B4ADOF49A , B4ADOF49Add , B4ADOF49D , B4ADOF49Hds , B4ADOF49Rdt , B4ADOF49V , B4ADOF49Wvs , & + B4ADOF4A , B4ADOF4Add , B4ADOF4D , B4ADOF4Hds , B4ADOF4Rdt , B4ADOF4V , B4ADOF4Wvs , & + B4ADOF50A , B4ADOF50Add , B4ADOF50D , B4ADOF50Hds , B4ADOF50Rdt , B4ADOF50V , B4ADOF50Wvs , & + B4ADOF51A , B4ADOF51Add , B4ADOF51D , B4ADOF51Hds , B4ADOF51Rdt , B4ADOF51V , B4ADOF51Wvs , & + B4ADOF52A , B4ADOF52Add , B4ADOF52D , B4ADOF52Hds , B4ADOF52Rdt , B4ADOF52V , B4ADOF52Wvs , & + B4ADOF53A , B4ADOF53Add , B4ADOF53D , B4ADOF53Hds , B4ADOF53Rdt , B4ADOF53V , B4ADOF53Wvs , & + B4ADOF54A , B4ADOF54Add , B4ADOF54D , B4ADOF54Hds , B4ADOF54Rdt , B4ADOF54V , B4ADOF54Wvs , & + B4ADOF55A , B4ADOF55Add , B4ADOF55D , B4ADOF55Hds , B4ADOF55Rdt , B4ADOF55V , B4ADOF55Wvs , & + B4ADOF56A , B4ADOF56Add , B4ADOF56D , B4ADOF56Hds , B4ADOF56Rdt , B4ADOF56V , B4ADOF56Wvs , & + B4ADOF57A , B4ADOF57Add , B4ADOF57D , B4ADOF57Hds , B4ADOF57Rdt , B4ADOF57V , B4ADOF57Wvs , & + B4ADOF58A , B4ADOF58Add , B4ADOF58D , B4ADOF58Hds , B4ADOF58Rdt , B4ADOF58V , B4ADOF58Wvs , & + B4ADOF59A , B4ADOF59Add , B4ADOF59D , B4ADOF59Hds , B4ADOF59Rdt , B4ADOF59V , B4ADOF59Wvs , & + B4ADOF5A , B4ADOF5Add , B4ADOF5D , B4ADOF5Hds , B4ADOF5Rdt , B4ADOF5V , B4ADOF5Wvs , & + B4ADOF60A , B4ADOF60Add , B4ADOF60D , B4ADOF60Hds , B4ADOF60Rdt , B4ADOF60V , B4ADOF60Wvs , & + B4ADOF61A , B4ADOF61Add , B4ADOF61D , B4ADOF61Hds , B4ADOF61Rdt , B4ADOF61V , B4ADOF61Wvs , & + B4ADOF62A , B4ADOF62Add , B4ADOF62D , B4ADOF62Hds , B4ADOF62Rdt , B4ADOF62V , B4ADOF62Wvs , & + B4ADOF63A , B4ADOF63Add , B4ADOF63D , B4ADOF63Hds , B4ADOF63Rdt , B4ADOF63V , B4ADOF63Wvs , & + B4ADOF64A , B4ADOF64Add , B4ADOF64D , B4ADOF64Hds , B4ADOF64Rdt , B4ADOF64V , B4ADOF64Wvs , & + B4ADOF65A , B4ADOF65Add , B4ADOF65D , B4ADOF65Hds , B4ADOF65Rdt , B4ADOF65V , B4ADOF65Wvs , & + B4ADOF66A , B4ADOF66Add , B4ADOF66D , B4ADOF66Hds , B4ADOF66Rdt , B4ADOF66V , B4ADOF66Wvs , & + B4ADOF67A , B4ADOF67Add , B4ADOF67D , B4ADOF67Hds , B4ADOF67Rdt , B4ADOF67V , B4ADOF67Wvs , & + B4ADOF68A , B4ADOF68Add , B4ADOF68D , B4ADOF68Hds , B4ADOF68Rdt , B4ADOF68V , B4ADOF68Wvs , & + B4ADOF69A , B4ADOF69Add , B4ADOF69D , B4ADOF69Hds , B4ADOF69Rdt , B4ADOF69V , B4ADOF69Wvs , & + B4ADOF6A , B4ADOF6Add , B4ADOF6D , B4ADOF6Hds , B4ADOF6Rdt , B4ADOF6V , B4ADOF6Wvs , & + B4ADOF70A , B4ADOF70Add , B4ADOF70D , B4ADOF70Hds , B4ADOF70Rdt , B4ADOF70V , B4ADOF70Wvs , & + B4ADOF71A , B4ADOF71Add , B4ADOF71D , B4ADOF71Hds , B4ADOF71Rdt , B4ADOF71V , B4ADOF71Wvs , & + B4ADOF72A , B4ADOF72Add , B4ADOF72D , B4ADOF72Hds , B4ADOF72Rdt , B4ADOF72V , B4ADOF72Wvs , & + B4ADOF73A , B4ADOF73Add , B4ADOF73D , B4ADOF73Hds , B4ADOF73Rdt , B4ADOF73V , B4ADOF73Wvs , & + B4ADOF74A , B4ADOF74Add , B4ADOF74D , B4ADOF74Hds , B4ADOF74Rdt , B4ADOF74V , B4ADOF74Wvs , & + B4ADOF75A , B4ADOF75Add , B4ADOF75D , B4ADOF75Hds , B4ADOF75Rdt , B4ADOF75V , B4ADOF75Wvs , & + B4ADOF76A , B4ADOF76Add , B4ADOF76D , B4ADOF76Hds , B4ADOF76Rdt , B4ADOF76V , B4ADOF76Wvs , & + B4ADOF77A , B4ADOF77Add , B4ADOF77D , B4ADOF77Hds , B4ADOF77Rdt , B4ADOF77V , B4ADOF77Wvs , & + B4ADOF78A , B4ADOF78Add , B4ADOF78D , B4ADOF78Hds , B4ADOF78Rdt , B4ADOF78V , B4ADOF78Wvs , & + B4ADOF79A , B4ADOF79Add , B4ADOF79D , B4ADOF79Hds , B4ADOF79Rdt , B4ADOF79V , B4ADOF79Wvs , & + B4ADOF7A , B4ADOF7Add , B4ADOF7D , B4ADOF7Hds , B4ADOF7Rdt , B4ADOF7V , B4ADOF7Wvs , & + B4ADOF80A , B4ADOF80Add , B4ADOF80D , B4ADOF80Hds , B4ADOF80Rdt , B4ADOF80V , B4ADOF80Wvs , & + B4ADOF81A , B4ADOF81Add , B4ADOF81D , B4ADOF81Hds , B4ADOF81Rdt , B4ADOF81V , B4ADOF81Wvs , & + B4ADOF82A , B4ADOF82Add , B4ADOF82D , B4ADOF82Hds , B4ADOF82Rdt , B4ADOF82V , B4ADOF82Wvs , & + B4ADOF83A , B4ADOF83Add , B4ADOF83D , B4ADOF83Hds , B4ADOF83Rdt , B4ADOF83V , B4ADOF83Wvs , & + B4ADOF84A , B4ADOF84Add , B4ADOF84D , B4ADOF84Hds , B4ADOF84Rdt , B4ADOF84V , B4ADOF84Wvs , & + B4ADOF85A , B4ADOF85Add , B4ADOF85D , B4ADOF85Hds , B4ADOF85Rdt , B4ADOF85V , B4ADOF85Wvs , & + B4ADOF86A , B4ADOF86Add , B4ADOF86D , B4ADOF86Hds , B4ADOF86Rdt , B4ADOF86V , B4ADOF86Wvs , & + B4ADOF87A , B4ADOF87Add , B4ADOF87D , B4ADOF87Hds , B4ADOF87Rdt , B4ADOF87V , B4ADOF87Wvs , & + B4ADOF88A , B4ADOF88Add , B4ADOF88D , B4ADOF88Hds , B4ADOF88Rdt , B4ADOF88V , B4ADOF88Wvs , & + B4ADOF89A , B4ADOF89Add , B4ADOF89D , B4ADOF89Hds , B4ADOF89Rdt , B4ADOF89V , B4ADOF89Wvs , & + B4ADOF8A , B4ADOF8Add , B4ADOF8D , B4ADOF8Hds , B4ADOF8Rdt , B4ADOF8V , B4ADOF8Wvs , & + B4ADOF90A , B4ADOF90Add , B4ADOF90D , B4ADOF90Hds , B4ADOF90Rdt , B4ADOF90V , B4ADOF90Wvs , & + B4ADOF91A , B4ADOF91Add , B4ADOF91D , B4ADOF91Hds , B4ADOF91Rdt , B4ADOF91V , B4ADOF91Wvs , & + B4ADOF92A , B4ADOF92Add , B4ADOF92D , B4ADOF92Hds , B4ADOF92Rdt , B4ADOF92V , B4ADOF92Wvs , & + B4ADOF93A , B4ADOF93Add , B4ADOF93D , B4ADOF93Hds , B4ADOF93Rdt , B4ADOF93V , B4ADOF93Wvs , & + B4ADOF94A , B4ADOF94Add , B4ADOF94D , B4ADOF94Hds , B4ADOF94Rdt , B4ADOF94V , B4ADOF94Wvs , & + B4ADOF95A , B4ADOF95Add , B4ADOF95D , B4ADOF95Hds , B4ADOF95Rdt , B4ADOF95V , B4ADOF95Wvs , & + B4ADOF96A , B4ADOF96Add , B4ADOF96D , B4ADOF96Hds , B4ADOF96Rdt , B4ADOF96V , B4ADOF96Wvs , & + B4ADOF97A , B4ADOF97Add , B4ADOF97D , B4ADOF97Hds , B4ADOF97Rdt , B4ADOF97V , B4ADOF97Wvs , & + B4ADOF98A , B4ADOF98Add , B4ADOF98D , B4ADOF98Hds , B4ADOF98Rdt , B4ADOF98V , B4ADOF98Wvs , & + B4ADOF99A , B4ADOF99Add , B4ADOF99D , B4ADOF99Hds , B4ADOF99Rdt , B4ADOF99V , B4ADOF99Wvs , & + B4ADOF9A , B4ADOF9Add , B4ADOF9D , B4ADOF9Hds , B4ADOF9Rdt , B4ADOF9V , B4ADOF9Wvs , & + B4HdSFxi , B4HdSFyi , B4HdSFzi , B4HdSMxi , B4HdSMyi , B4HdSMzi , B4Heave , & + B4Pitch , B4RAxi , B4RAyi , B4RAzi , B4RdtFxi , B4RdtFyi , B4RdtFzi , & + B4RdtMxi , B4RdtMyi , B4RdtMzi , B4Roll , B4RVxi , B4RVyi , B4RVzi , & + B4Surge , B4Sway , B4TAxi , B4TAyi , B4TAzi , B4TVxi , B4TVyi , & + B4TVzi , B4WvsF1xi , B4WvsF1yi , B4WvsF1zi , B4WvsF2xi , B4WvsF2yi , B4WvsF2zi , & + B4WvsFxi , B4WvsFyi , B4WvsFzi , B4WvsM1xi , B4WvsM1yi , B4WvsM1zi , B4WvsM2xi , & + B4WvsM2yi , B4WvsM2zi , B4WvsMxi , B4WvsMyi , B4WvsMzi , B4Yaw , B5AddFxi , & + B5AddFyi , B5AddFzi , B5AddMxi , B5AddMyi , B5AddMzi , B5ADOF10A , B5ADOF10Add , & + B5ADOF10D , B5ADOF10Hds , B5ADOF10Rdt , B5ADOF10V , B5ADOF10Wvs , B5ADOF11A , B5ADOF11Add , & + B5ADOF11D , B5ADOF11Hds , B5ADOF11Rdt , B5ADOF11V , B5ADOF11Wvs , B5ADOF12A , B5ADOF12Add , & + B5ADOF12D , B5ADOF12Hds , B5ADOF12Rdt , B5ADOF12V , B5ADOF12Wvs , B5ADOF13A , B5ADOF13Add , & + B5ADOF13D , B5ADOF13Hds , B5ADOF13Rdt , B5ADOF13V , B5ADOF13Wvs , B5ADOF14A , B5ADOF14Add , & + B5ADOF14D , B5ADOF14Hds , B5ADOF14Rdt , B5ADOF14V , B5ADOF14Wvs , B5ADOF15A , B5ADOF15Add , & + B5ADOF15D , B5ADOF15Hds , B5ADOF15Rdt , B5ADOF15V , B5ADOF15Wvs , B5ADOF16A , B5ADOF16Add , & + B5ADOF16D , B5ADOF16Hds , B5ADOF16Rdt , B5ADOF16V , B5ADOF16Wvs , B5ADOF17A , B5ADOF17Add , & + B5ADOF17D , B5ADOF17Hds , B5ADOF17Rdt , B5ADOF17V , B5ADOF17Wvs , B5ADOF18A , B5ADOF18Add , & + B5ADOF18D , B5ADOF18Hds , B5ADOF18Rdt , B5ADOF18V , B5ADOF18Wvs , B5ADOF19A , B5ADOF19Add , & + B5ADOF19D , B5ADOF19Hds , B5ADOF19Rdt , B5ADOF19V , B5ADOF19Wvs , B5ADOF1A , B5ADOF1Add , & + B5ADOF1D , B5ADOF1Hds , B5ADOF1Rdt , B5ADOF1V , B5ADOF1Wvs , B5ADOF20A , B5ADOF20Add , & + B5ADOF20D , B5ADOF20Hds , B5ADOF20Rdt , B5ADOF20V , B5ADOF20Wvs , B5ADOF21A , B5ADOF21Add , & + B5ADOF21D , B5ADOF21Hds , B5ADOF21Rdt , B5ADOF21V , B5ADOF21Wvs , B5ADOF22A , B5ADOF22Add , & + B5ADOF22D , B5ADOF22Hds , B5ADOF22Rdt , B5ADOF22V , B5ADOF22Wvs , B5ADOF23A , B5ADOF23Add , & + B5ADOF23D , B5ADOF23Hds , B5ADOF23Rdt , B5ADOF23V , B5ADOF23Wvs , B5ADOF24A , B5ADOF24Add , & + B5ADOF24D , B5ADOF24Hds , B5ADOF24Rdt , B5ADOF24V , B5ADOF24Wvs , B5ADOF25A , B5ADOF25Add , & + B5ADOF25D , B5ADOF25Hds , B5ADOF25Rdt , B5ADOF25V , B5ADOF25Wvs , B5ADOF26A , B5ADOF26Add , & + B5ADOF26D , B5ADOF26Hds , B5ADOF26Rdt , B5ADOF26V , B5ADOF26Wvs , B5ADOF27A , B5ADOF27Add , & + B5ADOF27D , B5ADOF27Hds , B5ADOF27Rdt , B5ADOF27V , B5ADOF27Wvs , B5ADOF28A , B5ADOF28Add , & + B5ADOF28D , B5ADOF28Hds , B5ADOF28Rdt , B5ADOF28V , B5ADOF28Wvs , B5ADOF29A , B5ADOF29Add , & + B5ADOF29D , B5ADOF29Hds , B5ADOF29Rdt , B5ADOF29V , B5ADOF29Wvs , B5ADOF2A , B5ADOF2Add , & + B5ADOF2D , B5ADOF2Hds , B5ADOF2Rdt , B5ADOF2V , B5ADOF2Wvs , B5ADOF30A , B5ADOF30Add , & + B5ADOF30D , B5ADOF30Hds , B5ADOF30Rdt , B5ADOF30V , B5ADOF30Wvs , B5ADOF31A , B5ADOF31Add , & + B5ADOF31D , B5ADOF31Hds , B5ADOF31Rdt , B5ADOF31V , B5ADOF31Wvs , B5ADOF32A , B5ADOF32Add , & + B5ADOF32D , B5ADOF32Hds , B5ADOF32Rdt , B5ADOF32V , B5ADOF32Wvs , B5ADOF33A , B5ADOF33Add , & + B5ADOF33D , B5ADOF33Hds , B5ADOF33Rdt , B5ADOF33V , B5ADOF33Wvs , B5ADOF34A , B5ADOF34Add , & + B5ADOF34D , B5ADOF34Hds , B5ADOF34Rdt , B5ADOF34V , B5ADOF34Wvs , B5ADOF35A , B5ADOF35Add , & + B5ADOF35D , B5ADOF35Hds , B5ADOF35Rdt , B5ADOF35V , B5ADOF35Wvs , B5ADOF36A , B5ADOF36Add , & + B5ADOF36D , B5ADOF36Hds , B5ADOF36Rdt , B5ADOF36V , B5ADOF36Wvs , B5ADOF37A , B5ADOF37Add , & + B5ADOF37D , B5ADOF37Hds , B5ADOF37Rdt , B5ADOF37V , B5ADOF37Wvs , B5ADOF38A , B5ADOF38Add , & + B5ADOF38D , B5ADOF38Hds , B5ADOF38Rdt , B5ADOF38V , B5ADOF38Wvs , B5ADOF39A , B5ADOF39Add , & + B5ADOF39D , B5ADOF39Hds , B5ADOF39Rdt , B5ADOF39V , B5ADOF39Wvs , B5ADOF3A , B5ADOF3Add , & + B5ADOF3D , B5ADOF3Hds , B5ADOF3Rdt , B5ADOF3V , B5ADOF3Wvs , B5ADOF40A , B5ADOF40Add , & + B5ADOF40D , B5ADOF40Hds , B5ADOF40Rdt , B5ADOF40V , B5ADOF40Wvs , B5ADOF41A , B5ADOF41Add , & + B5ADOF41D , B5ADOF41Hds , B5ADOF41Rdt , B5ADOF41V , B5ADOF41Wvs , B5ADOF42A , B5ADOF42Add , & + B5ADOF42D , B5ADOF42Hds , B5ADOF42Rdt , B5ADOF42V , B5ADOF42Wvs , B5ADOF43A , B5ADOF43Add , & + B5ADOF43D , B5ADOF43Hds , B5ADOF43Rdt , B5ADOF43V , B5ADOF43Wvs , B5ADOF44A , B5ADOF44Add , & + B5ADOF44D , B5ADOF44Hds , B5ADOF44Rdt , B5ADOF44V , B5ADOF44Wvs , B5ADOF45A , B5ADOF45Add , & + B5ADOF45D , B5ADOF45Hds , B5ADOF45Rdt , B5ADOF45V , B5ADOF45Wvs , B5ADOF46A , B5ADOF46Add , & + B5ADOF46D , B5ADOF46Hds , B5ADOF46Rdt , B5ADOF46V , B5ADOF46Wvs , B5ADOF47A , B5ADOF47Add , & + B5ADOF47D , B5ADOF47Hds , B5ADOF47Rdt , B5ADOF47V , B5ADOF47Wvs , B5ADOF48A , B5ADOF48Add , & + B5ADOF48D , B5ADOF48Hds , B5ADOF48Rdt , B5ADOF48V , B5ADOF48Wvs , B5ADOF49A , B5ADOF49Add , & + B5ADOF49D , B5ADOF49Hds , B5ADOF49Rdt , B5ADOF49V , B5ADOF49Wvs , B5ADOF4A , B5ADOF4Add , & + B5ADOF4D , B5ADOF4Hds , B5ADOF4Rdt , B5ADOF4V , B5ADOF4Wvs , B5ADOF50A , B5ADOF50Add , & + B5ADOF50D , B5ADOF50Hds , B5ADOF50Rdt , B5ADOF50V , B5ADOF50Wvs , B5ADOF51A , B5ADOF51Add , & + B5ADOF51D , B5ADOF51Hds , B5ADOF51Rdt , B5ADOF51V , B5ADOF51Wvs , B5ADOF52A , B5ADOF52Add , & + B5ADOF52D , B5ADOF52Hds , B5ADOF52Rdt , B5ADOF52V , B5ADOF52Wvs , B5ADOF53A , B5ADOF53Add , & + B5ADOF53D , B5ADOF53Hds , B5ADOF53Rdt , B5ADOF53V , B5ADOF53Wvs , B5ADOF54A , B5ADOF54Add , & + B5ADOF54D , B5ADOF54Hds , B5ADOF54Rdt , B5ADOF54V , B5ADOF54Wvs , B5ADOF55A , B5ADOF55Add , & + B5ADOF55D , B5ADOF55Hds , B5ADOF55Rdt , B5ADOF55V , B5ADOF55Wvs , B5ADOF56A , B5ADOF56Add , & + B5ADOF56D , B5ADOF56Hds , B5ADOF56Rdt , B5ADOF56V , B5ADOF56Wvs , B5ADOF57A , B5ADOF57Add , & + B5ADOF57D , B5ADOF57Hds , B5ADOF57Rdt , B5ADOF57V , B5ADOF57Wvs , B5ADOF58A , B5ADOF58Add , & + B5ADOF58D , B5ADOF58Hds , B5ADOF58Rdt , B5ADOF58V , B5ADOF58Wvs , B5ADOF59A , B5ADOF59Add , & + B5ADOF59D , B5ADOF59Hds , B5ADOF59Rdt , B5ADOF59V , B5ADOF59Wvs , B5ADOF5A , B5ADOF5Add /) + INTEGER(IntKi), PARAMETER :: ParamIndxAry3(1687) = (/ & ! This lists the index into AllOuts(:) of the allowed parameters ValidParamAry(:) + B5ADOF5D , B5ADOF5Hds , B5ADOF5Rdt , B5ADOF5V , B5ADOF5Wvs , B5ADOF60A , B5ADOF60Add , & + B5ADOF60D , B5ADOF60Hds , B5ADOF60Rdt , B5ADOF60V , B5ADOF60Wvs , B5ADOF61A , B5ADOF61Add , & + B5ADOF61D , B5ADOF61Hds , B5ADOF61Rdt , B5ADOF61V , B5ADOF61Wvs , B5ADOF62A , B5ADOF62Add , & + B5ADOF62D , B5ADOF62Hds , B5ADOF62Rdt , B5ADOF62V , B5ADOF62Wvs , B5ADOF63A , B5ADOF63Add , & + B5ADOF63D , B5ADOF63Hds , B5ADOF63Rdt , B5ADOF63V , B5ADOF63Wvs , B5ADOF64A , B5ADOF64Add , & + B5ADOF64D , B5ADOF64Hds , B5ADOF64Rdt , B5ADOF64V , B5ADOF64Wvs , B5ADOF65A , B5ADOF65Add , & + B5ADOF65D , B5ADOF65Hds , B5ADOF65Rdt , B5ADOF65V , B5ADOF65Wvs , B5ADOF66A , B5ADOF66Add , & + B5ADOF66D , B5ADOF66Hds , B5ADOF66Rdt , B5ADOF66V , B5ADOF66Wvs , B5ADOF67A , B5ADOF67Add , & + B5ADOF67D , B5ADOF67Hds , B5ADOF67Rdt , B5ADOF67V , B5ADOF67Wvs , B5ADOF68A , B5ADOF68Add , & + B5ADOF68D , B5ADOF68Hds , B5ADOF68Rdt , B5ADOF68V , B5ADOF68Wvs , B5ADOF69A , B5ADOF69Add , & + B5ADOF69D , B5ADOF69Hds , B5ADOF69Rdt , B5ADOF69V , B5ADOF69Wvs , B5ADOF6A , B5ADOF6Add , & + B5ADOF6D , B5ADOF6Hds , B5ADOF6Rdt , B5ADOF6V , B5ADOF6Wvs , B5ADOF70A , B5ADOF70Add , & + B5ADOF70D , B5ADOF70Hds , B5ADOF70Rdt , B5ADOF70V , B5ADOF70Wvs , B5ADOF71A , B5ADOF71Add , & + B5ADOF71D , B5ADOF71Hds , B5ADOF71Rdt , B5ADOF71V , B5ADOF71Wvs , B5ADOF72A , B5ADOF72Add , & + B5ADOF72D , B5ADOF72Hds , B5ADOF72Rdt , B5ADOF72V , B5ADOF72Wvs , B5ADOF73A , B5ADOF73Add , & + B5ADOF73D , B5ADOF73Hds , B5ADOF73Rdt , B5ADOF73V , B5ADOF73Wvs , B5ADOF74A , B5ADOF74Add , & + B5ADOF74D , B5ADOF74Hds , B5ADOF74Rdt , B5ADOF74V , B5ADOF74Wvs , B5ADOF75A , B5ADOF75Add , & + B5ADOF75D , B5ADOF75Hds , B5ADOF75Rdt , B5ADOF75V , B5ADOF75Wvs , B5ADOF76A , B5ADOF76Add , & + B5ADOF76D , B5ADOF76Hds , B5ADOF76Rdt , B5ADOF76V , B5ADOF76Wvs , B5ADOF77A , B5ADOF77Add , & + B5ADOF77D , B5ADOF77Hds , B5ADOF77Rdt , B5ADOF77V , B5ADOF77Wvs , B5ADOF78A , B5ADOF78Add , & + B5ADOF78D , B5ADOF78Hds , B5ADOF78Rdt , B5ADOF78V , B5ADOF78Wvs , B5ADOF79A , B5ADOF79Add , & + B5ADOF79D , B5ADOF79Hds , B5ADOF79Rdt , B5ADOF79V , B5ADOF79Wvs , B5ADOF7A , B5ADOF7Add , & + B5ADOF7D , B5ADOF7Hds , B5ADOF7Rdt , B5ADOF7V , B5ADOF7Wvs , B5ADOF80A , B5ADOF80Add , & + B5ADOF80D , B5ADOF80Hds , B5ADOF80Rdt , B5ADOF80V , B5ADOF80Wvs , B5ADOF81A , B5ADOF81Add , & + B5ADOF81D , B5ADOF81Hds , B5ADOF81Rdt , B5ADOF81V , B5ADOF81Wvs , B5ADOF82A , B5ADOF82Add , & + B5ADOF82D , B5ADOF82Hds , B5ADOF82Rdt , B5ADOF82V , B5ADOF82Wvs , B5ADOF83A , B5ADOF83Add , & + B5ADOF83D , B5ADOF83Hds , B5ADOF83Rdt , B5ADOF83V , B5ADOF83Wvs , B5ADOF84A , B5ADOF84Add , & + B5ADOF84D , B5ADOF84Hds , B5ADOF84Rdt , B5ADOF84V , B5ADOF84Wvs , B5ADOF85A , B5ADOF85Add , & + B5ADOF85D , B5ADOF85Hds , B5ADOF85Rdt , B5ADOF85V , B5ADOF85Wvs , B5ADOF86A , B5ADOF86Add , & + B5ADOF86D , B5ADOF86Hds , B5ADOF86Rdt , B5ADOF86V , B5ADOF86Wvs , B5ADOF87A , B5ADOF87Add , & + B5ADOF87D , B5ADOF87Hds , B5ADOF87Rdt , B5ADOF87V , B5ADOF87Wvs , B5ADOF88A , B5ADOF88Add , & + B5ADOF88D , B5ADOF88Hds , B5ADOF88Rdt , B5ADOF88V , B5ADOF88Wvs , B5ADOF89A , B5ADOF89Add , & + B5ADOF89D , B5ADOF89Hds , B5ADOF89Rdt , B5ADOF89V , B5ADOF89Wvs , B5ADOF8A , B5ADOF8Add , & + B5ADOF8D , B5ADOF8Hds , B5ADOF8Rdt , B5ADOF8V , B5ADOF8Wvs , B5ADOF90A , B5ADOF90Add , & + B5ADOF90D , B5ADOF90Hds , B5ADOF90Rdt , B5ADOF90V , B5ADOF90Wvs , B5ADOF91A , B5ADOF91Add , & + B5ADOF91D , B5ADOF91Hds , B5ADOF91Rdt , B5ADOF91V , B5ADOF91Wvs , B5ADOF92A , B5ADOF92Add , & + B5ADOF92D , B5ADOF92Hds , B5ADOF92Rdt , B5ADOF92V , B5ADOF92Wvs , B5ADOF93A , B5ADOF93Add , & + B5ADOF93D , B5ADOF93Hds , B5ADOF93Rdt , B5ADOF93V , B5ADOF93Wvs , B5ADOF94A , B5ADOF94Add , & + B5ADOF94D , B5ADOF94Hds , B5ADOF94Rdt , B5ADOF94V , B5ADOF94Wvs , B5ADOF95A , B5ADOF95Add , & + B5ADOF95D , B5ADOF95Hds , B5ADOF95Rdt , B5ADOF95V , B5ADOF95Wvs , B5ADOF96A , B5ADOF96Add , & + B5ADOF96D , B5ADOF96Hds , B5ADOF96Rdt , B5ADOF96V , B5ADOF96Wvs , B5ADOF97A , B5ADOF97Add , & + B5ADOF97D , B5ADOF97Hds , B5ADOF97Rdt , B5ADOF97V , B5ADOF97Wvs , B5ADOF98A , B5ADOF98Add , & + B5ADOF98D , B5ADOF98Hds , B5ADOF98Rdt , B5ADOF98V , B5ADOF98Wvs , B5ADOF99A , B5ADOF99Add , & + B5ADOF99D , B5ADOF99Hds , B5ADOF99Rdt , B5ADOF99V , B5ADOF99Wvs , B5ADOF9A , B5ADOF9Add , & + B5ADOF9D , B5ADOF9Hds , B5ADOF9Rdt , B5ADOF9V , B5ADOF9Wvs , B5HdSFxi , B5HdSFyi , & + B5HdSFzi , B5HdSMxi , B5HdSMyi , B5HdSMzi , B5Heave , B5Pitch , B5RAxi , & + B5RAyi , B5RAzi , B5RdtFxi , B5RdtFyi , B5RdtFzi , B5RdtMxi , B5RdtMyi , & + B5RdtMzi , B5Roll , B5RVxi , B5RVyi , B5RVzi , B5Surge , B5Sway , & + B5TAxi , B5TAyi , B5TAzi , B5TVxi , B5TVyi , B5TVzi , B5WvsF1xi , & + B5WvsF1yi , B5WvsF1zi , B5WvsF2xi , B5WvsF2yi , B5WvsF2zi , B5WvsFxi , B5WvsFyi , & + B5WvsFzi , B5WvsM1xi , B5WvsM1yi , B5WvsM1zi , B5WvsM2xi , B5WvsM2yi , B5WvsM2zi , & + B5WvsMxi , B5WvsMyi , B5WvsMzi , B5Yaw , B6AddFxi , B6AddFyi , B6AddFzi , & + B6AddMxi , B6AddMyi , B6AddMzi , B6ADOF10A , B6ADOF10Add , B6ADOF10D , B6ADOF10Hds , & + B6ADOF10Rdt , B6ADOF10V , B6ADOF10Wvs , B6ADOF11A , B6ADOF11Add , B6ADOF11D , B6ADOF11Hds , & + B6ADOF11Rdt , B6ADOF11V , B6ADOF11Wvs , B6ADOF12A , B6ADOF12Add , B6ADOF12D , B6ADOF12Hds , & + B6ADOF12Rdt , B6ADOF12V , B6ADOF12Wvs , B6ADOF13A , B6ADOF13Add , B6ADOF13D , B6ADOF13Hds , & + B6ADOF13Rdt , B6ADOF13V , B6ADOF13Wvs , B6ADOF14A , B6ADOF14Add , B6ADOF14D , B6ADOF14Hds , & + B6ADOF14Rdt , B6ADOF14V , B6ADOF14Wvs , B6ADOF15A , B6ADOF15Add , B6ADOF15D , B6ADOF15Hds , & + B6ADOF15Rdt , B6ADOF15V , B6ADOF15Wvs , B6ADOF16A , B6ADOF16Add , B6ADOF16D , B6ADOF16Hds , & + B6ADOF16Rdt , B6ADOF16V , B6ADOF16Wvs , B6ADOF17A , B6ADOF17Add , B6ADOF17D , B6ADOF17Hds , & + B6ADOF17Rdt , B6ADOF17V , B6ADOF17Wvs , B6ADOF18A , B6ADOF18Add , B6ADOF18D , B6ADOF18Hds , & + B6ADOF18Rdt , B6ADOF18V , B6ADOF18Wvs , B6ADOF19A , B6ADOF19Add , B6ADOF19D , B6ADOF19Hds , & + B6ADOF19Rdt , B6ADOF19V , B6ADOF19Wvs , B6ADOF1A , B6ADOF1Add , B6ADOF1D , B6ADOF1Hds , & + B6ADOF1Rdt , B6ADOF1V , B6ADOF1Wvs , B6ADOF20A , B6ADOF20Add , B6ADOF20D , B6ADOF20Hds , & + B6ADOF20Rdt , B6ADOF20V , B6ADOF20Wvs , B6ADOF21A , B6ADOF21Add , B6ADOF21D , B6ADOF21Hds , & + B6ADOF21Rdt , B6ADOF21V , B6ADOF21Wvs , B6ADOF22A , B6ADOF22Add , B6ADOF22D , B6ADOF22Hds , & + B6ADOF22Rdt , B6ADOF22V , B6ADOF22Wvs , B6ADOF23A , B6ADOF23Add , B6ADOF23D , B6ADOF23Hds , & + B6ADOF23Rdt , B6ADOF23V , B6ADOF23Wvs , B6ADOF24A , B6ADOF24Add , B6ADOF24D , B6ADOF24Hds , & + B6ADOF24Rdt , B6ADOF24V , B6ADOF24Wvs , B6ADOF25A , B6ADOF25Add , B6ADOF25D , B6ADOF25Hds , & + B6ADOF25Rdt , B6ADOF25V , B6ADOF25Wvs , B6ADOF26A , B6ADOF26Add , B6ADOF26D , B6ADOF26Hds , & + B6ADOF26Rdt , B6ADOF26V , B6ADOF26Wvs , B6ADOF27A , B6ADOF27Add , B6ADOF27D , B6ADOF27Hds , & + B6ADOF27Rdt , B6ADOF27V , B6ADOF27Wvs , B6ADOF28A , B6ADOF28Add , B6ADOF28D , B6ADOF28Hds , & + B6ADOF28Rdt , B6ADOF28V , B6ADOF28Wvs , B6ADOF29A , B6ADOF29Add , B6ADOF29D , B6ADOF29Hds , & + B6ADOF29Rdt , B6ADOF29V , B6ADOF29Wvs , B6ADOF2A , B6ADOF2Add , B6ADOF2D , B6ADOF2Hds , & + B6ADOF2Rdt , B6ADOF2V , B6ADOF2Wvs , B6ADOF30A , B6ADOF30Add , B6ADOF30D , B6ADOF30Hds , & + B6ADOF30Rdt , B6ADOF30V , B6ADOF30Wvs , B6ADOF31A , B6ADOF31Add , B6ADOF31D , B6ADOF31Hds , & + B6ADOF31Rdt , B6ADOF31V , B6ADOF31Wvs , B6ADOF32A , B6ADOF32Add , B6ADOF32D , B6ADOF32Hds , & + B6ADOF32Rdt , B6ADOF32V , B6ADOF32Wvs , B6ADOF33A , B6ADOF33Add , B6ADOF33D , B6ADOF33Hds , & + B6ADOF33Rdt , B6ADOF33V , B6ADOF33Wvs , B6ADOF34A , B6ADOF34Add , B6ADOF34D , B6ADOF34Hds , & + B6ADOF34Rdt , B6ADOF34V , B6ADOF34Wvs , B6ADOF35A , B6ADOF35Add , B6ADOF35D , B6ADOF35Hds , & + B6ADOF35Rdt , B6ADOF35V , B6ADOF35Wvs , B6ADOF36A , B6ADOF36Add , B6ADOF36D , B6ADOF36Hds , & + B6ADOF36Rdt , B6ADOF36V , B6ADOF36Wvs , B6ADOF37A , B6ADOF37Add , B6ADOF37D , B6ADOF37Hds , & + B6ADOF37Rdt , B6ADOF37V , B6ADOF37Wvs , B6ADOF38A , B6ADOF38Add , B6ADOF38D , B6ADOF38Hds , & + B6ADOF38Rdt , B6ADOF38V , B6ADOF38Wvs , B6ADOF39A , B6ADOF39Add , B6ADOF39D , B6ADOF39Hds , & + B6ADOF39Rdt , B6ADOF39V , B6ADOF39Wvs , B6ADOF3A , B6ADOF3Add , B6ADOF3D , B6ADOF3Hds , & + B6ADOF3Rdt , B6ADOF3V , B6ADOF3Wvs , B6ADOF40A , B6ADOF40Add , B6ADOF40D , B6ADOF40Hds , & + B6ADOF40Rdt , B6ADOF40V , B6ADOF40Wvs , B6ADOF41A , B6ADOF41Add , B6ADOF41D , B6ADOF41Hds , & + B6ADOF41Rdt , B6ADOF41V , B6ADOF41Wvs , B6ADOF42A , B6ADOF42Add , B6ADOF42D , B6ADOF42Hds , & + B6ADOF42Rdt , B6ADOF42V , B6ADOF42Wvs , B6ADOF43A , B6ADOF43Add , B6ADOF43D , B6ADOF43Hds , & + B6ADOF43Rdt , B6ADOF43V , B6ADOF43Wvs , B6ADOF44A , B6ADOF44Add , B6ADOF44D , B6ADOF44Hds , & + B6ADOF44Rdt , B6ADOF44V , B6ADOF44Wvs , B6ADOF45A , B6ADOF45Add , B6ADOF45D , B6ADOF45Hds , & + B6ADOF45Rdt , B6ADOF45V , B6ADOF45Wvs , B6ADOF46A , B6ADOF46Add , B6ADOF46D , B6ADOF46Hds , & + B6ADOF46Rdt , B6ADOF46V , B6ADOF46Wvs , B6ADOF47A , B6ADOF47Add , B6ADOF47D , B6ADOF47Hds , & + B6ADOF47Rdt , B6ADOF47V , B6ADOF47Wvs , B6ADOF48A , B6ADOF48Add , B6ADOF48D , B6ADOF48Hds , & + B6ADOF48Rdt , B6ADOF48V , B6ADOF48Wvs , B6ADOF49A , B6ADOF49Add , B6ADOF49D , B6ADOF49Hds , & + B6ADOF49Rdt , B6ADOF49V , B6ADOF49Wvs , B6ADOF4A , B6ADOF4Add , B6ADOF4D , B6ADOF4Hds , & + B6ADOF4Rdt , B6ADOF4V , B6ADOF4Wvs , B6ADOF50A , B6ADOF50Add , B6ADOF50D , B6ADOF50Hds , & + B6ADOF50Rdt , B6ADOF50V , B6ADOF50Wvs , B6ADOF51A , B6ADOF51Add , B6ADOF51D , B6ADOF51Hds , & + B6ADOF51Rdt , B6ADOF51V , B6ADOF51Wvs , B6ADOF52A , B6ADOF52Add , B6ADOF52D , B6ADOF52Hds , & + B6ADOF52Rdt , B6ADOF52V , B6ADOF52Wvs , B6ADOF53A , B6ADOF53Add , B6ADOF53D , B6ADOF53Hds , & + B6ADOF53Rdt , B6ADOF53V , B6ADOF53Wvs , B6ADOF54A , B6ADOF54Add , B6ADOF54D , B6ADOF54Hds , & + B6ADOF54Rdt , B6ADOF54V , B6ADOF54Wvs , B6ADOF55A , B6ADOF55Add , B6ADOF55D , B6ADOF55Hds , & + B6ADOF55Rdt , B6ADOF55V , B6ADOF55Wvs , B6ADOF56A , B6ADOF56Add , B6ADOF56D , B6ADOF56Hds , & + B6ADOF56Rdt , B6ADOF56V , B6ADOF56Wvs , B6ADOF57A , B6ADOF57Add , B6ADOF57D , B6ADOF57Hds , & + B6ADOF57Rdt , B6ADOF57V , B6ADOF57Wvs , B6ADOF58A , B6ADOF58Add , B6ADOF58D , B6ADOF58Hds , & + B6ADOF58Rdt , B6ADOF58V , B6ADOF58Wvs , B6ADOF59A , B6ADOF59Add , B6ADOF59D , B6ADOF59Hds , & + B6ADOF59Rdt , B6ADOF59V , B6ADOF59Wvs , B6ADOF5A , B6ADOF5Add , B6ADOF5D , B6ADOF5Hds , & + B6ADOF5Rdt , B6ADOF5V , B6ADOF5Wvs , B6ADOF60A , B6ADOF60Add , B6ADOF60D , B6ADOF60Hds , & + B6ADOF60Rdt , B6ADOF60V , B6ADOF60Wvs , B6ADOF61A , B6ADOF61Add , B6ADOF61D , B6ADOF61Hds , & + B6ADOF61Rdt , B6ADOF61V , B6ADOF61Wvs , B6ADOF62A , B6ADOF62Add , B6ADOF62D , B6ADOF62Hds , & + B6ADOF62Rdt , B6ADOF62V , B6ADOF62Wvs , B6ADOF63A , B6ADOF63Add , B6ADOF63D , B6ADOF63Hds , & + B6ADOF63Rdt , B6ADOF63V , B6ADOF63Wvs , B6ADOF64A , B6ADOF64Add , B6ADOF64D , B6ADOF64Hds , & + B6ADOF64Rdt , B6ADOF64V , B6ADOF64Wvs , B6ADOF65A , B6ADOF65Add , B6ADOF65D , B6ADOF65Hds , & + B6ADOF65Rdt , B6ADOF65V , B6ADOF65Wvs , B6ADOF66A , B6ADOF66Add , B6ADOF66D , B6ADOF66Hds , & + B6ADOF66Rdt , B6ADOF66V , B6ADOF66Wvs , B6ADOF67A , B6ADOF67Add , B6ADOF67D , B6ADOF67Hds , & + B6ADOF67Rdt , B6ADOF67V , B6ADOF67Wvs , B6ADOF68A , B6ADOF68Add , B6ADOF68D , B6ADOF68Hds , & + B6ADOF68Rdt , B6ADOF68V , B6ADOF68Wvs , B6ADOF69A , B6ADOF69Add , B6ADOF69D , B6ADOF69Hds , & + B6ADOF69Rdt , B6ADOF69V , B6ADOF69Wvs , B6ADOF6A , B6ADOF6Add , B6ADOF6D , B6ADOF6Hds , & + B6ADOF6Rdt , B6ADOF6V , B6ADOF6Wvs , B6ADOF70A , B6ADOF70Add , B6ADOF70D , B6ADOF70Hds , & + B6ADOF70Rdt , B6ADOF70V , B6ADOF70Wvs , B6ADOF71A , B6ADOF71Add , B6ADOF71D , B6ADOF71Hds , & + B6ADOF71Rdt , B6ADOF71V , B6ADOF71Wvs , B6ADOF72A , B6ADOF72Add , B6ADOF72D , B6ADOF72Hds , & + B6ADOF72Rdt , B6ADOF72V , B6ADOF72Wvs , B6ADOF73A , B6ADOF73Add , B6ADOF73D , B6ADOF73Hds , & + B6ADOF73Rdt , B6ADOF73V , B6ADOF73Wvs , B6ADOF74A , B6ADOF74Add , B6ADOF74D , B6ADOF74Hds , & + B6ADOF74Rdt , B6ADOF74V , B6ADOF74Wvs , B6ADOF75A , B6ADOF75Add , B6ADOF75D , B6ADOF75Hds , & + B6ADOF75Rdt , B6ADOF75V , B6ADOF75Wvs , B6ADOF76A , B6ADOF76Add , B6ADOF76D , B6ADOF76Hds , & + B6ADOF76Rdt , B6ADOF76V , B6ADOF76Wvs , B6ADOF77A , B6ADOF77Add , B6ADOF77D , B6ADOF77Hds , & + B6ADOF77Rdt , B6ADOF77V , B6ADOF77Wvs , B6ADOF78A , B6ADOF78Add , B6ADOF78D , B6ADOF78Hds , & + B6ADOF78Rdt , B6ADOF78V , B6ADOF78Wvs , B6ADOF79A , B6ADOF79Add , B6ADOF79D , B6ADOF79Hds , & + B6ADOF79Rdt , B6ADOF79V , B6ADOF79Wvs , B6ADOF7A , B6ADOF7Add , B6ADOF7D , B6ADOF7Hds , & + B6ADOF7Rdt , B6ADOF7V , B6ADOF7Wvs , B6ADOF80A , B6ADOF80Add , B6ADOF80D , B6ADOF80Hds , & + B6ADOF80Rdt , B6ADOF80V , B6ADOF80Wvs , B6ADOF81A , B6ADOF81Add , B6ADOF81D , B6ADOF81Hds , & + B6ADOF81Rdt , B6ADOF81V , B6ADOF81Wvs , B6ADOF82A , B6ADOF82Add , B6ADOF82D , B6ADOF82Hds , & + B6ADOF82Rdt , B6ADOF82V , B6ADOF82Wvs , B6ADOF83A , B6ADOF83Add , B6ADOF83D , B6ADOF83Hds , & + B6ADOF83Rdt , B6ADOF83V , B6ADOF83Wvs , B6ADOF84A , B6ADOF84Add , B6ADOF84D , B6ADOF84Hds , & + B6ADOF84Rdt , B6ADOF84V , B6ADOF84Wvs , B6ADOF85A , B6ADOF85Add , B6ADOF85D , B6ADOF85Hds , & + B6ADOF85Rdt , B6ADOF85V , B6ADOF85Wvs , B6ADOF86A , B6ADOF86Add , B6ADOF86D , B6ADOF86Hds , & + B6ADOF86Rdt , B6ADOF86V , B6ADOF86Wvs , B6ADOF87A , B6ADOF87Add , B6ADOF87D , B6ADOF87Hds , & + B6ADOF87Rdt , B6ADOF87V , B6ADOF87Wvs , B6ADOF88A , B6ADOF88Add , B6ADOF88D , B6ADOF88Hds , & + B6ADOF88Rdt , B6ADOF88V , B6ADOF88Wvs , B6ADOF89A , B6ADOF89Add , B6ADOF89D , B6ADOF89Hds , & + B6ADOF89Rdt , B6ADOF89V , B6ADOF89Wvs , B6ADOF8A , B6ADOF8Add , B6ADOF8D , B6ADOF8Hds , & + B6ADOF8Rdt , B6ADOF8V , B6ADOF8Wvs , B6ADOF90A , B6ADOF90Add , B6ADOF90D , B6ADOF90Hds , & + B6ADOF90Rdt , B6ADOF90V , B6ADOF90Wvs , B6ADOF91A , B6ADOF91Add , B6ADOF91D , B6ADOF91Hds , & + B6ADOF91Rdt , B6ADOF91V , B6ADOF91Wvs , B6ADOF92A , B6ADOF92Add , B6ADOF92D , B6ADOF92Hds , & + B6ADOF92Rdt , B6ADOF92V , B6ADOF92Wvs , B6ADOF93A , B6ADOF93Add , B6ADOF93D , B6ADOF93Hds , & + B6ADOF93Rdt , B6ADOF93V , B6ADOF93Wvs , B6ADOF94A , B6ADOF94Add , B6ADOF94D , B6ADOF94Hds , & + B6ADOF94Rdt , B6ADOF94V , B6ADOF94Wvs , B6ADOF95A , B6ADOF95Add , B6ADOF95D , B6ADOF95Hds , & + B6ADOF95Rdt , B6ADOF95V , B6ADOF95Wvs , B6ADOF96A , B6ADOF96Add , B6ADOF96D , B6ADOF96Hds , & + B6ADOF96Rdt , B6ADOF96V , B6ADOF96Wvs , B6ADOF97A , B6ADOF97Add , B6ADOF97D , B6ADOF97Hds , & + B6ADOF97Rdt , B6ADOF97V , B6ADOF97Wvs , B6ADOF98A , B6ADOF98Add , B6ADOF98D , B6ADOF98Hds , & + B6ADOF98Rdt , B6ADOF98V , B6ADOF98Wvs , B6ADOF99A , B6ADOF99Add , B6ADOF99D , B6ADOF99Hds , & + B6ADOF99Rdt , B6ADOF99V , B6ADOF99Wvs , B6ADOF9A , B6ADOF9Add , B6ADOF9D , B6ADOF9Hds , & + B6ADOF9Rdt , B6ADOF9V , B6ADOF9Wvs , B6HdSFxi , B6HdSFyi , B6HdSFzi , B6HdSMxi , & + B6HdSMyi , B6HdSMzi , B6Heave , B6Pitch , B6RAxi , B6RAyi , B6RAzi , & + B6RdtFxi , B6RdtFyi , B6RdtFzi , B6RdtMxi , B6RdtMyi , B6RdtMzi , B6Roll , & + B6RVxi , B6RVyi , B6RVzi , B6Surge , B6Sway , B6TAxi , B6TAyi , & + B6TAzi , B6TVxi , B6TVyi , B6TVzi , B6WvsF1xi , B6WvsF1yi , B6WvsF1zi , & + B6WvsF2xi , B6WvsF2yi , B6WvsF2zi , B6WvsFxi , B6WvsFyi , B6WvsFzi , B6WvsM1xi , & + B6WvsM1yi , B6WvsM1zi , B6WvsM2xi , B6WvsM2yi , B6WvsM2zi , B6WvsMxi , B6WvsMyi , & + B6WvsMzi , B6Yaw , B7AddFxi , B7AddFyi , B7AddFzi , B7AddMxi , B7AddMyi , & + B7AddMzi , B7ADOF10A , B7ADOF10Add , B7ADOF10D , B7ADOF10Hds , B7ADOF10Rdt , B7ADOF10V , & + B7ADOF10Wvs , B7ADOF11A , B7ADOF11Add , B7ADOF11D , B7ADOF11Hds , B7ADOF11Rdt , B7ADOF11V , & + B7ADOF11Wvs , B7ADOF12A , B7ADOF12Add , B7ADOF12D , B7ADOF12Hds , B7ADOF12Rdt , B7ADOF12V , & + B7ADOF12Wvs , B7ADOF13A , B7ADOF13Add , B7ADOF13D , B7ADOF13Hds , B7ADOF13Rdt , B7ADOF13V , & + B7ADOF13Wvs , B7ADOF14A , B7ADOF14Add , B7ADOF14D , B7ADOF14Hds , B7ADOF14Rdt , B7ADOF14V , & + B7ADOF14Wvs , B7ADOF15A , B7ADOF15Add , B7ADOF15D , B7ADOF15Hds , B7ADOF15Rdt , B7ADOF15V , & + B7ADOF15Wvs , B7ADOF16A , B7ADOF16Add , B7ADOF16D , B7ADOF16Hds , B7ADOF16Rdt , B7ADOF16V , & + B7ADOF16Wvs , B7ADOF17A , B7ADOF17Add , B7ADOF17D , B7ADOF17Hds , B7ADOF17Rdt , B7ADOF17V , & + B7ADOF17Wvs , B7ADOF18A , B7ADOF18Add , B7ADOF18D , B7ADOF18Hds , B7ADOF18Rdt , B7ADOF18V , & + B7ADOF18Wvs , B7ADOF19A , B7ADOF19Add , B7ADOF19D , B7ADOF19Hds , B7ADOF19Rdt , B7ADOF19V , & + B7ADOF19Wvs , B7ADOF1A , B7ADOF1Add , B7ADOF1D , B7ADOF1Hds , B7ADOF1Rdt , B7ADOF1V , & + B7ADOF1Wvs , B7ADOF20A , B7ADOF20Add , B7ADOF20D , B7ADOF20Hds , B7ADOF20Rdt , B7ADOF20V , & + B7ADOF20Wvs , B7ADOF21A , B7ADOF21Add , B7ADOF21D , B7ADOF21Hds , B7ADOF21Rdt , B7ADOF21V , & + B7ADOF21Wvs , B7ADOF22A , B7ADOF22Add , B7ADOF22D , B7ADOF22Hds , B7ADOF22Rdt , B7ADOF22V , & + B7ADOF22Wvs , B7ADOF23A , B7ADOF23Add , B7ADOF23D , B7ADOF23Hds , B7ADOF23Rdt , B7ADOF23V , & + B7ADOF23Wvs , B7ADOF24A , B7ADOF24Add , B7ADOF24D , B7ADOF24Hds , B7ADOF24Rdt , B7ADOF24V , & + B7ADOF24Wvs , B7ADOF25A , B7ADOF25Add , B7ADOF25D , B7ADOF25Hds , B7ADOF25Rdt , B7ADOF25V , & + B7ADOF25Wvs , B7ADOF26A , B7ADOF26Add , B7ADOF26D , B7ADOF26Hds , B7ADOF26Rdt , B7ADOF26V , & + B7ADOF26Wvs , B7ADOF27A , B7ADOF27Add , B7ADOF27D , B7ADOF27Hds , B7ADOF27Rdt , B7ADOF27V , & + B7ADOF27Wvs , B7ADOF28A , B7ADOF28Add , B7ADOF28D , B7ADOF28Hds , B7ADOF28Rdt , B7ADOF28V , & + B7ADOF28Wvs , B7ADOF29A , B7ADOF29Add , B7ADOF29D , B7ADOF29Hds , B7ADOF29Rdt , B7ADOF29V , & + B7ADOF29Wvs , B7ADOF2A , B7ADOF2Add , B7ADOF2D , B7ADOF2Hds , B7ADOF2Rdt , B7ADOF2V , & + B7ADOF2Wvs , B7ADOF30A , B7ADOF30Add , B7ADOF30D , B7ADOF30Hds , B7ADOF30Rdt , B7ADOF30V , & + B7ADOF30Wvs , B7ADOF31A , B7ADOF31Add , B7ADOF31D , B7ADOF31Hds , B7ADOF31Rdt , B7ADOF31V , & + B7ADOF31Wvs , B7ADOF32A , B7ADOF32Add , B7ADOF32D , B7ADOF32Hds , B7ADOF32Rdt , B7ADOF32V , & + B7ADOF32Wvs , B7ADOF33A , B7ADOF33Add , B7ADOF33D , B7ADOF33Hds , B7ADOF33Rdt , B7ADOF33V , & + B7ADOF33Wvs , B7ADOF34A , B7ADOF34Add , B7ADOF34D , B7ADOF34Hds , B7ADOF34Rdt , B7ADOF34V , & + B7ADOF34Wvs , B7ADOF35A , B7ADOF35Add , B7ADOF35D , B7ADOF35Hds , B7ADOF35Rdt , B7ADOF35V , & + B7ADOF35Wvs , B7ADOF36A , B7ADOF36Add , B7ADOF36D , B7ADOF36Hds , B7ADOF36Rdt , B7ADOF36V , & + B7ADOF36Wvs , B7ADOF37A , B7ADOF37Add , B7ADOF37D , B7ADOF37Hds , B7ADOF37Rdt , B7ADOF37V , & + B7ADOF37Wvs , B7ADOF38A , B7ADOF38Add , B7ADOF38D , B7ADOF38Hds , B7ADOF38Rdt , B7ADOF38V , & + B7ADOF38Wvs , B7ADOF39A , B7ADOF39Add , B7ADOF39D , B7ADOF39Hds , B7ADOF39Rdt , B7ADOF39V , & + B7ADOF39Wvs , B7ADOF3A , B7ADOF3Add , B7ADOF3D , B7ADOF3Hds , B7ADOF3Rdt , B7ADOF3V , & + B7ADOF3Wvs , B7ADOF40A , B7ADOF40Add , B7ADOF40D , B7ADOF40Hds , B7ADOF40Rdt , B7ADOF40V , & + B7ADOF40Wvs , B7ADOF41A , B7ADOF41Add , B7ADOF41D , B7ADOF41Hds , B7ADOF41Rdt , B7ADOF41V , & + B7ADOF41Wvs , B7ADOF42A , B7ADOF42Add , B7ADOF42D , B7ADOF42Hds , B7ADOF42Rdt , B7ADOF42V , & + B7ADOF42Wvs , B7ADOF43A , B7ADOF43Add , B7ADOF43D , B7ADOF43Hds , B7ADOF43Rdt , B7ADOF43V , & + B7ADOF43Wvs , B7ADOF44A , B7ADOF44Add , B7ADOF44D , B7ADOF44Hds , B7ADOF44Rdt , B7ADOF44V , & + B7ADOF44Wvs , B7ADOF45A , B7ADOF45Add , B7ADOF45D , B7ADOF45Hds , B7ADOF45Rdt , B7ADOF45V , & + B7ADOF45Wvs , B7ADOF46A , B7ADOF46Add , B7ADOF46D , B7ADOF46Hds , B7ADOF46Rdt , B7ADOF46V , & + B7ADOF46Wvs , B7ADOF47A , B7ADOF47Add , B7ADOF47D , B7ADOF47Hds , B7ADOF47Rdt , B7ADOF47V , & + B7ADOF47Wvs , B7ADOF48A , B7ADOF48Add , B7ADOF48D , B7ADOF48Hds , B7ADOF48Rdt , B7ADOF48V , & + B7ADOF48Wvs , B7ADOF49A , B7ADOF49Add , B7ADOF49D , B7ADOF49Hds , B7ADOF49Rdt , B7ADOF49V , & + B7ADOF49Wvs , B7ADOF4A , B7ADOF4Add , B7ADOF4D , B7ADOF4Hds , B7ADOF4Rdt , B7ADOF4V , & + B7ADOF4Wvs , B7ADOF50A , B7ADOF50Add , B7ADOF50D , B7ADOF50Hds , B7ADOF50Rdt , B7ADOF50V , & + B7ADOF50Wvs , B7ADOF51A , B7ADOF51Add , B7ADOF51D , B7ADOF51Hds , B7ADOF51Rdt , B7ADOF51V , & + B7ADOF51Wvs , B7ADOF52A , B7ADOF52Add , B7ADOF52D , B7ADOF52Hds , B7ADOF52Rdt , B7ADOF52V , & + B7ADOF52Wvs , B7ADOF53A , B7ADOF53Add , B7ADOF53D , B7ADOF53Hds , B7ADOF53Rdt , B7ADOF53V , & + B7ADOF53Wvs , B7ADOF54A , B7ADOF54Add , B7ADOF54D , B7ADOF54Hds , B7ADOF54Rdt , B7ADOF54V , & + B7ADOF54Wvs , B7ADOF55A , B7ADOF55Add , B7ADOF55D , B7ADOF55Hds , B7ADOF55Rdt , B7ADOF55V , & + B7ADOF55Wvs , B7ADOF56A , B7ADOF56Add , B7ADOF56D , B7ADOF56Hds , B7ADOF56Rdt , B7ADOF56V , & + B7ADOF56Wvs , B7ADOF57A , B7ADOF57Add , B7ADOF57D , B7ADOF57Hds , B7ADOF57Rdt , B7ADOF57V , & + B7ADOF57Wvs , B7ADOF58A , B7ADOF58Add , B7ADOF58D , B7ADOF58Hds , B7ADOF58Rdt , B7ADOF58V , & + B7ADOF58Wvs , B7ADOF59A , B7ADOF59Add , B7ADOF59D , B7ADOF59Hds , B7ADOF59Rdt , B7ADOF59V , & + B7ADOF59Wvs , B7ADOF5A , B7ADOF5Add , B7ADOF5D , B7ADOF5Hds , B7ADOF5Rdt , B7ADOF5V , & + B7ADOF5Wvs , B7ADOF60A , B7ADOF60Add , B7ADOF60D , B7ADOF60Hds , B7ADOF60Rdt , B7ADOF60V , & + B7ADOF60Wvs , B7ADOF61A , B7ADOF61Add , B7ADOF61D , B7ADOF61Hds , B7ADOF61Rdt , B7ADOF61V , & + B7ADOF61Wvs , B7ADOF62A , B7ADOF62Add , B7ADOF62D , B7ADOF62Hds , B7ADOF62Rdt , B7ADOF62V , & + B7ADOF62Wvs , B7ADOF63A , B7ADOF63Add , B7ADOF63D , B7ADOF63Hds , B7ADOF63Rdt , B7ADOF63V , & + B7ADOF63Wvs , B7ADOF64A , B7ADOF64Add , B7ADOF64D , B7ADOF64Hds , B7ADOF64Rdt , B7ADOF64V , & + B7ADOF64Wvs , B7ADOF65A , B7ADOF65Add , B7ADOF65D , B7ADOF65Hds , B7ADOF65Rdt , B7ADOF65V , & + B7ADOF65Wvs , B7ADOF66A , B7ADOF66Add , B7ADOF66D , B7ADOF66Hds , B7ADOF66Rdt , B7ADOF66V , & + B7ADOF66Wvs , B7ADOF67A , B7ADOF67Add , B7ADOF67D , B7ADOF67Hds , B7ADOF67Rdt , B7ADOF67V , & + B7ADOF67Wvs , B7ADOF68A , B7ADOF68Add , B7ADOF68D , B7ADOF68Hds , B7ADOF68Rdt , B7ADOF68V , & + B7ADOF68Wvs , B7ADOF69A , B7ADOF69Add , B7ADOF69D , B7ADOF69Hds , B7ADOF69Rdt , B7ADOF69V , & + B7ADOF69Wvs , B7ADOF6A , B7ADOF6Add , B7ADOF6D , B7ADOF6Hds , B7ADOF6Rdt , B7ADOF6V , & + B7ADOF6Wvs , B7ADOF70A , B7ADOF70Add , B7ADOF70D , B7ADOF70Hds , B7ADOF70Rdt , B7ADOF70V , & + B7ADOF70Wvs , B7ADOF71A , B7ADOF71Add , B7ADOF71D , B7ADOF71Hds , B7ADOF71Rdt , B7ADOF71V , & + B7ADOF71Wvs , B7ADOF72A , B7ADOF72Add , B7ADOF72D , B7ADOF72Hds , B7ADOF72Rdt , B7ADOF72V , & + B7ADOF72Wvs , B7ADOF73A , B7ADOF73Add , B7ADOF73D , B7ADOF73Hds , B7ADOF73Rdt , B7ADOF73V , & + B7ADOF73Wvs , B7ADOF74A , B7ADOF74Add , B7ADOF74D , B7ADOF74Hds , B7ADOF74Rdt , B7ADOF74V , & + B7ADOF74Wvs , B7ADOF75A , B7ADOF75Add , B7ADOF75D , B7ADOF75Hds , B7ADOF75Rdt , B7ADOF75V , & + B7ADOF75Wvs , B7ADOF76A , B7ADOF76Add , B7ADOF76D , B7ADOF76Hds , B7ADOF76Rdt , B7ADOF76V , & + B7ADOF76Wvs , B7ADOF77A , B7ADOF77Add , B7ADOF77D , B7ADOF77Hds , B7ADOF77Rdt , B7ADOF77V , & + B7ADOF77Wvs , B7ADOF78A , B7ADOF78Add , B7ADOF78D , B7ADOF78Hds , B7ADOF78Rdt , B7ADOF78V , & + B7ADOF78Wvs , B7ADOF79A , B7ADOF79Add , B7ADOF79D , B7ADOF79Hds , B7ADOF79Rdt , B7ADOF79V , & + B7ADOF79Wvs , B7ADOF7A , B7ADOF7Add , B7ADOF7D , B7ADOF7Hds , B7ADOF7Rdt , B7ADOF7V , & + B7ADOF7Wvs , B7ADOF80A , B7ADOF80Add , B7ADOF80D , B7ADOF80Hds , B7ADOF80Rdt , B7ADOF80V , & + B7ADOF80Wvs , B7ADOF81A , B7ADOF81Add , B7ADOF81D , B7ADOF81Hds , B7ADOF81Rdt , B7ADOF81V , & + B7ADOF81Wvs , B7ADOF82A , B7ADOF82Add , B7ADOF82D , B7ADOF82Hds , B7ADOF82Rdt , B7ADOF82V , & + B7ADOF82Wvs , B7ADOF83A , B7ADOF83Add , B7ADOF83D , B7ADOF83Hds , B7ADOF83Rdt , B7ADOF83V , & + B7ADOF83Wvs , B7ADOF84A , B7ADOF84Add , B7ADOF84D , B7ADOF84Hds , B7ADOF84Rdt , B7ADOF84V /) + INTEGER(IntKi), PARAMETER :: ParamIndxAry4(1686) = (/ & ! This lists the index into AllOuts(:) of the allowed parameters ValidParamAry(:) + B7ADOF84Wvs , B7ADOF85A , B7ADOF85Add , B7ADOF85D , B7ADOF85Hds , B7ADOF85Rdt , B7ADOF85V , & + B7ADOF85Wvs , B7ADOF86A , B7ADOF86Add , B7ADOF86D , B7ADOF86Hds , B7ADOF86Rdt , B7ADOF86V , & + B7ADOF86Wvs , B7ADOF87A , B7ADOF87Add , B7ADOF87D , B7ADOF87Hds , B7ADOF87Rdt , B7ADOF87V , & + B7ADOF87Wvs , B7ADOF88A , B7ADOF88Add , B7ADOF88D , B7ADOF88Hds , B7ADOF88Rdt , B7ADOF88V , & + B7ADOF88Wvs , B7ADOF89A , B7ADOF89Add , B7ADOF89D , B7ADOF89Hds , B7ADOF89Rdt , B7ADOF89V , & + B7ADOF89Wvs , B7ADOF8A , B7ADOF8Add , B7ADOF8D , B7ADOF8Hds , B7ADOF8Rdt , B7ADOF8V , & + B7ADOF8Wvs , B7ADOF90A , B7ADOF90Add , B7ADOF90D , B7ADOF90Hds , B7ADOF90Rdt , B7ADOF90V , & + B7ADOF90Wvs , B7ADOF91A , B7ADOF91Add , B7ADOF91D , B7ADOF91Hds , B7ADOF91Rdt , B7ADOF91V , & + B7ADOF91Wvs , B7ADOF92A , B7ADOF92Add , B7ADOF92D , B7ADOF92Hds , B7ADOF92Rdt , B7ADOF92V , & + B7ADOF92Wvs , B7ADOF93A , B7ADOF93Add , B7ADOF93D , B7ADOF93Hds , B7ADOF93Rdt , B7ADOF93V , & + B7ADOF93Wvs , B7ADOF94A , B7ADOF94Add , B7ADOF94D , B7ADOF94Hds , B7ADOF94Rdt , B7ADOF94V , & + B7ADOF94Wvs , B7ADOF95A , B7ADOF95Add , B7ADOF95D , B7ADOF95Hds , B7ADOF95Rdt , B7ADOF95V , & + B7ADOF95Wvs , B7ADOF96A , B7ADOF96Add , B7ADOF96D , B7ADOF96Hds , B7ADOF96Rdt , B7ADOF96V , & + B7ADOF96Wvs , B7ADOF97A , B7ADOF97Add , B7ADOF97D , B7ADOF97Hds , B7ADOF97Rdt , B7ADOF97V , & + B7ADOF97Wvs , B7ADOF98A , B7ADOF98Add , B7ADOF98D , B7ADOF98Hds , B7ADOF98Rdt , B7ADOF98V , & + B7ADOF98Wvs , B7ADOF99A , B7ADOF99Add , B7ADOF99D , B7ADOF99Hds , B7ADOF99Rdt , B7ADOF99V , & + B7ADOF99Wvs , B7ADOF9A , B7ADOF9Add , B7ADOF9D , B7ADOF9Hds , B7ADOF9Rdt , B7ADOF9V , & + B7ADOF9Wvs , B7HdSFxi , B7HdSFyi , B7HdSFzi , B7HdSMxi , B7HdSMyi , B7HdSMzi , & + B7Heave , B7Pitch , B7RAxi , B7RAyi , B7RAzi , B7RdtFxi , B7RdtFyi , & + B7RdtFzi , B7RdtMxi , B7RdtMyi , B7RdtMzi , B7Roll , B7RVxi , B7RVyi , & + B7RVzi , B7Surge , B7Sway , B7TAxi , B7TAyi , B7TAzi , B7TVxi , & + B7TVyi , B7TVzi , B7WvsF1xi , B7WvsF1yi , B7WvsF1zi , B7WvsF2xi , B7WvsF2yi , & + B7WvsF2zi , B7WvsFxi , B7WvsFyi , B7WvsFzi , B7WvsM1xi , B7WvsM1yi , B7WvsM1zi , & + B7WvsM2xi , B7WvsM2yi , B7WvsM2zi , B7WvsMxi , B7WvsMyi , B7WvsMzi , B7Yaw , & + B8AddFxi , B8AddFyi , B8AddFzi , B8AddMxi , B8AddMyi , B8AddMzi , B8ADOF10A , & + B8ADOF10Add , B8ADOF10D , B8ADOF10Hds , B8ADOF10Rdt , B8ADOF10V , B8ADOF10Wvs , B8ADOF11A , & + B8ADOF11Add , B8ADOF11D , B8ADOF11Hds , B8ADOF11Rdt , B8ADOF11V , B8ADOF11Wvs , B8ADOF12A , & + B8ADOF12Add , B8ADOF12D , B8ADOF12Hds , B8ADOF12Rdt , B8ADOF12V , B8ADOF12Wvs , B8ADOF13A , & + B8ADOF13Add , B8ADOF13D , B8ADOF13Hds , B8ADOF13Rdt , B8ADOF13V , B8ADOF13Wvs , B8ADOF14A , & + B8ADOF14Add , B8ADOF14D , B8ADOF14Hds , B8ADOF14Rdt , B8ADOF14V , B8ADOF14Wvs , B8ADOF15A , & + B8ADOF15Add , B8ADOF15D , B8ADOF15Hds , B8ADOF15Rdt , B8ADOF15V , B8ADOF15Wvs , B8ADOF16A , & + B8ADOF16Add , B8ADOF16D , B8ADOF16Hds , B8ADOF16Rdt , B8ADOF16V , B8ADOF16Wvs , B8ADOF17A , & + B8ADOF17Add , B8ADOF17D , B8ADOF17Hds , B8ADOF17Rdt , B8ADOF17V , B8ADOF17Wvs , B8ADOF18A , & + B8ADOF18Add , B8ADOF18D , B8ADOF18Hds , B8ADOF18Rdt , B8ADOF18V , B8ADOF18Wvs , B8ADOF19A , & + B8ADOF19Add , B8ADOF19D , B8ADOF19Hds , B8ADOF19Rdt , B8ADOF19V , B8ADOF19Wvs , B8ADOF1A , & + B8ADOF1Add , B8ADOF1D , B8ADOF1Hds , B8ADOF1Rdt , B8ADOF1V , B8ADOF1Wvs , B8ADOF20A , & + B8ADOF20Add , B8ADOF20D , B8ADOF20Hds , B8ADOF20Rdt , B8ADOF20V , B8ADOF20Wvs , B8ADOF21A , & + B8ADOF21Add , B8ADOF21D , B8ADOF21Hds , B8ADOF21Rdt , B8ADOF21V , B8ADOF21Wvs , B8ADOF22A , & + B8ADOF22Add , B8ADOF22D , B8ADOF22Hds , B8ADOF22Rdt , B8ADOF22V , B8ADOF22Wvs , B8ADOF23A , & + B8ADOF23Add , B8ADOF23D , B8ADOF23Hds , B8ADOF23Rdt , B8ADOF23V , B8ADOF23Wvs , B8ADOF24A , & + B8ADOF24Add , B8ADOF24D , B8ADOF24Hds , B8ADOF24Rdt , B8ADOF24V , B8ADOF24Wvs , B8ADOF25A , & + B8ADOF25Add , B8ADOF25D , B8ADOF25Hds , B8ADOF25Rdt , B8ADOF25V , B8ADOF25Wvs , B8ADOF26A , & + B8ADOF26Add , B8ADOF26D , B8ADOF26Hds , B8ADOF26Rdt , B8ADOF26V , B8ADOF26Wvs , B8ADOF27A , & + B8ADOF27Add , B8ADOF27D , B8ADOF27Hds , B8ADOF27Rdt , B8ADOF27V , B8ADOF27Wvs , B8ADOF28A , & + B8ADOF28Add , B8ADOF28D , B8ADOF28Hds , B8ADOF28Rdt , B8ADOF28V , B8ADOF28Wvs , B8ADOF29A , & + B8ADOF29Add , B8ADOF29D , B8ADOF29Hds , B8ADOF29Rdt , B8ADOF29V , B8ADOF29Wvs , B8ADOF2A , & + B8ADOF2Add , B8ADOF2D , B8ADOF2Hds , B8ADOF2Rdt , B8ADOF2V , B8ADOF2Wvs , B8ADOF30A , & + B8ADOF30Add , B8ADOF30D , B8ADOF30Hds , B8ADOF30Rdt , B8ADOF30V , B8ADOF30Wvs , B8ADOF31A , & + B8ADOF31Add , B8ADOF31D , B8ADOF31Hds , B8ADOF31Rdt , B8ADOF31V , B8ADOF31Wvs , B8ADOF32A , & + B8ADOF32Add , B8ADOF32D , B8ADOF32Hds , B8ADOF32Rdt , B8ADOF32V , B8ADOF32Wvs , B8ADOF33A , & + B8ADOF33Add , B8ADOF33D , B8ADOF33Hds , B8ADOF33Rdt , B8ADOF33V , B8ADOF33Wvs , B8ADOF34A , & + B8ADOF34Add , B8ADOF34D , B8ADOF34Hds , B8ADOF34Rdt , B8ADOF34V , B8ADOF34Wvs , B8ADOF35A , & + B8ADOF35Add , B8ADOF35D , B8ADOF35Hds , B8ADOF35Rdt , B8ADOF35V , B8ADOF35Wvs , B8ADOF36A , & + B8ADOF36Add , B8ADOF36D , B8ADOF36Hds , B8ADOF36Rdt , B8ADOF36V , B8ADOF36Wvs , B8ADOF37A , & + B8ADOF37Add , B8ADOF37D , B8ADOF37Hds , B8ADOF37Rdt , B8ADOF37V , B8ADOF37Wvs , B8ADOF38A , & + B8ADOF38Add , B8ADOF38D , B8ADOF38Hds , B8ADOF38Rdt , B8ADOF38V , B8ADOF38Wvs , B8ADOF39A , & + B8ADOF39Add , B8ADOF39D , B8ADOF39Hds , B8ADOF39Rdt , B8ADOF39V , B8ADOF39Wvs , B8ADOF3A , & + B8ADOF3Add , B8ADOF3D , B8ADOF3Hds , B8ADOF3Rdt , B8ADOF3V , B8ADOF3Wvs , B8ADOF40A , & + B8ADOF40Add , B8ADOF40D , B8ADOF40Hds , B8ADOF40Rdt , B8ADOF40V , B8ADOF40Wvs , B8ADOF41A , & + B8ADOF41Add , B8ADOF41D , B8ADOF41Hds , B8ADOF41Rdt , B8ADOF41V , B8ADOF41Wvs , B8ADOF42A , & + B8ADOF42Add , B8ADOF42D , B8ADOF42Hds , B8ADOF42Rdt , B8ADOF42V , B8ADOF42Wvs , B8ADOF43A , & + B8ADOF43Add , B8ADOF43D , B8ADOF43Hds , B8ADOF43Rdt , B8ADOF43V , B8ADOF43Wvs , B8ADOF44A , & + B8ADOF44Add , B8ADOF44D , B8ADOF44Hds , B8ADOF44Rdt , B8ADOF44V , B8ADOF44Wvs , B8ADOF45A , & + B8ADOF45Add , B8ADOF45D , B8ADOF45Hds , B8ADOF45Rdt , B8ADOF45V , B8ADOF45Wvs , B8ADOF46A , & + B8ADOF46Add , B8ADOF46D , B8ADOF46Hds , B8ADOF46Rdt , B8ADOF46V , B8ADOF46Wvs , B8ADOF47A , & + B8ADOF47Add , B8ADOF47D , B8ADOF47Hds , B8ADOF47Rdt , B8ADOF47V , B8ADOF47Wvs , B8ADOF48A , & + B8ADOF48Add , B8ADOF48D , B8ADOF48Hds , B8ADOF48Rdt , B8ADOF48V , B8ADOF48Wvs , B8ADOF49A , & + B8ADOF49Add , B8ADOF49D , B8ADOF49Hds , B8ADOF49Rdt , B8ADOF49V , B8ADOF49Wvs , B8ADOF4A , & + B8ADOF4Add , B8ADOF4D , B8ADOF4Hds , B8ADOF4Rdt , B8ADOF4V , B8ADOF4Wvs , B8ADOF50A , & + B8ADOF50Add , B8ADOF50D , B8ADOF50Hds , B8ADOF50Rdt , B8ADOF50V , B8ADOF50Wvs , B8ADOF51A , & + B8ADOF51Add , B8ADOF51D , B8ADOF51Hds , B8ADOF51Rdt , B8ADOF51V , B8ADOF51Wvs , B8ADOF52A , & + B8ADOF52Add , B8ADOF52D , B8ADOF52Hds , B8ADOF52Rdt , B8ADOF52V , B8ADOF52Wvs , B8ADOF53A , & + B8ADOF53Add , B8ADOF53D , B8ADOF53Hds , B8ADOF53Rdt , B8ADOF53V , B8ADOF53Wvs , B8ADOF54A , & + B8ADOF54Add , B8ADOF54D , B8ADOF54Hds , B8ADOF54Rdt , B8ADOF54V , B8ADOF54Wvs , B8ADOF55A , & + B8ADOF55Add , B8ADOF55D , B8ADOF55Hds , B8ADOF55Rdt , B8ADOF55V , B8ADOF55Wvs , B8ADOF56A , & + B8ADOF56Add , B8ADOF56D , B8ADOF56Hds , B8ADOF56Rdt , B8ADOF56V , B8ADOF56Wvs , B8ADOF57A , & + B8ADOF57Add , B8ADOF57D , B8ADOF57Hds , B8ADOF57Rdt , B8ADOF57V , B8ADOF57Wvs , B8ADOF58A , & + B8ADOF58Add , B8ADOF58D , B8ADOF58Hds , B8ADOF58Rdt , B8ADOF58V , B8ADOF58Wvs , B8ADOF59A , & + B8ADOF59Add , B8ADOF59D , B8ADOF59Hds , B8ADOF59Rdt , B8ADOF59V , B8ADOF59Wvs , B8ADOF5A , & + B8ADOF5Add , B8ADOF5D , B8ADOF5Hds , B8ADOF5Rdt , B8ADOF5V , B8ADOF5Wvs , B8ADOF60A , & + B8ADOF60Add , B8ADOF60D , B8ADOF60Hds , B8ADOF60Rdt , B8ADOF60V , B8ADOF60Wvs , B8ADOF61A , & + B8ADOF61Add , B8ADOF61D , B8ADOF61Hds , B8ADOF61Rdt , B8ADOF61V , B8ADOF61Wvs , B8ADOF62A , & + B8ADOF62Add , B8ADOF62D , B8ADOF62Hds , B8ADOF62Rdt , B8ADOF62V , B8ADOF62Wvs , B8ADOF63A , & + B8ADOF63Add , B8ADOF63D , B8ADOF63Hds , B8ADOF63Rdt , B8ADOF63V , B8ADOF63Wvs , B8ADOF64A , & + B8ADOF64Add , B8ADOF64D , B8ADOF64Hds , B8ADOF64Rdt , B8ADOF64V , B8ADOF64Wvs , B8ADOF65A , & + B8ADOF65Add , B8ADOF65D , B8ADOF65Hds , B8ADOF65Rdt , B8ADOF65V , B8ADOF65Wvs , B8ADOF66A , & + B8ADOF66Add , B8ADOF66D , B8ADOF66Hds , B8ADOF66Rdt , B8ADOF66V , B8ADOF66Wvs , B8ADOF67A , & + B8ADOF67Add , B8ADOF67D , B8ADOF67Hds , B8ADOF67Rdt , B8ADOF67V , B8ADOF67Wvs , B8ADOF68A , & + B8ADOF68Add , B8ADOF68D , B8ADOF68Hds , B8ADOF68Rdt , B8ADOF68V , B8ADOF68Wvs , B8ADOF69A , & + B8ADOF69Add , B8ADOF69D , B8ADOF69Hds , B8ADOF69Rdt , B8ADOF69V , B8ADOF69Wvs , B8ADOF6A , & + B8ADOF6Add , B8ADOF6D , B8ADOF6Hds , B8ADOF6Rdt , B8ADOF6V , B8ADOF6Wvs , B8ADOF70A , & + B8ADOF70Add , B8ADOF70D , B8ADOF70Hds , B8ADOF70Rdt , B8ADOF70V , B8ADOF70Wvs , B8ADOF71A , & + B8ADOF71Add , B8ADOF71D , B8ADOF71Hds , B8ADOF71Rdt , B8ADOF71V , B8ADOF71Wvs , B8ADOF72A , & + B8ADOF72Add , B8ADOF72D , B8ADOF72Hds , B8ADOF72Rdt , B8ADOF72V , B8ADOF72Wvs , B8ADOF73A , & + B8ADOF73Add , B8ADOF73D , B8ADOF73Hds , B8ADOF73Rdt , B8ADOF73V , B8ADOF73Wvs , B8ADOF74A , & + B8ADOF74Add , B8ADOF74D , B8ADOF74Hds , B8ADOF74Rdt , B8ADOF74V , B8ADOF74Wvs , B8ADOF75A , & + B8ADOF75Add , B8ADOF75D , B8ADOF75Hds , B8ADOF75Rdt , B8ADOF75V , B8ADOF75Wvs , B8ADOF76A , & + B8ADOF76Add , B8ADOF76D , B8ADOF76Hds , B8ADOF76Rdt , B8ADOF76V , B8ADOF76Wvs , B8ADOF77A , & + B8ADOF77Add , B8ADOF77D , B8ADOF77Hds , B8ADOF77Rdt , B8ADOF77V , B8ADOF77Wvs , B8ADOF78A , & + B8ADOF78Add , B8ADOF78D , B8ADOF78Hds , B8ADOF78Rdt , B8ADOF78V , B8ADOF78Wvs , B8ADOF79A , & + B8ADOF79Add , B8ADOF79D , B8ADOF79Hds , B8ADOF79Rdt , B8ADOF79V , B8ADOF79Wvs , B8ADOF7A , & + B8ADOF7Add , B8ADOF7D , B8ADOF7Hds , B8ADOF7Rdt , B8ADOF7V , B8ADOF7Wvs , B8ADOF80A , & + B8ADOF80Add , B8ADOF80D , B8ADOF80Hds , B8ADOF80Rdt , B8ADOF80V , B8ADOF80Wvs , B8ADOF81A , & + B8ADOF81Add , B8ADOF81D , B8ADOF81Hds , B8ADOF81Rdt , B8ADOF81V , B8ADOF81Wvs , B8ADOF82A , & + B8ADOF82Add , B8ADOF82D , B8ADOF82Hds , B8ADOF82Rdt , B8ADOF82V , B8ADOF82Wvs , B8ADOF83A , & + B8ADOF83Add , B8ADOF83D , B8ADOF83Hds , B8ADOF83Rdt , B8ADOF83V , B8ADOF83Wvs , B8ADOF84A , & + B8ADOF84Add , B8ADOF84D , B8ADOF84Hds , B8ADOF84Rdt , B8ADOF84V , B8ADOF84Wvs , B8ADOF85A , & + B8ADOF85Add , B8ADOF85D , B8ADOF85Hds , B8ADOF85Rdt , B8ADOF85V , B8ADOF85Wvs , B8ADOF86A , & + B8ADOF86Add , B8ADOF86D , B8ADOF86Hds , B8ADOF86Rdt , B8ADOF86V , B8ADOF86Wvs , B8ADOF87A , & + B8ADOF87Add , B8ADOF87D , B8ADOF87Hds , B8ADOF87Rdt , B8ADOF87V , B8ADOF87Wvs , B8ADOF88A , & + B8ADOF88Add , B8ADOF88D , B8ADOF88Hds , B8ADOF88Rdt , B8ADOF88V , B8ADOF88Wvs , B8ADOF89A , & + B8ADOF89Add , B8ADOF89D , B8ADOF89Hds , B8ADOF89Rdt , B8ADOF89V , B8ADOF89Wvs , B8ADOF8A , & + B8ADOF8Add , B8ADOF8D , B8ADOF8Hds , B8ADOF8Rdt , B8ADOF8V , B8ADOF8Wvs , B8ADOF90A , & + B8ADOF90Add , B8ADOF90D , B8ADOF90Hds , B8ADOF90Rdt , B8ADOF90V , B8ADOF90Wvs , B8ADOF91A , & + B8ADOF91Add , B8ADOF91D , B8ADOF91Hds , B8ADOF91Rdt , B8ADOF91V , B8ADOF91Wvs , B8ADOF92A , & + B8ADOF92Add , B8ADOF92D , B8ADOF92Hds , B8ADOF92Rdt , B8ADOF92V , B8ADOF92Wvs , B8ADOF93A , & + B8ADOF93Add , B8ADOF93D , B8ADOF93Hds , B8ADOF93Rdt , B8ADOF93V , B8ADOF93Wvs , B8ADOF94A , & + B8ADOF94Add , B8ADOF94D , B8ADOF94Hds , B8ADOF94Rdt , B8ADOF94V , B8ADOF94Wvs , B8ADOF95A , & + B8ADOF95Add , B8ADOF95D , B8ADOF95Hds , B8ADOF95Rdt , B8ADOF95V , B8ADOF95Wvs , B8ADOF96A , & + B8ADOF96Add , B8ADOF96D , B8ADOF96Hds , B8ADOF96Rdt , B8ADOF96V , B8ADOF96Wvs , B8ADOF97A , & + B8ADOF97Add , B8ADOF97D , B8ADOF97Hds , B8ADOF97Rdt , B8ADOF97V , B8ADOF97Wvs , B8ADOF98A , & + B8ADOF98Add , B8ADOF98D , B8ADOF98Hds , B8ADOF98Rdt , B8ADOF98V , B8ADOF98Wvs , B8ADOF99A , & + B8ADOF99Add , B8ADOF99D , B8ADOF99Hds , B8ADOF99Rdt , B8ADOF99V , B8ADOF99Wvs , B8ADOF9A , & + B8ADOF9Add , B8ADOF9D , B8ADOF9Hds , B8ADOF9Rdt , B8ADOF9V , B8ADOF9Wvs , B8HdSFxi , & + B8HdSFyi , B8HdSFzi , B8HdSMxi , B8HdSMyi , B8HdSMzi , B8Heave , B8Pitch , & + B8RAxi , B8RAyi , B8RAzi , B8RdtFxi , B8RdtFyi , B8RdtFzi , B8RdtMxi , & + B8RdtMyi , B8RdtMzi , B8Roll , B8RVxi , B8RVyi , B8RVzi , B8Surge , & + B8Sway , B8TAxi , B8TAyi , B8TAzi , B8TVxi , B8TVyi , B8TVzi , & + B8WvsF1xi , B8WvsF1yi , B8WvsF1zi , B8WvsF2xi , B8WvsF2yi , B8WvsF2zi , B8WvsFxi , & + B8WvsFyi , B8WvsFzi , B8WvsM1xi , B8WvsM1yi , B8WvsM1zi , B8WvsM2xi , B8WvsM2yi , & + B8WvsM2zi , B8WvsMxi , B8WvsMyi , B8WvsMzi , B8Yaw , B9AddFxi , B9AddFyi , & + B9AddFzi , B9AddMxi , B9AddMyi , B9AddMzi , B9ADOF10A , B9ADOF10Add , B9ADOF10D , & + B9ADOF10Hds , B9ADOF10Rdt , B9ADOF10V , B9ADOF10Wvs , B9ADOF11A , B9ADOF11Add , B9ADOF11D , & + B9ADOF11Hds , B9ADOF11Rdt , B9ADOF11V , B9ADOF11Wvs , B9ADOF12A , B9ADOF12Add , B9ADOF12D , & + B9ADOF12Hds , B9ADOF12Rdt , B9ADOF12V , B9ADOF12Wvs , B9ADOF13A , B9ADOF13Add , B9ADOF13D , & + B9ADOF13Hds , B9ADOF13Rdt , B9ADOF13V , B9ADOF13Wvs , B9ADOF14A , B9ADOF14Add , B9ADOF14D , & + B9ADOF14Hds , B9ADOF14Rdt , B9ADOF14V , B9ADOF14Wvs , B9ADOF15A , B9ADOF15Add , B9ADOF15D , & + B9ADOF15Hds , B9ADOF15Rdt , B9ADOF15V , B9ADOF15Wvs , B9ADOF16A , B9ADOF16Add , B9ADOF16D , & + B9ADOF16Hds , B9ADOF16Rdt , B9ADOF16V , B9ADOF16Wvs , B9ADOF17A , B9ADOF17Add , B9ADOF17D , & + B9ADOF17Hds , B9ADOF17Rdt , B9ADOF17V , B9ADOF17Wvs , B9ADOF18A , B9ADOF18Add , B9ADOF18D , & + B9ADOF18Hds , B9ADOF18Rdt , B9ADOF18V , B9ADOF18Wvs , B9ADOF19A , B9ADOF19Add , B9ADOF19D , & + B9ADOF19Hds , B9ADOF19Rdt , B9ADOF19V , B9ADOF19Wvs , B9ADOF1A , B9ADOF1Add , B9ADOF1D , & + B9ADOF1Hds , B9ADOF1Rdt , B9ADOF1V , B9ADOF1Wvs , B9ADOF20A , B9ADOF20Add , B9ADOF20D , & + B9ADOF20Hds , B9ADOF20Rdt , B9ADOF20V , B9ADOF20Wvs , B9ADOF21A , B9ADOF21Add , B9ADOF21D , & + B9ADOF21Hds , B9ADOF21Rdt , B9ADOF21V , B9ADOF21Wvs , B9ADOF22A , B9ADOF22Add , B9ADOF22D , & + B9ADOF22Hds , B9ADOF22Rdt , B9ADOF22V , B9ADOF22Wvs , B9ADOF23A , B9ADOF23Add , B9ADOF23D , & + B9ADOF23Hds , B9ADOF23Rdt , B9ADOF23V , B9ADOF23Wvs , B9ADOF24A , B9ADOF24Add , B9ADOF24D , & + B9ADOF24Hds , B9ADOF24Rdt , B9ADOF24V , B9ADOF24Wvs , B9ADOF25A , B9ADOF25Add , B9ADOF25D , & + B9ADOF25Hds , B9ADOF25Rdt , B9ADOF25V , B9ADOF25Wvs , B9ADOF26A , B9ADOF26Add , B9ADOF26D , & + B9ADOF26Hds , B9ADOF26Rdt , B9ADOF26V , B9ADOF26Wvs , B9ADOF27A , B9ADOF27Add , B9ADOF27D , & + B9ADOF27Hds , B9ADOF27Rdt , B9ADOF27V , B9ADOF27Wvs , B9ADOF28A , B9ADOF28Add , B9ADOF28D , & + B9ADOF28Hds , B9ADOF28Rdt , B9ADOF28V , B9ADOF28Wvs , B9ADOF29A , B9ADOF29Add , B9ADOF29D , & + B9ADOF29Hds , B9ADOF29Rdt , B9ADOF29V , B9ADOF29Wvs , B9ADOF2A , B9ADOF2Add , B9ADOF2D , & + B9ADOF2Hds , B9ADOF2Rdt , B9ADOF2V , B9ADOF2Wvs , B9ADOF30A , B9ADOF30Add , B9ADOF30D , & + B9ADOF30Hds , B9ADOF30Rdt , B9ADOF30V , B9ADOF30Wvs , B9ADOF31A , B9ADOF31Add , B9ADOF31D , & + B9ADOF31Hds , B9ADOF31Rdt , B9ADOF31V , B9ADOF31Wvs , B9ADOF32A , B9ADOF32Add , B9ADOF32D , & + B9ADOF32Hds , B9ADOF32Rdt , B9ADOF32V , B9ADOF32Wvs , B9ADOF33A , B9ADOF33Add , B9ADOF33D , & + B9ADOF33Hds , B9ADOF33Rdt , B9ADOF33V , B9ADOF33Wvs , B9ADOF34A , B9ADOF34Add , B9ADOF34D , & + B9ADOF34Hds , B9ADOF34Rdt , B9ADOF34V , B9ADOF34Wvs , B9ADOF35A , B9ADOF35Add , B9ADOF35D , & + B9ADOF35Hds , B9ADOF35Rdt , B9ADOF35V , B9ADOF35Wvs , B9ADOF36A , B9ADOF36Add , B9ADOF36D , & + B9ADOF36Hds , B9ADOF36Rdt , B9ADOF36V , B9ADOF36Wvs , B9ADOF37A , B9ADOF37Add , B9ADOF37D , & + B9ADOF37Hds , B9ADOF37Rdt , B9ADOF37V , B9ADOF37Wvs , B9ADOF38A , B9ADOF38Add , B9ADOF38D , & + B9ADOF38Hds , B9ADOF38Rdt , B9ADOF38V , B9ADOF38Wvs , B9ADOF39A , B9ADOF39Add , B9ADOF39D , & + B9ADOF39Hds , B9ADOF39Rdt , B9ADOF39V , B9ADOF39Wvs , B9ADOF3A , B9ADOF3Add , B9ADOF3D , & + B9ADOF3Hds , B9ADOF3Rdt , B9ADOF3V , B9ADOF3Wvs , B9ADOF40A , B9ADOF40Add , B9ADOF40D , & + B9ADOF40Hds , B9ADOF40Rdt , B9ADOF40V , B9ADOF40Wvs , B9ADOF41A , B9ADOF41Add , B9ADOF41D , & + B9ADOF41Hds , B9ADOF41Rdt , B9ADOF41V , B9ADOF41Wvs , B9ADOF42A , B9ADOF42Add , B9ADOF42D , & + B9ADOF42Hds , B9ADOF42Rdt , B9ADOF42V , B9ADOF42Wvs , B9ADOF43A , B9ADOF43Add , B9ADOF43D , & + B9ADOF43Hds , B9ADOF43Rdt , B9ADOF43V , B9ADOF43Wvs , B9ADOF44A , B9ADOF44Add , B9ADOF44D , & + B9ADOF44Hds , B9ADOF44Rdt , B9ADOF44V , B9ADOF44Wvs , B9ADOF45A , B9ADOF45Add , B9ADOF45D , & + B9ADOF45Hds , B9ADOF45Rdt , B9ADOF45V , B9ADOF45Wvs , B9ADOF46A , B9ADOF46Add , B9ADOF46D , & + B9ADOF46Hds , B9ADOF46Rdt , B9ADOF46V , B9ADOF46Wvs , B9ADOF47A , B9ADOF47Add , B9ADOF47D , & + B9ADOF47Hds , B9ADOF47Rdt , B9ADOF47V , B9ADOF47Wvs , B9ADOF48A , B9ADOF48Add , B9ADOF48D , & + B9ADOF48Hds , B9ADOF48Rdt , B9ADOF48V , B9ADOF48Wvs , B9ADOF49A , B9ADOF49Add , B9ADOF49D , & + B9ADOF49Hds , B9ADOF49Rdt , B9ADOF49V , B9ADOF49Wvs , B9ADOF4A , B9ADOF4Add , B9ADOF4D , & + B9ADOF4Hds , B9ADOF4Rdt , B9ADOF4V , B9ADOF4Wvs , B9ADOF50A , B9ADOF50Add , B9ADOF50D , & + B9ADOF50Hds , B9ADOF50Rdt , B9ADOF50V , B9ADOF50Wvs , B9ADOF51A , B9ADOF51Add , B9ADOF51D , & + B9ADOF51Hds , B9ADOF51Rdt , B9ADOF51V , B9ADOF51Wvs , B9ADOF52A , B9ADOF52Add , B9ADOF52D , & + B9ADOF52Hds , B9ADOF52Rdt , B9ADOF52V , B9ADOF52Wvs , B9ADOF53A , B9ADOF53Add , B9ADOF53D , & + B9ADOF53Hds , B9ADOF53Rdt , B9ADOF53V , B9ADOF53Wvs , B9ADOF54A , B9ADOF54Add , B9ADOF54D , & + B9ADOF54Hds , B9ADOF54Rdt , B9ADOF54V , B9ADOF54Wvs , B9ADOF55A , B9ADOF55Add , B9ADOF55D , & + B9ADOF55Hds , B9ADOF55Rdt , B9ADOF55V , B9ADOF55Wvs , B9ADOF56A , B9ADOF56Add , B9ADOF56D , & + B9ADOF56Hds , B9ADOF56Rdt , B9ADOF56V , B9ADOF56Wvs , B9ADOF57A , B9ADOF57Add , B9ADOF57D , & + B9ADOF57Hds , B9ADOF57Rdt , B9ADOF57V , B9ADOF57Wvs , B9ADOF58A , B9ADOF58Add , B9ADOF58D , & + B9ADOF58Hds , B9ADOF58Rdt , B9ADOF58V , B9ADOF58Wvs , B9ADOF59A , B9ADOF59Add , B9ADOF59D , & + B9ADOF59Hds , B9ADOF59Rdt , B9ADOF59V , B9ADOF59Wvs , B9ADOF5A , B9ADOF5Add , B9ADOF5D , & + B9ADOF5Hds , B9ADOF5Rdt , B9ADOF5V , B9ADOF5Wvs , B9ADOF60A , B9ADOF60Add , B9ADOF60D , & + B9ADOF60Hds , B9ADOF60Rdt , B9ADOF60V , B9ADOF60Wvs , B9ADOF61A , B9ADOF61Add , B9ADOF61D , & + B9ADOF61Hds , B9ADOF61Rdt , B9ADOF61V , B9ADOF61Wvs , B9ADOF62A , B9ADOF62Add , B9ADOF62D , & + B9ADOF62Hds , B9ADOF62Rdt , B9ADOF62V , B9ADOF62Wvs , B9ADOF63A , B9ADOF63Add , B9ADOF63D , & + B9ADOF63Hds , B9ADOF63Rdt , B9ADOF63V , B9ADOF63Wvs , B9ADOF64A , B9ADOF64Add , B9ADOF64D , & + B9ADOF64Hds , B9ADOF64Rdt , B9ADOF64V , B9ADOF64Wvs , B9ADOF65A , B9ADOF65Add , B9ADOF65D , & + B9ADOF65Hds , B9ADOF65Rdt , B9ADOF65V , B9ADOF65Wvs , B9ADOF66A , B9ADOF66Add , B9ADOF66D , & + B9ADOF66Hds , B9ADOF66Rdt , B9ADOF66V , B9ADOF66Wvs , B9ADOF67A , B9ADOF67Add , B9ADOF67D , & + B9ADOF67Hds , B9ADOF67Rdt , B9ADOF67V , B9ADOF67Wvs , B9ADOF68A , B9ADOF68Add , B9ADOF68D , & + B9ADOF68Hds , B9ADOF68Rdt , B9ADOF68V , B9ADOF68Wvs , B9ADOF69A , B9ADOF69Add , B9ADOF69D , & + B9ADOF69Hds , B9ADOF69Rdt , B9ADOF69V , B9ADOF69Wvs , B9ADOF6A , B9ADOF6Add , B9ADOF6D , & + B9ADOF6Hds , B9ADOF6Rdt , B9ADOF6V , B9ADOF6Wvs , B9ADOF70A , B9ADOF70Add , B9ADOF70D , & + B9ADOF70Hds , B9ADOF70Rdt , B9ADOF70V , B9ADOF70Wvs , B9ADOF71A , B9ADOF71Add , B9ADOF71D , & + B9ADOF71Hds , B9ADOF71Rdt , B9ADOF71V , B9ADOF71Wvs , B9ADOF72A , B9ADOF72Add , B9ADOF72D , & + B9ADOF72Hds , B9ADOF72Rdt , B9ADOF72V , B9ADOF72Wvs , B9ADOF73A , B9ADOF73Add , B9ADOF73D , & + B9ADOF73Hds , B9ADOF73Rdt , B9ADOF73V , B9ADOF73Wvs , B9ADOF74A , B9ADOF74Add , B9ADOF74D , & + B9ADOF74Hds , B9ADOF74Rdt , B9ADOF74V , B9ADOF74Wvs , B9ADOF75A , B9ADOF75Add , B9ADOF75D , & + B9ADOF75Hds , B9ADOF75Rdt , B9ADOF75V , B9ADOF75Wvs , B9ADOF76A , B9ADOF76Add , B9ADOF76D , & + B9ADOF76Hds , B9ADOF76Rdt , B9ADOF76V , B9ADOF76Wvs , B9ADOF77A , B9ADOF77Add , B9ADOF77D , & + B9ADOF77Hds , B9ADOF77Rdt , B9ADOF77V , B9ADOF77Wvs , B9ADOF78A , B9ADOF78Add , B9ADOF78D , & + B9ADOF78Hds , B9ADOF78Rdt , B9ADOF78V , B9ADOF78Wvs , B9ADOF79A , B9ADOF79Add , B9ADOF79D , & + B9ADOF79Hds , B9ADOF79Rdt , B9ADOF79V , B9ADOF79Wvs , B9ADOF7A , B9ADOF7Add , B9ADOF7D , & + B9ADOF7Hds , B9ADOF7Rdt , B9ADOF7V , B9ADOF7Wvs , B9ADOF80A , B9ADOF80Add , B9ADOF80D , & + B9ADOF80Hds , B9ADOF80Rdt , B9ADOF80V , B9ADOF80Wvs , B9ADOF81A , B9ADOF81Add , B9ADOF81D , & + B9ADOF81Hds , B9ADOF81Rdt , B9ADOF81V , B9ADOF81Wvs , B9ADOF82A , B9ADOF82Add , B9ADOF82D , & + B9ADOF82Hds , B9ADOF82Rdt , B9ADOF82V , B9ADOF82Wvs , B9ADOF83A , B9ADOF83Add , B9ADOF83D , & + B9ADOF83Hds , B9ADOF83Rdt , B9ADOF83V , B9ADOF83Wvs , B9ADOF84A , B9ADOF84Add , B9ADOF84D , & + B9ADOF84Hds , B9ADOF84Rdt , B9ADOF84V , B9ADOF84Wvs , B9ADOF85A , B9ADOF85Add , B9ADOF85D , & + B9ADOF85Hds , B9ADOF85Rdt , B9ADOF85V , B9ADOF85Wvs , B9ADOF86A , B9ADOF86Add , B9ADOF86D , & + B9ADOF86Hds , B9ADOF86Rdt , B9ADOF86V , B9ADOF86Wvs , B9ADOF87A , B9ADOF87Add , B9ADOF87D , & + B9ADOF87Hds , B9ADOF87Rdt , B9ADOF87V , B9ADOF87Wvs , B9ADOF88A , B9ADOF88Add , B9ADOF88D , & + B9ADOF88Hds , B9ADOF88Rdt , B9ADOF88V , B9ADOF88Wvs , B9ADOF89A , B9ADOF89Add , B9ADOF89D , & + B9ADOF89Hds , B9ADOF89Rdt , B9ADOF89V , B9ADOF89Wvs , B9ADOF8A , B9ADOF8Add , B9ADOF8D , & + B9ADOF8Hds , B9ADOF8Rdt , B9ADOF8V , B9ADOF8Wvs , B9ADOF90A , B9ADOF90Add , B9ADOF90D , & + B9ADOF90Hds , B9ADOF90Rdt , B9ADOF90V , B9ADOF90Wvs , B9ADOF91A , B9ADOF91Add , B9ADOF91D , & + B9ADOF91Hds , B9ADOF91Rdt , B9ADOF91V , B9ADOF91Wvs , B9ADOF92A , B9ADOF92Add , B9ADOF92D , & + B9ADOF92Hds , B9ADOF92Rdt , B9ADOF92V , B9ADOF92Wvs , B9ADOF93A , B9ADOF93Add , B9ADOF93D , & + B9ADOF93Hds , B9ADOF93Rdt , B9ADOF93V , B9ADOF93Wvs , B9ADOF94A , B9ADOF94Add , B9ADOF94D , & + B9ADOF94Hds , B9ADOF94Rdt , B9ADOF94V , B9ADOF94Wvs , B9ADOF95A , B9ADOF95Add , B9ADOF95D , & + B9ADOF95Hds , B9ADOF95Rdt , B9ADOF95V , B9ADOF95Wvs , B9ADOF96A , B9ADOF96Add , B9ADOF96D , & + B9ADOF96Hds , B9ADOF96Rdt , B9ADOF96V , B9ADOF96Wvs , B9ADOF97A , B9ADOF97Add , B9ADOF97D , & + B9ADOF97Hds , B9ADOF97Rdt , B9ADOF97V , B9ADOF97Wvs , B9ADOF98A , B9ADOF98Add , B9ADOF98D , & + B9ADOF98Hds , B9ADOF98Rdt , B9ADOF98V , B9ADOF98Wvs , B9ADOF99A , B9ADOF99Add , B9ADOF99D , & + B9ADOF99Hds , B9ADOF99Rdt , B9ADOF99V , B9ADOF99Wvs , B9ADOF9A , B9ADOF9Add , B9ADOF9D , & + B9ADOF9Hds , B9ADOF9Rdt , B9ADOF9V , B9ADOF9Wvs , B9HdSFxi , B9HdSFyi , B9HdSFzi , & + B9HdSMxi , B9HdSMyi , B9HdSMzi , B9Heave , B9Pitch , B9RAxi , B9RAyi , & + B9RAzi , B9RdtFxi , B9RdtFyi , B9RdtFzi , B9RdtMxi , B9RdtMyi , B9RdtMzi , & + B9Roll , B9RVxi , B9RVyi , B9RVzi , B9Surge , B9Sway , B9TAxi , & + B9TAyi , B9TAzi , B9TVxi , B9TVyi , B9TVzi , B9WvsF1xi , B9WvsF1yi , & + B9WvsF1zi , B9WvsF2xi , B9WvsF2yi , B9WvsF2zi , B9WvsFxi , B9WvsFyi , B9WvsFzi , & + B9WvsM1xi , B9WvsM1yi , B9WvsM1zi , B9WvsM2xi , B9WvsM2yi , B9WvsM2zi , B9WvsMxi , & + B9WvsMyi , B9WvsMzi , B9Yaw , HydroFxi , HydroFyi , HydroFzi , HydroMxi , & + HydroMyi , HydroMzi , PRPHeave , PRPPitch , PRPRAxi , PRPRAyi , PRPRAzi , & + PRPRoll , PRPRVxi , PRPRVyi , PRPRVzi , PRPSurge , PRPSway , PRPTAxi , & + PRPTAyi , PRPTAzi , PRPTVxi , PRPTVyi , PRPTVzi , PRPYaw /) + INTEGER(IntKi), PARAMETER :: ParamIndxAry(6747) = (/ & ! This lists the index into AllOuts(:) of the allowed parameters ValidParamAry(:) + ParamIndxAry1, ParamIndxAry2, ParamIndxAry3, ParamIndxAry4/) + + CHARACTER(ChanLen), PARAMETER :: ParamUnitsAry1(1687) = (/ character(ChanLen) :: & ! This lists the units corresponding to the allowed parameters + "(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(N) ", & + "(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(m) ","(rad) ", & + "(rad/s^2)","(rad/s^2)","(rad/s^2)","(N) ","(N) ","(N) ","(N-m) ", & + "(N-m) ","(N-m) ","(rad) ","(rad/s) ","(rad/s) ","(rad/s) ","(m) ", & + "(m) ","(m/s^2) ","(m/s^2) ","(m/s^2) ","(m/s) ","(m/s) ","(m/s) ", & + "(N) ","(N) ","(N) ","(N) ","(N) ","(N) ","(N) ", & + "(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ", & + "(N-m) ","(N-m) ","(N-m) ","(N-m) ","(rad) ","(N) ","(N) ", & + "(N) ","(N-m) ","(N-m) ","(N-m) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(N) ","(N) ","(N) ", & + "(N-m) ","(N-m) ","(N-m) ","(m) ","(rad) ","(rad/s^2)","(rad/s^2)", & + "(rad/s^2)","(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ", & + "(rad) ","(rad/s) ","(rad/s) ","(rad/s) ","(m) ","(m) ","(m/s^2) ", & + "(m/s^2) ","(m/s^2) ","(m/s) ","(m/s) ","(m/s) ","(N) ","(N) ", & + "(N) ","(N) ","(N) ","(N) ","(N) ","(N) ","(N) ", & + "(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ", & + "(N-m) ","(N-m) ","(rad) ","(N) ","(N) ","(N) ","(N-m) ", & + "(N-m) ","(N-m) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) "/) + CHARACTER(ChanLen), PARAMETER :: ParamUnitsAry2(1687) = (/ character(ChanLen) :: & ! This lists the units corresponding to the allowed parameters + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(N) ","(N) ","(N) ","(N-m) ","(N-m) ", & + "(N-m) ","(m) ","(rad) ","(rad/s^2)","(rad/s^2)","(rad/s^2)","(N) ", & + "(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(rad) ","(rad/s) ", & + "(rad/s) ","(rad/s) ","(m) ","(m) ","(m/s^2) ","(m/s^2) ","(m/s^2) ", & + "(m/s) ","(m/s) ","(m/s) ","(N) ","(N) ","(N) ","(N) ", & + "(N) ","(N) ","(N) ","(N) ","(N) ","(N-m) ","(N-m) ", & + "(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ", & + "(rad) ","(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(m) ", & + "(rad) ","(rad/s^2)","(rad/s^2)","(rad/s^2)","(N) ","(N) ","(N) ", & + "(N-m) ","(N-m) ","(N-m) ","(rad) ","(rad/s) ","(rad/s) ","(rad/s) ", & + "(m) ","(m) ","(m/s^2) ","(m/s^2) ","(m/s^2) ","(m/s) ","(m/s) ", & + "(m/s) ","(N) ","(N) ","(N) ","(N) ","(N) ","(N) ", & + "(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ", & + "(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(rad) ","(N) ", & + "(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) "/) + CHARACTER(ChanLen), PARAMETER :: ParamUnitsAry3(1687) = (/ character(ChanLen) :: & ! This lists the units corresponding to the allowed parameters + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(N) ","(N) ", & + "(N) ","(N-m) ","(N-m) ","(N-m) ","(m) ","(rad) ","(rad/s^2)", & + "(rad/s^2)","(rad/s^2)","(N) ","(N) ","(N) ","(N-m) ","(N-m) ", & + "(N-m) ","(rad) ","(rad/s) ","(rad/s) ","(rad/s) ","(m) ","(m) ", & + "(m/s^2) ","(m/s^2) ","(m/s^2) ","(m/s) ","(m/s) ","(m/s) ","(N) ", & + "(N) ","(N) ","(N) ","(N) ","(N) ","(N) ","(N) ", & + "(N) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ", & + "(N-m) ","(N-m) ","(N-m) ","(rad) ","(N) ","(N) ","(N) ", & + "(N-m) ","(N-m) ","(N-m) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(N) ","(N) ","(N) ","(N-m) ", & + "(N-m) ","(N-m) ","(m) ","(rad) ","(rad/s^2)","(rad/s^2)","(rad/s^2)", & + "(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(rad) ", & + "(rad/s) ","(rad/s) ","(rad/s) ","(m) ","(m) ","(m/s^2) ","(m/s^2) ", & + "(m/s^2) ","(m/s) ","(m/s) ","(m/s) ","(N) ","(N) ","(N) ", & + "(N) ","(N) ","(N) ","(N) ","(N) ","(N) ","(N-m) ", & + "(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ", & + "(N-m) ","(rad) ","(N) ","(N) ","(N) ","(N-m) ","(N-m) ", & + "(N-m) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) "/) + CHARACTER(ChanLen), PARAMETER :: ParamUnitsAry4(1686) = (/ character(ChanLen) :: & ! This lists the units corresponding to the allowed parameters + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ", & + "(m) ","(rad) ","(rad/s^2)","(rad/s^2)","(rad/s^2)","(N) ","(N) ", & + "(N) ","(N-m) ","(N-m) ","(N-m) ","(rad) ","(rad/s) ","(rad/s) ", & + "(rad/s) ","(m) ","(m) ","(m/s^2) ","(m/s^2) ","(m/s^2) ","(m/s) ", & + "(m/s) ","(m/s) ","(N) ","(N) ","(N) ","(N) ","(N) ", & + "(N) ","(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ", & + "(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(rad) ", & + "(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(N) ", & + "(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(m) ","(rad) ", & + "(rad/s^2)","(rad/s^2)","(rad/s^2)","(N) ","(N) ","(N) ","(N-m) ", & + "(N-m) ","(N-m) ","(rad) ","(rad/s) ","(rad/s) ","(rad/s) ","(m) ", & + "(m) ","(m/s^2) ","(m/s^2) ","(m/s^2) ","(m/s) ","(m/s) ","(m/s) ", & + "(N) ","(N) ","(N) ","(N) ","(N) ","(N) ","(N) ", & + "(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ", & + "(N-m) ","(N-m) ","(N-m) ","(N-m) ","(rad) ","(N) ","(N) ", & + "(N) ","(N-m) ","(N-m) ","(N-m) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(-) ","(-) ","(-) ", & + "(-) ","(-) ","(-) ","(-) ","(N) ","(N) ","(N) ", & + "(N-m) ","(N-m) ","(N-m) ","(m) ","(rad) ","(rad/s^2)","(rad/s^2)", & + "(rad/s^2)","(N) ","(N) ","(N) ","(N-m) ","(N-m) ","(N-m) ", & + "(rad) ","(rad/s) ","(rad/s) ","(rad/s) ","(m) ","(m) ","(m/s^2) ", & + "(m/s^2) ","(m/s^2) ","(m/s) ","(m/s) ","(m/s) ","(N) ","(N) ", & + "(N) ","(N) ","(N) ","(N) ","(N) ","(N) ","(N) ", & + "(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ","(N-m) ", & + "(N-m) ","(N-m) ","(rad) ","(N) ","(N) ","(N) ","(N-m) ", & + "(N-m) ","(N-m) ","(m) ","(rad) ","(rad/s^2)","(rad/s^2)","(rad/s^2)", & + "(rad) ","(rad/s) ","(rad/s) ","(rad/s) ","(m) ","(m) ","(m/s^2) ", & "(m/s^2) ","(m/s^2) ","(m/s) ","(m/s) ","(m/s) ","(rad) "/) + CHARACTER(OutStrLenM1), PARAMETER :: ParamUnitsAry(6747) = (/ & ! This lists the units corresponding to the allowed parameters + ParamUnitsAry1, ParamUnitsAry2, ParamUnitsAry3, ParamUnitsAry4/) ! Initialize values diff --git a/modules/hydrodyn/src/HydroDyn_Types.f90 b/modules/hydrodyn/src/HydroDyn_Types.f90 index a38c8bc6e1..ae9883e08d 100644 --- a/modules/hydrodyn/src/HydroDyn_Types.f90 +++ b/modules/hydrodyn/src/HydroDyn_Types.f90 @@ -59,6 +59,7 @@ MODULE HydroDyn_Types INTEGER(IntKi) :: NBodyMod = 0_IntKi !< Body coupling model {1: include coupling terms between each body and NBody in HydroDyn equals NBODY in WAMIT, 2: neglect coupling terms between each body and NBODY=1 with XBODY=0 in WAMIT, 3: Neglect coupling terms between each body and NBODY=1 with XBODY=/0 in WAMIT} (switch) [only used when PotMod=1] [-] REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: PtfmVol0 !< [-] LOGICAL :: HasWAMIT = .false. !< .TRUE. if using WAMIT model, .FALSE. otherwise [-] + LOGICAL :: HasAddDOF = .false. !< .TRUE. if additional generalized DOF are present, .FALSE. otherwise [-] REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: WAMITULEN !< [-] REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: PtfmRefxt !< The xt offset of the body reference point(s) from (0,0,0) [1 to NBody; only used when PotMod=1; must be 0.0 if NBodyMod=2 ] [(m)] REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: PtfmRefyt !< The yt offset of the body reference point(s) from (0,0,0) [1 to NBody; only used when PotMod=1; must be 0.0 if NBodyMod=2 ] [(m)] @@ -66,6 +67,7 @@ MODULE HydroDyn_Types REAL(R8Ki) , DIMENSION(:), ALLOCATABLE :: PtfmRefztRot !< The rotation about zt of the body reference frame(s) from xt/yt [radians] REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: PtfmCOBxt !< [-] REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: PtfmCOByt !< [-] + INTEGER(IntKi) , DIMENSION(:), ALLOCATABLE :: NAddDOF !< Number of additional generalized degrees of freedom [-] TYPE(WAMIT_InitInputType) :: WAMIT !< Initialization data for WAMIT module [-] TYPE(WAMIT2_InitInputType) :: WAMIT2 !< Initialization data for WAMIT2 module [-] TYPE(Morison_InitInputType) :: Morison !< Initialization data for Morison module [-] @@ -153,6 +155,10 @@ MODULE HydroDyn_Types INTEGER(IntKi) :: PotMod = 0_IntKi !< 1 if using WAMIT model, 0 if no potential flow model, or 2 if FIT model [-] INTEGER(IntKi) :: NBody = 0_IntKi !< [>=1; only used when PotMod=1. If NBodyMod=1, the WAMIT data contains a vector of size 6*NBody x 1 and matrices of size 6*NBody x 6*NBody; if NBodyMod>1, there are NBody sets of WAMIT data each with a vector of size 6 x 1 and matrices of size 6 x 6] [-] INTEGER(IntKi) :: NBodyMod = 0_IntKi !< Body coupling model {1: include coupling terms between each body and NBody in HydroDyn equals NBODY in WAMIT, 2: neglect coupling terms between each body and NBODY=1 with XBODY=0 in WAMIT, 3: Neglect coupling terms between each body and NBODY=1 with XBODY=/0 in WAMIT} (switch) [only used when PotMod=1] [-] + LOGICAL :: HasAddDOF = .false. !< .TRUE. if additional generalized DOF are present, .FALSE. otherwise [-] + INTEGER(IntKi) , DIMENSION(:), ALLOCATABLE :: NAddDOF !< Number of additional generalized degrees of freedom [-] + INTEGER(IntKi) :: NDOF = 0_IntKi !< Total number of degrees of freedom [-] + INTEGER(IntKi) , DIMENSION(:), ALLOCATABLE :: BDOFStrt !< Starting DOF index for each body [-] INTEGER(IntKi) :: totalStates = 0_IntKi !< Number of excitation and radiation states for all WAMIT bodies [-] INTEGER(IntKi) :: totalExctnStates = 0_IntKi !< Number of excitation states for all WAMIT bodies [-] INTEGER(IntKi) :: totalRdtnStates = 0_IntKi !< Number of radiation states for all WAMIT bodies [-] @@ -185,6 +191,9 @@ MODULE HydroDyn_Types TYPE(Morison_InputType) :: Morison !< Morison module inputs [-] TYPE(MeshType) :: WAMITMesh !< Motions at the WAMIT reference point(s) in the inertial frame [-] TYPE(MeshType) :: PRPMesh !< Motions at the Platform reference point in the inertial frame [-] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: qAddDOF !< Displacement of potential-flow generalized DOF [-] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: qAddDOFDot !< Velocity of potential-flow generalized DOF [-] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: qAddDOFDotDot !< Acceleration of potential-flow generalized DOF [-] END TYPE HydroDyn_InputType ! ======================= ! ========= HydroDyn_OutputType ======= @@ -194,6 +203,7 @@ MODULE HydroDyn_Types TYPE(Morison_OutputType) :: Morison !< Morison module outputs [-] TYPE(MeshType) :: WAMITMesh !< Point Loads at the WAMIT reference point(s) in the inertial frame [-] REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: WriteOutput !< Outputs to be written to the output file(s) [-] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: FAddDOF !< Additional generalized DOF forcing [-] END TYPE HydroDyn_OutputType ! ======================= ! ========= HydroDyn_MiscVarType ======= @@ -224,13 +234,18 @@ MODULE HydroDyn_Types 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_y_WAMIT_Mesh = 9 ! HydroDyn%WAMIT(DL%i1)%Mesh - integer(IntKi), public, parameter :: HydroDyn_y_WAMIT2_Mesh = 10 ! HydroDyn%WAMIT2(DL%i1)%Mesh - integer(IntKi), public, parameter :: HydroDyn_y_Morison_Mesh = 11 ! HydroDyn%Morison%Mesh - integer(IntKi), public, parameter :: HydroDyn_y_Morison_VisMesh = 12 ! HydroDyn%Morison%VisMesh - integer(IntKi), public, parameter :: HydroDyn_y_Morison_WriteOutput = 13 ! HydroDyn%Morison%WriteOutput - integer(IntKi), public, parameter :: HydroDyn_y_WAMITMesh = 14 ! HydroDyn%WAMITMesh - integer(IntKi), public, parameter :: HydroDyn_y_WriteOutput = 15 ! HydroDyn%WriteOutput + 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 contains @@ -324,6 +339,7 @@ subroutine HydroDyn_CopyInputFile(SrcInputFileData, DstInputFileData, CtrlCode, DstInputFileData%PtfmVol0 = SrcInputFileData%PtfmVol0 end if DstInputFileData%HasWAMIT = SrcInputFileData%HasWAMIT + DstInputFileData%HasAddDOF = SrcInputFileData%HasAddDOF if (allocated(SrcInputFileData%WAMITULEN)) then LB(1:1) = lbound(SrcInputFileData%WAMITULEN) UB(1:1) = ubound(SrcInputFileData%WAMITULEN) @@ -408,6 +424,18 @@ subroutine HydroDyn_CopyInputFile(SrcInputFileData, DstInputFileData, CtrlCode, end if DstInputFileData%PtfmCOByt = SrcInputFileData%PtfmCOByt end if + if (allocated(SrcInputFileData%NAddDOF)) then + LB(1:1) = lbound(SrcInputFileData%NAddDOF) + UB(1:1) = ubound(SrcInputFileData%NAddDOF) + if (.not. allocated(DstInputFileData%NAddDOF)) then + allocate(DstInputFileData%NAddDOF(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstInputFileData%NAddDOF.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstInputFileData%NAddDOF = SrcInputFileData%NAddDOF + end if call WAMIT_CopyInitInput(SrcInputFileData%WAMIT, DstInputFileData%WAMIT, CtrlCode, ErrStat2, ErrMsg2) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) if (ErrStat >= AbortErrLev) return @@ -504,6 +532,9 @@ subroutine HydroDyn_DestroyInputFile(InputFileData, ErrStat, ErrMsg) if (allocated(InputFileData%PtfmCOByt)) then deallocate(InputFileData%PtfmCOByt) end if + if (allocated(InputFileData%NAddDOF)) then + deallocate(InputFileData%NAddDOF) + end if call WAMIT_DestroyInitInput(InputFileData%WAMIT, ErrStat2, ErrMsg2) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) call WAMIT2_DestroyInitInput(InputFileData%WAMIT2, ErrStat2, ErrMsg2) @@ -535,6 +566,7 @@ subroutine HydroDyn_PackInputFile(RF, Indata) call RegPack(RF, InData%NBodyMod) call RegPackAlloc(RF, InData%PtfmVol0) call RegPack(RF, InData%HasWAMIT) + call RegPack(RF, InData%HasAddDOF) call RegPackAlloc(RF, InData%WAMITULEN) call RegPackAlloc(RF, InData%PtfmRefxt) call RegPackAlloc(RF, InData%PtfmRefyt) @@ -542,6 +574,7 @@ subroutine HydroDyn_PackInputFile(RF, Indata) call RegPackAlloc(RF, InData%PtfmRefztRot) call RegPackAlloc(RF, InData%PtfmCOBxt) call RegPackAlloc(RF, InData%PtfmCOByt) + call RegPackAlloc(RF, InData%NAddDOF) call WAMIT_PackInitInput(RF, InData%WAMIT) call WAMIT2_PackInitInput(RF, InData%WAMIT2) call Morison_PackInitInput(RF, InData%Morison) @@ -583,6 +616,7 @@ subroutine HydroDyn_UnPackInputFile(RF, OutData) call RegUnpack(RF, OutData%NBodyMod); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%PtfmVol0); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%HasWAMIT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HasAddDOF); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%WAMITULEN); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%PtfmRefxt); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%PtfmRefyt); if (RegCheckErr(RF, RoutineName)) return @@ -590,6 +624,7 @@ subroutine HydroDyn_UnPackInputFile(RF, OutData) call RegUnpackAlloc(RF, OutData%PtfmRefztRot); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%PtfmCOBxt); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%PtfmCOByt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NAddDOF); if (RegCheckErr(RF, RoutineName)) return call WAMIT_UnpackInitInput(RF, OutData%WAMIT) ! WAMIT call WAMIT2_UnpackInitInput(RF, OutData%WAMIT2) ! WAMIT2 call Morison_UnpackInitInput(RF, OutData%Morison) ! Morison @@ -1308,6 +1343,32 @@ subroutine HydroDyn_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, Err DstParamData%PotMod = SrcParamData%PotMod DstParamData%NBody = SrcParamData%NBody DstParamData%NBodyMod = SrcParamData%NBodyMod + DstParamData%HasAddDOF = SrcParamData%HasAddDOF + if (allocated(SrcParamData%NAddDOF)) then + LB(1:1) = lbound(SrcParamData%NAddDOF) + UB(1:1) = ubound(SrcParamData%NAddDOF) + if (.not. allocated(DstParamData%NAddDOF)) then + allocate(DstParamData%NAddDOF(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%NAddDOF.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstParamData%NAddDOF = SrcParamData%NAddDOF + end if + DstParamData%NDOF = SrcParamData%NDOF + if (allocated(SrcParamData%BDOFStrt)) then + LB(1:1) = lbound(SrcParamData%BDOFStrt) + UB(1:1) = ubound(SrcParamData%BDOFStrt) + if (.not. allocated(DstParamData%BDOFStrt)) then + allocate(DstParamData%BDOFStrt(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%BDOFStrt.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstParamData%BDOFStrt = SrcParamData%BDOFStrt + end if DstParamData%totalStates = SrcParamData%totalStates DstParamData%totalExctnStates = SrcParamData%totalExctnStates DstParamData%totalRdtnStates = SrcParamData%totalRdtnStates @@ -1458,6 +1519,12 @@ subroutine HydroDyn_DestroyParam(ParamData, ErrStat, ErrMsg) end if call Morison_DestroyParam(ParamData%Morison, ErrStat2, ErrMsg2) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (allocated(ParamData%NAddDOF)) then + deallocate(ParamData%NAddDOF) + end if + if (allocated(ParamData%BDOFStrt)) then + deallocate(ParamData%BDOFStrt) + end if if (allocated(ParamData%AddF0)) then deallocate(ParamData%AddF0) end if @@ -1524,6 +1591,10 @@ subroutine HydroDyn_PackParam(RF, Indata) call RegPack(RF, InData%PotMod) call RegPack(RF, InData%NBody) call RegPack(RF, InData%NBodyMod) + call RegPack(RF, InData%HasAddDOF) + call RegPackAlloc(RF, InData%NAddDOF) + call RegPack(RF, InData%NDOF) + call RegPackAlloc(RF, InData%BDOFStrt) call RegPack(RF, InData%totalStates) call RegPack(RF, InData%totalExctnStates) call RegPack(RF, InData%totalRdtnStates) @@ -1610,6 +1681,10 @@ subroutine HydroDyn_UnPackParam(RF, OutData) call RegUnpack(RF, OutData%PotMod); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%NBody); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%NBodyMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HasAddDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NAddDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BDOFStrt); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%totalStates); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%totalExctnStates); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%totalRdtnStates); if (RegCheckErr(RF, RoutineName)) return @@ -1672,6 +1747,7 @@ subroutine HydroDyn_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, Err integer(IntKi), intent(in ) :: CtrlCode integer(IntKi), intent( out) :: ErrStat character(*), intent( out) :: ErrMsg + integer(B4Ki) :: LB(1), UB(1) integer(IntKi) :: ErrStat2 character(ErrMsgLen) :: ErrMsg2 character(*), parameter :: RoutineName = 'HydroDyn_CopyInput' @@ -1686,6 +1762,42 @@ subroutine HydroDyn_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, Err call MeshCopy(SrcInputData%PRPMesh, DstInputData%PRPMesh, CtrlCode, ErrStat2, ErrMsg2 ) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) if (ErrStat >= AbortErrLev) return + if (allocated(SrcInputData%qAddDOF)) then + LB(1:1) = lbound(SrcInputData%qAddDOF) + UB(1:1) = ubound(SrcInputData%qAddDOF) + if (.not. allocated(DstInputData%qAddDOF)) then + allocate(DstInputData%qAddDOF(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstInputData%qAddDOF.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstInputData%qAddDOF = SrcInputData%qAddDOF + end if + if (allocated(SrcInputData%qAddDOFDot)) then + LB(1:1) = lbound(SrcInputData%qAddDOFDot) + UB(1:1) = ubound(SrcInputData%qAddDOFDot) + if (.not. allocated(DstInputData%qAddDOFDot)) then + allocate(DstInputData%qAddDOFDot(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstInputData%qAddDOFDot.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstInputData%qAddDOFDot = SrcInputData%qAddDOFDot + end if + if (allocated(SrcInputData%qAddDOFDotDot)) then + LB(1:1) = lbound(SrcInputData%qAddDOFDotDot) + UB(1:1) = ubound(SrcInputData%qAddDOFDotDot) + if (.not. allocated(DstInputData%qAddDOFDotDot)) then + allocate(DstInputData%qAddDOFDotDot(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstInputData%qAddDOFDotDot.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstInputData%qAddDOFDotDot = SrcInputData%qAddDOFDotDot + end if end subroutine subroutine HydroDyn_DestroyInput(InputData, ErrStat, ErrMsg) @@ -1703,6 +1815,15 @@ subroutine HydroDyn_DestroyInput(InputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) call MeshDestroy( InputData%PRPMesh, ErrStat2, ErrMsg2) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (allocated(InputData%qAddDOF)) then + deallocate(InputData%qAddDOF) + end if + if (allocated(InputData%qAddDOFDot)) then + deallocate(InputData%qAddDOFDot) + end if + if (allocated(InputData%qAddDOFDotDot)) then + deallocate(InputData%qAddDOFDotDot) + end if end subroutine subroutine HydroDyn_PackInput(RF, Indata) @@ -1713,6 +1834,9 @@ subroutine HydroDyn_PackInput(RF, Indata) call Morison_PackInput(RF, InData%Morison) call MeshPack(RF, InData%WAMITMesh) call MeshPack(RF, InData%PRPMesh) + call RegPackAlloc(RF, InData%qAddDOF) + call RegPackAlloc(RF, InData%qAddDOFDot) + call RegPackAlloc(RF, InData%qAddDOFDotDot) if (RegCheckErr(RF, RoutineName)) return end subroutine @@ -1720,10 +1844,16 @@ subroutine HydroDyn_UnPackInput(RF, OutData) type(RegFile), intent(inout) :: RF type(HydroDyn_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'HydroDyn_UnPackInput' + integer(B4Ki) :: LB(1), UB(1) + integer(IntKi) :: stat + logical :: IsAllocAssoc if (RF%ErrStat /= ErrID_None) return call Morison_UnpackInput(RF, OutData%Morison) ! Morison call MeshUnpack(RF, OutData%WAMITMesh) ! WAMITMesh call MeshUnpack(RF, OutData%PRPMesh) ! PRPMesh + call RegUnpackAlloc(RF, OutData%qAddDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%qAddDOFDot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%qAddDOFDotDot); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine HydroDyn_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -1789,6 +1919,18 @@ subroutine HydroDyn_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, end if DstOutputData%WriteOutput = SrcOutputData%WriteOutput end if + if (allocated(SrcOutputData%FAddDOF)) then + LB(1:1) = lbound(SrcOutputData%FAddDOF) + UB(1:1) = ubound(SrcOutputData%FAddDOF) + if (.not. allocated(DstOutputData%FAddDOF)) then + allocate(DstOutputData%FAddDOF(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstOutputData%FAddDOF.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstOutputData%FAddDOF = SrcOutputData%FAddDOF + end if end subroutine subroutine HydroDyn_DestroyOutput(OutputData, ErrStat, ErrMsg) @@ -1827,6 +1969,9 @@ subroutine HydroDyn_DestroyOutput(OutputData, ErrStat, ErrMsg) if (allocated(OutputData%WriteOutput)) then deallocate(OutputData%WriteOutput) end if + if (allocated(OutputData%FAddDOF)) then + deallocate(OutputData%FAddDOF) + end if end subroutine subroutine HydroDyn_PackOutput(RF, Indata) @@ -1857,6 +2002,7 @@ subroutine HydroDyn_PackOutput(RF, Indata) call Morison_PackOutput(RF, InData%Morison) call MeshPack(RF, InData%WAMITMesh) call RegPackAlloc(RF, InData%WriteOutput) + call RegPackAlloc(RF, InData%FAddDOF) if (RegCheckErr(RF, RoutineName)) return end subroutine @@ -1898,6 +2044,7 @@ subroutine HydroDyn_UnPackOutput(RF, OutData) call Morison_UnpackOutput(RF, OutData%Morison) ! Morison call MeshUnpack(RF, OutData%WAMITMesh) ! WAMITMesh call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FAddDOF); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine HydroDyn_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -2267,6 +2414,8 @@ SUBROUTINE HydroDyn_Input_ExtrapInterp1(u1, u2, tin, u_out, tin_out, ErrStat, Er 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 = '' @@ -2290,6 +2439,15 @@ SUBROUTINE HydroDyn_Input_ExtrapInterp1(u1, u2, tin, u_out, tin_out, ErrStat, Er CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) CALL MeshExtrapInterp1(u1%PRPMesh, u2%PRPMesh, tin, u_out%PRPMesh, tin_out, ErrStat2, ErrMsg2) CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) + IF (ALLOCATED(u_out%qAddDOF) .AND. ALLOCATED(u1%qAddDOF)) THEN + u_out%qAddDOF = a1*u1%qAddDOF + a2*u2%qAddDOF + END IF ! check if allocated + IF (ALLOCATED(u_out%qAddDOFDot) .AND. ALLOCATED(u1%qAddDOFDot)) THEN + u_out%qAddDOFDot = a1*u1%qAddDOFDot + a2*u2%qAddDOFDot + END IF ! check if allocated + IF (ALLOCATED(u_out%qAddDOFDotDot) .AND. ALLOCATED(u1%qAddDOFDotDot)) THEN + u_out%qAddDOFDotDot = a1*u1%qAddDOFDotDot + a2*u2%qAddDOFDotDot + END IF ! check if allocated END SUBROUTINE SUBROUTINE HydroDyn_Input_ExtrapInterp2(u1, u2, u3, tin, u_out, tin_out, ErrStat, ErrMsg ) @@ -2322,6 +2480,8 @@ SUBROUTINE HydroDyn_Input_ExtrapInterp2(u1, u2, u3, tin, u_out, tin_out, ErrStat INTEGER(IntKi) :: ErrStat2 ! local errors CHARACTER(ErrMsgLen) :: ErrMsg2 ! local errors CHARACTER(*), PARAMETER :: RoutineName = 'HydroDyn_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 = '' @@ -2351,6 +2511,15 @@ SUBROUTINE HydroDyn_Input_ExtrapInterp2(u1, u2, u3, tin, u_out, tin_out, ErrStat CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) CALL MeshExtrapInterp2(u1%PRPMesh, u2%PRPMesh, u3%PRPMesh, tin, u_out%PRPMesh, tin_out, ErrStat2, ErrMsg2) CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) + IF (ALLOCATED(u_out%qAddDOF) .AND. ALLOCATED(u1%qAddDOF)) THEN + u_out%qAddDOF = a1*u1%qAddDOF + a2*u2%qAddDOF + a3*u3%qAddDOF + END IF ! check if allocated + IF (ALLOCATED(u_out%qAddDOFDot) .AND. ALLOCATED(u1%qAddDOFDot)) THEN + u_out%qAddDOFDot = a1*u1%qAddDOFDot + a2*u2%qAddDOFDot + a3*u3%qAddDOFDot + END IF ! check if allocated + IF (ALLOCATED(u_out%qAddDOFDotDot) .AND. ALLOCATED(u1%qAddDOFDotDot)) THEN + u_out%qAddDOFDotDot = a1*u1%qAddDOFDotDot + a2*u2%qAddDOFDotDot + a3*u3%qAddDOFDotDot + END IF ! check if allocated END SUBROUTINE subroutine HydroDyn_Output_ExtrapInterp(y, t, y_out, t_out, ErrStat, ErrMsg) @@ -2469,6 +2638,9 @@ SUBROUTINE HydroDyn_Output_ExtrapInterp1(y1, y2, tin, y_out, tin_out, ErrStat, E IF (ALLOCATED(y_out%WriteOutput) .AND. ALLOCATED(y1%WriteOutput)) THEN y_out%WriteOutput = a1*y1%WriteOutput + a2*y2%WriteOutput END IF ! check if allocated + IF (ALLOCATED(y_out%FAddDOF) .AND. ALLOCATED(y1%FAddDOF)) THEN + y_out%FAddDOF = a1*y1%FAddDOF + a2*y2%FAddDOF + END IF ! check if allocated END SUBROUTINE SUBROUTINE HydroDyn_Output_ExtrapInterp2(y1, y2, y3, tin, y_out, tin_out, ErrStat, ErrMsg ) @@ -2545,6 +2717,9 @@ SUBROUTINE HydroDyn_Output_ExtrapInterp2(y1, y2, y3, tin, y_out, tin_out, ErrSta IF (ALLOCATED(y_out%WriteOutput) .AND. ALLOCATED(y1%WriteOutput)) THEN y_out%WriteOutput = a1*y1%WriteOutput + a2*y2%WriteOutput + a3*y3%WriteOutput END IF ! check if allocated + IF (ALLOCATED(y_out%FAddDOF) .AND. ALLOCATED(y1%FAddDOF)) THEN + y_out%FAddDOF = a1*y1%FAddDOF + a2*y2%FAddDOF + a3*y3%FAddDOF + END IF ! check if allocated END SUBROUTINE function HydroDyn_InputMeshPointer(u, DL) result(Mesh) @@ -2710,6 +2885,12 @@ subroutine HydroDyn_VarPackInput(V, u, ValAry) call MV_PackMesh(V, u%WAMITMesh, ValAry) ! Mesh case (HydroDyn_u_PRPMesh) call MV_PackMesh(V, u%PRPMesh, ValAry) ! Mesh + case (HydroDyn_u_qAddDOF) + VarVals = u%qAddDOF(V%iLB:V%iUB) ! Rank 1 Array + case (HydroDyn_u_qAddDOFDot) + VarVals = u%qAddDOFDot(V%iLB:V%iUB) ! Rank 1 Array + case (HydroDyn_u_qAddDOFDotDot) + VarVals = u%qAddDOFDotDot(V%iLB:V%iUB) ! Rank 1 Array case default VarVals = 0.0_R8Ki end select @@ -2740,6 +2921,12 @@ subroutine HydroDyn_VarUnpackInput(V, ValAry, u) call MV_UnpackMesh(V, ValAry, u%WAMITMesh) ! Mesh case (HydroDyn_u_PRPMesh) call MV_UnpackMesh(V, ValAry, u%PRPMesh) ! Mesh + case (HydroDyn_u_qAddDOF) + u%qAddDOF(V%iLB:V%iUB) = VarVals ! Rank 1 Array + case (HydroDyn_u_qAddDOFDot) + u%qAddDOFDot(V%iLB:V%iUB) = VarVals ! Rank 1 Array + case (HydroDyn_u_qAddDOFDotDot) + u%qAddDOFDotDot(V%iLB:V%iUB) = VarVals ! Rank 1 Array end select end associate end subroutine @@ -2756,6 +2943,12 @@ function HydroDyn_InputFieldName(DL) result(Name) Name = "u%WAMITMesh" case (HydroDyn_u_PRPMesh) Name = "u%PRPMesh" + case (HydroDyn_u_qAddDOF) + Name = "u%qAddDOF" + case (HydroDyn_u_qAddDOFDot) + Name = "u%qAddDOFDot" + case (HydroDyn_u_qAddDOFDotDot) + Name = "u%qAddDOFDotDot" case default Name = "Unknown Field" end select @@ -2779,6 +2972,8 @@ subroutine HydroDyn_VarPackOutput(V, y, ValAry) select case (DL%Num) case (HydroDyn_y_WAMIT_Mesh) call MV_PackMesh(V, y%WAMIT(DL%i1)%Mesh, ValAry) ! Mesh + case (HydroDyn_y_WAMIT_FAddDOF) + VarVals = y%WAMIT(DL%i1)%FAddDOF(V%iLB:V%iUB) ! Rank 1 Array case (HydroDyn_y_WAMIT2_Mesh) call MV_PackMesh(V, y%WAMIT2(DL%i1)%Mesh, ValAry) ! Mesh case (HydroDyn_y_Morison_Mesh) @@ -2791,6 +2986,8 @@ subroutine HydroDyn_VarPackOutput(V, y, ValAry) call MV_PackMesh(V, y%WAMITMesh, ValAry) ! Mesh case (HydroDyn_y_WriteOutput) VarVals = y%WriteOutput(V%iLB:V%iUB) ! Rank 1 Array + case (HydroDyn_y_FAddDOF) + VarVals = y%FAddDOF(V%iLB:V%iUB) ! Rank 1 Array case default VarVals = 0.0_R8Ki end select @@ -2815,6 +3012,8 @@ subroutine HydroDyn_VarUnpackOutput(V, ValAry, y) select case (DL%Num) case (HydroDyn_y_WAMIT_Mesh) call MV_UnpackMesh(V, ValAry, y%WAMIT(DL%i1)%Mesh) ! Mesh + case (HydroDyn_y_WAMIT_FAddDOF) + y%WAMIT(DL%i1)%FAddDOF(V%iLB:V%iUB) = VarVals ! Rank 1 Array case (HydroDyn_y_WAMIT2_Mesh) call MV_UnpackMesh(V, ValAry, y%WAMIT2(DL%i1)%Mesh) ! Mesh case (HydroDyn_y_Morison_Mesh) @@ -2827,6 +3026,8 @@ subroutine HydroDyn_VarUnpackOutput(V, ValAry, y) call MV_UnpackMesh(V, ValAry, y%WAMITMesh) ! Mesh case (HydroDyn_y_WriteOutput) y%WriteOutput(V%iLB:V%iUB) = VarVals ! Rank 1 Array + case (HydroDyn_y_FAddDOF) + y%FAddDOF(V%iLB:V%iUB) = VarVals ! Rank 1 Array end select end associate end subroutine @@ -2837,6 +3038,8 @@ function HydroDyn_OutputFieldName(DL) result(Name) select case (DL%Num) case (HydroDyn_y_WAMIT_Mesh) Name = "y%WAMIT("//trim(Num2LStr(DL%i1))//")%Mesh" + case (HydroDyn_y_WAMIT_FAddDOF) + Name = "y%WAMIT("//trim(Num2LStr(DL%i1))//")%FAddDOF" case (HydroDyn_y_WAMIT2_Mesh) Name = "y%WAMIT2("//trim(Num2LStr(DL%i1))//")%Mesh" case (HydroDyn_y_Morison_Mesh) @@ -2849,6 +3052,8 @@ function HydroDyn_OutputFieldName(DL) result(Name) Name = "y%WAMITMesh" case (HydroDyn_y_WriteOutput) Name = "y%WriteOutput" + case (HydroDyn_y_FAddDOF) + Name = "y%FAddDOF" case default Name = "Unknown Field" end select diff --git a/modules/hydrodyn/src/WAMIT.f90 b/modules/hydrodyn/src/WAMIT.f90 index 5194aae156..606bef5713 100644 --- a/modules/hydrodyn/src/WAMIT.f90 +++ b/modules/hydrodyn/src/WAMIT.f90 @@ -62,39 +62,61 @@ MODULE WAMIT !---------------------------------------------------------------------------------------------------------------------------------- !> This routine transforms WAMIT input file data from a local (heading-angle, based) coordinate system to the global system. - subroutine TransformWAMITMatrices( NBody, RotZ, M ) + subroutine TransformWAMITMatrices( p, RotZ, M ) !.................................................................................................................................. - integer(IntKi), intent( in ) :: NBody ! Number of WAMIT bodies in this WAMIT object ( = 1 if NBodyMod > 1) - real(R8Ki), intent( in ) :: RotZ(:) ! NBody heading angles (radians) - real(SiKi), intent( inout ) :: M(:,:) ! Matrix data to be transformed, if NBodyMOD = 1 and NBody > 1 then we will be transforming the individual sub 6x6 matrices + + TYPE(WAMIT_ParameterType), intent(in ) :: p ! Parameters + real(R8Ki), intent(in ) :: RotZ(:) ! NBody heading angles (radians) + real(SiKi), intent(inout) :: M(:,:) ! Matrix data to be transformed, if NBodyMOD = 1 and NBody > 1 then we will be transforming the individual sub (6+NAddDOF)x(6+NAddDOF) matrices integer(IntKi) :: i,j,ii,jj,iSub,jSub - real(R8Ki) :: Rj(3,3) - real(R8Ki) :: Ri(3,3) + real(R8Ki) :: Rj(6,6) + real(R8Ki) :: Ri(6,6) - do j = 1, NBody - Rj(1,:) = (/ cos(RotZ(j)), sin(RotZ(j)), 0.0_R8Ki/) - Rj(2,:) = (/-sin(RotZ(j)), cos(RotZ(j)), 0.0_R8Ki/) - Rj(3,:) = (/ 0.0_R8Ki , 0.0_R8Ki , 1.0_R8Ki/) - do i = 1, NBody + do j = 1, p%NBody + + jSub = p%BDOFStrt(j) + + Rj(1,:) = [ cos(RotZ(j)), sin(RotZ(j)), 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki] + Rj(2,:) = [-sin(RotZ(j)), cos(RotZ(j)), 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki] + Rj(3,:) = [ 0.0_R8Ki, 0.0_R8Ki, 1.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki] + Rj(4,:) = [ 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki, cos(RotZ(j)), sin(RotZ(j)), 0.0_R8Ki] + Rj(5,:) = [ 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki,-sin(RotZ(j)), cos(RotZ(j)), 0.0_R8Ki] + Rj(6,:) = [ 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki, 1.0_R8Ki] + + do i = 1, p%NBody + if ( (.not. EqualRealNos(RotZ(i), 0.0_R8Ki)) .or. (.not. EqualRealNos(RotZ(j), 0.0_R8Ki)) ) then - Ri(1,:) = (/ cos(RotZ(i)), sin(RotZ(i)), 0.0_R8Ki/) - Ri(2,:) = (/-sin(RotZ(i)), cos(RotZ(i)), 0.0_R8Ki/) - Ri(3,:) = (/ 0.0_R8Ki , 0.0_R8Ki , 1.0_R8Ki/) - do jj = 1,2 - jSub = (j-1)*6 + (jj-1)*3 + 1 - do ii = 1,2 - iSub = (i-1)*6 + (ii-1)*3 + 1 - M(iSub:iSub+2,jSub:jSub+2) = matmul( transpose(Ri), matmul( M(iSub:iSub+2,jSub:jSub+2), Rj ) ) - end do - end do + + iSub = p%BDOFStrt(i) + + Ri(1,:) = [ cos(RotZ(i)), sin(RotZ(i)), 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki] + Ri(2,:) = [-sin(RotZ(i)), cos(RotZ(i)), 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki] + Ri(3,:) = [ 0.0_R8Ki, 0.0_R8Ki, 1.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki] + Ri(4,:) = [ 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki, cos(RotZ(i)), sin(RotZ(i)), 0.0_R8Ki] + Ri(5,:) = [ 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki,-sin(RotZ(i)), cos(RotZ(i)), 0.0_R8Ki] + Ri(6,:) = [ 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki, 0.0_R8Ki, 1.0_R8Ki] + + ! Rigid-body to rigid-body modes + M(iSub:iSub+5,jSub:jSub+5) = matmul( transpose(Ri), matmul( M(iSub:iSub+5,jSub:jSub+5), Rj ) ) + ! Rigid-body to generalized modes + if ( p%NAddDOF(i) > 0_IntKi ) then + M(iSub+6:iSub+5+p%NAddDOF(i),jSub:jSub+5) = matmul( M(iSub+6:iSub+5+p%NAddDOF(i),jSub:jSub+5), Rj ) + end if + ! Generalized to rigid-body modes + if ( p%NAddDOF(j) > 0_IntKi ) then + M(iSub:iSub+5,jSub+6:jSub+5+p%NAddDOF(j)) = matmul( transpose(Ri), M(iSub:iSub+5,jSub+6:jSub+5+p%NAddDOF(j)) ) + end if + ! No transformation needed for generalized to generalized modes + end if + end do end do + end subroutine TransformWAMITMatrices - !---------------------------------------------------------------------------------------------------------------------------------- !> This routine is called at the start of the simulation to perform initialization steps. !! The parameters are set here and not changed during the simulation. @@ -141,6 +163,7 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS COMPLEX(SiKi), ALLOCATABLE :: WaveExctnC(:,:,:) ! Discrete Fourier transform of the instantaneous value of the total excitation force on the support platfrom from incident waves (N, N-m) COMPLEX(SiKi), ALLOCATABLE :: WaveExctnCGrid(:,:,:,:) ! Discrete Fourier transform of the instantaneous value of the total excitation force on the grid points from incident waves (N, N-m) REAL(ReKi) :: DffrctDim (6) ! Matrix used to redimensionalize WAMIT hydrodynamic wave excitation force output (kg/s^2, kg-m/s^2 ) + REAL(ReKi) :: DffrctDimAdd ! Redimensionalization factor for WAMIT hydrodynamic wave excitation force output for generalized DOF REAL(SiKi), ALLOCATABLE :: HdroAddMs (:,:,:) ! The frequency-dependent hydrodynamic added mass matrix from the radiation problem (kg , kg-m , kg-m^2 ) REAL(SiKi), ALLOCATABLE :: HdroDmpng (:,:,:) ! The frequency-dependent hydrodynamic damping matrix from the radiation problem (kg/s, kg-m/s, kg-m^2/s) REAL(SiKi), ALLOCATABLE :: HdroFreq (:) ! Frequency components inherent in the hydrodynamic added mass matrix, hydrodynamic daming matrix, and complex wave excitation force per unit wave amplitude vector (rad/s) @@ -151,7 +174,9 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS REAL(ReKi) :: PrvDir ! The value of TmpDir from the previous line (degrees) REAL(ReKi) :: PrvPer ! The value of TmpPer from the previous line (sec ) REAL(ReKi) :: SttcDim (6,6) ! Matrix used to redimensionalize WAMIT hydrostatic restoring output (kg/s^2, kg-m/s^2, kg-m^2/s^2) + REAL(ReKi) :: SttcDimAdd ! Redimensionalization factor for WAMIT hydrostatic restoring output for generalized DOF REAL(ReKi) :: RdtnDim (6,6) ! Matrix used to redimensionalize WAMIT hydrodynamic added mass and damping output (kg , kg-m , kg-m^2 ) + REAL(ReKi) :: RdtnDimAdd ! Redimensionalization factor for WAMIT hydrodynamic added mass and damping output for generalized DOF REAL(ReKi) :: TmpData1 ! A temporary value read in from a WAMIT file (- ) REAL(ReKi) :: TmpData2 ! A temporary value read in from a WAMIT file (- ) REAL(ReKi) :: TmpDir ! A temporary direction read in from a WAMIT file (degrees) @@ -164,7 +189,7 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS REAL(ReKi), ALLOCATABLE :: WAMITPer (:) ! Period components as ordered in the WAMIT output files (sec ) REAL(ReKi), ALLOCATABLE :: WAMITWvDir(:) ! Wave direction components as ordered in the WAMIT output files (degrees) - INTEGER :: I,iGrid,iX,iY,iHdg,iBdy,iStp ! Generic index + INTEGER :: I,iGrid,iX,iY,iHdg,iBdy,iStp,iDOF ! Generic index INTEGER :: InsertInd ! The lowest sorted index whose associated frequency component is higher than the current frequency component -- this is to sort the frequency components from lowest to highest INTEGER :: J ! Generic index INTEGER :: K ! Generic index @@ -263,17 +288,34 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS CALL SetErrStat( ErrID_Fatal, "DEVELOPER ERROR: If NBodyMod = 2 or 3, then NBody for the a WAMIT object must be equal to 1", ErrStat, ErrMsg, RoutineName) return end if + + call AllocAry( p%NAddDOF , p%NBody, 'p%NAddDOF' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call AllocAry( p%BDOFStrt, p%NBody, 'p%BDOFStrt', ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + p%NAddDOF = InitInp%NAddDOF + p%NDOF = 0_IntKi + do iBody = 1, p%NBody + p%BDOFStrt(iBody) = p%NDOF + 1_IntKi + p%NDOF = p%NDOF + 6_IntKi + p%NAddDOF(iBody) + end do + p%HasAddDOF = ( p%NDOF > 6*p%NBody ) ! Allocate misc var and parameter vectors/matrices call AllocAry( p%F_HS_Moment_Offset, 6, p%NBody, 'p%F_HS_Moment_Offset', ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - call AllocAry( m%F_HS , 6*p%NBody, 'm%F_HS' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - call AllocAry( m%F_Waves1 , 6*p%NBody, 'm%F_Waves1' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - call AllocAry( m%F_Rdtn , 6*p%NBody, 'm%F_Rdtn' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - call AllocAry( m%F_PtfmAM , 6*p%NBody, 'm%F_PtfmAM' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - call AllocAry( p%HdroAdMsI, 6*p%NBody,6*p%NBody, 'p%HdroAdMsI' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - call AllocAry( p%HdroSttc , 6*p%NBody,6*p%NBody, 'p%HdroSttc' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call AllocAry( m%F_HS , p%NDOF, 'm%F_HS' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call AllocAry( m%F_Waves1 , p%NDOF, 'm%F_Waves1' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call AllocAry( m%F_Rdtn , p%NDOF, 'm%F_Rdtn' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call AllocAry( m%F_PtfmAM , p%NDOF, 'm%F_PtfmAM' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call AllocAry( p%HdroAdMsI, p%NDOF,p%NDOF, 'p%HdroAdMsI' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call AllocAry( p%HdroSttc , p%NDOF,p%NDOF, 'p%HdroSttc' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + + ! Allocate input/output arrays + if ( p%HasAddDOF ) then + call AllocAry( u%qAddDOF, p%NDOF-6*p%NBody, 'u%qAddDOF' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call AllocAry( u%qAddDOFDot, p%NDOF-6*p%NBody, 'u%qAddDOFDot' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call AllocAry( u%qAddDOFDotDot, p%NDOF-6*p%NBody, 'u%qAddDOFDotDot' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call AllocAry( y%FAddDOF, p%NDOF-6*p%NBody, 'y%FAddDOF' , ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + end if - do iBody = 1, p%NBody p%F_HS_Moment_Offset(1,iBody) = 0.0_ReKi p%F_HS_Moment_Offset(2,iBody) = 0.0_ReKi @@ -282,7 +324,6 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS p%F_HS_Moment_Offset(5,iBody) = -p%WaveField%RhoXg*InitInp%PtfmVol0(iBody)*( InitInp%PtfmCOBxt(iBody) - InitInp%PtfmRefxt(iBody) ) ! and the moment about Y due to the COB being offset from the localWAMIT reference point p%F_HS_Moment_Offset(6,iBody) = 0.0_ReKi end do - ! Tell our nice users what is about to happen that may take a while: @@ -346,8 +387,10 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS END DO ! I - All moment-rotation elements (rows) - - + ! For additional generalized DOF - requires WAMITULEN = 1.0 + SttcDimAdd = p%WaveField%RhoXg + RdtnDimAdd = p%WaveField%WtrDens + DffrctDimAdd = p%WaveField%RhoXg ! Let's read in and redimensionalize the hydrodynamic data from the WAMIT ! output files: @@ -356,16 +399,11 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS ! Linear restoring from the hydrostatics problem: - CALL OpenFInpFile ( UnWh, TRIM(InitInp%WAMITFile)//'.hst', ErrStat2, ErrMsg2 ) ! Open file. - CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - IF ( ErrStat >= AbortErrLev ) THEN - CALL Cleanup() - RETURN - END IF + CALL OpenFInpFile ( UnWh, TRIM(InitInp%WAMITFile)//'.hst', ErrStat2, ErrMsg2 ); IF (Failed()) RETURN ! Open file. p%HdroSttc (:,:) = 0.0 ! Initialize to zero - DO ! Loop through all rows in the file + DO ! Loop through all rows in the file READ (UnWh,*,IOSTAT=Sttus) I, J, TmpData1 ! Read in the row index, column index, and nondimensional data from the WAMIT file @@ -373,11 +411,25 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS ! In case NBodyMod = 1, we now have WAMIT matrices which are potentially larger than 6x6, so we need to determine how the SttcDim multiplier matrix (a 6x6) ! should be applied to the larger WAMIT matrix. + + IF ( I > p%NDOF .or. J > p%NDOF ) THEN + CALL SetErrStat( ErrID_Fatal, ' WAMIT file "'//TRIM(InitInp%WAMITFile)//'.hst'//'" contains more modes than expected ('//trim(num2lstr(p%NDOF))//'). ', ErrStat, ErrMsg, RoutineName) + CALL Cleanup() + RETURN + END IF - iSub = mod(I-1,6)+1 ! Finds the 6x6 sub-matrix indexing for the SttcDim multiplier matrix - jSub = mod(J-1,6)+1 + IF ( p%HasAddDOF ) THEN + + p%HdroSttc (I,J) = TmpData1*SttcDimAdd ! Redimensionalize the data and place it at the appropriate location within the array - p%HdroSttc (I,J) = TmpData1*SttcDim(iSub,jSub) ! Redimensionalize the data and place it at the appropriate location within the array + ELSE + + iSub = mod(I-1,6)+1 ! Finds the 6x6 sub-matrix indexing for the SttcDim multiplier matrix + jSub = mod(J-1,6)+1 + + p%HdroSttc (I,J) = TmpData1*SttcDim(iSub,jSub) ! Redimensionalize the data and place it at the appropriate location within the array + + END IF ELSE ! We must have reached the end of the file, so stop reading in data @@ -385,13 +437,14 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS END IF - END DO ! End loop through all rows in the file CLOSE ( UnWh ) ! Close file. ! need to transform p%HdroSttc when PtfmRefztRot is nonzero per plan - call TransformWAMITMatrices( p%NBody, InitInp%PtfmRefztRot, p%HdroSttc ) + call TransformWAMITMatrices( p, InitInp%PtfmRefztRot, p%HdroSttc ) + + ! Linear, frequency-dependent hydrodynamic added mass and damping from the ! radiation problem: @@ -446,8 +499,8 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS CALL AllocAry( WAMITPer, NInpFreq, 'WAMITPer', ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) CALL AllocAry( SortFreqInd, NInpFreq, 'SortFreqInd', ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) CALL AllocAry( HdroFreq, NInpFreq, 'HdroFreq', ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - CALL AllocAry( HdroAddMs, NInpFreq, 6*p%NBody, 6*p%NBody, 'HdroAddMs', ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - CALL AllocAry( HdroDmpng, NInpFreq, 6*p%NBody, 6*p%NBody, 'HdroDmpng', ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + CALL AllocAry( HdroAddMs, NInpFreq, p%NDOF, p%NDOF, 'HdroAddMs', ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + CALL AllocAry( HdroDmpng, NInpFreq, p%NDOF, p%NDOF, 'HdroDmpng', ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) IF ( ErrStat >= AbortErrLev ) THEN CALL Cleanup() @@ -562,17 +615,25 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS CALL SetErrStat( ErrID_Fatal, "Error reading line from WAMIT file", ErrStat, ErrMsg, RoutineName) CALL Cleanup() RETURN - END IF -!bjj: verify that I and J are valid indices for RdtnDim - + END IF + IF ( I > p%NDOF .or. J > p%NDOF ) THEN + CALL SetErrStat( ErrID_Fatal, ' WAMIT file "'//TRIM(InitInp%WAMITFile)//'.1'//'" contains more modes than expected ('//trim(num2lstr(p%NDOF))//'). ', ErrStat, ErrMsg, RoutineName) + CALL Cleanup() + RETURN + END IF - ! IF ( J >= I ) THEN ! .TRUE. if we are on or above the diagonal - ! Indx = 6*( I - 1 ) + J - ( I*( I - 1 ) )/2 ! Convert from row/column indices to an index in the format used to save only the upper-triangular portion of the matrix. NOTE: ( I*( I - 1 ) )/2 = SUM(I,START=1,END=I-1). - iSub = mod(I-1,6)+1 ! Finds the 6x6 sub-matrix indexing for the SttcDim multiplier matrix + IF ( p%HasAddDOF ) THEN + + HdroAddMs(SortFreqInd(K),I,J) = TmpData1*RdtnDimAdd ! Redimensionalize the data and place it at the appropriate location within the array + + ELSE + + iSub = mod(I-1,6)+1 ! Finds the 6x6 sub-matrix indexing for the RdtnDim multiplier matrix jSub = mod(J-1,6)+1 HdroAddMs(SortFreqInd(K),I,J) = TmpData1*RdtnDim(iSub,jSub) ! Redimensionalize the data and place it at the appropriate location within the array - ! END IF + + END IF ELSE ! We must have a positive, non-infinite frequency. @@ -582,15 +643,25 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS CALL Cleanup() RETURN END IF - + IF ( I > p%NDOF .or. J > p%NDOF ) THEN + CALL SetErrStat( ErrID_Fatal, ' WAMIT file "'//TRIM(InitInp%WAMITFile)//'.1'//'" contains more modes than expected ('//trim(num2lstr(p%NDOF))//'). ', ErrStat, ErrMsg, RoutineName) + CALL Cleanup() + RETURN + END IF - !IF ( J >= I ) THEN ! .TRUE. if we are on or above the diagonal - ! Indx = 6*( I - 1 ) + J - ( I*( I - 1 ) )/2 ! Convert from row/column indices to an index in the format used to save only the upper-triangular portion of the matrix. NOTE: ( I*( I - 1 ) )/2 = SUM(I,START=1,END=I-1). - iSub = mod(I-1,6)+1 ! Finds the 6x6 sub-matrix indexing for the SttcDim multiplier matrix - jSub = mod(J-1,6)+1 + IF ( p%HasAddDOF ) THEN + + HdroAddMs(SortFreqInd(K),I,J) = TmpData1*RdtnDimAdd ! Redimensionalize the data and place it at the appropriate location within the array + HdroDmpng(SortFreqInd(K),I,J) = TmpData2*RdtnDimAdd*HdroFreq(SortFreqInd(K)) ! Redimensionalize the data and place it at the appropriate location within the array + + ELSE + + iSub = mod(I-1,6)+1 ! Finds the 6x6 sub-matrix indexing for the RdtnDim multiplier matrix + jSub = mod(J-1,6)+1 HdroAddMs(SortFreqInd(K),I,J) = TmpData1*RdtnDim(iSub,jSub) ! Redimensionalize the data and place it at the appropriate location within the array HdroDmpng(SortFreqInd(K),I,J) = TmpData2*RdtnDim(iSub,jSub)*HdroFreq(SortFreqInd(K)) ! Redimensionalize the data and place it at the appropriate location within the array - ! END IF + + END IF END IF @@ -611,8 +682,8 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS ! need to transform HdroAddMs and HdroDmpng when PtfmRefztRot is nonzero per plan do I = 1, NInpFreq - call TransformWAMITMatrices( p%NBody, InitInp%PtfmRefztRot, HdroAddMs(I,:,:) ) - call TransformWAMITMatrices( p%NBody, InitInp%PtfmRefztRot, HdroDmpng(I,:,:) ) + call TransformWAMITMatrices( p, InitInp%PtfmRefztRot, HdroAddMs(I,:,:) ) + call TransformWAMITMatrices( p, InitInp%PtfmRefztRot, HdroDmpng(I,:,:) ) end do @@ -683,15 +754,11 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS ! to store the directions and frequency- and direction-dependent complex wave ! excitation force per unit wave amplitude vector: - CALL AllocAry( WAMITWvDir, NInpWvDir, 'WAMITWvDir', ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - CALL AllocAry( SortWvDirInd, NInpWvDir, 'SortWvDirInd', ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - CALL AllocAry( HdroWvDir, NInpWvDir, 'HdroWvDir', ErrStat2, ErrMsg2 ); CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - IF ( ErrStat >= AbortErrLev ) THEN - CALL Cleanup() - RETURN - END IF + CALL AllocAry( WAMITWvDir, NInpWvDir, 'WAMITWvDir', ErrStat2, ErrMsg2 ); IF(Failed()) RETURN + CALL AllocAry( SortWvDirInd, NInpWvDir, 'SortWvDirInd', ErrStat2, ErrMsg2 ); IF(Failed()) RETURN + CALL AllocAry( HdroWvDir, NInpWvDir, 'HdroWvDir', ErrStat2, ErrMsg2 ); IF(Failed()) RETURN - ALLOCATE ( HdroExctn (NInpFreq,NInpWvDir,6*p%NBody) , STAT=ErrStat2 ) ! complex so we don't have a built in subroutine + ALLOCATE ( HdroExctn (NInpFreq,NInpWvDir,p%NDOF) , STAT=ErrStat2 ) ! complex so we don't have a built in subroutine IF ( ErrStat2 /= 0 ) THEN CALL SetErrStat( ErrID_Fatal, 'Error allocating space for HdroExctn array', ErrStat, ErrMsg, RoutineName) CALL Cleanup() @@ -821,6 +888,11 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS CALL Cleanup() RETURN END IF + IF ( I > p%NDOF ) THEN + CALL SetErrStat( ErrID_Fatal, ' WAMIT file "'//TRIM(InitInp%WAMITFile)//'.3'//'" contains more modes than expected ('//trim(num2lstr(p%NDOF))//'). ', ErrStat, ErrMsg, RoutineName) + CALL Cleanup() + RETURN + END IF IF ( FirstPass .OR. ( TmpPer /= PrvPer ) ) THEN ! .TRUE. if we are on the first pass or if the period currently read in is different than the previous period read in; thus we found a new period in the WAMIT file! @@ -851,9 +923,16 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS END IF - iSub = mod(I-1,6)+1 ! Finds the 6x6 sub-matrix indexing for the SttcDim multiplier matrix - HdroExctn(SortFreqInd(K),SortWvDirInd(J),I) = CMPLX( TmpRe, TmpIm )*DffrctDim(iSub) ! Redimensionalize the data and place it at the appropriate location within the array + IF ( p%HasAddDOF ) THEN + HdroExctn(SortFreqInd(K),SortWvDirInd(J),I) = CMPLX( TmpRe, TmpIm )*DffrctDimAdd ! Redimensionalize the data and place it at the appropriate location within the array + + ELSE + + iSub = mod(I-1,6)+1 ! Finds the 6x6 sub-matrix indexing for the DffrctDim multiplier matrix + HdroExctn(SortFreqInd(K),SortWvDirInd(J),I) = CMPLX( TmpRe, TmpIm )*DffrctDim(iSub) ! Redimensionalize the data and place it at the appropriate location within the array + + END IF ELSE ! We must have reached the end of the file, so stop reading in data @@ -911,22 +990,9 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS RETURN END IF - - ! Set the infinite-frequency limit of the frequency-dependent hydrodynamic ! added mass matrix, HdroAdMsI, based on the highest frequency available: -!TODO: Is this index order correct for computational speed? GJH 9/5/19 - !Indx = 0 - DO J = 1,6*p%NBody ! Loop through all rows of HdroAdMsI - DO K = 1,6*p%NBody ! Loop through all columns of HdroAdMsI above and including the diagonal - ! Indx = Indx + 1 - p%HdroAdMsI(J,K) = HdroAddMs(NInpFreq,J,K) - END DO ! K - All columns of HdroAdMsI above and including the diagonal - ! DO K = J+1,6 ! Loop through all rows of HdroAdMsI below the diagonal - ! p%HdroAdMsI(K,J) = p%HdroAdMsI(J,K) - ! END DO ! K - All rows of HdroAdMsI below the diagonal - END DO ! J - All rows of HdroAdMsI - + p%HdroAdMsI = HdroAddMs(NInpFreq,:,:) if ( ( p%ExctnMod == 0 ) ) then @@ -941,7 +1007,7 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS if ( p%ExctnMod == 1 ) then ! Initialize everything to zero: - ALLOCATE ( p%WaveExctnGrid (0:p%WaveField%NStepWave, p%ExctnGridParams%n(2),p%ExctnGridParams%n(3),p%ExctnGridParams%n(4),6*p%NBody) , STAT=ErrStat2 ) + ALLOCATE ( p%WaveExctnGrid (0:p%WaveField%NStepWave, p%ExctnGridParams%n(2),p%ExctnGridParams%n(3),p%ExctnGridParams%n(4),p%NDOF) , STAT=ErrStat2 ) IF ( ErrStat2 /= 0 ) THEN CALL SetErrStat( ErrID_Fatal, 'Error allocating memory for the WaveExctnGrid array.', ErrStat, ErrMsg, RoutineName) CALL Cleanup() @@ -962,12 +1028,7 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS call SS_Exc_Init(SS_Exctn_InitInp, m%SS_Exctn_u, p%SS_Exctn, x%SS_Exctn, xd%SS_Exctn, z%SS_Exctn, OtherState%SS_Exctn, & m%SS_Exctn_y, m%SS_Exctn, Interval_Sub, SS_Exctn_InitOut, ErrStat2, ErrMsg2) - - call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - if ( ErrStat >= AbortErrLev ) then - call Cleanup() - return - end if + if(Failed()) return end if CASE ( WaveMod_ExtFull ) ! User wave data. @@ -1036,7 +1097,7 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS ! ALLOCATE the arrays: - ALLOCATE ( WaveExctnC(0:p%WaveField%NStepWave2,p%NExctnHdg+1,6*p%NBody) , STAT=ErrStat2 ) + ALLOCATE ( WaveExctnC(0:p%WaveField%NStepWave2,p%NExctnHdg+1,p%NDOF) , STAT=ErrStat2 ) IF ( ErrStat2 /= 0 ) THEN CALL SetErrStat( ErrID_Fatal, 'Error allocating memory for the WaveExctnC array.', ErrStat, ErrMsg, RoutineName) CALL Cleanup() @@ -1044,7 +1105,7 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS END IF if (p%ExctnDisp > 0 ) then - ALLOCATE ( WaveExctnCGrid (0:p%WaveField%NStepWave2,p%ExctnGridParams%n(2)*p%ExctnGridParams%n(3),p%ExctnGridParams%n(4),6*p%NBody) , STAT=ErrStat2 ) + ALLOCATE ( WaveExctnCGrid (0:p%WaveField%NStepWave2,p%ExctnGridParams%n(2)*p%ExctnGridParams%n(3),p%ExctnGridParams%n(4),p%NDOF) , STAT=ErrStat2 ) IF ( ErrStat2 /= 0 ) THEN CALL SetErrStat( ErrID_Fatal, 'Error allocating memory for the WaveExctnCGrid array.', ErrStat, ErrMsg, RoutineName) CALL Cleanup() @@ -1052,7 +1113,7 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS END IF end if - ALLOCATE ( p%WaveExctnGrid (0:p%WaveField%NStepWave, p%ExctnGridParams%n(2),p%ExctnGridParams%n(3),p%ExctnGridParams%n(4),6*p%NBody) , STAT=ErrStat2 ) + ALLOCATE ( p%WaveExctnGrid (0:p%WaveField%NStepWave, p%ExctnGridParams%n(2),p%ExctnGridParams%n(3),p%ExctnGridParams%n(4),p%NDOF) , STAT=ErrStat2 ) IF ( ErrStat2 /= 0 ) THEN CALL SetErrStat( ErrID_Fatal, 'Error allocating memory for the WaveExctnGrid array.', ErrStat, ErrMsg, RoutineName) CALL Cleanup() @@ -1091,6 +1152,7 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS HdroExctn(I,J,3) = Fxy*( HdroExctn(I,J,3) ) HdroExctn(I,J,6) = Fxy*( HdroExctn(I,J,6) ) + HdroExctn(I,J,7:p%NDOF) = Fxy*HdroExctn(I,J,7:p%NDOF) end do end do @@ -1101,7 +1163,7 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS do J = 1, NInpWvDir do I = 1, NInpFreq do iBody = 1, p%NBody - K = 6*(iBody-1) + K = p%BDOFStrt(iBody) - 1_IntKi Ctmp1 = ( HdroExctn(I,J,K+1)*cos(InitInp%PtfmRefztRot(iBody)) ) - ( HdroExctn(I,J,K+2)*sin(InitInp%PtfmRefztRot(iBody)) ) Ctmp2 = ( HdroExctn(I,J,K+1)*sin(InitInp%PtfmRefztRot(iBody)) ) + ( HdroExctn(I,J,K+2)*cos(InitInp%PtfmRefztRot(iBody)) ) Ctmp4 = ( HdroExctn(I,J,K+4)*cos(InitInp%PtfmRefztRot(iBody)) ) - ( HdroExctn(I,J,K+5)*sin(InitInp%PtfmRefztRot(iBody)) ) @@ -1136,19 +1198,14 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS ! Compute the discrete Fourier transform of the instantaneous value of the ! total excitation force on the support platfrom from incident waves: - DO J = 1,6*p%NBody ! Loop through all wave excitation forces and moments + DO J = 1,p%NDOF ! Loop through all wave excitation forces and moments TmpCoord(1) = Omega TmpCoord(2) = p%WaveField%WaveDirArr(I) - PRPHdg*R2D dirInRange = GetAngleInRange(TmpCoord(2),HdroWvDir(1),HdroWvDir(NInpWvDir),tmpDir2); TmpCoord(2) = tmpDir2 IF (.NOT. dirInRange) THEN ! Somewhat redundant check. Can be removed in the future. CALL SetErrStat(ErrID_Fatal,' Wave heading out of range.', ErrStat, ErrMsg, RoutineName) END IF - CALL WAMIT_Interp2D_Cplx( TmpCoord, HdroExctn(:,:,J), HdroFreq, HdroWvDir, LastInd2, WaveExctnC(I,iHdg,J), ErrStat2, ErrMsg2 ) - CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - IF ( ErrStat >= AbortErrLev ) THEN - CALL Cleanup() - RETURN - END IF + CALL WAMIT_Interp2D_Cplx( TmpCoord, HdroExctn(:,:,J), HdroFreq, HdroWvDir, LastInd2, WaveExctnC(I,iHdg,J), ErrStat2, ErrMsg2 ); IF (Failed()) RETURN WaveExctnC(I,iHdg,J) = WaveExctnC(I,iHdg,J) * CMPLX(p%WaveField%WaveElevC0(1,I), p%WaveField%WaveElevC0(2,I)) END DO ! J - All wave excitation forces and moments END DO ! iHdg - All PRP heading @@ -1162,7 +1219,7 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS RETURN END IF DO iHdg = 1,p%NExctnHdg+1 - DO J = 1,6*p%NBody ! Loop through all wave excitation forces and moments + DO J = 1,p%NDOF ! Loop through all wave excitation forces and moments CALL ApplyFFT_cx ( p%WaveExctnGrid(0:p%WaveField%NStepWave-1,1_IntKi,1_IntKi,iHdg,J), WaveExctnC(:,iHdg,J), FFT_Data, ErrStat2 ) CALL SetErrStat( ErrStat2, ' An error occurred while applying an FFT to WaveExctnC.', ErrStat, ErrMsg, RoutineName) IF ( ErrStat >= AbortErrLev) THEN @@ -1214,19 +1271,14 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS ! Compute the discrete Fourier transform of the instantaneous value of the ! total excitation force on the support platfrom from incident waves: - DO J = 1,6*p%NBody ! Loop through all wave excitation forces and moments + DO J = 1,p%NDOF ! Loop through all wave excitation forces and moments TmpCoord(1) = Omega TmpCoord(2) = p%WaveField%WaveDirArr(I) - PRPHdg*R2D dirInRange = GetAngleInRange(TmpCoord(2),HdroWvDir(1),HdroWvDir(NInpWvDir),tmpDir2); TmpCoord(2) = tmpDir2 IF (.NOT. dirInRange) THEN ! Somewhat redundant check. Can be removed in the future. CALL SetErrStat(ErrID_Fatal,' Wave heading out of range.', ErrStat, ErrMsg, RoutineName) END IF - CALL WAMIT_Interp2D_Cplx( TmpCoord, HdroExctn(:,:,J), HdroFreq, HdroWvDir, LastInd2, WaveExctnC(I,iHdg,J), ErrStat2, ErrMsg2 ) - CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - IF ( ErrStat >= AbortErrLev ) THEN - CALL Cleanup() - RETURN - END IF + CALL WAMIT_Interp2D_Cplx( TmpCoord, HdroExctn(:,:,J), HdroFreq, HdroWvDir, LastInd2, WaveExctnC(I,iHdg,J), ErrStat2, ErrMsg2 ); IF(FAILED()) RETURN do iGrid = 1, p%ExctnGridParams%n(2)*p%ExctnGridParams%n(3) WaveExctnCGrid(I,iGrid,iHdg,J) = WaveExctnC(I,iHdg,J) * CMPLX(p%WaveField%WaveElevC(1,I,iGrid), p%WaveField%WaveElevC(2,I,iGrid)) end do @@ -1248,7 +1300,7 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS DO iGrid = 1, p%ExctnGridParams%n(2)*p%ExctnGridParams%n(3) iX = mod(iGrid-1, p%ExctnGridParams%n(2)) + 1 ! 1st n index is time iY = (iGrid-1) / p%ExctnGridParams%n(2) + 1 - DO J = 1,6*p%NBody ! Loop through all wave excitation forces and moments + DO J = 1,p%NDOF ! Loop through all wave excitation forces and moments CALL ApplyFFT_cx ( p%WaveExctnGrid(0:p%WaveField%NStepWave-1,iX,iY,iHdg,J), WaveExctnCGrid(:,iGrid,iHdg,J), FFT_Data, ErrStat2 ) CALL SetErrStat( ErrStat2, ' An error occurred while applying an FFT to WaveExctnC.', ErrStat, ErrMsg, RoutineName) IF ( ErrStat >= AbortErrLev) THEN @@ -1280,10 +1332,11 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS iY = (iGrid-1) / p%ExctnGridParams%n(2) + 1 DO J = 0,p%WaveField%NStepWave DO iBdy = 1,p%NBody - call hiFrameTransform(h2i,PRPHdg,p%WaveExctnGrid(J,iX,iY,iHdg,(6*(iBdy-1)+1):(6*(iBdy-1)+3)),tmpVec3,ErrStat2,ErrMsg2); call SetErrStat(ErrStat2,ErrMsg2,ErrStat,ErrMsg,RoutineName) - p%WaveExctnGrid(J,iX,iY,iHdg,(6*(iBdy-1)+1):(6*(iBdy-1)+3)) = tmpVec3 - call hiFrameTransform(h2i,PRPHdg,p%WaveExctnGrid(J,iX,iY,iHdg,(6*(iBdy-1)+4):(6*(iBdy-1)+6)),tmpVec3,ErrStat2,ErrMsg2); call SetErrStat(ErrStat2,ErrMsg2,ErrStat,ErrMsg,RoutineName) - p%WaveExctnGrid(J,iX,iY,iHdg,(6*(iBdy-1)+4):(6*(iBdy-1)+6)) = tmpVec3 + iDOF = p%BDOFStrt(iBdy)-1_IntKi + call hiFrameTransform(h2i,PRPHdg,p%WaveExctnGrid(J,iX,iY,iHdg,(iDOF+1):(iDOF+3)),tmpVec3,ErrStat2,ErrMsg2); call SetErrStat(ErrStat2,ErrMsg2,ErrStat,ErrMsg,RoutineName) + p%WaveExctnGrid(J,iX,iY,iHdg,(iDOF+1):(iDOF+3)) = tmpVec3 + call hiFrameTransform(h2i,PRPHdg,p%WaveExctnGrid(J,iX,iY,iHdg,(iDOF+4):(iDOF+6)),tmpVec3,ErrStat2,ErrMsg2); call SetErrStat(ErrStat2,ErrMsg2,ErrStat,ErrMsg,RoutineName) + p%WaveExctnGrid(J,iX,iY,iHdg,(iDOF+4):(iDOF+6)) = tmpVec3 END DO END DO END DO @@ -1365,12 +1418,7 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS call SS_Exc_Init(SS_Exctn_InitInp, m%SS_Exctn_u, p%SS_Exctn, x%SS_Exctn, xd%SS_Exctn, z%SS_Exctn, OtherState%SS_Exctn, & m%SS_Exctn_y, m%SS_Exctn, Interval_Sub, SS_Exctn_InitOut, ErrStat2, ErrMsg2) - - call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - if ( ErrStat >= AbortErrLev ) then - call Cleanup() - return - end if + if (Failed()) return end if IF ( (p%ExctnMod>0) .AND. (p%ExctnDisp==2) ) THEN ! Allocate and initialize array for filtered potential-flow body positions @@ -1418,50 +1466,28 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS CALL MOVE_ALLOC( HdroAddMs, Conv_Rdtn_InitInp%HdroAddMs ) CALL MOVE_ALLOC( HdroDmpng, Conv_Rdtn_InitInp%HdroDmpng ) Conv_Rdtn_InitInp%NBody = InitInp%NBody + conv_rdtn_InitInp%NDOF = p%NDOF Conv_Rdtn_InitInp%RdtnTMax = InitInp%RdtnTMax Conv_Rdtn_InitInp%RdtnDT = InitInp%Conv_Rdtn%RdtnDT Conv_Rdtn_InitInp%HighFreq = HighFreq Conv_Rdtn_InitInp%WAMITFile = InitInp%WAMITFile Conv_Rdtn_InitInp%NInpFreq = NInpFreq - - - CALL Conv_Rdtn_Init(Conv_Rdtn_InitInp, m%Conv_Rdtn_u, p%Conv_Rdtn, x%Conv_Rdtn, xd%Conv_Rdtn, z%Conv_Rdtn, OtherState%Conv_Rdtn, & - m%Conv_Rdtn_y, m%Conv_Rdtn, Conv_Rdtn_InitOut, ErrStat2, ErrMsg2) - - CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - IF ( ErrStat >= AbortErrLev ) THEN - CALL Cleanup() - RETURN - END IF - + CALL Conv_Rdtn_Init(Conv_Rdtn_InitInp, m%Conv_Rdtn_u, p%Conv_Rdtn, x%Conv_Rdtn, xd%Conv_Rdtn, z%Conv_Rdtn, OtherState%Conv_Rdtn, & + m%Conv_Rdtn_y, m%Conv_Rdtn, Conv_Rdtn_InitOut, ErrStat2, ErrMsg2); IF (Failed()) RETURN ELSE IF ( InitInp%RdtnMod == 2 ) THEN SS_Rdtn_InitInp%InputFile = InitInp%WAMITFile - call AllocAry(SS_Rdtn_InitInp%enabledDOFs, 6*p%NBody, 'SS_Rdtn_InitInp%enabledDOFs', ErrStat2, ErrMsg2); call SetErrStat(ErrStat2,ErrMsg2,ErrStat,ErrMsg,RoutineName) - IF ( ErrStat >= AbortErrLev ) THEN - CALL Cleanup() - RETURN - END IF + call AllocAry(SS_Rdtn_InitInp%enabledDOFs, 6*p%NBody, 'SS_Rdtn_InitInp%enabledDOFs', ErrStat2, ErrMsg2); if (Failed()) return SS_Rdtn_InitInp%enabledDOFs = 1 ! Set to 1 (True) for all DOFs, meaning each DOF is to be used in the analysis. Interval_Sub = InitInp%Conv_Rdtn%RdtnDT SS_Rdtn_InitInp%NBody = InitInp%NBody - call AllocAry(SS_Rdtn_InitInp%PtfmRefztRot, p%NBody, 'SS_Rdtn_InitInp%PtfmRefztRot', ErrStat2, ErrMsg2); call SetErrStat(ErrStat2,ErrMsg2,ErrStat,ErrMsg,RoutineName) - IF ( ErrStat >= AbortErrLev ) THEN - CALL Cleanup() - RETURN - END IF + call AllocAry(SS_Rdtn_InitInp%PtfmRefztRot, p%NBody, 'SS_Rdtn_InitInp%PtfmRefztRot', ErrStat2, ErrMsg2); if (Failed()) return SS_Rdtn_InitInp%PtfmRefztRot = InitInp%PtfmRefztRot CALL SS_Rad_Init(SS_Rdtn_InitInp, m%SS_Rdtn_u, p%SS_Rdtn, x%SS_Rdtn, xd%SS_Rdtn, z%SS_Rdtn, OtherState%SS_Rdtn, & - m%SS_Rdtn_y, m%SS_Rdtn, Interval_Sub, SS_Rdtn_InitOut, ErrStat2, ErrMsg2) - - CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - IF ( ErrStat >= AbortErrLev ) THEN - CALL Cleanup() - RETURN - END IF + m%SS_Rdtn_y, m%SS_Rdtn, Interval_Sub, SS_Rdtn_InitOut, ErrStat2, ErrMsg2); IF (Failed()) RETURN END IF @@ -1503,13 +1529,7 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS ,TranslationVel = .TRUE. & ,RotationVel = .TRUE. & ,TranslationAcc = .TRUE. & - ,RotationAcc = .TRUE.) - - CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - IF ( ErrStat >= AbortErrLev ) THEN - CALL Cleanup() - RETURN - END IF + ,RotationAcc = .TRUE.); if (Failed()) return do iBody = 1, p%NBody @@ -1518,16 +1538,12 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS ! Create the node on the mesh - CALL MeshPositionNode (u%Mesh & , iBody & , (/InitInp%PtfmRefxt(iBody), InitInp%PtfmRefyt(iBody), InitInp%PtfmRefzt(iBody)/) & , ErrStat2 & , ErrMsg2 & - , orientation ) - - CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - + , orientation ); if (Failed()) return ! Create the mesh element CALL MeshConstructElement ( u%Mesh & @@ -1535,19 +1551,13 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS , ErrStat2 & , ErrMsg2 & , iBody & - ) - CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + ); if (Failed()) return end do CALL MeshCommit ( u%Mesh & - , ErrStat2 & - , ErrMsg2 ) - CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - IF ( ErrStat >= AbortErrLev ) THEN - CALL Cleanup() - RETURN - END IF + , ErrStat2 & + , ErrMsg2 ); if (Failed()) return call MeshCopy ( SrcMesh = u%Mesh & ,DestMesh = y%Mesh & @@ -1556,30 +1566,27 @@ SUBROUTINE WAMIT_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, ErrS ,ErrStat = ErrStat2 & ,ErrMess = ErrMsg2 & ,Force = .TRUE. & - ,Moment = .TRUE. ) - - CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - IF ( ErrStat >= AbortErrLev ) THEN - CALL Cleanup() - RETURN - END IF + ,Moment = .TRUE. ); if (Failed()) return + u%Mesh%RemapFlag = .TRUE. y%Mesh%RemapFlag = .TRUE. - ! Define initialization-routine output here: - - - - ! initialize misc vars: - m%LastIndWave = 1 + m%LastIndWave = 1 CALL Cleanup() CONTAINS + LOGICAL FUNCTION Failed() + CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) + Failed = ErrStat >= AbortErrLev + IF (Failed) THEN + CALL Cleanup() + END IF + END FUNCTION Failed SUBROUTINE Cleanup() @@ -1700,6 +1707,7 @@ SUBROUTINE WAMIT_UpdateStates( t, n, Inputs, InputTimes, p, x, xd, z, OtherState INTEGER :: I ! Generic loop counter INTEGER :: nTime ! Number of inputs integer(IntKi) :: iBody ! WAMIT body index + integer(IntKi) :: AddDOFCntr ! Counter for additional DOF integer(IntKi) :: indxStart, indxEnd ! Starting and ending indices for the iBody_th sub vector in an NBody long vector @@ -1741,20 +1749,27 @@ SUBROUTINE WAMIT_UpdateStates( t, n, Inputs, InputTimes, p, x, xd, z, OtherState ErrMsg = ' Failed to allocate array Conv_Rdtn_u(I)%Velocity.' RETURN END IF + AddDOFCntr = 0_IntKi do iBody=1,p%NBody - indxStart = (iBody-1)*6+1 - indxEnd = indxStart+5 + indxStart = p%BDOFStrt(iBody) + indxEnd = indxStart+5 call hiFrameTransform( i2h, Inputs(I)%PtfmRefY, Inputs(I)%Mesh%TranslationVel(:,iBody), tmpVec6(1:3), ErrStat, ErrMsg) call hiFrameTransform( i2h, Inputs(I)%PtfmRefY, Inputs(I)%Mesh%RotationVel(:,iBody), tmpVec6(4:6), ErrStat, ErrMsg) Conv_Rdtn_u(I)%Velocity(indxStart:indxEnd) = tmpVec6 + if ( p%NAddDOF(iBody) > 0_IntKi ) then + indxStart = p%BDOFStrt(iBody)+6 + indxEnd = indxStart-1+p%NAddDOF(iBody) + Conv_Rdtn_u(I)%Velocity(indxStart:indxEnd) = Inputs(I)%qAddDOFDot(AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) + AddDOFCntr = AddDOFCntr + p%NAddDOF(iBody) + end if end do END DO - + CALL Conv_Rdtn_UpdateStates( t, n, Conv_Rdtn_u, InputTimes, p%Conv_Rdtn, x%Conv_Rdtn, xd%Conv_Rdtn, & z%Conv_Rdtn, OtherState%Conv_Rdtn, m%Conv_Rdtn, ErrStat, ErrMsg ) - + DEALLOCATE(Conv_Rdtn_u) - + ELSE IF ( p%RdtnMod == 2 ) THEN ! Update the state-space radiation memory effect sub-module's state ! Allocate array of SS_Rdtn inputs @@ -1877,14 +1892,12 @@ SUBROUTINE WAMIT_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, Er ! Local Variables: - !REAL(ReKi) :: F_HS (6) ! Total load contribution from hydrostatics, including the effects of waterplane area and the center of buoyancy (N, N-m) - !REAL(ReKi) :: F_Waves (6) ! Total load contribution from incident waves (i.e., the diffraction problem) (N, N-m) - !REAL(ReKi) :: F_Rdtn (6) ! Total load contribution from wave radiation damping (i.e., the diffraction problem) (N, N-m) - INTEGER(IntKi) :: I,iStart ! Generic index - REAL(ReKi) :: q(6*p%NBody), qdot(6*p%NBody), qdotdot(6*p%NBody) ! kinematics for all WAMIT bodies + INTEGER(IntKi) :: I ! Generic index + REAL(ReKi) :: q(p%NDOF), qdot(p%NDOF), qdotdot(p%NDOF)! kinematics for all WAMIT bodies REAL(ReKi) :: rotdisp(3) ! small angle rotational displacements INTEGER(IntKi) :: iBody ! Counter for WAMIT bodies. If NBodyMod > 1 then NBody = 1, and hence iBody = 1 INTEGER(IntKi) :: indxStart, indxEnd ! Starting and ending indices for the iBody_th sub vector in an NBody long vector + INTEGER(IntKi) :: AddDOFCntr ! Aggregated counter for additional DOF forcing outputs REAL(ReKi) :: bodyPosition(3) ! x-y displaced location of a WAMIT body (relative to REAL(ReKi) :: refBodyPosition(3) REAL(ReKi) :: tmpVec3(3),tmpVec6(6) @@ -1903,12 +1916,7 @@ SUBROUTINE WAMIT_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, Er ErrStat = ErrID_None ErrMsg = "" - - - ! Compute outputs here: - - - + ! Compute the load contribution from incident waves (i.e., the diffraction problem): if ( p%ExctnMod == 0 ) then @@ -1916,31 +1924,28 @@ SUBROUTINE WAMIT_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, Er else if ( p%ExctnMod == 1 ) then + ! Abort if the wave excitation loads have not been computed yet: + IF ( .NOT. ALLOCATED ( p%WaveExctnGrid ) ) THEN + ErrMsg = ' Routine WAMIT_Init() must be called before routine WAMIT_CalcOutput().' + ErrStat = ErrID_Fatal + RETURN + END IF + if ( p%ExctnDisp == 0 ) then - ! Abort if the wave excitation loads have not been computed yet: - IF ( .NOT. ALLOCATED ( p%WaveExctnGrid ) ) THEN - ErrMsg = ' Routine WAMIT_Init() must be called before routine WAMIT_CalcOutput().' - ErrStat = ErrID_Fatal - RETURN - END IF DO iBody = 1,p%NBody bodyPosition(1) = 0.0 bodyPosition(2) = 0.0 bodyPosition(3) = WrapToPi(u%PtfmRefY) - iStart = (iBody-1)*6+1 + + indxStart = p%BDOFStrt(iBody) + indxEnd = indxStart+5+p%NAddDOF(iBody) ! WaveExctnGrid dimensions are: 1st: wavetime, 2nd: X, 3rd: Y, 4th: PRP yaw offset, 5th: Force component for each WAMIT Body - m%F_Waves1(iStart:iStart+5) = WAMIT_ForceWaves_Interp( Time, bodyPosition, p%WaveExctnGrid(:,:,:,:,iStart:iStart+5), p%ExctnGridParams, m%WaveField_m, ErrStat2, ErrMsg2 ) + m%F_Waves1(indxStart:indxEnd) = WAMIT_ForceWaves_Interp( 6+p%NAddDOF(iBody), Time, bodyPosition, p%WaveExctnGrid(:,:,:,:,indxStart:indxEnd), p%ExctnGridParams, m%WaveField_m, ErrStat2, ErrMsg2 ) call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) END DO - else ! p%ExctnDisp > 0 - IF ( .NOT. allocated ( p%WaveExctnGrid ) ) THEN - ErrMsg = ' Routine WAMIT_Init() must be called before routine WAMIT_CalcOutput().' - ErrStat = ErrID_Fatal - RETURN - END IF - ! We are using the displaced x,y location of the WAMIT bodies to determine the Wave Exication force + else ! p%ExctnDisp > 0; we are using the displaced x,y location of the WAMIT bodies to determine the wave exication force DO iBody = 1,p%NBody IF ( p%ExctnDisp == 1 ) THEN @@ -1959,11 +1964,13 @@ SUBROUTINE WAMIT_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, Er bodyPosition(1) = bodyPosition(1) - (refBodyPosition(1) - u%Mesh%Position(1,iBody)) bodyPosition(2) = bodyPosition(2) - (refBodyPosition(2) - u%Mesh%Position(2,iBody)) - iStart = (iBody-1)*6+1 + indxStart = p%BDOFStrt(iBody) + indxEnd = indxStart+5+p%NAddDOF(iBody) ! WaveExctnGrid dimensions are: 1st: wavetime, 2nd: X, 3rd: Y, 4th: PRP yaw offset, 5th: Force component for each WAMIT Body - m%F_Waves1(iStart:iStart+5) = WAMIT_ForceWaves_Interp( Time, bodyPosition, p%WaveExctnGrid(:,:,:,:,iStart:iStart+5), p%ExctnGridParams, m%WaveField_m, ErrStat2, ErrMsg2 ) + m%F_Waves1(indxStart:indxEnd) = WAMIT_ForceWaves_Interp( 6+p%NAddDOF(iBody), Time, bodyPosition, p%WaveExctnGrid(:,:,:,:,indxStart:indxEnd), p%ExctnGridParams, m%WaveField_m, ErrStat2, ErrMsg2 ) call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) END DO + end if else if ( p%ExctnMod == 2 ) then @@ -1975,7 +1982,7 @@ SUBROUTINE WAMIT_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, Er end if - + AddDOFCntr = 0_IntKi do iBody = 1, p%NBody ! Determine the rotational angles from the direction-cosine matrix @@ -2001,10 +2008,10 @@ SUBROUTINE WAMIT_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, Er FrstWarn_LrgY = .FALSE. END IF - indxStart = (iBody-1)*6+1 + indxStart = p%BDOFStrt(iBody) indxEnd = indxStart+5 - ! Displacement with Tait-Bryan angles following the Z-Y-X convention + ! Displacement with Tait-Bryan angles following the intrinsic Z-Y-X convention q(indxStart:indxEnd) = reshape((/real(u%Mesh%TranslationDisp(:,iBody),ReKi),rotdisp(:)/),(/6/)) ! Get velocity and acceleration in the heading frame @@ -2014,6 +2021,15 @@ SUBROUTINE WAMIT_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, Er call hiFrameTransform( i2h, u%PtfmRefY, u%Mesh%TranslationAcc(:,iBody), tmpVec6(1:3), ErrStat2, ErrMsg2) call hiFrameTransform( i2h, u%PtfmRefY, u%Mesh%RotationAcc(:,iBody), tmpVec6(4:6), ErrStat2, ErrMsg2) qdotdot(indxStart:indxEnd) = tmpVec6 + + if ( p%NAddDOF(iBody) > 0_IntKi ) then + indxStart = p%BDOFStrt(iBody) + 6 + indxEnd = indxStart - 1 + p%NAddDOF(iBody) + q (indxStart:indxEnd) = u%qAddDOF (AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) + qdot (indxStart:indxEnd) = u%qAddDOFDot (AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) + qdotdot(indxStart:indxEnd) = u%qAddDOFDotDot(AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) + AddDOFCntr = AddDOFCntr + p%NAddDOF(iBody) + end if end do @@ -2022,24 +2038,31 @@ SUBROUTINE WAMIT_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, Er ! m%F_HS = -matmul(p%HdroSttc,q) m%F_HS = 0. do iBody = 1, p%NBody - indxStart = (iBody-1)*6+1 - indxEnd = indxStart+5 + indxStart = p%BDOFStrt(iBody) + indxEnd = p%BDOFStrt(iBody)+5 m%F_HS((indxStart+2):(indxEnd-1)) = -matmul(p%HdroSttc((indxStart+2):(indxEnd-1),(indxStart+2):(indxEnd-1)),& q((indxStart+2):(indxEnd-1))) + if ( p%NAddDOF(iBody) > 0_IntKi ) then + m%F_HS((indxEnd+1):(indxEnd+p%NAddDOF(iBody))) = -matmul(p%HdroSttc((indxEnd+1):(indxEnd+p%NAddDOF(iBody)),(indxStart+2):(indxEnd-1)), & + q((indxStart+2):(indxEnd-1))) + m%F_HS(indxStart:indxEnd+p%NAddDOF(iBody)) = m%F_HS(indxStart:indxEnd+p%NAddDOF(iBody)) & + -matmul(p%HdroSttc(indxStart:indxEnd+p%NAddDOF(iBody),(indxEnd+1):(indxEnd+p%NAddDOF(iBody))), & + q((indxEnd+1):(indxEnd+p%NAddDOF(iBody)))) + end if m%F_HS(indxStart:indxEnd) = m%F_HS(indxStart:indxEnd) + p%F_HS_Moment_Offset(:,iBody) end do ! Transform hydrostatic loads back to the inertial frame do iBody = 1, p%NBody - indxStart = (iBody-1)*6+1 + indxStart = p%BDOFStrt(iBody) indxEnd = indxStart+2 ! call hiFrameTransform( h2i, u%PtfmRefY, m%F_HS(indxStart:indxEnd), tmpVec3, ErrStat2, ErrMsg2 ) - call hiFrameTransform( h2i, q(iBody*6), m%F_HS(indxStart:indxEnd), tmpVec3, ErrStat2, ErrMsg2 ) + call hiFrameTransform( h2i, q(p%BDOFStrt(iBody)+5), m%F_HS(indxStart:indxEnd), tmpVec3, ErrStat2, ErrMsg2 ) m%F_HS(indxStart:indxEnd) = tmpVec3 indxStart = indxEnd+1 indxEnd = indxStart+2 ! call hiFrameTransform( h2i, u%PtfmRefY, m%F_HS(indxStart:indxEnd), tmpVec3, ErrStat2, ErrMsg2 ) - call hiFrameTransform( h2i, q(iBody*6), m%F_HS(indxStart:indxEnd), tmpVec3, ErrStat2, ErrMsg2 ) + call hiFrameTransform( h2i, q(p%BDOFStrt(iBody)+5), m%F_HS(indxStart:indxEnd), tmpVec3, ErrStat2, ErrMsg2 ) m%F_HS(indxStart:indxEnd) = tmpVec3 end do @@ -2052,7 +2075,7 @@ SUBROUTINE WAMIT_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, Er CALL Conv_Rdtn_CalcOutput( Time, m%Conv_Rdtn_u, p%Conv_Rdtn, x%Conv_Rdtn, xd%Conv_Rdtn, & z%Conv_Rdtn, OtherState%Conv_Rdtn, m%Conv_Rdtn_y, m%Conv_Rdtn, ErrStat2, ErrMsg2 ) call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) - m%F_Rdtn (:) = m%Conv_Rdtn_y%F_Rdtn + m%F_Rdtn (:) = m%Conv_Rdtn_y%F_Rdtn ELSE IF ( p%RdtnMod == 2 ) THEN m%SS_Rdtn_u%dq = qdot @@ -2069,7 +2092,7 @@ SUBROUTINE WAMIT_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, Er END IF do iBody = 1, p%NBody - indxStart = (iBody-1)*6+1 + indxStart = p%BDOFStrt(iBody) indxEnd = indxStart+2 call hiFrameTransform( h2i, u%PtfmRefY, m%F_Rdtn(indxStart:indxEnd), tmpVec3, ErrStat2, ErrMsg2 ) m%F_Rdtn(indxStart:indxEnd) = tmpVec3 @@ -2090,7 +2113,7 @@ SUBROUTINE WAMIT_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, Er m%F_PtfmAM = -matmul(p%HdroAdMsI, qdotdot) ! In h-frame do iBody = 1, p%NBody - indxStart = (iBody-1)*6+1 + indxStart = p%BDOFStrt(iBody) indxEnd = indxStart+2 call hiFrameTransform( h2i, u%PtfmRefY, m%F_PtfmAM(indxStart:indxEnd), tmpVec3, ErrStat2, ErrMsg2 ) m%F_PtfmAM(indxStart:indxEnd) = tmpVec3 @@ -2102,15 +2125,21 @@ SUBROUTINE WAMIT_CalcOutput( Time, u, p, x, xd, z, OtherState, y, m, ErrStat, Er end do ! Compute outputs here: + AddDOFCntr = 0_IntKi do iBody = 1, p%NBody - indxStart = (iBody-1)*6 - + indxStart = p%BDOFStrt(iBody) - 1_IntKi DO I=1,3 y%Mesh%Force(I,iBody) = m%F_PtfmAM(indxStart+I) + m%F_Rdtn(indxStart+I) + m%F_Waves1(indxStart+I) + m%F_HS(indxStart+I) END DO DO I=1,3 y%Mesh%Moment(I,iBody) = m%F_PtfmAM(indxStart+I+3) + m%F_Rdtn(indxStart+I+3) + m%F_Waves1(indxStart+I+3) + m%F_HS(indxStart+I+3) END DO + IF (p%NAddDOF(iBody) > 0_IntKi) THEN + indxStart = p%BDOFStrt(iBody) + 6_IntKi + indxEnd = p%BDOFStrt(iBody) + 5_IntKi + p%NAddDOF(iBody) + y%FAddDOF(AddDOFCntr+1_IntKi:AddDOFCntr+p%NAddDOF(iBody)) = m%F_PtfmAM(indxStart:indxEnd) + m%F_Rdtn(indxStart:indxEnd) + m%F_Waves1(indxStart:indxEnd) + m%F_HS(indxStart:indxEnd) + AddDOFCntr = AddDOFCntr + p%NAddDOF(iBody) + END IF end do @@ -2188,7 +2217,7 @@ SUBROUTINE WAMIT_UpdateDiscState( Time, n, u, p, x, xd, z, OtherState, m, ErrSta integer(IntKi) :: iBody ! WAMIT body index integer(IntKi) :: indxStart, indxEnd ! Starting and ending indices for the iBody_th sub vector in an NBody long vector - + integer(IntKi) :: AddDOFCntr ! Counter for additional DOF REAL(ReKi) :: tmpVec6(6) ! Initialize ErrStat @@ -2198,13 +2227,20 @@ SUBROUTINE WAMIT_UpdateDiscState( Time, n, u, p, x, xd, z, OtherState, m, ErrSta ! Update discrete states here: - IF ( p%RdtnMod == 1 ) THEN ! .TRUE. when we will be modeling wave radiation damping. + IF ( p%RdtnMod == 1 ) THEN ! .TRUE. when we will be modeling wave radiation damping. + AddDOFCntr = 0_IntKi do iBody=1,p%NBody - indxStart = (iBody-1)*6+1 + indxStart = p%BDOFStrt(iBody) indxEnd = indxStart+5 call hiFrameTransform( i2h, u%PtfmRefY, u%Mesh%TranslationVel(:,iBody), tmpVec6(1:3), ErrStat, ErrMsg) call hiFrameTransform( i2h, u%PtfmRefY, u%Mesh%RotationVel(:,iBody), tmpVec6(4:6), ErrStat, ErrMsg) m%Conv_Rdtn_u%Velocity(indxStart:indxEnd) = tmpVec6 + if ( p%NAddDOF(iBody) > 0_IntKi ) then + indxStart = p%BDOFStrt(iBody)+6 + indxEnd = indxStart-1+p%NAddDOF(iBody) + m%Conv_Rdtn_u%Velocity(indxStart:indxEnd) = u%qAddDOFDot(AddDOFCntr+1:AddDOFCntr+p%NAddDOF(iBody)) + AddDOFCntr = AddDOFCntr + p%NAddDOF(iBody) + end if end do CALL Conv_Rdtn_UpdateDiscState( Time, n, m%Conv_Rdtn_u, p%Conv_Rdtn, x%Conv_Rdtn, xd%Conv_Rdtn, z%Conv_Rdtn, & OtherState%Conv_Rdtn, m%Conv_Rdtn, ErrStat, ErrMsg ) diff --git a/modules/hydrodyn/src/WAMIT.txt b/modules/hydrodyn/src/WAMIT.txt index f826ab565a..13bb2e67f1 100644 --- a/modules/hydrodyn/src/WAMIT.txt +++ b/modules/hydrodyn/src/WAMIT.txt @@ -31,6 +31,7 @@ typedef ^ ^ ReKi typedef ^ ^ R8Ki PtfmRefztRot {:} - - "The rotation about zt of the body reference frame(s) from xt/yt" radians typedef ^ ^ ReKi PtfmCOBxt {:} - - "" - typedef ^ ^ ReKi PtfmCOByt {:} - - "" - +typedef ^ ^ INTEGER NAddDOF {:} - - "Number of additional generalized degrees of freedom" - typedef ^ ^ INTEGER RdtnMod - - - "" - typedef ^ ^ INTEGER ExctnMod - - - "" - typedef ^ ^ INTEGER ExctnDisp - - - "0: use undisplaced position, 1: use displaced position, 2: use low-pass filtered displaced position) [only used when PotMod=1 and ExctnMod>0]" - @@ -104,6 +105,10 @@ typedef ^ ^ GridInterp_ # typedef ^ ParameterType INTEGER NBody - - - "[>=1; only used when PotMod=1. If NBodyMod=1, the WAMIT data contains a vector of size 6*NBody x 1 and matrices of size 6*NBody x 6*NBody; if NBodyMod>1, there are NBody sets of WAMIT data each with a vector of size 6 x 1 and matrices of size 6 x 6]" - typedef ^ ^ INTEGER NBodyMod - - - "Body coupling model {1: include coupling terms between each body and NBody in HydroDyn equals NBODY in WAMIT, 2: neglect coupling terms between each body and NBODY=1 with XBODY=0 in WAMIT, 3: Neglect coupling terms between each body and NBODY=1 with XBODY=/0 in WAMIT} (switch) [only used when PotMod=1]" - +typedef ^ ^ LOGICAL HasAddDOF - - - ".TRUE. if additional generalized DOF are present, .FALSE. otherwise" - +typedef ^ ^ INTEGER NAddDOF {:} - - "Number of additional generalized degrees of freedom" - +typedef ^ ^ INTEGER NDOF - - - "Total number of degrees of freedom" - +typedef ^ ^ INTEGER BDOFStrt {:} - - "Starting DOF index for each body" - typedef ^ ^ ReKi F_HS_Moment_Offset {:}{:} - - "The offset moment due to the COB being offset from the WAMIT body's local location {matrix 3xNBody}" N-m typedef ^ ^ SiKi HdroAdMsI {:}{:} - - "" (sec) typedef ^ ^ SiKi HdroSttc {:}{:} - - "" - @@ -127,10 +132,14 @@ typedef ^ ^ GridInterp_ # ..... Inputs .................................................................................................................... # Define inputs that are contained on the mesh here: # -typedef ^ InputType MeshType Mesh - - - "Displacements at the WAMIT reference point in the inertial frame" - -typedef ^ ^ ReKi PtfmRefY - - - "Reference yaw offset" (rad) +typedef ^ InputType MeshType Mesh - - - "Displacements at the WAMIT reference point in the inertial frame" - +typedef ^ ^ ReKi PtfmRefY - - - "Reference yaw offset" (rad) +typedef ^ ^ ReKi qAddDOF {:} - - "Displacement of generalized DOF" - +typedef ^ ^ ReKi qAddDOFDot {:} - - "Velocity of generalized DOF" - +typedef ^ ^ ReKi qAddDOFDotDot {:} - - "Acceleration of generalized DOF" - # # # ..... Outputs ................................................................................................................... # Define outputs that are contained on the mesh here: -typedef ^ OutputType MeshType Mesh - - - "Loads at the WAMIT reference point in the inertial frame" - +typedef ^ OutputType MeshType Mesh - - - "Loads at the WAMIT reference point in the inertial frame" - +typedef ^ ^ ReKi FAddDOF {:} - - "Additional generalized DOF forcing " - diff --git a/modules/hydrodyn/src/WAMIT_Interp.f90 b/modules/hydrodyn/src/WAMIT_Interp.f90 index a41191bcf4..157aa9dc91 100644 --- a/modules/hydrodyn/src/WAMIT_Interp.f90 +++ b/modules/hydrodyn/src/WAMIT_Interp.f90 @@ -30,7 +30,7 @@ MODULE WAMIT_Interp USE NWTC_Library use GridInterp_Types, only: GridInterp_ParameterType, GridInterp_MiscVarType - use GridInterp, only: GridInterpSetup3D, GridInterpSetup4D, GridInterp3DVec6, GridInterp4DVec6 + use GridInterp, only: GridInterpSetup3D, GridInterpSetup4D, GridInterp3DVec6, GridInterp4DVec6, GridInterp4DVecN IMPLICIT NONE @@ -48,6 +48,7 @@ MODULE WAMIT_Interp interface WAMIT_ForceWaves_Interp module procedure WAMIT_ForceWaves_Interp_3D_vec6 module procedure WAMIT_ForceWaves_Interp_4D_vec6 + module procedure WAMIT_ForceWaves_Interp_4D_vecN end interface CONTAINS @@ -687,5 +688,26 @@ function WAMIT_ForceWaves_Interp_4D_vec6(Time, pos, pKinXX, WF_p, WF_m, ErrStat3 end function +!> retrieve indices from the WaveField info, and do interpolation for this point. This is for interpolating on 4D +!! NOTE: the WAMIT field passed in here through pKinXX is based on WaveField sizing, which is why we can do this. +function WAMIT_ForceWaves_Interp_4D_vecN(N, Time, pos, pKinXX, WF_p, WF_m, ErrStat3, ErrMsg3) + integer(IntKi), intent(in ) :: N + real(DbKi), intent(in ) :: Time + real(ReKi), intent(in ) :: pos(3) !< position + real(SiKi), intent(in ) :: pKinXX(0:,:,:,:,:) !< 4D Wave excitation data (SiKi for storage space reasons) + type(GridInterp_ParameterType), intent(in ) :: WF_p !< wavefield parameters + type(GridInterp_MiscVarType), intent(inout) :: WF_m !< wavefield misc/optimization variables + integer(IntKi), intent( out) :: ErrStat3 + character(*), intent( out) :: ErrMsg3 + + real(SiKi) :: WAMIT_ForceWaves_Interp_4D_vecN(N) + + ! get the bounding indices from the WaveField info (same indexing used in WAMIT) + call GridInterpSetup4D( (/Real(Time,ReKi),pos(1),pos(2),pos(3)/), WF_p, WF_m, ErrStat3, ErrMsg3 ) + WAMIT_ForceWaves_Interp_4D_vecN = GridInterp4DVecN( N, pKinXX, WF_m ) + +end function + + !---------------------------------------------------------------------------------------------------------------------------------- END MODULE WAMIT_Interp diff --git a/modules/hydrodyn/src/WAMIT_Types.f90 b/modules/hydrodyn/src/WAMIT_Types.f90 index 251a720b0b..7d850c9599 100644 --- a/modules/hydrodyn/src/WAMIT_Types.f90 +++ b/modules/hydrodyn/src/WAMIT_Types.f90 @@ -50,6 +50,7 @@ MODULE WAMIT_Types REAL(R8Ki) , DIMENSION(:), ALLOCATABLE :: PtfmRefztRot !< The rotation about zt of the body reference frame(s) from xt/yt [radians] REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: PtfmCOBxt !< [-] REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: PtfmCOByt !< [-] + INTEGER(IntKi) , DIMENSION(:), ALLOCATABLE :: NAddDOF !< Number of additional generalized degrees of freedom [-] INTEGER(IntKi) :: RdtnMod = 0_IntKi !< [-] INTEGER(IntKi) :: ExctnMod = 0_IntKi !< [-] INTEGER(IntKi) :: ExctnDisp = 0_IntKi !< 0: use undisplaced position, 1: use displaced position, 2: use low-pass filtered displaced position) [only used when PotMod=1 and ExctnMod>0] [-] @@ -116,6 +117,10 @@ MODULE WAMIT_Types TYPE, PUBLIC :: WAMIT_ParameterType INTEGER(IntKi) :: NBody = 0_IntKi !< [>=1; only used when PotMod=1. If NBodyMod=1, the WAMIT data contains a vector of size 6*NBody x 1 and matrices of size 6*NBody x 6*NBody; if NBodyMod>1, there are NBody sets of WAMIT data each with a vector of size 6 x 1 and matrices of size 6 x 6] [-] INTEGER(IntKi) :: NBodyMod = 0_IntKi !< Body coupling model {1: include coupling terms between each body and NBody in HydroDyn equals NBODY in WAMIT, 2: neglect coupling terms between each body and NBODY=1 with XBODY=0 in WAMIT, 3: Neglect coupling terms between each body and NBODY=1 with XBODY=/0 in WAMIT} (switch) [only used when PotMod=1] [-] + LOGICAL :: HasAddDOF = .false. !< .TRUE. if additional generalized DOF are present, .FALSE. otherwise [-] + INTEGER(IntKi) , DIMENSION(:), ALLOCATABLE :: NAddDOF !< Number of additional generalized degrees of freedom [-] + INTEGER(IntKi) :: NDOF = 0_IntKi !< Total number of degrees of freedom [-] + INTEGER(IntKi) , DIMENSION(:), ALLOCATABLE :: BDOFStrt !< Starting DOF index for each body [-] REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: F_HS_Moment_Offset !< The offset moment due to the COB being offset from the WAMIT body's local location {matrix 3xNBody} [N-m] REAL(SiKi) , DIMENSION(:,:), ALLOCATABLE :: HdroAdMsI !< [(sec)] REAL(SiKi) , DIMENSION(:,:), ALLOCATABLE :: HdroSttc !< [-] @@ -140,11 +145,15 @@ MODULE WAMIT_Types TYPE, PUBLIC :: WAMIT_InputType TYPE(MeshType) :: Mesh !< Displacements at the WAMIT reference point in the inertial frame [-] REAL(ReKi) :: PtfmRefY = 0.0_ReKi !< Reference yaw offset [(rad)] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: qAddDOF !< Displacement of generalized DOF [-] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: qAddDOFDot !< Velocity of generalized DOF [-] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: qAddDOFDotDot !< Acceleration of generalized DOF [-] END TYPE WAMIT_InputType ! ======================= ! ========= WAMIT_OutputType ======= TYPE, PUBLIC :: WAMIT_OutputType TYPE(MeshType) :: Mesh !< Loads at the WAMIT reference point in the inertial frame [-] + REAL(ReKi) , DIMENSION(:), ALLOCATABLE :: FAddDOF !< Additional generalized DOF forcing [-] END TYPE WAMIT_OutputType ! ======================= integer(IntKi), public, parameter :: WAMIT_x_SS_Rdtn_x = 1 ! WAMIT%SS_Rdtn%x @@ -152,7 +161,11 @@ MODULE WAMIT_Types integer(IntKi), public, parameter :: WAMIT_x_Conv_Rdtn_DummyContState = 3 ! WAMIT%Conv_Rdtn%DummyContState integer(IntKi), public, parameter :: WAMIT_u_Mesh = 4 ! WAMIT%Mesh integer(IntKi), public, parameter :: WAMIT_u_PtfmRefY = 5 ! WAMIT%PtfmRefY - integer(IntKi), public, parameter :: WAMIT_y_Mesh = 6 ! WAMIT%Mesh + integer(IntKi), public, parameter :: WAMIT_u_qAddDOF = 6 ! WAMIT%qAddDOF + integer(IntKi), public, parameter :: WAMIT_u_qAddDOFDot = 7 ! WAMIT%qAddDOFDot + integer(IntKi), public, parameter :: WAMIT_u_qAddDOFDotDot = 8 ! WAMIT%qAddDOFDotDot + integer(IntKi), public, parameter :: WAMIT_y_Mesh = 9 ! WAMIT%Mesh + integer(IntKi), public, parameter :: WAMIT_y_FAddDOF = 10 ! WAMIT%FAddDOF contains @@ -257,6 +270,18 @@ subroutine WAMIT_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, Err end if DstInitInputData%PtfmCOByt = SrcInitInputData%PtfmCOByt end if + if (allocated(SrcInitInputData%NAddDOF)) then + LB(1:1) = lbound(SrcInitInputData%NAddDOF) + UB(1:1) = ubound(SrcInitInputData%NAddDOF) + if (.not. allocated(DstInitInputData%NAddDOF)) then + allocate(DstInitInputData%NAddDOF(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstInitInputData%NAddDOF.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstInitInputData%NAddDOF = SrcInitInputData%NAddDOF + end if DstInitInputData%RdtnMod = SrcInitInputData%RdtnMod DstInitInputData%ExctnMod = SrcInitInputData%ExctnMod DstInitInputData%ExctnDisp = SrcInitInputData%ExctnDisp @@ -303,6 +328,9 @@ subroutine WAMIT_DestroyInitInput(InitInputData, ErrStat, ErrMsg) if (allocated(InitInputData%PtfmCOByt)) then deallocate(InitInputData%PtfmCOByt) end if + if (allocated(InitInputData%NAddDOF)) then + deallocate(InitInputData%NAddDOF) + end if call Conv_Rdtn_DestroyInitInput(InitInputData%Conv_Rdtn, ErrStat2, ErrMsg2) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) nullify(InitInputData%WaveField) @@ -326,6 +354,7 @@ subroutine WAMIT_PackInitInput(RF, Indata) call RegPackAlloc(RF, InData%PtfmRefztRot) call RegPackAlloc(RF, InData%PtfmCOBxt) call RegPackAlloc(RF, InData%PtfmCOByt) + call RegPackAlloc(RF, InData%NAddDOF) call RegPack(RF, InData%RdtnMod) call RegPack(RF, InData%ExctnMod) call RegPack(RF, InData%ExctnDisp) @@ -369,6 +398,7 @@ subroutine WAMIT_UnPackInitInput(RF, OutData) call RegUnpackAlloc(RF, OutData%PtfmRefztRot); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%PtfmCOBxt); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%PtfmCOByt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NAddDOF); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%RdtnMod); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%ExctnMod); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%ExctnDisp); if (RegCheckErr(RF, RoutineName)) return @@ -859,6 +889,32 @@ subroutine WAMIT_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg ErrMsg = '' DstParamData%NBody = SrcParamData%NBody DstParamData%NBodyMod = SrcParamData%NBodyMod + DstParamData%HasAddDOF = SrcParamData%HasAddDOF + if (allocated(SrcParamData%NAddDOF)) then + LB(1:1) = lbound(SrcParamData%NAddDOF) + UB(1:1) = ubound(SrcParamData%NAddDOF) + if (.not. allocated(DstParamData%NAddDOF)) then + allocate(DstParamData%NAddDOF(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%NAddDOF.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstParamData%NAddDOF = SrcParamData%NAddDOF + end if + DstParamData%NDOF = SrcParamData%NDOF + if (allocated(SrcParamData%BDOFStrt)) then + LB(1:1) = lbound(SrcParamData%BDOFStrt) + UB(1:1) = ubound(SrcParamData%BDOFStrt) + if (.not. allocated(DstParamData%BDOFStrt)) then + allocate(DstParamData%BDOFStrt(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%BDOFStrt.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstParamData%BDOFStrt = SrcParamData%BDOFStrt + end if if (allocated(SrcParamData%F_HS_Moment_Offset)) then LB(1:2) = lbound(SrcParamData%F_HS_Moment_Offset) UB(1:2) = ubound(SrcParamData%F_HS_Moment_Offset) @@ -951,6 +1007,12 @@ subroutine WAMIT_DestroyParam(ParamData, ErrStat, ErrMsg) character(*), parameter :: RoutineName = 'WAMIT_DestroyParam' ErrStat = ErrID_None ErrMsg = '' + if (allocated(ParamData%NAddDOF)) then + deallocate(ParamData%NAddDOF) + end if + if (allocated(ParamData%BDOFStrt)) then + deallocate(ParamData%BDOFStrt) + end if if (allocated(ParamData%F_HS_Moment_Offset)) then deallocate(ParamData%F_HS_Moment_Offset) end if @@ -985,6 +1047,10 @@ subroutine WAMIT_PackParam(RF, Indata) if (RF%ErrStat >= AbortErrLev) return call RegPack(RF, InData%NBody) call RegPack(RF, InData%NBodyMod) + call RegPack(RF, InData%HasAddDOF) + call RegPackAlloc(RF, InData%NAddDOF) + call RegPack(RF, InData%NDOF) + call RegPackAlloc(RF, InData%BDOFStrt) call RegPackAlloc(RF, InData%F_HS_Moment_Offset) call RegPackAlloc(RF, InData%HdroAdMsI) call RegPackAlloc(RF, InData%HdroSttc) @@ -1024,6 +1090,10 @@ subroutine WAMIT_UnPackParam(RF, OutData) if (RF%ErrStat /= ErrID_None) return call RegUnpack(RF, OutData%NBody); if (RegCheckErr(RF, RoutineName)) return call RegUnpack(RF, OutData%NBodyMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HasAddDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NAddDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BDOFStrt); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%F_HS_Moment_Offset); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%HdroAdMsI); if (RegCheckErr(RF, RoutineName)) return call RegUnpackAlloc(RF, OutData%HdroSttc); if (RegCheckErr(RF, RoutineName)) return @@ -1067,6 +1137,7 @@ subroutine WAMIT_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg integer(IntKi), intent(in ) :: CtrlCode integer(IntKi), intent( out) :: ErrStat character(*), intent( out) :: ErrMsg + integer(B4Ki) :: LB(1), UB(1) integer(IntKi) :: ErrStat2 character(ErrMsgLen) :: ErrMsg2 character(*), parameter :: RoutineName = 'WAMIT_CopyInput' @@ -1076,6 +1147,42 @@ subroutine WAMIT_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) if (ErrStat >= AbortErrLev) return DstInputData%PtfmRefY = SrcInputData%PtfmRefY + if (allocated(SrcInputData%qAddDOF)) then + LB(1:1) = lbound(SrcInputData%qAddDOF) + UB(1:1) = ubound(SrcInputData%qAddDOF) + if (.not. allocated(DstInputData%qAddDOF)) then + allocate(DstInputData%qAddDOF(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstInputData%qAddDOF.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstInputData%qAddDOF = SrcInputData%qAddDOF + end if + if (allocated(SrcInputData%qAddDOFDot)) then + LB(1:1) = lbound(SrcInputData%qAddDOFDot) + UB(1:1) = ubound(SrcInputData%qAddDOFDot) + if (.not. allocated(DstInputData%qAddDOFDot)) then + allocate(DstInputData%qAddDOFDot(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstInputData%qAddDOFDot.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstInputData%qAddDOFDot = SrcInputData%qAddDOFDot + end if + if (allocated(SrcInputData%qAddDOFDotDot)) then + LB(1:1) = lbound(SrcInputData%qAddDOFDotDot) + UB(1:1) = ubound(SrcInputData%qAddDOFDotDot) + if (.not. allocated(DstInputData%qAddDOFDotDot)) then + allocate(DstInputData%qAddDOFDotDot(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstInputData%qAddDOFDotDot.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstInputData%qAddDOFDotDot = SrcInputData%qAddDOFDotDot + end if end subroutine subroutine WAMIT_DestroyInput(InputData, ErrStat, ErrMsg) @@ -1089,6 +1196,15 @@ subroutine WAMIT_DestroyInput(InputData, ErrStat, ErrMsg) ErrMsg = '' call MeshDestroy( InputData%Mesh, ErrStat2, ErrMsg2) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (allocated(InputData%qAddDOF)) then + deallocate(InputData%qAddDOF) + end if + if (allocated(InputData%qAddDOFDot)) then + deallocate(InputData%qAddDOFDot) + end if + if (allocated(InputData%qAddDOFDotDot)) then + deallocate(InputData%qAddDOFDotDot) + end if end subroutine subroutine WAMIT_PackInput(RF, Indata) @@ -1098,6 +1214,9 @@ subroutine WAMIT_PackInput(RF, Indata) if (RF%ErrStat >= AbortErrLev) return call MeshPack(RF, InData%Mesh) call RegPack(RF, InData%PtfmRefY) + call RegPackAlloc(RF, InData%qAddDOF) + call RegPackAlloc(RF, InData%qAddDOFDot) + call RegPackAlloc(RF, InData%qAddDOFDotDot) if (RegCheckErr(RF, RoutineName)) return end subroutine @@ -1105,9 +1224,15 @@ subroutine WAMIT_UnPackInput(RF, OutData) type(RegFile), intent(inout) :: RF type(WAMIT_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WAMIT_UnPackInput' + integer(B4Ki) :: LB(1), UB(1) + integer(IntKi) :: stat + logical :: IsAllocAssoc if (RF%ErrStat /= ErrID_None) return call MeshUnpack(RF, OutData%Mesh) ! Mesh call RegUnpack(RF, OutData%PtfmRefY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%qAddDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%qAddDOFDot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%qAddDOFDotDot); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine WAMIT_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -1116,6 +1241,7 @@ subroutine WAMIT_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, Err integer(IntKi), intent(in ) :: CtrlCode integer(IntKi), intent( out) :: ErrStat character(*), intent( out) :: ErrMsg + integer(B4Ki) :: LB(1), UB(1) integer(IntKi) :: ErrStat2 character(ErrMsgLen) :: ErrMsg2 character(*), parameter :: RoutineName = 'WAMIT_CopyOutput' @@ -1124,6 +1250,18 @@ subroutine WAMIT_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, Err call MeshCopy(SrcOutputData%Mesh, DstOutputData%Mesh, CtrlCode, ErrStat2, ErrMsg2 ) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) if (ErrStat >= AbortErrLev) return + if (allocated(SrcOutputData%FAddDOF)) then + LB(1:1) = lbound(SrcOutputData%FAddDOF) + UB(1:1) = ubound(SrcOutputData%FAddDOF) + if (.not. allocated(DstOutputData%FAddDOF)) then + allocate(DstOutputData%FAddDOF(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstOutputData%FAddDOF.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstOutputData%FAddDOF = SrcOutputData%FAddDOF + end if end subroutine subroutine WAMIT_DestroyOutput(OutputData, ErrStat, ErrMsg) @@ -1137,6 +1275,9 @@ subroutine WAMIT_DestroyOutput(OutputData, ErrStat, ErrMsg) ErrMsg = '' call MeshDestroy( OutputData%Mesh, ErrStat2, ErrMsg2) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (allocated(OutputData%FAddDOF)) then + deallocate(OutputData%FAddDOF) + end if end subroutine subroutine WAMIT_PackOutput(RF, Indata) @@ -1145,6 +1286,7 @@ subroutine WAMIT_PackOutput(RF, Indata) character(*), parameter :: RoutineName = 'WAMIT_PackOutput' if (RF%ErrStat >= AbortErrLev) return call MeshPack(RF, InData%Mesh) + call RegPackAlloc(RF, InData%FAddDOF) if (RegCheckErr(RF, RoutineName)) return end subroutine @@ -1152,8 +1294,12 @@ subroutine WAMIT_UnPackOutput(RF, OutData) type(RegFile), intent(inout) :: RF type(WAMIT_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WAMIT_UnPackOutput' + integer(B4Ki) :: LB(1), UB(1) + integer(IntKi) :: stat + logical :: IsAllocAssoc if (RF%ErrStat /= ErrID_None) return call MeshUnpack(RF, OutData%Mesh) ! Mesh + call RegUnpackAlloc(RF, OutData%FAddDOF); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine WAMIT_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) @@ -1234,6 +1380,8 @@ SUBROUTINE WAMIT_Input_ExtrapInterp1(u1, u2, tin, u_out, tin_out, ErrStat, ErrMs 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 = '' @@ -1254,6 +1402,15 @@ SUBROUTINE WAMIT_Input_ExtrapInterp1(u1, u2, tin, u_out, tin_out, ErrStat, ErrMs 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 + IF (ALLOCATED(u_out%qAddDOF) .AND. ALLOCATED(u1%qAddDOF)) THEN + u_out%qAddDOF = a1*u1%qAddDOF + a2*u2%qAddDOF + END IF ! check if allocated + IF (ALLOCATED(u_out%qAddDOFDot) .AND. ALLOCATED(u1%qAddDOFDot)) THEN + u_out%qAddDOFDot = a1*u1%qAddDOFDot + a2*u2%qAddDOFDot + END IF ! check if allocated + IF (ALLOCATED(u_out%qAddDOFDotDot) .AND. ALLOCATED(u1%qAddDOFDotDot)) THEN + u_out%qAddDOFDotDot = a1*u1%qAddDOFDotDot + a2*u2%qAddDOFDotDot + END IF ! check if allocated END SUBROUTINE SUBROUTINE WAMIT_Input_ExtrapInterp2(u1, u2, u3, tin, u_out, tin_out, ErrStat, ErrMsg ) @@ -1286,6 +1443,8 @@ SUBROUTINE WAMIT_Input_ExtrapInterp2(u1, u2, u3, tin, u_out, tin_out, ErrStat, E INTEGER(IntKi) :: ErrStat2 ! local errors CHARACTER(ErrMsgLen) :: ErrMsg2 ! local errors CHARACTER(*), PARAMETER :: RoutineName = 'WAMIT_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 = '' @@ -1312,6 +1471,15 @@ SUBROUTINE WAMIT_Input_ExtrapInterp2(u1, u2, u3, tin, u_out, tin_out, ErrStat, E 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 + IF (ALLOCATED(u_out%qAddDOF) .AND. ALLOCATED(u1%qAddDOF)) THEN + u_out%qAddDOF = a1*u1%qAddDOF + a2*u2%qAddDOF + a3*u3%qAddDOF + END IF ! check if allocated + IF (ALLOCATED(u_out%qAddDOFDot) .AND. ALLOCATED(u1%qAddDOFDot)) THEN + u_out%qAddDOFDot = a1*u1%qAddDOFDot + a2*u2%qAddDOFDot + a3*u3%qAddDOFDot + END IF ! check if allocated + IF (ALLOCATED(u_out%qAddDOFDotDot) .AND. ALLOCATED(u1%qAddDOFDotDot)) THEN + u_out%qAddDOFDotDot = a1*u1%qAddDOFDotDot + a2*u2%qAddDOFDotDot + a3*u3%qAddDOFDotDot + END IF ! check if allocated END SUBROUTINE subroutine WAMIT_Output_ExtrapInterp(y, t, y_out, t_out, ErrStat, ErrMsg) @@ -1392,6 +1560,8 @@ SUBROUTINE WAMIT_Output_ExtrapInterp1(y1, y2, tin, y_out, tin_out, ErrStat, ErrM 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 = '' @@ -1411,6 +1581,9 @@ SUBROUTINE WAMIT_Output_ExtrapInterp1(y1, y2, tin, y_out, tin_out, ErrStat, ErrM CALL MeshExtrapInterp1(y1%Mesh, y2%Mesh, tin, y_out%Mesh, tin_out, ErrStat2, ErrMsg2) CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) + IF (ALLOCATED(y_out%FAddDOF) .AND. ALLOCATED(y1%FAddDOF)) THEN + y_out%FAddDOF = a1*y1%FAddDOF + a2*y2%FAddDOF + END IF ! check if allocated END SUBROUTINE SUBROUTINE WAMIT_Output_ExtrapInterp2(y1, y2, y3, tin, y_out, tin_out, ErrStat, ErrMsg ) @@ -1443,6 +1616,8 @@ SUBROUTINE WAMIT_Output_ExtrapInterp2(y1, y2, y3, tin, y_out, tin_out, ErrStat, INTEGER(IntKi) :: ErrStat2 ! local errors CHARACTER(ErrMsgLen) :: ErrMsg2 ! local errors CHARACTER(*), PARAMETER :: RoutineName = 'WAMIT_Output_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 = '' @@ -1468,6 +1643,9 @@ SUBROUTINE WAMIT_Output_ExtrapInterp2(y1, y2, y3, tin, y_out, tin_out, ErrStat, a3 = (t_out - t(1))*(t_out - t(2))/((t(3) - t(1))*(t(3) - t(2))) CALL MeshExtrapInterp2(y1%Mesh, y2%Mesh, y3%Mesh, tin, y_out%Mesh, tin_out, ErrStat2, ErrMsg2) CALL SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg,RoutineName) + IF (ALLOCATED(y_out%FAddDOF) .AND. ALLOCATED(y1%FAddDOF)) THEN + y_out%FAddDOF = a1*y1%FAddDOF + a2*y2%FAddDOF + a3*y3%FAddDOF + END IF ! check if allocated END SUBROUTINE function WAMIT_InputMeshPointer(u, DL) result(Mesh) @@ -1609,6 +1787,12 @@ subroutine WAMIT_VarPackInput(V, u, ValAry) call MV_PackMesh(V, u%Mesh, ValAry) ! Mesh case (WAMIT_u_PtfmRefY) VarVals(1) = u%PtfmRefY ! Scalar + case (WAMIT_u_qAddDOF) + VarVals = u%qAddDOF(V%iLB:V%iUB) ! Rank 1 Array + case (WAMIT_u_qAddDOFDot) + VarVals = u%qAddDOFDot(V%iLB:V%iUB) ! Rank 1 Array + case (WAMIT_u_qAddDOFDotDot) + VarVals = u%qAddDOFDotDot(V%iLB:V%iUB) ! Rank 1 Array case default VarVals = 0.0_R8Ki end select @@ -1635,6 +1819,12 @@ subroutine WAMIT_VarUnpackInput(V, ValAry, u) call MV_UnpackMesh(V, ValAry, u%Mesh) ! Mesh case (WAMIT_u_PtfmRefY) u%PtfmRefY = VarVals(1) ! Scalar + case (WAMIT_u_qAddDOF) + u%qAddDOF(V%iLB:V%iUB) = VarVals ! Rank 1 Array + case (WAMIT_u_qAddDOFDot) + u%qAddDOFDot(V%iLB:V%iUB) = VarVals ! Rank 1 Array + case (WAMIT_u_qAddDOFDotDot) + u%qAddDOFDotDot(V%iLB:V%iUB) = VarVals ! Rank 1 Array end select end associate end subroutine @@ -1647,6 +1837,12 @@ function WAMIT_InputFieldName(DL) result(Name) Name = "u%Mesh" case (WAMIT_u_PtfmRefY) Name = "u%PtfmRefY" + case (WAMIT_u_qAddDOF) + Name = "u%qAddDOF" + case (WAMIT_u_qAddDOFDot) + Name = "u%qAddDOFDot" + case (WAMIT_u_qAddDOFDotDot) + Name = "u%qAddDOFDotDot" case default Name = "Unknown Field" end select @@ -1670,6 +1866,8 @@ subroutine WAMIT_VarPackOutput(V, y, ValAry) select case (DL%Num) case (WAMIT_y_Mesh) call MV_PackMesh(V, y%Mesh, ValAry) ! Mesh + case (WAMIT_y_FAddDOF) + VarVals = y%FAddDOF(V%iLB:V%iUB) ! Rank 1 Array case default VarVals = 0.0_R8Ki end select @@ -1694,6 +1892,8 @@ subroutine WAMIT_VarUnpackOutput(V, ValAry, y) select case (DL%Num) case (WAMIT_y_Mesh) call MV_UnpackMesh(V, ValAry, y%Mesh) ! Mesh + case (WAMIT_y_FAddDOF) + y%FAddDOF(V%iLB:V%iUB) = VarVals ! Rank 1 Array end select end associate end subroutine @@ -1704,6 +1904,8 @@ function WAMIT_OutputFieldName(DL) result(Name) select case (DL%Num) case (WAMIT_y_Mesh) Name = "y%Mesh" + case (WAMIT_y_FAddDOF) + Name = "y%FAddDOF" case default Name = "Unknown Field" end select diff --git a/modules/nwtc-library/src/GridInterp.f90 b/modules/nwtc-library/src/GridInterp.f90 index 3398ca5269..769b905fca 100644 --- a/modules/nwtc-library/src/GridInterp.f90 +++ b/modules/nwtc-library/src/GridInterp.f90 @@ -43,6 +43,11 @@ MODULE GridInterp MODULE PROCEDURE GridInterp4DVec6R8 END INTERFACE +INTERFACE GridInterp4DVecN + MODULE PROCEDURE GridInterp4DVecNR4 + MODULE PROCEDURE GridInterp4DVecNR8 +END INTERFACE + INTERFACE GridInterpN MODULE PROCEDURE GridInterpNR4 MODULE PROCEDURE GridInterpNR8 @@ -726,6 +731,61 @@ function GridInterp4DVec6R8( data, m ) end function GridInterp4DVec6R8 +!============================================================================================================= +! INTERFACE GridInterp4DVec6 +! - GridInterp4DVec6R4 +! - GridInterp4DVec6R8 +!============================================================================================================= +function GridInterp4DVecNR4( vDim, data, m ) + integer(IntKi), intent(in ) :: vDim + real(SiKi), intent(in ) :: data(0:,0:,0:,0:,:) !< 4D grid of vector data + type(GridInterp_MiscVarType), intent(in ) :: m !< MiscVars + + character(*), parameter :: RoutineName = 'GridInterp4DVecNR4' + integer(IntKi) :: i,j,k,l,vi + real(SiKi) :: GridInterp4DVecNR4(vDim) + + ! interpolate + GridInterp4DVecNR4 = 0.0_SiKi + do l = 1,4 + do k = 1,4 + do j = 1,4 + do i = 1,4 + do vi = 1,vDim + GridInterp4DVecNR4(vi) = GridInterp4DVecNR4(vi) + m%N4D(i,j,k,l) * data( m%Indx(i,1), m%Indx(j,2), m%Indx(k,3), m%Indx(l,4), vi ) + end do + end do + end do + end do + end do + +end function GridInterp4DVecNR4 + +function GridInterp4DVecNR8( vDim, data, m ) + integer(IntKi), intent(in ) :: vDim + real(DbKi), intent(in ) :: data(0:,0:,0:,0:,:) !< 4D grid of vector data + type(GridInterp_MiscVarType), intent(in ) :: m !< MiscVars + + character(*), parameter :: RoutineName = 'GridInterp4DVecNR8' + integer(IntKi) :: i,j,k,l,vi + real(DbKi) :: GridInterp4DVecNR8(vDim) + + ! interpolate + GridInterp4DVecNR8 = 0.0_DbKi + do l = 1,4 + do k = 1,4 + do j = 1,4 + do i = 1,4 + do vi = 1,vDim + GridInterp4DVecNR8(vi) = GridInterp4DVecNR8(vi) + m%N4D(i,j,k,l) * data( m%Indx(i,1), m%Indx(j,2), m%Indx(k,3), m%Indx(l,4), vi ) + end do + end do + end do + end do + end do + +end function GridInterp4DVecNR8 + !============================================================================================================= ! INTERFACE GridInterpN ! - GridInterpNR4 diff --git a/modules/openfast-library/src/FAST_Funcs.f90 b/modules/openfast-library/src/FAST_Funcs.f90 index e43ec8e7af..46caafe03a 100644 --- a/modules/openfast-library/src/FAST_Funcs.f90 +++ b/modules/openfast-library/src/FAST_Funcs.f90 @@ -1516,7 +1516,7 @@ subroutine FAST_JacobianPContState(ModData, ThisTime, iInput, iState, T, ErrStat dYdx=dYdx, dXdx=dXdx) case (Module_ExtPtfm) - call ExtPtfm_JacobianPContState(ThisTime, T%ExtPtfm%Input(iInput), T%ExtPtfm%p, & + call ExtPtfm_JacobianPContState(ModData%Vars, ThisTime, T%ExtPtfm%Input(iInput), T%ExtPtfm%p, & T%ExtPtfm%x(iState), T%ExtPtfm%xd(iState), & T%ExtPtfm%z(iState), T%ExtPtfm%OtherSt(iState), & T%ExtPtfm%y, T%ExtPtfm%m, ErrStat2, ErrMsg2, & diff --git a/modules/openfast-library/src/FAST_Mapping.f90 b/modules/openfast-library/src/FAST_Mapping.f90 index 5d0386d654..a150e6f066 100644 --- a/modules/openfast-library/src/FAST_Mapping.f90 +++ b/modules/openfast-library/src/FAST_Mapping.f90 @@ -1090,7 +1090,7 @@ subroutine InitMappings_ED(Mappings, SrcMod, DstMod, Turbine, ErrStat, ErrMsg) SrcDispDL=DatLoc(FEAM_u_PtFairleadDisplacement), & ! FEAM%u%PtFairleadDisplacement DstDL=DatLoc(ED_u_PlatformPtMesh), & ! ED%u%PlatformPtMesh DstDispDL=DatLoc(ED_y_PlatformPtMesh), & ! ED%y%PlatformPtMesh - Active=Turbine%p_FAST%CompSub /= Module_SD, & + Active=Turbine%p_FAST%CompSub == Module_None, & ErrStat=ErrStat2, ErrMsg=ErrMsg2) if (Failed()) return @@ -1148,7 +1148,7 @@ subroutine InitMappings_ED(Mappings, SrcMod, DstMod, Turbine, ErrStat, ErrMsg) SrcDispDL=DatLoc(MAP_u_PtFairDisplacement), & ! MAP%u%PtFairDisplacement DstDL=DatLoc(ED_u_PlatformPtMesh), & ! ED%u%PlatformPtMesh DstDispDL=DatLoc(ED_y_PlatformPtMesh), & ! ED%y%PlatformPtMesh - Active=Turbine%p_FAST%CompSub /= Module_SD, & + Active=Turbine%p_FAST%CompSub == Module_None, & ErrStat=ErrStat2, ErrMsg=ErrMsg2) if (Failed()) return @@ -1160,7 +1160,7 @@ subroutine InitMappings_ED(Mappings, SrcMod, DstMod, Turbine, ErrStat, ErrMsg) SrcDispDL=DatLoc(MD_u_CoupledKinematics, 1), & ! MD%u%CoupledKinematics(1) DstDL=DatLoc(ED_u_PlatformPtMesh), & ! ED%u%PlatformPtMesh DstDispDL=DatLoc(ED_y_PlatformPtMesh), & ! ED%y%PlatformPtMesh - Active=Turbine%p_FAST%CompSub /= Module_SD, & + Active=Turbine%p_FAST%CompSub == Module_None, & ErrStat=ErrStat2, ErrMsg=ErrMsg2) if (Failed()) return @@ -1489,9 +1489,58 @@ subroutine InitMappings_ExtPtfm(Mappings, SrcMod, DstMod, Turbine, ErrStat, ErrM call MapMotionMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & SrcDL=DatLoc(ED_y_PlatformPtMesh), & ! ED%y%PlatformPtMesh DstDL=DatLoc(ExtPtfm_u_PtfmMesh), & ! ExtPtfm%u%PtfmMesh - Active=Turbine%p_FAST%CompSub /= Module_SD, & ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return + case (Module_HD) + + call MapLoadMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & + SrcDL=DatLoc(HydroDyn_y_Morison_Mesh), & + SrcDispDL=DatLoc(HydroDyn_u_Morison_Mesh), & + DstDL=DatLoc(ExtPtfm_u_FBMesh), & + DstDispDL=DatLoc(ExtPtfm_y_FBMesh), & + ErrStat=ErrStat2, ErrMsg=ErrMsg2); if (Failed()) return + + call MapLoadMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & + SrcDL=DatLoc(HydroDyn_y_WAMITMesh), & + SrcDispDL=DatLoc(HydroDyn_u_WAMITMesh), & + DstDL=DatLoc(ExtPtfm_u_FBMesh), & + DstDispDL=DatLoc(ExtPtfm_y_FBMesh), & + ErrStat=ErrStat2, ErrMsg=ErrMsg2); if (Failed()) return + + if ( Turbine%ExtPtfm%p%nCB>0_IntKi) then + call MapVariable(Mappings, & + SrcMod=SrcMod, SrcDL=DatLoc(HydroDyn_y_FAddDOF), & + DstMod=DstMod, DstDL=DatLoc(ExtPtfm_u_Fm), & + ErrStat=ErrStat2, ErrMsg=ErrMsg2); if (Failed()) return + end if + + case (Module_MD) + + call MapLoadMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & + SrcDL=DatLoc(MD_y_CoupledLoads, 1), & ! MD%y%CoupledLoads(1) + SrcDispDL=DatLoc(MD_u_CoupledKinematics, 1), & ! MD%u%CoupledKinematics(1) + DstDL=DatLoc(ExtPtfm_u_ConnLDMesh), & ! ExtPtfm%u%ConnLDMesh + DstDispDL=DatLoc(ExtPtfm_y_ConnMesh), & ! ExtPtfm%y%ConnMesh + ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return + + case (Module_MAP) + + call MapLoadMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & + SrcDL=DatLoc(MAP_y_ptFairleadLoad), & ! MAP%y%PtFairleadLoad + SrcDispDL=DatLoc(MAP_u_PtFairDisplacement), & ! MAP%u%PtFairDisplacement + DstDL=DatLoc(ExtPtfm_u_ConnLDMesh), & ! ExtPtfm%u%ConnLDMesh + DstDispDL=DatLoc(ExtPtfm_y_ConnMesh), & ! ExtPtfm%y%ConnMesh + ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return + + case (Module_FEAM) + + call MapLoadMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & + SrcDL=DatLoc(FEAM_y_PtFairleadLoad), & ! FEAM%y%PtFairleadLoad, & + SrcDispDL=DatLoc(FEAM_u_PtFairleadDisplacement), & ! FEAM%u%PtFairleadDisplacement + DstDL=DatLoc(ExtPtfm_u_ConnLDMesh), & ! ExtPtfm%u%ConnLDMesh + DstDispDL=DatLoc(ExtPtfm_y_ConnMesh), & ! ExtPtfm%y%ConnMesh + ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return + end select contains @@ -1523,7 +1572,7 @@ subroutine InitMappings_FEAM(Mappings, SrcMod, DstMod, Turbine, ErrStat, ErrMsg) call MapMotionMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & SrcDL=DatLoc(ED_y_PlatformPtMesh), & ! ED%y%PlatformPtMesh DstDL=DatLoc(FEAM_u_PtFairleadDisplacement), & ! FEAM%u%PtFairleadDisplacement - Active=Turbine%p_FAST%CompSub /= Module_SD, & + Active=Turbine%p_FAST%CompSub == Module_None, & ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return case (Module_SD) @@ -1533,6 +1582,13 @@ subroutine InitMappings_FEAM(Mappings, SrcMod, DstMod, Turbine, ErrStat, ErrMsg) DstDL=DatLoc(FEAM_u_PtFairleadDisplacement), & ! FEAM%u%PtFairleadDisplacement ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return + case (Module_ExtPtfm) + + call MapMotionMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & + SrcDL=DatLoc(ExtPtfm_y_ConnMesh), & ! ExtPtfm_y_ConnMesh + DstDL=DatLoc(FEAM_u_PtFairleadDisplacement), & ! MD%u%CoupledKinematics(1) + ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return + end select contains @@ -1564,20 +1620,20 @@ subroutine InitMappings_HD(Mappings, SrcMod, DstMod, Turbine, ErrStat, ErrMsg) call MapMotionMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & SrcDL=DatLoc(ED_y_PlatformPtMesh), & ! ED%y%PlatformPtMesh DstDL=DatLoc(HydroDyn_u_PRPMesh), & ! HD%u%PRPMesh - Active=Turbine%p_FAST%NRotors == 1, & + Active=Turbine%p_FAST%CompSub == Module_None, & ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return call MapMotionMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & SrcDL=DatLoc(ED_y_PlatformPtMesh), & ! ED%y%PlatformPtMesh DstDL=DatLoc(HydroDyn_u_Morison_Mesh), & ! HD%u%Morison%Mesh ErrStat=ErrStat2, ErrMsg=ErrMsg2, & - Active=Turbine%p_FAST%CompSub /= Module_SD); if(Failed()) return + Active=Turbine%p_FAST%CompSub == Module_None); if(Failed()) return call MapMotionMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & SrcDL=DatLoc(ED_y_PlatformPtMesh), & ! ED%y%PlatformPtMesh DstDL=DatLoc(HydroDyn_u_WAMITMesh), & ! HD%u%WAMITMesh ErrStat=ErrStat2, ErrMsg=ErrMsg2, & - Active=Turbine%p_FAST%CompSub /= Module_SD); if(Failed()) return + Active=Turbine%p_FAST%CompSub == Module_None); if(Failed()) return case (Module_SeaSt) @@ -1592,7 +1648,6 @@ subroutine InitMappings_HD(Mappings, SrcMod, DstMod, Turbine, ErrStat, ErrMsg) call MapMotionMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & SrcDL=DatLoc(SD_y_Y0Mesh), & ! SD%y%Y0Mesh DstDL=DatLoc(HydroDyn_u_PRPMesh), & ! HD%u%PRPMesh - Active=Turbine%p_FAST%NRotors > 1, & ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return call MapMotionMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & @@ -1604,6 +1659,40 @@ subroutine InitMappings_HD(Mappings, SrcMod, DstMod, Turbine, ErrStat, ErrMsg) SrcDL=DatLoc(SD_y_Y2Mesh), & ! SD%y%Y2Mesh DstDL=DatLoc(HydroDyn_u_WAMITMesh), & ! HD%u%WAMITMesh ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return + + case (Module_ExtPtfm) + + call MapMotionMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & + SrcDL=DatLoc(ExtPtfm_y_FBMesh), & ! ExtPtfm%y%FBMesh + DstDL=DatLoc(HydroDyn_u_PRPMesh), & ! HD%u%PRPMesh + ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return + + call MapMotionMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & + SrcDL=DatLoc(ExtPtfm_y_FBMesh), & ! ExtPtfm%y%FBMesh + DstDL=DatLoc(HydroDyn_u_Morison_Mesh), & ! HD%u%Morison%Mesh + ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return + + call MapMotionMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & + SrcDL=DatLoc(ExtPtfm_y_FBMesh), & ! ExtPtfm%y%FBMesh + DstDL=DatLoc(HydroDyn_u_WAMITMesh), & ! HD%u%WAMITMesh + ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return + + if ( Turbine%HD%p%HasAddDOF ) then + call MapVariable(Mappings, & + SrcMod=SrcMod, SrcDL=DatLoc(ExtPtfm_y_qm), & + DstMod=DstMod, DstDL=DatLoc(HydroDyn_u_qAddDOF), & + ErrStat=ErrStat2, ErrMsg=ErrMsg2); if (Failed()) return + + call MapVariable(Mappings, & + SrcMod=SrcMod, SrcDL=DatLoc(ExtPtfm_y_qmdot), & + DstMod=DstMod, DstDL=DatLoc(HydroDyn_u_qAddDOFDot), & + ErrStat=ErrStat2, ErrMsg=ErrMsg2); if (Failed()) return + + call MapVariable(Mappings, & + SrcMod=SrcMod, SrcDL=DatLoc(ExtPtfm_y_qmdotdot), & + DstMod=DstMod, DstDL=DatLoc(HydroDyn_u_qAddDOFDotDot), & + ErrStat=ErrStat2, ErrMsg=ErrMsg2); if (Failed()) return + end if end select contains @@ -1741,7 +1830,7 @@ subroutine InitMappings_MAP(Mappings, SrcMod, DstMod, Turbine, ErrStat, ErrMsg) call MapMotionMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & SrcDL=DatLoc(ED_y_PlatformPtMesh), & ! ED%y%PlatformPtMesh DstDL=DatLoc(MAP_u_PtFairDisplacement), & ! MAPp%u%PtFairDisplacement - Active=Turbine%p_FAST%CompSub /= Module_SD, & + Active=Turbine%p_FAST%CompSub == Module_None, & ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return case (Module_SD) @@ -1751,6 +1840,13 @@ subroutine InitMappings_MAP(Mappings, SrcMod, DstMod, Turbine, ErrStat, ErrMsg) DstDL=DatLoc(MAP_u_PtFairDisplacement), & ! MAPp%u%PtFairDisplacement ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return + case (Module_ExtPtfm) + + call MapMotionMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & + SrcDL=DatLoc(ExtPtfm_y_ConnMesh), & ! ExtPtfm_y_ConnMesh + DstDL=DatLoc(MAP_u_PtFairDisplacement), & ! MD%u%CoupledKinematics(1) + ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return + end select contains @@ -1781,7 +1877,7 @@ subroutine InitMappings_MD(Mappings, SrcMod, DstMod, Turbine, ErrStat, ErrMsg) call MapMotionMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & SrcDL=DatLoc(ED_y_PlatformPtMesh), & ! ED%y%PlatformPtMesh DstDL=DatLoc(MD_u_CoupledKinematics, 1), & ! MD%u%CoupledKinematics(1) - Active=Turbine%p_FAST%CompSub /= Module_SD, & + Active=Turbine%p_FAST%CompSub == Module_None, & ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return case (Module_SD) @@ -1791,6 +1887,13 @@ subroutine InitMappings_MD(Mappings, SrcMod, DstMod, Turbine, ErrStat, ErrMsg) DstDL=DatLoc(MD_u_CoupledKinematics, 1), & ! MD%u%CoupledKinematics(1) ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return + case (Module_ExtPtfm) + + call MapMotionMesh(Turbine, Mappings, SrcMod=SrcMod, DstMod=DstMod, & + SrcDL=DatLoc(ExtPtfm_y_ConnMesh), & ! ExtPtfm%y%ConnMesh + DstDL=DatLoc(MD_u_CoupledKinematics, 1), & ! MD%u%CoupledKinematics(1) + ErrStat=ErrStat2, ErrMsg=ErrMsg2); if(Failed()) return + case (Module_SrvD) call MapCustom(Mappings, Custom_SrvD_to_MD, SrcMod, DstMod) diff --git a/modules/openfast-library/src/FAST_ModGlue.f90 b/modules/openfast-library/src/FAST_ModGlue.f90 index a817f29c1a..645ca2626d 100644 --- a/modules/openfast-library/src/FAST_ModGlue.f90 +++ b/modules/openfast-library/src/FAST_ModGlue.f90 @@ -467,6 +467,7 @@ subroutine ModGlue_Init(p, m, y, p_FAST, m_FAST, Turbine, ErrStat, ErrMsg) pack(modIdx, ModIDs == Module_AD), & pack(modIdx, ModIDs == Module_HD), & pack(modIdx, ModIDs == Module_SD), & + pack(modIdx, ModIDs == Module_ExtPtfm), & pack(modIdx, ModIDs == Module_MAP), & pack(modIdx, ModIDs == Module_MD)] diff --git a/modules/openfast-library/src/FAST_Solver.f90 b/modules/openfast-library/src/FAST_Solver.f90 index fa5b395a21..3caa4681fa 100644 --- a/modules/openfast-library/src/FAST_Solver.f90 +++ b/modules/openfast-library/src/FAST_Solver.f90 @@ -106,21 +106,23 @@ subroutine FAST_SolverInit(p_FAST, p, m, GlueModData, GlueModMaps, Turbine, ErrS pack(modInds, ModIDs == Module_ED), & pack(modInds, ModIDs == Module_BD), & pack(modInds, ModIDs == Module_SD), & + pack(modInds, ModIDs == Module_ExtPtfm), & pack(modInds, ModIDs == Module_IfW), & pack(modInds, ModIDs == Module_ExtLd)] ! Indices of tight coupling modules p%iModTC = [pack(modInds, ModIDs == Module_ED .and. p%ModCoupling /= LooseCoupling), & pack(modInds, ModIDs == Module_BD .and. p%ModCoupling /= LooseCoupling), & - pack(modInds, ModIDs == Module_SD .and. p%ModCoupling /= LooseCoupling)] + pack(modInds, ModIDs == Module_SD .and. p%ModCoupling /= LooseCoupling), & + pack(modInds, ModIDs == Module_ExtPtfm .and. p%ModCoupling /= LooseCoupling)] ! Indices of Option 1 modules p%iModOpt1 = [pack(modInds, ModIDs == Module_ED .and. p%ModCoupling == LooseCoupling), & pack(modInds, ModIDs == Module_BD .and. p%ModCoupling == LooseCoupling), & pack(modInds, ModIDs == Module_SD .and. p%ModCoupling == LooseCoupling), & + pack(modInds, ModIDs == Module_ExtPtfm .and. p%ModCoupling == LooseCoupling), & pack(modInds, ModIDs == Module_SED), & pack(modInds, ModIDs == Module_AD .and. p_FAST%MHK /= MHK_None), & - pack(modInds, ModIDs == Module_ExtPtfm), & pack(modInds, ModIDs == Module_HD), & pack(modInds, ModIDs == Module_Orca), & pack(modInds, ModIDs == Module_MD)] @@ -131,6 +133,7 @@ subroutine FAST_SolverInit(p_FAST, p, m, GlueModData, GlueModMaps, Turbine, ErrS pack(modInds, ModIDs == Module_ED), & pack(modInds, ModIDs == Module_BD), & pack(modInds, ModIDs == Module_SD), & + pack(modInds, ModIDs == Module_ExtPtfm), & pack(modInds, ModIDs == Module_IfW), & pack(modInds, ModIDs == Module_SeaSt), & pack(modInds, ModIDs == Module_AD .and. p_FAST%MHK == MHK_None), & @@ -323,10 +326,10 @@ subroutine SetVarSolveFlags() DstMod => GlueModData(GlueModMaps(j)%iModDst)) ! Determine if source and destination modules are in tight coupling or Option 1 - SrcModTC = any(SrcMod%iMod == p%iModTC) - SrcModO1 = any(SrcMod%iMod == p%iModOpt1) - DstModTC = any(DstMod%iMod == p%iModTC) - DstModO1 = any(DstMod%iMod == p%iModOpt1) + SrcModTC = iand(SrcMod%Category, MC_Tight) /= 0 + SrcModO1 = iand(SrcMod%Category, MC_Option1) /= 0 + DstModTC = iand(DstMod%Category, MC_Tight) /= 0 + DstModO1 = iand(DstMod%Category, MC_Option1) /= 0 ! If source or destination module is not in TC or Option 1, continue if (.not. (SrcModTC .or. SrcModO1)) cycle @@ -453,6 +456,28 @@ subroutine SetVarSolveFlags() end if + case (Map_Variable) + + ! This includes all variable-to-variable mappings for modules + ! that are in tight coupling and/or Option 1. May need to limit + ! this in the future to just loads and accelerations. + + ! Add flag to source variable + do i = 1, size(SrcMod%Vars%y) + associate (Var => SrcMod%Vars%y(i)) + if (.not. MV_EqualDL(Mapping%SrcDL, Var%DL)) cycle + call MV_SetFlags(Var, VF_Solve) + end associate + end do + + ! Add flag to destination variable + do i = 1, size(DstMod%Vars%u) + associate (Var => DstMod%Vars%u(i)) + if (.not. MV_EqualDL(Mapping%DstDL, Var%DL)) cycle + call MV_SetFlags(Var, VF_Solve) + end associate + end do + end select end associate diff --git a/modules/openfast-library/src/FAST_Subs.f90 b/modules/openfast-library/src/FAST_Subs.f90 index f1cdb30760..ece8ac85fd 100644 --- a/modules/openfast-library/src/FAST_Subs.f90 +++ b/modules/openfast-library/src/FAST_Subs.f90 @@ -996,6 +996,8 @@ SUBROUTINE FAST_InitializeAll( t_initial, m_Glue, p_FAST, y_FAST, m_FAST, ED, SE Init%InData_ExtPtfm%InputFile = p_FAST%SubFile Init%InData_ExtPtfm%RootName = trim(p_FAST%OutFileRoot)//'.'//y_FAST%Module_Abrev(Module_ExtPtfm) Init%InData_ExtPtfm%Linearize = p_FAST%Linearize + Init%InData_ExtPtfm%PtfmRefxt = ED%p(1)%PtfmRefxt + Init%InData_ExtPtfm%PtfmRefyt = ED%p(1)%PtfmRefyt Init%InData_ExtPtfm%PtfmRefzt = ED%p(1)%PtfmRefzt ! Required ! Call module initialization routine @@ -2023,7 +2025,7 @@ SUBROUTINE ValidateInputData(p, m_FAST, ErrStat, ErrMsg) END IF ELSE IF (p%CompMooring == Module_Orca) CALL SetErrStat( ErrID_Fatal, 'HydroDyn cannot be used if OrcaFlex is used. Set CompHydro = 0 or CompMooring < 4 in the FAST input file.', ErrStat, ErrMsg, RoutineName ) - IF (p%CompSub == Module_ExtPtfm) CALL SetErrStat( ErrID_Fatal, 'HydroDyn cannot be used if ExtPtfm_MCKF is used. Set CompHydro = 0 or CompSub < 2 in the FAST input file.', ErrStat, ErrMsg, RoutineName ) + ! IF (p%CompSub == Module_ExtPtfm) CALL SetErrStat( ErrID_Fatal, 'HydroDyn cannot be used if ExtPtfm_MCKF is used. Set CompHydro = 0 or CompSub < 2 in the FAST input file.', ErrStat, ErrMsg, RoutineName ) END IF ! SED cannot be used with certain modules @@ -2139,7 +2141,6 @@ SUBROUTINE ValidateInputData(p, m_FAST, ErrStat, ErrMsg) ! now, make sure we haven't asked for any modules that we can't yet linearize: if (p%CompAero == MODULE_ADsk) call SetErrStat(ErrID_Fatal,'Linearization is not implemented for the AeroDisk module.',ErrStat, ErrMsg, RoutineName) if (p%CompInflow == MODULE_ExtInfw) call SetErrStat(ErrID_Fatal,'Linearization is not implemented for the ExternalInflow coupling.',ErrStat, ErrMsg, RoutineName) - if (p%CompSub /= MODULE_None .and. p%CompSub /= MODULE_SD ) call SetErrStat(ErrID_Fatal,'Linearization is not implemented for the ExtPtfm_MCKF substructure module.',ErrStat, ErrMsg, RoutineName) if (p%CompMooring /= MODULE_None .and. p%CompMooring == MODULE_FEAM) call SetErrStat(ErrID_Fatal,'Linearization is not implemented for the FEAMooring mooring module.',ErrStat, ErrMsg, RoutineName) if (p%CompIce /= MODULE_None) call SetErrStat(ErrID_Fatal,'Linearization is not implemented for any of the ice loading modules.',ErrStat, ErrMsg, RoutineName) diff --git a/openfast_io/openfast_io/FAST_reader.py b/openfast_io/openfast_io/FAST_reader.py index 681491afcd..cab9249ec0 100644 --- a/openfast_io/openfast_io/FAST_reader.py +++ b/openfast_io/openfast_io/FAST_reader.py @@ -1933,6 +1933,7 @@ def read_HydroDyn(self, hd_file): self.fst_vt['HydroDyn']['PtfmVol0'] = read_array(f,self.fst_vt['HydroDyn']['NBody'], array_type=float) self.fst_vt['HydroDyn']['PtfmCOBxt'] = read_array(f,self.fst_vt['HydroDyn']['NBody'], array_type=float) self.fst_vt['HydroDyn']['PtfmCOByt'] = read_array(f,self.fst_vt['HydroDyn']['NBody'], array_type=float) + self.fst_vt['HydroDyn']['NAddDOF'] = read_array(f,self.fst_vt['HydroDyn']['NBody'], array_type=int) # 2ND-ORDER FLOATING PLATFORM FORCES f.readline() @@ -2891,9 +2892,8 @@ def read_ExtPtfm(self, ep_file): f.readline() # Reduction inputs - self.fst_vt['ExtPtfm']['FileFormat'] = int_read(f.readline().split()[0]) + self.fst_vt['ExtPtfm']['RBMod'] = int_read(f.readline().split()[0]) self.fst_vt['ExtPtfm']['Red_FileName'] = os.path.join(os.path.dirname(ep_file), quoted_read(f.readline().split()[0])) - self.fst_vt['ExtPtfm']['RedCst_FileName'] = os.path.join(os.path.dirname(ep_file), quoted_read(f.readline().split()[0])) self.fst_vt['ExtPtfm']['NActiveDOFList'] = int_read(f.readline().split()[0]) self.fst_vt['ExtPtfm']['ActiveDOFList'] = read_array(f,None,split_val='ActiveDOFList',array_type=int) self.fst_vt['ExtPtfm']['NInitPosList'] = int_read(f.readline().split()[0]) @@ -2902,6 +2902,18 @@ def read_ExtPtfm(self, ep_file): self.fst_vt['ExtPtfm']['InitVelList'] = read_array(f,None,split_val='InitVelList',array_type=float) f.readline() + # Connection inputs + self.fst_vt['ExtPtfm']['HasConnections'] = bool_read(f.readline().split()[0]) + self.fst_vt['ExtPtfm']['Conn_FileName'] = os.path.join(os.path.dirname(ep_file), quoted_read(f.readline().split()[0])) + f.readline() + + # User forcing inputs + self.fst_vt['ExtPtfm']['HasUserForcing'] = bool_read(f.readline().split()[0]) + self.fst_vt['ExtPtfm']['Force_FileName'] = os.path.join(os.path.dirname(ep_file), quoted_read(f.readline().split()[0])) + self.fst_vt['ExtPtfm']['HasConnForcing'] = bool_read(f.readline().split()[0]) + self.fst_vt['ExtPtfm']['FConn_FileName'] = os.path.join(os.path.dirname(ep_file), quoted_read(f.readline().split()[0])) + f.readline() + # Output self.fst_vt['ExtPtfm']['SumPrint'] = bool_read(f.readline().split()[0]) self.fst_vt['ExtPtfm']['OutFile'] = int_read(f.readline().split()[0]) @@ -2930,18 +2942,25 @@ def read_ExtPtfm(self, ep_file): self.set_outlist(self.fst_vt['outlist']['ExtPtfm'], channel_list) # TODO: Need to figure this out as we dont have a full outlist for now, similar to MoorDyn data = f.readline() - if self.fst_vt['ExtPtfm']['FileFormat'] == 0: - self.fst_vt['ExtPtfm']['Guyan'] = {} - # self.read_Guyan(f) # TODO: need to impliment this. An example file not found to test - elif self.fst_vt['ExtPtfm']['FileFormat'] == 1: - self.fst_vt['ExtPtfm']['FlexASCII'] = {} - self.read_Superelement(self.fst_vt['ExtPtfm']['Red_FileName']) + self.fst_vt['ExtPtfm']['FlexASCII'] = {} + self.read_Superelement(self.fst_vt['ExtPtfm']['Red_FileName']) + + if self.fst_vt['ExtPtfm']['HasConnections']: + self.fst_vt['ExtPtfm']['Connections'] = {} + self.read_Connections(self.fst_vt['ExtPtfm']['Conn_FileName'], self.fst_vt['ExtPtfm']['FlexASCII']['nDOF']) + + if self.fst_vt['ExtPtfm']['HasUserForcing']: + self.fst_vt['ExtPtfm']['UserForcing'] = {} + self.read_UserForcing(self.fst_vt['ExtPtfm']['Force_FileName'], self.fst_vt['ExtPtfm']['FlexASCII']['nDOF']) + + if self.fst_vt['ExtPtfm']['HasConnForcing']: + self.fst_vt['ExtPtfm']['ConnForcing'] = {} + self.read_ConnForcing(self.fst_vt['ExtPtfm']['FConn_FileName'], self.fst_vt['ExtPtfm']['Connections']['nConn']) f.close() def read_Superelement(self, superelement_file): - def detectAndReadExtPtfmSE(lines): # Function based on https://github.com/OpenFAST/openfast_toolbox/blob/353643ed917d113ec8dfd765813fef7d09752757/openfast_toolbox/io/fast_input_file.py#L1932 @@ -2953,59 +2972,43 @@ def readmat(n,m,lines,iStart): i=iStart+j M[j,:]=np.array(lines[i].split()).astype(float) return M - - if len(lines)<10: - return False - if not (lines[0][0]=='!' and lines[1][0]=='!'): - return False - if lines[1].lower().find('flex')<0: - return - if lines[2].lower().find('!dimension')<0: - return - + # --- At this stage we assume it's in the proper format - nDOFCommon = -1 - i=2 + nDOF = -1 + i=0 try: while i0: if l[0]=='!': if l.find('!dimension')==0: self.fst_vt['ExtPtfm']['FlexASCII']['nDOF'] = int(l.split(':')[1]) - nDOFCommon = self.fst_vt['ExtPtfm']['FlexASCII']['nDOF'] - elif l.find('!time increment')==0: - self.fst_vt['ExtPtfm']['FlexASCII']['dt'] = float(l.split(':')[1]) - elif l.find('!total simulation time')==0: - self.fst_vt['ExtPtfm']['FlexASCII']['T'] = float(l.split(':')[1]) + nDOF = self.fst_vt['ExtPtfm']['FlexASCII']['nDOF'] elif len(l.strip())==0: pass else: @@ -3025,6 +3028,159 @@ def readmat(n,m,lines,iStart): raise NameError('Could not read Superelement file') f.close() + + def read_Connections(self, connection_file, nDOF): + + def detectAndReadExtPtfmConnections(lines): + # Function based on https://github.com/OpenFAST/openfast_toolbox/blob/353643ed917d113ec8dfd765813fef7d09752757/openfast_toolbox/io/fast_input_file.py#L1932 + # Developed by Emmanuel Branlard (https://github.com/ebranlard) + + def readmat(n,m,lines,iStart): + M=np.zeros((n,m)) + for j in np.arange(n): + i=iStart+j + M[j,:]=np.array(lines[i].split()).astype(float) + return M + + # --- At this stage we assume it's in the proper format + nConn = -1 + i=0 + try: + while i0: + if l[0]=='!': + if l.find('!nconn')==0: + self.fst_vt['ExtPtfm']['Connections']['nConn'] = int(l.split(':')[1]) + nConn = self.fst_vt['ExtPtfm']['Connections']['nConn'] + elif len(l.strip())==0: + pass + else: + raise NameError('Unexcepted content found on line {}'.format(i)) + i+=1 + except NameError as e: + raise e + except: + raise + + return True + + + f = open(connection_file) + lines=f.read().splitlines() + if not detectAndReadExtPtfmConnections(lines): + raise NameError('Could not read Connections file') + f.close() + + + def read_UserForcing(self, userforcing_file, nDOF): + + def detectAndReadExtPtfmUserForcing(lines): + # Function based on https://github.com/OpenFAST/openfast_toolbox/blob/353643ed917d113ec8dfd765813fef7d09752757/openfast_toolbox/io/fast_input_file.py#L1932 + # Developed by Emmanuel Branlard (https://github.com/ebranlard) + + def readmat(n,m,lines,iStart): + M=np.zeros((n,m)) + for j in np.arange(n): + i=iStart+j + M[j,:]=np.array(lines[i].split()).astype(float) + return M + + # --- At this stage we assume it's in the proper format + NSteps = -1 + i=0 + try: + while i0: + if l[0]=='!': + if l.find('!nsteps')==0: + self.fst_vt['ExtPtfm']['UserForcing']['nSteps'] = int(l.split(':')[1]) + nSteps = self.fst_vt['ExtPtfm']['UserForcing']['nSteps'] + elif len(l.strip())==0: + pass + else: + raise NameError('Unexcepted content found on line {}'.format(i)) + i+=1 + except NameError as e: + raise e + except: + raise + + return True + + + f = open(userforcing_file) + lines=f.read().splitlines() + if not detectAndReadExtPtfmUserForcing(lines): + raise NameError('Could not read User Forcing file') + f.close() + + + def read_ConnForcing(self, connforcing_file, nConn): + + def detectAndReadExtPtfmConnForcing(lines): + # Function based on https://github.com/OpenFAST/openfast_toolbox/blob/353643ed917d113ec8dfd765813fef7d09752757/openfast_toolbox/io/fast_input_file.py#L1932 + # Developed by Emmanuel Branlard (https://github.com/ebranlard) + + def readmat(n,m,lines,iStart): + M=np.zeros((n,m)) + for j in np.arange(n): + i=iStart+j + M[j,:]=np.array(lines[i].split()).astype(float) + return M + + # --- At this stage we assume it's in the proper format + NSteps = -1 + i=0 + try: + while i0: + if l[0]=='!': + if l.find('!nsteps')==0: + self.fst_vt['ExtPtfm']['ConnForcing']['nSteps'] = int(l.split(':')[1]) + nSteps = self.fst_vt['ExtPtfm']['ConnForcing']['nSteps'] + elif len(l.strip())==0: + pass + else: + raise NameError('Unexcepted content found on line {}'.format(i)) + i+=1 + except NameError as e: + raise e + except: + raise + + return True + + + f = open(connforcing_file) + lines=f.read().splitlines() + if not detectAndReadExtPtfmConnForcing(lines): + raise NameError('Could not read Connections Forcing file') + f.close() + + def read_MAP(self, map_file): # MAP++ diff --git a/openfast_io/openfast_io/FAST_vars_out.py b/openfast_io/openfast_io/FAST_vars_out.py index fb551bdaaf..b92a0a2abe 100644 --- a/openfast_io/openfast_io/FAST_vars_out.py +++ b/openfast_io/openfast_io/FAST_vars_out.py @@ -9602,55 +9602,96 @@ ExtPtfm['IntrfMx'] = False # - Platform interface moment - Directed along the x-direction (Nm) ExtPtfm['IntrfMy'] = False # - Platform interface moment - Directed along the y-direction (Nm) ExtPtfm['IntrfMz'] = False # - Platform interface moment - Directed along the z-direction (Nm) -ExtPtfm['InpF_Fx'] = False # - Reduced Input force at interface point - Directed along the x-direction (N) -ExtPtfm['InpF_Fy'] = False # - Reduced Input force at interface point - Directed along the y-direction (N) -ExtPtfm['InpF_Fz'] = False # - Reduced Input force at interface point - Directed along the z-direction (N) -ExtPtfm['InpF_Mx'] = False # - Reduced Input moment at interface point - Directed along the x-direction (Nm) -ExtPtfm['InpF_My'] = False # - Reduced Input moment at interface point - Directed along the y-direction (Nm) -ExtPtfm['InpF_Mz'] = False # - Reduced Input moment at interface point - Directed along the z-direction (Nm) -ExtPtfm['CBQ_001'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_002'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_003'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_004'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_005'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_006'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_007'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_010'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_011'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_012'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_013'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_014'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_015'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_016'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_017'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_020'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_021'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_022'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_023'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_024'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBQ_025'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_001'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_002'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_003'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_004'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_005'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_006'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_007'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_010'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_011'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_012'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_013'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_014'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_015'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_016'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_017'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_020'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_021'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_022'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_023'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_024'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['CBF_025'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) -ExtPtfm['WavElev'] = False # - Wave elevation (m) +ExtPtfm['ExtrnFx'] = False # - Reduced Input force at interface point - Directed along the x-direction (N) +ExtPtfm['ExtrnFy'] = False # - Reduced Input force at interface point - Directed along the y-direction (N) +ExtPtfm['ExtrnFz'] = False # - Reduced Input force at interface point - Directed along the z-direction (N) +ExtPtfm['ExtrnMx'] = False # - Reduced Input moment at interface point - Directed along the x-direction (Nm) +ExtPtfm['ExtrnMy'] = False # - Reduced Input moment at interface point - Directed along the y-direction (Nm) +ExtPtfm['ExtrnMz'] = False # - Reduced Input moment at interface point - Directed along the z-direction (Nm) +ExtPtfm['CBD001'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD002'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD003'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD004'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD005'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD006'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD007'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD010'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD011'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD012'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD013'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD014'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD015'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD016'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD017'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD020'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD021'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD022'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD023'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD024'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBD025'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV001'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV002'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV003'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV004'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV005'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV006'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV007'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV010'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV011'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV012'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV013'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV014'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV015'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV016'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV017'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV020'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV021'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV022'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV023'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV024'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBV025'] = False # - Modal velocity of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA001'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA002'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA003'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA004'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA005'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA006'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA007'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA010'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA011'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA012'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA013'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA014'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA015'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA016'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA017'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA020'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA021'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA022'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA023'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA024'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBA025'] = False # - Modal acceleration of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF001'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF002'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF003'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF004'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF005'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF006'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF007'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF010'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF011'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF012'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF013'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF014'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF015'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF016'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF017'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF020'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF021'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF022'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF023'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF024'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF025'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) """ AeroDisk """ AeroDisk = {} @@ -9745,4 +9786,4 @@ FstOutput['MoorDyn'] = MoorDyn FstOutput['ExtPtfm'] = ExtPtfm FstOutput['AeroDisk'] = AeroDisk -FstOutput['SimpleElastoDyn'] = SimpleElastoDyn \ No newline at end of file +FstOutput['SimpleElastoDyn'] = SimpleElastoDyn diff --git a/openfast_io/openfast_io/FAST_writer.py b/openfast_io/openfast_io/FAST_writer.py index 2c40bc4e32..9353648468 100644 --- a/openfast_io/openfast_io/FAST_writer.py +++ b/openfast_io/openfast_io/FAST_writer.py @@ -1644,6 +1644,7 @@ def write_HydroDyn(self): f.write('{:<22} {:<11} {:}'.format(', '.join([f'{val}' for val in self.fst_vt['HydroDyn']['PtfmVol0']]), 'PtfmVol0', '- Displaced volume of water when the body is in its undisplaced position (m^3) [1 to NBody] [only used when PotMod=1; USE THE SAME VALUE COMPUTED BY WAMIT AS OUTPUT IN THE .OUT FILE!]\n')) f.write('{:<22} {:<11} {:}'.format(', '.join([f'{val}' for val in self.fst_vt['HydroDyn']['PtfmCOBxt']]), 'PtfmCOBxt', '- The xt offset of the center of buoyancy (COB) from (0,0) (meters) [1 to NBody] [only used when PotMod=1]\n')) f.write('{:<22} {:<11} {:}'.format(', '.join([f'{val}' for val in self.fst_vt['HydroDyn']['PtfmCOByt']]), 'PtfmCOByt', '- The yt offset of the center of buoyancy (COB) from (0,0) (meters) [1 to NBody] [only used when PotMod=1]\n')) + f.write('{:<22} {:<11} {:}'.format(', '.join([f'{val}' for val in self.fst_vt['HydroDyn']['NAddDOF']]), 'NAddDOF', '- Number of additional generalized DOF of each WAMIT body (-) [1 to NBody] [>=0; =0 if NBody>1; only used when PotMod=1]\n')) f.write('---------------------- 2ND-ORDER FLOATING PLATFORM FORCES ---------------------- [unused with WaveMod=0 or 6, or PotMod=0 or 2]\n') f.write('{:<22} {:<11} {:}'.format(self.fst_vt['HydroDyn']['MnDrift'], 'MnDrift', "- Mean-drift 2nd-order forces computed {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero]\n")) f.write('{:<22} {:<11} {:}'.format(self.fst_vt['HydroDyn']['NewmanApp'], 'NewmanApp', "- Mean- and slow-drift 2nd-order forces computed with Newman's approximation {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero. Used only when WaveDirMod=0]\n")) @@ -2366,14 +2367,18 @@ def write_SubDyn(self): f.close() def write_ExtPtfm(self): - # Generate ExtPtfm input file + # Generate ExtPtfm input files - if self.fst_vt['ExtPtfm']['FileFormat'] == 0: - None - # self.write_Guyan() # TODO: need to impliment this. An example file not found to test - elif self.fst_vt['ExtPtfm']['FileFormat'] == 1: - self.write_Superelement() + self.write_Superelement() + if self.fst_vt['ExtPtfm']['HasConnections']: + self.write_Connections() + + if self.fst_vt['ExtPtfm']['HasUserForcing']: + self.write_UserForcing() + + if self.fst_vt['ExtPtfm']['HasConnForcing']: + self.write_ConnForcing() self.fst_vt['Fst']['SubFile'] = self.FAST_namingOut + '_ExtPtfm.dat' ep_file = os.path.join(self.FAST_runDirectory, self.fst_vt['Fst']['SubFile']) @@ -2386,16 +2391,22 @@ def write_ExtPtfm(self): f.write('{!s:<22} {:<11} {:}'.format(self.fst_vt['ExtPtfm']['DT'], 'DT', '- Communication interval for controllers (s) (or "default")\n')) f.write('{:<22d} {:<11} {:}'.format(self.fst_vt['ExtPtfm']['IntMethod'], 'IntMethod', '- Integration Method {1:RK4; 2:AB4, 3:ABM4} (switch)\n')) f.write('---------------------- REDUCTION INPUTS ----------------------------------------\n') - f.write('{:<22d} {:<11} {:}'.format(self.fst_vt['ExtPtfm']['FileFormat'], 'FileFormat', '- File Format {0:Guyan; 1:FlexASCII} (switch)\n')) + f.write('{:<22d} {:<11} {:}'.format(self.fst_vt['ExtPtfm']['RBMod'], 'RBMod', '- Method for handling rigid-body motion (switch) {0: No special handling for rigid-body motion; 1: Transform to rigid-body frame of reference; 2: Transform to rigid-body frame of reference and add fictitious forces and exact self-weight}\n')) f.write('{!s:<22} {:<11} {:}'.format(self.fst_vt['ExtPtfm']['Red_FileName'], 'Red_FileName', '- Path of the file containing Guyan/Craig-Bampton inputs (-)\n')) - f.write('{!s:<22} {:<11} {:}'.format(self.fst_vt['ExtPtfm']['RedCst_FileName'], 'RedCst_FileName', '- Path of the file containing Guyan/Craig-Bampton constant inputs (-) (currently unused)\n')) f.write('{:<22d} {:<11} {:}'.format(self.fst_vt['ExtPtfm']['NActiveDOFList'], 'NActiveDOFList', '- Number of active CB mode listed in ActiveDOFList, use -1 for all modes (integer)\n')) f.write('{:<22} {:<11} {:}'.format(', '.join([f'{val}' for val in self.fst_vt['ExtPtfm']['ActiveDOFList']]), 'ActiveDOFList', '- List of CB modes index that are active, [unused if NActiveDOFList<=0]\n')) f.write('{:<22d} {:<11} {:}'.format(self.fst_vt['ExtPtfm']['NInitPosList'], 'NInitPosList', '- Number of initial positions listed in InitPosList, using 0 implies all DOF initialized to 0 (integer)\n')) f.write('{:<22} {:<11} {:}'.format(', '.join([f'{val}' for val in self.fst_vt['ExtPtfm']['InitPosList']]), 'InitPosList', '- List of initial positions for the CB modes [unused if NInitPosList<=0 or EquilStart=True]\n')) f.write('{:<22d} {:<11} {:}'.format(self.fst_vt['ExtPtfm']['NInitVelList'], 'NInitVelList', '- Number of initial positions listed in InitVelList, using 0 implies all DOF initialized to 0 (integer)\n')) f.write('{:<22} {:<11} {:}'.format(', '.join([f'{val}' for val in self.fst_vt['ExtPtfm']['InitVelList']]), 'InitVelList', '- List of initial velocities for the CB modes [unused if NInitVelPosList<=0 or EquilStart=True]\n')) - + f.write('---------------------- CONNECTION INPUTS ---------------------------------------\n') + f.write('{!s:<22} {:<11} {:}'.format(self.fst_vt['ExtPtfm']['HasConnections'], 'Connections', '- Flag for connection points on the structure (flag)\n')) + f.write('{!s:<22} {:<11} {:}'.format(self.fst_vt['ExtPtfm']['Conn_FileName'], 'Conn_FileName', '- Path of the file containing connection points (-)\n')) + f.write('---------------------- USER FORCING INPUTS -------------------------------------\n') + f.write('{!s:<22} {:<11} {:}'.format(self.fst_vt['ExtPtfm']['HasUserForcing'], 'UserForcing', '- Flag for user-prescribed modal forcing (flag)\n')) + f.write('{!s:<22} {:<11} {:}'.format(self.fst_vt['ExtPtfm']['Force_FileName'], 'Force_FileName', '- Path of the file containing user forcing time series (-)\n')) + f.write('{!s:<22} {:<11} {:}'.format(self.fst_vt['ExtPtfm']['HasConnForcing'], 'ConnForcing', '- Flag for user-prescribed connection forcing (flag)\n')) + f.write('{!s:<22} {:<11} {:}'.format(self.fst_vt['ExtPtfm']['FConn_FileName'], 'FConn_FileName', '- Path of the file containing user connection force time series (-)\n')) f.write('---------------------- OUTPUT --------------------------------------------------\n') f.write('{!s:<22} {:<11} {:}'.format(self.fst_vt['ExtPtfm']['SumPrint'], 'SumPrint', '- Print summary data to .sum (flag)\n')) f.write('{:<22d} {:<11} {:}'.format(self.fst_vt['ExtPtfm']['OutFile'], 'OutFile', '- Switch to determine where output will be placed: {1: in module output file only; 2: in glue code output file only; 3: both} (currently unused)\n')) @@ -2414,34 +2425,29 @@ def write_ExtPtfm(self): f.close() - def write_Superelement(self): def toString(SuperElement): # Function based on https://github.com/OpenFAST/openfast_toolbox/blob/353643ed917d113ec8dfd765813fef7d09752757/openfast_toolbox/io/fast_input_file.py#L2034 # Developed by Emmanuel Branlard (https://github.com/ebranlard) s='' - s+='!Comment\n' - s+='!Comment Flex 5 Format\n' s+='!Dimension: {}\n'.format(SuperElement['nDOF']) - s+='!Time increment in simulation: {}\n'.format(SuperElement['dt']) - s+='!Total simulation time in file: {}\n'.format(SuperElement['T']) s+='\n!Mass Matrix\n' - s+='!Dimension: {}\n'.format(SuperElement['nDOF']) s+='\n'.join(''.join('{:16.8e}'.format(x) for x in y) for y in SuperElement['MassMatrix']) s+='\n\n!Stiffness Matrix\n' - s+='!Dimension: {}\n'.format(SuperElement['nDOF']) s+='\n'.join(''.join('{:16.8e}'.format(x) for x in y) for y in SuperElement['StiffnessMatrix']) s+='\n\n!Damping Matrix\n' - s+='!Dimension: {}\n'.format(SuperElement['nDOF']) s+='\n'.join(''.join('{:16.8e}'.format(x) for x in y) for y in SuperElement['DampingMatrix']) - s+='\n\n!Loading and Wave Elevation\n' - s+='!Dimension: 1 time column - {} force columns\n'.format(SuperElement['nDOF']) - s+='\n'.join(''.join('{:16.8e}'.format(x) for x in y) for y in SuperElement['Loading']) + s+='\n\n!Weight constant\n' + s+='\n'.join(''.join('{:16.8e}'.format(x) for x in y) for y in SuperElement['WeightConstant']) + + s+='\n\n!Weight stiffness matrix\n' + s+='\n'.join(''.join('{:16.8e}'.format(x) for x in y) for y in SuperElement['WeightStiffness']) + return s # Generate Superelement input file @@ -2455,6 +2461,85 @@ def toString(SuperElement): os.fsync(f) f.close() + + def write_Connections(self): + + def toString(Connections): + # Function based on https://github.com/OpenFAST/openfast_toolbox/blob/353643ed917d113ec8dfd765813fef7d09752757/openfast_toolbox/io/fast_input_file.py#L2034 + # Developed by Emmanuel Branlard (https://github.com/ebranlard) + s='' + s+='!nConn: {}\n'.format(Connections['nConn']) + + s+='\n!Connections\n' + s+='\n'.join(''.join('{:16.8e}'.format(x) for x in y) for y in Connections['Position']) + + s+='\n\n!Displacement\n' + s+='\n'.join(''.join('{:16.8e}'.format(x) for x in y) for y in Connections['Displacement']) + + return s + + # Generate Superelement input file + self.fst_vt['ExtPtfm']['Conn_FileName'] = self.FAST_namingOut + '_ExtPtfm_Conn.dat' + conn_file = os.path.join(self.FAST_runDirectory, self.fst_vt['ExtPtfm']['Conn_FileName']) + f = open(conn_file, 'w') + + f.write(toString(self.fst_vt['ExtPtfm']['Connections'])) + + f.flush() + os.fsync(f) + f.close() + + + def write_UserForcing(self): + + def toString(UserForcing): + # Function based on https://github.com/OpenFAST/openfast_toolbox/blob/353643ed917d113ec8dfd765813fef7d09752757/openfast_toolbox/io/fast_input_file.py#L2034 + # Developed by Emmanuel Branlard (https://github.com/ebranlard) + s='' + s+='!nSteps: {}\n'.format(UserForcing['nSteps']) + + s+='\n!Forcing:\n' + s+='\n'.join(''.join('{:16.8e}'.format(x) for x in y) for y in UserForcing['ForceTimeSeries']) + + return s + + # Generate user forcing input file + self.fst_vt['ExtPtfm']['Force_FileName'] = self.FAST_namingOut + '_ExtPtfm_UserFrc.dat' + UserFrc_file = os.path.join(self.FAST_runDirectory, self.fst_vt['ExtPtfm']['Force_FileName']) + f = open(UserFrc_file, 'w') + + f.write(toString(self.fst_vt['ExtPtfm']['UserForcing'])) + + f.flush() + os.fsync(f) + f.close() + + + def write_ConnForcing(self): + + def toString(ConnForcing): + # Function based on https://github.com/OpenFAST/openfast_toolbox/blob/353643ed917d113ec8dfd765813fef7d09752757/openfast_toolbox/io/fast_input_file.py#L2034 + # Developed by Emmanuel Branlard (https://github.com/ebranlard) + s='' + s+='!nSteps: {}\n'.format(ConnForcing['nSteps']) + + s+='\n!Forcing:\n' + s+='\n'.join(''.join('{:16.8e}'.format(x) for x in y) for y in ConnForcing['ForceTimeSeries']) + + return s + + # Generate user forcing input file + self.fst_vt['ExtPtfm']['FConn_FileName'] = self.FAST_namingOut + '_ExtPtfm_ConnFrc.dat' + ConnFrc_file = os.path.join(self.FAST_runDirectory, self.fst_vt['ExtPtfm']['FConn_FileName']) + f = open(ConnFrc_file, 'w') + + f.write(toString(self.fst_vt['ExtPtfm']['ConnForcing'])) + + f.flush() + os.fsync(f) + f.close() + + def write_MAP(self): # Generate MAP++ input file diff --git a/openfast_io/openfast_io/FileTools.py b/openfast_io/openfast_io/FileTools.py index e372ee2e72..b9ee030ca4 100644 --- a/openfast_io/openfast_io/FileTools.py +++ b/openfast_io/openfast_io/FileTools.py @@ -389,7 +389,7 @@ def cleanup_fstvt(fst_vt, ignoreVars=None, removeFileRef=False, removeArrayProps 'HydroFile', 'SubFile', 'MooringFile', - 'Red_FileName', + 'Red_FileName', 'Conn_FileName', 'Force_FileName', 'FConn_FileName', 'PrescribedForcesFile', 'actuatorDiskFile', 'BDBldFile(1)', 'BDBldFile(2)', 'BDBldFile(3)', diff --git a/reg_tests/r-test b/reg_tests/r-test index 5c1b8ad8ed..6e3a6427a7 160000 --- a/reg_tests/r-test +++ b/reg_tests/r-test @@ -1 +1 @@ -Subproject commit 5c1b8ad8edfddf34b4458d3e1e238faaa980d38b +Subproject commit 6e3a6427a7d7e9eb19dae4ba3219c0822bd7458e