From b70f57810e6a95d9227d42e5b9532ce683b218f0 Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Fri, 12 Jan 2024 16:57:54 +0000 Subject: [PATCH 01/10] Add alloc and pointer pack/unpack routines in ModReg --- modules/nwtc-library/ModRegGen.py | 604 ++- modules/nwtc-library/src/ModReg.f90 | 6800 +++++++++++++++++++++------ 2 files changed, 5731 insertions(+), 1673 deletions(-) diff --git a/modules/nwtc-library/ModRegGen.py b/modules/nwtc-library/ModRegGen.py index 4af818cc1c..613409ce83 100644 --- a/modules/nwtc-library/ModRegGen.py +++ b/modules/nwtc-library/ModRegGen.py @@ -15,188 +15,178 @@ num_ranks = 5 module_header = ''' +!STARTOFGENERATEDFILE 'ModReg.f90' +! +! WARNING This file is generated automatically by ModRegGen.py. +! Do not edit. Your changes to this file will be lost. +! +! FAST Registry +!********************************************************************************************************************************** +! LICENSING +! Copyright (C) 2024 National Renewable Energy Laboratory +! +! This file is part of the NWTC Subroutine Library. +! +! Licensed under the Apache License, Version 2.0 (the "License"); +! you may not use this file except in compliance with the License. +! You may obtain a copy of the License at +! +! http://www.apache.org/licenses/LICENSE-2.0 +! +! Unless required by applicable law or agreed to in writing, software +! distributed under the License is distributed on an "AS IS" BASIS, +! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +! See the License for the specific language governing permissions and +! limitations under the License. +!********************************************************************************************************************************** + +!> This module contains routines for packing and unpacking data from a registry data file. module ModReg use NWTC_Base implicit none private - public :: PackBuffer - public :: WritePackBuffer, ReadPackBuffer, InitPackBuffer, DestroyPackBuffer, RegCheckErr - public :: RegPack, RegPackBounds, RegPackPointer - public :: RegUnpack, RegUnpackBounds, RegUnpackPointer - - type :: PackBuffer - integer(B1Ki), allocatable :: Bytes(:) - integer(B8Ki) :: NB - type(c_ptr), allocatable :: Pointers(:) - integer(B8Ki) :: NP - integer(IntKi) :: ErrStat = ErrID_Fatal - character(ErrMsgLen) :: ErrMsg = 'PackBuffer not initialized' + public :: RegFile + public :: OpenRegFile, InitRegFile, CloseRegFile, RegCheckErr + public :: RegPackBounds, RegUnpackBounds + public :: RegPackPointer, RegUnpackPointer + public :: RegPack, RegUnpack + public :: RegPackAlloc, RegUnpackAlloc + public :: RegPackPtr, RegUnpackPtr + + type :: RegFile + integer(IntKi) :: Unit + integer(IntKi) :: Offset + type(c_ptr), allocatable :: Pointers(:) + integer(B8Ki) :: NumData + integer(B8Ki) :: NumPointers + integer(IntKi) :: ErrStat = ErrID_Fatal + character(ErrMsgLen) :: ErrMsg = 'RegFile not initialized' end type {ifc_lines} contains - subroutine InitPackBuffer(Buf, ErrStat, ErrMsg) - type(PackBuffer), intent(inout) :: Buf - integer(IntKi), intent(out) :: ErrStat - character(ErrMsgLen), intent(out) :: ErrMsg + subroutine InitRegFile(RF, Unit, ErrStat, ErrMsg) + type(RegFile), intent(inout) :: RF + integer(IntKi), intent(in) :: Unit + integer(IntKi), intent(out) :: ErrStat + character(ErrMsgLen), intent(out) :: ErrMsg - character(*), parameter :: RoutineName = "InitPackBuffer" - integer(B8Ki), parameter :: NumPointersInit = 128 - integer(B8Ki), parameter :: NumBytesInit = 1024 - integer(IntKi) :: stat + character(*), parameter :: RoutineName = "InitRegFile" + integer(B8Ki), parameter :: NumPointersInit = 128 + integer(IntKi) :: stat ErrStat = ErrID_None ErrMsg = "" - Buf%ErrStat = ErrID_None - Buf%ErrMsg = "" - Buf%NP = 0 - Buf%NB = 0 - - ! If pointers have not been allocated, allocate with initial size - if (.not. allocated(Buf%Pointers)) then - allocate (Buf%Pointers(NumPointersInit), stat=stat) - if (stat /= 0) then - ErrStat = ErrID_Fatal - write(ErrMsg,*) 'InitPackBuffer: Unable to init pointer index to with size of', NumPointersInit - return - end if + RF%ErrStat = ErrID_None + RF%ErrMsg = "" + RF%NumData = 0 + RF%NumPointers = 0 + RF%Unit = Unit + + ! Get current position in the file in case anything has been written to it + inquire(Unit, POS=RF%Offset) + + ! Write invalid number of pointers at the beginning of file so we can + ! check if the file if the file has been finalized and closed + write (Unit, iostat=stat) -1_B8Ki + if (stat /= 0) then + ErrStat = ErrID_Fatal + write (ErrMsg, *) 'InitRegFile: Unable to write offset at beginning of file' + return end if - - ! Reset all pointers to null - Buf%Pointers = c_null_ptr - ! If byte array has not been allocated, allocate with initial size - if (.not. allocated(Buf%Bytes)) then - allocate (Buf%Bytes(NumBytesInit), stat=stat) + ! If pointers have not been allocated, allocate with initial size + if (.not. allocated(RF%Pointers)) then + allocate (RF%Pointers(NumPointersInit), stat=stat) if (stat /= 0) then ErrStat = ErrID_Fatal - write(ErrMsg,*) 'Grow: Unable to init buffer to', NumBytesInit, 'bytes' + write (ErrMsg, *) 'InitRegFile: Unable to init pointer index to with size of', NumPointersInit return end if end if + ! Reset all pointers to null + RF%Pointers = c_null_ptr end subroutine - subroutine DestroyPackBuffer(Buf, ErrStat, ErrMsg) - type(PackBuffer), intent(inout) :: Buf - integer(IntKi), intent(out) :: ErrStat - character(ErrMsgLen), intent(out) :: ErrMsg + subroutine CloseRegFile(RF, ErrStat, ErrMsg) + type(RegFile), intent(inout) :: RF + integer(IntKi), intent(out) :: ErrStat + character(ErrMsgLen), intent(out) :: ErrMsg - character(*), parameter :: RoutineName = "DestroyPackBuffer" + character(*), parameter :: RoutineName = "CloseRegFile" + integer(IntKi) :: stat ErrStat = ErrID_None ErrMsg = "" - Buf%ErrStat = ErrID_None - Buf%ErrMsg = "" - Buf%NP = 0 - Buf%NB = 0 - - if (allocated(Buf%Pointers)) deallocate (Buf%Pointers) - if (allocated(Buf%Bytes )) deallocate (Buf%Bytes) - end subroutine - - subroutine WritePackBuffer(Buf, Unit, ErrStat, ErrMsg) - type(PackBuffer), intent(inout) :: Buf - integer(IntKi), intent(in) :: Unit - integer(IntKi), intent(out) :: ErrStat - character(ErrMsgLen), intent(out) :: ErrMsg - - character(*), parameter :: RoutineName = "WritePackBuffer" - integer(IntKi) :: iostat - - ErrStat = ErrID_None - ErrMsg = '' - - if (Buf%ErrStat /= ErrID_None) then - call SetErrStat(Buf%ErrStat, Buf%ErrMsg, ErrStat, ErrMsg, 'Buf%WriteFile') - return - end if - - write(Unit, iostat=iostat) Buf%NP - if (iostat /= 0) then - call SetErrStat(ErrID_Fatal, "Error writing number of pointers", ErrStat, ErrMsg, RoutineName) + ! Check if there have been any errors while writing to the file + if (RF%ErrStat /= ErrID_None) then + call SetErrStat(RF%ErrStat, RF%ErrMsg, ErrStat, ErrMsg, RoutineName) return end if - write(Unit, iostat=iostat) Buf%NB - if (iostat /= 0) then - call SetErrStat(ErrID_Fatal, "Error writing number of bytes", ErrStat, ErrMsg, RoutineName) + ! Write the actual number of pointers + write (RF%Unit, POS=RF%Offset, iostat=stat) RF%NumPointers + if (stat /= 0) then + ErrStat = ErrID_Fatal + write (ErrMsg, *) 'CloseRegFile: Unable to write offset at beginning of file' return end if - write(Unit, iostat=iostat) Buf%Bytes(1:Buf%NB) - if (iostat /= 0) then - call SetErrStat(ErrID_Fatal, "Error writing bytes", ErrStat, ErrMsg, RoutineName) - return - end if + ! Close the file + close (RF%Unit) + ! Deallocate pointer array + if (allocated(RF%Pointers)) deallocate (RF%Pointers) end subroutine - subroutine ReadPackBuffer(Buf, Unit, ErrStat, ErrMsg) - type(PackBuffer), intent(inout) :: Buf - integer(IntKi), intent(in) :: Unit - integer(IntKi), intent(out) :: ErrStat - character(ErrMsgLen), intent(out) :: ErrMsg + subroutine OpenRegFile(RF, Unit, ErrStat, ErrMsg) + type(RegFile), intent(inout) :: RF + integer(IntKi), intent(in) :: Unit + integer(IntKi), intent(out) :: ErrStat + character(ErrMsgLen), intent(out) :: ErrMsg - character(*), parameter :: RoutineName = "ReadPackBuffer" - integer(IntKi) :: iostat + character(*), parameter :: RoutineName = "ReadRegFile" + integer(IntKi) :: iostat ErrStat = ErrID_None ErrMsg = '' + ! Save unit + RF%Unit = Unit + ! Read number of pointers - read(Unit, iostat=iostat) Buf%NP + read (Unit, iostat=iostat) RF%NumPointers if (iostat /= 0) then call SetErrStat(ErrID_Fatal, "Error reading number of pointers", ErrStat, ErrMsg, RoutineName) return end if ! If pointers are allocated, deallocate - if (allocated(Buf%Pointers)) deallocate(Buf%Pointers) + if (allocated(RF%Pointers)) deallocate (RF%Pointers) ! Allocate pointer index and initialize pointers to null - allocate(Buf%Pointers(1:Buf%NP), stat=ErrStat) - Buf%Pointers = c_null_ptr - - ! Read number of bytes in buffer - read(Unit, iostat=iostat) Buf%NB - if (iostat /= 0) then - call SetErrStat(ErrID_Fatal, "Error reading number of bytes", ErrStat, ErrMsg, RoutineName) - return - end if + allocate (RF%Pointers(1:RF%NumPointers), stat=ErrStat) + RF%Pointers = c_null_ptr - ! If bytes are allocated, deallocate - if (allocated(Buf%Bytes)) deallocate(Buf%Bytes) - - ! Allocate bytes - allocate(Buf%Bytes(1:Buf%NB), stat=ErrStat) - - ! Read bytes - read(Unit, iostat=iostat) Buf%Bytes - if (iostat /= 0) then - call SetErrStat(ErrID_Fatal, "Error reading bytes", ErrStat, ErrMsg, RoutineName) - return - end if - - ! Clear buffer error - Buf%ErrStat = ErrID_None - Buf%ErrMsg = '' - - ! Reset Number of bytes to be used by unpack routines - Buf%NB = 0 + ! initialize the number of data + RF%NumData = 0 + ! Clear error + RF%ErrStat = ErrID_None + RF%ErrMsg = '' end subroutine - function RegCheckErr(Buf, RoutineName) result(Err) - type(PackBuffer), intent(inout) :: Buf - character(*), intent(in) :: RoutineName - logical :: Err - Err = Buf%ErrStat /= ErrID_None - if (Err) Buf%ErrMsg = trim(RoutineName)//": "//trim(Buf%ErrMsg) + function RegCheckErr(RF, RoutineName) result(Err) + type(RegFile), intent(inout) :: RF + character(*), intent(in) :: RoutineName + logical :: Err + Err = RF%ErrStat /= ErrID_None + if (Err) RF%ErrMsg = trim(RoutineName)//": "//trim(RF%ErrMsg) end function elemental function LogicalToByte(b) result(i) @@ -219,22 +209,22 @@ end if end function - subroutine RegPackPointer(Buf, Ptr, Found) - type(PackBuffer), intent(inout) :: Buf - type(c_ptr), intent(in) :: Ptr - logical, intent(out) :: Found + subroutine RegPackPointer(RF, Ptr, Found) + type(RegFile), intent(inout) :: RF + type(c_ptr), intent(in) :: Ptr + logical, intent(out) :: Found - type(c_ptr), allocatable :: PointersTmp(:) - integer(B8Ki) :: NewSize - integer(B8Ki) :: i + type(c_ptr), allocatable :: PointersTmp(:) + integer(B8Ki) :: NewSize + integer(B8Ki) :: i - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return ! Look for pointer in index, if found, pack pointer index and return - do i = 1, Buf%NP - if (c_associated(Ptr, Buf%Pointers(i))) then - call RegPack(Buf, i) + do i = 1, RF%NumPointers + if (c_associated(Ptr, RF%Pointers(i))) then + call RegPack(RF, i) Found = .true. return end if @@ -244,259 +234,198 @@ Found = .false. ! If pointer index is full, grow pointer index - if (Buf%NP == size(Buf%Pointers)) then - NewSize = int(1.5_R8Ki * real(Buf%NP, R8Ki), B8Ki) - call move_alloc(Buf%Pointers, PointersTmp) - allocate (Buf%Pointers(NewSize), stat=Buf%ErrStat) - if (Buf%ErrStat /= ErrID_None) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) 'RegPackPointer: Unable to allocate pointer index to', NewSize, 'bytes' + if (RF%NumPointers == size(RF%Pointers)) then + NewSize = int(1.5_R8Ki*real(RF%NumPointers, R8Ki), B8Ki) + call move_alloc(RF%Pointers, PointersTmp) + allocate (RF%Pointers(NewSize), stat=RF%ErrStat) + if (RF%ErrStat /= ErrID_None) then + RF%ErrStat = ErrID_Fatal + write (RF%ErrMsg, *) 'RegPackPointer: Unable to allocate pointer index to', NewSize, 'bytes' return end if - Buf%Pointers(1:size(PointersTmp)) = PointersTmp - Buf%Pointers(size(PointersTmp)+1:) = c_null_ptr + RF%Pointers(1:size(PointersTmp)) = PointersTmp + RF%Pointers(size(PointersTmp) + 1:) = c_null_ptr end if ! Increment number of pointers, add new pointer to index - Buf%NP = Buf%NP + 1 - Buf%Pointers(Buf%NP) = Ptr + RF%NumPointers = RF%NumPointers + 1 + RF%Pointers(RF%NumPointers) = Ptr ! Pack pointer index - call RegPack(Buf, Buf%NP) - + call RegPack(RF, RF%NumPointers) end subroutine - subroutine RegUnpackPointer(Buf, Ptr, Idx) - type(PackBuffer), intent(inout) :: Buf - type(c_ptr), intent(out) :: Ptr - integer(B8Ki), intent(out) :: Idx + subroutine RegUnpackPointer(RF, Ptr, Idx) + type(RegFile), intent(inout) :: RF + type(c_ptr), intent(out) :: Ptr + integer(B8Ki), intent(out) :: Idx - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return ! Unpack pointer index - call RegUnpack(Buf, Idx) + call RegUnpack(RF, Idx) ! Get pointer from index - Ptr = Buf%Pointers(Idx) - + Ptr = RF%Pointers(Idx) end subroutine - subroutine RegPackBounds(Buf, R, LB, UB) - type(PackBuffer), intent(inout) :: Buf - integer(B4Ki), intent(in) :: R - integer(B8Ki), intent(in) :: LB(:), UB(:) - - ! If buffer has an error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine RegPackBounds(RF, R, LB, UB) + type(RegFile), intent(inout) :: RF + integer(B4Ki), intent(in) :: R + integer(B8Ki), intent(in) :: LB(:), UB(:) + + ! If has an error, return + if (RF%ErrStat /= ErrID_None) return ! Pack lower and upper bounds - call RegPack(Buf, LB(1:R)) - call RegPack(Buf, UB(1:R)) - if (RegCheckErr(Buf, "RegPackBounds")) return + call RegPack(RF, LB(1:R)) + call RegPack(RF, UB(1:R)) + if (RegCheckErr(RF, "RegPackBounds")) return end subroutine - subroutine RegUnpackBounds(Buf, R, LB, UB) - type(PackBuffer), intent(inout) :: Buf - integer(B4Ki), intent(in) :: R - integer(B8Ki), intent(out) :: LB(:), UB(:) + subroutine RegUnpackBounds(RF, R, LB, UB) + type(RegFile), intent(inout) :: RF + integer(B4Ki), intent(in) :: R + integer(B8Ki), intent(out) :: LB(:), UB(:) - ! If buffer has an error, return - if (Buf%ErrStat /= ErrID_None) return + ! If has an error, return + if (RF%ErrStat /= ErrID_None) return ! Unpack lower and upper bounds - call RegUnpack(Buf, LB(1:R)) - call RegUnpack(Buf, UB(1:R)) - if (RegCheckErr(Buf, "RegUnpackBounds")) return + call RegUnpack(RF, LB(1:R)) + call RegUnpack(RF, UB(1:R)) + if (RegCheckErr(RF, "RegUnpackBounds")) return end subroutine - subroutine GrowBuffer(Buf, N) - type(PackBuffer), intent(inout) :: Buf - integer(B8Ki), intent(in) :: N + function DataNumValid(RF) result(match) + type(RegFile), intent(inout) :: RF + logical :: match + integer(B8Ki) :: DataNum - integer(B1Ki), allocatable :: BytesTmp(:) - integer(B8Ki) :: NewSize - integer(IntKi) :: stat - - ! Return if there is a buffer error - if (Buf%ErrStat /= ErrID_None) return + ! Increment the data number to be read + RF%NumData = RF%NumData + 1 - ! If buffer can hold requested bytes, return - if (size(Buf%Bytes) > Buf%NB + N) return + ! Read the data number from the file + read(RF%Unit) DataNum - ! Calculate new size - NewSize = int(real(Buf%NB + N, R8Ki) * 1.8_R8Ki, B8Ki) - - ! Move allocation to temporary array and allocate buffer with new size - call move_alloc(Buf%Bytes, BytesTmp) - allocate (Buf%Bytes(NewSize), stat=stat) - if (stat /= 0) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) 'Grow: Unable to grow buffer to', NewSize, 'bytes' - return + ! If data number from file does not match expected number, set match false + ! and create error message; otherwise, set match to true + if (DataNum /= RF%NumData) then + match = .false. + RF%ErrStat = ErrID_Fatal + write(RF%ErrMsg, *) "Read data number", DataNum, "expected", RF%NumData + else + match = .true. end if - - ! Copy contents of temporary bytes to buffer - Buf%Bytes(1:size(BytesTmp)) = BytesTmp - - end subroutine + end function ''' def gen_pack(w, dt, decl, rank): dims = '' if rank == 0 else '('+','.join([':']*rank)+')' - dt_size = int(dt[-1]) name = f'Pack_{dt}' if rank == 0 else f'Pack_{dt}_Rank{rank}' - w.write(f'\n\n subroutine {name}(Buf, Data)') - w.write(f'\n type(PackBuffer), intent(inout) :: Buf') - w.write(f'\n {decl+", intent(in)":<38s} :: Data{dims}') - w.write(f'\n integer(B8Ki) :: DataSize') - w.write(f'\n') - w.write(f'\n ! If buffer error, return') - w.write(f'\n if (Buf%ErrStat /= ErrID_None) return') - w.write(f'\n') - w.write(f'\n ! Get size of data in bytes') - if dt == 'C1' and rank == 0: - w.write(f'\n DataSize = len(Data)') - elif dt == 'C1' and rank > 0: - w.write(f'\n DataSize = len(Data({",".join(["1"]*rank)}))*size(Data)') - elif rank == 0: - w.write(f'\n DataSize = {dt_size}') - elif dt_size == 1: - w.write(f'\n DataSize = size(Data)') - else: - w.write(f'\n DataSize = {dt_size}*size(Data)') + w.write(f'\n\n subroutine {name}(RF, Data)') + w.write(f'\n type(RegFile), intent(inout) :: RF') + w.write(f'\n {decl+", intent(in)":<35s} :: Data{dims}') w.write(f'\n') - w.write(f'\n ! Grow buffer to accommodate Data') - w.write(f'\n call GrowBuffer(Buf, DataSize)') - w.write(f'\n if (RegCheckErr(Buf, "{name}")) return') + w.write(f'\n ! If error, return') + w.write(f'\n if (RF%ErrStat /= ErrID_None) return') w.write(f'\n') - w.write(f'\n ! Transfer data to buffer') - if dt == 'L1': - w.write(f'\n Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(LogicalToByte(Data), Buf%Bytes)') - else: - w.write(f'\n Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes)') - w.write(f'\n Buf%NB = Buf%NB + DataSize') + w.write(f'\n ! Increment data number and write to file') + w.write(f'\n RF%NumData = RF%NumData + 1') + w.write(f'\n write(RF%Unit) RF%NumData') w.write(f'\n') + w.write(f'\n ! Write data to file') + w.write(f'\n write(RF%Unit) Data') w.write(f'\n end subroutine') def gen_unpack(w, dt, decl, rank): dims = '' if rank == 0 else '('+','.join([':']*rank)+')' - dt_size = int(dt[-1]) name = f'Unpack_{dt}' if rank == 0 else f'Unpack_{dt}_Rank{rank}' w.write(f'\n') - w.write(f'\n subroutine {name}(Buf, Data)') - w.write(f'\n type(PackBuffer), intent(inout) :: Buf') - w.write(f'\n {decl+", intent(out)":<38s} :: Data{dims}') - w.write(f'\n integer(B8Ki) :: DataSize') - w.write(f'\n') - w.write(f'\n ! If buffer error, return') - w.write(f'\n if (Buf%ErrStat /= ErrID_None) return') - w.write(f'\n') - w.write(f'\n ! Get size of data in bytes') - if dt == 'C1' and rank == 0: - w.write(f'\n DataSize = len(Data)') - elif dt == 'C1' and rank > 0: - w.write(f'\n DataSize = len(Data({",".join(["1"]*rank)}))*size(Data)') - elif rank == 0: - w.write(f'\n DataSize = {dt_size}') - elif dt_size == 1: - w.write(f'\n DataSize = size(Data)') - else: - w.write(f'\n DataSize = {dt_size}*size(Data)') + w.write(f'\n subroutine {name}(RF, Data)') + w.write(f'\n type(RegFile), intent(inout) :: RF') + w.write(f'\n {decl+", intent(out)":<35s} :: Data{dims}') w.write(f'\n') - w.write(f'\n ! Check that buffer has sufficient bytes remaining') - w.write(f'\n if (size(Buf%Bytes) < Buf%NB + DataSize) then') - w.write(f'\n Buf%ErrStat = ErrID_Fatal') - w.write(f'\n write(Buf%ErrMsg,*) "{name}: buffer too small, requested", DataSize, "bytes"') - w.write(f'\n return') - w.write(f'\n end if') + w.write(f'\n ! If error, return') + w.write(f'\n if (RF%ErrStat /= ErrID_None) return') w.write(f'\n') - w.write(f'\n ! Transfer data from buffer') - if dt == 'L1' and rank == 0: - w.write(f'\n Data = ByteToLogical(Buf%Bytes(Buf%NB+1))') - elif dt == 'L1' and rank > 0: - w.write(f'\n Data = reshape(ByteToLogical(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize)), shape(Data))') - elif rank == 0: - w.write(f'\n Data = transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data)') - else: - w.write(f'\n Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data))') - w.write(f'\n Buf%NB = Buf%NB + DataSize') + w.write(f'\n ! Read data number, return if invalid') + w.write(f'\n if (.not. DataNumValid(RF)) return') w.write(f'\n') + w.write(f'\n ! Read data from file') + w.write(f'\n read(RF%Unit) Data') w.write(f'\n end subroutine') def gen_pack_alloc(w, dt, decl, rank): dims = '' if rank == 0 else '('+','.join([':']*rank)+')' - name = f'PackAlloc_{dt}' - if rank > 0: name += f'_Rank{rank}' + name = f'PackAlloc_{dt}' + ("" if rank == 0 else f'_Rank{rank}') w.write(f'\n') - w.write(f'\n subroutine {name}(Buf, Data)') - w.write(f'\n type(PackBuffer), intent(inout) :: Buf') - w.write(f'\n {decl+", allocatable, intent(in)":<38s} :: Data{dims}') + w.write(f'\n subroutine {name}(RF, Data)') + w.write(f'\n type(RegFile), intent(inout) :: RF') + w.write(f'\n {decl+", allocatable, intent(in)":<35s} :: Data{dims}') w.write(f'\n') - w.write(f'\n ! If buffer error, return') - w.write(f'\n if (Buf%ErrStat /= ErrID_None) return') + w.write(f'\n ! If error, return') + w.write(f'\n if (RF%ErrStat /= ErrID_None) return') w.write(f'\n') w.write(f'\n ! Write if allocated') - w.write(f'\n call RegPack(Buf, allocated(Data))') - w.write(f'\n if (RegCheckErr(Buf, "{name}")) return') + w.write(f'\n call RegPack(RF, allocated(Data))') + w.write(f'\n if (RegCheckErr(RF, "{name}")) return') w.write(f'\n if (.not. allocated(Data)) return') w.write(f'\n') if rank > 0: w.write(f'\n ! Write array bounds') - w.write(f'\n call RegPackBounds(Buf, {rank}, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki))') - w.write(f'\n') - w.write(f'\n ! Write data to buffer') - w.write(f'\n call RegPack(Buf, Data)') - w.write(f'\n if (RegCheckErr(Buf, "{name}")) return') + w.write(f'\n call RegPackBounds(RF, {rank}, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki))') w.write(f'\n') + w.write(f'\n ! Write data to file') + w.write(f'\n call RegPack(RF, Data)') + w.write(f'\n if (RegCheckErr(RF, "{name}")) return') w.write(f'\n end subroutine') def gen_unpack_alloc(w, dt, decl, rank): dims = '' if rank == 0 else '('+','.join([':']*rank)+')' - dt_size = int(dt[-1]) - name = f'UnpackAlloc_{dt}' if rank == 0 else f'UnpackAlloc_{dt}_Rank{rank}' + name = f'UnpackAlloc_{dt}' + ("" if rank == 0 else f'_Rank{rank}') w.write(f'\n') - w.write(f'\n subroutine {name}(Buf, Data)') - w.write(f'\n type(PackBuffer), intent(inout) :: Buf') - w.write(f'\n {decl+", allocatable, intent(out)":<38s} :: Data{dims}') - w.write(f'\n integer(IntKi) :: stat') - w.write(f'\n logical :: IsAllocated') + w.write(f'\n subroutine {name}(RF, Data)') + w.write(f'\n type(RegFile), intent(inout) :: RF') + w.write(f'\n {decl+", allocatable, intent(out)":<35s} :: Data{dims}') + w.write(f'\n integer(IntKi) :: stat') + w.write(f'\n logical :: IsAllocated') if rank > 0: - w.write(f'\n integer(B8Ki) :: LB({rank}), UB({rank})') + w.write(f'\n integer(B8Ki) :: LB({rank}), UB({rank})') w.write(f'\n') - w.write(f'\n ! If buffer error, return') - w.write(f'\n if (Buf%ErrStat /= ErrID_None) return') + w.write(f'\n ! If error, return') + w.write(f'\n if (RF%ErrStat /= ErrID_None) return') w.write(f'\n') w.write(f'\n ! Deallocate if allocated') w.write(f'\n if (allocated(Data)) deallocate(Data)') w.write(f'\n') w.write(f'\n ! Read value to see if it was allocated, return if not') - w.write(f'\n call RegUnpack(Buf, IsAllocated)') - w.write(f'\n if (RegCheckErr(Buf, "{name}")) return') + w.write(f'\n call RegUnpack(RF, IsAllocated)') + w.write(f'\n if (RegCheckErr(RF, "{name}")) return') w.write(f'\n if (.not. IsAllocated) return') w.write(f'\n') alloc_dims = '' if rank > 0: w.write(f'\n ! Read array bounds') - w.write(f'\n call RegUnpackBounds(Buf, {rank}, LB, UB)') - w.write(f'\n if (RegCheckErr(Buf, "{name}")) return') + w.write(f'\n call RegUnpackBounds(RF, {rank}, LB, UB)') + w.write(f'\n if (RegCheckErr(RF, "{name}")) return') alloc_dims = '(' + ','.join([f'LB({d+1}):UB({d+1})' for d in range(rank)]) + ')' w.write(f'\n') w.write(f'\n ! Allocate data') w.write(f'\n allocate(Data{alloc_dims}, stat=stat)') w.write(f'\n if (stat /= 0) then') - w.write(f'\n Buf%ErrStat = ErrID_Fatal') - w.write(f'\n Buf%ErrMsg = "{name}: error allocating data"') + w.write(f'\n RF%ErrStat = ErrID_Fatal') + w.write(f'\n RF%ErrMsg = "{name}: error allocating data"') w.write(f'\n return') w.write(f'\n end if') w.write(f'\n') w.write(f'\n ! Read data') - w.write(f'\n call RegUnpack(Buf, Data)') - w.write(f'\n if (RegCheckErr(Buf, "{name}")) return') - w.write(f'\n') + w.write(f'\n call RegUnpack(RF, Data)') + w.write(f'\n if (RegCheckErr(RF, "{name}")) return') w.write(f'\n end subroutine') @@ -505,32 +434,31 @@ def gen_pack_ptr(w, dt, decl, rank): name = f'PackPtr_{dt}' if rank > 0: name += f'_Rank{rank}' w.write(f'\n') - w.write(f'\n subroutine {name}(Buf, Data)') - w.write(f'\n type(PackBuffer), intent(inout) :: Buf') - w.write(f'\n {decl+", pointer, intent(in)":<38s} :: Data{dims}') - w.write(f'\n logical :: PtrInIndex') + w.write(f'\n subroutine {name}(RF, Data)') + w.write(f'\n type(RegFile), intent(inout) :: RF') + w.write(f'\n {decl+", pointer, intent(in)":<35s} :: Data{dims}') + w.write(f'\n logical :: PtrInIndex') w.write(f'\n') - w.write(f'\n ! If buffer error, return') - w.write(f'\n if (Buf%ErrStat /= ErrID_None) return') + w.write(f'\n ! If error, return') + w.write(f'\n if (RF%ErrStat /= ErrID_None) return') w.write(f'\n') w.write(f'\n ! Write if associated') - w.write(f'\n call RegPack(Buf, associated(Data))') - w.write(f'\n if (RegCheckErr(Buf, "{name}")) return') + w.write(f'\n call RegPack(RF, associated(Data))') + w.write(f'\n if (RegCheckErr(RF, "{name}")) return') w.write(f'\n if (.not. associated(Data)) return') if rank > 0: w.write(f'\n') w.write(f'\n ! Write array bounds') - w.write(f'\n call RegPackBounds(Buf, {rank}, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki))') + w.write(f'\n call RegPackBounds(RF, {rank}, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki))') w.write(f'\n') w.write(f'\n ! Write pointer info') - w.write(f'\n call RegPackPointer(Buf, c_loc(Data), PtrInIndex)') - w.write(f'\n if (RegCheckErr(Buf, "{name}")) return') + w.write(f'\n call RegPackPointer(RF, c_loc(Data), PtrInIndex)') + w.write(f'\n if (RegCheckErr(RF, "{name}")) return') w.write(f'\n if (PtrInIndex) return') w.write(f'\n') - w.write(f'\n ! Write data to buffer') - w.write(f'\n call RegPack(Buf, Data)') - w.write(f'\n if (RegCheckErr(Buf, "{name}")) return') - w.write(f'\n') + w.write(f'\n ! Write data to file') + w.write(f'\n call RegPack(RF, Data)') + w.write(f'\n if (RegCheckErr(RF, "{name}")) return') w.write(f'\n end subroutine') def gen_unpack_ptr(w, dt, decl, rank): @@ -538,17 +466,18 @@ def gen_unpack_ptr(w, dt, decl, rank): dt_size = int(dt[-1]) name = f'UnpackPtr_{dt}' if rank == 0 else f'UnpackPtr_{dt}_Rank{rank}' w.write(f'\n') - w.write(f'\n subroutine {name}(Buf, Data)') - w.write(f'\n type(PackBuffer), intent(inout) :: Buf') - w.write(f'\n {decl+", pointer, intent(out)":<38s} :: Data{dims}') - w.write(f'\n integer(B8Ki) :: PtrIdx, stat') + w.write(f'\n subroutine {name}(RF, Data)') + w.write(f'\n type(RegFile), intent(inout) :: RF') + w.write(f'\n {decl+", pointer, intent(out)":<36s} :: Data{dims}') + w.write(f'\n integer(IntKi) :: stat') + w.write(f'\n integer(B8Ki) :: PtrIdx') w.write(f'\n logical :: IsAssociated') w.write(f'\n type(c_ptr) :: Ptr') if rank > 0: - w.write(f'\n integer(B8Ki) :: LB({rank}), UB({rank})') + w.write(f'\n integer(B8Ki) :: LB({rank}), UB({rank})') w.write(f'\n') - w.write(f'\n ! If buffer error, return') - w.write(f'\n if (Buf%ErrStat /= ErrID_None) return') + w.write(f'\n ! If error, return') + w.write(f'\n if (RF%ErrStat /= ErrID_None) return') w.write(f'\n') w.write(f'\n ! If associated, deallocate and nullify') w.write(f'\n if (associated(Data)) then') @@ -557,17 +486,18 @@ def gen_unpack_ptr(w, dt, decl, rank): w.write(f'\n end if') w.write(f'\n') w.write(f'\n ! Read value to see if it was associated, return if not') - w.write(f'\n call RegUnpack(Buf, IsAssociated)') - w.write(f'\n if (RegCheckErr(Buf, "{name}")) return') + w.write(f'\n call RegUnpack(RF, IsAssociated)') + w.write(f'\n if (RegCheckErr(RF, "{name}")) return') w.write(f'\n if (.not. IsAssociated) return') if rank > 0: w.write(f'\n') w.write(f'\n ! Read array bounds') - w.write(f'\n call RegUnpackBounds(Buf, {rank}, LB, UB)') + w.write(f'\n call RegUnpackBounds(RF, {rank}, LB, UB)') + w.write(f'\n if (RegCheckErr(RF, "{name}")) return') w.write(f'\n') w.write(f'\n ! Unpack pointer inf') - w.write(f'\n call RegUnpackPointer(Buf, Ptr, PtrIdx)') - w.write(f'\n if (RegCheckErr(Buf, "{name}")) return') + w.write(f'\n call RegUnpackPointer(RF, Ptr, PtrIdx)') + w.write(f'\n if (RegCheckErr(RF, "{name}")) return') w.write(f'\n') w.write(f'\n ! If pointer was in index, associate data with pointer, return') w.write(f'\n if (c_associated(Ptr)) then') @@ -585,21 +515,21 @@ def gen_unpack_ptr(w, dt, decl, rank): w.write(f'\n ! Allocate data') w.write(f'\n allocate(Data{alloc_dims}, stat=stat)') w.write(f'\n if (stat /= 0) then') - w.write(f'\n Buf%ErrStat = ErrID_Fatal') - w.write(f'\n Buf%ErrMsg = "{name}: error allocating data"') + w.write(f'\n RF%ErrStat = ErrID_Fatal') + w.write(f'\n RF%ErrMsg = "{name}: error allocating data"') w.write(f'\n return') w.write(f'\n end if') w.write(f'\n') w.write(f'\n ! Read data') - w.write(f'\n call RegUnpack(Buf, Data)') - w.write(f'\n if (RegCheckErr(Buf, "{name}")) return') - w.write(f'\n') + w.write(f'\n call RegUnpack(RF, Data)') + w.write(f'\n if (RegCheckErr(RF, "{name}")) return') w.write(f'\n end subroutine') # Registry interface +groups = ['Pack', 'Unpack', 'PackAlloc', 'UnpackAlloc', 'PackPtr', 'UnpackPtr'] ifc_lines = '' ranks = [''] + [f'_Rank{r}' for r in range(1,num_ranks+1)] -for attr, punp in product([''], ['Pack', 'Unpack']): +for attr, punp in product([''], groups): ifc_lines += f'\n\n interface Reg{punp}{attr}' funcs = [f'{punp}{attr}_{dt}{rank}'for dt, rank in product(type_map.keys(), ranks)] lines = textwrap.wrap('module procedure ' + ', '.join(funcs), 80, @@ -614,5 +544,9 @@ def gen_unpack_ptr(w, dt, decl, rank): for (dt,decl), rank in product(type_map.items(), range(num_ranks+1)): gen_pack(w, dt, decl, rank) gen_unpack(w, dt, decl, rank) + gen_pack_alloc(w, dt, decl, rank) + gen_unpack_alloc(w, dt, decl, rank) + gen_pack_ptr(w, dt, decl, rank) + gen_unpack_ptr(w, dt, decl, rank) w.write('\nend module') diff --git a/modules/nwtc-library/src/ModReg.f90 b/modules/nwtc-library/src/ModReg.f90 index f0ee258bce..1381d4e5ca 100644 --- a/modules/nwtc-library/src/ModReg.f90 +++ b/modules/nwtc-library/src/ModReg.f90 @@ -1,21 +1,51 @@ +!STARTOFGENERATEDFILE 'ModReg.f90' +! +! WARNING This file is generated automatically by ModRegGen.py. +! Do not edit. Your changes to this file will be lost. +! +! FAST Registry +!********************************************************************************************************************************** +! LICENSING +! Copyright (C) 2024 National Renewable Energy Laboratory +! +! This file is part of the NWTC Subroutine Library. +! +! Licensed under the Apache License, Version 2.0 (the "License"); +! you may not use this file except in compliance with the License. +! You may obtain a copy of the License at +! +! http://www.apache.org/licenses/LICENSE-2.0 +! +! Unless required by applicable law or agreed to in writing, software +! distributed under the License is distributed on an "AS IS" BASIS, +! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +! See the License for the specific language governing permissions and +! limitations under the License. +!********************************************************************************************************************************** + +!> This module contains routines for packing and unpacking data from a registry data file. module ModReg use NWTC_Base implicit none private - public :: PackBuffer - public :: WritePackBuffer, ReadPackBuffer, InitPackBuffer, DestroyPackBuffer, RegCheckErr - public :: RegPack, RegPackBounds, RegPackPointer - public :: RegUnpack, RegUnpackBounds, RegUnpackPointer - - type :: PackBuffer - integer(B1Ki), allocatable :: Bytes(:) - integer(B8Ki) :: NB - type(c_ptr), allocatable :: Pointers(:) - integer(B8Ki) :: NP - integer(IntKi) :: ErrStat = ErrID_Fatal - character(ErrMsgLen) :: ErrMsg = 'PackBuffer not initialized' + public :: RegFile + public :: OpenRegFile, InitRegFile, CloseRegFile, RegCheckErr + public :: RegPackBounds, RegUnpackBounds + public :: RegPackPointer, RegUnpackPointer + public :: RegPack, RegUnpack + public :: RegPackAlloc, RegUnpackAlloc + public :: RegPackPtr, RegUnpackPtr + + type :: RegFile + integer(IntKi) :: Unit + integer(IntKi) :: Offset + type(c_ptr), allocatable :: Pointers(:) + integer(B8Ki) :: NumData + integer(B8Ki) :: NumPointers + integer(IntKi) :: ErrStat = ErrID_Fatal + character(ErrMsgLen) :: ErrMsg = 'RegFile not initialized' end type @@ -43,168 +73,187 @@ module ModReg Unpack_R8_Rank5 end interface + interface RegPackAlloc + module procedure PackAlloc_C1, PackAlloc_C1_Rank1, PackAlloc_C1_Rank2, & + PackAlloc_C1_Rank3, PackAlloc_C1_Rank4, PackAlloc_C1_Rank5, & + PackAlloc_L1, PackAlloc_L1_Rank1, PackAlloc_L1_Rank2, & + PackAlloc_L1_Rank3, PackAlloc_L1_Rank4, PackAlloc_L1_Rank5, & + PackAlloc_I4, PackAlloc_I4_Rank1, PackAlloc_I4_Rank2, & + PackAlloc_I4_Rank3, PackAlloc_I4_Rank4, PackAlloc_I4_Rank5, & + PackAlloc_I8, PackAlloc_I8_Rank1, PackAlloc_I8_Rank2, & + PackAlloc_I8_Rank3, PackAlloc_I8_Rank4, PackAlloc_I8_Rank5, & + PackAlloc_R4, PackAlloc_R4_Rank1, PackAlloc_R4_Rank2, & + PackAlloc_R4_Rank3, PackAlloc_R4_Rank4, PackAlloc_R4_Rank5, & + PackAlloc_R8, PackAlloc_R8_Rank1, PackAlloc_R8_Rank2, & + PackAlloc_R8_Rank3, PackAlloc_R8_Rank4, PackAlloc_R8_Rank5 + end interface + + interface RegUnpackAlloc + module procedure UnpackAlloc_C1, UnpackAlloc_C1_Rank1, & + UnpackAlloc_C1_Rank2, UnpackAlloc_C1_Rank3, UnpackAlloc_C1_Rank4, & + UnpackAlloc_C1_Rank5, UnpackAlloc_L1, UnpackAlloc_L1_Rank1, & + UnpackAlloc_L1_Rank2, UnpackAlloc_L1_Rank3, UnpackAlloc_L1_Rank4, & + UnpackAlloc_L1_Rank5, UnpackAlloc_I4, UnpackAlloc_I4_Rank1, & + UnpackAlloc_I4_Rank2, UnpackAlloc_I4_Rank3, UnpackAlloc_I4_Rank4, & + UnpackAlloc_I4_Rank5, UnpackAlloc_I8, UnpackAlloc_I8_Rank1, & + UnpackAlloc_I8_Rank2, UnpackAlloc_I8_Rank3, UnpackAlloc_I8_Rank4, & + UnpackAlloc_I8_Rank5, UnpackAlloc_R4, UnpackAlloc_R4_Rank1, & + UnpackAlloc_R4_Rank2, UnpackAlloc_R4_Rank3, UnpackAlloc_R4_Rank4, & + UnpackAlloc_R4_Rank5, UnpackAlloc_R8, UnpackAlloc_R8_Rank1, & + UnpackAlloc_R8_Rank2, UnpackAlloc_R8_Rank3, UnpackAlloc_R8_Rank4, & + UnpackAlloc_R8_Rank5 + end interface + + interface RegPackPtr + module procedure PackPtr_C1, PackPtr_C1_Rank1, PackPtr_C1_Rank2, & + PackPtr_C1_Rank3, PackPtr_C1_Rank4, PackPtr_C1_Rank5, PackPtr_L1, & + PackPtr_L1_Rank1, PackPtr_L1_Rank2, PackPtr_L1_Rank3, PackPtr_L1_Rank4, & + PackPtr_L1_Rank5, PackPtr_I4, PackPtr_I4_Rank1, PackPtr_I4_Rank2, & + PackPtr_I4_Rank3, PackPtr_I4_Rank4, PackPtr_I4_Rank5, PackPtr_I8, & + PackPtr_I8_Rank1, PackPtr_I8_Rank2, PackPtr_I8_Rank3, PackPtr_I8_Rank4, & + PackPtr_I8_Rank5, PackPtr_R4, PackPtr_R4_Rank1, PackPtr_R4_Rank2, & + PackPtr_R4_Rank3, PackPtr_R4_Rank4, PackPtr_R4_Rank5, PackPtr_R8, & + PackPtr_R8_Rank1, PackPtr_R8_Rank2, PackPtr_R8_Rank3, PackPtr_R8_Rank4, & + PackPtr_R8_Rank5 + end interface + + interface RegUnpackPtr + module procedure UnpackPtr_C1, UnpackPtr_C1_Rank1, UnpackPtr_C1_Rank2, & + UnpackPtr_C1_Rank3, UnpackPtr_C1_Rank4, UnpackPtr_C1_Rank5, & + UnpackPtr_L1, UnpackPtr_L1_Rank1, UnpackPtr_L1_Rank2, & + UnpackPtr_L1_Rank3, UnpackPtr_L1_Rank4, UnpackPtr_L1_Rank5, & + UnpackPtr_I4, UnpackPtr_I4_Rank1, UnpackPtr_I4_Rank2, & + UnpackPtr_I4_Rank3, UnpackPtr_I4_Rank4, UnpackPtr_I4_Rank5, & + UnpackPtr_I8, UnpackPtr_I8_Rank1, UnpackPtr_I8_Rank2, & + UnpackPtr_I8_Rank3, UnpackPtr_I8_Rank4, UnpackPtr_I8_Rank5, & + UnpackPtr_R4, UnpackPtr_R4_Rank1, UnpackPtr_R4_Rank2, & + UnpackPtr_R4_Rank3, UnpackPtr_R4_Rank4, UnpackPtr_R4_Rank5, & + UnpackPtr_R8, UnpackPtr_R8_Rank1, UnpackPtr_R8_Rank2, & + UnpackPtr_R8_Rank3, UnpackPtr_R8_Rank4, UnpackPtr_R8_Rank5 + end interface + contains - subroutine InitPackBuffer(Buf, ErrStat, ErrMsg) - type(PackBuffer), intent(inout) :: Buf - integer(IntKi), intent(out) :: ErrStat - character(ErrMsgLen), intent(out) :: ErrMsg + subroutine InitRegFile(RF, Unit, ErrStat, ErrMsg) + type(RegFile), intent(inout) :: RF + integer(IntKi), intent(in) :: Unit + integer(IntKi), intent(out) :: ErrStat + character(ErrMsgLen), intent(out) :: ErrMsg - character(*), parameter :: RoutineName = "InitPackBuffer" - integer(B8Ki), parameter :: NumPointersInit = 128 - integer(B8Ki), parameter :: NumBytesInit = 1024 - integer(IntKi) :: stat + character(*), parameter :: RoutineName = "InitRegFile" + integer(B8Ki), parameter :: NumPointersInit = 128 + integer(IntKi) :: stat ErrStat = ErrID_None ErrMsg = "" - Buf%ErrStat = ErrID_None - Buf%ErrMsg = "" - Buf%NP = 0 - Buf%NB = 0 - - ! If pointers have not been allocated, allocate with initial size - if (.not. allocated(Buf%Pointers)) then - allocate (Buf%Pointers(NumPointersInit), stat=stat) - if (stat /= 0) then - ErrStat = ErrID_Fatal - write(ErrMsg,*) 'InitPackBuffer: Unable to init pointer index to with size of', NumPointersInit - return - end if + RF%ErrStat = ErrID_None + RF%ErrMsg = "" + RF%NumData = 0 + RF%NumPointers = 0 + RF%Unit = Unit + + ! Get current position in the file in case anything has been written to it + inquire(Unit, POS=RF%Offset) + + ! Write invalid number of pointers at the beginning of file so we can + ! check if the file if the file has been finalized and closed + write (Unit, iostat=stat) -1_B8Ki + if (stat /= 0) then + ErrStat = ErrID_Fatal + write (ErrMsg, *) 'InitRegFile: Unable to write offset at beginning of file' + return end if - - ! Reset all pointers to null - Buf%Pointers = c_null_ptr - ! If byte array has not been allocated, allocate with initial size - if (.not. allocated(Buf%Bytes)) then - allocate (Buf%Bytes(NumBytesInit), stat=stat) + ! If pointers have not been allocated, allocate with initial size + if (.not. allocated(RF%Pointers)) then + allocate (RF%Pointers(NumPointersInit), stat=stat) if (stat /= 0) then ErrStat = ErrID_Fatal - write(ErrMsg,*) 'Grow: Unable to init buffer to', NumBytesInit, 'bytes' + write (ErrMsg, *) 'InitRegFile: Unable to init pointer index to with size of', NumPointersInit return end if end if + ! Reset all pointers to null + RF%Pointers = c_null_ptr end subroutine - subroutine DestroyPackBuffer(Buf, ErrStat, ErrMsg) - type(PackBuffer), intent(inout) :: Buf - integer(IntKi), intent(out) :: ErrStat - character(ErrMsgLen), intent(out) :: ErrMsg + subroutine CloseRegFile(RF, ErrStat, ErrMsg) + type(RegFile), intent(inout) :: RF + integer(IntKi), intent(out) :: ErrStat + character(ErrMsgLen), intent(out) :: ErrMsg - character(*), parameter :: RoutineName = "DestroyPackBuffer" + character(*), parameter :: RoutineName = "CloseRegFile" + integer(IntKi) :: stat ErrStat = ErrID_None ErrMsg = "" - Buf%ErrStat = ErrID_None - Buf%ErrMsg = "" - Buf%NP = 0 - Buf%NB = 0 - - if (allocated(Buf%Pointers)) deallocate (Buf%Pointers) - if (allocated(Buf%Bytes )) deallocate (Buf%Bytes) - end subroutine - - subroutine WritePackBuffer(Buf, Unit, ErrStat, ErrMsg) - type(PackBuffer), intent(inout) :: Buf - integer(IntKi), intent(in) :: Unit - integer(IntKi), intent(out) :: ErrStat - character(ErrMsgLen), intent(out) :: ErrMsg - - character(*), parameter :: RoutineName = "WritePackBuffer" - integer(IntKi) :: iostat - - ErrStat = ErrID_None - ErrMsg = '' - - if (Buf%ErrStat /= ErrID_None) then - call SetErrStat(Buf%ErrStat, Buf%ErrMsg, ErrStat, ErrMsg, 'Buf%WriteFile') - return - end if - - write(Unit, iostat=iostat) Buf%NP - if (iostat /= 0) then - call SetErrStat(ErrID_Fatal, "Error writing number of pointers", ErrStat, ErrMsg, RoutineName) + ! Check if there have been any errors while writing to the file + if (RF%ErrStat /= ErrID_None) then + call SetErrStat(RF%ErrStat, RF%ErrMsg, ErrStat, ErrMsg, RoutineName) return end if - write(Unit, iostat=iostat) Buf%NB - if (iostat /= 0) then - call SetErrStat(ErrID_Fatal, "Error writing number of bytes", ErrStat, ErrMsg, RoutineName) + ! Write the actual number of pointers + write (RF%Unit, POS=RF%Offset, iostat=stat) RF%NumPointers + if (stat /= 0) then + ErrStat = ErrID_Fatal + write (ErrMsg, *) 'CloseRegFile: Unable to write offset at beginning of file' return end if - write(Unit, iostat=iostat) Buf%Bytes(1:Buf%NB) - if (iostat /= 0) then - call SetErrStat(ErrID_Fatal, "Error writing bytes", ErrStat, ErrMsg, RoutineName) - return - end if + ! Close the file + close (RF%Unit) + ! Deallocate pointer array + if (allocated(RF%Pointers)) deallocate (RF%Pointers) end subroutine - subroutine ReadPackBuffer(Buf, Unit, ErrStat, ErrMsg) - type(PackBuffer), intent(inout) :: Buf - integer(IntKi), intent(in) :: Unit - integer(IntKi), intent(out) :: ErrStat - character(ErrMsgLen), intent(out) :: ErrMsg + subroutine OpenRegFile(RF, Unit, ErrStat, ErrMsg) + type(RegFile), intent(inout) :: RF + integer(IntKi), intent(in) :: Unit + integer(IntKi), intent(out) :: ErrStat + character(ErrMsgLen), intent(out) :: ErrMsg - character(*), parameter :: RoutineName = "ReadPackBuffer" - integer(IntKi) :: iostat + character(*), parameter :: RoutineName = "ReadRegFile" + integer(IntKi) :: iostat ErrStat = ErrID_None ErrMsg = '' + ! Save unit + RF%Unit = Unit + ! Read number of pointers - read(Unit, iostat=iostat) Buf%NP + read (Unit, iostat=iostat) RF%NumPointers if (iostat /= 0) then call SetErrStat(ErrID_Fatal, "Error reading number of pointers", ErrStat, ErrMsg, RoutineName) return end if ! If pointers are allocated, deallocate - if (allocated(Buf%Pointers)) deallocate(Buf%Pointers) + if (allocated(RF%Pointers)) deallocate (RF%Pointers) ! Allocate pointer index and initialize pointers to null - allocate(Buf%Pointers(1:Buf%NP), stat=ErrStat) - Buf%Pointers = c_null_ptr - - ! Read number of bytes in buffer - read(Unit, iostat=iostat) Buf%NB - if (iostat /= 0) then - call SetErrStat(ErrID_Fatal, "Error reading number of bytes", ErrStat, ErrMsg, RoutineName) - return - end if - - ! If bytes are allocated, deallocate - if (allocated(Buf%Bytes)) deallocate(Buf%Bytes) - - ! Allocate bytes - allocate(Buf%Bytes(1:Buf%NB), stat=ErrStat) - - ! Read bytes - read(Unit, iostat=iostat) Buf%Bytes - if (iostat /= 0) then - call SetErrStat(ErrID_Fatal, "Error reading bytes", ErrStat, ErrMsg, RoutineName) - return - end if - - ! Clear buffer error - Buf%ErrStat = ErrID_None - Buf%ErrMsg = '' + allocate (RF%Pointers(1:RF%NumPointers), stat=ErrStat) + RF%Pointers = c_null_ptr - ! Reset Number of bytes to be used by unpack routines - Buf%NB = 0 + ! initialize the number of data + RF%NumData = 0 + ! Clear error + RF%ErrStat = ErrID_None + RF%ErrMsg = '' end subroutine - function RegCheckErr(Buf, RoutineName) result(Err) - type(PackBuffer), intent(inout) :: Buf - character(*), intent(in) :: RoutineName - logical :: Err - Err = Buf%ErrStat /= ErrID_None - if (Err) Buf%ErrMsg = trim(RoutineName)//": "//trim(Buf%ErrMsg) + function RegCheckErr(RF, RoutineName) result(Err) + type(RegFile), intent(inout) :: RF + character(*), intent(in) :: RoutineName + logical :: Err + Err = RF%ErrStat /= ErrID_None + if (Err) RF%ErrMsg = trim(RoutineName)//": "//trim(RF%ErrMsg) end function elemental function LogicalToByte(b) result(i) @@ -227,22 +276,22 @@ elemental function ByteToLogical(i) result(b) end if end function - subroutine RegPackPointer(Buf, Ptr, Found) - type(PackBuffer), intent(inout) :: Buf - type(c_ptr), intent(in) :: Ptr - logical, intent(out) :: Found + subroutine RegPackPointer(RF, Ptr, Found) + type(RegFile), intent(inout) :: RF + type(c_ptr), intent(in) :: Ptr + logical, intent(out) :: Found - type(c_ptr), allocatable :: PointersTmp(:) - integer(B8Ki) :: NewSize - integer(B8Ki) :: i + type(c_ptr), allocatable :: PointersTmp(:) + integer(B8Ki) :: NewSize + integer(B8Ki) :: i - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return ! Look for pointer in index, if found, pack pointer index and return - do i = 1, Buf%NP - if (c_associated(Ptr, Buf%Pointers(i))) then - call RegPack(Buf, i) + do i = 1, RF%NumPointers + if (c_associated(Ptr, RF%Pointers(i))) then + call RegPack(RF, i) Found = .true. return end if @@ -252,1721 +301,5796 @@ subroutine RegPackPointer(Buf, Ptr, Found) Found = .false. ! If pointer index is full, grow pointer index - if (Buf%NP == size(Buf%Pointers)) then - NewSize = int(1.5_R8Ki * real(Buf%NP, R8Ki), B8Ki) - call move_alloc(Buf%Pointers, PointersTmp) - allocate (Buf%Pointers(NewSize), stat=Buf%ErrStat) - if (Buf%ErrStat /= ErrID_None) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) 'RegPackPointer: Unable to allocate pointer index to', NewSize, 'bytes' + if (RF%NumPointers == size(RF%Pointers)) then + NewSize = int(1.5_R8Ki*real(RF%NumPointers, R8Ki), B8Ki) + call move_alloc(RF%Pointers, PointersTmp) + allocate (RF%Pointers(NewSize), stat=RF%ErrStat) + if (RF%ErrStat /= ErrID_None) then + RF%ErrStat = ErrID_Fatal + write (RF%ErrMsg, *) 'RegPackPointer: Unable to allocate pointer index to', NewSize, 'bytes' return end if - Buf%Pointers(1:size(PointersTmp)) = PointersTmp - Buf%Pointers(size(PointersTmp)+1:) = c_null_ptr + RF%Pointers(1:size(PointersTmp)) = PointersTmp + RF%Pointers(size(PointersTmp) + 1:) = c_null_ptr end if ! Increment number of pointers, add new pointer to index - Buf%NP = Buf%NP + 1 - Buf%Pointers(Buf%NP) = Ptr + RF%NumPointers = RF%NumPointers + 1 + RF%Pointers(RF%NumPointers) = Ptr ! Pack pointer index - call RegPack(Buf, Buf%NP) - + call RegPack(RF, RF%NumPointers) end subroutine - subroutine RegUnpackPointer(Buf, Ptr, Idx) - type(PackBuffer), intent(inout) :: Buf - type(c_ptr), intent(out) :: Ptr - integer(B8Ki), intent(out) :: Idx + subroutine RegUnpackPointer(RF, Ptr, Idx) + type(RegFile), intent(inout) :: RF + type(c_ptr), intent(out) :: Ptr + integer(B8Ki), intent(out) :: Idx - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return ! Unpack pointer index - call RegUnpack(Buf, Idx) + call RegUnpack(RF, Idx) ! Get pointer from index - Ptr = Buf%Pointers(Idx) - + Ptr = RF%Pointers(Idx) end subroutine - subroutine RegPackBounds(Buf, R, LB, UB) - type(PackBuffer), intent(inout) :: Buf - integer(B4Ki), intent(in) :: R - integer(B8Ki), intent(in) :: LB(:), UB(:) - - ! If buffer has an error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine RegPackBounds(RF, R, LB, UB) + type(RegFile), intent(inout) :: RF + integer(B4Ki), intent(in) :: R + integer(B8Ki), intent(in) :: LB(:), UB(:) + + ! If has an error, return + if (RF%ErrStat /= ErrID_None) return ! Pack lower and upper bounds - call RegPack(Buf, LB(1:R)) - call RegPack(Buf, UB(1:R)) - if (RegCheckErr(Buf, "RegPackBounds")) return + call RegPack(RF, LB(1:R)) + call RegPack(RF, UB(1:R)) + if (RegCheckErr(RF, "RegPackBounds")) return end subroutine - subroutine RegUnpackBounds(Buf, R, LB, UB) - type(PackBuffer), intent(inout) :: Buf - integer(B4Ki), intent(in) :: R - integer(B8Ki), intent(out) :: LB(:), UB(:) + subroutine RegUnpackBounds(RF, R, LB, UB) + type(RegFile), intent(inout) :: RF + integer(B4Ki), intent(in) :: R + integer(B8Ki), intent(out) :: LB(:), UB(:) - ! If buffer has an error, return - if (Buf%ErrStat /= ErrID_None) return + ! If has an error, return + if (RF%ErrStat /= ErrID_None) return ! Unpack lower and upper bounds - call RegUnpack(Buf, LB(1:R)) - call RegUnpack(Buf, UB(1:R)) - if (RegCheckErr(Buf, "RegUnpackBounds")) return + call RegUnpack(RF, LB(1:R)) + call RegUnpack(RF, UB(1:R)) + if (RegCheckErr(RF, "RegUnpackBounds")) return end subroutine - subroutine GrowBuffer(Buf, N) - type(PackBuffer), intent(inout) :: Buf - integer(B8Ki), intent(in) :: N - - integer(B1Ki), allocatable :: BytesTmp(:) - integer(B8Ki) :: NewSize - integer(IntKi) :: stat - - ! Return if there is a buffer error - if (Buf%ErrStat /= ErrID_None) return + function DataNumValid(RF) result(match) + type(RegFile), intent(inout) :: RF + logical :: match + integer(B8Ki) :: DataNum - ! If buffer can hold requested bytes, return - if (size(Buf%Bytes) > Buf%NB + N) return + ! Increment the data number to be read + RF%NumData = RF%NumData + 1 - ! Calculate new size - NewSize = int(real(Buf%NB + N, R8Ki) * 1.8_R8Ki, B8Ki) + ! Read the data number from the file + read(RF%Unit) DataNum - ! Move allocation to temporary array and allocate buffer with new size - call move_alloc(Buf%Bytes, BytesTmp) - allocate (Buf%Bytes(NewSize), stat=stat) - if (stat /= 0) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) 'Grow: Unable to grow buffer to', NewSize, 'bytes' - return + ! If data number from file does not match expected number, set match false + ! and create error message; otherwise, set match to true + if (DataNum /= RF%NumData) then + match = .false. + RF%ErrStat = ErrID_Fatal + write(RF%ErrMsg, *) "Read data number", DataNum, "expected", RF%NumData + else + match = .true. end if + end function - ! Copy contents of temporary bytes to buffer - Buf%Bytes(1:size(BytesTmp)) = BytesTmp + subroutine Pack_C1(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), intent(in) :: Data + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data end subroutine + subroutine Unpack_C1(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), intent(out) :: Data + + ! If error, return + if (RF%ErrStat /= ErrID_None) return - subroutine Pack_C1(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - character(*), intent(in) :: Data - integer(B8Ki) :: DataSize + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_C1(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), allocatable, intent(in) :: Data - ! Get size of data in bytes - DataSize = len(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_C1")) return + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_C1")) return + if (.not. allocated(Data)) return - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_C1")) return end subroutine - subroutine Unpack_C1(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - character(*), intent(out) :: Data - integer(B8Ki) :: DataSize + subroutine UnpackAlloc_C1(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), allocatable, intent(out) :: Data + integer(IntKi) :: stat + logical :: IsAllocated + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_C1")) return + if (.not. IsAllocated) return - ! Get size of data in bytes - DataSize = len(Data) - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_C1: buffer too small, requested", DataSize, "bytes" + ! Allocate data + allocate(Data, stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_C1: error allocating data" return end if - ! Transfer data from buffer - Data = transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data) - Buf%NB = Buf%NB + DataSize - + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_C1")) return end subroutine - subroutine Pack_C1_Rank1(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - character(*), intent(in) :: Data(:) - integer(B8Ki) :: DataSize + subroutine PackPtr_C1(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), pointer, intent(in) :: Data + logical :: PtrInIndex - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Get size of data in bytes - DataSize = len(Data(1))*size(Data) + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_C1")) return + if (.not. associated(Data)) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_C1_Rank1")) return - - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_C1")) return + if (PtrInIndex) return + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_C1")) return end subroutine - subroutine Unpack_C1_Rank1(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - character(*), intent(out) :: Data(:) - integer(B8Ki) :: DataSize + subroutine UnpackPtr_C1(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), pointer, intent(out) :: Data + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_C1")) return + if (.not. IsAssociated) return - ! Get size of data in bytes - DataSize = len(Data(1))*size(Data) + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_C1")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_C1_Rank1: buffer too small, requested", DataSize, "bytes" + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data) return end if - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Allocate data + allocate(Data, stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_C1: error allocating data" + return + end if + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_C1")) return end subroutine - subroutine Pack_C1_Rank2(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - character(*), intent(in) :: Data(:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Pack_C1_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), intent(in) :: Data(:) - ! Get size of data in bytes - DataSize = len(Data(1,1))*size(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_C1_Rank2")) return - - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + ! Write data to file + write(RF%Unit) Data end subroutine - subroutine Unpack_C1_Rank2(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - character(*), intent(out) :: Data(:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Unpack_C1_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), intent(out) :: Data(:) - ! Get size of data in bytes - DataSize = len(Data(1,1))*size(Data) - - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_C1_Rank2: buffer too small, requested", DataSize, "bytes" - return - end if + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + ! Read data from file + read(RF%Unit) Data end subroutine - subroutine Pack_C1_Rank3(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - character(*), intent(in) :: Data(:,:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine PackAlloc_C1_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), allocatable, intent(in) :: Data(:) - ! Get size of data in bytes - DataSize = len(Data(1,1,1))*size(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_C1_Rank3")) return + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_C1_Rank1")) return + if (.not. allocated(Data)) return - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write array bounds + call RegPackBounds(RF, 1, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_C1_Rank1")) return end subroutine - subroutine Unpack_C1_Rank3(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - character(*), intent(out) :: Data(:,:,:) - integer(B8Ki) :: DataSize + subroutine UnpackAlloc_C1_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), allocatable, intent(out) :: Data(:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(1), UB(1) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_C1_Rank1")) return + if (.not. IsAllocated) return - ! Get size of data in bytes - DataSize = len(Data(1,1,1))*size(Data) + ! Read array bounds + call RegUnpackBounds(RF, 1, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_C1_Rank1")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_C1_Rank3: buffer too small, requested", DataSize, "bytes" + ! Allocate data + allocate(Data(LB(1):UB(1)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_C1_Rank1: error allocating data" return end if - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize - + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_C1_Rank1")) return end subroutine - subroutine Pack_C1_Rank4(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - character(*), intent(in) :: Data(:,:,:,:) - integer(B8Ki) :: DataSize + subroutine PackPtr_C1_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), pointer, intent(in) :: Data(:) + logical :: PtrInIndex - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Get size of data in bytes - DataSize = len(Data(1,1,1,1))*size(Data) + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_C1_Rank1")) return + if (.not. associated(Data)) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_C1_Rank4")) return + ! Write array bounds + call RegPackBounds(RF, 1, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_C1_Rank1")) return + if (PtrInIndex) return + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_C1_Rank1")) return end subroutine - subroutine Unpack_C1_Rank4(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - character(*), intent(out) :: Data(:,:,:,:) - integer(B8Ki) :: DataSize + subroutine UnpackPtr_C1_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), pointer, intent(out) :: Data(:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(1), UB(1) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank1")) return + if (.not. IsAssociated) return - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read array bounds + call RegUnpackBounds(RF, 1, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank1")) return - ! Get size of data in bytes - DataSize = len(Data(1,1,1,1))*size(Data) + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank1")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_C1_Rank4: buffer too small, requested", DataSize, "bytes" + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):) => Data return end if - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Allocate data + allocate(Data(LB(1):UB(1)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_C1_Rank1: error allocating data" + return + end if + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank1")) return end subroutine - subroutine Pack_C1_Rank5(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - character(*), intent(in) :: Data(:,:,:,:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Pack_C1_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), intent(in) :: Data(:,:) - ! Get size of data in bytes - DataSize = len(Data(1,1,1,1,1))*size(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_C1_Rank5")) return - - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + ! Write data to file + write(RF%Unit) Data end subroutine - subroutine Unpack_C1_Rank5(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - character(*), intent(out) :: Data(:,:,:,:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Unpack_C1_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), intent(out) :: Data(:,:) - ! Get size of data in bytes - DataSize = len(Data(1,1,1,1,1))*size(Data) - - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_C1_Rank5: buffer too small, requested", DataSize, "bytes" - return - end if + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + ! Read data from file + read(RF%Unit) Data end subroutine - subroutine Pack_L1(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - logical, intent(in) :: Data - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine PackAlloc_C1_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), allocatable, intent(in) :: Data(:,:) - ! Get size of data in bytes - DataSize = 1 + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_L1")) return + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_C1_Rank2")) return + if (.not. allocated(Data)) return - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(LogicalToByte(Data), Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write array bounds + call RegPackBounds(RF, 2, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_C1_Rank2")) return end subroutine - subroutine Unpack_L1(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - logical, intent(out) :: Data - integer(B8Ki) :: DataSize + subroutine UnpackAlloc_C1_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), allocatable, intent(out) :: Data(:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(2), UB(2) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_C1_Rank2")) return + if (.not. IsAllocated) return - ! Get size of data in bytes - DataSize = 1 + ! Read array bounds + call RegUnpackBounds(RF, 2, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_C1_Rank2")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_L1: buffer too small, requested", DataSize, "bytes" + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_C1_Rank2: error allocating data" return end if - ! Transfer data from buffer - Data = ByteToLogical(Buf%Bytes(Buf%NB+1)) - Buf%NB = Buf%NB + DataSize - + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_C1_Rank2")) return end subroutine - subroutine Pack_L1_Rank1(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - logical, intent(in) :: Data(:) - integer(B8Ki) :: DataSize + subroutine PackPtr_C1_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), pointer, intent(in) :: Data(:,:) + logical :: PtrInIndex - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Get size of data in bytes - DataSize = size(Data) + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_C1_Rank2")) return + if (.not. associated(Data)) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_L1_Rank1")) return + ! Write array bounds + call RegPackBounds(RF, 2, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(LogicalToByte(Data), Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_C1_Rank2")) return + if (PtrInIndex) return + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_C1_Rank2")) return end subroutine - subroutine Unpack_L1_Rank1(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - logical, intent(out) :: Data(:) - integer(B8Ki) :: DataSize + subroutine UnpackPtr_C1_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), pointer, intent(out) :: Data(:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(2), UB(2) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank2")) return + if (.not. IsAssociated) return - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read array bounds + call RegUnpackBounds(RF, 2, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank2")) return - ! Get size of data in bytes - DataSize = size(Data) + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank2")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_L1_Rank1: buffer too small, requested", DataSize, "bytes" + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):) => Data return end if - ! Transfer data from buffer - Data = reshape(ByteToLogical(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize)), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_C1_Rank2: error allocating data" + return + end if + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank2")) return end subroutine - subroutine Pack_L1_Rank2(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - logical, intent(in) :: Data(:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Pack_C1_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), intent(in) :: Data(:,:,:) - ! Get size of data in bytes - DataSize = size(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_L1_Rank2")) return - - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(LogicalToByte(Data), Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + ! Write data to file + write(RF%Unit) Data end subroutine - subroutine Unpack_L1_Rank2(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - logical, intent(out) :: Data(:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Unpack_C1_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), intent(out) :: Data(:,:,:) - ! Get size of data in bytes - DataSize = size(Data) - - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_L1_Rank2: buffer too small, requested", DataSize, "bytes" - return - end if + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Transfer data from buffer - Data = reshape(ByteToLogical(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize)), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + ! Read data from file + read(RF%Unit) Data end subroutine - subroutine Pack_L1_Rank3(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - logical, intent(in) :: Data(:,:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine PackAlloc_C1_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), allocatable, intent(in) :: Data(:,:,:) - ! Get size of data in bytes - DataSize = size(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_L1_Rank3")) return + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_C1_Rank3")) return + if (.not. allocated(Data)) return - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(LogicalToByte(Data), Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write array bounds + call RegPackBounds(RF, 3, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_C1_Rank3")) return end subroutine - subroutine Unpack_L1_Rank3(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - logical, intent(out) :: Data(:,:,:) - integer(B8Ki) :: DataSize + subroutine UnpackAlloc_C1_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), allocatable, intent(out) :: Data(:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(3), UB(3) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_C1_Rank3")) return + if (.not. IsAllocated) return - ! Get size of data in bytes - DataSize = size(Data) + ! Read array bounds + call RegUnpackBounds(RF, 3, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_C1_Rank3")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_L1_Rank3: buffer too small, requested", DataSize, "bytes" + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_C1_Rank3: error allocating data" return end if - ! Transfer data from buffer - Data = reshape(ByteToLogical(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize)), shape(Data)) - Buf%NB = Buf%NB + DataSize - + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_C1_Rank3")) return end subroutine - subroutine Pack_L1_Rank4(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - logical, intent(in) :: Data(:,:,:,:) - integer(B8Ki) :: DataSize + subroutine PackPtr_C1_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), pointer, intent(in) :: Data(:,:,:) + logical :: PtrInIndex - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Get size of data in bytes - DataSize = size(Data) + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_C1_Rank3")) return + if (.not. associated(Data)) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_L1_Rank4")) return + ! Write array bounds + call RegPackBounds(RF, 3, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(LogicalToByte(Data), Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_C1_Rank3")) return + if (PtrInIndex) return + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_C1_Rank3")) return end subroutine - subroutine Unpack_L1_Rank4(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - logical, intent(out) :: Data(:,:,:,:) - integer(B8Ki) :: DataSize + subroutine UnpackPtr_C1_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), pointer, intent(out) :: Data(:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(3), UB(3) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank3")) return + if (.not. IsAssociated) return - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read array bounds + call RegUnpackBounds(RF, 3, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank3")) return - ! Get size of data in bytes - DataSize = size(Data) + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank3")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_L1_Rank4: buffer too small, requested", DataSize, "bytes" + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):) => Data return end if - ! Transfer data from buffer - Data = reshape(ByteToLogical(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize)), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_C1_Rank3: error allocating data" + return + end if + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank3")) return end subroutine - subroutine Pack_L1_Rank5(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - logical, intent(in) :: Data(:,:,:,:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Pack_C1_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), intent(in) :: Data(:,:,:,:) - ! Get size of data in bytes - DataSize = size(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_L1_Rank5")) return - - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(LogicalToByte(Data), Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + ! Write data to file + write(RF%Unit) Data end subroutine - subroutine Unpack_L1_Rank5(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - logical, intent(out) :: Data(:,:,:,:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Unpack_C1_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), intent(out) :: Data(:,:,:,:) - ! Get size of data in bytes - DataSize = size(Data) - - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_L1_Rank5: buffer too small, requested", DataSize, "bytes" - return - end if + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Transfer data from buffer - Data = reshape(ByteToLogical(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize)), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + ! Read data from file + read(RF%Unit) Data end subroutine - subroutine Pack_I4(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B4Ki), intent(in) :: Data - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine PackAlloc_C1_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), allocatable, intent(in) :: Data(:,:,:,:) - ! Get size of data in bytes - DataSize = 4 + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_I4")) return + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_C1_Rank4")) return + if (.not. allocated(Data)) return - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write array bounds + call RegPackBounds(RF, 4, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_C1_Rank4")) return end subroutine - subroutine Unpack_I4(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B4Ki), intent(out) :: Data - integer(B8Ki) :: DataSize + subroutine UnpackAlloc_C1_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), allocatable, intent(out) :: Data(:,:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(4), UB(4) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_C1_Rank4")) return + if (.not. IsAllocated) return - ! Get size of data in bytes - DataSize = 4 + ! Read array bounds + call RegUnpackBounds(RF, 4, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_C1_Rank4")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_I4: buffer too small, requested", DataSize, "bytes" + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_C1_Rank4: error allocating data" return end if - ! Transfer data from buffer - Data = transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data) - Buf%NB = Buf%NB + DataSize - + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_C1_Rank4")) return end subroutine - subroutine Pack_I4_Rank1(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B4Ki), intent(in) :: Data(:) - integer(B8Ki) :: DataSize + subroutine PackPtr_C1_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), pointer, intent(in) :: Data(:,:,:,:) + logical :: PtrInIndex - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Get size of data in bytes - DataSize = 4*size(Data) + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_C1_Rank4")) return + if (.not. associated(Data)) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_I4_Rank1")) return + ! Write array bounds + call RegPackBounds(RF, 4, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_C1_Rank4")) return + if (PtrInIndex) return + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_C1_Rank4")) return end subroutine - subroutine Unpack_I4_Rank1(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B4Ki), intent(out) :: Data(:) - integer(B8Ki) :: DataSize + subroutine UnpackPtr_C1_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), pointer, intent(out) :: Data(:,:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(4), UB(4) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank4")) return + if (.not. IsAssociated) return - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read array bounds + call RegUnpackBounds(RF, 4, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank4")) return - ! Get size of data in bytes - DataSize = 4*size(Data) + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank4")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_I4_Rank1: buffer too small, requested", DataSize, "bytes" + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):,LB(4):) => Data return end if - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_C1_Rank4: error allocating data" + return + end if + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank4")) return end subroutine - subroutine Pack_I4_Rank2(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B4Ki), intent(in) :: Data(:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Pack_C1_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), intent(in) :: Data(:,:,:,:,:) - ! Get size of data in bytes - DataSize = 4*size(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_I4_Rank2")) return - - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + ! Write data to file + write(RF%Unit) Data end subroutine - subroutine Unpack_I4_Rank2(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B4Ki), intent(out) :: Data(:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Unpack_C1_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), intent(out) :: Data(:,:,:,:,:) - ! Get size of data in bytes - DataSize = 4*size(Data) - - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_I4_Rank2: buffer too small, requested", DataSize, "bytes" - return - end if + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + ! Read data from file + read(RF%Unit) Data end subroutine - subroutine Pack_I4_Rank3(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B4Ki), intent(in) :: Data(:,:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine PackAlloc_C1_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), allocatable, intent(in) :: Data(:,:,:,:,:) - ! Get size of data in bytes - DataSize = 4*size(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_I4_Rank3")) return + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_C1_Rank5")) return + if (.not. allocated(Data)) return - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write array bounds + call RegPackBounds(RF, 5, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_C1_Rank5")) return end subroutine - subroutine Unpack_I4_Rank3(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B4Ki), intent(out) :: Data(:,:,:) - integer(B8Ki) :: DataSize + subroutine UnpackAlloc_C1_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), allocatable, intent(out) :: Data(:,:,:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(5), UB(5) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_C1_Rank5")) return + if (.not. IsAllocated) return - ! Get size of data in bytes - DataSize = 4*size(Data) + ! Read array bounds + call RegUnpackBounds(RF, 5, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_C1_Rank5")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_I4_Rank3: buffer too small, requested", DataSize, "bytes" + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_C1_Rank5: error allocating data" return end if - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize - + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_C1_Rank5")) return end subroutine - subroutine Pack_I4_Rank4(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B4Ki), intent(in) :: Data(:,:,:,:) - integer(B8Ki) :: DataSize + subroutine PackPtr_C1_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), pointer, intent(in) :: Data(:,:,:,:,:) + logical :: PtrInIndex - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Get size of data in bytes - DataSize = 4*size(Data) + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_C1_Rank5")) return + if (.not. associated(Data)) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_I4_Rank4")) return + ! Write array bounds + call RegPackBounds(RF, 5, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_C1_Rank5")) return + if (PtrInIndex) return + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_C1_Rank5")) return end subroutine - subroutine Unpack_I4_Rank4(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B4Ki), intent(out) :: Data(:,:,:,:) - integer(B8Ki) :: DataSize + subroutine UnpackPtr_C1_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + character(*), pointer, intent(out) :: Data(:,:,:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(5), UB(5) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank5")) return + if (.not. IsAssociated) return - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read array bounds + call RegUnpackBounds(RF, 5, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank5")) return - ! Get size of data in bytes - DataSize = 4*size(Data) + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank5")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_I4_Rank4: buffer too small, requested", DataSize, "bytes" + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):,LB(4):,LB(5):) => Data return end if - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_C1_Rank5: error allocating data" + return + end if + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_C1_Rank5")) return end subroutine - subroutine Pack_I4_Rank5(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B4Ki), intent(in) :: Data(:,:,:,:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Pack_L1(RF, Data) + type(RegFile), intent(inout) :: RF + logical, intent(in) :: Data - ! Get size of data in bytes - DataSize = 4*size(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_I4_Rank5")) return - - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + ! Write data to file + write(RF%Unit) Data end subroutine - subroutine Unpack_I4_Rank5(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B4Ki), intent(out) :: Data(:,:,:,:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Unpack_L1(RF, Data) + type(RegFile), intent(inout) :: RF + logical, intent(out) :: Data - ! Get size of data in bytes - DataSize = 4*size(Data) - - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_I4_Rank5: buffer too small, requested", DataSize, "bytes" - return - end if + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + ! Read data from file + read(RF%Unit) Data end subroutine - subroutine Pack_I8(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B8Ki), intent(in) :: Data - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine PackAlloc_L1(RF, Data) + type(RegFile), intent(inout) :: RF + logical, allocatable, intent(in) :: Data - ! Get size of data in bytes - DataSize = 8 + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_I8")) return + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_L1")) return + if (.not. allocated(Data)) return - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_L1")) return end subroutine - subroutine Unpack_I8(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B8Ki), intent(out) :: Data - integer(B8Ki) :: DataSize + subroutine UnpackAlloc_L1(RF, Data) + type(RegFile), intent(inout) :: RF + logical, allocatable, intent(out) :: Data + integer(IntKi) :: stat + logical :: IsAllocated + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_L1")) return + if (.not. IsAllocated) return - ! Get size of data in bytes - DataSize = 8 - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_I8: buffer too small, requested", DataSize, "bytes" + ! Allocate data + allocate(Data, stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_L1: error allocating data" return end if - ! Transfer data from buffer - Data = transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data) - Buf%NB = Buf%NB + DataSize - + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_L1")) return end subroutine - subroutine Pack_I8_Rank1(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B8Ki), intent(in) :: Data(:) - integer(B8Ki) :: DataSize + subroutine PackPtr_L1(RF, Data) + type(RegFile), intent(inout) :: RF + logical, pointer, intent(in) :: Data + logical :: PtrInIndex - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Get size of data in bytes - DataSize = 8*size(Data) + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_L1")) return + if (.not. associated(Data)) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_I8_Rank1")) return - - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_L1")) return + if (PtrInIndex) return + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_L1")) return end subroutine - subroutine Unpack_I8_Rank1(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B8Ki), intent(out) :: Data(:) - integer(B8Ki) :: DataSize + subroutine UnpackPtr_L1(RF, Data) + type(RegFile), intent(inout) :: RF + logical, pointer, intent(out) :: Data + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_L1")) return + if (.not. IsAssociated) return - ! Get size of data in bytes - DataSize = 8*size(Data) + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_L1")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_I8_Rank1: buffer too small, requested", DataSize, "bytes" + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data) return end if - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Allocate data + allocate(Data, stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_L1: error allocating data" + return + end if + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_L1")) return end subroutine - subroutine Pack_I8_Rank2(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B8Ki), intent(in) :: Data(:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Pack_L1_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + logical, intent(in) :: Data(:) - ! Get size of data in bytes - DataSize = 8*size(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_I8_Rank2")) return - - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + ! Write data to file + write(RF%Unit) Data end subroutine - subroutine Unpack_I8_Rank2(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B8Ki), intent(out) :: Data(:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Unpack_L1_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + logical, intent(out) :: Data(:) - ! Get size of data in bytes - DataSize = 8*size(Data) - - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_I8_Rank2: buffer too small, requested", DataSize, "bytes" - return - end if + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + ! Read data from file + read(RF%Unit) Data end subroutine - subroutine Pack_I8_Rank3(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B8Ki), intent(in) :: Data(:,:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine PackAlloc_L1_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + logical, allocatable, intent(in) :: Data(:) - ! Get size of data in bytes - DataSize = 8*size(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_I8_Rank3")) return + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_L1_Rank1")) return + if (.not. allocated(Data)) return - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write array bounds + call RegPackBounds(RF, 1, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_L1_Rank1")) return end subroutine - subroutine Unpack_I8_Rank3(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B8Ki), intent(out) :: Data(:,:,:) - integer(B8Ki) :: DataSize + subroutine UnpackAlloc_L1_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + logical, allocatable, intent(out) :: Data(:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(1), UB(1) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_L1_Rank1")) return + if (.not. IsAllocated) return - ! Get size of data in bytes - DataSize = 8*size(Data) + ! Read array bounds + call RegUnpackBounds(RF, 1, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_L1_Rank1")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_I8_Rank3: buffer too small, requested", DataSize, "bytes" + ! Allocate data + allocate(Data(LB(1):UB(1)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_L1_Rank1: error allocating data" return end if - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize - + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_L1_Rank1")) return end subroutine - subroutine Pack_I8_Rank4(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B8Ki), intent(in) :: Data(:,:,:,:) - integer(B8Ki) :: DataSize + subroutine PackPtr_L1_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + logical, pointer, intent(in) :: Data(:) + logical :: PtrInIndex - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Get size of data in bytes - DataSize = 8*size(Data) + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_L1_Rank1")) return + if (.not. associated(Data)) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_I8_Rank4")) return + ! Write array bounds + call RegPackBounds(RF, 1, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_L1_Rank1")) return + if (PtrInIndex) return + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_L1_Rank1")) return end subroutine - subroutine Unpack_I8_Rank4(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B8Ki), intent(out) :: Data(:,:,:,:) - integer(B8Ki) :: DataSize + subroutine UnpackPtr_L1_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + logical, pointer, intent(out) :: Data(:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(1), UB(1) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank1")) return + if (.not. IsAssociated) return - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read array bounds + call RegUnpackBounds(RF, 1, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank1")) return - ! Get size of data in bytes - DataSize = 8*size(Data) + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank1")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_I8_Rank4: buffer too small, requested", DataSize, "bytes" + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):) => Data return end if - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Allocate data + allocate(Data(LB(1):UB(1)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_L1_Rank1: error allocating data" + return + end if + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank1")) return end subroutine - subroutine Pack_I8_Rank5(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B8Ki), intent(in) :: Data(:,:,:,:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Pack_L1_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + logical, intent(in) :: Data(:,:) - ! Get size of data in bytes - DataSize = 8*size(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_I8_Rank5")) return - - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + ! Write data to file + write(RF%Unit) Data end subroutine - subroutine Unpack_I8_Rank5(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - integer(B8Ki), intent(out) :: Data(:,:,:,:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Unpack_L1_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + logical, intent(out) :: Data(:,:) - ! Get size of data in bytes - DataSize = 8*size(Data) - - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_I8_Rank5: buffer too small, requested", DataSize, "bytes" - return - end if + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + ! Read data from file + read(RF%Unit) Data end subroutine - subroutine Pack_R4(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R4Ki), intent(in) :: Data - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine PackAlloc_L1_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + logical, allocatable, intent(in) :: Data(:,:) - ! Get size of data in bytes - DataSize = 4 + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_R4")) return + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_L1_Rank2")) return + if (.not. allocated(Data)) return - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write array bounds + call RegPackBounds(RF, 2, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_L1_Rank2")) return end subroutine - subroutine Unpack_R4(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R4Ki), intent(out) :: Data - integer(B8Ki) :: DataSize + subroutine UnpackAlloc_L1_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + logical, allocatable, intent(out) :: Data(:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(2), UB(2) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_L1_Rank2")) return + if (.not. IsAllocated) return - ! Get size of data in bytes - DataSize = 4 + ! Read array bounds + call RegUnpackBounds(RF, 2, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_L1_Rank2")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_R4: buffer too small, requested", DataSize, "bytes" + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_L1_Rank2: error allocating data" return end if - ! Transfer data from buffer - Data = transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data) - Buf%NB = Buf%NB + DataSize - + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_L1_Rank2")) return end subroutine - subroutine Pack_R4_Rank1(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R4Ki), intent(in) :: Data(:) - integer(B8Ki) :: DataSize + subroutine PackPtr_L1_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + logical, pointer, intent(in) :: Data(:,:) + logical :: PtrInIndex - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Get size of data in bytes - DataSize = 4*size(Data) + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_L1_Rank2")) return + if (.not. associated(Data)) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_R4_Rank1")) return + ! Write array bounds + call RegPackBounds(RF, 2, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_L1_Rank2")) return + if (PtrInIndex) return + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_L1_Rank2")) return end subroutine - subroutine Unpack_R4_Rank1(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R4Ki), intent(out) :: Data(:) - integer(B8Ki) :: DataSize + subroutine UnpackPtr_L1_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + logical, pointer, intent(out) :: Data(:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(2), UB(2) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank2")) return + if (.not. IsAssociated) return - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read array bounds + call RegUnpackBounds(RF, 2, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank2")) return - ! Get size of data in bytes - DataSize = 4*size(Data) + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank2")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_R4_Rank1: buffer too small, requested", DataSize, "bytes" + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):) => Data return end if - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_L1_Rank2: error allocating data" + return + end if + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank2")) return end subroutine - subroutine Pack_R4_Rank2(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R4Ki), intent(in) :: Data(:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Pack_L1_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + logical, intent(in) :: Data(:,:,:) - ! Get size of data in bytes - DataSize = 4*size(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_R4_Rank2")) return - - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + ! Write data to file + write(RF%Unit) Data end subroutine - subroutine Unpack_R4_Rank2(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R4Ki), intent(out) :: Data(:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Unpack_L1_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + logical, intent(out) :: Data(:,:,:) - ! Get size of data in bytes - DataSize = 4*size(Data) - - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_R4_Rank2: buffer too small, requested", DataSize, "bytes" - return - end if + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + ! Read data from file + read(RF%Unit) Data end subroutine - subroutine Pack_R4_Rank3(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R4Ki), intent(in) :: Data(:,:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine PackAlloc_L1_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + logical, allocatable, intent(in) :: Data(:,:,:) - ! Get size of data in bytes - DataSize = 4*size(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_R4_Rank3")) return + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_L1_Rank3")) return + if (.not. allocated(Data)) return - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write array bounds + call RegPackBounds(RF, 3, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_L1_Rank3")) return end subroutine - subroutine Unpack_R4_Rank3(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R4Ki), intent(out) :: Data(:,:,:) - integer(B8Ki) :: DataSize + subroutine UnpackAlloc_L1_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + logical, allocatable, intent(out) :: Data(:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(3), UB(3) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_L1_Rank3")) return + if (.not. IsAllocated) return - ! Get size of data in bytes - DataSize = 4*size(Data) + ! Read array bounds + call RegUnpackBounds(RF, 3, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_L1_Rank3")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_R4_Rank3: buffer too small, requested", DataSize, "bytes" + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_L1_Rank3: error allocating data" return end if - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize - + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_L1_Rank3")) return end subroutine - subroutine Pack_R4_Rank4(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R4Ki), intent(in) :: Data(:,:,:,:) - integer(B8Ki) :: DataSize + subroutine PackPtr_L1_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + logical, pointer, intent(in) :: Data(:,:,:) + logical :: PtrInIndex - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Get size of data in bytes - DataSize = 4*size(Data) + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_L1_Rank3")) return + if (.not. associated(Data)) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_R4_Rank4")) return + ! Write array bounds + call RegPackBounds(RF, 3, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_L1_Rank3")) return + if (PtrInIndex) return + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_L1_Rank3")) return end subroutine - subroutine Unpack_R4_Rank4(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R4Ki), intent(out) :: Data(:,:,:,:) - integer(B8Ki) :: DataSize + subroutine UnpackPtr_L1_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + logical, pointer, intent(out) :: Data(:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(3), UB(3) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank3")) return + if (.not. IsAssociated) return - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read array bounds + call RegUnpackBounds(RF, 3, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank3")) return - ! Get size of data in bytes - DataSize = 4*size(Data) + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank3")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_R4_Rank4: buffer too small, requested", DataSize, "bytes" + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):) => Data return end if - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_L1_Rank3: error allocating data" + return + end if + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank3")) return end subroutine - subroutine Pack_R4_Rank5(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R4Ki), intent(in) :: Data(:,:,:,:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Pack_L1_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + logical, intent(in) :: Data(:,:,:,:) - ! Get size of data in bytes - DataSize = 4*size(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_R4_Rank5")) return - - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + ! Write data to file + write(RF%Unit) Data end subroutine - subroutine Unpack_R4_Rank5(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R4Ki), intent(out) :: Data(:,:,:,:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Unpack_L1_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + logical, intent(out) :: Data(:,:,:,:) - ! Get size of data in bytes - DataSize = 4*size(Data) - - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_R4_Rank5: buffer too small, requested", DataSize, "bytes" - return - end if + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + ! Read data from file + read(RF%Unit) Data end subroutine - subroutine Pack_R8(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R8Ki), intent(in) :: Data - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine PackAlloc_L1_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + logical, allocatable, intent(in) :: Data(:,:,:,:) - ! Get size of data in bytes - DataSize = 8 + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_R8")) return + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_L1_Rank4")) return + if (.not. allocated(Data)) return - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write array bounds + call RegPackBounds(RF, 4, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_L1_Rank4")) return end subroutine - subroutine Unpack_R8(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R8Ki), intent(out) :: Data - integer(B8Ki) :: DataSize + subroutine UnpackAlloc_L1_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + logical, allocatable, intent(out) :: Data(:,:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(4), UB(4) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_L1_Rank4")) return + if (.not. IsAllocated) return - ! Get size of data in bytes - DataSize = 8 + ! Read array bounds + call RegUnpackBounds(RF, 4, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_L1_Rank4")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_R8: buffer too small, requested", DataSize, "bytes" + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_L1_Rank4: error allocating data" return end if - ! Transfer data from buffer - Data = transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data) - Buf%NB = Buf%NB + DataSize - + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_L1_Rank4")) return end subroutine - subroutine Pack_R8_Rank1(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R8Ki), intent(in) :: Data(:) - integer(B8Ki) :: DataSize + subroutine PackPtr_L1_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + logical, pointer, intent(in) :: Data(:,:,:,:) + logical :: PtrInIndex - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Get size of data in bytes - DataSize = 8*size(Data) + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_L1_Rank4")) return + if (.not. associated(Data)) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_R8_Rank1")) return + ! Write array bounds + call RegPackBounds(RF, 4, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_L1_Rank4")) return + if (PtrInIndex) return + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_L1_Rank4")) return end subroutine - subroutine Unpack_R8_Rank1(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R8Ki), intent(out) :: Data(:) - integer(B8Ki) :: DataSize + subroutine UnpackPtr_L1_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + logical, pointer, intent(out) :: Data(:,:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(4), UB(4) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank4")) return + if (.not. IsAssociated) return - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read array bounds + call RegUnpackBounds(RF, 4, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank4")) return - ! Get size of data in bytes - DataSize = 8*size(Data) + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank4")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_R8_Rank1: buffer too small, requested", DataSize, "bytes" + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):,LB(4):) => Data return end if - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_L1_Rank4: error allocating data" + return + end if + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank4")) return end subroutine - subroutine Pack_R8_Rank2(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R8Ki), intent(in) :: Data(:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Pack_L1_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + logical, intent(in) :: Data(:,:,:,:,:) - ! Get size of data in bytes - DataSize = 8*size(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_R8_Rank2")) return - - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + ! Write data to file + write(RF%Unit) Data end subroutine - subroutine Unpack_R8_Rank2(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R8Ki), intent(out) :: Data(:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine Unpack_L1_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + logical, intent(out) :: Data(:,:,:,:,:) - ! Get size of data in bytes - DataSize = 8*size(Data) - - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_R8_Rank2: buffer too small, requested", DataSize, "bytes" - return - end if + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + ! Read data from file + read(RF%Unit) Data end subroutine - subroutine Pack_R8_Rank3(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R8Ki), intent(in) :: Data(:,:,:) - integer(B8Ki) :: DataSize - - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + subroutine PackAlloc_L1_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + logical, allocatable, intent(in) :: Data(:,:,:,:,:) - ! Get size of data in bytes - DataSize = 8*size(Data) + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_R8_Rank3")) return + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_L1_Rank5")) return + if (.not. allocated(Data)) return - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write array bounds + call RegPackBounds(RF, 5, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_L1_Rank5")) return end subroutine - subroutine Unpack_R8_Rank3(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R8Ki), intent(out) :: Data(:,:,:) - integer(B8Ki) :: DataSize + subroutine UnpackAlloc_L1_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + logical, allocatable, intent(out) :: Data(:,:,:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(5), UB(5) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_L1_Rank5")) return + if (.not. IsAllocated) return - ! Get size of data in bytes - DataSize = 8*size(Data) + ! Read array bounds + call RegUnpackBounds(RF, 5, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_L1_Rank5")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_R8_Rank3: buffer too small, requested", DataSize, "bytes" + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_L1_Rank5: error allocating data" return end if - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize - + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_L1_Rank5")) return end subroutine - subroutine Pack_R8_Rank4(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R8Ki), intent(in) :: Data(:,:,:,:) - integer(B8Ki) :: DataSize + subroutine PackPtr_L1_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + logical, pointer, intent(in) :: Data(:,:,:,:,:) + logical :: PtrInIndex - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Get size of data in bytes - DataSize = 8*size(Data) + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_L1_Rank5")) return + if (.not. associated(Data)) return - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_R8_Rank4")) return + ! Write array bounds + call RegPackBounds(RF, 5, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_L1_Rank5")) return + if (PtrInIndex) return + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_L1_Rank5")) return end subroutine - subroutine Unpack_R8_Rank4(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R8Ki), intent(out) :: Data(:,:,:,:) - integer(B8Ki) :: DataSize + subroutine UnpackPtr_L1_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + logical, pointer, intent(out) :: Data(:,:,:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(5), UB(5) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank5")) return + if (.not. IsAssociated) return - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Read array bounds + call RegUnpackBounds(RF, 5, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank5")) return - ! Get size of data in bytes - DataSize = 8*size(Data) + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank5")) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_R8_Rank4: buffer too small, requested", DataSize, "bytes" + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):,LB(4):,LB(5):) => Data return end if - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_L1_Rank5: error allocating data" + return + end if + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_L1_Rank5")) return end subroutine - subroutine Pack_R8_Rank5(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R8Ki), intent(in) :: Data(:,:,:,:,:) - integer(B8Ki) :: DataSize + subroutine Pack_I4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), intent(in) :: Data + + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData - ! Get size of data in bytes - DataSize = 8*size(Data) + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_I4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), intent(out) :: Data - ! Grow buffer to accommodate Data - call GrowBuffer(Buf, DataSize) - if (RegCheckErr(Buf, "Pack_R8_Rank5")) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Transfer data to buffer - Buf%Bytes(Buf%NB+1:Buf%NB+DataSize) = transfer(Data, Buf%Bytes) - Buf%NB = Buf%NB + DataSize + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + ! Read data from file + read(RF%Unit) Data end subroutine - subroutine Unpack_R8_Rank5(Buf, Data) - type(PackBuffer), intent(inout) :: Buf - real(R8Ki), intent(out) :: Data(:,:,:,:,:) - integer(B8Ki) :: DataSize + subroutine PackAlloc_I4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), allocatable, intent(in) :: Data - ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + ! If error, return + if (RF%ErrStat /= ErrID_None) return - ! Get size of data in bytes - DataSize = 8*size(Data) + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_I4")) return + if (.not. allocated(Data)) return - ! Check that buffer has sufficient bytes remaining - if (size(Buf%Bytes) < Buf%NB + DataSize) then - Buf%ErrStat = ErrID_Fatal - write(Buf%ErrMsg,*) "Unpack_R8_Rank5: buffer too small, requested", DataSize, "bytes" - return - end if - ! Transfer data from buffer - Data = reshape(transfer(Buf%Bytes(Buf%NB+1:Buf%NB+DataSize), Data), shape(Data)) - Buf%NB = Buf%NB + DataSize + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_I4")) return + end subroutine + + subroutine UnpackAlloc_I4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), allocatable, intent(out) :: Data + integer(IntKi) :: stat + logical :: IsAllocated + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_I4")) return + if (.not. IsAllocated) return + + + ! Allocate data + allocate(Data, stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_I4: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_I4")) return + end subroutine + + subroutine PackPtr_I4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), pointer, intent(in) :: Data + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_I4")) return + if (.not. associated(Data)) return + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_I4")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_I4")) return + end subroutine + + subroutine UnpackPtr_I4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), pointer, intent(out) :: Data + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_I4")) return + if (.not. IsAssociated) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_I4")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data) + return + end if + + ! Allocate data + allocate(Data, stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_I4: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_I4")) return + end subroutine + + subroutine Pack_I4_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), intent(in) :: Data(:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_I4_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), intent(out) :: Data(:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_I4_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), allocatable, intent(in) :: Data(:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_I4_Rank1")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 1, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_I4_Rank1")) return + end subroutine + + subroutine UnpackAlloc_I4_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), allocatable, intent(out) :: Data(:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(1), UB(1) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_I4_Rank1")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 1, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_I4_Rank1")) return + + ! Allocate data + allocate(Data(LB(1):UB(1)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_I4_Rank1: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_I4_Rank1")) return + end subroutine + + subroutine PackPtr_I4_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), pointer, intent(in) :: Data(:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_I4_Rank1")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 1, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_I4_Rank1")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_I4_Rank1")) return + end subroutine + + subroutine UnpackPtr_I4_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), pointer, intent(out) :: Data(:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(1), UB(1) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank1")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 1, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank1")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank1")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_I4_Rank1: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank1")) return + end subroutine + + subroutine Pack_I4_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), intent(in) :: Data(:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_I4_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), intent(out) :: Data(:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_I4_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), allocatable, intent(in) :: Data(:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_I4_Rank2")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 2, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_I4_Rank2")) return + end subroutine + + subroutine UnpackAlloc_I4_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), allocatable, intent(out) :: Data(:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(2), UB(2) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_I4_Rank2")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 2, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_I4_Rank2")) return + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_I4_Rank2: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_I4_Rank2")) return + end subroutine + + subroutine PackPtr_I4_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), pointer, intent(in) :: Data(:,:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_I4_Rank2")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 2, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_I4_Rank2")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_I4_Rank2")) return + end subroutine + + subroutine UnpackPtr_I4_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), pointer, intent(out) :: Data(:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(2), UB(2) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank2")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 2, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank2")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank2")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_I4_Rank2: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank2")) return + end subroutine + + subroutine Pack_I4_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), intent(in) :: Data(:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_I4_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), intent(out) :: Data(:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_I4_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), allocatable, intent(in) :: Data(:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_I4_Rank3")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 3, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_I4_Rank3")) return + end subroutine + + subroutine UnpackAlloc_I4_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), allocatable, intent(out) :: Data(:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(3), UB(3) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_I4_Rank3")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 3, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_I4_Rank3")) return + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_I4_Rank3: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_I4_Rank3")) return + end subroutine + + subroutine PackPtr_I4_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), pointer, intent(in) :: Data(:,:,:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_I4_Rank3")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 3, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_I4_Rank3")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_I4_Rank3")) return + end subroutine + + subroutine UnpackPtr_I4_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), pointer, intent(out) :: Data(:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(3), UB(3) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank3")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 3, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank3")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank3")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_I4_Rank3: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank3")) return + end subroutine + + subroutine Pack_I4_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), intent(in) :: Data(:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_I4_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), intent(out) :: Data(:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_I4_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), allocatable, intent(in) :: Data(:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_I4_Rank4")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 4, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_I4_Rank4")) return + end subroutine + + subroutine UnpackAlloc_I4_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), allocatable, intent(out) :: Data(:,:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(4), UB(4) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_I4_Rank4")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 4, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_I4_Rank4")) return + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_I4_Rank4: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_I4_Rank4")) return + end subroutine + + subroutine PackPtr_I4_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), pointer, intent(in) :: Data(:,:,:,:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_I4_Rank4")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 4, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_I4_Rank4")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_I4_Rank4")) return + end subroutine + + subroutine UnpackPtr_I4_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), pointer, intent(out) :: Data(:,:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(4), UB(4) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank4")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 4, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank4")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank4")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):,LB(4):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_I4_Rank4: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank4")) return + end subroutine + + subroutine Pack_I4_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), intent(in) :: Data(:,:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_I4_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), intent(out) :: Data(:,:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_I4_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), allocatable, intent(in) :: Data(:,:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_I4_Rank5")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 5, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_I4_Rank5")) return + end subroutine + + subroutine UnpackAlloc_I4_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), allocatable, intent(out) :: Data(:,:,:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(5), UB(5) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_I4_Rank5")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 5, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_I4_Rank5")) return + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_I4_Rank5: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_I4_Rank5")) return + end subroutine + + subroutine PackPtr_I4_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), pointer, intent(in) :: Data(:,:,:,:,:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_I4_Rank5")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 5, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_I4_Rank5")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_I4_Rank5")) return + end subroutine + + subroutine UnpackPtr_I4_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B4Ki), pointer, intent(out) :: Data(:,:,:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(5), UB(5) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank5")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 5, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank5")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank5")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):,LB(4):,LB(5):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_I4_Rank5: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_I4_Rank5")) return + end subroutine + + subroutine Pack_I8(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), intent(in) :: Data + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_I8(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), intent(out) :: Data + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_I8(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), allocatable, intent(in) :: Data + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_I8")) return + if (.not. allocated(Data)) return + + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_I8")) return + end subroutine + + subroutine UnpackAlloc_I8(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), allocatable, intent(out) :: Data + integer(IntKi) :: stat + logical :: IsAllocated + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_I8")) return + if (.not. IsAllocated) return + + + ! Allocate data + allocate(Data, stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_I8: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_I8")) return + end subroutine + + subroutine PackPtr_I8(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), pointer, intent(in) :: Data + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_I8")) return + if (.not. associated(Data)) return + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_I8")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_I8")) return + end subroutine + + subroutine UnpackPtr_I8(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), pointer, intent(out) :: Data + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_I8")) return + if (.not. IsAssociated) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_I8")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data) + return + end if + + ! Allocate data + allocate(Data, stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_I8: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_I8")) return + end subroutine + + subroutine Pack_I8_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), intent(in) :: Data(:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_I8_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), intent(out) :: Data(:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_I8_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), allocatable, intent(in) :: Data(:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_I8_Rank1")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 1, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_I8_Rank1")) return + end subroutine + + subroutine UnpackAlloc_I8_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), allocatable, intent(out) :: Data(:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(1), UB(1) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_I8_Rank1")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 1, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_I8_Rank1")) return + + ! Allocate data + allocate(Data(LB(1):UB(1)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_I8_Rank1: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_I8_Rank1")) return + end subroutine + + subroutine PackPtr_I8_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), pointer, intent(in) :: Data(:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_I8_Rank1")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 1, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_I8_Rank1")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_I8_Rank1")) return + end subroutine + + subroutine UnpackPtr_I8_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), pointer, intent(out) :: Data(:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(1), UB(1) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank1")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 1, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank1")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank1")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_I8_Rank1: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank1")) return + end subroutine + + subroutine Pack_I8_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), intent(in) :: Data(:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_I8_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), intent(out) :: Data(:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_I8_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), allocatable, intent(in) :: Data(:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_I8_Rank2")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 2, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_I8_Rank2")) return + end subroutine + + subroutine UnpackAlloc_I8_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), allocatable, intent(out) :: Data(:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(2), UB(2) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_I8_Rank2")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 2, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_I8_Rank2")) return + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_I8_Rank2: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_I8_Rank2")) return + end subroutine + + subroutine PackPtr_I8_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), pointer, intent(in) :: Data(:,:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_I8_Rank2")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 2, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_I8_Rank2")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_I8_Rank2")) return + end subroutine + + subroutine UnpackPtr_I8_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), pointer, intent(out) :: Data(:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(2), UB(2) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank2")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 2, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank2")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank2")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_I8_Rank2: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank2")) return + end subroutine + + subroutine Pack_I8_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), intent(in) :: Data(:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_I8_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), intent(out) :: Data(:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_I8_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), allocatable, intent(in) :: Data(:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_I8_Rank3")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 3, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_I8_Rank3")) return + end subroutine + + subroutine UnpackAlloc_I8_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), allocatable, intent(out) :: Data(:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(3), UB(3) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_I8_Rank3")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 3, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_I8_Rank3")) return + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_I8_Rank3: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_I8_Rank3")) return + end subroutine + + subroutine PackPtr_I8_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), pointer, intent(in) :: Data(:,:,:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_I8_Rank3")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 3, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_I8_Rank3")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_I8_Rank3")) return + end subroutine + + subroutine UnpackPtr_I8_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), pointer, intent(out) :: Data(:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(3), UB(3) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank3")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 3, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank3")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank3")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_I8_Rank3: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank3")) return + end subroutine + + subroutine Pack_I8_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), intent(in) :: Data(:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_I8_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), intent(out) :: Data(:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_I8_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), allocatable, intent(in) :: Data(:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_I8_Rank4")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 4, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_I8_Rank4")) return + end subroutine + + subroutine UnpackAlloc_I8_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), allocatable, intent(out) :: Data(:,:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(4), UB(4) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_I8_Rank4")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 4, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_I8_Rank4")) return + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_I8_Rank4: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_I8_Rank4")) return + end subroutine + + subroutine PackPtr_I8_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), pointer, intent(in) :: Data(:,:,:,:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_I8_Rank4")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 4, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_I8_Rank4")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_I8_Rank4")) return + end subroutine + + subroutine UnpackPtr_I8_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), pointer, intent(out) :: Data(:,:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(4), UB(4) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank4")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 4, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank4")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank4")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):,LB(4):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_I8_Rank4: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank4")) return + end subroutine + + subroutine Pack_I8_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), intent(in) :: Data(:,:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_I8_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), intent(out) :: Data(:,:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_I8_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), allocatable, intent(in) :: Data(:,:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_I8_Rank5")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 5, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_I8_Rank5")) return + end subroutine + + subroutine UnpackAlloc_I8_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), allocatable, intent(out) :: Data(:,:,:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(5), UB(5) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_I8_Rank5")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 5, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_I8_Rank5")) return + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_I8_Rank5: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_I8_Rank5")) return + end subroutine + + subroutine PackPtr_I8_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), pointer, intent(in) :: Data(:,:,:,:,:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_I8_Rank5")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 5, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_I8_Rank5")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_I8_Rank5")) return + end subroutine + + subroutine UnpackPtr_I8_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + integer(B8Ki), pointer, intent(out) :: Data(:,:,:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(5), UB(5) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank5")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 5, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank5")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank5")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):,LB(4):,LB(5):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_I8_Rank5: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_I8_Rank5")) return + end subroutine + + subroutine Pack_R4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), intent(in) :: Data + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_R4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), intent(out) :: Data + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_R4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), allocatable, intent(in) :: Data + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_R4")) return + if (.not. allocated(Data)) return + + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_R4")) return + end subroutine + + subroutine UnpackAlloc_R4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), allocatable, intent(out) :: Data + integer(IntKi) :: stat + logical :: IsAllocated + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_R4")) return + if (.not. IsAllocated) return + + + ! Allocate data + allocate(Data, stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_R4: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_R4")) return + end subroutine + + subroutine PackPtr_R4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), pointer, intent(in) :: Data + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_R4")) return + if (.not. associated(Data)) return + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_R4")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_R4")) return + end subroutine + + subroutine UnpackPtr_R4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), pointer, intent(out) :: Data + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_R4")) return + if (.not. IsAssociated) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_R4")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data) + return + end if + + ! Allocate data + allocate(Data, stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_R4: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_R4")) return + end subroutine + + subroutine Pack_R4_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), intent(in) :: Data(:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_R4_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), intent(out) :: Data(:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_R4_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), allocatable, intent(in) :: Data(:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_R4_Rank1")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 1, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_R4_Rank1")) return + end subroutine + + subroutine UnpackAlloc_R4_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), allocatable, intent(out) :: Data(:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(1), UB(1) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_R4_Rank1")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 1, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_R4_Rank1")) return + + ! Allocate data + allocate(Data(LB(1):UB(1)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_R4_Rank1: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_R4_Rank1")) return + end subroutine + + subroutine PackPtr_R4_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), pointer, intent(in) :: Data(:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_R4_Rank1")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 1, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_R4_Rank1")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_R4_Rank1")) return + end subroutine + + subroutine UnpackPtr_R4_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), pointer, intent(out) :: Data(:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(1), UB(1) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank1")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 1, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank1")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank1")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_R4_Rank1: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank1")) return + end subroutine + + subroutine Pack_R4_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), intent(in) :: Data(:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_R4_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), intent(out) :: Data(:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_R4_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), allocatable, intent(in) :: Data(:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_R4_Rank2")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 2, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_R4_Rank2")) return + end subroutine + + subroutine UnpackAlloc_R4_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), allocatable, intent(out) :: Data(:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(2), UB(2) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_R4_Rank2")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 2, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_R4_Rank2")) return + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_R4_Rank2: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_R4_Rank2")) return + end subroutine + + subroutine PackPtr_R4_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), pointer, intent(in) :: Data(:,:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_R4_Rank2")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 2, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_R4_Rank2")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_R4_Rank2")) return + end subroutine + + subroutine UnpackPtr_R4_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), pointer, intent(out) :: Data(:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(2), UB(2) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank2")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 2, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank2")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank2")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_R4_Rank2: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank2")) return + end subroutine + + subroutine Pack_R4_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), intent(in) :: Data(:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_R4_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), intent(out) :: Data(:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_R4_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), allocatable, intent(in) :: Data(:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_R4_Rank3")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 3, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_R4_Rank3")) return + end subroutine + + subroutine UnpackAlloc_R4_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), allocatable, intent(out) :: Data(:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(3), UB(3) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_R4_Rank3")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 3, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_R4_Rank3")) return + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_R4_Rank3: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_R4_Rank3")) return + end subroutine + + subroutine PackPtr_R4_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), pointer, intent(in) :: Data(:,:,:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_R4_Rank3")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 3, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_R4_Rank3")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_R4_Rank3")) return + end subroutine + + subroutine UnpackPtr_R4_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), pointer, intent(out) :: Data(:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(3), UB(3) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank3")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 3, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank3")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank3")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_R4_Rank3: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank3")) return + end subroutine + + subroutine Pack_R4_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), intent(in) :: Data(:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_R4_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), intent(out) :: Data(:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_R4_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), allocatable, intent(in) :: Data(:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_R4_Rank4")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 4, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_R4_Rank4")) return + end subroutine + + subroutine UnpackAlloc_R4_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), allocatable, intent(out) :: Data(:,:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(4), UB(4) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_R4_Rank4")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 4, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_R4_Rank4")) return + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_R4_Rank4: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_R4_Rank4")) return + end subroutine + + subroutine PackPtr_R4_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), pointer, intent(in) :: Data(:,:,:,:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_R4_Rank4")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 4, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_R4_Rank4")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_R4_Rank4")) return + end subroutine + + subroutine UnpackPtr_R4_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), pointer, intent(out) :: Data(:,:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(4), UB(4) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank4")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 4, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank4")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank4")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):,LB(4):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_R4_Rank4: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank4")) return + end subroutine + + subroutine Pack_R4_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), intent(in) :: Data(:,:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_R4_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), intent(out) :: Data(:,:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_R4_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), allocatable, intent(in) :: Data(:,:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_R4_Rank5")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 5, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_R4_Rank5")) return + end subroutine + + subroutine UnpackAlloc_R4_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), allocatable, intent(out) :: Data(:,:,:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(5), UB(5) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_R4_Rank5")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 5, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_R4_Rank5")) return + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_R4_Rank5: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_R4_Rank5")) return + end subroutine + + subroutine PackPtr_R4_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), pointer, intent(in) :: Data(:,:,:,:,:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_R4_Rank5")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 5, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_R4_Rank5")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_R4_Rank5")) return + end subroutine + + subroutine UnpackPtr_R4_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + real(R4Ki), pointer, intent(out) :: Data(:,:,:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(5), UB(5) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank5")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 5, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank5")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank5")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):,LB(4):,LB(5):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_R4_Rank5: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_R4_Rank5")) return + end subroutine + + subroutine Pack_R8(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), intent(in) :: Data + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_R8(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), intent(out) :: Data + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_R8(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), allocatable, intent(in) :: Data + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_R8")) return + if (.not. allocated(Data)) return + + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_R8")) return + end subroutine + + subroutine UnpackAlloc_R8(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), allocatable, intent(out) :: Data + integer(IntKi) :: stat + logical :: IsAllocated + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_R8")) return + if (.not. IsAllocated) return + + + ! Allocate data + allocate(Data, stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_R8: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_R8")) return + end subroutine + + subroutine PackPtr_R8(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), pointer, intent(in) :: Data + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_R8")) return + if (.not. associated(Data)) return + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_R8")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_R8")) return + end subroutine + + subroutine UnpackPtr_R8(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), pointer, intent(out) :: Data + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_R8")) return + if (.not. IsAssociated) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_R8")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data) + return + end if + + ! Allocate data + allocate(Data, stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_R8: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_R8")) return + end subroutine + + subroutine Pack_R8_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), intent(in) :: Data(:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_R8_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), intent(out) :: Data(:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_R8_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), allocatable, intent(in) :: Data(:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_R8_Rank1")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 1, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_R8_Rank1")) return + end subroutine + + subroutine UnpackAlloc_R8_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), allocatable, intent(out) :: Data(:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(1), UB(1) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_R8_Rank1")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 1, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_R8_Rank1")) return + + ! Allocate data + allocate(Data(LB(1):UB(1)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_R8_Rank1: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_R8_Rank1")) return + end subroutine + + subroutine PackPtr_R8_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), pointer, intent(in) :: Data(:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_R8_Rank1")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 1, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_R8_Rank1")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_R8_Rank1")) return + end subroutine + + subroutine UnpackPtr_R8_Rank1(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), pointer, intent(out) :: Data(:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(1), UB(1) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank1")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 1, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank1")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank1")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_R8_Rank1: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank1")) return + end subroutine + + subroutine Pack_R8_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), intent(in) :: Data(:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_R8_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), intent(out) :: Data(:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_R8_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), allocatable, intent(in) :: Data(:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_R8_Rank2")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 2, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_R8_Rank2")) return + end subroutine + + subroutine UnpackAlloc_R8_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), allocatable, intent(out) :: Data(:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(2), UB(2) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_R8_Rank2")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 2, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_R8_Rank2")) return + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_R8_Rank2: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_R8_Rank2")) return + end subroutine + + subroutine PackPtr_R8_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), pointer, intent(in) :: Data(:,:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_R8_Rank2")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 2, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_R8_Rank2")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_R8_Rank2")) return + end subroutine + + subroutine UnpackPtr_R8_Rank2(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), pointer, intent(out) :: Data(:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(2), UB(2) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank2")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 2, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank2")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank2")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_R8_Rank2: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank2")) return + end subroutine + + subroutine Pack_R8_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), intent(in) :: Data(:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_R8_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), intent(out) :: Data(:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_R8_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), allocatable, intent(in) :: Data(:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_R8_Rank3")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 3, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_R8_Rank3")) return + end subroutine + + subroutine UnpackAlloc_R8_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), allocatable, intent(out) :: Data(:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(3), UB(3) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_R8_Rank3")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 3, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_R8_Rank3")) return + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_R8_Rank3: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_R8_Rank3")) return + end subroutine + + subroutine PackPtr_R8_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), pointer, intent(in) :: Data(:,:,:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_R8_Rank3")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 3, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_R8_Rank3")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_R8_Rank3")) return + end subroutine + + subroutine UnpackPtr_R8_Rank3(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), pointer, intent(out) :: Data(:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(3), UB(3) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank3")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 3, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank3")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank3")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_R8_Rank3: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank3")) return + end subroutine + + subroutine Pack_R8_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), intent(in) :: Data(:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_R8_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), intent(out) :: Data(:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_R8_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), allocatable, intent(in) :: Data(:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_R8_Rank4")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 4, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_R8_Rank4")) return + end subroutine + + subroutine UnpackAlloc_R8_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), allocatable, intent(out) :: Data(:,:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(4), UB(4) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_R8_Rank4")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 4, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_R8_Rank4")) return + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_R8_Rank4: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_R8_Rank4")) return + end subroutine + + subroutine PackPtr_R8_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), pointer, intent(in) :: Data(:,:,:,:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_R8_Rank4")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 4, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_R8_Rank4")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_R8_Rank4")) return + end subroutine + + subroutine UnpackPtr_R8_Rank4(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), pointer, intent(out) :: Data(:,:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(4), UB(4) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank4")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 4, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank4")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank4")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):,LB(4):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_R8_Rank4: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank4")) return + end subroutine + + subroutine Pack_R8_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), intent(in) :: Data(:,:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Increment data number and write to file + RF%NumData = RF%NumData + 1 + write(RF%Unit) RF%NumData + + ! Write data to file + write(RF%Unit) Data + end subroutine + + subroutine Unpack_R8_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), intent(out) :: Data(:,:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Read data number, return if invalid + if (.not. DataNumValid(RF)) return + + ! Read data from file + read(RF%Unit) Data + end subroutine + + subroutine PackAlloc_R8_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), allocatable, intent(in) :: Data(:,:,:,:,:) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if allocated + call RegPack(RF, allocated(Data)) + if (RegCheckErr(RF, "PackAlloc_R8_Rank5")) return + if (.not. allocated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 5, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackAlloc_R8_Rank5")) return + end subroutine + + subroutine UnpackAlloc_R8_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), allocatable, intent(out) :: Data(:,:,:,:,:) + integer(IntKi) :: stat + logical :: IsAllocated + integer(B8Ki) :: LB(5), UB(5) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Deallocate if allocated + if (allocated(Data)) deallocate(Data) + + ! Read value to see if it was allocated, return if not + call RegUnpack(RF, IsAllocated) + if (RegCheckErr(RF, "UnpackAlloc_R8_Rank5")) return + if (.not. IsAllocated) return + + ! Read array bounds + call RegUnpackBounds(RF, 5, LB, UB) + if (RegCheckErr(RF, "UnpackAlloc_R8_Rank5")) return + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackAlloc_R8_Rank5: error allocating data" + return + end if + + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackAlloc_R8_Rank5")) return + end subroutine + + subroutine PackPtr_R8_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), pointer, intent(in) :: Data(:,:,:,:,:) + logical :: PtrInIndex + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! Write if associated + call RegPack(RF, associated(Data)) + if (RegCheckErr(RF, "PackPtr_R8_Rank5")) return + if (.not. associated(Data)) return + + ! Write array bounds + call RegPackBounds(RF, 5, lbound(Data, kind=B8Ki), ubound(Data, kind=B8Ki)) + + ! Write pointer info + call RegPackPointer(RF, c_loc(Data), PtrInIndex) + if (RegCheckErr(RF, "PackPtr_R8_Rank5")) return + if (PtrInIndex) return + + ! Write data to file + call RegPack(RF, Data) + if (RegCheckErr(RF, "PackPtr_R8_Rank5")) return + end subroutine + + subroutine UnpackPtr_R8_Rank5(RF, Data) + type(RegFile), intent(inout) :: RF + real(R8Ki), pointer, intent(out) :: Data(:,:,:,:,:) + integer(IntKi) :: stat + integer(B8Ki) :: PtrIdx + logical :: IsAssociated + type(c_ptr) :: Ptr + integer(B8Ki) :: LB(5), UB(5) + + ! If error, return + if (RF%ErrStat /= ErrID_None) return + + ! If associated, deallocate and nullify + if (associated(Data)) then + deallocate(Data) + nullify(Data) + end if + + ! Read value to see if it was associated, return if not + call RegUnpack(RF, IsAssociated) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank5")) return + if (.not. IsAssociated) return + + ! Read array bounds + call RegUnpackBounds(RF, 5, LB, UB) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank5")) return + + ! Unpack pointer inf + call RegUnpackPointer(RF, Ptr, PtrIdx) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank5")) return + + ! If pointer was in index, associate data with pointer, return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, Data, UB - LB) + Data(LB(1):,LB(2):,LB(3):,LB(4):,LB(5):) => Data + return + end if + + ! Allocate data + allocate(Data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)), stat=stat) + if (stat /= 0) then + RF%ErrStat = ErrID_Fatal + RF%ErrMsg = "UnpackPtr_R8_Rank5: error allocating data" + return + end if + ! Read data + call RegUnpack(RF, Data) + if (RegCheckErr(RF, "UnpackPtr_R8_Rank5")) return end subroutine end module \ No newline at end of file From 9dd75f24de45e918139f6899fca93b333b2a4523 Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Fri, 12 Jan 2024 16:59:25 +0000 Subject: [PATCH 02/10] Include ID field in Mesh --- modules/nwtc-library/src/ModMesh.f90 | 12 ++++++++---- modules/nwtc-library/src/ModMesh_Types.f90 | 1 + 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/modules/nwtc-library/src/ModMesh.f90 b/modules/nwtc-library/src/ModMesh.f90 index 4146c1c083..ec03904704 100644 --- a/modules/nwtc-library/src/ModMesh.f90 +++ b/modules/nwtc-library/src/ModMesh.f90 @@ -1508,7 +1508,7 @@ END SUBROUTINE MeshDestroy !! separately for each sibling, because the fields allocated with the siblings are separate !! and unique to each sibling. subroutine MeshPack (Buf, Mesh) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(MeshType), intent(in) :: Mesh ! Mesh being packed integer :: i,j, nelemnodes @@ -1536,6 +1536,7 @@ subroutine MeshPack (Buf, Mesh) call RegPack(Buf, Mesh%ios) call RegPack(Buf, Mesh%nnodes) call RegPack(Buf, Mesh%refnode) + call RegPack(Buf, Mesh%ID) call RegPack(Buf, Mesh%nextelem) call RegPack(Buf, Mesh%nscalars) @@ -1587,7 +1588,7 @@ END SUBROUTINE MeshPack !! in the exact state as when the data in the buffers was packed using MeshPack. SUBROUTINE MeshUnpack(Buf, Mesh) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(MeshType), intent(inout) :: Mesh ! Mesh being packed ! bjj: not implemented yet: @@ -1595,7 +1596,7 @@ SUBROUTINE MeshUnpack(Buf, Mesh) ! the existing sibling as an optional argument so that the sibling relationship is also recreated. LOGICAL committed, RemapFlag, fieldmask(FIELDMASK_SIZE) - INTEGER nScalars, ios, nnodes, nextelem, nelemnodes, nelem, refnode + INTEGER nScalars, ios, nnodes, nextelem, nelemnodes, nelem, refnode, id INTEGER i,j integer(IntKi) :: EN(20) ! Element nodes @@ -1622,6 +1623,7 @@ SUBROUTINE MeshUnpack(Buf, Mesh) call RegUnpack(Buf, ios) call RegUnpack(Buf, nnodes) call RegUnpack(Buf, refnode) + call RegUnpack(Buf, id) call RegUnpack(Buf, nextelem) call RegUnpack(Buf, nscalars) @@ -1644,6 +1646,7 @@ SUBROUTINE MeshUnpack(Buf, Mesh) if (Buf%ErrStat >= AbortErrLev) return Mesh%RefNode = refnode + Mesh%ID = id Mesh%RemapFlag = RemapFlag Mesh%nextelem = nextelem @@ -1973,7 +1976,8 @@ SUBROUTINE MeshCopy( SrcMesh, DestMesh, CtrlCode, ErrStat , ErrMess & DestMesh%Initialized = SrcMesh%Initialized DestMesh%Committed = SrcMesh%Committed - DestMesh%refNode = SrcMesh%refNode + DestMesh%refNode = SrcMesh%refNode + DestMesh%ID = SrcMesh%ID IF ( ALLOCATED(SrcMesh%Force ) .AND. ALLOCATED(DestMesh%Force ) ) DestMesh%Force = SrcMesh%Force IF ( ALLOCATED(SrcMesh%Moment ) .AND. ALLOCATED(DestMesh%Moment ) ) DestMesh%Moment = SrcMesh%Moment IF ( ALLOCATED(SrcMesh%Orientation ) .AND. ALLOCATED(DestMesh%Orientation ) ) DestMesh%Orientation = SrcMesh%Orientation diff --git a/modules/nwtc-library/src/ModMesh_Types.f90 b/modules/nwtc-library/src/ModMesh_Types.f90 index 1bca2c98a9..b50ab5d997 100644 --- a/modules/nwtc-library/src/ModMesh_Types.f90 +++ b/modules/nwtc-library/src/ModMesh_Types.f90 @@ -107,6 +107,7 @@ MODULE ModMesh_Types INTEGER :: ios !< Mesh type: input (1), output(2), or state(3) INTEGER :: refNode = 0 !< optional reference node (informational only) INTEGER :: Nnodes = 0 !< Number of nodes (vertices) in mesh + INTEGER :: ID = 0 !< Mesh identifier (used during init) ! Mesh elements TYPE(ElemTabType), POINTER :: ElemTable(:) => NULL() !< A table of all elements in the mesh, by type From 141be9d5992b31acc759a27f08c26549fbfab3b4 Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Fri, 12 Jan 2024 17:03:18 +0000 Subject: [PATCH 03/10] Automatically generate subroutines for ModMesh_Mapping.f90 --- modules/nwtc-library/CMakeLists.txt | 10 +- modules/nwtc-library/src/ModMesh_Mapping.f90 | 867 +----------------- modules/openfast-registry/src/main.cpp | 5 + modules/openfast-registry/src/registry.hpp | 10 + .../src/registry_gen_fortran.cpp | 34 +- 5 files changed, 52 insertions(+), 874 deletions(-) diff --git a/modules/nwtc-library/CMakeLists.txt b/modules/nwtc-library/CMakeLists.txt index 998bb11ec9..cc7a669296 100644 --- a/modules/nwtc-library/CMakeLists.txt +++ b/modules/nwtc-library/CMakeLists.txt @@ -14,11 +14,9 @@ # limitations under the License. # -# if (GENERATE_TYPES) -# generate_f90_types(src/Registry_NWTC_Library_typedef_nomesh.txt ${CMAKE_CURRENT_LIST_DIR}/src/NWTC_Library_Types.f90 -noextrap) -# endif() - if (GENERATE_TYPES) + generate_f90_types(src/Registry_NWTC_Library_base.txt ${CMAKE_CURRENT_SOURCE_DIR}/src/NWTC_Library_Types.f90 -noextrap) + generate_f90_types(src/Registry_NWTC_Library_mesh.txt ${CMAKE_CURRENT_SOURCE_DIR}/src/NWTC_Library_Subs.f90 -subs -noextrap) # Generate Registry_NWTC_Library.txt by concatenating _base.txt and _mesh.txt set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS src/Registry_NWTC_Library_mesh.txt @@ -26,7 +24,6 @@ if (GENERATE_TYPES) file(READ src/Registry_NWTC_Library_base.txt BASE_CONTENTS) file(READ src/Registry_NWTC_Library_mesh.txt MESH_CONTENTS) file(WRITE src/Registry_NWTC_Library.txt "${BASE_CONTENTS}\n${MESH_CONTENTS}") - generate_f90_types(src/Registry_NWTC_Library_base.txt ${CMAKE_CURRENT_LIST_DIR}/src/NWTC_Library_Types.f90 -noextrap) endif() #------------------------------------------------------------------------------- @@ -151,11 +148,14 @@ if (CMAKE_BUILD_TYPE MATCHES Debug) endif() endif() +add_custom_target(nwtc_library_subs DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/NWTC_Library_Subs.f90) + # Create NWTC Library add_library(nwtclibs STATIC ${NWTC_SYS_FILE} ${NWTCLIBS_SOURCES} ) +add_dependencies(nwtclibs nwtc_library_subs) target_link_libraries(nwtclibs PUBLIC ${LAPACK_LIBRARIES} ${CMAKE_DL_LIBS} diff --git a/modules/nwtc-library/src/ModMesh_Mapping.f90 b/modules/nwtc-library/src/ModMesh_Mapping.f90 index 440c8e193a..c0ef92fbd9 100644 --- a/modules/nwtc-library/src/ModMesh_Mapping.f90 +++ b/modules/nwtc-library/src/ModMesh_Mapping.f90 @@ -5760,871 +5760,8 @@ SUBROUTINE WriteMappingTransferToFile(Mesh1_I,Mesh1_O,Mesh2_I,Mesh2_O,Map_Mod1_M END SUBROUTINE WriteMappingTransferToFile !---------------------------------------------------------------------------------------------------------------------------------- -!================================================================================================================================== -!bjj: these routines require the use of ModMesh.f90, thus they cannot be part of NWTC_Library_Types.f90: -!STARTOFREGISTRYGENERATEDFILE 'NWTC_Library_Types.f90' -! -! WARNING This file is generated automatically by the FAST registry. -! Do not edit. Your changes to this file will be lost. -! -! FAST Registry -!********************************************************************************************************************************* - -subroutine NWTC_Library_CopyMapType(SrcMapTypeData, DstMapTypeData, CtrlCode, ErrStat, ErrMsg) - type(MapType), intent(in) :: SrcMapTypeData - type(MapType), intent(inout) :: DstMapTypeData - integer(IntKi), intent(in ) :: CtrlCode - integer(IntKi), intent( out) :: ErrStat - character(*), intent( out) :: ErrMsg - character(*), parameter :: RoutineName = 'NWTC_Library_CopyMapType' - ErrStat = ErrID_None - ErrMsg = '' - DstMapTypeData%OtherMesh_Element = SrcMapTypeData%OtherMesh_Element - DstMapTypeData%distance = SrcMapTypeData%distance - DstMapTypeData%couple_arm = SrcMapTypeData%couple_arm - DstMapTypeData%shape_fn = SrcMapTypeData%shape_fn -end subroutine - -subroutine NWTC_Library_DestroyMapType(MapTypeData, ErrStat, ErrMsg) - type(MapType), intent(inout) :: MapTypeData - integer(IntKi), intent( out) :: ErrStat - character(*), intent( out) :: ErrMsg - character(*), parameter :: RoutineName = 'NWTC_Library_DestroyMapType' - ErrStat = ErrID_None - ErrMsg = '' -end subroutine - -subroutine NWTC_Library_PackMapType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf - type(MapType), intent(in) :: InData - character(*), parameter :: RoutineName = 'NWTC_Library_PackMapType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%OtherMesh_Element) - call RegPack(Buf, InData%distance) - call RegPack(Buf, InData%couple_arm) - call RegPack(Buf, InData%shape_fn) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine NWTC_Library_UnPackMapType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf - type(MapType), intent(inout) :: OutData - character(*), parameter :: RoutineName = 'NWTC_Library_UnPackMapType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%OtherMesh_Element) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%distance) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%couple_arm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%shape_fn) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine NWTC_Library_CopyMeshMapLinearizationType(SrcMeshMapLinearizationTypeData, DstMeshMapLinearizationTypeData, CtrlCode, ErrStat, ErrMsg) - type(MeshMapLinearizationType), intent(in) :: SrcMeshMapLinearizationTypeData - type(MeshMapLinearizationType), intent(inout) :: DstMeshMapLinearizationTypeData - integer(IntKi), intent(in ) :: CtrlCode - integer(IntKi), intent( out) :: ErrStat - character(*), intent( out) :: ErrMsg - integer(B8Ki) :: LB(2), UB(2) - integer(IntKi) :: ErrStat2 - character(*), parameter :: RoutineName = 'NWTC_Library_CopyMeshMapLinearizationType' - ErrStat = ErrID_None - ErrMsg = '' - if (allocated(SrcMeshMapLinearizationTypeData%mi)) then - LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%mi, kind=B8Ki) - UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%mi, kind=B8Ki) - if (.not. allocated(DstMeshMapLinearizationTypeData%mi)) then - allocate(DstMeshMapLinearizationTypeData%mi(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%mi.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstMeshMapLinearizationTypeData%mi = SrcMeshMapLinearizationTypeData%mi - end if - if (allocated(SrcMeshMapLinearizationTypeData%fx_p)) then - LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%fx_p, kind=B8Ki) - UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%fx_p, kind=B8Ki) - if (.not. allocated(DstMeshMapLinearizationTypeData%fx_p)) then - allocate(DstMeshMapLinearizationTypeData%fx_p(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%fx_p.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstMeshMapLinearizationTypeData%fx_p = SrcMeshMapLinearizationTypeData%fx_p - end if - if (allocated(SrcMeshMapLinearizationTypeData%tv_uD)) then - LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%tv_uD, kind=B8Ki) - UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%tv_uD, kind=B8Ki) - if (.not. allocated(DstMeshMapLinearizationTypeData%tv_uD)) then - allocate(DstMeshMapLinearizationTypeData%tv_uD(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%tv_uD.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstMeshMapLinearizationTypeData%tv_uD = SrcMeshMapLinearizationTypeData%tv_uD - end if - if (allocated(SrcMeshMapLinearizationTypeData%tv_uS)) then - LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%tv_uS, kind=B8Ki) - UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%tv_uS, kind=B8Ki) - if (.not. allocated(DstMeshMapLinearizationTypeData%tv_uS)) then - allocate(DstMeshMapLinearizationTypeData%tv_uS(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%tv_uS.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstMeshMapLinearizationTypeData%tv_uS = SrcMeshMapLinearizationTypeData%tv_uS - end if - if (allocated(SrcMeshMapLinearizationTypeData%ta_uD)) then - LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%ta_uD, kind=B8Ki) - UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%ta_uD, kind=B8Ki) - if (.not. allocated(DstMeshMapLinearizationTypeData%ta_uD)) then - allocate(DstMeshMapLinearizationTypeData%ta_uD(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%ta_uD.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstMeshMapLinearizationTypeData%ta_uD = SrcMeshMapLinearizationTypeData%ta_uD - end if - if (allocated(SrcMeshMapLinearizationTypeData%ta_uS)) then - LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%ta_uS, kind=B8Ki) - UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%ta_uS, kind=B8Ki) - if (.not. allocated(DstMeshMapLinearizationTypeData%ta_uS)) then - allocate(DstMeshMapLinearizationTypeData%ta_uS(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%ta_uS.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstMeshMapLinearizationTypeData%ta_uS = SrcMeshMapLinearizationTypeData%ta_uS - end if - if (allocated(SrcMeshMapLinearizationTypeData%ta_rv)) then - LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%ta_rv, kind=B8Ki) - UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%ta_rv, kind=B8Ki) - if (.not. allocated(DstMeshMapLinearizationTypeData%ta_rv)) then - allocate(DstMeshMapLinearizationTypeData%ta_rv(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%ta_rv.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstMeshMapLinearizationTypeData%ta_rv = SrcMeshMapLinearizationTypeData%ta_rv - end if - if (allocated(SrcMeshMapLinearizationTypeData%li)) then - LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%li, kind=B8Ki) - UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%li, kind=B8Ki) - if (.not. allocated(DstMeshMapLinearizationTypeData%li)) then - allocate(DstMeshMapLinearizationTypeData%li(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%li.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstMeshMapLinearizationTypeData%li = SrcMeshMapLinearizationTypeData%li - end if - if (allocated(SrcMeshMapLinearizationTypeData%M_uS)) then - LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%M_uS, kind=B8Ki) - UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%M_uS, kind=B8Ki) - if (.not. allocated(DstMeshMapLinearizationTypeData%M_uS)) then - allocate(DstMeshMapLinearizationTypeData%M_uS(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%M_uS.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstMeshMapLinearizationTypeData%M_uS = SrcMeshMapLinearizationTypeData%M_uS - end if - if (allocated(SrcMeshMapLinearizationTypeData%M_uD)) then - LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%M_uD, kind=B8Ki) - UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%M_uD, kind=B8Ki) - if (.not. allocated(DstMeshMapLinearizationTypeData%M_uD)) then - allocate(DstMeshMapLinearizationTypeData%M_uD(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%M_uD.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstMeshMapLinearizationTypeData%M_uD = SrcMeshMapLinearizationTypeData%M_uD - end if - if (allocated(SrcMeshMapLinearizationTypeData%M_f)) then - LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%M_f, kind=B8Ki) - UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%M_f, kind=B8Ki) - if (.not. allocated(DstMeshMapLinearizationTypeData%M_f)) then - allocate(DstMeshMapLinearizationTypeData%M_f(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%M_f.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstMeshMapLinearizationTypeData%M_f = SrcMeshMapLinearizationTypeData%M_f - end if -end subroutine - -subroutine NWTC_Library_DestroyMeshMapLinearizationType(MeshMapLinearizationTypeData, ErrStat, ErrMsg) - type(MeshMapLinearizationType), intent(inout) :: MeshMapLinearizationTypeData - integer(IntKi), intent( out) :: ErrStat - character(*), intent( out) :: ErrMsg - character(*), parameter :: RoutineName = 'NWTC_Library_DestroyMeshMapLinearizationType' - ErrStat = ErrID_None - ErrMsg = '' - if (allocated(MeshMapLinearizationTypeData%mi)) then - deallocate(MeshMapLinearizationTypeData%mi) - end if - if (allocated(MeshMapLinearizationTypeData%fx_p)) then - deallocate(MeshMapLinearizationTypeData%fx_p) - end if - if (allocated(MeshMapLinearizationTypeData%tv_uD)) then - deallocate(MeshMapLinearizationTypeData%tv_uD) - end if - if (allocated(MeshMapLinearizationTypeData%tv_uS)) then - deallocate(MeshMapLinearizationTypeData%tv_uS) - end if - if (allocated(MeshMapLinearizationTypeData%ta_uD)) then - deallocate(MeshMapLinearizationTypeData%ta_uD) - end if - if (allocated(MeshMapLinearizationTypeData%ta_uS)) then - deallocate(MeshMapLinearizationTypeData%ta_uS) - end if - if (allocated(MeshMapLinearizationTypeData%ta_rv)) then - deallocate(MeshMapLinearizationTypeData%ta_rv) - end if - if (allocated(MeshMapLinearizationTypeData%li)) then - deallocate(MeshMapLinearizationTypeData%li) - end if - if (allocated(MeshMapLinearizationTypeData%M_uS)) then - deallocate(MeshMapLinearizationTypeData%M_uS) - end if - if (allocated(MeshMapLinearizationTypeData%M_uD)) then - deallocate(MeshMapLinearizationTypeData%M_uD) - end if - if (allocated(MeshMapLinearizationTypeData%M_f)) then - deallocate(MeshMapLinearizationTypeData%M_f) - end if -end subroutine - -subroutine NWTC_Library_PackMeshMapLinearizationType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf - type(MeshMapLinearizationType), intent(in) :: InData - character(*), parameter :: RoutineName = 'NWTC_Library_PackMeshMapLinearizationType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%mi)) - if (allocated(InData%mi)) then - call RegPackBounds(Buf, 2, lbound(InData%mi, kind=B8Ki), ubound(InData%mi, kind=B8Ki)) - call RegPack(Buf, InData%mi) - end if - call RegPack(Buf, allocated(InData%fx_p)) - if (allocated(InData%fx_p)) then - call RegPackBounds(Buf, 2, lbound(InData%fx_p, kind=B8Ki), ubound(InData%fx_p, kind=B8Ki)) - call RegPack(Buf, InData%fx_p) - end if - call RegPack(Buf, allocated(InData%tv_uD)) - if (allocated(InData%tv_uD)) then - call RegPackBounds(Buf, 2, lbound(InData%tv_uD, kind=B8Ki), ubound(InData%tv_uD, kind=B8Ki)) - call RegPack(Buf, InData%tv_uD) - end if - call RegPack(Buf, allocated(InData%tv_uS)) - if (allocated(InData%tv_uS)) then - call RegPackBounds(Buf, 2, lbound(InData%tv_uS, kind=B8Ki), ubound(InData%tv_uS, kind=B8Ki)) - call RegPack(Buf, InData%tv_uS) - end if - call RegPack(Buf, allocated(InData%ta_uD)) - if (allocated(InData%ta_uD)) then - call RegPackBounds(Buf, 2, lbound(InData%ta_uD, kind=B8Ki), ubound(InData%ta_uD, kind=B8Ki)) - call RegPack(Buf, InData%ta_uD) - end if - call RegPack(Buf, allocated(InData%ta_uS)) - if (allocated(InData%ta_uS)) then - call RegPackBounds(Buf, 2, lbound(InData%ta_uS, kind=B8Ki), ubound(InData%ta_uS, kind=B8Ki)) - call RegPack(Buf, InData%ta_uS) - end if - call RegPack(Buf, allocated(InData%ta_rv)) - if (allocated(InData%ta_rv)) then - call RegPackBounds(Buf, 2, lbound(InData%ta_rv, kind=B8Ki), ubound(InData%ta_rv, kind=B8Ki)) - call RegPack(Buf, InData%ta_rv) - end if - call RegPack(Buf, allocated(InData%li)) - if (allocated(InData%li)) then - call RegPackBounds(Buf, 2, lbound(InData%li, kind=B8Ki), ubound(InData%li, kind=B8Ki)) - call RegPack(Buf, InData%li) - end if - call RegPack(Buf, allocated(InData%M_uS)) - if (allocated(InData%M_uS)) then - call RegPackBounds(Buf, 2, lbound(InData%M_uS, kind=B8Ki), ubound(InData%M_uS, kind=B8Ki)) - call RegPack(Buf, InData%M_uS) - end if - call RegPack(Buf, allocated(InData%M_uD)) - if (allocated(InData%M_uD)) then - call RegPackBounds(Buf, 2, lbound(InData%M_uD, kind=B8Ki), ubound(InData%M_uD, kind=B8Ki)) - call RegPack(Buf, InData%M_uD) - end if - call RegPack(Buf, allocated(InData%M_f)) - if (allocated(InData%M_f)) then - call RegPackBounds(Buf, 2, lbound(InData%M_f, kind=B8Ki), ubound(InData%M_f, kind=B8Ki)) - call RegPack(Buf, InData%M_f) - end if - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine NWTC_Library_UnPackMeshMapLinearizationType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf - type(MeshMapLinearizationType), intent(inout) :: OutData - character(*), parameter :: RoutineName = 'NWTC_Library_UnPackMeshMapLinearizationType' - integer(B8Ki) :: LB(2), UB(2) - integer(IntKi) :: stat - logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%mi)) deallocate(OutData%mi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%mi(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%mi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%mi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%fx_p)) deallocate(OutData%fx_p) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%fx_p(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fx_p.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%fx_p) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%tv_uD)) deallocate(OutData%tv_uD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%tv_uD(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%tv_uD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%tv_uD) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%tv_uS)) deallocate(OutData%tv_uS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%tv_uS(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%tv_uS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%tv_uS) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ta_uD)) deallocate(OutData%ta_uD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ta_uD(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ta_uD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ta_uD) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ta_uS)) deallocate(OutData%ta_uS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ta_uS(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ta_uS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ta_uS) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ta_rv)) deallocate(OutData%ta_rv) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ta_rv(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ta_rv.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ta_rv) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%li)) deallocate(OutData%li) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%li(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%li.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%li) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%M_uS)) deallocate(OutData%M_uS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%M_uS(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%M_uS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%M_uS) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%M_uD)) deallocate(OutData%M_uD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%M_uD(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%M_uD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%M_uD) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%M_f)) deallocate(OutData%M_f) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%M_f(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%M_f.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%M_f) - if (RegCheckErr(Buf, RoutineName)) return - end if -end subroutine - -subroutine NWTC_Library_CopyMeshMapType(SrcMeshMapTypeData, DstMeshMapTypeData, CtrlCode, ErrStat, ErrMsg) - type(MeshMapType), intent(inout) :: SrcMeshMapTypeData - type(MeshMapType), intent(inout) :: DstMeshMapTypeData - integer(IntKi), intent(in ) :: CtrlCode - integer(IntKi), intent( out) :: ErrStat - character(*), intent( out) :: ErrMsg - integer(B8Ki) :: i1, i2, i3 - integer(B8Ki) :: LB(3), UB(3) - integer(IntKi) :: ErrStat2 - character(ErrMsgLen) :: ErrMsg2 - character(*), parameter :: RoutineName = 'NWTC_Library_CopyMeshMapType' - ErrStat = ErrID_None - ErrMsg = '' - if (allocated(SrcMeshMapTypeData%MapLoads)) then - LB(1:1) = lbound(SrcMeshMapTypeData%MapLoads, kind=B8Ki) - UB(1:1) = ubound(SrcMeshMapTypeData%MapLoads, kind=B8Ki) - if (.not. allocated(DstMeshMapTypeData%MapLoads)) then - allocate(DstMeshMapTypeData%MapLoads(LB(1):UB(1)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapTypeData%MapLoads.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - do i1 = LB(1), UB(1) - call NWTC_Library_CopyMapType(SrcMeshMapTypeData%MapLoads(i1), DstMeshMapTypeData%MapLoads(i1), CtrlCode, ErrStat2, ErrMsg2) - call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - if (ErrStat >= AbortErrLev) return - end do - end if - if (allocated(SrcMeshMapTypeData%MapMotions)) then - LB(1:1) = lbound(SrcMeshMapTypeData%MapMotions, kind=B8Ki) - UB(1:1) = ubound(SrcMeshMapTypeData%MapMotions, kind=B8Ki) - if (.not. allocated(DstMeshMapTypeData%MapMotions)) then - allocate(DstMeshMapTypeData%MapMotions(LB(1):UB(1)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapTypeData%MapMotions.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - do i1 = LB(1), UB(1) - call NWTC_Library_CopyMapType(SrcMeshMapTypeData%MapMotions(i1), DstMeshMapTypeData%MapMotions(i1), CtrlCode, ErrStat2, ErrMsg2) - call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - if (ErrStat >= AbortErrLev) return - end do - end if - if (allocated(SrcMeshMapTypeData%MapSrcToAugmt)) then - LB(1:1) = lbound(SrcMeshMapTypeData%MapSrcToAugmt, kind=B8Ki) - UB(1:1) = ubound(SrcMeshMapTypeData%MapSrcToAugmt, kind=B8Ki) - if (.not. allocated(DstMeshMapTypeData%MapSrcToAugmt)) then - allocate(DstMeshMapTypeData%MapSrcToAugmt(LB(1):UB(1)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapTypeData%MapSrcToAugmt.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - do i1 = LB(1), UB(1) - call NWTC_Library_CopyMapType(SrcMeshMapTypeData%MapSrcToAugmt(i1), DstMeshMapTypeData%MapSrcToAugmt(i1), CtrlCode, ErrStat2, ErrMsg2) - call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - if (ErrStat >= AbortErrLev) return - end do - end if - call MeshCopy(SrcMeshMapTypeData%Augmented_Ln2_Src, DstMeshMapTypeData%Augmented_Ln2_Src, CtrlCode, ErrStat2, ErrMsg2 ) - call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - if (ErrStat >= AbortErrLev) return - call MeshCopy(SrcMeshMapTypeData%Lumped_Points_Src, DstMeshMapTypeData%Lumped_Points_Src, CtrlCode, ErrStat2, ErrMsg2 ) - call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - if (ErrStat >= AbortErrLev) return - if (allocated(SrcMeshMapTypeData%LoadLn2_A_Mat_Piv)) then - LB(1:1) = lbound(SrcMeshMapTypeData%LoadLn2_A_Mat_Piv, kind=B8Ki) - UB(1:1) = ubound(SrcMeshMapTypeData%LoadLn2_A_Mat_Piv, kind=B8Ki) - if (.not. allocated(DstMeshMapTypeData%LoadLn2_A_Mat_Piv)) then - allocate(DstMeshMapTypeData%LoadLn2_A_Mat_Piv(LB(1):UB(1)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapTypeData%LoadLn2_A_Mat_Piv.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstMeshMapTypeData%LoadLn2_A_Mat_Piv = SrcMeshMapTypeData%LoadLn2_A_Mat_Piv - end if - if (allocated(SrcMeshMapTypeData%DisplacedPosition)) then - LB(1:3) = lbound(SrcMeshMapTypeData%DisplacedPosition, kind=B8Ki) - UB(1:3) = ubound(SrcMeshMapTypeData%DisplacedPosition, kind=B8Ki) - if (.not. allocated(DstMeshMapTypeData%DisplacedPosition)) then - allocate(DstMeshMapTypeData%DisplacedPosition(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapTypeData%DisplacedPosition.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstMeshMapTypeData%DisplacedPosition = SrcMeshMapTypeData%DisplacedPosition - end if - if (allocated(SrcMeshMapTypeData%LoadLn2_A_Mat)) then - LB(1:2) = lbound(SrcMeshMapTypeData%LoadLn2_A_Mat, kind=B8Ki) - UB(1:2) = ubound(SrcMeshMapTypeData%LoadLn2_A_Mat, kind=B8Ki) - if (.not. allocated(DstMeshMapTypeData%LoadLn2_A_Mat)) then - allocate(DstMeshMapTypeData%LoadLn2_A_Mat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapTypeData%LoadLn2_A_Mat.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstMeshMapTypeData%LoadLn2_A_Mat = SrcMeshMapTypeData%LoadLn2_A_Mat - end if - if (allocated(SrcMeshMapTypeData%LoadLn2_F)) then - LB(1:2) = lbound(SrcMeshMapTypeData%LoadLn2_F, kind=B8Ki) - UB(1:2) = ubound(SrcMeshMapTypeData%LoadLn2_F, kind=B8Ki) - if (.not. allocated(DstMeshMapTypeData%LoadLn2_F)) then - allocate(DstMeshMapTypeData%LoadLn2_F(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapTypeData%LoadLn2_F.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstMeshMapTypeData%LoadLn2_F = SrcMeshMapTypeData%LoadLn2_F - end if - if (allocated(SrcMeshMapTypeData%LoadLn2_M)) then - LB(1:2) = lbound(SrcMeshMapTypeData%LoadLn2_M, kind=B8Ki) - UB(1:2) = ubound(SrcMeshMapTypeData%LoadLn2_M, kind=B8Ki) - if (.not. allocated(DstMeshMapTypeData%LoadLn2_M)) then - allocate(DstMeshMapTypeData%LoadLn2_M(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapTypeData%LoadLn2_M.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstMeshMapTypeData%LoadLn2_M = SrcMeshMapTypeData%LoadLn2_M - end if - call NWTC_Library_CopyMeshMapLinearizationType(SrcMeshMapTypeData%dM, DstMeshMapTypeData%dM, CtrlCode, ErrStat2, ErrMsg2) - call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - if (ErrStat >= AbortErrLev) return -end subroutine - -subroutine NWTC_Library_DestroyMeshMapType(MeshMapTypeData, ErrStat, ErrMsg) - type(MeshMapType), intent(inout) :: MeshMapTypeData - integer(IntKi), intent( out) :: ErrStat - character(*), intent( out) :: ErrMsg - integer(B8Ki) :: i1, i2, i3 - integer(B8Ki) :: LB(3), UB(3) - integer(IntKi) :: ErrStat2 - character(ErrMsgLen) :: ErrMsg2 - character(*), parameter :: RoutineName = 'NWTC_Library_DestroyMeshMapType' - ErrStat = ErrID_None - ErrMsg = '' - if (allocated(MeshMapTypeData%MapLoads)) then - LB(1:1) = lbound(MeshMapTypeData%MapLoads, kind=B8Ki) - UB(1:1) = ubound(MeshMapTypeData%MapLoads, kind=B8Ki) - do i1 = LB(1), UB(1) - call NWTC_Library_DestroyMapType(MeshMapTypeData%MapLoads(i1), ErrStat2, ErrMsg2) - call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - end do - deallocate(MeshMapTypeData%MapLoads) - end if - if (allocated(MeshMapTypeData%MapMotions)) then - LB(1:1) = lbound(MeshMapTypeData%MapMotions, kind=B8Ki) - UB(1:1) = ubound(MeshMapTypeData%MapMotions, kind=B8Ki) - do i1 = LB(1), UB(1) - call NWTC_Library_DestroyMapType(MeshMapTypeData%MapMotions(i1), ErrStat2, ErrMsg2) - call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - end do - deallocate(MeshMapTypeData%MapMotions) - end if - if (allocated(MeshMapTypeData%MapSrcToAugmt)) then - LB(1:1) = lbound(MeshMapTypeData%MapSrcToAugmt, kind=B8Ki) - UB(1:1) = ubound(MeshMapTypeData%MapSrcToAugmt, kind=B8Ki) - do i1 = LB(1), UB(1) - call NWTC_Library_DestroyMapType(MeshMapTypeData%MapSrcToAugmt(i1), ErrStat2, ErrMsg2) - call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - end do - deallocate(MeshMapTypeData%MapSrcToAugmt) - end if - call MeshDestroy( MeshMapTypeData%Augmented_Ln2_Src, ErrStat2, ErrMsg2) - call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - call MeshDestroy( MeshMapTypeData%Lumped_Points_Src, ErrStat2, ErrMsg2) - call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - if (allocated(MeshMapTypeData%LoadLn2_A_Mat_Piv)) then - deallocate(MeshMapTypeData%LoadLn2_A_Mat_Piv) - end if - if (allocated(MeshMapTypeData%DisplacedPosition)) then - deallocate(MeshMapTypeData%DisplacedPosition) - end if - if (allocated(MeshMapTypeData%LoadLn2_A_Mat)) then - deallocate(MeshMapTypeData%LoadLn2_A_Mat) - end if - if (allocated(MeshMapTypeData%LoadLn2_F)) then - deallocate(MeshMapTypeData%LoadLn2_F) - end if - if (allocated(MeshMapTypeData%LoadLn2_M)) then - deallocate(MeshMapTypeData%LoadLn2_M) - end if - call NWTC_Library_DestroyMeshMapLinearizationType(MeshMapTypeData%dM, ErrStat2, ErrMsg2) - call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) -end subroutine - -subroutine NWTC_Library_PackMeshMapType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf - type(MeshMapType), intent(in) :: InData - character(*), parameter :: RoutineName = 'NWTC_Library_PackMeshMapType' - integer(B8Ki) :: i1, i2, i3 - integer(B8Ki) :: LB(3), UB(3) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%MapLoads)) - if (allocated(InData%MapLoads)) then - call RegPackBounds(Buf, 1, lbound(InData%MapLoads, kind=B8Ki), ubound(InData%MapLoads, kind=B8Ki)) - LB(1:1) = lbound(InData%MapLoads, kind=B8Ki) - UB(1:1) = ubound(InData%MapLoads, kind=B8Ki) - do i1 = LB(1), UB(1) - call NWTC_Library_PackMapType(Buf, InData%MapLoads(i1)) - end do - end if - call RegPack(Buf, allocated(InData%MapMotions)) - if (allocated(InData%MapMotions)) then - call RegPackBounds(Buf, 1, lbound(InData%MapMotions, kind=B8Ki), ubound(InData%MapMotions, kind=B8Ki)) - LB(1:1) = lbound(InData%MapMotions, kind=B8Ki) - UB(1:1) = ubound(InData%MapMotions, kind=B8Ki) - do i1 = LB(1), UB(1) - call NWTC_Library_PackMapType(Buf, InData%MapMotions(i1)) - end do - end if - call RegPack(Buf, allocated(InData%MapSrcToAugmt)) - if (allocated(InData%MapSrcToAugmt)) then - call RegPackBounds(Buf, 1, lbound(InData%MapSrcToAugmt, kind=B8Ki), ubound(InData%MapSrcToAugmt, kind=B8Ki)) - LB(1:1) = lbound(InData%MapSrcToAugmt, kind=B8Ki) - UB(1:1) = ubound(InData%MapSrcToAugmt, kind=B8Ki) - do i1 = LB(1), UB(1) - call NWTC_Library_PackMapType(Buf, InData%MapSrcToAugmt(i1)) - end do - end if - call MeshPack(Buf, InData%Augmented_Ln2_Src) - call MeshPack(Buf, InData%Lumped_Points_Src) - call RegPack(Buf, allocated(InData%LoadLn2_A_Mat_Piv)) - if (allocated(InData%LoadLn2_A_Mat_Piv)) then - call RegPackBounds(Buf, 1, lbound(InData%LoadLn2_A_Mat_Piv, kind=B8Ki), ubound(InData%LoadLn2_A_Mat_Piv, kind=B8Ki)) - call RegPack(Buf, InData%LoadLn2_A_Mat_Piv) - end if - call RegPack(Buf, allocated(InData%DisplacedPosition)) - if (allocated(InData%DisplacedPosition)) then - call RegPackBounds(Buf, 3, lbound(InData%DisplacedPosition, kind=B8Ki), ubound(InData%DisplacedPosition, kind=B8Ki)) - call RegPack(Buf, InData%DisplacedPosition) - end if - call RegPack(Buf, allocated(InData%LoadLn2_A_Mat)) - if (allocated(InData%LoadLn2_A_Mat)) then - call RegPackBounds(Buf, 2, lbound(InData%LoadLn2_A_Mat, kind=B8Ki), ubound(InData%LoadLn2_A_Mat, kind=B8Ki)) - call RegPack(Buf, InData%LoadLn2_A_Mat) - end if - call RegPack(Buf, allocated(InData%LoadLn2_F)) - if (allocated(InData%LoadLn2_F)) then - call RegPackBounds(Buf, 2, lbound(InData%LoadLn2_F, kind=B8Ki), ubound(InData%LoadLn2_F, kind=B8Ki)) - call RegPack(Buf, InData%LoadLn2_F) - end if - call RegPack(Buf, allocated(InData%LoadLn2_M)) - if (allocated(InData%LoadLn2_M)) then - call RegPackBounds(Buf, 2, lbound(InData%LoadLn2_M, kind=B8Ki), ubound(InData%LoadLn2_M, kind=B8Ki)) - call RegPack(Buf, InData%LoadLn2_M) - end if - call NWTC_Library_PackMeshMapLinearizationType(Buf, InData%dM) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine NWTC_Library_UnPackMeshMapType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf - type(MeshMapType), intent(inout) :: OutData - character(*), parameter :: RoutineName = 'NWTC_Library_UnPackMeshMapType' - integer(B8Ki) :: i1, i2, i3 - integer(B8Ki) :: LB(3), UB(3) - integer(IntKi) :: stat - logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%MapLoads)) deallocate(OutData%MapLoads) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MapLoads(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MapLoads.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMapType(Buf, OutData%MapLoads(i1)) ! MapLoads - end do - end if - if (allocated(OutData%MapMotions)) deallocate(OutData%MapMotions) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MapMotions(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MapMotions.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMapType(Buf, OutData%MapMotions(i1)) ! MapMotions - end do - end if - if (allocated(OutData%MapSrcToAugmt)) deallocate(OutData%MapSrcToAugmt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MapSrcToAugmt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MapSrcToAugmt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMapType(Buf, OutData%MapSrcToAugmt(i1)) ! MapSrcToAugmt - end do - end if - call MeshUnpack(Buf, OutData%Augmented_Ln2_Src) ! Augmented_Ln2_Src - call MeshUnpack(Buf, OutData%Lumped_Points_Src) ! Lumped_Points_Src - if (allocated(OutData%LoadLn2_A_Mat_Piv)) deallocate(OutData%LoadLn2_A_Mat_Piv) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LoadLn2_A_Mat_Piv(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LoadLn2_A_Mat_Piv.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LoadLn2_A_Mat_Piv) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DisplacedPosition)) deallocate(OutData%DisplacedPosition) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DisplacedPosition(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DisplacedPosition.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DisplacedPosition) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LoadLn2_A_Mat)) deallocate(OutData%LoadLn2_A_Mat) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LoadLn2_A_Mat(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LoadLn2_A_Mat.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LoadLn2_A_Mat) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LoadLn2_F)) deallocate(OutData%LoadLn2_F) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LoadLn2_F(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LoadLn2_F.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LoadLn2_F) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LoadLn2_M)) deallocate(OutData%LoadLn2_M) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LoadLn2_M(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LoadLn2_M.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LoadLn2_M) - if (RegCheckErr(Buf, RoutineName)) return - end if - call NWTC_Library_UnpackMeshMapLinearizationType(Buf, OutData%dM) ! dM -end subroutine - -!********************************************************************************************************************************* -!ENDOFREGISTRYGENERATEDFILE - +! Include the registry generated subroutines for mesh types +include "NWTC_Library_Subs.f90" !---------------------------------------------------------------------------------------------------------------------------------- END MODULE ModMesh_Mapping diff --git a/modules/openfast-registry/src/main.cpp b/modules/openfast-registry/src/main.cpp index a38844b0bf..445fcc4700 100644 --- a/modules/openfast-registry/src/main.cpp +++ b/modules/openfast-registry/src/main.cpp @@ -13,6 +13,7 @@ Usage: openfast_registry registryfile [options] -or- -h this summary -I look for usefrom files in directory "dir" -O generate types files in directory "dir" + -inc generate types file to be included in another file -noextrap do not generate ModName_Input_ExtrapInterp or ModName_Output_ExtrapInterp routines -D define symbol for conditional evaluation inside registry file -ccode generate additional code for interfacing with C/C++ @@ -85,6 +86,10 @@ int main(int argc, char *argv[]) reg.include_dirs.push_back(*it); } } + else if ((arg.compare("-subs")) == 0 || (arg.compare("/subs")) == 0) + { + reg.gen_subs = true; + } else if ((arg.compare("-template")) == 0 || (arg.compare("-registry")) == 0 || (arg.compare("/template")) == 0 || (arg.compare("/registry")) == 0) { diff --git a/modules/openfast-registry/src/registry.hpp b/modules/openfast-registry/src/registry.hpp index 5d760e949a..696f411c40 100644 --- a/modules/openfast-registry/src/registry.hpp +++ b/modules/openfast-registry/src/registry.hpp @@ -188,6 +188,14 @@ struct Field else if (init_value.compare("-") != 0) { this->init_value = init_value; + if (tolower(init_value).compare("f") == 0) + { + this->init_value = ".false."; + } + else if (tolower(init_value).compare("t") == 0) + { + this->init_value = ".true."; + } } } @@ -432,6 +440,7 @@ struct Registry std::map, ci_less> data_types; bool gen_c_code = false; bool no_extrap_interp = false; + bool gen_subs = false; Registry() { @@ -536,6 +545,7 @@ struct Registry void gen_module_files(std::string const &out_dir); void gen_fortran_module(const Module &mod, const std::string &out_dir); void gen_c_module(const Module &mod, const std::string &out_dir); + void gen_fortran_subs(std::ostream &w, const Module &mod); }; #endif diff --git a/modules/openfast-registry/src/registry_gen_fortran.cpp b/modules/openfast-registry/src/registry_gen_fortran.cpp index d3cd46b45d..41da71c801 100644 --- a/modules/openfast-registry/src/registry_gen_fortran.cpp +++ b/modules/openfast-registry/src/registry_gen_fortran.cpp @@ -63,6 +63,10 @@ void Registry::gen_fortran_module(const Module &mod, const std::string &out_dir) { // Create file name and path auto file_name = mod.name + "_Types.f90"; + if (this->gen_subs) + { + file_name = mod.name + "_Subs.f90"; + } auto file_path = out_dir + "/" + file_name; std::cerr << "generating " << file_name << std::endl; bool is_NWTC_Library = false; @@ -71,10 +75,25 @@ void Registry::gen_fortran_module(const Module &mod, const std::string &out_dir) std::ofstream w(file_path); if (!w) { - std::cerr << "Error creating module file: '" << file_path << "'" << std::endl; + std::cerr << "Error creating module file: '" << file_path << "'\n"; exit(EXIT_FAILURE); } + // If flag set to generate subroutines only (e.g. for inclusing in ModMesh_Mappings.f90) + // write header, subs, and footer to file, then return + if (this->gen_subs) + { + w << std::regex_replace("!STARTOFREGISTRYGENERATEDFILE 'ModuleName_Subs.f90'\n", std::regex("ModuleName"), mod.name); + w << "!\n! WARNING This file is generated automatically by the FAST registry.\n"; + w << "! Do not edit. Your changes to this file will be lost.\n"; + w << "!\n! FAST Registry'\n"; + + this->gen_fortran_subs(w, mod); + + w << "!ENDOFREGISTRYGENERATEDFILE\n"; + return; + } + // Write preamble w << std::regex_replace(FAST_preamble, std::regex("ModuleName"), mod.name); @@ -274,6 +293,16 @@ void Registry::gen_fortran_module(const Module &mod, const std::string &out_dir) w << "CONTAINS\n"; + // Generate subroutines for this module + this->gen_fortran_subs(w, mod); + + // Write module footer + w << "END MODULE " << mod.name << "_Types\n"; + w << "!ENDOFREGISTRYGENERATEDFILE\n"; +} + +void Registry::gen_fortran_subs(std::ostream &w, const Module &mod) +{ // Loop through derived data types for (auto &dt_name : mod.ddt_names) { @@ -311,9 +340,6 @@ void Registry::gen_fortran_module(const Module &mod, const std::string &out_dir) gen_ExtrapInterp(w, mod, "InputType", "DbKi", 1); gen_ExtrapInterp(w, mod, "OutputType", "DbKi", 1); } - - w << "END MODULE " << mod.name << "_Types\n"; - w << "!ENDOFREGISTRYGENERATEDFILE\n"; } void gen_copy(std::ostream &w, const Module &mod, const DataType::Derived &ddt, From 3913c5ea8c14f5635e2e9342450d8d2f3df5185e Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Fri, 12 Jan 2024 17:03:53 +0000 Subject: [PATCH 04/10] Use new Pack/Unpack routines for alloc and pointers --- .../src/registry_gen_fortran.cpp | 131 +++++++++++++----- 1 file changed, 100 insertions(+), 31 deletions(-) diff --git a/modules/openfast-registry/src/registry_gen_fortran.cpp b/modules/openfast-registry/src/registry_gen_fortran.cpp index 41da71c801..91c1f393e9 100644 --- a/modules/openfast-registry/src/registry_gen_fortran.cpp +++ b/modules/openfast-registry/src/registry_gen_fortran.cpp @@ -398,6 +398,43 @@ void gen_copy(std::ostream &w, const Module &mod, const DataType::Derived &ddt, continue; } + // If allocatable field that is not a derived type, use Fortran 2003 automatic + // allocation to duplicate the source variable + if (field.is_allocatable && field.data_type->tag != DataType::Tag::Derived) + { + // If source is allocated or associated + w << indent << "if (" << alloc_assoc << "(" << src << ")) then"; + indent += " "; + + // Copy values + w << indent << dst << " = " << src; + + // If C code and field isn't a pointer, copy data to C object + if (gen_c_code && !field.is_pointer) + { + if (field.rank == 0) // scalar of any type OR a character array + { + std::string tmp = ddt.name_short + "Data%C_obj%" + field.name; + w << indent << "Dst" << tmp << " = Src" << tmp; + } + } + + // End if dst alloc/assoc + indent.erase(indent.size() - 3); + w << indent << "else if (" << alloc_assoc << "(" << dst << ")) then"; + if (field.is_pointer && !field.is_target) + { + w << indent << " nullify(" << dst << ")"; + } + else + { + w << indent << " deallocate(" << dst << ")"; + } + w << indent << "end if"; + + continue; + } + // If field is allocatable if (field.is_allocatable) { @@ -650,9 +687,9 @@ void gen_pack(std::ostream &w, const Module &mod, const DataType::Derived &ddt, bool has_ddt_arr = std::any_of(ddt.fields.begin(), ddt.fields.end(), [](Field f) { return f.data_type->tag == DataType::Tag::Derived && f.rank > 0; }); - w << indent << "subroutine " << routine_name << "(Buf, Indata)"; + w << indent << "subroutine " << routine_name << "(RF, Indata)"; indent += " "; - w << indent << "type(PackBuffer), intent(inout) :: Buf"; + w << indent << "type(RegFile), intent(inout) :: RF"; w << indent << "type(" << ddt.type_fortran << "), intent(in) :: InData"; w << indent << "character(*), parameter :: RoutineName = '" << routine_name << "'"; if (has_ddt_arr) @@ -667,12 +704,12 @@ void gen_pack(std::ostream &w, const Module &mod, const DataType::Derived &ddt, w << indent << "logical :: PtrInIndex"; } - w << indent << "if (Buf%ErrStat >= AbortErrLev) return"; + w << indent << "if (RF%ErrStat >= AbortErrLev) return"; if (gen_c_code) { w << indent << "if (c_associated(InData%C_obj%object)) then"; - w << indent << " call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName)"; + w << indent << " call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName)"; w << indent << " return"; w << indent << "end if"; } @@ -685,19 +722,34 @@ void gen_pack(std::ostream &w, const Module &mod, const DataType::Derived &ddt, // w << indent << "! " << field.name; + // If the field is not derived, is allocatable, is not a pointer, + // use RegPackAlloc function and continue + if (field.data_type->tag != DataType::Tag::Derived && field.is_allocatable) + { + if (field.is_pointer) + { + w << indent << "call RegPackPtr(RF, " << var << ")"; + } + else + { + w << indent << "call RegPackAlloc(RF, " << var << ")"; + } + continue; + } + if (field.is_allocatable) { - w << indent << "call RegPack(Buf, " << assoc_alloc << "(" << var << "))"; + w << indent << "call RegPack(RF, " << assoc_alloc << "(" << var << "))"; w << indent << "if (" << assoc_alloc << "(" << var << ")) then"; indent += " "; if (field.rank > 0) { - w << indent << "call RegPackBounds(Buf, " << field.rank << ", lbound(" << var << ", kind=B8Ki), ubound(" << var << ", kind=B8Ki))"; + w << indent << "call RegPackBounds(RF, " << field.rank << ", lbound(" << var << ", kind=B8Ki), ubound(" << var << ", kind=B8Ki))"; } } if (field.is_pointer) { - w << indent << "call RegPackPointer(Buf, c_loc(" << var << "), PtrInIndex)"; + w << indent << "call RegPackPointer(RF, c_loc(" << var << "), PtrInIndex)"; w << indent << "if (.not. PtrInIndex) then"; indent += " "; } @@ -721,16 +773,16 @@ void gen_pack(std::ostream &w, const Module &mod, const DataType::Derived &ddt, if (field.data_type->derived.name.compare("MeshType") == 0) { - w << indent << "call MeshPack(Buf, " << field_dims << ") "; + w << indent << "call MeshPack(RF, " << field_dims << ") "; } else if (field.data_type->derived.name.compare("DLL_Type") == 0) { - w << indent << "call DLLTypePack(Buf, " << field_dims << ") "; + w << indent << "call DLLTypePack(RF, " << field_dims << ") "; } else { w << indent << "call " << field.data_type->derived.module->nickname << "_Pack" - << field.data_type->derived.name_short << "(Buf, " << field_dims << ") "; + << field.data_type->derived.name_short << "(RF, " << field_dims << ") "; } for (int d = field.rank; d >= 1; d--) @@ -741,8 +793,8 @@ void gen_pack(std::ostream &w, const Module &mod, const DataType::Derived &ddt, } else { - // Intrinsic types are handled by generic Pack method on buffer - w << indent << "call RegPack(Buf, " << var << ")"; + // Intrinsic types are handled by generic registry file Pack method + w << indent << "call RegPack(RF, " << var << ")"; } if (field.is_pointer) @@ -759,7 +811,7 @@ void gen_pack(std::ostream &w, const Module &mod, const DataType::Derived &ddt, } // Check for pack errors at end of routine - w << indent << "if (RegCheckErr(Buf, RoutineName)) return"; + w << indent << "if (RegCheckErr(RF, RoutineName)) return"; indent.erase(indent.size() - 3); w << indent << "end subroutine"; @@ -778,9 +830,9 @@ void gen_unpack(std::ostream &w, const Module &mod, const DataType::Derived &ddt bool has_ddt_arr = std::any_of(ddt.fields.begin(), ddt.fields.end(), [](Field f) { return f.data_type->tag == DataType::Tag::Derived && f.rank > 0; }); - w << indent << "subroutine " << routine_name << "(Buf, OutData)"; + w << indent << "subroutine " << routine_name << "(RF, OutData)"; indent += " "; - w << indent << "type(PackBuffer), intent(inout) :: Buf"; + w << indent << "type(RegFile), intent(inout) :: RF"; w << indent << "type(" << ddt.type_fortran << "), intent(inout) :: OutData"; w << indent << "character(*), parameter :: RoutineName = '" << routine_name << "'"; if (has_ddt_arr) @@ -804,7 +856,7 @@ void gen_unpack(std::ostream &w, const Module &mod, const DataType::Derived &ddt w << indent << "integer(B8Ki) :: PtrIdx"; w << indent << "type(c_ptr) :: Ptr"; } - w << indent << "if (Buf%ErrStat /= ErrID_None) return"; + w << indent << "if (RF%ErrStat /= ErrID_None) return"; // BJJ: TODO: if there are C types, we're going to have to associate with C data structures.... @@ -819,24 +871,41 @@ void gen_unpack(std::ostream &w, const Module &mod, const DataType::Derived &ddt // w << indent << "! " << field.name << ""; + // If the field is not derived, is allocatable, is not a pointer, + // use RegUnpackAlloc function and continue + if (field.data_type->tag != DataType::Tag::Derived && field.is_allocatable) + { + if (field.is_pointer) + { + w << indent << "call RegUnpackPtr(RF, " << var << ")" + << "; if (RegCheckErr(RF, RoutineName)) return"; + } + else + { + w << indent << "call RegUnpackAlloc(RF, " << var << ")" + << "; if (RegCheckErr(RF, RoutineName)) return"; + } + continue; + } + if (field.is_allocatable) { w << indent << "if (" << assoc_alloc << "(" << var << ")) deallocate(" << var << ")"; - w << indent << "call RegUnpack(Buf, IsAllocAssoc)"; - w << indent << "if (RegCheckErr(Buf, RoutineName)) return"; + w << indent << "call RegUnpack(RF, IsAllocAssoc)" + << "; if (RegCheckErr(RF, RoutineName)) return"; w << indent << "if (IsAllocAssoc) then"; indent += " "; if (field.rank > 0) { - w << indent << "call RegUnpackBounds(Buf, " << field.rank << ", LB, UB)"; - w << indent << "if (RegCheckErr(Buf, RoutineName)) return"; + w << indent << "call RegUnpackBounds(RF, " << field.rank << ", LB, UB)" + << "; if (RegCheckErr(RF, RoutineName)) return"; } } if (field.is_pointer) { - w << indent << "call RegUnpackPointer(Buf, Ptr, PtrIdx)"; - w << indent << "if (RegCheckErr(Buf, RoutineName)) return"; + w << indent << "call RegUnpackPointer(RF, Ptr, PtrIdx)" + << "; if (RegCheckErr(RF, RoutineName)) return"; w << indent << "if (c_associated(Ptr)) then"; if (field.rank == 0) { @@ -863,15 +932,15 @@ void gen_unpack(std::ostream &w, const Module &mod, const DataType::Derived &ddt ":UB(" + std::to_string(d) + ")" + (d < field.rank ? "," : ")"); w << indent << "allocate(" << var << dims << ",stat=stat)"; w << indent << "if (stat /= 0) then "; - w << indent << " call SetErrStat(ErrID_Fatal, 'Error allocating " << var << ".', Buf%ErrStat, Buf%ErrMsg, RoutineName)"; + w << indent << " call SetErrStat(ErrID_Fatal, 'Error allocating " << var << ".', RF%ErrStat, RF%ErrMsg, RoutineName)"; w << indent << " return"; w << indent << "end if"; } - // If this is a pointer, set pointer in buffer pointer index + // If this is a pointer, set pointer in registry file pointer index if (field.is_pointer) { - w << indent << "Buf%Pointers(PtrIdx) = c_loc(" << var << ")"; + w << indent << "RF%Pointers(PtrIdx) = c_loc(" << var << ")"; } // bjj: this needs to be updated if we've got multiple dimension arrays @@ -903,16 +972,16 @@ void gen_unpack(std::ostream &w, const Module &mod, const DataType::Derived &ddt if (field.data_type->derived.name.compare("MeshType") == 0) { - w << indent << "call MeshUnpack(Buf, " << var_dims << ") ! " << field.name << " "; + w << indent << "call MeshUnpack(RF, " << var_dims << ") ! " << field.name << " "; } else if (field.data_type->derived.name.compare("DLL_Type") == 0) { - w << indent << "call DLLTypeUnpack(Buf, " << var_dims << ") ! " << field.name << " "; + w << indent << "call DLLTypeUnpack(RF, " << var_dims << ") ! " << field.name << " "; } else { w << indent << "call " << field.data_type->derived.module->nickname << "_Unpack" - << field.data_type->derived.name_short << "(Buf, " << var_dims << ") ! " << field.name << " "; + << field.data_type->derived.name_short << "(RF, " << var_dims << ") ! " << field.name << " "; } for (int d = field.rank; d >= 1; d--) @@ -923,9 +992,9 @@ void gen_unpack(std::ostream &w, const Module &mod, const DataType::Derived &ddt } else { - // Intrinsic types are handled by generic unpack method on buffer - w << indent << "call RegUnpack(Buf, " << var << ")"; - w << indent << "if (RegCheckErr(Buf, RoutineName)) return"; + // Intrinsic types are handled by generic registry file unpack method + w << indent << "call RegUnpack(RF, " << var << ")" + << "; if (RegCheckErr(RF, RoutineName)) return"; // need to move scalars and strings to the %c_obj% type, too! // compare with copy routine From 63fefa02421962e94bd917c5b9656df1f02d0564 Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Fri, 12 Jan 2024 18:58:31 +0000 Subject: [PATCH 05/10] Update all types files --- .../fast-farm/src/FASTWrapper_Types.f90 | 40 +- glue-codes/fast-farm/src/FAST_Farm_Types.f90 | 32 +- modules/aerodyn/src/AeroAcoustics_Types.f90 | 2978 ++----- modules/aerodyn/src/AeroDyn_Driver_Types.f90 | 985 +-- modules/aerodyn/src/AeroDyn_Inflow_Types.f90 | 788 +- modules/aerodyn/src/AeroDyn_Types.f90 | 3792 +++----- modules/aerodyn/src/AirfoilInfo_Types.f90 | 867 +- modules/aerodyn/src/BEMT_Types.f90 | 1811 +--- modules/aerodyn/src/DBEMT_Types.f90 | 428 +- modules/aerodyn/src/FVW_Types.f90 | 2787 ++---- modules/aerodyn/src/UnsteadyAero_Types.f90 | 1953 +---- modules/aerodyn14/src/AeroDyn14_Types.f90 | 3771 ++------ modules/aerodyn14/src/DWM_Types.f90 | 2195 ++--- modules/awae/src/AWAE_Types.f90 | 1962 +---- modules/beamdyn/src/BeamDyn_Types.f90 | 3210 ++----- modules/elastodyn/src/ElastoDyn_Types.f90 | 7680 ++++------------- .../src/ExternalInflow_Types.f90 | 1212 +-- modules/extptfm/src/ExtPtfm_MCKF_Types.f90 | 1246 +-- modules/feamooring/src/FEAMooring_Types.f90 | 1930 +---- modules/hydrodyn/src/Conv_Radiation_Types.f90 | 385 +- modules/hydrodyn/src/HydroDyn_Types.f90 | 1379 +-- modules/hydrodyn/src/Morison_Types.f90 | 3543 ++------ modules/hydrodyn/src/SS_Excitation_Types.f90 | 475 +- modules/hydrodyn/src/SS_Radiation_Types.f90 | 441 +- modules/hydrodyn/src/WAMIT2_Types.f90 | 345 +- modules/hydrodyn/src/WAMIT_Types.f90 | 731 +- modules/icedyn/src/IceDyn_Types.f90 | 1201 +-- modules/icefloe/src/icefloe/IceFloe_Types.f90 | 424 +- .../inflowwind/src/IfW_FlowField_Types.f90 | 991 +-- .../inflowwind/src/InflowWind_IO_Types.f90 | 515 +- modules/inflowwind/src/InflowWind_Types.f90 | 1117 +-- modules/inflowwind/src/Lidar_Types.f90 | 514 +- modules/map/src/MAP_Fortran_Types.f90 | 141 +- modules/map/src/MAP_Types.f90 | 1344 +-- modules/moordyn/src/MoorDyn_Types.f90 | 4004 ++------- modules/nwtc-library/CMakeLists.txt | 1 + modules/nwtc-library/src/ModVar.f90 | 984 +++ modules/nwtc-library/src/NWTC_IO.f90 | 34 +- modules/nwtc-library/src/NWTC_Library.f90 | 1 + .../nwtc-library/src/NWTC_Library_Subs.f90 | 577 ++ .../nwtc-library/src/NWTC_Library_Types.f90 | 1253 ++- .../src/Registry_NWTC_Library.txt | 102 +- .../src/Registry_NWTC_Library_base.txt | 84 + modules/openfast-library/src/FAST_Subs.f90 | 48 +- modules/openfast-library/src/FAST_Types.f90 | 6050 +++++-------- .../src/registry_gen_fortran.cpp | 37 - .../src/OrcaFlexInterface_Types.f90 | 370 +- modules/seastate/src/Current_Types.f90 | 161 +- .../seastate/src/SeaSt_WaveField_Types.f90 | 438 +- .../seastate/src/SeaState_Interp_Types.f90 | 125 +- modules/seastate/src/SeaState_Types.f90 | 906 +- modules/seastate/src/Waves2_Types.f90 | 247 +- modules/seastate/src/Waves_Types.f90 | 282 +- modules/servodyn/src/ServoDyn_Types.f90 | 4844 +++-------- modules/servodyn/src/StrucCtrl_Types.f90 | 1695 +--- modules/subdyn/src/SubDyn_Types.f90 | 3735 ++------ .../supercontroller/src/SCDataEx_Types.f90 | 212 +- .../src/SuperController_Types.f90 | 556 +- .../wakedynamics/src/WakeDynamics_Types.f90 | 1736 +--- 59 files changed, 22514 insertions(+), 59181 deletions(-) create mode 100644 modules/nwtc-library/src/ModVar.f90 create mode 100644 modules/nwtc-library/src/NWTC_Library_Subs.f90 diff --git a/glue-codes/fast-farm/src/FASTWrapper_Types.f90 b/glue-codes/fast-farm/src/FASTWrapper_Types.f90 index 4b56e2cc0d..2473bcccd4 100644 --- a/glue-codes/fast-farm/src/FASTWrapper_Types.f90 +++ b/glue-codes/fast-farm/src/FASTWrapper_Types.f90 @@ -203,7 +203,7 @@ subroutine FWrap_DestroyInitInput(InitInputData, ErrStat, ErrMsg) end subroutine subroutine FWrap_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'FWrap_PackInitInput' logical :: PtrInIndex @@ -251,7 +251,7 @@ subroutine FWrap_PackInitInput(Buf, Indata) end subroutine subroutine FWrap_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FWrap_UnPackInitInput' integer(B8Ki) :: LB(5), UB(5) @@ -387,7 +387,7 @@ subroutine FWrap_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end subroutine subroutine FWrap_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'FWrap_PackInitOutput' if (Buf%ErrStat >= AbortErrLev) return @@ -397,7 +397,7 @@ subroutine FWrap_PackInitOutput(Buf, Indata) end subroutine subroutine FWrap_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FWrap_UnPackInitOutput' if (Buf%ErrStat /= ErrID_None) return @@ -428,7 +428,7 @@ subroutine FWrap_DestroyContState(ContStateData, ErrStat, ErrMsg) end subroutine subroutine FWrap_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'FWrap_PackContState' if (Buf%ErrStat >= AbortErrLev) return @@ -437,7 +437,7 @@ subroutine FWrap_PackContState(Buf, Indata) end subroutine subroutine FWrap_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FWrap_UnPackContState' if (Buf%ErrStat /= ErrID_None) return @@ -467,7 +467,7 @@ subroutine FWrap_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) end subroutine subroutine FWrap_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'FWrap_PackDiscState' if (Buf%ErrStat >= AbortErrLev) return @@ -476,7 +476,7 @@ subroutine FWrap_PackDiscState(Buf, Indata) end subroutine subroutine FWrap_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FWrap_UnPackDiscState' if (Buf%ErrStat /= ErrID_None) return @@ -506,7 +506,7 @@ subroutine FWrap_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) end subroutine subroutine FWrap_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'FWrap_PackConstrState' if (Buf%ErrStat >= AbortErrLev) return @@ -515,7 +515,7 @@ subroutine FWrap_PackConstrState(Buf, Indata) end subroutine subroutine FWrap_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FWrap_UnPackConstrState' if (Buf%ErrStat /= ErrID_None) return @@ -545,7 +545,7 @@ subroutine FWrap_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) end subroutine subroutine FWrap_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'FWrap_PackOtherState' if (Buf%ErrStat >= AbortErrLev) return @@ -554,7 +554,7 @@ subroutine FWrap_PackOtherState(Buf, Indata) end subroutine subroutine FWrap_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FWrap_UnPackOtherState' if (Buf%ErrStat /= ErrID_None) return @@ -696,7 +696,7 @@ subroutine FWrap_DestroyMisc(MiscData, ErrStat, ErrMsg) end subroutine subroutine FWrap_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'FWrap_PackMisc' integer(B8Ki) :: i1 @@ -743,7 +743,7 @@ subroutine FWrap_PackMisc(Buf, Indata) end subroutine subroutine FWrap_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FWrap_UnPackMisc' integer(B8Ki) :: i1 @@ -855,7 +855,7 @@ subroutine FWrap_DestroyParam(ParamData, ErrStat, ErrMsg) end subroutine subroutine FWrap_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'FWrap_PackParam' if (Buf%ErrStat >= AbortErrLev) return @@ -871,7 +871,7 @@ subroutine FWrap_PackParam(Buf, Indata) end subroutine subroutine FWrap_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FWrap_UnPackParam' integer(B8Ki) :: LB(1), UB(1) @@ -953,7 +953,7 @@ subroutine FWrap_DestroyInput(InputData, ErrStat, ErrMsg) end subroutine subroutine FWrap_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'FWrap_PackInput' if (Buf%ErrStat >= AbortErrLev) return @@ -971,7 +971,7 @@ subroutine FWrap_PackInput(Buf, Indata) end subroutine subroutine FWrap_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FWrap_UnPackInput' integer(B8Ki) :: LB(1), UB(1) @@ -1083,7 +1083,7 @@ subroutine FWrap_DestroyOutput(OutputData, ErrStat, ErrMsg) end subroutine subroutine FWrap_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'FWrap_PackOutput' if (Buf%ErrStat >= AbortErrLev) return @@ -1113,7 +1113,7 @@ subroutine FWrap_PackOutput(Buf, Indata) end subroutine subroutine FWrap_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FWrap_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FWrap_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) diff --git a/glue-codes/fast-farm/src/FAST_Farm_Types.f90 b/glue-codes/fast-farm/src/FAST_Farm_Types.f90 index c7bdc1d425..57ec7c003b 100644 --- a/glue-codes/fast-farm/src/FAST_Farm_Types.f90 +++ b/glue-codes/fast-farm/src/FAST_Farm_Types.f90 @@ -406,7 +406,7 @@ subroutine Farm_DestroyParam(ParamData, ErrStat, ErrMsg) end subroutine subroutine Farm_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(Farm_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'Farm_PackParam' integer(B8Ki) :: i1, i2 @@ -508,7 +508,7 @@ subroutine Farm_PackParam(Buf, Indata) end subroutine subroutine Farm_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(Farm_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Farm_UnPackParam' integer(B8Ki) :: i1, i2 @@ -847,7 +847,7 @@ subroutine Farm_DestroyMisc(MiscData, ErrStat, ErrMsg) end subroutine subroutine Farm_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(Farm_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'Farm_PackMisc' integer(B8Ki) :: i1, i2 @@ -891,7 +891,7 @@ subroutine Farm_PackMisc(Buf, Indata) end subroutine subroutine Farm_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(Farm_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Farm_UnPackMisc' integer(B8Ki) :: i1, i2 @@ -1041,7 +1041,7 @@ subroutine Farm_DestroyFASTWrapper_Data(FASTWrapper_DataData, ErrStat, ErrMsg) end subroutine subroutine Farm_PackFASTWrapper_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FASTWrapper_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'Farm_PackFASTWrapper_Data' if (Buf%ErrStat >= AbortErrLev) return @@ -1058,7 +1058,7 @@ subroutine Farm_PackFASTWrapper_Data(Buf, Indata) end subroutine subroutine Farm_UnPackFASTWrapper_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(FASTWrapper_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Farm_UnPackFASTWrapper_Data' if (Buf%ErrStat /= ErrID_None) return @@ -1140,7 +1140,7 @@ subroutine Farm_DestroyWakeDynamics_Data(WakeDynamics_DataData, ErrStat, ErrMsg) end subroutine subroutine Farm_PackWakeDynamics_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(WakeDynamics_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'Farm_PackWakeDynamics_Data' if (Buf%ErrStat >= AbortErrLev) return @@ -1157,7 +1157,7 @@ subroutine Farm_PackWakeDynamics_Data(Buf, Indata) end subroutine subroutine Farm_UnPackWakeDynamics_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(WakeDynamics_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Farm_UnPackWakeDynamics_Data' if (Buf%ErrStat /= ErrID_None) return @@ -1239,7 +1239,7 @@ subroutine Farm_DestroyAWAE_Data(AWAE_DataData, ErrStat, ErrMsg) end subroutine subroutine Farm_PackAWAE_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(AWAE_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'Farm_PackAWAE_Data' if (Buf%ErrStat >= AbortErrLev) return @@ -1256,7 +1256,7 @@ subroutine Farm_PackAWAE_Data(Buf, Indata) end subroutine subroutine Farm_UnPackAWAE_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(AWAE_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Farm_UnPackAWAE_Data' if (Buf%ErrStat /= ErrID_None) return @@ -1339,7 +1339,7 @@ subroutine Farm_DestroySC_Data(SC_DataData, ErrStat, ErrMsg) end subroutine subroutine Farm_PackSC_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(SC_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'Farm_PackSC_Data' if (Buf%ErrStat >= AbortErrLev) return @@ -1357,7 +1357,7 @@ subroutine Farm_PackSC_Data(Buf, Indata) end subroutine subroutine Farm_UnPackSC_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(SC_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Farm_UnPackSC_Data' if (Buf%ErrStat /= ErrID_None) return @@ -1485,7 +1485,7 @@ subroutine Farm_DestroyMD_Data(MD_DataData, ErrStat, ErrMsg) end subroutine subroutine Farm_PackMD_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(MD_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'Farm_PackMD_Data' integer(B8Ki) :: i1 @@ -1518,7 +1518,7 @@ subroutine Farm_PackMD_Data(Buf, Indata) end subroutine subroutine Farm_UnPackMD_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(MD_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Farm_UnPackMD_Data' integer(B8Ki) :: i1 @@ -1671,7 +1671,7 @@ subroutine Farm_DestroyAll_FastFarm_Data(All_FastFarm_DataData, ErrStat, ErrMsg) end subroutine subroutine Farm_PackAll_FastFarm_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(All_FastFarm_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'Farm_PackAll_FastFarm_Data' integer(B8Ki) :: i1 @@ -1704,7 +1704,7 @@ subroutine Farm_PackAll_FastFarm_Data(Buf, Indata) end subroutine subroutine Farm_UnPackAll_FastFarm_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + type(RegFile), intent(inout) :: Buf type(All_FastFarm_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Farm_UnPackAll_FastFarm_Data' integer(B8Ki) :: i1 diff --git a/modules/aerodyn/src/AeroAcoustics_Types.f90 b/modules/aerodyn/src/AeroAcoustics_Types.f90 index 991e744710..5829bb13f3 100644 --- a/modules/aerodyn/src/AeroAcoustics_Types.f90 +++ b/modules/aerodyn/src/AeroAcoustics_Types.f90 @@ -301,25 +301,23 @@ subroutine AA_DestroyBladePropsType(BladePropsTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AA_PackBladePropsType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_PackBladePropsType(RF, Indata) + type(RegFile), intent(inout) :: RF type(AA_BladePropsType), intent(in) :: InData character(*), parameter :: RoutineName = 'AA_PackBladePropsType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%TEThick) - call RegPack(Buf, InData%TEAngle) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%TEThick) + call RegPack(RF, InData%TEAngle) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AA_UnPackBladePropsType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_UnPackBladePropsType(RF, OutData) + type(RegFile), intent(inout) :: RF type(AA_BladePropsType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AA_UnPackBladePropsType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%TEThick) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEAngle) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%TEThick); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEAngle); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AA_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -428,128 +426,67 @@ subroutine AA_DestroyInitInput(InitInputData, ErrStat, ErrMsg) end if end subroutine -subroutine AA_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AA_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AA_PackInitInput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%InputFile) - call RegPack(Buf, InData%NumBlades) - call RegPack(Buf, InData%NumBlNds) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, allocated(InData%BlSpn)) - if (allocated(InData%BlSpn)) then - call RegPackBounds(Buf, 2, lbound(InData%BlSpn, kind=B8Ki), ubound(InData%BlSpn, kind=B8Ki)) - call RegPack(Buf, InData%BlSpn) - end if - call RegPack(Buf, allocated(InData%BlChord)) - if (allocated(InData%BlChord)) then - call RegPackBounds(Buf, 2, lbound(InData%BlChord, kind=B8Ki), ubound(InData%BlChord, kind=B8Ki)) - call RegPack(Buf, InData%BlChord) - end if - call RegPack(Buf, InData%AirDens) - call RegPack(Buf, InData%KinVisc) - call RegPack(Buf, InData%SpdSound) - call RegPack(Buf, InData%HubHeight) - call RegPack(Buf, allocated(InData%BlAFID)) - if (allocated(InData%BlAFID)) then - call RegPackBounds(Buf, 2, lbound(InData%BlAFID, kind=B8Ki), ubound(InData%BlAFID, kind=B8Ki)) - call RegPack(Buf, InData%BlAFID) - end if - call RegPack(Buf, allocated(InData%AFInfo)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%InputFile) + call RegPack(RF, InData%NumBlades) + call RegPack(RF, InData%NumBlNds) + call RegPack(RF, InData%RootName) + call RegPackAlloc(RF, InData%BlSpn) + call RegPackAlloc(RF, InData%BlChord) + call RegPack(RF, InData%AirDens) + call RegPack(RF, InData%KinVisc) + call RegPack(RF, InData%SpdSound) + call RegPack(RF, InData%HubHeight) + call RegPackAlloc(RF, InData%BlAFID) + call RegPack(RF, allocated(InData%AFInfo)) if (allocated(InData%AFInfo)) then - call RegPackBounds(Buf, 1, lbound(InData%AFInfo, kind=B8Ki), ubound(InData%AFInfo, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%AFInfo, kind=B8Ki), ubound(InData%AFInfo, kind=B8Ki)) LB(1:1) = lbound(InData%AFInfo, kind=B8Ki) UB(1:1) = ubound(InData%AFInfo, kind=B8Ki) do i1 = LB(1), UB(1) - call AFI_PackParam(Buf, InData%AFInfo(i1)) + call AFI_PackParam(RF, InData%AFInfo(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AA_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AA_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AA_UnPackInitInput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%InputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBlades) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBlNds) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BlSpn)) deallocate(OutData%BlSpn) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlSpn(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlSpn.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlSpn) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlChord)) deallocate(OutData%BlChord) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlChord(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlChord.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlChord) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%AirDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%KinVisc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SpdSound) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubHeight) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BlAFID)) deallocate(OutData%BlAFID) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlAFID(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlAFID.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlAFID) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%InputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBlades); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBlNds); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlSpn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlChord); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AirDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%KinVisc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SpdSound); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubHeight); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlAFID); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%AFInfo)) deallocate(OutData%AFInfo) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%AFInfo(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AFInfo.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AFInfo.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AFI_UnpackParam(Buf, OutData%AFInfo(i1)) ! AFInfo + call AFI_UnpackParam(RF, OutData%AFInfo(i1)) ! AFInfo end do end if end subroutine @@ -706,182 +643,44 @@ subroutine AA_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AA_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AA_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AA_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - call RegPack(Buf, allocated(InData%WriteOutputHdrforPE)) - if (allocated(InData%WriteOutputHdrforPE)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdrforPE, kind=B8Ki), ubound(InData%WriteOutputHdrforPE, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdrforPE) - end if - call RegPack(Buf, allocated(InData%WriteOutputUntforPE)) - if (allocated(InData%WriteOutputUntforPE)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUntforPE, kind=B8Ki), ubound(InData%WriteOutputUntforPE, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUntforPE) - end if - call RegPack(Buf, allocated(InData%WriteOutputHdrSep)) - if (allocated(InData%WriteOutputHdrSep)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdrSep, kind=B8Ki), ubound(InData%WriteOutputHdrSep, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdrSep) - end if - call RegPack(Buf, allocated(InData%WriteOutputUntSep)) - if (allocated(InData%WriteOutputUntSep)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUntSep, kind=B8Ki), ubound(InData%WriteOutputUntSep, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUntSep) - end if - call RegPack(Buf, allocated(InData%WriteOutputHdrNodes)) - if (allocated(InData%WriteOutputHdrNodes)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdrNodes, kind=B8Ki), ubound(InData%WriteOutputHdrNodes, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdrNodes) - end if - call RegPack(Buf, allocated(InData%WriteOutputUntNodes)) - if (allocated(InData%WriteOutputUntNodes)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUntNodes, kind=B8Ki), ubound(InData%WriteOutputUntNodes, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUntNodes) - end if - call RegPack(Buf, InData%delim) - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call RegPack(Buf, InData%AirDens) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + call RegPackAlloc(RF, InData%WriteOutputHdrforPE) + call RegPackAlloc(RF, InData%WriteOutputUntforPE) + call RegPackAlloc(RF, InData%WriteOutputHdrSep) + call RegPackAlloc(RF, InData%WriteOutputUntSep) + call RegPackAlloc(RF, InData%WriteOutputHdrNodes) + call RegPackAlloc(RF, InData%WriteOutputUntNodes) + call RegPack(RF, InData%delim) + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call RegPack(RF, InData%AirDens) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AA_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AA_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AA_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputHdrforPE)) deallocate(OutData%WriteOutputHdrforPE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdrforPE(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdrforPE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdrforPE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUntforPE)) deallocate(OutData%WriteOutputUntforPE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUntforPE(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUntforPE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUntforPE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputHdrSep)) deallocate(OutData%WriteOutputHdrSep) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdrSep(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdrSep.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdrSep) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUntSep)) deallocate(OutData%WriteOutputUntSep) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUntSep(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUntSep.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUntSep) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputHdrNodes)) deallocate(OutData%WriteOutputHdrNodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdrNodes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdrNodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdrNodes) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUntNodes)) deallocate(OutData%WriteOutputUntNodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUntNodes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUntNodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUntNodes) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%delim) - if (RegCheckErr(Buf, RoutineName)) return - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver - call RegUnpack(Buf, OutData%AirDens) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdrforPE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUntforPE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdrSep); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUntSep); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdrNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUntNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%delim); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver + call RegUnpack(RF, OutData%AirDens); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AA_CopyInputFile(SrcInputFileData, DstInputFileData, CtrlCode, ErrStat, ErrMsg) @@ -1185,403 +984,123 @@ subroutine AA_DestroyInputFile(InputFileData, ErrStat, ErrMsg) end if end subroutine -subroutine AA_PackInputFile(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_PackInputFile(RF, Indata) + type(RegFile), intent(inout) :: RF type(AA_InputFile), intent(in) :: InData character(*), parameter :: RoutineName = 'AA_PackInputFile' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT_AA) - call RegPack(Buf, InData%IBLUNT) - call RegPack(Buf, InData%ILAM) - call RegPack(Buf, InData%ITIP) - call RegPack(Buf, InData%ITRIP) - call RegPack(Buf, InData%ITURB) - call RegPack(Buf, InData%IInflow) - call RegPack(Buf, InData%X_BLMethod) - call RegPack(Buf, InData%TICalcMeth) - call RegPack(Buf, InData%NReListBL) - call RegPack(Buf, InData%aweightflag) - call RegPack(Buf, InData%ROUND) - call RegPack(Buf, InData%ALPRAT) - call RegPack(Buf, InData%AA_Bl_Prcntge) - call RegPack(Buf, InData%NrObsLoc) - call RegPack(Buf, allocated(InData%ObsX)) - if (allocated(InData%ObsX)) then - call RegPackBounds(Buf, 1, lbound(InData%ObsX, kind=B8Ki), ubound(InData%ObsX, kind=B8Ki)) - call RegPack(Buf, InData%ObsX) - end if - call RegPack(Buf, allocated(InData%ObsY)) - if (allocated(InData%ObsY)) then - call RegPackBounds(Buf, 1, lbound(InData%ObsY, kind=B8Ki), ubound(InData%ObsY, kind=B8Ki)) - call RegPack(Buf, InData%ObsY) - end if - call RegPack(Buf, allocated(InData%ObsZ)) - if (allocated(InData%ObsZ)) then - call RegPackBounds(Buf, 1, lbound(InData%ObsZ, kind=B8Ki), ubound(InData%ObsZ, kind=B8Ki)) - call RegPack(Buf, InData%ObsZ) - end if - call RegPack(Buf, allocated(InData%BladeProps)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT_AA) + call RegPack(RF, InData%IBLUNT) + call RegPack(RF, InData%ILAM) + call RegPack(RF, InData%ITIP) + call RegPack(RF, InData%ITRIP) + call RegPack(RF, InData%ITURB) + call RegPack(RF, InData%IInflow) + call RegPack(RF, InData%X_BLMethod) + call RegPack(RF, InData%TICalcMeth) + call RegPack(RF, InData%NReListBL) + call RegPack(RF, InData%aweightflag) + call RegPack(RF, InData%ROUND) + call RegPack(RF, InData%ALPRAT) + call RegPack(RF, InData%AA_Bl_Prcntge) + call RegPack(RF, InData%NrObsLoc) + call RegPackAlloc(RF, InData%ObsX) + call RegPackAlloc(RF, InData%ObsY) + call RegPackAlloc(RF, InData%ObsZ) + call RegPack(RF, allocated(InData%BladeProps)) if (allocated(InData%BladeProps)) then - call RegPackBounds(Buf, 1, lbound(InData%BladeProps, kind=B8Ki), ubound(InData%BladeProps, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BladeProps, kind=B8Ki), ubound(InData%BladeProps, kind=B8Ki)) LB(1:1) = lbound(InData%BladeProps, kind=B8Ki) UB(1:1) = ubound(InData%BladeProps, kind=B8Ki) do i1 = LB(1), UB(1) - call AA_PackBladePropsType(Buf, InData%BladeProps(i1)) + call AA_PackBladePropsType(RF, InData%BladeProps(i1)) end do end if - call RegPack(Buf, InData%NrOutFile) - call RegPack(Buf, allocated(InData%AAoutfile)) - if (allocated(InData%AAoutfile)) then - call RegPackBounds(Buf, 1, lbound(InData%AAoutfile, kind=B8Ki), ubound(InData%AAoutfile, kind=B8Ki)) - call RegPack(Buf, InData%AAoutfile) - end if - call RegPack(Buf, InData%TICalcTabFile) - call RegPack(Buf, InData%FTitle) - call RegPack(Buf, InData%AAStart) - call RegPack(Buf, InData%Lturb) - call RegPack(Buf, InData%AvgV) - call RegPack(Buf, allocated(InData%ReListBL)) - if (allocated(InData%ReListBL)) then - call RegPackBounds(Buf, 1, lbound(InData%ReListBL, kind=B8Ki), ubound(InData%ReListBL, kind=B8Ki)) - call RegPack(Buf, InData%ReListBL) - end if - call RegPack(Buf, allocated(InData%AoAListBL)) - if (allocated(InData%AoAListBL)) then - call RegPackBounds(Buf, 1, lbound(InData%AoAListBL, kind=B8Ki), ubound(InData%AoAListBL, kind=B8Ki)) - call RegPack(Buf, InData%AoAListBL) - end if - call RegPack(Buf, allocated(InData%Pres_DispThick)) - if (allocated(InData%Pres_DispThick)) then - call RegPackBounds(Buf, 3, lbound(InData%Pres_DispThick, kind=B8Ki), ubound(InData%Pres_DispThick, kind=B8Ki)) - call RegPack(Buf, InData%Pres_DispThick) - end if - call RegPack(Buf, allocated(InData%Suct_DispThick)) - if (allocated(InData%Suct_DispThick)) then - call RegPackBounds(Buf, 3, lbound(InData%Suct_DispThick, kind=B8Ki), ubound(InData%Suct_DispThick, kind=B8Ki)) - call RegPack(Buf, InData%Suct_DispThick) - end if - call RegPack(Buf, allocated(InData%Pres_BLThick)) - if (allocated(InData%Pres_BLThick)) then - call RegPackBounds(Buf, 3, lbound(InData%Pres_BLThick, kind=B8Ki), ubound(InData%Pres_BLThick, kind=B8Ki)) - call RegPack(Buf, InData%Pres_BLThick) - end if - call RegPack(Buf, allocated(InData%Suct_BLThick)) - if (allocated(InData%Suct_BLThick)) then - call RegPackBounds(Buf, 3, lbound(InData%Suct_BLThick, kind=B8Ki), ubound(InData%Suct_BLThick, kind=B8Ki)) - call RegPack(Buf, InData%Suct_BLThick) - end if - call RegPack(Buf, allocated(InData%Pres_Cf)) - if (allocated(InData%Pres_Cf)) then - call RegPackBounds(Buf, 3, lbound(InData%Pres_Cf, kind=B8Ki), ubound(InData%Pres_Cf, kind=B8Ki)) - call RegPack(Buf, InData%Pres_Cf) - end if - call RegPack(Buf, allocated(InData%Suct_Cf)) - if (allocated(InData%Suct_Cf)) then - call RegPackBounds(Buf, 3, lbound(InData%Suct_Cf, kind=B8Ki), ubound(InData%Suct_Cf, kind=B8Ki)) - call RegPack(Buf, InData%Suct_Cf) - end if - call RegPack(Buf, allocated(InData%Pres_EdgeVelRat)) - if (allocated(InData%Pres_EdgeVelRat)) then - call RegPackBounds(Buf, 3, lbound(InData%Pres_EdgeVelRat, kind=B8Ki), ubound(InData%Pres_EdgeVelRat, kind=B8Ki)) - call RegPack(Buf, InData%Pres_EdgeVelRat) - end if - call RegPack(Buf, allocated(InData%Suct_EdgeVelRat)) - if (allocated(InData%Suct_EdgeVelRat)) then - call RegPackBounds(Buf, 3, lbound(InData%Suct_EdgeVelRat, kind=B8Ki), ubound(InData%Suct_EdgeVelRat, kind=B8Ki)) - call RegPack(Buf, InData%Suct_EdgeVelRat) - end if - call RegPack(Buf, allocated(InData%TI_Grid_In)) - if (allocated(InData%TI_Grid_In)) then - call RegPackBounds(Buf, 2, lbound(InData%TI_Grid_In, kind=B8Ki), ubound(InData%TI_Grid_In, kind=B8Ki)) - call RegPack(Buf, InData%TI_Grid_In) - end if - call RegPack(Buf, InData%dz_turb_in) - call RegPack(Buf, InData%dy_turb_in) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%NrOutFile) + call RegPackAlloc(RF, InData%AAoutfile) + call RegPack(RF, InData%TICalcTabFile) + call RegPack(RF, InData%FTitle) + call RegPack(RF, InData%AAStart) + call RegPack(RF, InData%Lturb) + call RegPack(RF, InData%AvgV) + call RegPackAlloc(RF, InData%ReListBL) + call RegPackAlloc(RF, InData%AoAListBL) + call RegPackAlloc(RF, InData%Pres_DispThick) + call RegPackAlloc(RF, InData%Suct_DispThick) + call RegPackAlloc(RF, InData%Pres_BLThick) + call RegPackAlloc(RF, InData%Suct_BLThick) + call RegPackAlloc(RF, InData%Pres_Cf) + call RegPackAlloc(RF, InData%Suct_Cf) + call RegPackAlloc(RF, InData%Pres_EdgeVelRat) + call RegPackAlloc(RF, InData%Suct_EdgeVelRat) + call RegPackAlloc(RF, InData%TI_Grid_In) + call RegPack(RF, InData%dz_turb_in) + call RegPack(RF, InData%dy_turb_in) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AA_UnPackInputFile(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_UnPackInputFile(RF, OutData) + type(RegFile), intent(inout) :: RF type(AA_InputFile), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AA_UnPackInputFile' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT_AA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%IBLUNT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ILAM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ITIP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ITRIP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ITURB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%IInflow) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%X_BLMethod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TICalcMeth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NReListBL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%aweightflag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ROUND) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ALPRAT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AA_Bl_Prcntge) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NrObsLoc) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%ObsX)) deallocate(OutData%ObsX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ObsX(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ObsX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ObsX) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ObsY)) deallocate(OutData%ObsY) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ObsY(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ObsY.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ObsY) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ObsZ)) deallocate(OutData%ObsZ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ObsZ(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ObsZ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ObsZ) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DT_AA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IBLUNT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ILAM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ITIP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ITRIP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ITURB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IInflow); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%X_BLMethod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TICalcMeth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NReListBL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%aweightflag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ROUND); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ALPRAT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AA_Bl_Prcntge); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NrObsLoc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ObsX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ObsY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ObsZ); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%BladeProps)) deallocate(OutData%BladeProps) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BladeProps(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeProps.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeProps.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AA_UnpackBladePropsType(Buf, OutData%BladeProps(i1)) ! BladeProps + call AA_UnpackBladePropsType(RF, OutData%BladeProps(i1)) ! BladeProps end do end if - call RegUnpack(Buf, OutData%NrOutFile) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%AAoutfile)) deallocate(OutData%AAoutfile) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AAoutfile(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AAoutfile.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AAoutfile) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%TICalcTabFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FTitle) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AAStart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Lturb) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AvgV) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%ReListBL)) deallocate(OutData%ReListBL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ReListBL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ReListBL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ReListBL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AoAListBL)) deallocate(OutData%AoAListBL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AoAListBL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AoAListBL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AoAListBL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Pres_DispThick)) deallocate(OutData%Pres_DispThick) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Pres_DispThick(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Pres_DispThick.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Pres_DispThick) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Suct_DispThick)) deallocate(OutData%Suct_DispThick) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Suct_DispThick(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Suct_DispThick.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Suct_DispThick) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Pres_BLThick)) deallocate(OutData%Pres_BLThick) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Pres_BLThick(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Pres_BLThick.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Pres_BLThick) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Suct_BLThick)) deallocate(OutData%Suct_BLThick) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Suct_BLThick(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Suct_BLThick.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Suct_BLThick) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Pres_Cf)) deallocate(OutData%Pres_Cf) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Pres_Cf(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Pres_Cf.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Pres_Cf) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Suct_Cf)) deallocate(OutData%Suct_Cf) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Suct_Cf(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Suct_Cf.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Suct_Cf) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Pres_EdgeVelRat)) deallocate(OutData%Pres_EdgeVelRat) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Pres_EdgeVelRat(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Pres_EdgeVelRat.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Pres_EdgeVelRat) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Suct_EdgeVelRat)) deallocate(OutData%Suct_EdgeVelRat) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Suct_EdgeVelRat(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Suct_EdgeVelRat.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Suct_EdgeVelRat) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TI_Grid_In)) deallocate(OutData%TI_Grid_In) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TI_Grid_In(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TI_Grid_In.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TI_Grid_In) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%dz_turb_in) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dy_turb_in) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NrOutFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AAoutfile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TICalcTabFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FTitle); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AAStart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Lturb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AvgV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ReListBL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AoAListBL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Pres_DispThick); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Suct_DispThick); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Pres_BLThick); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Suct_BLThick); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Pres_Cf); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Suct_Cf); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Pres_EdgeVelRat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Suct_EdgeVelRat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TI_Grid_In); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dz_turb_in); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dy_turb_in); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AA_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -1605,22 +1124,21 @@ subroutine AA_DestroyContState(ContStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AA_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(AA_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AA_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyContState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyContState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AA_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(AA_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AA_UnPackContState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyContState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyContState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AA_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -1810,231 +1328,44 @@ subroutine AA_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) end if end subroutine -subroutine AA_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(AA_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AA_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%MeanVrel)) - if (allocated(InData%MeanVrel)) then - call RegPackBounds(Buf, 2, lbound(InData%MeanVrel, kind=B8Ki), ubound(InData%MeanVrel, kind=B8Ki)) - call RegPack(Buf, InData%MeanVrel) - end if - call RegPack(Buf, allocated(InData%VrelSq)) - if (allocated(InData%VrelSq)) then - call RegPackBounds(Buf, 2, lbound(InData%VrelSq, kind=B8Ki), ubound(InData%VrelSq, kind=B8Ki)) - call RegPack(Buf, InData%VrelSq) - end if - call RegPack(Buf, allocated(InData%TIVrel)) - if (allocated(InData%TIVrel)) then - call RegPackBounds(Buf, 2, lbound(InData%TIVrel, kind=B8Ki), ubound(InData%TIVrel, kind=B8Ki)) - call RegPack(Buf, InData%TIVrel) - end if - call RegPack(Buf, allocated(InData%VrelStore)) - if (allocated(InData%VrelStore)) then - call RegPackBounds(Buf, 3, lbound(InData%VrelStore, kind=B8Ki), ubound(InData%VrelStore, kind=B8Ki)) - call RegPack(Buf, InData%VrelStore) - end if - call RegPack(Buf, allocated(InData%TIVx)) - if (allocated(InData%TIVx)) then - call RegPackBounds(Buf, 2, lbound(InData%TIVx, kind=B8Ki), ubound(InData%TIVx, kind=B8Ki)) - call RegPack(Buf, InData%TIVx) - end if - call RegPack(Buf, allocated(InData%MeanVxVyVz)) - if (allocated(InData%MeanVxVyVz)) then - call RegPackBounds(Buf, 2, lbound(InData%MeanVxVyVz, kind=B8Ki), ubound(InData%MeanVxVyVz, kind=B8Ki)) - call RegPack(Buf, InData%MeanVxVyVz) - end if - call RegPack(Buf, allocated(InData%VxSq)) - if (allocated(InData%VxSq)) then - call RegPackBounds(Buf, 2, lbound(InData%VxSq, kind=B8Ki), ubound(InData%VxSq, kind=B8Ki)) - call RegPack(Buf, InData%VxSq) - end if - call RegPack(Buf, allocated(InData%allregcounter)) - if (allocated(InData%allregcounter)) then - call RegPackBounds(Buf, 2, lbound(InData%allregcounter, kind=B8Ki), ubound(InData%allregcounter, kind=B8Ki)) - call RegPack(Buf, InData%allregcounter) - end if - call RegPack(Buf, allocated(InData%VxSqRegion)) - if (allocated(InData%VxSqRegion)) then - call RegPackBounds(Buf, 2, lbound(InData%VxSqRegion, kind=B8Ki), ubound(InData%VxSqRegion, kind=B8Ki)) - call RegPack(Buf, InData%VxSqRegion) - end if - call RegPack(Buf, allocated(InData%RegVxStor)) - if (allocated(InData%RegVxStor)) then - call RegPackBounds(Buf, 3, lbound(InData%RegVxStor, kind=B8Ki), ubound(InData%RegVxStor, kind=B8Ki)) - call RegPack(Buf, InData%RegVxStor) - end if - call RegPack(Buf, allocated(InData%RegionTIDelete)) - if (allocated(InData%RegionTIDelete)) then - call RegPackBounds(Buf, 2, lbound(InData%RegionTIDelete, kind=B8Ki), ubound(InData%RegionTIDelete, kind=B8Ki)) - call RegPack(Buf, InData%RegionTIDelete) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%MeanVrel) + call RegPackAlloc(RF, InData%VrelSq) + call RegPackAlloc(RF, InData%TIVrel) + call RegPackAlloc(RF, InData%VrelStore) + call RegPackAlloc(RF, InData%TIVx) + call RegPackAlloc(RF, InData%MeanVxVyVz) + call RegPackAlloc(RF, InData%VxSq) + call RegPackAlloc(RF, InData%allregcounter) + call RegPackAlloc(RF, InData%VxSqRegion) + call RegPackAlloc(RF, InData%RegVxStor) + call RegPackAlloc(RF, InData%RegionTIDelete) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AA_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(AA_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AA_UnPackDiscState' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%MeanVrel)) deallocate(OutData%MeanVrel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MeanVrel(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MeanVrel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MeanVrel) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%VrelSq)) deallocate(OutData%VrelSq) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%VrelSq(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VrelSq.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%VrelSq) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TIVrel)) deallocate(OutData%TIVrel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TIVrel(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TIVrel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TIVrel) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%VrelStore)) deallocate(OutData%VrelStore) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%VrelStore(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VrelStore.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%VrelStore) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TIVx)) deallocate(OutData%TIVx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TIVx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TIVx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TIVx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MeanVxVyVz)) deallocate(OutData%MeanVxVyVz) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MeanVxVyVz(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MeanVxVyVz.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MeanVxVyVz) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%VxSq)) deallocate(OutData%VxSq) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%VxSq(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VxSq.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%VxSq) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%allregcounter)) deallocate(OutData%allregcounter) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%allregcounter(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%allregcounter.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%allregcounter) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%VxSqRegion)) deallocate(OutData%VxSqRegion) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%VxSqRegion(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VxSqRegion.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%VxSqRegion) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RegVxStor)) deallocate(OutData%RegVxStor) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RegVxStor(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RegVxStor.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RegVxStor) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RegionTIDelete)) deallocate(OutData%RegionTIDelete) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RegionTIDelete(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RegionTIDelete.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RegionTIDelete) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%MeanVrel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%VrelSq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TIVrel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%VrelStore); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TIVx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MeanVxVyVz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%VxSq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%allregcounter); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%VxSqRegion); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RegVxStor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RegionTIDelete); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AA_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -2058,22 +1389,21 @@ subroutine AA_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AA_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(AA_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AA_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstrState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AA_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(AA_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AA_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstrState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AA_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -2097,22 +1427,21 @@ subroutine AA_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AA_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(AA_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AA_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyOtherState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyOtherState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AA_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(AA_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AA_UnPackOtherState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyOtherState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyOtherState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AA_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -2455,499 +1784,139 @@ subroutine AA_DestroyMisc(MiscData, ErrStat, ErrMsg) end if end subroutine -subroutine AA_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(AA_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'AA_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%AllOuts)) - if (allocated(InData%AllOuts)) then - call RegPackBounds(Buf, 1, lbound(InData%AllOuts, kind=B8Ki), ubound(InData%AllOuts, kind=B8Ki)) - call RegPack(Buf, InData%AllOuts) - end if - call RegPack(Buf, allocated(InData%ChordAngleTE)) - if (allocated(InData%ChordAngleTE)) then - call RegPackBounds(Buf, 3, lbound(InData%ChordAngleTE, kind=B8Ki), ubound(InData%ChordAngleTE, kind=B8Ki)) - call RegPack(Buf, InData%ChordAngleTE) - end if - call RegPack(Buf, allocated(InData%SpanAngleTE)) - if (allocated(InData%SpanAngleTE)) then - call RegPackBounds(Buf, 3, lbound(InData%SpanAngleTE, kind=B8Ki), ubound(InData%SpanAngleTE, kind=B8Ki)) - call RegPack(Buf, InData%SpanAngleTE) - end if - call RegPack(Buf, allocated(InData%ChordAngleLE)) - if (allocated(InData%ChordAngleLE)) then - call RegPackBounds(Buf, 3, lbound(InData%ChordAngleLE, kind=B8Ki), ubound(InData%ChordAngleLE, kind=B8Ki)) - call RegPack(Buf, InData%ChordAngleLE) - end if - call RegPack(Buf, allocated(InData%SpanAngleLE)) - if (allocated(InData%SpanAngleLE)) then - call RegPackBounds(Buf, 3, lbound(InData%SpanAngleLE, kind=B8Ki), ubound(InData%SpanAngleLE, kind=B8Ki)) - call RegPack(Buf, InData%SpanAngleLE) - end if - call RegPack(Buf, allocated(InData%rTEtoObserve)) - if (allocated(InData%rTEtoObserve)) then - call RegPackBounds(Buf, 3, lbound(InData%rTEtoObserve, kind=B8Ki), ubound(InData%rTEtoObserve, kind=B8Ki)) - call RegPack(Buf, InData%rTEtoObserve) - end if - call RegPack(Buf, allocated(InData%rLEtoObserve)) - if (allocated(InData%rLEtoObserve)) then - call RegPackBounds(Buf, 3, lbound(InData%rLEtoObserve, kind=B8Ki), ubound(InData%rLEtoObserve, kind=B8Ki)) - call RegPack(Buf, InData%rLEtoObserve) - end if - call RegPack(Buf, allocated(InData%LE_Location)) - if (allocated(InData%LE_Location)) then - call RegPackBounds(Buf, 3, lbound(InData%LE_Location, kind=B8Ki), ubound(InData%LE_Location, kind=B8Ki)) - call RegPack(Buf, InData%LE_Location) - end if - call RegPack(Buf, InData%RotSpeedAoA) - call RegPack(Buf, allocated(InData%SPLLBL)) - if (allocated(InData%SPLLBL)) then - call RegPackBounds(Buf, 1, lbound(InData%SPLLBL, kind=B8Ki), ubound(InData%SPLLBL, kind=B8Ki)) - call RegPack(Buf, InData%SPLLBL) - end if - call RegPack(Buf, allocated(InData%SPLP)) - if (allocated(InData%SPLP)) then - call RegPackBounds(Buf, 1, lbound(InData%SPLP, kind=B8Ki), ubound(InData%SPLP, kind=B8Ki)) - call RegPack(Buf, InData%SPLP) - end if - call RegPack(Buf, allocated(InData%SPLS)) - if (allocated(InData%SPLS)) then - call RegPackBounds(Buf, 1, lbound(InData%SPLS, kind=B8Ki), ubound(InData%SPLS, kind=B8Ki)) - call RegPack(Buf, InData%SPLS) - end if - call RegPack(Buf, allocated(InData%SPLALPH)) - if (allocated(InData%SPLALPH)) then - call RegPackBounds(Buf, 1, lbound(InData%SPLALPH, kind=B8Ki), ubound(InData%SPLALPH, kind=B8Ki)) - call RegPack(Buf, InData%SPLALPH) - end if - call RegPack(Buf, allocated(InData%SPLTBL)) - if (allocated(InData%SPLTBL)) then - call RegPackBounds(Buf, 1, lbound(InData%SPLTBL, kind=B8Ki), ubound(InData%SPLTBL, kind=B8Ki)) - call RegPack(Buf, InData%SPLTBL) - end if - call RegPack(Buf, allocated(InData%SPLTIP)) - if (allocated(InData%SPLTIP)) then - call RegPackBounds(Buf, 1, lbound(InData%SPLTIP, kind=B8Ki), ubound(InData%SPLTIP, kind=B8Ki)) - call RegPack(Buf, InData%SPLTIP) - end if - call RegPack(Buf, allocated(InData%SPLTI)) - if (allocated(InData%SPLTI)) then - call RegPackBounds(Buf, 1, lbound(InData%SPLTI, kind=B8Ki), ubound(InData%SPLTI, kind=B8Ki)) - call RegPack(Buf, InData%SPLTI) - end if - call RegPack(Buf, allocated(InData%SPLTIGui)) - if (allocated(InData%SPLTIGui)) then - call RegPackBounds(Buf, 1, lbound(InData%SPLTIGui, kind=B8Ki), ubound(InData%SPLTIGui, kind=B8Ki)) - call RegPack(Buf, InData%SPLTIGui) - end if - call RegPack(Buf, allocated(InData%SPLBLUNT)) - if (allocated(InData%SPLBLUNT)) then - call RegPackBounds(Buf, 1, lbound(InData%SPLBLUNT, kind=B8Ki), ubound(InData%SPLBLUNT, kind=B8Ki)) - call RegPack(Buf, InData%SPLBLUNT) - end if - call RegPack(Buf, allocated(InData%CfVar)) - if (allocated(InData%CfVar)) then - call RegPackBounds(Buf, 1, lbound(InData%CfVar, kind=B8Ki), ubound(InData%CfVar, kind=B8Ki)) - call RegPack(Buf, InData%CfVar) - end if - call RegPack(Buf, allocated(InData%d99Var)) - if (allocated(InData%d99Var)) then - call RegPackBounds(Buf, 1, lbound(InData%d99Var, kind=B8Ki), ubound(InData%d99Var, kind=B8Ki)) - call RegPack(Buf, InData%d99Var) - end if - call RegPack(Buf, allocated(InData%dStarVar)) - if (allocated(InData%dStarVar)) then - call RegPackBounds(Buf, 1, lbound(InData%dStarVar, kind=B8Ki), ubound(InData%dStarVar, kind=B8Ki)) - call RegPack(Buf, InData%dStarVar) - end if - call RegPack(Buf, allocated(InData%EdgeVelVar)) - if (allocated(InData%EdgeVelVar)) then - call RegPackBounds(Buf, 1, lbound(InData%EdgeVelVar, kind=B8Ki), ubound(InData%EdgeVelVar, kind=B8Ki)) - call RegPack(Buf, InData%EdgeVelVar) - end if - call RegPack(Buf, InData%speccou) - call RegPack(Buf, InData%filesopen) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%AllOuts) + call RegPackAlloc(RF, InData%ChordAngleTE) + call RegPackAlloc(RF, InData%SpanAngleTE) + call RegPackAlloc(RF, InData%ChordAngleLE) + call RegPackAlloc(RF, InData%SpanAngleLE) + call RegPackAlloc(RF, InData%rTEtoObserve) + call RegPackAlloc(RF, InData%rLEtoObserve) + call RegPackAlloc(RF, InData%LE_Location) + call RegPack(RF, InData%RotSpeedAoA) + call RegPackAlloc(RF, InData%SPLLBL) + call RegPackAlloc(RF, InData%SPLP) + call RegPackAlloc(RF, InData%SPLS) + call RegPackAlloc(RF, InData%SPLALPH) + call RegPackAlloc(RF, InData%SPLTBL) + call RegPackAlloc(RF, InData%SPLTIP) + call RegPackAlloc(RF, InData%SPLTI) + call RegPackAlloc(RF, InData%SPLTIGui) + call RegPackAlloc(RF, InData%SPLBLUNT) + call RegPackAlloc(RF, InData%CfVar) + call RegPackAlloc(RF, InData%d99Var) + call RegPackAlloc(RF, InData%dStarVar) + call RegPackAlloc(RF, InData%EdgeVelVar) + call RegPack(RF, InData%speccou) + call RegPack(RF, InData%filesopen) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AA_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(AA_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AA_UnPackMisc' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%AllOuts)) deallocate(OutData%AllOuts) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AllOuts(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AllOuts.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%AllOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ChordAngleTE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SpanAngleTE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ChordAngleLE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SpanAngleLE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rTEtoObserve); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rLEtoObserve); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LE_Location); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotSpeedAoA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SPLLBL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SPLP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SPLS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SPLALPH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SPLTBL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SPLTIP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SPLTI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SPLTIGui); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SPLBLUNT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CfVar); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%d99Var); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dStarVar); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%EdgeVelVar); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%speccou); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%filesopen); if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine AA_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) + type(AA_ParameterType), intent(in) :: SrcParamData + type(AA_ParameterType), intent(inout) :: DstParamData + integer(IntKi), intent(in ) :: CtrlCode + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + integer(B8Ki) :: i1, i2, i3 + integer(B8Ki) :: LB(3), UB(3) + integer(IntKi) :: ErrStat2 + character(ErrMsgLen) :: ErrMsg2 + character(*), parameter :: RoutineName = 'AA_CopyParam' + ErrStat = ErrID_None + ErrMsg = '' + DstParamData%DT = SrcParamData%DT + DstParamData%IBLUNT = SrcParamData%IBLUNT + DstParamData%ILAM = SrcParamData%ILAM + DstParamData%ITIP = SrcParamData%ITIP + DstParamData%ITRIP = SrcParamData%ITRIP + DstParamData%ITURB = SrcParamData%ITURB + DstParamData%IInflow = SrcParamData%IInflow + DstParamData%X_BLMethod = SrcParamData%X_BLMethod + DstParamData%TICalcMeth = SrcParamData%TICalcMeth + DstParamData%ROUND = SrcParamData%ROUND + DstParamData%ALPRAT = SrcParamData%ALPRAT + DstParamData%NumBlades = SrcParamData%NumBlades + DstParamData%NumBlNds = SrcParamData%NumBlNds + DstParamData%AirDens = SrcParamData%AirDens + DstParamData%KinVisc = SrcParamData%KinVisc + DstParamData%SpdSound = SrcParamData%SpdSound + DstParamData%HubHeight = SrcParamData%HubHeight + DstParamData%toptip = SrcParamData%toptip + DstParamData%bottip = SrcParamData%bottip + if (allocated(SrcParamData%rotorregionlimitsVert)) then + LB(1:1) = lbound(SrcParamData%rotorregionlimitsVert, kind=B8Ki) + UB(1:1) = ubound(SrcParamData%rotorregionlimitsVert, kind=B8Ki) + if (.not. allocated(DstParamData%rotorregionlimitsVert)) then + allocate(DstParamData%rotorregionlimitsVert(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%rotorregionlimitsVert.', ErrStat, ErrMsg, RoutineName) + return + end if end if - call RegUnpack(Buf, OutData%AllOuts) - if (RegCheckErr(Buf, RoutineName)) return + DstParamData%rotorregionlimitsVert = SrcParamData%rotorregionlimitsVert end if - if (allocated(OutData%ChordAngleTE)) deallocate(OutData%ChordAngleTE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ChordAngleTE(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ChordAngleTE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return + if (allocated(SrcParamData%rotorregionlimitsHorz)) then + LB(1:1) = lbound(SrcParamData%rotorregionlimitsHorz, kind=B8Ki) + UB(1:1) = ubound(SrcParamData%rotorregionlimitsHorz, kind=B8Ki) + if (.not. allocated(DstParamData%rotorregionlimitsHorz)) then + allocate(DstParamData%rotorregionlimitsHorz(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%rotorregionlimitsHorz.', ErrStat, ErrMsg, RoutineName) + return + end if end if - call RegUnpack(Buf, OutData%ChordAngleTE) - if (RegCheckErr(Buf, RoutineName)) return + DstParamData%rotorregionlimitsHorz = SrcParamData%rotorregionlimitsHorz end if - if (allocated(OutData%SpanAngleTE)) deallocate(OutData%SpanAngleTE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SpanAngleTE(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SpanAngleTE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return + if (allocated(SrcParamData%rotorregionlimitsalph)) then + LB(1:1) = lbound(SrcParamData%rotorregionlimitsalph, kind=B8Ki) + UB(1:1) = ubound(SrcParamData%rotorregionlimitsalph, kind=B8Ki) + if (.not. allocated(DstParamData%rotorregionlimitsalph)) then + allocate(DstParamData%rotorregionlimitsalph(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%rotorregionlimitsalph.', ErrStat, ErrMsg, RoutineName) + return + end if end if - call RegUnpack(Buf, OutData%SpanAngleTE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ChordAngleLE)) deallocate(OutData%ChordAngleLE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ChordAngleLE(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ChordAngleLE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ChordAngleLE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SpanAngleLE)) deallocate(OutData%SpanAngleLE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SpanAngleLE(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SpanAngleLE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SpanAngleLE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rTEtoObserve)) deallocate(OutData%rTEtoObserve) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rTEtoObserve(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rTEtoObserve.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rTEtoObserve) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rLEtoObserve)) deallocate(OutData%rLEtoObserve) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rLEtoObserve(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rLEtoObserve.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rLEtoObserve) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LE_Location)) deallocate(OutData%LE_Location) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LE_Location(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LE_Location.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LE_Location) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%RotSpeedAoA) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%SPLLBL)) deallocate(OutData%SPLLBL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SPLLBL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SPLLBL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SPLLBL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SPLP)) deallocate(OutData%SPLP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SPLP(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SPLP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SPLP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SPLS)) deallocate(OutData%SPLS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SPLS(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SPLS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SPLS) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SPLALPH)) deallocate(OutData%SPLALPH) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SPLALPH(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SPLALPH.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SPLALPH) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SPLTBL)) deallocate(OutData%SPLTBL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SPLTBL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SPLTBL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SPLTBL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SPLTIP)) deallocate(OutData%SPLTIP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SPLTIP(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SPLTIP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SPLTIP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SPLTI)) deallocate(OutData%SPLTI) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SPLTI(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SPLTI.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SPLTI) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SPLTIGui)) deallocate(OutData%SPLTIGui) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SPLTIGui(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SPLTIGui.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SPLTIGui) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SPLBLUNT)) deallocate(OutData%SPLBLUNT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SPLBLUNT(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SPLBLUNT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SPLBLUNT) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CfVar)) deallocate(OutData%CfVar) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CfVar(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CfVar.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CfVar) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%d99Var)) deallocate(OutData%d99Var) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%d99Var(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%d99Var.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%d99Var) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dStarVar)) deallocate(OutData%dStarVar) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dStarVar(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dStarVar.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dStarVar) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%EdgeVelVar)) deallocate(OutData%EdgeVelVar) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%EdgeVelVar(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%EdgeVelVar.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%EdgeVelVar) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%speccou) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%filesopen) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine AA_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) - type(AA_ParameterType), intent(in) :: SrcParamData - type(AA_ParameterType), intent(inout) :: DstParamData - integer(IntKi), intent(in ) :: CtrlCode - integer(IntKi), intent( out) :: ErrStat - character(*), intent( out) :: ErrMsg - integer(B8Ki) :: i1, i2, i3 - integer(B8Ki) :: LB(3), UB(3) - integer(IntKi) :: ErrStat2 - character(ErrMsgLen) :: ErrMsg2 - character(*), parameter :: RoutineName = 'AA_CopyParam' - ErrStat = ErrID_None - ErrMsg = '' - DstParamData%DT = SrcParamData%DT - DstParamData%IBLUNT = SrcParamData%IBLUNT - DstParamData%ILAM = SrcParamData%ILAM - DstParamData%ITIP = SrcParamData%ITIP - DstParamData%ITRIP = SrcParamData%ITRIP - DstParamData%ITURB = SrcParamData%ITURB - DstParamData%IInflow = SrcParamData%IInflow - DstParamData%X_BLMethod = SrcParamData%X_BLMethod - DstParamData%TICalcMeth = SrcParamData%TICalcMeth - DstParamData%ROUND = SrcParamData%ROUND - DstParamData%ALPRAT = SrcParamData%ALPRAT - DstParamData%NumBlades = SrcParamData%NumBlades - DstParamData%NumBlNds = SrcParamData%NumBlNds - DstParamData%AirDens = SrcParamData%AirDens - DstParamData%KinVisc = SrcParamData%KinVisc - DstParamData%SpdSound = SrcParamData%SpdSound - DstParamData%HubHeight = SrcParamData%HubHeight - DstParamData%toptip = SrcParamData%toptip - DstParamData%bottip = SrcParamData%bottip - if (allocated(SrcParamData%rotorregionlimitsVert)) then - LB(1:1) = lbound(SrcParamData%rotorregionlimitsVert, kind=B8Ki) - UB(1:1) = ubound(SrcParamData%rotorregionlimitsVert, kind=B8Ki) - if (.not. allocated(DstParamData%rotorregionlimitsVert)) then - allocate(DstParamData%rotorregionlimitsVert(LB(1):UB(1)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%rotorregionlimitsVert.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstParamData%rotorregionlimitsVert = SrcParamData%rotorregionlimitsVert - end if - if (allocated(SrcParamData%rotorregionlimitsHorz)) then - LB(1:1) = lbound(SrcParamData%rotorregionlimitsHorz, kind=B8Ki) - UB(1:1) = ubound(SrcParamData%rotorregionlimitsHorz, kind=B8Ki) - if (.not. allocated(DstParamData%rotorregionlimitsHorz)) then - allocate(DstParamData%rotorregionlimitsHorz(LB(1):UB(1)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%rotorregionlimitsHorz.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstParamData%rotorregionlimitsHorz = SrcParamData%rotorregionlimitsHorz - end if - if (allocated(SrcParamData%rotorregionlimitsalph)) then - LB(1:1) = lbound(SrcParamData%rotorregionlimitsalph, kind=B8Ki) - UB(1:1) = ubound(SrcParamData%rotorregionlimitsalph, kind=B8Ki) - if (.not. allocated(DstParamData%rotorregionlimitsalph)) then - allocate(DstParamData%rotorregionlimitsalph(LB(1):UB(1)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstParamData%rotorregionlimitsalph.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstParamData%rotorregionlimitsalph = SrcParamData%rotorregionlimitsalph + DstParamData%rotorregionlimitsalph = SrcParamData%rotorregionlimitsalph end if if (allocated(SrcParamData%rotorregionlimitsrad)) then LB(1:1) = lbound(SrcParamData%rotorregionlimitsrad, kind=B8Ki) @@ -3454,778 +2423,219 @@ subroutine AA_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine AA_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(AA_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'AA_PackParam' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT) - call RegPack(Buf, InData%IBLUNT) - call RegPack(Buf, InData%ILAM) - call RegPack(Buf, InData%ITIP) - call RegPack(Buf, InData%ITRIP) - call RegPack(Buf, InData%ITURB) - call RegPack(Buf, InData%IInflow) - call RegPack(Buf, InData%X_BLMethod) - call RegPack(Buf, InData%TICalcMeth) - call RegPack(Buf, InData%ROUND) - call RegPack(Buf, InData%ALPRAT) - call RegPack(Buf, InData%NumBlades) - call RegPack(Buf, InData%NumBlNds) - call RegPack(Buf, InData%AirDens) - call RegPack(Buf, InData%KinVisc) - call RegPack(Buf, InData%SpdSound) - call RegPack(Buf, InData%HubHeight) - call RegPack(Buf, InData%toptip) - call RegPack(Buf, InData%bottip) - call RegPack(Buf, allocated(InData%rotorregionlimitsVert)) - if (allocated(InData%rotorregionlimitsVert)) then - call RegPackBounds(Buf, 1, lbound(InData%rotorregionlimitsVert, kind=B8Ki), ubound(InData%rotorregionlimitsVert, kind=B8Ki)) - call RegPack(Buf, InData%rotorregionlimitsVert) - end if - call RegPack(Buf, allocated(InData%rotorregionlimitsHorz)) - if (allocated(InData%rotorregionlimitsHorz)) then - call RegPackBounds(Buf, 1, lbound(InData%rotorregionlimitsHorz, kind=B8Ki), ubound(InData%rotorregionlimitsHorz, kind=B8Ki)) - call RegPack(Buf, InData%rotorregionlimitsHorz) - end if - call RegPack(Buf, allocated(InData%rotorregionlimitsalph)) - if (allocated(InData%rotorregionlimitsalph)) then - call RegPackBounds(Buf, 1, lbound(InData%rotorregionlimitsalph, kind=B8Ki), ubound(InData%rotorregionlimitsalph, kind=B8Ki)) - call RegPack(Buf, InData%rotorregionlimitsalph) - end if - call RegPack(Buf, allocated(InData%rotorregionlimitsrad)) - if (allocated(InData%rotorregionlimitsrad)) then - call RegPackBounds(Buf, 1, lbound(InData%rotorregionlimitsrad, kind=B8Ki), ubound(InData%rotorregionlimitsrad, kind=B8Ki)) - call RegPack(Buf, InData%rotorregionlimitsrad) - end if - call RegPack(Buf, InData%NrObsLoc) - call RegPack(Buf, InData%aweightflag) - call RegPack(Buf, InData%TxtFileOutput) - call RegPack(Buf, InData%AAStart) - call RegPack(Buf, allocated(InData%ObsX)) - if (allocated(InData%ObsX)) then - call RegPackBounds(Buf, 1, lbound(InData%ObsX, kind=B8Ki), ubound(InData%ObsX, kind=B8Ki)) - call RegPack(Buf, InData%ObsX) - end if - call RegPack(Buf, allocated(InData%ObsY)) - if (allocated(InData%ObsY)) then - call RegPackBounds(Buf, 1, lbound(InData%ObsY, kind=B8Ki), ubound(InData%ObsY, kind=B8Ki)) - call RegPack(Buf, InData%ObsY) - end if - call RegPack(Buf, allocated(InData%ObsZ)) - if (allocated(InData%ObsZ)) then - call RegPackBounds(Buf, 1, lbound(InData%ObsZ, kind=B8Ki), ubound(InData%ObsZ, kind=B8Ki)) - call RegPack(Buf, InData%ObsZ) - end if - call RegPack(Buf, allocated(InData%FreqList)) - if (allocated(InData%FreqList)) then - call RegPackBounds(Buf, 1, lbound(InData%FreqList, kind=B8Ki), ubound(InData%FreqList, kind=B8Ki)) - call RegPack(Buf, InData%FreqList) - end if - call RegPack(Buf, allocated(InData%Aweight)) - if (allocated(InData%Aweight)) then - call RegPackBounds(Buf, 1, lbound(InData%Aweight, kind=B8Ki), ubound(InData%Aweight, kind=B8Ki)) - call RegPack(Buf, InData%Aweight) - end if - call RegPack(Buf, InData%Fsample) - call RegPack(Buf, InData%total_sample) - call RegPack(Buf, InData%total_sampleTI) - call RegPack(Buf, InData%AA_Bl_Prcntge) - call RegPack(Buf, InData%startnode) - call RegPack(Buf, InData%Lturb) - call RegPack(Buf, InData%AvgV) - call RegPack(Buf, InData%dz_turb_in) - call RegPack(Buf, InData%dy_turb_in) - call RegPack(Buf, allocated(InData%TI_Grid_In)) - if (allocated(InData%TI_Grid_In)) then - call RegPackBounds(Buf, 2, lbound(InData%TI_Grid_In, kind=B8Ki), ubound(InData%TI_Grid_In, kind=B8Ki)) - call RegPack(Buf, InData%TI_Grid_In) - end if - call RegPack(Buf, InData%FTitle) - call RegPack(Buf, InData%outFmt) - call RegPack(Buf, InData%NrOutFile) - call RegPack(Buf, InData%delim) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, InData%NumOutsForPE) - call RegPack(Buf, InData%NumOutsForSep) - call RegPack(Buf, InData%NumOutsForNodes) - call RegPack(Buf, InData%unOutFile) - call RegPack(Buf, InData%unOutFile2) - call RegPack(Buf, InData%unOutFile3) - call RegPack(Buf, InData%unOutFile4) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, allocated(InData%OutParam)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT) + call RegPack(RF, InData%IBLUNT) + call RegPack(RF, InData%ILAM) + call RegPack(RF, InData%ITIP) + call RegPack(RF, InData%ITRIP) + call RegPack(RF, InData%ITURB) + call RegPack(RF, InData%IInflow) + call RegPack(RF, InData%X_BLMethod) + call RegPack(RF, InData%TICalcMeth) + call RegPack(RF, InData%ROUND) + call RegPack(RF, InData%ALPRAT) + call RegPack(RF, InData%NumBlades) + call RegPack(RF, InData%NumBlNds) + call RegPack(RF, InData%AirDens) + call RegPack(RF, InData%KinVisc) + call RegPack(RF, InData%SpdSound) + call RegPack(RF, InData%HubHeight) + call RegPack(RF, InData%toptip) + call RegPack(RF, InData%bottip) + call RegPackAlloc(RF, InData%rotorregionlimitsVert) + call RegPackAlloc(RF, InData%rotorregionlimitsHorz) + call RegPackAlloc(RF, InData%rotorregionlimitsalph) + call RegPackAlloc(RF, InData%rotorregionlimitsrad) + call RegPack(RF, InData%NrObsLoc) + call RegPack(RF, InData%aweightflag) + call RegPack(RF, InData%TxtFileOutput) + call RegPack(RF, InData%AAStart) + call RegPackAlloc(RF, InData%ObsX) + call RegPackAlloc(RF, InData%ObsY) + call RegPackAlloc(RF, InData%ObsZ) + call RegPackAlloc(RF, InData%FreqList) + call RegPackAlloc(RF, InData%Aweight) + call RegPack(RF, InData%Fsample) + call RegPack(RF, InData%total_sample) + call RegPack(RF, InData%total_sampleTI) + call RegPack(RF, InData%AA_Bl_Prcntge) + call RegPack(RF, InData%startnode) + call RegPack(RF, InData%Lturb) + call RegPack(RF, InData%AvgV) + call RegPack(RF, InData%dz_turb_in) + call RegPack(RF, InData%dy_turb_in) + call RegPackAlloc(RF, InData%TI_Grid_In) + call RegPack(RF, InData%FTitle) + call RegPack(RF, InData%outFmt) + call RegPack(RF, InData%NrOutFile) + call RegPack(RF, InData%delim) + call RegPack(RF, InData%NumOuts) + call RegPack(RF, InData%NumOutsForPE) + call RegPack(RF, InData%NumOutsForSep) + call RegPack(RF, InData%NumOutsForNodes) + call RegPack(RF, InData%unOutFile) + call RegPack(RF, InData%unOutFile2) + call RegPack(RF, InData%unOutFile3) + call RegPack(RF, InData%unOutFile4) + call RegPack(RF, InData%RootName) + call RegPack(RF, allocated(InData%OutParam)) if (allocated(InData%OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) LB(1:1) = lbound(InData%OutParam, kind=B8Ki) UB(1:1) = ubound(InData%OutParam, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackOutParmType(Buf, InData%OutParam(i1)) + call NWTC_Library_PackOutParmType(RF, InData%OutParam(i1)) end do end if - call RegPack(Buf, allocated(InData%StallStart)) - if (allocated(InData%StallStart)) then - call RegPackBounds(Buf, 2, lbound(InData%StallStart, kind=B8Ki), ubound(InData%StallStart, kind=B8Ki)) - call RegPack(Buf, InData%StallStart) - end if - call RegPack(Buf, allocated(InData%TEThick)) - if (allocated(InData%TEThick)) then - call RegPackBounds(Buf, 2, lbound(InData%TEThick, kind=B8Ki), ubound(InData%TEThick, kind=B8Ki)) - call RegPack(Buf, InData%TEThick) - end if - call RegPack(Buf, allocated(InData%TEAngle)) - if (allocated(InData%TEAngle)) then - call RegPackBounds(Buf, 2, lbound(InData%TEAngle, kind=B8Ki), ubound(InData%TEAngle, kind=B8Ki)) - call RegPack(Buf, InData%TEAngle) - end if - call RegPack(Buf, allocated(InData%AerCent)) - if (allocated(InData%AerCent)) then - call RegPackBounds(Buf, 3, lbound(InData%AerCent, kind=B8Ki), ubound(InData%AerCent, kind=B8Ki)) - call RegPack(Buf, InData%AerCent) - end if - call RegPack(Buf, allocated(InData%BlAFID)) - if (allocated(InData%BlAFID)) then - call RegPackBounds(Buf, 2, lbound(InData%BlAFID, kind=B8Ki), ubound(InData%BlAFID, kind=B8Ki)) - call RegPack(Buf, InData%BlAFID) - end if - call RegPack(Buf, allocated(InData%AFInfo)) + call RegPackAlloc(RF, InData%StallStart) + call RegPackAlloc(RF, InData%TEThick) + call RegPackAlloc(RF, InData%TEAngle) + call RegPackAlloc(RF, InData%AerCent) + call RegPackAlloc(RF, InData%BlAFID) + call RegPack(RF, allocated(InData%AFInfo)) if (allocated(InData%AFInfo)) then - call RegPackBounds(Buf, 1, lbound(InData%AFInfo, kind=B8Ki), ubound(InData%AFInfo, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%AFInfo, kind=B8Ki), ubound(InData%AFInfo, kind=B8Ki)) LB(1:1) = lbound(InData%AFInfo, kind=B8Ki) UB(1:1) = ubound(InData%AFInfo, kind=B8Ki) do i1 = LB(1), UB(1) - call AFI_PackParam(Buf, InData%AFInfo(i1)) + call AFI_PackParam(RF, InData%AFInfo(i1)) end do end if - call RegPack(Buf, allocated(InData%AFLECo)) - if (allocated(InData%AFLECo)) then - call RegPackBounds(Buf, 3, lbound(InData%AFLECo, kind=B8Ki), ubound(InData%AFLECo, kind=B8Ki)) - call RegPack(Buf, InData%AFLECo) - end if - call RegPack(Buf, allocated(InData%AFTECo)) - if (allocated(InData%AFTECo)) then - call RegPackBounds(Buf, 3, lbound(InData%AFTECo, kind=B8Ki), ubound(InData%AFTECo, kind=B8Ki)) - call RegPack(Buf, InData%AFTECo) - end if - call RegPack(Buf, allocated(InData%BlSpn)) - if (allocated(InData%BlSpn)) then - call RegPackBounds(Buf, 2, lbound(InData%BlSpn, kind=B8Ki), ubound(InData%BlSpn, kind=B8Ki)) - call RegPack(Buf, InData%BlSpn) - end if - call RegPack(Buf, allocated(InData%BlChord)) - if (allocated(InData%BlChord)) then - call RegPackBounds(Buf, 2, lbound(InData%BlChord, kind=B8Ki), ubound(InData%BlChord, kind=B8Ki)) - call RegPack(Buf, InData%BlChord) - end if - call RegPack(Buf, allocated(InData%ReListBL)) - if (allocated(InData%ReListBL)) then - call RegPackBounds(Buf, 1, lbound(InData%ReListBL, kind=B8Ki), ubound(InData%ReListBL, kind=B8Ki)) - call RegPack(Buf, InData%ReListBL) - end if - call RegPack(Buf, allocated(InData%AOAListBL)) - if (allocated(InData%AOAListBL)) then - call RegPackBounds(Buf, 1, lbound(InData%AOAListBL, kind=B8Ki), ubound(InData%AOAListBL, kind=B8Ki)) - call RegPack(Buf, InData%AOAListBL) - end if - call RegPack(Buf, allocated(InData%dStarAll1)) - if (allocated(InData%dStarAll1)) then - call RegPackBounds(Buf, 3, lbound(InData%dStarAll1, kind=B8Ki), ubound(InData%dStarAll1, kind=B8Ki)) - call RegPack(Buf, InData%dStarAll1) - end if - call RegPack(Buf, allocated(InData%dStarAll2)) - if (allocated(InData%dStarAll2)) then - call RegPackBounds(Buf, 3, lbound(InData%dStarAll2, kind=B8Ki), ubound(InData%dStarAll2, kind=B8Ki)) - call RegPack(Buf, InData%dStarAll2) - end if - call RegPack(Buf, allocated(InData%d99All1)) - if (allocated(InData%d99All1)) then - call RegPackBounds(Buf, 3, lbound(InData%d99All1, kind=B8Ki), ubound(InData%d99All1, kind=B8Ki)) - call RegPack(Buf, InData%d99All1) - end if - call RegPack(Buf, allocated(InData%d99All2)) - if (allocated(InData%d99All2)) then - call RegPackBounds(Buf, 3, lbound(InData%d99All2, kind=B8Ki), ubound(InData%d99All2, kind=B8Ki)) - call RegPack(Buf, InData%d99All2) - end if - call RegPack(Buf, allocated(InData%CfAll1)) - if (allocated(InData%CfAll1)) then - call RegPackBounds(Buf, 3, lbound(InData%CfAll1, kind=B8Ki), ubound(InData%CfAll1, kind=B8Ki)) - call RegPack(Buf, InData%CfAll1) - end if - call RegPack(Buf, allocated(InData%CfAll2)) - if (allocated(InData%CfAll2)) then - call RegPackBounds(Buf, 3, lbound(InData%CfAll2, kind=B8Ki), ubound(InData%CfAll2, kind=B8Ki)) - call RegPack(Buf, InData%CfAll2) - end if - call RegPack(Buf, allocated(InData%EdgeVelRat1)) - if (allocated(InData%EdgeVelRat1)) then - call RegPackBounds(Buf, 3, lbound(InData%EdgeVelRat1, kind=B8Ki), ubound(InData%EdgeVelRat1, kind=B8Ki)) - call RegPack(Buf, InData%EdgeVelRat1) - end if - call RegPack(Buf, allocated(InData%EdgeVelRat2)) - if (allocated(InData%EdgeVelRat2)) then - call RegPackBounds(Buf, 3, lbound(InData%EdgeVelRat2, kind=B8Ki), ubound(InData%EdgeVelRat2, kind=B8Ki)) - call RegPack(Buf, InData%EdgeVelRat2) - end if - call RegPack(Buf, allocated(InData%AFThickGuida)) - if (allocated(InData%AFThickGuida)) then - call RegPackBounds(Buf, 2, lbound(InData%AFThickGuida, kind=B8Ki), ubound(InData%AFThickGuida, kind=B8Ki)) - call RegPack(Buf, InData%AFThickGuida) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%AFLECo) + call RegPackAlloc(RF, InData%AFTECo) + call RegPackAlloc(RF, InData%BlSpn) + call RegPackAlloc(RF, InData%BlChord) + call RegPackAlloc(RF, InData%ReListBL) + call RegPackAlloc(RF, InData%AOAListBL) + call RegPackAlloc(RF, InData%dStarAll1) + call RegPackAlloc(RF, InData%dStarAll2) + call RegPackAlloc(RF, InData%d99All1) + call RegPackAlloc(RF, InData%d99All2) + call RegPackAlloc(RF, InData%CfAll1) + call RegPackAlloc(RF, InData%CfAll2) + call RegPackAlloc(RF, InData%EdgeVelRat1) + call RegPackAlloc(RF, InData%EdgeVelRat2) + call RegPackAlloc(RF, InData%AFThickGuida) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AA_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(AA_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AA_UnPackParam' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%IBLUNT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ILAM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ITIP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ITRIP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ITURB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%IInflow) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%X_BLMethod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TICalcMeth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ROUND) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ALPRAT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBlades) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBlNds) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AirDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%KinVisc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SpdSound) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubHeight) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%toptip) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%bottip) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%rotorregionlimitsVert)) deallocate(OutData%rotorregionlimitsVert) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rotorregionlimitsVert(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotorregionlimitsVert.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rotorregionlimitsVert) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rotorregionlimitsHorz)) deallocate(OutData%rotorregionlimitsHorz) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rotorregionlimitsHorz(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotorregionlimitsHorz.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rotorregionlimitsHorz) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rotorregionlimitsalph)) deallocate(OutData%rotorregionlimitsalph) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rotorregionlimitsalph(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotorregionlimitsalph.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rotorregionlimitsalph) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rotorregionlimitsrad)) deallocate(OutData%rotorregionlimitsrad) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rotorregionlimitsrad(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotorregionlimitsrad.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rotorregionlimitsrad) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NrObsLoc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%aweightflag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TxtFileOutput) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AAStart) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%ObsX)) deallocate(OutData%ObsX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ObsX(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ObsX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ObsX) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ObsY)) deallocate(OutData%ObsY) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ObsY(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ObsY.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ObsY) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ObsZ)) deallocate(OutData%ObsZ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ObsZ(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ObsZ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ObsZ) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FreqList)) deallocate(OutData%FreqList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FreqList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FreqList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FreqList) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Aweight)) deallocate(OutData%Aweight) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Aweight(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Aweight.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Aweight) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Fsample) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%total_sample) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%total_sampleTI) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AA_Bl_Prcntge) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%startnode) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Lturb) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AvgV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dz_turb_in) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dy_turb_in) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TI_Grid_In)) deallocate(OutData%TI_Grid_In) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TI_Grid_In(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TI_Grid_In.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TI_Grid_In) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%FTitle) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%outFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NrOutFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%delim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOutsForPE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOutsForSep) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOutsForNodes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%unOutFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%unOutFile2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%unOutFile3) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%unOutFile4) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IBLUNT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ILAM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ITIP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ITRIP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ITURB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IInflow); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%X_BLMethod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TICalcMeth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ROUND); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ALPRAT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBlades); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBlNds); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AirDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%KinVisc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SpdSound); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubHeight); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%toptip); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%bottip); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rotorregionlimitsVert); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rotorregionlimitsHorz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rotorregionlimitsalph); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rotorregionlimitsrad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NrObsLoc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%aweightflag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TxtFileOutput); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AAStart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ObsX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ObsY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ObsZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FreqList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Aweight); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Fsample); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%total_sample); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%total_sampleTI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AA_Bl_Prcntge); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%startnode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Lturb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AvgV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dz_turb_in); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dy_turb_in); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TI_Grid_In); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FTitle); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%outFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NrOutFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%delim); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOutsForPE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOutsForSep); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOutsForNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%unOutFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%unOutFile2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%unOutFile3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%unOutFile4); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%OutParam)) deallocate(OutData%OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackOutParmType(Buf, OutData%OutParam(i1)) ! OutParam + call NWTC_Library_UnpackOutParmType(RF, OutData%OutParam(i1)) ! OutParam end do end if - if (allocated(OutData%StallStart)) deallocate(OutData%StallStart) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StallStart(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StallStart.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StallStart) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TEThick)) deallocate(OutData%TEThick) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TEThick(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TEThick.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TEThick) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TEAngle)) deallocate(OutData%TEAngle) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TEAngle(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TEAngle.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TEAngle) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AerCent)) deallocate(OutData%AerCent) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AerCent(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AerCent.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AerCent) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlAFID)) deallocate(OutData%BlAFID) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlAFID(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlAFID.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlAFID) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%StallStart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TEThick); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TEAngle); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AerCent); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlAFID); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%AFInfo)) deallocate(OutData%AFInfo) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%AFInfo(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AFInfo.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AFInfo.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AFI_UnpackParam(Buf, OutData%AFInfo(i1)) ! AFInfo + call AFI_UnpackParam(RF, OutData%AFInfo(i1)) ! AFInfo end do end if - if (allocated(OutData%AFLECo)) deallocate(OutData%AFLECo) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AFLECo(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AFLECo.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AFLECo) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AFTECo)) deallocate(OutData%AFTECo) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AFTECo(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AFTECo.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AFTECo) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlSpn)) deallocate(OutData%BlSpn) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlSpn(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlSpn.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlSpn) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlChord)) deallocate(OutData%BlChord) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlChord(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlChord.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlChord) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ReListBL)) deallocate(OutData%ReListBL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ReListBL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ReListBL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ReListBL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AOAListBL)) deallocate(OutData%AOAListBL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AOAListBL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AOAListBL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AOAListBL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dStarAll1)) deallocate(OutData%dStarAll1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dStarAll1(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dStarAll1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dStarAll1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dStarAll2)) deallocate(OutData%dStarAll2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dStarAll2(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dStarAll2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dStarAll2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%d99All1)) deallocate(OutData%d99All1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%d99All1(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%d99All1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%d99All1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%d99All2)) deallocate(OutData%d99All2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%d99All2(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%d99All2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%d99All2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CfAll1)) deallocate(OutData%CfAll1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CfAll1(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CfAll1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CfAll1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CfAll2)) deallocate(OutData%CfAll2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CfAll2(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CfAll2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CfAll2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%EdgeVelRat1)) deallocate(OutData%EdgeVelRat1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%EdgeVelRat1(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%EdgeVelRat1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%EdgeVelRat1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%EdgeVelRat2)) deallocate(OutData%EdgeVelRat2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%EdgeVelRat2(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%EdgeVelRat2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%EdgeVelRat2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AFThickGuida)) deallocate(OutData%AFThickGuida) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AFThickGuida(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AFThickGuida.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AFThickGuida) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%AFLECo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AFTECo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlSpn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlChord); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ReListBL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AOAListBL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dStarAll1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dStarAll2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%d99All1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%d99All2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CfAll1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CfAll2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%EdgeVelRat1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%EdgeVelRat2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AFThickGuida); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AA_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -4325,117 +2735,32 @@ subroutine AA_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine AA_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AA_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AA_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%RotGtoL)) - if (allocated(InData%RotGtoL)) then - call RegPackBounds(Buf, 4, lbound(InData%RotGtoL, kind=B8Ki), ubound(InData%RotGtoL, kind=B8Ki)) - call RegPack(Buf, InData%RotGtoL) - end if - call RegPack(Buf, allocated(InData%AeroCent_G)) - if (allocated(InData%AeroCent_G)) then - call RegPackBounds(Buf, 3, lbound(InData%AeroCent_G, kind=B8Ki), ubound(InData%AeroCent_G, kind=B8Ki)) - call RegPack(Buf, InData%AeroCent_G) - end if - call RegPack(Buf, allocated(InData%Vrel)) - if (allocated(InData%Vrel)) then - call RegPackBounds(Buf, 2, lbound(InData%Vrel, kind=B8Ki), ubound(InData%Vrel, kind=B8Ki)) - call RegPack(Buf, InData%Vrel) - end if - call RegPack(Buf, allocated(InData%AoANoise)) - if (allocated(InData%AoANoise)) then - call RegPackBounds(Buf, 2, lbound(InData%AoANoise, kind=B8Ki), ubound(InData%AoANoise, kind=B8Ki)) - call RegPack(Buf, InData%AoANoise) - end if - call RegPack(Buf, allocated(InData%Inflow)) - if (allocated(InData%Inflow)) then - call RegPackBounds(Buf, 3, lbound(InData%Inflow, kind=B8Ki), ubound(InData%Inflow, kind=B8Ki)) - call RegPack(Buf, InData%Inflow) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%RotGtoL) + call RegPackAlloc(RF, InData%AeroCent_G) + call RegPackAlloc(RF, InData%Vrel) + call RegPackAlloc(RF, InData%AoANoise) + call RegPackAlloc(RF, InData%Inflow) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AA_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AA_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AA_UnPackInput' integer(B8Ki) :: LB(4), UB(4) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%RotGtoL)) deallocate(OutData%RotGtoL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotGtoL(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotGtoL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotGtoL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AeroCent_G)) deallocate(OutData%AeroCent_G) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AeroCent_G(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AeroCent_G.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AeroCent_G) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vrel)) deallocate(OutData%Vrel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vrel(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vrel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vrel) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AoANoise)) deallocate(OutData%AoANoise) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AoANoise(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AoANoise.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AoANoise) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Inflow)) deallocate(OutData%Inflow) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Inflow(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Inflow.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Inflow) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%RotGtoL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AeroCent_G); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vrel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AoANoise); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Inflow); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AA_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -4625,231 +2950,44 @@ subroutine AA_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine AA_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AA_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AA_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%SumSpecNoise)) - if (allocated(InData%SumSpecNoise)) then - call RegPackBounds(Buf, 3, lbound(InData%SumSpecNoise, kind=B8Ki), ubound(InData%SumSpecNoise, kind=B8Ki)) - call RegPack(Buf, InData%SumSpecNoise) - end if - call RegPack(Buf, allocated(InData%SumSpecNoiseSep)) - if (allocated(InData%SumSpecNoiseSep)) then - call RegPackBounds(Buf, 3, lbound(InData%SumSpecNoiseSep, kind=B8Ki), ubound(InData%SumSpecNoiseSep, kind=B8Ki)) - call RegPack(Buf, InData%SumSpecNoiseSep) - end if - call RegPack(Buf, allocated(InData%OASPL)) - if (allocated(InData%OASPL)) then - call RegPackBounds(Buf, 3, lbound(InData%OASPL, kind=B8Ki), ubound(InData%OASPL, kind=B8Ki)) - call RegPack(Buf, InData%OASPL) - end if - call RegPack(Buf, allocated(InData%OASPL_Mech)) - if (allocated(InData%OASPL_Mech)) then - call RegPackBounds(Buf, 4, lbound(InData%OASPL_Mech, kind=B8Ki), ubound(InData%OASPL_Mech, kind=B8Ki)) - call RegPack(Buf, InData%OASPL_Mech) - end if - call RegPack(Buf, allocated(InData%DirectiviOutput)) - if (allocated(InData%DirectiviOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%DirectiviOutput, kind=B8Ki), ubound(InData%DirectiviOutput, kind=B8Ki)) - call RegPack(Buf, InData%DirectiviOutput) - end if - call RegPack(Buf, allocated(InData%OutLECoords)) - if (allocated(InData%OutLECoords)) then - call RegPackBounds(Buf, 4, lbound(InData%OutLECoords, kind=B8Ki), ubound(InData%OutLECoords, kind=B8Ki)) - call RegPack(Buf, InData%OutLECoords) - end if - call RegPack(Buf, allocated(InData%PtotalFreq)) - if (allocated(InData%PtotalFreq)) then - call RegPackBounds(Buf, 2, lbound(InData%PtotalFreq, kind=B8Ki), ubound(InData%PtotalFreq, kind=B8Ki)) - call RegPack(Buf, InData%PtotalFreq) - end if - call RegPack(Buf, allocated(InData%WriteOutputForPE)) - if (allocated(InData%WriteOutputForPE)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputForPE, kind=B8Ki), ubound(InData%WriteOutputForPE, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputForPE) - end if - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - call RegPack(Buf, allocated(InData%WriteOutputSep)) - if (allocated(InData%WriteOutputSep)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputSep, kind=B8Ki), ubound(InData%WriteOutputSep, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputSep) - end if - call RegPack(Buf, allocated(InData%WriteOutputNode)) - if (allocated(InData%WriteOutputNode)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputNode, kind=B8Ki), ubound(InData%WriteOutputNode, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputNode) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%SumSpecNoise) + call RegPackAlloc(RF, InData%SumSpecNoiseSep) + call RegPackAlloc(RF, InData%OASPL) + call RegPackAlloc(RF, InData%OASPL_Mech) + call RegPackAlloc(RF, InData%DirectiviOutput) + call RegPackAlloc(RF, InData%OutLECoords) + call RegPackAlloc(RF, InData%PtotalFreq) + call RegPackAlloc(RF, InData%WriteOutputForPE) + call RegPackAlloc(RF, InData%WriteOutput) + call RegPackAlloc(RF, InData%WriteOutputSep) + call RegPackAlloc(RF, InData%WriteOutputNode) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AA_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AA_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AA_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AA_UnPackOutput' integer(B8Ki) :: LB(4), UB(4) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%SumSpecNoise)) deallocate(OutData%SumSpecNoise) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SumSpecNoise(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SumSpecNoise.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SumSpecNoise) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SumSpecNoiseSep)) deallocate(OutData%SumSpecNoiseSep) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SumSpecNoiseSep(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SumSpecNoiseSep.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SumSpecNoiseSep) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OASPL)) deallocate(OutData%OASPL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OASPL(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OASPL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OASPL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OASPL_Mech)) deallocate(OutData%OASPL_Mech) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OASPL_Mech(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OASPL_Mech.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OASPL_Mech) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DirectiviOutput)) deallocate(OutData%DirectiviOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DirectiviOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DirectiviOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DirectiviOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OutLECoords)) deallocate(OutData%OutLECoords) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutLECoords(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutLECoords.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutLECoords) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PtotalFreq)) deallocate(OutData%PtotalFreq) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtotalFreq(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtotalFreq.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtotalFreq) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputForPE)) deallocate(OutData%WriteOutputForPE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputForPE(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputForPE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputForPE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputSep)) deallocate(OutData%WriteOutputSep) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputSep(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputSep.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputSep) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputNode)) deallocate(OutData%WriteOutputNode) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputNode(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputNode.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputNode) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%SumSpecNoise); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SumSpecNoiseSep); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OASPL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OASPL_Mech); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DirectiviOutput); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutLECoords); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PtotalFreq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputForPE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputSep); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputNode); if (RegCheckErr(RF, RoutineName)) return end subroutine END MODULE AeroAcoustics_Types !ENDOFREGISTRYGENERATEDFILE diff --git a/modules/aerodyn/src/AeroDyn_Driver_Types.f90 b/modules/aerodyn/src/AeroDyn_Driver_Types.f90 index 4a9345bb6c..7d2b77655f 100644 --- a/modules/aerodyn/src/AeroDyn_Driver_Types.f90 +++ b/modules/aerodyn/src/AeroDyn_Driver_Types.f90 @@ -230,52 +230,41 @@ subroutine AD_Dvr_DestroyDvr_Case(Dvr_CaseData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AD_Dvr_PackDvr_Case(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_PackDvr_Case(RF, Indata) + type(RegFile), intent(inout) :: RF type(Dvr_Case), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_Dvr_PackDvr_Case' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%HWindSpeed) - call RegPack(Buf, InData%PLExp) - call RegPack(Buf, InData%rotSpeed) - call RegPack(Buf, InData%bldPitch) - call RegPack(Buf, InData%nacYaw) - call RegPack(Buf, InData%tMax) - call RegPack(Buf, InData%dT) - call RegPack(Buf, InData%numSteps) - call RegPack(Buf, InData%DOF) - call RegPack(Buf, InData%amplitude) - call RegPack(Buf, InData%frequency) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%HWindSpeed) + call RegPack(RF, InData%PLExp) + call RegPack(RF, InData%rotSpeed) + call RegPack(RF, InData%bldPitch) + call RegPack(RF, InData%nacYaw) + call RegPack(RF, InData%tMax) + call RegPack(RF, InData%dT) + call RegPack(RF, InData%numSteps) + call RegPack(RF, InData%DOF) + call RegPack(RF, InData%amplitude) + call RegPack(RF, InData%frequency) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_Dvr_UnPackDvr_Case(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_UnPackDvr_Case(RF, OutData) + type(RegFile), intent(inout) :: RF type(Dvr_Case), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_Dvr_UnPackDvr_Case' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%HWindSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PLExp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rotSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%bldPitch) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nacYaw) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tMax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%numSteps) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%amplitude) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%frequency) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%HWindSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PLExp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rotSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%bldPitch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nacYaw); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tMax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numSteps); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%amplitude); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%frequency); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_Dvr_CopyDvrVTK_SurfaceType(SrcDvrVTK_SurfaceTypeData, DstDvrVTK_SurfaceTypeData, CtrlCode, ErrStat, ErrMsg) @@ -301,28 +290,25 @@ subroutine AD_Dvr_DestroyDvrVTK_SurfaceType(DvrVTK_SurfaceTypeData, ErrStat, Err ErrMsg = '' end subroutine -subroutine AD_Dvr_PackDvrVTK_SurfaceType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_PackDvrVTK_SurfaceType(RF, Indata) + type(RegFile), intent(inout) :: RF type(DvrVTK_SurfaceType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_Dvr_PackDvrVTK_SurfaceType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%NumSectors) - call RegPack(Buf, InData%NacelleBox) - call RegPack(Buf, InData%BaseBox) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%NumSectors) + call RegPack(RF, InData%NacelleBox) + call RegPack(RF, InData%BaseBox) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_Dvr_UnPackDvrVTK_SurfaceType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_UnPackDvrVTK_SurfaceType(RF, OutData) + type(RegFile), intent(inout) :: RF type(DvrVTK_SurfaceType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_Dvr_UnPackDvrVTK_SurfaceType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%NumSectors) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacelleBox) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BaseBox) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%NumSectors); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacelleBox); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BaseBox); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_Dvr_CopyDvr_Outputs(SrcDvr_OutputsData, DstDvr_OutputsData, CtrlCode, ErrStat, ErrMsg) @@ -476,200 +462,95 @@ subroutine AD_Dvr_DestroyDvr_Outputs(Dvr_OutputsData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_Dvr_PackDvr_Outputs(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_PackDvr_Outputs(RF, Indata) + type(RegFile), intent(inout) :: RF type(Dvr_Outputs), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_Dvr_PackDvr_Outputs' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) - if (Buf%ErrStat >= AbortErrLev) return - call NWTC_Library_PackProgDesc(Buf, InData%AD_ver) - call RegPack(Buf, allocated(InData%unOutFile)) - if (allocated(InData%unOutFile)) then - call RegPackBounds(Buf, 1, lbound(InData%unOutFile, kind=B8Ki), ubound(InData%unOutFile, kind=B8Ki)) - call RegPack(Buf, InData%unOutFile) - end if - call RegPack(Buf, InData%ActualChanLen) - call RegPack(Buf, InData%nDvrOutputs) - call RegPack(Buf, InData%Fmt_t) - call RegPack(Buf, InData%Fmt_a) - call RegPack(Buf, InData%delim) - call RegPack(Buf, InData%outFmt) - call RegPack(Buf, InData%fileFmt) - call RegPack(Buf, InData%wrVTK) - call RegPack(Buf, InData%WrVTK_Type) - call RegPack(Buf, InData%Root) - call RegPack(Buf, InData%VTK_OutFileRoot) - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - call RegPack(Buf, allocated(InData%storage)) - if (allocated(InData%storage)) then - call RegPackBounds(Buf, 3, lbound(InData%storage, kind=B8Ki), ubound(InData%storage, kind=B8Ki)) - call RegPack(Buf, InData%storage) - end if - call RegPack(Buf, allocated(InData%outLine)) - if (allocated(InData%outLine)) then - call RegPackBounds(Buf, 1, lbound(InData%outLine, kind=B8Ki), ubound(InData%outLine, kind=B8Ki)) - call RegPack(Buf, InData%outLine) - end if - call RegPack(Buf, allocated(InData%VTK_surface)) + if (RF%ErrStat >= AbortErrLev) return + call NWTC_Library_PackProgDesc(RF, InData%AD_ver) + call RegPackAlloc(RF, InData%unOutFile) + call RegPack(RF, InData%ActualChanLen) + call RegPack(RF, InData%nDvrOutputs) + call RegPack(RF, InData%Fmt_t) + call RegPack(RF, InData%Fmt_a) + call RegPack(RF, InData%delim) + call RegPack(RF, InData%outFmt) + call RegPack(RF, InData%fileFmt) + call RegPack(RF, InData%wrVTK) + call RegPack(RF, InData%WrVTK_Type) + call RegPack(RF, InData%Root) + call RegPack(RF, InData%VTK_OutFileRoot) + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + call RegPackAlloc(RF, InData%storage) + call RegPackAlloc(RF, InData%outLine) + call RegPack(RF, allocated(InData%VTK_surface)) if (allocated(InData%VTK_surface)) then - call RegPackBounds(Buf, 1, lbound(InData%VTK_surface, kind=B8Ki), ubound(InData%VTK_surface, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%VTK_surface, kind=B8Ki), ubound(InData%VTK_surface, kind=B8Ki)) LB(1:1) = lbound(InData%VTK_surface, kind=B8Ki) UB(1:1) = ubound(InData%VTK_surface, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_Dvr_PackDvrVTK_SurfaceType(Buf, InData%VTK_surface(i1)) + call AD_Dvr_PackDvrVTK_SurfaceType(RF, InData%VTK_surface(i1)) end do end if - call RegPack(Buf, InData%VTK_tWidth) - call RegPack(Buf, InData%n_VTKTime) - call RegPack(Buf, InData%VTKHubRad) - call RegPack(Buf, InData%VTKNacDim) - call RegPack(Buf, InData%VTKRefPoint) - call RegPack(Buf, InData%DT_Outs) - call RegPack(Buf, InData%n_DT_Out) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%VTK_tWidth) + call RegPack(RF, InData%n_VTKTime) + call RegPack(RF, InData%VTKHubRad) + call RegPack(RF, InData%VTKNacDim) + call RegPack(RF, InData%VTKRefPoint) + call RegPack(RF, InData%DT_Outs) + call RegPack(RF, InData%n_DT_Out) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_Dvr_UnPackDvr_Outputs(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_UnPackDvr_Outputs(RF, OutData) + type(RegFile), intent(inout) :: RF type(Dvr_Outputs), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_Dvr_UnPackDvr_Outputs' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call NWTC_Library_UnpackProgDesc(Buf, OutData%AD_ver) ! AD_ver - if (allocated(OutData%unOutFile)) deallocate(OutData%unOutFile) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%unOutFile(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%unOutFile.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%unOutFile) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%ActualChanLen) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nDvrOutputs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Fmt_t) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Fmt_a) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%delim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%outFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%fileFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%wrVTK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WrVTK_Type) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Root) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTK_OutFileRoot) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%storage)) deallocate(OutData%storage) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%storage(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%storage.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%storage) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%outLine)) deallocate(OutData%outLine) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%outLine(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%outLine.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%outLine) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call NWTC_Library_UnpackProgDesc(RF, OutData%AD_ver) ! AD_ver + call RegUnpackAlloc(RF, OutData%unOutFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ActualChanLen); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nDvrOutputs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Fmt_t); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Fmt_a); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%delim); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%outFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%fileFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%wrVTK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrVTK_Type); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Root); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTK_OutFileRoot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%storage); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%outLine); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%VTK_surface)) deallocate(OutData%VTK_surface) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%VTK_surface(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VTK_surface.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VTK_surface.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_Dvr_UnpackDvrVTK_SurfaceType(Buf, OutData%VTK_surface(i1)) ! VTK_surface + call AD_Dvr_UnpackDvrVTK_SurfaceType(RF, OutData%VTK_surface(i1)) ! VTK_surface end do end if - call RegUnpack(Buf, OutData%VTK_tWidth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%n_VTKTime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTKHubRad) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTKNacDim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTKRefPoint) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DT_Outs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%n_DT_Out) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%VTK_tWidth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%n_VTKTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTKHubRad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTKNacDim); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTKRefPoint); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DT_Outs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%n_DT_Out); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_Dvr_CopyBladeData(SrcBladeDataData, DstBladeDataData, CtrlCode, ErrStat, ErrMsg) @@ -719,71 +600,44 @@ subroutine AD_Dvr_DestroyBladeData(BladeDataData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_Dvr_PackBladeData(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_PackBladeData(RF, Indata) + type(RegFile), intent(inout) :: RF type(BladeData), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_Dvr_PackBladeData' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%pitch) - call RegPack(Buf, InData%pitchSpeed) - call RegPack(Buf, InData%pitchAcc) - call RegPack(Buf, InData%origin_h) - call RegPack(Buf, InData%orientation_h) - call RegPack(Buf, InData%hubRad_bl) - call RegPack(Buf, InData%Rh2bl0) - call RegPack(Buf, InData%motionType) - call RegPack(Buf, InData%iMotion) - call RegPack(Buf, allocated(InData%motion)) - if (allocated(InData%motion)) then - call RegPackBounds(Buf, 2, lbound(InData%motion, kind=B8Ki), ubound(InData%motion, kind=B8Ki)) - call RegPack(Buf, InData%motion) - end if - call RegPack(Buf, InData%motionFileName) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%pitch) + call RegPack(RF, InData%pitchSpeed) + call RegPack(RF, InData%pitchAcc) + call RegPack(RF, InData%origin_h) + call RegPack(RF, InData%orientation_h) + call RegPack(RF, InData%hubRad_bl) + call RegPack(RF, InData%Rh2bl0) + call RegPack(RF, InData%motionType) + call RegPack(RF, InData%iMotion) + call RegPackAlloc(RF, InData%motion) + call RegPack(RF, InData%motionFileName) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_Dvr_UnPackBladeData(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_UnPackBladeData(RF, OutData) + type(RegFile), intent(inout) :: RF type(BladeData), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_Dvr_UnPackBladeData' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%pitch) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pitchSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pitchAcc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%origin_h) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%orientation_h) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%hubRad_bl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Rh2bl0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%motionType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%iMotion) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%motion)) deallocate(OutData%motion) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%motion(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%motion.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%motion) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%motionFileName) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%pitch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pitchSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pitchAcc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%origin_h); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%orientation_h); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%hubRad_bl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Rh2bl0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%motionType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%iMotion); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%motion); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%motionFileName); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_Dvr_CopyHubData(SrcHubDataData, DstHubDataData, CtrlCode, ErrStat, ErrMsg) @@ -831,65 +685,40 @@ subroutine AD_Dvr_DestroyHubData(HubDataData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_Dvr_PackHubData(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_PackHubData(RF, Indata) + type(RegFile), intent(inout) :: RF type(HubData), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_Dvr_PackHubData' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%origin_n) - call RegPack(Buf, InData%orientation_n) - call RegPack(Buf, InData%motionType) - call RegPack(Buf, InData%iMotion) - call RegPack(Buf, InData%azimuth) - call RegPack(Buf, InData%rotSpeed) - call RegPack(Buf, InData%rotAcc) - call RegPack(Buf, InData%motionFileName) - call RegPack(Buf, allocated(InData%motion)) - if (allocated(InData%motion)) then - call RegPackBounds(Buf, 2, lbound(InData%motion, kind=B8Ki), ubound(InData%motion, kind=B8Ki)) - call RegPack(Buf, InData%motion) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%origin_n) + call RegPack(RF, InData%orientation_n) + call RegPack(RF, InData%motionType) + call RegPack(RF, InData%iMotion) + call RegPack(RF, InData%azimuth) + call RegPack(RF, InData%rotSpeed) + call RegPack(RF, InData%rotAcc) + call RegPack(RF, InData%motionFileName) + call RegPackAlloc(RF, InData%motion) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_Dvr_UnPackHubData(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_UnPackHubData(RF, OutData) + type(RegFile), intent(inout) :: RF type(HubData), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_Dvr_UnPackHubData' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%origin_n) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%orientation_n) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%motionType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%iMotion) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%azimuth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rotSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rotAcc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%motionFileName) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%motion)) deallocate(OutData%motion) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%motion(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%motion.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%motion) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%origin_n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%orientation_n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%motionType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%iMotion); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%azimuth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rotSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rotAcc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%motionFileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%motion); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_Dvr_CopyNacData(SrcNacDataData, DstNacDataData, CtrlCode, ErrStat, ErrMsg) @@ -936,62 +765,38 @@ subroutine AD_Dvr_DestroyNacData(NacDataData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_Dvr_PackNacData(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_PackNacData(RF, Indata) + type(RegFile), intent(inout) :: RF type(NacData), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_Dvr_PackNacData' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%origin_t) - call RegPack(Buf, InData%motionType) - call RegPack(Buf, InData%iMotion) - call RegPack(Buf, InData%yaw) - call RegPack(Buf, InData%yawSpeed) - call RegPack(Buf, InData%yawAcc) - call RegPack(Buf, InData%motionFileName) - call RegPack(Buf, allocated(InData%motion)) - if (allocated(InData%motion)) then - call RegPackBounds(Buf, 2, lbound(InData%motion, kind=B8Ki), ubound(InData%motion, kind=B8Ki)) - call RegPack(Buf, InData%motion) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%origin_t) + call RegPack(RF, InData%motionType) + call RegPack(RF, InData%iMotion) + call RegPack(RF, InData%yaw) + call RegPack(RF, InData%yawSpeed) + call RegPack(RF, InData%yawAcc) + call RegPack(RF, InData%motionFileName) + call RegPackAlloc(RF, InData%motion) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_Dvr_UnPackNacData(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_UnPackNacData(RF, OutData) + type(RegFile), intent(inout) :: RF type(NacData), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_Dvr_UnPackNacData' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%origin_t) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%motionType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%iMotion) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%yaw) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%yawSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%yawAcc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%motionFileName) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%motion)) deallocate(OutData%motion) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%motion(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%motion.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%motion) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%origin_t); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%motionType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%iMotion); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%yaw); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%yawSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%yawAcc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%motionFileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%motion); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_Dvr_CopyTwrData(SrcTwrDataData, DstTwrDataData, CtrlCode, ErrStat, ErrMsg) @@ -1015,22 +820,21 @@ subroutine AD_Dvr_DestroyTwrData(TwrDataData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AD_Dvr_PackTwrData(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_PackTwrData(RF, Indata) + type(RegFile), intent(inout) :: RF type(TwrData), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_Dvr_PackTwrData' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%origin_t) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%origin_t) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_Dvr_UnPackTwrData(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_UnPackTwrData(RF, OutData) + type(RegFile), intent(inout) :: RF type(TwrData), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_Dvr_UnPackTwrData' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%origin_t) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%origin_t); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_Dvr_CopyWTData(SrcWTDataData, DstWTDataData, CtrlCode, ErrStat, ErrMsg) @@ -1200,184 +1004,115 @@ subroutine AD_Dvr_DestroyWTData(WTDataData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_Dvr_PackWTData(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_PackWTData(RF, Indata) + type(RegFile), intent(inout) :: RF type(WTData), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_Dvr_PackWTData' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%originInit) - call RegPack(Buf, InData%orientationInit) - call NWTC_Library_PackMeshMapType(Buf, InData%map2twrPt) - call NWTC_Library_PackMeshMapType(Buf, InData%map2nacPt) - call NWTC_Library_PackMeshMapType(Buf, InData%map2hubPt) - call RegPack(Buf, allocated(InData%map2BldPt)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%originInit) + call RegPack(RF, InData%orientationInit) + call NWTC_Library_PackMeshMapType(RF, InData%map2twrPt) + call NWTC_Library_PackMeshMapType(RF, InData%map2nacPt) + call NWTC_Library_PackMeshMapType(RF, InData%map2hubPt) + call RegPack(RF, allocated(InData%map2BldPt)) if (allocated(InData%map2BldPt)) then - call RegPackBounds(Buf, 1, lbound(InData%map2BldPt, kind=B8Ki), ubound(InData%map2BldPt, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%map2BldPt, kind=B8Ki), ubound(InData%map2BldPt, kind=B8Ki)) LB(1:1) = lbound(InData%map2BldPt, kind=B8Ki) UB(1:1) = ubound(InData%map2BldPt, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%map2BldPt(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%map2BldPt(i1)) end do end if - call RegPack(Buf, allocated(InData%bld)) + call RegPack(RF, allocated(InData%bld)) if (allocated(InData%bld)) then - call RegPackBounds(Buf, 1, lbound(InData%bld, kind=B8Ki), ubound(InData%bld, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%bld, kind=B8Ki), ubound(InData%bld, kind=B8Ki)) LB(1:1) = lbound(InData%bld, kind=B8Ki) UB(1:1) = ubound(InData%bld, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_Dvr_PackBladeData(Buf, InData%bld(i1)) + call AD_Dvr_PackBladeData(RF, InData%bld(i1)) end do end if - call AD_Dvr_PackHubData(Buf, InData%hub) - call AD_Dvr_PackNacData(Buf, InData%nac) - call AD_Dvr_PackTwrData(Buf, InData%twr) - call RegPack(Buf, InData%numBlades) - call RegPack(Buf, InData%basicHAWTFormat) - call RegPack(Buf, InData%hasTower) - call RegPack(Buf, InData%projMod) - call RegPack(Buf, InData%BEM_Mod) - call RegPack(Buf, InData%HAWTprojection) - call RegPack(Buf, InData%motionType) - call RegPack(Buf, allocated(InData%motion)) - if (allocated(InData%motion)) then - call RegPackBounds(Buf, 2, lbound(InData%motion, kind=B8Ki), ubound(InData%motion, kind=B8Ki)) - call RegPack(Buf, InData%motion) - end if - call RegPack(Buf, InData%iMotion) - call RegPack(Buf, InData%degreeOfFreedom) - call RegPack(Buf, InData%amplitude) - call RegPack(Buf, InData%frequency) - call RegPack(Buf, InData%motionFileName) - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - call RegPack(Buf, allocated(InData%userSwapArray)) - if (allocated(InData%userSwapArray)) then - call RegPackBounds(Buf, 1, lbound(InData%userSwapArray, kind=B8Ki), ubound(InData%userSwapArray, kind=B8Ki)) - call RegPack(Buf, InData%userSwapArray) - end if - if (RegCheckErr(Buf, RoutineName)) return + call AD_Dvr_PackHubData(RF, InData%hub) + call AD_Dvr_PackNacData(RF, InData%nac) + call AD_Dvr_PackTwrData(RF, InData%twr) + call RegPack(RF, InData%numBlades) + call RegPack(RF, InData%basicHAWTFormat) + call RegPack(RF, InData%hasTower) + call RegPack(RF, InData%projMod) + call RegPack(RF, InData%BEM_Mod) + call RegPack(RF, InData%HAWTprojection) + call RegPack(RF, InData%motionType) + call RegPackAlloc(RF, InData%motion) + call RegPack(RF, InData%iMotion) + call RegPack(RF, InData%degreeOfFreedom) + call RegPack(RF, InData%amplitude) + call RegPack(RF, InData%frequency) + call RegPack(RF, InData%motionFileName) + call RegPackAlloc(RF, InData%WriteOutput) + call RegPackAlloc(RF, InData%userSwapArray) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_Dvr_UnPackWTData(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_UnPackWTData(RF, OutData) + type(RegFile), intent(inout) :: RF type(WTData), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_Dvr_UnPackWTData' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%originInit) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%orientationInit) - if (RegCheckErr(Buf, RoutineName)) return - call NWTC_Library_UnpackMeshMapType(Buf, OutData%map2twrPt) ! map2twrPt - call NWTC_Library_UnpackMeshMapType(Buf, OutData%map2nacPt) ! map2nacPt - call NWTC_Library_UnpackMeshMapType(Buf, OutData%map2hubPt) ! map2hubPt + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%originInit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%orientationInit); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackMeshMapType(RF, OutData%map2twrPt) ! map2twrPt + call NWTC_Library_UnpackMeshMapType(RF, OutData%map2nacPt) ! map2nacPt + call NWTC_Library_UnpackMeshMapType(RF, OutData%map2hubPt) ! map2hubPt if (allocated(OutData%map2BldPt)) deallocate(OutData%map2BldPt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%map2BldPt(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%map2BldPt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%map2BldPt.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%map2BldPt(i1)) ! map2BldPt + call NWTC_Library_UnpackMeshMapType(RF, OutData%map2BldPt(i1)) ! map2BldPt end do end if if (allocated(OutData%bld)) deallocate(OutData%bld) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%bld(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%bld.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%bld.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_Dvr_UnpackBladeData(Buf, OutData%bld(i1)) ! bld + call AD_Dvr_UnpackBladeData(RF, OutData%bld(i1)) ! bld end do end if - call AD_Dvr_UnpackHubData(Buf, OutData%hub) ! hub - call AD_Dvr_UnpackNacData(Buf, OutData%nac) ! nac - call AD_Dvr_UnpackTwrData(Buf, OutData%twr) ! twr - call RegUnpack(Buf, OutData%numBlades) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%basicHAWTFormat) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%hasTower) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%projMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BEM_Mod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HAWTprojection) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%motionType) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%motion)) deallocate(OutData%motion) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%motion(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%motion.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%motion) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%iMotion) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%degreeOfFreedom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%amplitude) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%frequency) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%motionFileName) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%userSwapArray)) deallocate(OutData%userSwapArray) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%userSwapArray(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%userSwapArray.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%userSwapArray) - if (RegCheckErr(Buf, RoutineName)) return - end if + call AD_Dvr_UnpackHubData(RF, OutData%hub) ! hub + call AD_Dvr_UnpackNacData(RF, OutData%nac) ! nac + call AD_Dvr_UnpackTwrData(RF, OutData%twr) ! twr + call RegUnpack(RF, OutData%numBlades); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%basicHAWTFormat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%hasTower); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%projMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BEM_Mod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HAWTprojection); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%motionType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%motion); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%iMotion); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%degreeOfFreedom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%amplitude); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%frequency); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%motionFileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%userSwapArray); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_Dvr_CopyDvr_SimData(SrcDvr_SimDataData, DstDvr_SimDataData, CtrlCode, ErrStat, ErrMsg) @@ -1501,150 +1236,111 @@ subroutine AD_Dvr_DestroyDvr_SimData(Dvr_SimDataData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD_Dvr_PackDvr_SimData(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_PackDvr_SimData(RF, Indata) + type(RegFile), intent(inout) :: RF type(Dvr_SimData), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_Dvr_PackDvr_SimData' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%AD_InputFile) - call RegPack(Buf, InData%MHK) - call RegPack(Buf, InData%AnalysisType) - call RegPack(Buf, InData%FldDens) - call RegPack(Buf, InData%KinVisc) - call RegPack(Buf, InData%SpdSound) - call RegPack(Buf, InData%Patm) - call RegPack(Buf, InData%Pvap) - call RegPack(Buf, InData%WtrDpth) - call RegPack(Buf, InData%MSL2SWL) - call RegPack(Buf, InData%numTurbines) - call RegPack(Buf, allocated(InData%WT)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%AD_InputFile) + call RegPack(RF, InData%MHK) + call RegPack(RF, InData%AnalysisType) + call RegPack(RF, InData%FldDens) + call RegPack(RF, InData%KinVisc) + call RegPack(RF, InData%SpdSound) + call RegPack(RF, InData%Patm) + call RegPack(RF, InData%Pvap) + call RegPack(RF, InData%WtrDpth) + call RegPack(RF, InData%MSL2SWL) + call RegPack(RF, InData%numTurbines) + call RegPack(RF, allocated(InData%WT)) if (allocated(InData%WT)) then - call RegPackBounds(Buf, 1, lbound(InData%WT, kind=B8Ki), ubound(InData%WT, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%WT, kind=B8Ki), ubound(InData%WT, kind=B8Ki)) LB(1:1) = lbound(InData%WT, kind=B8Ki) UB(1:1) = ubound(InData%WT, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_Dvr_PackWTData(Buf, InData%WT(i1)) + call AD_Dvr_PackWTData(RF, InData%WT(i1)) end do end if - call RegPack(Buf, InData%dT) - call RegPack(Buf, InData%tMax) - call RegPack(Buf, InData%numSteps) - call RegPack(Buf, InData%numCases) - call RegPack(Buf, allocated(InData%Cases)) + call RegPack(RF, InData%dT) + call RegPack(RF, InData%tMax) + call RegPack(RF, InData%numSteps) + call RegPack(RF, InData%numCases) + call RegPack(RF, allocated(InData%Cases)) if (allocated(InData%Cases)) then - call RegPackBounds(Buf, 1, lbound(InData%Cases, kind=B8Ki), ubound(InData%Cases, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Cases, kind=B8Ki), ubound(InData%Cases, kind=B8Ki)) LB(1:1) = lbound(InData%Cases, kind=B8Ki) UB(1:1) = ubound(InData%Cases, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_Dvr_PackDvr_Case(Buf, InData%Cases(i1)) + call AD_Dvr_PackDvr_Case(RF, InData%Cases(i1)) end do end if - call RegPack(Buf, InData%iCase) - call RegPack(Buf, allocated(InData%timeSeries)) - if (allocated(InData%timeSeries)) then - call RegPackBounds(Buf, 2, lbound(InData%timeSeries, kind=B8Ki), ubound(InData%timeSeries, kind=B8Ki)) - call RegPack(Buf, InData%timeSeries) - end if - call RegPack(Buf, InData%iTimeSeries) - call RegPack(Buf, InData%root) - call AD_Dvr_PackDvr_Outputs(Buf, InData%out) - call ADI_PackIW_InputData(Buf, InData%IW_InitInp) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%iCase) + call RegPackAlloc(RF, InData%timeSeries) + call RegPack(RF, InData%iTimeSeries) + call RegPack(RF, InData%root) + call AD_Dvr_PackDvr_Outputs(RF, InData%out) + call ADI_PackIW_InputData(RF, InData%IW_InitInp) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_Dvr_UnPackDvr_SimData(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_UnPackDvr_SimData(RF, OutData) + type(RegFile), intent(inout) :: RF type(Dvr_SimData), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_Dvr_UnPackDvr_SimData' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%AD_InputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MHK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AnalysisType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FldDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%KinVisc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SpdSound) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Patm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Pvap) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDpth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MSL2SWL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%numTurbines) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%AD_InputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MHK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AnalysisType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FldDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%KinVisc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SpdSound); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Patm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Pvap); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDpth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MSL2SWL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numTurbines); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%WT)) deallocate(OutData%WT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%WT(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WT.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_Dvr_UnpackWTData(Buf, OutData%WT(i1)) ! WT + call AD_Dvr_UnpackWTData(RF, OutData%WT(i1)) ! WT end do end if - call RegUnpack(Buf, OutData%dT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tMax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%numSteps) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%numCases) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%dT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tMax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numSteps); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numCases); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%Cases)) deallocate(OutData%Cases) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Cases(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cases.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cases.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_Dvr_UnpackDvr_Case(Buf, OutData%Cases(i1)) ! Cases + call AD_Dvr_UnpackDvr_Case(RF, OutData%Cases(i1)) ! Cases end do end if - call RegUnpack(Buf, OutData%iCase) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%timeSeries)) deallocate(OutData%timeSeries) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%timeSeries(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%timeSeries.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%timeSeries) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%iTimeSeries) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%root) - if (RegCheckErr(Buf, RoutineName)) return - call AD_Dvr_UnpackDvr_Outputs(Buf, OutData%out) ! out - call ADI_UnpackIW_InputData(Buf, OutData%IW_InitInp) ! IW_InitInp + call RegUnpack(RF, OutData%iCase); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%timeSeries); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%iTimeSeries); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%root); if (RegCheckErr(RF, RoutineName)) return + call AD_Dvr_UnpackDvr_Outputs(RF, OutData%out) ! out + call ADI_UnpackIW_InputData(RF, OutData%IW_InitInp) ! IW_InitInp end subroutine subroutine AD_Dvr_CopyAllData(SrcAllDataData, DstAllDataData, CtrlCode, ErrStat, ErrMsg) @@ -1689,34 +1385,31 @@ subroutine AD_Dvr_DestroyAllData(AllDataData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD_Dvr_PackAllData(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_PackAllData(RF, Indata) + type(RegFile), intent(inout) :: RF type(AllData), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_Dvr_PackAllData' - if (Buf%ErrStat >= AbortErrLev) return - call AD_Dvr_PackDvr_SimData(Buf, InData%dvr) - call ADI_PackData(Buf, InData%ADI) - call ADI_PackFED_Data(Buf, InData%FED) - call RegPack(Buf, InData%errStat) - call RegPack(Buf, InData%errMsg) - call RegPack(Buf, InData%initialized) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call AD_Dvr_PackDvr_SimData(RF, InData%dvr) + call ADI_PackData(RF, InData%ADI) + call ADI_PackFED_Data(RF, InData%FED) + call RegPack(RF, InData%errStat) + call RegPack(RF, InData%errMsg) + call RegPack(RF, InData%initialized) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_Dvr_UnPackAllData(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_Dvr_UnPackAllData(RF, OutData) + type(RegFile), intent(inout) :: RF type(AllData), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_Dvr_UnPackAllData' - if (Buf%ErrStat /= ErrID_None) return - call AD_Dvr_UnpackDvr_SimData(Buf, OutData%dvr) ! dvr - call ADI_UnpackData(Buf, OutData%ADI) ! ADI - call ADI_UnpackFED_Data(Buf, OutData%FED) ! FED - call RegUnpack(Buf, OutData%errStat) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%errMsg) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%initialized) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call AD_Dvr_UnpackDvr_SimData(RF, OutData%dvr) ! dvr + call ADI_UnpackData(RF, OutData%ADI) ! ADI + call ADI_UnpackFED_Data(RF, OutData%FED) ! FED + call RegUnpack(RF, OutData%errStat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%errMsg); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%initialized); if (RegCheckErr(RF, RoutineName)) return end subroutine END MODULE AeroDyn_Driver_Types !ENDOFREGISTRYGENERATEDFILE diff --git a/modules/aerodyn/src/AeroDyn_Inflow_Types.f90 b/modules/aerodyn/src/AeroDyn_Inflow_Types.f90 index c243d8f180..8d6ef20206 100644 --- a/modules/aerodyn/src/AeroDyn_Inflow_Types.f90 +++ b/modules/aerodyn/src/AeroDyn_Inflow_Types.f90 @@ -244,47 +244,43 @@ subroutine ADI_DestroyInflowWindData(InflowWindDataData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine ADI_PackInflowWindData(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_PackInflowWindData(RF, Indata) + type(RegFile), intent(inout) :: RF type(ADI_InflowWindData), intent(in) :: InData character(*), parameter :: RoutineName = 'ADI_PackInflowWindData' - if (Buf%ErrStat >= AbortErrLev) return - call InflowWind_PackContState(Buf, InData%x) - call InflowWind_PackDiscState(Buf, InData%xd) - call InflowWind_PackConstrState(Buf, InData%z) - call InflowWind_PackOtherState(Buf, InData%OtherSt) - call InflowWind_PackParam(Buf, InData%p) - call InflowWind_PackMisc(Buf, InData%m) - call InflowWind_PackInput(Buf, InData%u) - call InflowWind_PackOutput(Buf, InData%y) - call RegPack(Buf, InData%CompInflow) - call RegPack(Buf, InData%HWindSpeed) - call RegPack(Buf, InData%RefHt) - call RegPack(Buf, InData%PLExp) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call InflowWind_PackContState(RF, InData%x) + call InflowWind_PackDiscState(RF, InData%xd) + call InflowWind_PackConstrState(RF, InData%z) + call InflowWind_PackOtherState(RF, InData%OtherSt) + call InflowWind_PackParam(RF, InData%p) + call InflowWind_PackMisc(RF, InData%m) + call InflowWind_PackInput(RF, InData%u) + call InflowWind_PackOutput(RF, InData%y) + call RegPack(RF, InData%CompInflow) + call RegPack(RF, InData%HWindSpeed) + call RegPack(RF, InData%RefHt) + call RegPack(RF, InData%PLExp) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ADI_UnPackInflowWindData(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_UnPackInflowWindData(RF, OutData) + type(RegFile), intent(inout) :: RF type(ADI_InflowWindData), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ADI_UnPackInflowWindData' - if (Buf%ErrStat /= ErrID_None) return - call InflowWind_UnpackContState(Buf, OutData%x) ! x - call InflowWind_UnpackDiscState(Buf, OutData%xd) ! xd - call InflowWind_UnpackConstrState(Buf, OutData%z) ! z - call InflowWind_UnpackOtherState(Buf, OutData%OtherSt) ! OtherSt - call InflowWind_UnpackParam(Buf, OutData%p) ! p - call InflowWind_UnpackMisc(Buf, OutData%m) ! m - call InflowWind_UnpackInput(Buf, OutData%u) ! u - call InflowWind_UnpackOutput(Buf, OutData%y) ! y - call RegUnpack(Buf, OutData%CompInflow) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HWindSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RefHt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PLExp) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call InflowWind_UnpackContState(RF, OutData%x) ! x + call InflowWind_UnpackDiscState(RF, OutData%xd) ! xd + call InflowWind_UnpackConstrState(RF, OutData%z) ! z + call InflowWind_UnpackOtherState(RF, OutData%OtherSt) ! OtherSt + call InflowWind_UnpackParam(RF, OutData%p) ! p + call InflowWind_UnpackMisc(RF, OutData%m) ! m + call InflowWind_UnpackInput(RF, OutData%u) ! u + call InflowWind_UnpackOutput(RF, OutData%y) ! y + call RegUnpack(RF, OutData%CompInflow); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HWindSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RefHt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PLExp); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ADI_CopyIW_InputData(SrcIW_InputDataData, DstIW_InputDataData, CtrlCode, ErrStat, ErrMsg) @@ -324,45 +320,37 @@ subroutine ADI_DestroyIW_InputData(IW_InputDataData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine ADI_PackIW_InputData(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_PackIW_InputData(RF, Indata) + type(RegFile), intent(inout) :: RF type(ADI_IW_InputData), intent(in) :: InData character(*), parameter :: RoutineName = 'ADI_PackIW_InputData' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%InputFile) - call RegPack(Buf, InData%CompInflow) - call RegPack(Buf, InData%HWindSpeed) - call RegPack(Buf, InData%RefHt) - call RegPack(Buf, InData%PLExp) - call RegPack(Buf, InData%MHK) - call RegPack(Buf, InData%UseInputFile) - call NWTC_Library_PackFileInfoType(Buf, InData%PassedFileData) - call RegPack(Buf, InData%Linearize) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%InputFile) + call RegPack(RF, InData%CompInflow) + call RegPack(RF, InData%HWindSpeed) + call RegPack(RF, InData%RefHt) + call RegPack(RF, InData%PLExp) + call RegPack(RF, InData%MHK) + call RegPack(RF, InData%UseInputFile) + call NWTC_Library_PackFileInfoType(RF, InData%PassedFileData) + call RegPack(RF, InData%Linearize) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ADI_UnPackIW_InputData(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_UnPackIW_InputData(RF, OutData) + type(RegFile), intent(inout) :: RF type(ADI_IW_InputData), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ADI_UnPackIW_InputData' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%InputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompInflow) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HWindSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RefHt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PLExp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MHK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UseInputFile) - if (RegCheckErr(Buf, RoutineName)) return - call NWTC_Library_UnpackFileInfoType(Buf, OutData%PassedFileData) ! PassedFileData - call RegUnpack(Buf, OutData%Linearize) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%InputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompInflow); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HWindSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RefHt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PLExp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MHK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseInputFile); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackFileInfoType(RF, OutData%PassedFileData) ! PassedFileData + call RegUnpack(RF, OutData%Linearize); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ADI_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -404,38 +392,33 @@ subroutine ADI_DestroyInitInput(InitInputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine ADI_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(ADI_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'ADI_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call AD_PackInitInput(Buf, InData%AD) - call ADI_PackIW_InputData(Buf, InData%IW_InitInp) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, InData%storeHHVel) - call RegPack(Buf, InData%WrVTK) - call RegPack(Buf, InData%WrVTK_Type) - call RegPack(Buf, InData%WtrDpth) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call AD_PackInitInput(RF, InData%AD) + call ADI_PackIW_InputData(RF, InData%IW_InitInp) + call RegPack(RF, InData%RootName) + call RegPack(RF, InData%storeHHVel) + call RegPack(RF, InData%WrVTK) + call RegPack(RF, InData%WrVTK_Type) + call RegPack(RF, InData%WtrDpth) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ADI_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(ADI_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ADI_UnPackInitInput' - if (Buf%ErrStat /= ErrID_None) return - call AD_UnpackInitInput(Buf, OutData%AD) ! AD - call ADI_UnpackIW_InputData(Buf, OutData%IW_InitInp) ! IW_InitInp - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%storeHHVel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WrVTK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WrVTK_Type) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDpth) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call AD_UnpackInitInput(RF, OutData%AD) ! AD + call ADI_UnpackIW_InputData(RF, OutData%IW_InitInp) ! IW_InitInp + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%storeHHVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrVTK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrVTK_Type); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDpth); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ADI_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -498,62 +481,28 @@ subroutine ADI_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine ADI_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(ADI_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'ADI_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ADI_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(ADI_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ADI_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ADI_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -585,21 +534,21 @@ subroutine ADI_DestroyContState(ContStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine ADI_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(ADI_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'ADI_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call AD_PackContState(Buf, InData%AD) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call AD_PackContState(RF, InData%AD) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ADI_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(ADI_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ADI_UnPackContState' - if (Buf%ErrStat /= ErrID_None) return - call AD_UnpackContState(Buf, OutData%AD) ! AD + if (RF%ErrStat /= ErrID_None) return + call AD_UnpackContState(RF, OutData%AD) ! AD end subroutine subroutine ADI_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -631,21 +580,21 @@ subroutine ADI_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine ADI_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(ADI_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'ADI_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call AD_PackDiscState(Buf, InData%AD) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call AD_PackDiscState(RF, InData%AD) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ADI_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(ADI_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ADI_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call AD_UnpackDiscState(Buf, OutData%AD) ! AD + if (RF%ErrStat /= ErrID_None) return + call AD_UnpackDiscState(RF, OutData%AD) ! AD end subroutine subroutine ADI_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -677,21 +626,21 @@ subroutine ADI_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine ADI_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(ADI_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'ADI_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call AD_PackConstrState(Buf, InData%AD) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call AD_PackConstrState(RF, InData%AD) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ADI_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(ADI_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ADI_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call AD_UnpackConstrState(Buf, OutData%AD) ! AD + if (RF%ErrStat /= ErrID_None) return + call AD_UnpackConstrState(RF, OutData%AD) ! AD end subroutine subroutine ADI_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -723,21 +672,21 @@ subroutine ADI_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine ADI_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(ADI_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'ADI_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return - call AD_PackOtherState(Buf, InData%AD) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call AD_PackOtherState(RF, InData%AD) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ADI_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(ADI_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ADI_UnPackOtherState' - if (Buf%ErrStat /= ErrID_None) return - call AD_UnpackOtherState(Buf, OutData%AD) ! AD + if (RF%ErrStat /= ErrID_None) return + call AD_UnpackOtherState(RF, OutData%AD) ! AD end subroutine subroutine ADI_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -803,51 +752,49 @@ subroutine ADI_DestroyMisc(MiscData, ErrStat, ErrMsg) end if end subroutine -subroutine ADI_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(ADI_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'ADI_PackMisc' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call AD_PackMisc(Buf, InData%AD) - call ADI_PackInflowWindData(Buf, InData%IW) - call RegPack(Buf, allocated(InData%VTK_surfaces)) + if (RF%ErrStat >= AbortErrLev) return + call AD_PackMisc(RF, InData%AD) + call ADI_PackInflowWindData(RF, InData%IW) + call RegPack(RF, allocated(InData%VTK_surfaces)) if (allocated(InData%VTK_surfaces)) then - call RegPackBounds(Buf, 1, lbound(InData%VTK_surfaces, kind=B8Ki), ubound(InData%VTK_surfaces, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%VTK_surfaces, kind=B8Ki), ubound(InData%VTK_surfaces, kind=B8Ki)) LB(1:1) = lbound(InData%VTK_surfaces, kind=B8Ki) UB(1:1) = ubound(InData%VTK_surfaces, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackVTK_RotSurfaceType(Buf, InData%VTK_surfaces(i1)) + call AD_PackVTK_RotSurfaceType(RF, InData%VTK_surfaces(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ADI_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(ADI_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ADI_UnPackMisc' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call AD_UnpackMisc(Buf, OutData%AD) ! AD - call ADI_UnpackInflowWindData(Buf, OutData%IW) ! IW + if (RF%ErrStat /= ErrID_None) return + call AD_UnpackMisc(RF, OutData%AD) ! AD + call ADI_UnpackInflowWindData(RF, OutData%IW) ! IW if (allocated(OutData%VTK_surfaces)) deallocate(OutData%VTK_surfaces) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%VTK_surfaces(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VTK_surfaces.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VTK_surfaces.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackVTK_RotSurfaceType(Buf, OutData%VTK_surfaces(i1)) ! VTK_surfaces + call AD_UnpackVTK_RotSurfaceType(RF, OutData%VTK_surfaces(i1)) ! VTK_surfaces end do end if end subroutine @@ -888,42 +835,35 @@ subroutine ADI_DestroyParam(ParamData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine ADI_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(ADI_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'ADI_PackParam' - if (Buf%ErrStat >= AbortErrLev) return - call AD_PackParam(Buf, InData%AD) - call RegPack(Buf, InData%dt) - call RegPack(Buf, InData%storeHHVel) - call RegPack(Buf, InData%wrVTK) - call RegPack(Buf, InData%WrVTK_Type) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, InData%MHK) - call RegPack(Buf, InData%WtrDpth) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call AD_PackParam(RF, InData%AD) + call RegPack(RF, InData%dt) + call RegPack(RF, InData%storeHHVel) + call RegPack(RF, InData%wrVTK) + call RegPack(RF, InData%WrVTK_Type) + call RegPack(RF, InData%NumOuts) + call RegPack(RF, InData%MHK) + call RegPack(RF, InData%WtrDpth) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ADI_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(ADI_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ADI_UnPackParam' - if (Buf%ErrStat /= ErrID_None) return - call AD_UnpackParam(Buf, OutData%AD) ! AD - call RegUnpack(Buf, OutData%dt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%storeHHVel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%wrVTK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WrVTK_Type) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MHK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDpth) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call AD_UnpackParam(RF, OutData%AD) ! AD + call RegUnpack(RF, OutData%dt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%storeHHVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%wrVTK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrVTK_Type); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MHK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDpth); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ADI_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -955,21 +895,21 @@ subroutine ADI_DestroyInput(InputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine ADI_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(ADI_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'ADI_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call AD_PackInput(Buf, InData%AD) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call AD_PackInput(RF, InData%AD) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ADI_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(ADI_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ADI_UnPackInput' - if (Buf%ErrStat /= ErrID_None) return - call AD_UnpackInput(Buf, OutData%AD) ! AD + if (RF%ErrStat /= ErrID_None) return + call AD_UnpackInput(RF, OutData%AD) ! AD end subroutine subroutine ADI_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -1048,84 +988,32 @@ subroutine ADI_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine ADI_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(ADI_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'ADI_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call AD_PackOutput(Buf, InData%AD) - call RegPack(Buf, allocated(InData%HHVel)) - if (allocated(InData%HHVel)) then - call RegPackBounds(Buf, 2, lbound(InData%HHVel, kind=B8Ki), ubound(InData%HHVel, kind=B8Ki)) - call RegPack(Buf, InData%HHVel) - end if - call RegPack(Buf, InData%PLExp) - call RegPack(Buf, allocated(InData%IW_WriteOutput)) - if (allocated(InData%IW_WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%IW_WriteOutput, kind=B8Ki), ubound(InData%IW_WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%IW_WriteOutput) - end if - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call AD_PackOutput(RF, InData%AD) + call RegPackAlloc(RF, InData%HHVel) + call RegPack(RF, InData%PLExp) + call RegPackAlloc(RF, InData%IW_WriteOutput) + call RegPackAlloc(RF, InData%WriteOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ADI_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(ADI_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ADI_UnPackOutput' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call AD_UnpackOutput(Buf, OutData%AD) ! AD - if (allocated(OutData%HHVel)) deallocate(OutData%HHVel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%HHVel(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%HHVel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%HHVel) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%PLExp) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%IW_WriteOutput)) deallocate(OutData%IW_WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IW_WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IW_WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IW_WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call AD_UnpackOutput(RF, OutData%AD) ! AD + call RegUnpackAlloc(RF, OutData%HHVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PLExp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IW_WriteOutput); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ADI_CopyData(SrcDataData, DstDataData, CtrlCode, ErrStat, ErrMsg) @@ -1311,170 +1199,143 @@ subroutine ADI_DestroyData(DataData, ErrStat, ErrMsg) end if end subroutine -subroutine ADI_PackData(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_PackData(RF, Indata) + type(RegFile), intent(inout) :: RF type(ADI_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'ADI_PackData' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%x)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%x)) if (allocated(InData%x)) then - call RegPackBounds(Buf, 1, lbound(InData%x, kind=B8Ki), ubound(InData%x, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%x, kind=B8Ki), ubound(InData%x, kind=B8Ki)) LB(1:1) = lbound(InData%x, kind=B8Ki) UB(1:1) = ubound(InData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call ADI_PackContState(Buf, InData%x(i1)) + call ADI_PackContState(RF, InData%x(i1)) end do end if - call RegPack(Buf, allocated(InData%xd)) + call RegPack(RF, allocated(InData%xd)) if (allocated(InData%xd)) then - call RegPackBounds(Buf, 1, lbound(InData%xd, kind=B8Ki), ubound(InData%xd, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%xd, kind=B8Ki), ubound(InData%xd, kind=B8Ki)) LB(1:1) = lbound(InData%xd, kind=B8Ki) UB(1:1) = ubound(InData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call ADI_PackDiscState(Buf, InData%xd(i1)) + call ADI_PackDiscState(RF, InData%xd(i1)) end do end if - call RegPack(Buf, allocated(InData%z)) + call RegPack(RF, allocated(InData%z)) if (allocated(InData%z)) then - call RegPackBounds(Buf, 1, lbound(InData%z, kind=B8Ki), ubound(InData%z, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%z, kind=B8Ki), ubound(InData%z, kind=B8Ki)) LB(1:1) = lbound(InData%z, kind=B8Ki) UB(1:1) = ubound(InData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call ADI_PackConstrState(Buf, InData%z(i1)) + call ADI_PackConstrState(RF, InData%z(i1)) end do end if - call RegPack(Buf, allocated(InData%OtherState)) + call RegPack(RF, allocated(InData%OtherState)) if (allocated(InData%OtherState)) then - call RegPackBounds(Buf, 1, lbound(InData%OtherState, kind=B8Ki), ubound(InData%OtherState, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OtherState, kind=B8Ki), ubound(InData%OtherState, kind=B8Ki)) LB(1:1) = lbound(InData%OtherState, kind=B8Ki) UB(1:1) = ubound(InData%OtherState, kind=B8Ki) do i1 = LB(1), UB(1) - call ADI_PackOtherState(Buf, InData%OtherState(i1)) + call ADI_PackOtherState(RF, InData%OtherState(i1)) end do end if - call ADI_PackParam(Buf, InData%p) - call ADI_PackMisc(Buf, InData%m) - call RegPack(Buf, allocated(InData%u)) + call ADI_PackParam(RF, InData%p) + call ADI_PackMisc(RF, InData%m) + call RegPack(RF, allocated(InData%u)) if (allocated(InData%u)) then - call RegPackBounds(Buf, 1, lbound(InData%u, kind=B8Ki), ubound(InData%u, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u, kind=B8Ki), ubound(InData%u, kind=B8Ki)) LB(1:1) = lbound(InData%u, kind=B8Ki) UB(1:1) = ubound(InData%u, kind=B8Ki) do i1 = LB(1), UB(1) - call ADI_PackInput(Buf, InData%u(i1)) + call ADI_PackInput(RF, InData%u(i1)) end do end if - call ADI_PackOutput(Buf, InData%y) - call RegPack(Buf, allocated(InData%inputTimes)) - if (allocated(InData%inputTimes)) then - call RegPackBounds(Buf, 1, lbound(InData%inputTimes, kind=B8Ki), ubound(InData%inputTimes, kind=B8Ki)) - call RegPack(Buf, InData%inputTimes) - end if - if (RegCheckErr(Buf, RoutineName)) return + call ADI_PackOutput(RF, InData%y) + call RegPackAlloc(RF, InData%inputTimes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ADI_UnPackData(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_UnPackData(RF, OutData) + type(RegFile), intent(inout) :: RF type(ADI_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ADI_UnPackData' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%x)) deallocate(OutData%x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%x(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ADI_UnpackContState(Buf, OutData%x(i1)) ! x + call ADI_UnpackContState(RF, OutData%x(i1)) ! x end do end if if (allocated(OutData%xd)) deallocate(OutData%xd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xd(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ADI_UnpackDiscState(Buf, OutData%xd(i1)) ! xd + call ADI_UnpackDiscState(RF, OutData%xd(i1)) ! xd end do end if if (allocated(OutData%z)) deallocate(OutData%z) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%z(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ADI_UnpackConstrState(Buf, OutData%z(i1)) ! z + call ADI_UnpackConstrState(RF, OutData%z(i1)) ! z end do end if if (allocated(OutData%OtherState)) deallocate(OutData%OtherState) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OtherState(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherState.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherState.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ADI_UnpackOtherState(Buf, OutData%OtherState(i1)) ! OtherState + call ADI_UnpackOtherState(RF, OutData%OtherState(i1)) ! OtherState end do end if - call ADI_UnpackParam(Buf, OutData%p) ! p - call ADI_UnpackMisc(Buf, OutData%m) ! m + call ADI_UnpackParam(RF, OutData%p) ! p + call ADI_UnpackMisc(RF, OutData%m) ! m if (allocated(OutData%u)) deallocate(OutData%u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ADI_UnpackInput(Buf, OutData%u(i1)) ! u + call ADI_UnpackInput(RF, OutData%u(i1)) ! u end do end if - call ADI_UnpackOutput(Buf, OutData%y) ! y - if (allocated(OutData%inputTimes)) deallocate(OutData%inputTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%inputTimes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%inputTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%inputTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if + call ADI_UnpackOutput(RF, OutData%y) ! y + call RegUnpackAlloc(RF, OutData%inputTimes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ADI_CopyRotFED(SrcRotFEDData, DstRotFEDData, CtrlCode, ErrStat, ErrMsg) @@ -1658,150 +1519,139 @@ subroutine ADI_DestroyRotFED(RotFEDData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine ADI_PackRotFED(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_PackRotFED(RF, Indata) + type(RegFile), intent(inout) :: RF type(RotFED), intent(in) :: InData character(*), parameter :: RoutineName = 'ADI_PackRotFED' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%PlatformPtMesh) - call MeshPack(Buf, InData%TwrPtMesh) - call MeshPack(Buf, InData%TwrPtMeshAD) - call MeshPack(Buf, InData%NacelleMotion) - call MeshPack(Buf, InData%HubPtMotion) - call RegPack(Buf, allocated(InData%BladeRootMotion)) + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%PlatformPtMesh) + call MeshPack(RF, InData%TwrPtMesh) + call MeshPack(RF, InData%TwrPtMeshAD) + call MeshPack(RF, InData%NacelleMotion) + call MeshPack(RF, InData%HubPtMotion) + call RegPack(RF, allocated(InData%BladeRootMotion)) if (allocated(InData%BladeRootMotion)) then - call RegPackBounds(Buf, 1, lbound(InData%BladeRootMotion, kind=B8Ki), ubound(InData%BladeRootMotion, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BladeRootMotion, kind=B8Ki), ubound(InData%BladeRootMotion, kind=B8Ki)) LB(1:1) = lbound(InData%BladeRootMotion, kind=B8Ki) UB(1:1) = ubound(InData%BladeRootMotion, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%BladeRootMotion(i1)) + call MeshPack(RF, InData%BladeRootMotion(i1)) end do end if - call RegPack(Buf, allocated(InData%BladeLn2Mesh)) + call RegPack(RF, allocated(InData%BladeLn2Mesh)) if (allocated(InData%BladeLn2Mesh)) then - call RegPackBounds(Buf, 1, lbound(InData%BladeLn2Mesh, kind=B8Ki), ubound(InData%BladeLn2Mesh, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BladeLn2Mesh, kind=B8Ki), ubound(InData%BladeLn2Mesh, kind=B8Ki)) LB(1:1) = lbound(InData%BladeLn2Mesh, kind=B8Ki) UB(1:1) = ubound(InData%BladeLn2Mesh, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%BladeLn2Mesh(i1)) + call MeshPack(RF, InData%BladeLn2Mesh(i1)) end do end if - call RegPack(Buf, InData%hasTower) - call RegPack(Buf, InData%rigidBlades) - call RegPack(Buf, InData%numBlades) - call NWTC_Library_PackMeshMapType(Buf, InData%ED_P_2_AD_P_T) - call NWTC_Library_PackMeshMapType(Buf, InData%AD_P_2_AD_L_T) - call RegPack(Buf, allocated(InData%AD_P_2_AD_L_B)) + call RegPack(RF, InData%hasTower) + call RegPack(RF, InData%rigidBlades) + call RegPack(RF, InData%numBlades) + call NWTC_Library_PackMeshMapType(RF, InData%ED_P_2_AD_P_T) + call NWTC_Library_PackMeshMapType(RF, InData%AD_P_2_AD_L_T) + call RegPack(RF, allocated(InData%AD_P_2_AD_L_B)) if (allocated(InData%AD_P_2_AD_L_B)) then - call RegPackBounds(Buf, 1, lbound(InData%AD_P_2_AD_L_B, kind=B8Ki), ubound(InData%AD_P_2_AD_L_B, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%AD_P_2_AD_L_B, kind=B8Ki), ubound(InData%AD_P_2_AD_L_B, kind=B8Ki)) LB(1:1) = lbound(InData%AD_P_2_AD_L_B, kind=B8Ki) UB(1:1) = ubound(InData%AD_P_2_AD_L_B, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%AD_P_2_AD_L_B(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%AD_P_2_AD_L_B(i1)) end do end if - call NWTC_Library_PackMeshMapType(Buf, InData%ED_P_2_AD_P_TF) - call RegPack(Buf, allocated(InData%ED_P_2_AD_P_R)) + call NWTC_Library_PackMeshMapType(RF, InData%ED_P_2_AD_P_TF) + call RegPack(RF, allocated(InData%ED_P_2_AD_P_R)) if (allocated(InData%ED_P_2_AD_P_R)) then - call RegPackBounds(Buf, 1, lbound(InData%ED_P_2_AD_P_R, kind=B8Ki), ubound(InData%ED_P_2_AD_P_R, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%ED_P_2_AD_P_R, kind=B8Ki), ubound(InData%ED_P_2_AD_P_R, kind=B8Ki)) LB(1:1) = lbound(InData%ED_P_2_AD_P_R, kind=B8Ki) UB(1:1) = ubound(InData%ED_P_2_AD_P_R, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%ED_P_2_AD_P_R(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%ED_P_2_AD_P_R(i1)) end do end if - call NWTC_Library_PackMeshMapType(Buf, InData%ED_P_2_AD_P_H) - call NWTC_Library_PackMeshMapType(Buf, InData%ED_P_2_AD_P_N) - if (RegCheckErr(Buf, RoutineName)) return + call NWTC_Library_PackMeshMapType(RF, InData%ED_P_2_AD_P_H) + call NWTC_Library_PackMeshMapType(RF, InData%ED_P_2_AD_P_N) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ADI_UnPackRotFED(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_UnPackRotFED(RF, OutData) + type(RegFile), intent(inout) :: RF type(RotFED), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ADI_UnPackRotFED' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%PlatformPtMesh) ! PlatformPtMesh - call MeshUnpack(Buf, OutData%TwrPtMesh) ! TwrPtMesh - call MeshUnpack(Buf, OutData%TwrPtMeshAD) ! TwrPtMeshAD - call MeshUnpack(Buf, OutData%NacelleMotion) ! NacelleMotion - call MeshUnpack(Buf, OutData%HubPtMotion) ! HubPtMotion + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%PlatformPtMesh) ! PlatformPtMesh + call MeshUnpack(RF, OutData%TwrPtMesh) ! TwrPtMesh + call MeshUnpack(RF, OutData%TwrPtMeshAD) ! TwrPtMeshAD + call MeshUnpack(RF, OutData%NacelleMotion) ! NacelleMotion + call MeshUnpack(RF, OutData%HubPtMotion) ! HubPtMotion if (allocated(OutData%BladeRootMotion)) deallocate(OutData%BladeRootMotion) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BladeRootMotion(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeRootMotion.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeRootMotion.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%BladeRootMotion(i1)) ! BladeRootMotion + call MeshUnpack(RF, OutData%BladeRootMotion(i1)) ! BladeRootMotion end do end if if (allocated(OutData%BladeLn2Mesh)) deallocate(OutData%BladeLn2Mesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BladeLn2Mesh(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeLn2Mesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeLn2Mesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%BladeLn2Mesh(i1)) ! BladeLn2Mesh + call MeshUnpack(RF, OutData%BladeLn2Mesh(i1)) ! BladeLn2Mesh end do end if - call RegUnpack(Buf, OutData%hasTower) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rigidBlades) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%numBlades) - if (RegCheckErr(Buf, RoutineName)) return - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_P_2_AD_P_T) ! ED_P_2_AD_P_T - call NWTC_Library_UnpackMeshMapType(Buf, OutData%AD_P_2_AD_L_T) ! AD_P_2_AD_L_T + call RegUnpack(RF, OutData%hasTower); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rigidBlades); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numBlades); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_P_2_AD_P_T) ! ED_P_2_AD_P_T + call NWTC_Library_UnpackMeshMapType(RF, OutData%AD_P_2_AD_L_T) ! AD_P_2_AD_L_T if (allocated(OutData%AD_P_2_AD_L_B)) deallocate(OutData%AD_P_2_AD_L_B) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%AD_P_2_AD_L_B(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AD_P_2_AD_L_B.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AD_P_2_AD_L_B.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%AD_P_2_AD_L_B(i1)) ! AD_P_2_AD_L_B + call NWTC_Library_UnpackMeshMapType(RF, OutData%AD_P_2_AD_L_B(i1)) ! AD_P_2_AD_L_B end do end if - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_P_2_AD_P_TF) ! ED_P_2_AD_P_TF + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_P_2_AD_P_TF) ! ED_P_2_AD_P_TF if (allocated(OutData%ED_P_2_AD_P_R)) deallocate(OutData%ED_P_2_AD_P_R) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%ED_P_2_AD_P_R(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ED_P_2_AD_P_R.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ED_P_2_AD_P_R.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_P_2_AD_P_R(i1)) ! ED_P_2_AD_P_R + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_P_2_AD_P_R(i1)) ! ED_P_2_AD_P_R end do end if - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_P_2_AD_P_H) ! ED_P_2_AD_P_H - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_P_2_AD_P_N) ! ED_P_2_AD_P_N + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_P_2_AD_P_H) ! ED_P_2_AD_P_H + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_P_2_AD_P_N) ! ED_P_2_AD_P_N end subroutine subroutine ADI_CopyFED_Data(SrcFED_DataData, DstFED_DataData, CtrlCode, ErrStat, ErrMsg) @@ -1857,47 +1707,45 @@ subroutine ADI_DestroyFED_Data(FED_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine ADI_PackFED_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_PackFED_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(FED_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'ADI_PackFED_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WT)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%WT)) if (allocated(InData%WT)) then - call RegPackBounds(Buf, 1, lbound(InData%WT, kind=B8Ki), ubound(InData%WT, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%WT, kind=B8Ki), ubound(InData%WT, kind=B8Ki)) LB(1:1) = lbound(InData%WT, kind=B8Ki) UB(1:1) = ubound(InData%WT, kind=B8Ki) do i1 = LB(1), UB(1) - call ADI_PackRotFED(Buf, InData%WT(i1)) + call ADI_PackRotFED(RF, InData%WT(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ADI_UnPackFED_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ADI_UnPackFED_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(FED_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ADI_UnPackFED_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%WT)) deallocate(OutData%WT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%WT(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WT.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ADI_UnpackRotFED(Buf, OutData%WT(i1)) ! WT + call ADI_UnpackRotFED(RF, OutData%WT(i1)) ! WT end do end if end subroutine diff --git a/modules/aerodyn/src/AeroDyn_Types.f90 b/modules/aerodyn/src/AeroDyn_Types.f90 index 09b91be6f3..fa691fffed 100644 --- a/modules/aerodyn/src/AeroDyn_Types.f90 +++ b/modules/aerodyn/src/AeroDyn_Types.f90 @@ -524,34 +524,29 @@ subroutine AD_DestroyTFinParameterType(TFinParameterTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AD_PackTFinParameterType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackTFinParameterType(RF, Indata) + type(RegFile), intent(inout) :: RF type(TFinParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackTFinParameterType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%TFinMod) - call RegPack(Buf, InData%TFinChord) - call RegPack(Buf, InData%TFinArea) - call RegPack(Buf, InData%TFinIndMod) - call RegPack(Buf, InData%TFinAFID) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%TFinMod) + call RegPack(RF, InData%TFinChord) + call RegPack(RF, InData%TFinArea) + call RegPack(RF, InData%TFinIndMod) + call RegPack(RF, InData%TFinAFID) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackTFinParameterType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackTFinParameterType(RF, OutData) + type(RegFile), intent(inout) :: RF type(TFinParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackTFinParameterType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%TFinMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinChord) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinArea) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinIndMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinAFID) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%TFinMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinChord); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinArea); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinIndMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinAFID); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_CopyTFinInputFileType(SrcTFinInputFileTypeData, DstTFinInputFileTypeData, CtrlCode, ErrStat, ErrMsg) @@ -581,40 +576,33 @@ subroutine AD_DestroyTFinInputFileType(TFinInputFileTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AD_PackTFinInputFileType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackTFinInputFileType(RF, Indata) + type(RegFile), intent(inout) :: RF type(TFinInputFileType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackTFinInputFileType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%TFinMod) - call RegPack(Buf, InData%TFinChord) - call RegPack(Buf, InData%TFinArea) - call RegPack(Buf, InData%TFinRefP_n) - call RegPack(Buf, InData%TFinAngles) - call RegPack(Buf, InData%TFinIndMod) - call RegPack(Buf, InData%TFinAFID) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%TFinMod) + call RegPack(RF, InData%TFinChord) + call RegPack(RF, InData%TFinArea) + call RegPack(RF, InData%TFinRefP_n) + call RegPack(RF, InData%TFinAngles) + call RegPack(RF, InData%TFinIndMod) + call RegPack(RF, InData%TFinAFID) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackTFinInputFileType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackTFinInputFileType(RF, OutData) + type(RegFile), intent(inout) :: RF type(TFinInputFileType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackTFinInputFileType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%TFinMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinChord) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinArea) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinRefP_n) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinAngles) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinIndMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinAFID) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%TFinMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinChord); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinArea); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinRefP_n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinAngles); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinIndMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinAFID); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_CopyVTK_BLSurfaceType(SrcVTK_BLSurfaceTypeData, DstVTK_BLSurfaceTypeData, CtrlCode, ErrStat, ErrMsg) @@ -654,41 +642,24 @@ subroutine AD_DestroyVTK_BLSurfaceType(VTK_BLSurfaceTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_PackVTK_BLSurfaceType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackVTK_BLSurfaceType(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD_VTK_BLSurfaceType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackVTK_BLSurfaceType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%AirfoilCoords)) - if (allocated(InData%AirfoilCoords)) then - call RegPackBounds(Buf, 3, lbound(InData%AirfoilCoords, kind=B8Ki), ubound(InData%AirfoilCoords, kind=B8Ki)) - call RegPack(Buf, InData%AirfoilCoords) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%AirfoilCoords) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackVTK_BLSurfaceType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackVTK_BLSurfaceType(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD_VTK_BLSurfaceType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackVTK_BLSurfaceType' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%AirfoilCoords)) deallocate(OutData%AirfoilCoords) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AirfoilCoords(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AirfoilCoords.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AirfoilCoords) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%AirfoilCoords); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_CopyVTK_RotSurfaceType(SrcVTK_RotSurfaceTypeData, DstVTK_RotSurfaceTypeData, CtrlCode, ErrStat, ErrMsg) @@ -759,68 +730,49 @@ subroutine AD_DestroyVTK_RotSurfaceType(VTK_RotSurfaceTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_PackVTK_RotSurfaceType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackVTK_RotSurfaceType(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD_VTK_RotSurfaceType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackVTK_RotSurfaceType' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%BladeShape)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%BladeShape)) if (allocated(InData%BladeShape)) then - call RegPackBounds(Buf, 1, lbound(InData%BladeShape, kind=B8Ki), ubound(InData%BladeShape, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BladeShape, kind=B8Ki), ubound(InData%BladeShape, kind=B8Ki)) LB(1:1) = lbound(InData%BladeShape, kind=B8Ki) UB(1:1) = ubound(InData%BladeShape, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackVTK_BLSurfaceType(Buf, InData%BladeShape(i1)) + call AD_PackVTK_BLSurfaceType(RF, InData%BladeShape(i1)) end do end if - call RegPack(Buf, allocated(InData%TowerRad)) - if (allocated(InData%TowerRad)) then - call RegPackBounds(Buf, 1, lbound(InData%TowerRad, kind=B8Ki), ubound(InData%TowerRad, kind=B8Ki)) - call RegPack(Buf, InData%TowerRad) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%TowerRad) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackVTK_RotSurfaceType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackVTK_RotSurfaceType(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD_VTK_RotSurfaceType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackVTK_RotSurfaceType' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%BladeShape)) deallocate(OutData%BladeShape) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BladeShape(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeShape.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeShape.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackVTK_BLSurfaceType(Buf, OutData%BladeShape(i1)) ! BladeShape + call AD_UnpackVTK_BLSurfaceType(RF, OutData%BladeShape(i1)) ! BladeShape end do end if - if (allocated(OutData%TowerRad)) deallocate(OutData%TowerRad) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TowerRad(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TowerRad.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TowerRad) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%TowerRad); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_CopyRotInitInputType(SrcRotInitInputTypeData, DstRotInitInputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -884,87 +836,44 @@ subroutine AD_DestroyRotInitInputType(RotInitInputTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_PackRotInitInputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackRotInitInputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(RotInitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackRotInitInputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%NumBlades) - call RegPack(Buf, InData%originInit) - call RegPack(Buf, InData%HubPosition) - call RegPack(Buf, InData%HubOrientation) - call RegPack(Buf, allocated(InData%BladeRootPosition)) - if (allocated(InData%BladeRootPosition)) then - call RegPackBounds(Buf, 2, lbound(InData%BladeRootPosition, kind=B8Ki), ubound(InData%BladeRootPosition, kind=B8Ki)) - call RegPack(Buf, InData%BladeRootPosition) - end if - call RegPack(Buf, allocated(InData%BladeRootOrientation)) - if (allocated(InData%BladeRootOrientation)) then - call RegPackBounds(Buf, 3, lbound(InData%BladeRootOrientation, kind=B8Ki), ubound(InData%BladeRootOrientation, kind=B8Ki)) - call RegPack(Buf, InData%BladeRootOrientation) - end if - call RegPack(Buf, InData%NacellePosition) - call RegPack(Buf, InData%NacelleOrientation) - call RegPack(Buf, InData%AeroProjMod) - call RegPack(Buf, InData%AeroBEM_Mod) - call RegPack(Buf, InData%RotSpeed) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%NumBlades) + call RegPack(RF, InData%originInit) + call RegPack(RF, InData%HubPosition) + call RegPack(RF, InData%HubOrientation) + call RegPackAlloc(RF, InData%BladeRootPosition) + call RegPackAlloc(RF, InData%BladeRootOrientation) + call RegPack(RF, InData%NacellePosition) + call RegPack(RF, InData%NacelleOrientation) + call RegPack(RF, InData%AeroProjMod) + call RegPack(RF, InData%AeroBEM_Mod) + call RegPack(RF, InData%RotSpeed) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackRotInitInputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackRotInitInputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(RotInitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackRotInitInputType' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%NumBlades) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%originInit) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubPosition) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubOrientation) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BladeRootPosition)) deallocate(OutData%BladeRootPosition) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BladeRootPosition(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeRootPosition.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BladeRootPosition) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BladeRootOrientation)) deallocate(OutData%BladeRootOrientation) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BladeRootOrientation(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeRootOrientation.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BladeRootOrientation) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NacellePosition) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacelleOrientation) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AeroProjMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AeroBEM_Mod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotSpeed) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%NumBlades); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%originInit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubPosition); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubOrientation); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BladeRootPosition); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BladeRootOrientation); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacellePosition); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacelleOrientation); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AeroProjMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AeroBEM_Mod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotSpeed); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -1039,93 +948,77 @@ subroutine AD_DestroyInitInput(InitInputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackInitInput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%rotors)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%rotors)) if (allocated(InData%rotors)) then - call RegPackBounds(Buf, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) LB(1:1) = lbound(InData%rotors, kind=B8Ki) UB(1:1) = ubound(InData%rotors, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackRotInitInputType(Buf, InData%rotors(i1)) + call AD_PackRotInitInputType(RF, InData%rotors(i1)) end do end if - call RegPack(Buf, InData%InputFile) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, InData%UsePrimaryInputFile) - call NWTC_Library_PackFileInfoType(Buf, InData%PassedPrimaryInputData) - call RegPack(Buf, InData%Linearize) - call RegPack(Buf, InData%CompAeroMaps) - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, InData%MHK) - call RegPack(Buf, InData%defFldDens) - call RegPack(Buf, InData%defKinVisc) - call RegPack(Buf, InData%defSpdSound) - call RegPack(Buf, InData%defPatm) - call RegPack(Buf, InData%defPvap) - call RegPack(Buf, InData%WtrDpth) - call RegPack(Buf, InData%MSL2SWL) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%InputFile) + call RegPack(RF, InData%RootName) + call RegPack(RF, InData%UsePrimaryInputFile) + call NWTC_Library_PackFileInfoType(RF, InData%PassedPrimaryInputData) + call RegPack(RF, InData%Linearize) + call RegPack(RF, InData%CompAeroMaps) + call RegPack(RF, InData%Gravity) + call RegPack(RF, InData%MHK) + call RegPack(RF, InData%defFldDens) + call RegPack(RF, InData%defKinVisc) + call RegPack(RF, InData%defSpdSound) + call RegPack(RF, InData%defPatm) + call RegPack(RF, InData%defPvap) + call RegPack(RF, InData%WtrDpth) + call RegPack(RF, InData%MSL2SWL) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackInitInput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%rotors)) deallocate(OutData%rotors) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%rotors(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackRotInitInputType(Buf, OutData%rotors(i1)) ! rotors + call AD_UnpackRotInitInputType(RF, OutData%rotors(i1)) ! rotors end do end if - call RegUnpack(Buf, OutData%InputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UsePrimaryInputFile) - if (RegCheckErr(Buf, RoutineName)) return - call NWTC_Library_UnpackFileInfoType(Buf, OutData%PassedPrimaryInputData) ! PassedPrimaryInputData - call RegUnpack(Buf, OutData%Linearize) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompAeroMaps) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MHK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%defFldDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%defKinVisc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%defSpdSound) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%defPatm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%defPvap) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDpth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MSL2SWL) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%InputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UsePrimaryInputFile); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackFileInfoType(RF, OutData%PassedPrimaryInputData) ! PassedPrimaryInputData + call RegUnpack(RF, OutData%Linearize); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompAeroMaps); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MHK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%defFldDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%defKinVisc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%defSpdSound); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%defPatm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%defPvap); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDpth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MSL2SWL); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_CopyBladePropsType(SrcBladePropsTypeData, DstBladePropsTypeData, CtrlCode, ErrStat, ErrMsg) @@ -1301,215 +1194,44 @@ subroutine AD_DestroyBladePropsType(BladePropsTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_PackBladePropsType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackBladePropsType(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD_BladePropsType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackBladePropsType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%NumBlNds) - call RegPack(Buf, allocated(InData%BlSpn)) - if (allocated(InData%BlSpn)) then - call RegPackBounds(Buf, 1, lbound(InData%BlSpn, kind=B8Ki), ubound(InData%BlSpn, kind=B8Ki)) - call RegPack(Buf, InData%BlSpn) - end if - call RegPack(Buf, allocated(InData%BlCrvAC)) - if (allocated(InData%BlCrvAC)) then - call RegPackBounds(Buf, 1, lbound(InData%BlCrvAC, kind=B8Ki), ubound(InData%BlCrvAC, kind=B8Ki)) - call RegPack(Buf, InData%BlCrvAC) - end if - call RegPack(Buf, allocated(InData%BlSwpAC)) - if (allocated(InData%BlSwpAC)) then - call RegPackBounds(Buf, 1, lbound(InData%BlSwpAC, kind=B8Ki), ubound(InData%BlSwpAC, kind=B8Ki)) - call RegPack(Buf, InData%BlSwpAC) - end if - call RegPack(Buf, allocated(InData%BlCrvAng)) - if (allocated(InData%BlCrvAng)) then - call RegPackBounds(Buf, 1, lbound(InData%BlCrvAng, kind=B8Ki), ubound(InData%BlCrvAng, kind=B8Ki)) - call RegPack(Buf, InData%BlCrvAng) - end if - call RegPack(Buf, allocated(InData%BlTwist)) - if (allocated(InData%BlTwist)) then - call RegPackBounds(Buf, 1, lbound(InData%BlTwist, kind=B8Ki), ubound(InData%BlTwist, kind=B8Ki)) - call RegPack(Buf, InData%BlTwist) - end if - call RegPack(Buf, allocated(InData%BlChord)) - if (allocated(InData%BlChord)) then - call RegPackBounds(Buf, 1, lbound(InData%BlChord, kind=B8Ki), ubound(InData%BlChord, kind=B8Ki)) - call RegPack(Buf, InData%BlChord) - end if - call RegPack(Buf, allocated(InData%BlAFID)) - if (allocated(InData%BlAFID)) then - call RegPackBounds(Buf, 1, lbound(InData%BlAFID, kind=B8Ki), ubound(InData%BlAFID, kind=B8Ki)) - call RegPack(Buf, InData%BlAFID) - end if - call RegPack(Buf, allocated(InData%BlCb)) - if (allocated(InData%BlCb)) then - call RegPackBounds(Buf, 1, lbound(InData%BlCb, kind=B8Ki), ubound(InData%BlCb, kind=B8Ki)) - call RegPack(Buf, InData%BlCb) - end if - call RegPack(Buf, allocated(InData%BlCenBn)) - if (allocated(InData%BlCenBn)) then - call RegPackBounds(Buf, 1, lbound(InData%BlCenBn, kind=B8Ki), ubound(InData%BlCenBn, kind=B8Ki)) - call RegPack(Buf, InData%BlCenBn) - end if - call RegPack(Buf, allocated(InData%BlCenBt)) - if (allocated(InData%BlCenBt)) then - call RegPackBounds(Buf, 1, lbound(InData%BlCenBt, kind=B8Ki), ubound(InData%BlCenBt, kind=B8Ki)) - call RegPack(Buf, InData%BlCenBt) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%NumBlNds) + call RegPackAlloc(RF, InData%BlSpn) + call RegPackAlloc(RF, InData%BlCrvAC) + call RegPackAlloc(RF, InData%BlSwpAC) + call RegPackAlloc(RF, InData%BlCrvAng) + call RegPackAlloc(RF, InData%BlTwist) + call RegPackAlloc(RF, InData%BlChord) + call RegPackAlloc(RF, InData%BlAFID) + call RegPackAlloc(RF, InData%BlCb) + call RegPackAlloc(RF, InData%BlCenBn) + call RegPackAlloc(RF, InData%BlCenBt) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackBladePropsType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackBladePropsType(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD_BladePropsType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackBladePropsType' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%NumBlNds) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BlSpn)) deallocate(OutData%BlSpn) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlSpn(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlSpn.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlSpn) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlCrvAC)) deallocate(OutData%BlCrvAC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlCrvAC(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlCrvAC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlCrvAC) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlSwpAC)) deallocate(OutData%BlSwpAC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlSwpAC(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlSwpAC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlSwpAC) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlCrvAng)) deallocate(OutData%BlCrvAng) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlCrvAng(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlCrvAng.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlCrvAng) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlTwist)) deallocate(OutData%BlTwist) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlTwist(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlTwist.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlTwist) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlChord)) deallocate(OutData%BlChord) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlChord(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlChord.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlChord) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlAFID)) deallocate(OutData%BlAFID) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlAFID(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlAFID.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlAFID) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlCb)) deallocate(OutData%BlCb) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlCb(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlCb.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlCb) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlCenBn)) deallocate(OutData%BlCenBn) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlCenBn(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlCenBn.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlCenBn) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlCenBt)) deallocate(OutData%BlCenBt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlCenBt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlCenBt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlCenBt) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%NumBlNds); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlSpn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlCrvAC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlSwpAC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlCrvAng); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlTwist); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlChord); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlAFID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlCb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlCenBn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlCenBt); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_CopyBladeShape(SrcBladeShapeData, DstBladeShapeData, CtrlCode, ErrStat, ErrMsg) @@ -1549,41 +1271,24 @@ subroutine AD_DestroyBladeShape(BladeShapeData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_PackBladeShape(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackBladeShape(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD_BladeShape), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackBladeShape' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%AirfoilCoords)) - if (allocated(InData%AirfoilCoords)) then - call RegPackBounds(Buf, 3, lbound(InData%AirfoilCoords, kind=B8Ki), ubound(InData%AirfoilCoords, kind=B8Ki)) - call RegPack(Buf, InData%AirfoilCoords) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%AirfoilCoords) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackBladeShape(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackBladeShape(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD_BladeShape), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackBladeShape' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%AirfoilCoords)) deallocate(OutData%AirfoilCoords) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AirfoilCoords(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AirfoilCoords.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AirfoilCoords) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%AirfoilCoords); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_CopyRotInitOutputType(SrcRotInitOutputTypeData, DstRotInitOutputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -1845,304 +1550,95 @@ subroutine AD_DestroyRotInitOutputType(RotInitOutputTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_PackRotInitOutputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackRotInitOutputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(RotInitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackRotInitOutputType' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%AirDens) - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - call RegPack(Buf, allocated(InData%BladeShape)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%AirDens) + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + call RegPack(RF, allocated(InData%BladeShape)) if (allocated(InData%BladeShape)) then - call RegPackBounds(Buf, 1, lbound(InData%BladeShape, kind=B8Ki), ubound(InData%BladeShape, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BladeShape, kind=B8Ki), ubound(InData%BladeShape, kind=B8Ki)) LB(1:1) = lbound(InData%BladeShape, kind=B8Ki) UB(1:1) = ubound(InData%BladeShape, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackBladeShape(Buf, InData%BladeShape(i1)) + call AD_PackBladeShape(RF, InData%BladeShape(i1)) end do end if - call RegPack(Buf, allocated(InData%LinNames_y)) - if (allocated(InData%LinNames_y)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_y, kind=B8Ki), ubound(InData%LinNames_y, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_y) - end if - call RegPack(Buf, allocated(InData%LinNames_x)) - if (allocated(InData%LinNames_x)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_x, kind=B8Ki), ubound(InData%LinNames_x, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_x) - end if - call RegPack(Buf, allocated(InData%LinNames_u)) - if (allocated(InData%LinNames_u)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_u, kind=B8Ki), ubound(InData%LinNames_u, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_u) - end if - call RegPack(Buf, allocated(InData%RotFrame_y)) - if (allocated(InData%RotFrame_y)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_y, kind=B8Ki), ubound(InData%RotFrame_y, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_y) - end if - call RegPack(Buf, allocated(InData%RotFrame_x)) - if (allocated(InData%RotFrame_x)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_x, kind=B8Ki), ubound(InData%RotFrame_x, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_x) - end if - call RegPack(Buf, allocated(InData%RotFrame_u)) - if (allocated(InData%RotFrame_u)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_u, kind=B8Ki), ubound(InData%RotFrame_u, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_u) - end if - call RegPack(Buf, allocated(InData%IsLoad_u)) - if (allocated(InData%IsLoad_u)) then - call RegPackBounds(Buf, 1, lbound(InData%IsLoad_u, kind=B8Ki), ubound(InData%IsLoad_u, kind=B8Ki)) - call RegPack(Buf, InData%IsLoad_u) - end if - call RegPack(Buf, allocated(InData%BladeProps)) + call RegPackAlloc(RF, InData%LinNames_y) + call RegPackAlloc(RF, InData%LinNames_x) + call RegPackAlloc(RF, InData%LinNames_u) + call RegPackAlloc(RF, InData%RotFrame_y) + call RegPackAlloc(RF, InData%RotFrame_x) + call RegPackAlloc(RF, InData%RotFrame_u) + call RegPackAlloc(RF, InData%IsLoad_u) + call RegPack(RF, allocated(InData%BladeProps)) if (allocated(InData%BladeProps)) then - call RegPackBounds(Buf, 1, lbound(InData%BladeProps, kind=B8Ki), ubound(InData%BladeProps, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BladeProps, kind=B8Ki), ubound(InData%BladeProps, kind=B8Ki)) LB(1:1) = lbound(InData%BladeProps, kind=B8Ki) UB(1:1) = ubound(InData%BladeProps, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackBladePropsType(Buf, InData%BladeProps(i1)) + call AD_PackBladePropsType(RF, InData%BladeProps(i1)) end do end if - call RegPack(Buf, allocated(InData%DerivOrder_x)) - if (allocated(InData%DerivOrder_x)) then - call RegPackBounds(Buf, 1, lbound(InData%DerivOrder_x, kind=B8Ki), ubound(InData%DerivOrder_x, kind=B8Ki)) - call RegPack(Buf, InData%DerivOrder_x) - end if - call RegPack(Buf, allocated(InData%TwrElev)) - if (allocated(InData%TwrElev)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrElev, kind=B8Ki), ubound(InData%TwrElev, kind=B8Ki)) - call RegPack(Buf, InData%TwrElev) - end if - call RegPack(Buf, allocated(InData%TwrDiam)) - if (allocated(InData%TwrDiam)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrDiam, kind=B8Ki), ubound(InData%TwrDiam, kind=B8Ki)) - call RegPack(Buf, InData%TwrDiam) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%DerivOrder_x) + call RegPackAlloc(RF, InData%TwrElev) + call RegPackAlloc(RF, InData%TwrDiam) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackRotInitOutputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackRotInitOutputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(RotInitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackRotInitOutputType' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%AirDens) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%AirDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%BladeShape)) deallocate(OutData%BladeShape) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BladeShape(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeShape.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeShape.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackBladeShape(Buf, OutData%BladeShape(i1)) ! BladeShape + call AD_UnpackBladeShape(RF, OutData%BladeShape(i1)) ! BladeShape end do end if - if (allocated(OutData%LinNames_y)) deallocate(OutData%LinNames_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_x)) deallocate(OutData%LinNames_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_u)) deallocate(OutData%LinNames_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_y)) deallocate(OutData%RotFrame_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_x)) deallocate(OutData%RotFrame_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_u)) deallocate(OutData%RotFrame_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IsLoad_u)) deallocate(OutData%IsLoad_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IsLoad_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IsLoad_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IsLoad_u) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%LinNames_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IsLoad_u); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%BladeProps)) deallocate(OutData%BladeProps) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BladeProps(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeProps.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeProps.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackBladePropsType(Buf, OutData%BladeProps(i1)) ! BladeProps + call AD_UnpackBladePropsType(RF, OutData%BladeProps(i1)) ! BladeProps end do end if - if (allocated(OutData%DerivOrder_x)) deallocate(OutData%DerivOrder_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DerivOrder_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DerivOrder_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DerivOrder_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrElev)) deallocate(OutData%TwrElev) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrElev(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrElev.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrElev) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrDiam)) deallocate(OutData%TwrDiam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrDiam(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrDiam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrDiam) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%DerivOrder_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrElev); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrDiam); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -2203,51 +1699,49 @@ subroutine AD_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackInitOutput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%rotors)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%rotors)) if (allocated(InData%rotors)) then - call RegPackBounds(Buf, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) LB(1:1) = lbound(InData%rotors, kind=B8Ki) UB(1:1) = ubound(InData%rotors, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackRotInitOutputType(Buf, InData%rotors(i1)) + call AD_PackRotInitOutputType(RF, InData%rotors(i1)) end do end if - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - if (RegCheckErr(Buf, RoutineName)) return + call NWTC_Library_PackProgDesc(RF, InData%Ver) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackInitOutput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%rotors)) deallocate(OutData%rotors) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%rotors(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackRotInitOutputType(Buf, OutData%rotors(i1)) ! rotors + call AD_UnpackRotInitOutputType(RF, OutData%rotors(i1)) ! rotors end do end if - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver end subroutine subroutine AD_CopyRotInputFile(SrcRotInputFileData, DstRotInputFileData, CtrlCode, ErrStat, ErrMsg) @@ -2390,167 +1884,73 @@ subroutine AD_DestroyRotInputFile(RotInputFileData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD_PackRotInputFile(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackRotInputFile(RF, Indata) + type(RegFile), intent(inout) :: RF type(RotInputFile), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackRotInputFile' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%BladeProps)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%BladeProps)) if (allocated(InData%BladeProps)) then - call RegPackBounds(Buf, 1, lbound(InData%BladeProps, kind=B8Ki), ubound(InData%BladeProps, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BladeProps, kind=B8Ki), ubound(InData%BladeProps, kind=B8Ki)) LB(1:1) = lbound(InData%BladeProps, kind=B8Ki) UB(1:1) = ubound(InData%BladeProps, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackBladePropsType(Buf, InData%BladeProps(i1)) + call AD_PackBladePropsType(RF, InData%BladeProps(i1)) end do end if - call RegPack(Buf, InData%NumTwrNds) - call RegPack(Buf, allocated(InData%TwrElev)) - if (allocated(InData%TwrElev)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrElev, kind=B8Ki), ubound(InData%TwrElev, kind=B8Ki)) - call RegPack(Buf, InData%TwrElev) - end if - call RegPack(Buf, allocated(InData%TwrDiam)) - if (allocated(InData%TwrDiam)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrDiam, kind=B8Ki), ubound(InData%TwrDiam, kind=B8Ki)) - call RegPack(Buf, InData%TwrDiam) - end if - call RegPack(Buf, allocated(InData%TwrCd)) - if (allocated(InData%TwrCd)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrCd, kind=B8Ki), ubound(InData%TwrCd, kind=B8Ki)) - call RegPack(Buf, InData%TwrCd) - end if - call RegPack(Buf, allocated(InData%TwrTI)) - if (allocated(InData%TwrTI)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrTI, kind=B8Ki), ubound(InData%TwrTI, kind=B8Ki)) - call RegPack(Buf, InData%TwrTI) - end if - call RegPack(Buf, allocated(InData%TwrCb)) - if (allocated(InData%TwrCb)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrCb, kind=B8Ki), ubound(InData%TwrCb, kind=B8Ki)) - call RegPack(Buf, InData%TwrCb) - end if - call RegPack(Buf, InData%VolHub) - call RegPack(Buf, InData%HubCenBx) - call RegPack(Buf, InData%VolNac) - call RegPack(Buf, InData%NacCenB) - call RegPack(Buf, InData%TFinAero) - call RegPack(Buf, InData%TFinFile) - call AD_PackTFinInputFileType(Buf, InData%TFin) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%NumTwrNds) + call RegPackAlloc(RF, InData%TwrElev) + call RegPackAlloc(RF, InData%TwrDiam) + call RegPackAlloc(RF, InData%TwrCd) + call RegPackAlloc(RF, InData%TwrTI) + call RegPackAlloc(RF, InData%TwrCb) + call RegPack(RF, InData%VolHub) + call RegPack(RF, InData%HubCenBx) + call RegPack(RF, InData%VolNac) + call RegPack(RF, InData%NacCenB) + call RegPack(RF, InData%TFinAero) + call RegPack(RF, InData%TFinFile) + call AD_PackTFinInputFileType(RF, InData%TFin) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackRotInputFile(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackRotInputFile(RF, OutData) + type(RegFile), intent(inout) :: RF type(RotInputFile), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackRotInputFile' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%BladeProps)) deallocate(OutData%BladeProps) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BladeProps(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeProps.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeProps.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackBladePropsType(Buf, OutData%BladeProps(i1)) ! BladeProps + call AD_UnpackBladePropsType(RF, OutData%BladeProps(i1)) ! BladeProps end do end if - call RegUnpack(Buf, OutData%NumTwrNds) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TwrElev)) deallocate(OutData%TwrElev) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrElev(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrElev.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrElev) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrDiam)) deallocate(OutData%TwrDiam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrDiam(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrDiam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrDiam) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrCd)) deallocate(OutData%TwrCd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrCd(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrCd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrCd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrTI)) deallocate(OutData%TwrTI) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrTI(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrTI.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrTI) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrCb)) deallocate(OutData%TwrCb) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrCb(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrCb.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrCb) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%VolHub) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubCenBx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VolNac) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacCenB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinAero) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinFile) - if (RegCheckErr(Buf, RoutineName)) return - call AD_UnpackTFinInputFileType(Buf, OutData%TFin) ! TFin + call RegUnpack(RF, OutData%NumTwrNds); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrElev); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrDiam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrCd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrTI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrCb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VolHub); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubCenBx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VolNac); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacCenB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinAero); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinFile); if (RegCheckErr(RF, RoutineName)) return + call AD_UnpackTFinInputFileType(RF, OutData%TFin) ! TFin end subroutine subroutine AD_CopyInputFile(SrcInputFileData, DstInputFileData, CtrlCode, ErrStat, ErrMsg) @@ -2716,273 +2116,153 @@ subroutine AD_DestroyInputFile(InputFileData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_PackInputFile(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackInputFile(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD_InputFile), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackInputFile' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Echo) - call RegPack(Buf, InData%DTAero) - call RegPack(Buf, InData%WakeMod) - call RegPack(Buf, InData%AFAeroMod) - call RegPack(Buf, InData%TwrPotent) - call RegPack(Buf, InData%TwrShadow) - call RegPack(Buf, InData%TwrAero) - call RegPack(Buf, InData%FrozenWake) - call RegPack(Buf, InData%CavitCheck) - call RegPack(Buf, InData%Buoyancy) - call RegPack(Buf, InData%CompAA) - call RegPack(Buf, InData%AA_InputFile) - call RegPack(Buf, allocated(InData%ADBlFile)) - if (allocated(InData%ADBlFile)) then - call RegPackBounds(Buf, 1, lbound(InData%ADBlFile, kind=B8Ki), ubound(InData%ADBlFile, kind=B8Ki)) - call RegPack(Buf, InData%ADBlFile) - end if - call RegPack(Buf, InData%AirDens) - call RegPack(Buf, InData%KinVisc) - call RegPack(Buf, InData%Patm) - call RegPack(Buf, InData%Pvap) - call RegPack(Buf, InData%SpdSound) - call RegPack(Buf, InData%SkewMod) - call RegPack(Buf, InData%SkewModFactor) - call RegPack(Buf, InData%TipLoss) - call RegPack(Buf, InData%HubLoss) - call RegPack(Buf, InData%TanInd) - call RegPack(Buf, InData%AIDrag) - call RegPack(Buf, InData%TIDrag) - call RegPack(Buf, InData%IndToler) - call RegPack(Buf, InData%MaxIter) - call RegPack(Buf, InData%UAMod) - call RegPack(Buf, InData%FLookup) - call RegPack(Buf, InData%InCol_Alfa) - call RegPack(Buf, InData%InCol_Cl) - call RegPack(Buf, InData%InCol_Cd) - call RegPack(Buf, InData%InCol_Cm) - call RegPack(Buf, InData%InCol_Cpmin) - call RegPack(Buf, InData%AFTabMod) - call RegPack(Buf, InData%NumAFfiles) - call RegPack(Buf, InData%FVWFileName) - call RegPack(Buf, allocated(InData%AFNames)) - if (allocated(InData%AFNames)) then - call RegPackBounds(Buf, 1, lbound(InData%AFNames, kind=B8Ki), ubound(InData%AFNames, kind=B8Ki)) - call RegPack(Buf, InData%AFNames) - end if - call RegPack(Buf, InData%UseBlCm) - call RegPack(Buf, InData%SumPrint) - call RegPack(Buf, InData%NBlOuts) - call RegPack(Buf, InData%BlOutNd) - call RegPack(Buf, InData%NTwOuts) - call RegPack(Buf, InData%TwOutNd) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, allocated(InData%OutList)) - if (allocated(InData%OutList)) then - call RegPackBounds(Buf, 1, lbound(InData%OutList, kind=B8Ki), ubound(InData%OutList, kind=B8Ki)) - call RegPack(Buf, InData%OutList) - end if - call RegPack(Buf, InData%tau1_const) - call RegPack(Buf, InData%DBEMT_Mod) - call RegPack(Buf, InData%BldNd_NumOuts) - call RegPack(Buf, allocated(InData%BldNd_OutList)) - if (allocated(InData%BldNd_OutList)) then - call RegPackBounds(Buf, 1, lbound(InData%BldNd_OutList, kind=B8Ki), ubound(InData%BldNd_OutList, kind=B8Ki)) - call RegPack(Buf, InData%BldNd_OutList) - end if - call RegPack(Buf, InData%BldNd_BlOutNd_Str) - call RegPack(Buf, InData%BldNd_BladesOut) - call RegPack(Buf, InData%UAStartRad) - call RegPack(Buf, InData%UAEndRad) - call RegPack(Buf, allocated(InData%rotors)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Echo) + call RegPack(RF, InData%DTAero) + call RegPack(RF, InData%WakeMod) + call RegPack(RF, InData%AFAeroMod) + call RegPack(RF, InData%TwrPotent) + call RegPack(RF, InData%TwrShadow) + call RegPack(RF, InData%TwrAero) + call RegPack(RF, InData%FrozenWake) + call RegPack(RF, InData%CavitCheck) + call RegPack(RF, InData%Buoyancy) + call RegPack(RF, InData%CompAA) + call RegPack(RF, InData%AA_InputFile) + call RegPackAlloc(RF, InData%ADBlFile) + call RegPack(RF, InData%AirDens) + call RegPack(RF, InData%KinVisc) + call RegPack(RF, InData%Patm) + call RegPack(RF, InData%Pvap) + call RegPack(RF, InData%SpdSound) + call RegPack(RF, InData%SkewMod) + call RegPack(RF, InData%SkewModFactor) + call RegPack(RF, InData%TipLoss) + call RegPack(RF, InData%HubLoss) + call RegPack(RF, InData%TanInd) + call RegPack(RF, InData%AIDrag) + call RegPack(RF, InData%TIDrag) + call RegPack(RF, InData%IndToler) + call RegPack(RF, InData%MaxIter) + call RegPack(RF, InData%UAMod) + call RegPack(RF, InData%FLookup) + call RegPack(RF, InData%InCol_Alfa) + call RegPack(RF, InData%InCol_Cl) + call RegPack(RF, InData%InCol_Cd) + call RegPack(RF, InData%InCol_Cm) + call RegPack(RF, InData%InCol_Cpmin) + call RegPack(RF, InData%AFTabMod) + call RegPack(RF, InData%NumAFfiles) + call RegPack(RF, InData%FVWFileName) + call RegPackAlloc(RF, InData%AFNames) + call RegPack(RF, InData%UseBlCm) + call RegPack(RF, InData%SumPrint) + call RegPack(RF, InData%NBlOuts) + call RegPack(RF, InData%BlOutNd) + call RegPack(RF, InData%NTwOuts) + call RegPack(RF, InData%TwOutNd) + call RegPack(RF, InData%NumOuts) + call RegPackAlloc(RF, InData%OutList) + call RegPack(RF, InData%tau1_const) + call RegPack(RF, InData%DBEMT_Mod) + call RegPack(RF, InData%BldNd_NumOuts) + call RegPackAlloc(RF, InData%BldNd_OutList) + call RegPack(RF, InData%BldNd_BlOutNd_Str) + call RegPack(RF, InData%BldNd_BladesOut) + call RegPack(RF, InData%UAStartRad) + call RegPack(RF, InData%UAEndRad) + call RegPack(RF, allocated(InData%rotors)) if (allocated(InData%rotors)) then - call RegPackBounds(Buf, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) LB(1:1) = lbound(InData%rotors, kind=B8Ki) UB(1:1) = ubound(InData%rotors, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackRotInputFile(Buf, InData%rotors(i1)) + call AD_PackRotInputFile(RF, InData%rotors(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackInputFile(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackInputFile(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD_InputFile), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackInputFile' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Echo) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DTAero) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WakeMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AFAeroMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrPotent) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrShadow) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrAero) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FrozenWake) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CavitCheck) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Buoyancy) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompAA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AA_InputFile) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%ADBlFile)) deallocate(OutData%ADBlFile) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ADBlFile(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ADBlFile.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ADBlFile) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%AirDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%KinVisc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Patm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Pvap) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SpdSound) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SkewMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SkewModFactor) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TipLoss) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubLoss) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TanInd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AIDrag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TIDrag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%IndToler) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MaxIter) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UAMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FLookup) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InCol_Alfa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InCol_Cl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InCol_Cd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InCol_Cm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InCol_Cpmin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AFTabMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumAFfiles) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FVWFileName) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%AFNames)) deallocate(OutData%AFNames) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AFNames(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AFNames.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AFNames) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%UseBlCm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SumPrint) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NBlOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BlOutNd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NTwOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwOutNd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutList)) deallocate(OutData%OutList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutList) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%tau1_const) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DBEMT_Mod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BldNd_NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BldNd_OutList)) deallocate(OutData%BldNd_OutList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldNd_OutList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldNd_OutList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldNd_OutList) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%BldNd_BlOutNd_Str) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BldNd_BladesOut) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UAStartRad) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UAEndRad) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Echo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DTAero); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WakeMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AFAeroMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrPotent); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrShadow); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrAero); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FrozenWake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CavitCheck); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Buoyancy); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompAA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AA_InputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ADBlFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AirDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%KinVisc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Patm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Pvap); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SpdSound); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SkewMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SkewModFactor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TipLoss); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubLoss); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TanInd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AIDrag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TIDrag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IndToler); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MaxIter); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UAMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FLookup); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InCol_Alfa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InCol_Cl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InCol_Cd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InCol_Cm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InCol_Cpmin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AFTabMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumAFfiles); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FVWFileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AFNames); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseBlCm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SumPrint); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NBlOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BlOutNd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NTwOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwOutNd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tau1_const); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DBEMT_Mod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldNd_NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldNd_OutList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldNd_BlOutNd_Str); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldNd_BladesOut); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UAStartRad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UAEndRad); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%rotors)) deallocate(OutData%rotors) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%rotors(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackRotInputFile(Buf, OutData%rotors(i1)) ! rotors + call AD_UnpackRotInputFile(RF, OutData%rotors(i1)) ! rotors end do end if end subroutine @@ -3021,23 +2301,23 @@ subroutine AD_DestroyRotContinuousStateType(RotContinuousStateTypeData, ErrStat, call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD_PackRotContinuousStateType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackRotContinuousStateType(RF, Indata) + type(RegFile), intent(inout) :: RF type(RotContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackRotContinuousStateType' - if (Buf%ErrStat >= AbortErrLev) return - call BEMT_PackContState(Buf, InData%BEMT) - call AA_PackContState(Buf, InData%AA) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call BEMT_PackContState(RF, InData%BEMT) + call AA_PackContState(RF, InData%AA) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackRotContinuousStateType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackRotContinuousStateType(RF, OutData) + type(RegFile), intent(inout) :: RF type(RotContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackRotContinuousStateType' - if (Buf%ErrStat /= ErrID_None) return - call BEMT_UnpackContState(Buf, OutData%BEMT) ! BEMT - call AA_UnpackContState(Buf, OutData%AA) ! AA + if (RF%ErrStat /= ErrID_None) return + call BEMT_UnpackContState(RF, OutData%BEMT) ! BEMT + call AA_UnpackContState(RF, OutData%AA) ! AA end subroutine subroutine AD_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -3098,51 +2378,49 @@ subroutine AD_DestroyContState(ContStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackContState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%rotors)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%rotors)) if (allocated(InData%rotors)) then - call RegPackBounds(Buf, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) LB(1:1) = lbound(InData%rotors, kind=B8Ki) UB(1:1) = ubound(InData%rotors, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackRotContinuousStateType(Buf, InData%rotors(i1)) + call AD_PackRotContinuousStateType(RF, InData%rotors(i1)) end do end if - call FVW_PackContState(Buf, InData%FVW) - if (RegCheckErr(Buf, RoutineName)) return + call FVW_PackContState(RF, InData%FVW) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackContState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%rotors)) deallocate(OutData%rotors) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%rotors(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackRotContinuousStateType(Buf, OutData%rotors(i1)) ! rotors + call AD_UnpackRotContinuousStateType(RF, OutData%rotors(i1)) ! rotors end do end if - call FVW_UnpackContState(Buf, OutData%FVW) ! FVW + call FVW_UnpackContState(RF, OutData%FVW) ! FVW end subroutine subroutine AD_CopyRotDiscreteStateType(SrcRotDiscreteStateTypeData, DstRotDiscreteStateTypeData, CtrlCode, ErrStat, ErrMsg) @@ -3179,23 +2457,23 @@ subroutine AD_DestroyRotDiscreteStateType(RotDiscreteStateTypeData, ErrStat, Err call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD_PackRotDiscreteStateType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackRotDiscreteStateType(RF, Indata) + type(RegFile), intent(inout) :: RF type(RotDiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackRotDiscreteStateType' - if (Buf%ErrStat >= AbortErrLev) return - call BEMT_PackDiscState(Buf, InData%BEMT) - call AA_PackDiscState(Buf, InData%AA) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call BEMT_PackDiscState(RF, InData%BEMT) + call AA_PackDiscState(RF, InData%AA) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackRotDiscreteStateType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackRotDiscreteStateType(RF, OutData) + type(RegFile), intent(inout) :: RF type(RotDiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackRotDiscreteStateType' - if (Buf%ErrStat /= ErrID_None) return - call BEMT_UnpackDiscState(Buf, OutData%BEMT) ! BEMT - call AA_UnpackDiscState(Buf, OutData%AA) ! AA + if (RF%ErrStat /= ErrID_None) return + call BEMT_UnpackDiscState(RF, OutData%BEMT) ! BEMT + call AA_UnpackDiscState(RF, OutData%AA) ! AA end subroutine subroutine AD_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -3256,51 +2534,49 @@ subroutine AD_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackDiscState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%rotors)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%rotors)) if (allocated(InData%rotors)) then - call RegPackBounds(Buf, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) LB(1:1) = lbound(InData%rotors, kind=B8Ki) UB(1:1) = ubound(InData%rotors, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackRotDiscreteStateType(Buf, InData%rotors(i1)) + call AD_PackRotDiscreteStateType(RF, InData%rotors(i1)) end do end if - call FVW_PackDiscState(Buf, InData%FVW) - if (RegCheckErr(Buf, RoutineName)) return + call FVW_PackDiscState(RF, InData%FVW) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackDiscState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%rotors)) deallocate(OutData%rotors) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%rotors(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackRotDiscreteStateType(Buf, OutData%rotors(i1)) ! rotors + call AD_UnpackRotDiscreteStateType(RF, OutData%rotors(i1)) ! rotors end do end if - call FVW_UnpackDiscState(Buf, OutData%FVW) ! FVW + call FVW_UnpackDiscState(RF, OutData%FVW) ! FVW end subroutine subroutine AD_CopyRotConstraintStateType(SrcRotConstraintStateTypeData, DstRotConstraintStateTypeData, CtrlCode, ErrStat, ErrMsg) @@ -3337,23 +2613,23 @@ subroutine AD_DestroyRotConstraintStateType(RotConstraintStateTypeData, ErrStat, call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD_PackRotConstraintStateType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackRotConstraintStateType(RF, Indata) + type(RegFile), intent(inout) :: RF type(RotConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackRotConstraintStateType' - if (Buf%ErrStat >= AbortErrLev) return - call BEMT_PackConstrState(Buf, InData%BEMT) - call AA_PackConstrState(Buf, InData%AA) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call BEMT_PackConstrState(RF, InData%BEMT) + call AA_PackConstrState(RF, InData%AA) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackRotConstraintStateType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackRotConstraintStateType(RF, OutData) + type(RegFile), intent(inout) :: RF type(RotConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackRotConstraintStateType' - if (Buf%ErrStat /= ErrID_None) return - call BEMT_UnpackConstrState(Buf, OutData%BEMT) ! BEMT - call AA_UnpackConstrState(Buf, OutData%AA) ! AA + if (RF%ErrStat /= ErrID_None) return + call BEMT_UnpackConstrState(RF, OutData%BEMT) ! BEMT + call AA_UnpackConstrState(RF, OutData%AA) ! AA end subroutine subroutine AD_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -3414,51 +2690,49 @@ subroutine AD_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackConstrState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%rotors)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%rotors)) if (allocated(InData%rotors)) then - call RegPackBounds(Buf, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) LB(1:1) = lbound(InData%rotors, kind=B8Ki) UB(1:1) = ubound(InData%rotors, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackRotConstraintStateType(Buf, InData%rotors(i1)) + call AD_PackRotConstraintStateType(RF, InData%rotors(i1)) end do end if - call FVW_PackConstrState(Buf, InData%FVW) - if (RegCheckErr(Buf, RoutineName)) return + call FVW_PackConstrState(RF, InData%FVW) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackConstrState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%rotors)) deallocate(OutData%rotors) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%rotors(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackRotConstraintStateType(Buf, OutData%rotors(i1)) ! rotors + call AD_UnpackRotConstraintStateType(RF, OutData%rotors(i1)) ! rotors end do end if - call FVW_UnpackConstrState(Buf, OutData%FVW) ! FVW + call FVW_UnpackConstrState(RF, OutData%FVW) ! FVW end subroutine subroutine AD_CopyRotOtherStateType(SrcRotOtherStateTypeData, DstRotOtherStateTypeData, CtrlCode, ErrStat, ErrMsg) @@ -3495,23 +2769,23 @@ subroutine AD_DestroyRotOtherStateType(RotOtherStateTypeData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD_PackRotOtherStateType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackRotOtherStateType(RF, Indata) + type(RegFile), intent(inout) :: RF type(RotOtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackRotOtherStateType' - if (Buf%ErrStat >= AbortErrLev) return - call BEMT_PackOtherState(Buf, InData%BEMT) - call AA_PackOtherState(Buf, InData%AA) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call BEMT_PackOtherState(RF, InData%BEMT) + call AA_PackOtherState(RF, InData%AA) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackRotOtherStateType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackRotOtherStateType(RF, OutData) + type(RegFile), intent(inout) :: RF type(RotOtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackRotOtherStateType' - if (Buf%ErrStat /= ErrID_None) return - call BEMT_UnpackOtherState(Buf, OutData%BEMT) ! BEMT - call AA_UnpackOtherState(Buf, OutData%AA) ! AA + if (RF%ErrStat /= ErrID_None) return + call BEMT_UnpackOtherState(RF, OutData%BEMT) ! BEMT + call AA_UnpackOtherState(RF, OutData%AA) ! AA end subroutine subroutine AD_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -3587,70 +2861,51 @@ subroutine AD_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackOtherState' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%rotors)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%rotors)) if (allocated(InData%rotors)) then - call RegPackBounds(Buf, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) LB(1:1) = lbound(InData%rotors, kind=B8Ki) UB(1:1) = ubound(InData%rotors, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackRotOtherStateType(Buf, InData%rotors(i1)) + call AD_PackRotOtherStateType(RF, InData%rotors(i1)) end do end if - call FVW_PackOtherState(Buf, InData%FVW) - call RegPack(Buf, allocated(InData%WakeLocationPoints)) - if (allocated(InData%WakeLocationPoints)) then - call RegPackBounds(Buf, 2, lbound(InData%WakeLocationPoints, kind=B8Ki), ubound(InData%WakeLocationPoints, kind=B8Ki)) - call RegPack(Buf, InData%WakeLocationPoints) - end if - if (RegCheckErr(Buf, RoutineName)) return + call FVW_PackOtherState(RF, InData%FVW) + call RegPackAlloc(RF, InData%WakeLocationPoints) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackOtherState' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%rotors)) deallocate(OutData%rotors) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%rotors(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackRotOtherStateType(Buf, OutData%rotors(i1)) ! rotors + call AD_UnpackRotOtherStateType(RF, OutData%rotors(i1)) ! rotors end do end if - call FVW_UnpackOtherState(Buf, OutData%FVW) ! FVW - if (allocated(OutData%WakeLocationPoints)) deallocate(OutData%WakeLocationPoints) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WakeLocationPoints(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WakeLocationPoints.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WakeLocationPoints) - if (RegCheckErr(Buf, RoutineName)) return - end if + call FVW_UnpackOtherState(RF, OutData%FVW) ! FVW + call RegUnpackAlloc(RF, OutData%WakeLocationPoints); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_CopyRotMiscVarType(SrcRotMiscVarTypeData, DstRotMiscVarTypeData, CtrlCode, ErrStat, ErrMsg) @@ -4310,758 +3565,271 @@ subroutine AD_DestroyRotMiscVarType(RotMiscVarTypeData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD_PackRotMiscVarType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackRotMiscVarType(RF, Indata) + type(RegFile), intent(inout) :: RF type(RotMiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackRotMiscVarType' integer(B8Ki) :: i1, i2, i3, i4 integer(B8Ki) :: LB(4), UB(4) - if (Buf%ErrStat >= AbortErrLev) return - call BEMT_PackMisc(Buf, InData%BEMT) - call BEMT_PackOutput(Buf, InData%BEMT_y) + if (RF%ErrStat >= AbortErrLev) return + call BEMT_PackMisc(RF, InData%BEMT) + call BEMT_PackOutput(RF, InData%BEMT_y) LB(1:1) = lbound(InData%BEMT_u, kind=B8Ki) UB(1:1) = ubound(InData%BEMT_u, kind=B8Ki) do i1 = LB(1), UB(1) - call BEMT_PackInput(Buf, InData%BEMT_u(i1)) + call BEMT_PackInput(RF, InData%BEMT_u(i1)) end do - call AA_PackMisc(Buf, InData%AA) - call AA_PackOutput(Buf, InData%AA_y) - call AA_PackInput(Buf, InData%AA_u) - call RegPack(Buf, allocated(InData%DisturbedInflow)) - if (allocated(InData%DisturbedInflow)) then - call RegPackBounds(Buf, 3, lbound(InData%DisturbedInflow, kind=B8Ki), ubound(InData%DisturbedInflow, kind=B8Ki)) - call RegPack(Buf, InData%DisturbedInflow) - end if - call RegPack(Buf, allocated(InData%orientationAnnulus)) - if (allocated(InData%orientationAnnulus)) then - call RegPackBounds(Buf, 4, lbound(InData%orientationAnnulus, kind=B8Ki), ubound(InData%orientationAnnulus, kind=B8Ki)) - call RegPack(Buf, InData%orientationAnnulus) - end if - call RegPack(Buf, allocated(InData%R_li)) - if (allocated(InData%R_li)) then - call RegPackBounds(Buf, 4, lbound(InData%R_li, kind=B8Ki), ubound(InData%R_li, kind=B8Ki)) - call RegPack(Buf, InData%R_li) - end if - call RegPack(Buf, allocated(InData%AllOuts)) - if (allocated(InData%AllOuts)) then - call RegPackBounds(Buf, 1, lbound(InData%AllOuts, kind=B8Ki), ubound(InData%AllOuts, kind=B8Ki)) - call RegPack(Buf, InData%AllOuts) - end if - call RegPack(Buf, allocated(InData%W_Twr)) - if (allocated(InData%W_Twr)) then - call RegPackBounds(Buf, 1, lbound(InData%W_Twr, kind=B8Ki), ubound(InData%W_Twr, kind=B8Ki)) - call RegPack(Buf, InData%W_Twr) - end if - call RegPack(Buf, allocated(InData%X_Twr)) - if (allocated(InData%X_Twr)) then - call RegPackBounds(Buf, 1, lbound(InData%X_Twr, kind=B8Ki), ubound(InData%X_Twr, kind=B8Ki)) - call RegPack(Buf, InData%X_Twr) - end if - call RegPack(Buf, allocated(InData%Y_Twr)) - if (allocated(InData%Y_Twr)) then - call RegPackBounds(Buf, 1, lbound(InData%Y_Twr, kind=B8Ki), ubound(InData%Y_Twr, kind=B8Ki)) - call RegPack(Buf, InData%Y_Twr) - end if - call RegPack(Buf, allocated(InData%Curve)) - if (allocated(InData%Curve)) then - call RegPackBounds(Buf, 2, lbound(InData%Curve, kind=B8Ki), ubound(InData%Curve, kind=B8Ki)) - call RegPack(Buf, InData%Curve) - end if - call RegPack(Buf, allocated(InData%TwrClrnc)) - if (allocated(InData%TwrClrnc)) then - call RegPackBounds(Buf, 2, lbound(InData%TwrClrnc, kind=B8Ki), ubound(InData%TwrClrnc, kind=B8Ki)) - call RegPack(Buf, InData%TwrClrnc) - end if - call RegPack(Buf, allocated(InData%X)) - if (allocated(InData%X)) then - call RegPackBounds(Buf, 2, lbound(InData%X, kind=B8Ki), ubound(InData%X, kind=B8Ki)) - call RegPack(Buf, InData%X) - end if - call RegPack(Buf, allocated(InData%Y)) - if (allocated(InData%Y)) then - call RegPackBounds(Buf, 2, lbound(InData%Y, kind=B8Ki), ubound(InData%Y, kind=B8Ki)) - call RegPack(Buf, InData%Y) - end if - call RegPack(Buf, allocated(InData%Z)) - if (allocated(InData%Z)) then - call RegPackBounds(Buf, 2, lbound(InData%Z, kind=B8Ki), ubound(InData%Z, kind=B8Ki)) - call RegPack(Buf, InData%Z) - end if - call RegPack(Buf, allocated(InData%M)) - if (allocated(InData%M)) then - call RegPackBounds(Buf, 2, lbound(InData%M, kind=B8Ki), ubound(InData%M, kind=B8Ki)) - call RegPack(Buf, InData%M) - end if - call RegPack(Buf, allocated(InData%Mx)) - if (allocated(InData%Mx)) then - call RegPackBounds(Buf, 2, lbound(InData%Mx, kind=B8Ki), ubound(InData%Mx, kind=B8Ki)) - call RegPack(Buf, InData%Mx) - end if - call RegPack(Buf, allocated(InData%My)) - if (allocated(InData%My)) then - call RegPackBounds(Buf, 2, lbound(InData%My, kind=B8Ki), ubound(InData%My, kind=B8Ki)) - call RegPack(Buf, InData%My) - end if - call RegPack(Buf, allocated(InData%Mz)) - if (allocated(InData%Mz)) then - call RegPackBounds(Buf, 2, lbound(InData%Mz, kind=B8Ki), ubound(InData%Mz, kind=B8Ki)) - call RegPack(Buf, InData%Mz) - end if - call RegPack(Buf, allocated(InData%Vind_i)) - if (allocated(InData%Vind_i)) then - call RegPackBounds(Buf, 3, lbound(InData%Vind_i, kind=B8Ki), ubound(InData%Vind_i, kind=B8Ki)) - call RegPack(Buf, InData%Vind_i) - end if - call RegPack(Buf, InData%V_DiskAvg) - call RegPack(Buf, InData%yaw) - call RegPack(Buf, InData%tilt) - call RegPack(Buf, allocated(InData%hub_theta_x_root)) - if (allocated(InData%hub_theta_x_root)) then - call RegPackBounds(Buf, 1, lbound(InData%hub_theta_x_root, kind=B8Ki), ubound(InData%hub_theta_x_root, kind=B8Ki)) - call RegPack(Buf, InData%hub_theta_x_root) - end if - call RegPack(Buf, InData%V_dot_x) - call MeshPack(Buf, InData%HubLoad) - call RegPack(Buf, allocated(InData%B_L_2_H_P)) + call AA_PackMisc(RF, InData%AA) + call AA_PackOutput(RF, InData%AA_y) + call AA_PackInput(RF, InData%AA_u) + call RegPackAlloc(RF, InData%DisturbedInflow) + call RegPackAlloc(RF, InData%orientationAnnulus) + call RegPackAlloc(RF, InData%R_li) + call RegPackAlloc(RF, InData%AllOuts) + call RegPackAlloc(RF, InData%W_Twr) + call RegPackAlloc(RF, InData%X_Twr) + call RegPackAlloc(RF, InData%Y_Twr) + call RegPackAlloc(RF, InData%Curve) + call RegPackAlloc(RF, InData%TwrClrnc) + call RegPackAlloc(RF, InData%X) + call RegPackAlloc(RF, InData%Y) + call RegPackAlloc(RF, InData%Z) + call RegPackAlloc(RF, InData%M) + call RegPackAlloc(RF, InData%Mx) + call RegPackAlloc(RF, InData%My) + call RegPackAlloc(RF, InData%Mz) + call RegPackAlloc(RF, InData%Vind_i) + call RegPack(RF, InData%V_DiskAvg) + call RegPack(RF, InData%yaw) + call RegPack(RF, InData%tilt) + call RegPackAlloc(RF, InData%hub_theta_x_root) + call RegPack(RF, InData%V_dot_x) + call MeshPack(RF, InData%HubLoad) + call RegPack(RF, allocated(InData%B_L_2_H_P)) if (allocated(InData%B_L_2_H_P)) then - call RegPackBounds(Buf, 1, lbound(InData%B_L_2_H_P, kind=B8Ki), ubound(InData%B_L_2_H_P, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%B_L_2_H_P, kind=B8Ki), ubound(InData%B_L_2_H_P, kind=B8Ki)) LB(1:1) = lbound(InData%B_L_2_H_P, kind=B8Ki) UB(1:1) = ubound(InData%B_L_2_H_P, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%B_L_2_H_P(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%B_L_2_H_P(i1)) end do end if - call RegPack(Buf, allocated(InData%SigmaCavitCrit)) - if (allocated(InData%SigmaCavitCrit)) then - call RegPackBounds(Buf, 2, lbound(InData%SigmaCavitCrit, kind=B8Ki), ubound(InData%SigmaCavitCrit, kind=B8Ki)) - call RegPack(Buf, InData%SigmaCavitCrit) - end if - call RegPack(Buf, allocated(InData%SigmaCavit)) - if (allocated(InData%SigmaCavit)) then - call RegPackBounds(Buf, 2, lbound(InData%SigmaCavit, kind=B8Ki), ubound(InData%SigmaCavit, kind=B8Ki)) - call RegPack(Buf, InData%SigmaCavit) - end if - call RegPack(Buf, allocated(InData%CavitWarnSet)) - if (allocated(InData%CavitWarnSet)) then - call RegPackBounds(Buf, 2, lbound(InData%CavitWarnSet, kind=B8Ki), ubound(InData%CavitWarnSet, kind=B8Ki)) - call RegPack(Buf, InData%CavitWarnSet) - end if - call RegPack(Buf, allocated(InData%TwrFB)) - if (allocated(InData%TwrFB)) then - call RegPackBounds(Buf, 2, lbound(InData%TwrFB, kind=B8Ki), ubound(InData%TwrFB, kind=B8Ki)) - call RegPack(Buf, InData%TwrFB) - end if - call RegPack(Buf, allocated(InData%TwrMB)) - if (allocated(InData%TwrMB)) then - call RegPackBounds(Buf, 2, lbound(InData%TwrMB, kind=B8Ki), ubound(InData%TwrMB, kind=B8Ki)) - call RegPack(Buf, InData%TwrMB) - end if - call RegPack(Buf, allocated(InData%HubFB)) - if (allocated(InData%HubFB)) then - call RegPackBounds(Buf, 1, lbound(InData%HubFB, kind=B8Ki), ubound(InData%HubFB, kind=B8Ki)) - call RegPack(Buf, InData%HubFB) - end if - call RegPack(Buf, allocated(InData%HubMB)) - if (allocated(InData%HubMB)) then - call RegPackBounds(Buf, 1, lbound(InData%HubMB, kind=B8Ki), ubound(InData%HubMB, kind=B8Ki)) - call RegPack(Buf, InData%HubMB) - end if - call RegPack(Buf, allocated(InData%NacFB)) - if (allocated(InData%NacFB)) then - call RegPackBounds(Buf, 1, lbound(InData%NacFB, kind=B8Ki), ubound(InData%NacFB, kind=B8Ki)) - call RegPack(Buf, InData%NacFB) - end if - call RegPack(Buf, allocated(InData%NacMB)) - if (allocated(InData%NacMB)) then - call RegPackBounds(Buf, 1, lbound(InData%NacMB, kind=B8Ki), ubound(InData%NacMB, kind=B8Ki)) - call RegPack(Buf, InData%NacMB) - end if - call RegPack(Buf, allocated(InData%BladeRootLoad)) + call RegPackAlloc(RF, InData%SigmaCavitCrit) + call RegPackAlloc(RF, InData%SigmaCavit) + call RegPackAlloc(RF, InData%CavitWarnSet) + call RegPackAlloc(RF, InData%TwrFB) + call RegPackAlloc(RF, InData%TwrMB) + call RegPackAlloc(RF, InData%HubFB) + call RegPackAlloc(RF, InData%HubMB) + call RegPackAlloc(RF, InData%NacFB) + call RegPackAlloc(RF, InData%NacMB) + call RegPack(RF, allocated(InData%BladeRootLoad)) if (allocated(InData%BladeRootLoad)) then - call RegPackBounds(Buf, 1, lbound(InData%BladeRootLoad, kind=B8Ki), ubound(InData%BladeRootLoad, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BladeRootLoad, kind=B8Ki), ubound(InData%BladeRootLoad, kind=B8Ki)) LB(1:1) = lbound(InData%BladeRootLoad, kind=B8Ki) UB(1:1) = ubound(InData%BladeRootLoad, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%BladeRootLoad(i1)) + call MeshPack(RF, InData%BladeRootLoad(i1)) end do end if - call RegPack(Buf, allocated(InData%B_L_2_R_P)) + call RegPack(RF, allocated(InData%B_L_2_R_P)) if (allocated(InData%B_L_2_R_P)) then - call RegPackBounds(Buf, 1, lbound(InData%B_L_2_R_P, kind=B8Ki), ubound(InData%B_L_2_R_P, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%B_L_2_R_P, kind=B8Ki), ubound(InData%B_L_2_R_P, kind=B8Ki)) LB(1:1) = lbound(InData%B_L_2_R_P, kind=B8Ki) UB(1:1) = ubound(InData%B_L_2_R_P, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%B_L_2_R_P(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%B_L_2_R_P(i1)) end do end if - call RegPack(Buf, allocated(InData%BladeBuoyLoadPoint)) + call RegPack(RF, allocated(InData%BladeBuoyLoadPoint)) if (allocated(InData%BladeBuoyLoadPoint)) then - call RegPackBounds(Buf, 1, lbound(InData%BladeBuoyLoadPoint, kind=B8Ki), ubound(InData%BladeBuoyLoadPoint, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BladeBuoyLoadPoint, kind=B8Ki), ubound(InData%BladeBuoyLoadPoint, kind=B8Ki)) LB(1:1) = lbound(InData%BladeBuoyLoadPoint, kind=B8Ki) UB(1:1) = ubound(InData%BladeBuoyLoadPoint, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%BladeBuoyLoadPoint(i1)) + call MeshPack(RF, InData%BladeBuoyLoadPoint(i1)) end do end if - call RegPack(Buf, allocated(InData%BladeBuoyLoad)) + call RegPack(RF, allocated(InData%BladeBuoyLoad)) if (allocated(InData%BladeBuoyLoad)) then - call RegPackBounds(Buf, 1, lbound(InData%BladeBuoyLoad, kind=B8Ki), ubound(InData%BladeBuoyLoad, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BladeBuoyLoad, kind=B8Ki), ubound(InData%BladeBuoyLoad, kind=B8Ki)) LB(1:1) = lbound(InData%BladeBuoyLoad, kind=B8Ki) UB(1:1) = ubound(InData%BladeBuoyLoad, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%BladeBuoyLoad(i1)) + call MeshPack(RF, InData%BladeBuoyLoad(i1)) end do end if - call RegPack(Buf, allocated(InData%B_P_2_B_L)) + call RegPack(RF, allocated(InData%B_P_2_B_L)) if (allocated(InData%B_P_2_B_L)) then - call RegPackBounds(Buf, 1, lbound(InData%B_P_2_B_L, kind=B8Ki), ubound(InData%B_P_2_B_L, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%B_P_2_B_L, kind=B8Ki), ubound(InData%B_P_2_B_L, kind=B8Ki)) LB(1:1) = lbound(InData%B_P_2_B_L, kind=B8Ki) UB(1:1) = ubound(InData%B_P_2_B_L, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%B_P_2_B_L(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%B_P_2_B_L(i1)) end do end if - call MeshPack(Buf, InData%TwrBuoyLoadPoint) - call MeshPack(Buf, InData%TwrBuoyLoad) - call NWTC_Library_PackMeshMapType(Buf, InData%T_P_2_T_L) - call RegPack(Buf, InData%FirstWarn_TowerStrike) - call RegPack(Buf, InData%AvgDiskVel) - call RegPack(Buf, InData%AvgDiskVelDist) - call RegPack(Buf, InData%TFinAlpha) - call RegPack(Buf, InData%TFinRe) - call RegPack(Buf, InData%TFinVrel) - call RegPack(Buf, InData%TFinVund_i) - call RegPack(Buf, InData%TFinVind_i) - call RegPack(Buf, InData%TFinVrel_i) - call RegPack(Buf, InData%TFinSTV_i) - call RegPack(Buf, InData%TFinF_i) - call RegPack(Buf, InData%TFinM_i) - if (RegCheckErr(Buf, RoutineName)) return + call MeshPack(RF, InData%TwrBuoyLoadPoint) + call MeshPack(RF, InData%TwrBuoyLoad) + call NWTC_Library_PackMeshMapType(RF, InData%T_P_2_T_L) + call RegPack(RF, InData%FirstWarn_TowerStrike) + call RegPack(RF, InData%AvgDiskVel) + call RegPack(RF, InData%AvgDiskVelDist) + call RegPack(RF, InData%TFinAlpha) + call RegPack(RF, InData%TFinRe) + call RegPack(RF, InData%TFinVrel) + call RegPack(RF, InData%TFinVund_i) + call RegPack(RF, InData%TFinVind_i) + call RegPack(RF, InData%TFinVrel_i) + call RegPack(RF, InData%TFinSTV_i) + call RegPack(RF, InData%TFinF_i) + call RegPack(RF, InData%TFinM_i) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackRotMiscVarType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackRotMiscVarType(RF, OutData) + type(RegFile), intent(inout) :: RF type(RotMiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackRotMiscVarType' integer(B8Ki) :: i1, i2, i3, i4 integer(B8Ki) :: LB(4), UB(4) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call BEMT_UnpackMisc(Buf, OutData%BEMT) ! BEMT - call BEMT_UnpackOutput(Buf, OutData%BEMT_y) ! BEMT_y + if (RF%ErrStat /= ErrID_None) return + call BEMT_UnpackMisc(RF, OutData%BEMT) ! BEMT + call BEMT_UnpackOutput(RF, OutData%BEMT_y) ! BEMT_y LB(1:1) = lbound(OutData%BEMT_u, kind=B8Ki) UB(1:1) = ubound(OutData%BEMT_u, kind=B8Ki) do i1 = LB(1), UB(1) - call BEMT_UnpackInput(Buf, OutData%BEMT_u(i1)) ! BEMT_u + call BEMT_UnpackInput(RF, OutData%BEMT_u(i1)) ! BEMT_u end do - call AA_UnpackMisc(Buf, OutData%AA) ! AA - call AA_UnpackOutput(Buf, OutData%AA_y) ! AA_y - call AA_UnpackInput(Buf, OutData%AA_u) ! AA_u - if (allocated(OutData%DisturbedInflow)) deallocate(OutData%DisturbedInflow) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DisturbedInflow(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DisturbedInflow.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DisturbedInflow) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%orientationAnnulus)) deallocate(OutData%orientationAnnulus) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%orientationAnnulus(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%orientationAnnulus.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%orientationAnnulus) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%R_li)) deallocate(OutData%R_li) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%R_li(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%R_li.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%R_li) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AllOuts)) deallocate(OutData%AllOuts) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AllOuts(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AllOuts.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AllOuts) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%W_Twr)) deallocate(OutData%W_Twr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%W_Twr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W_Twr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%W_Twr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%X_Twr)) deallocate(OutData%X_Twr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%X_Twr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%X_Twr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%X_Twr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Y_Twr)) deallocate(OutData%Y_Twr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Y_Twr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Y_Twr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Y_Twr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Curve)) deallocate(OutData%Curve) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Curve(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Curve.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Curve) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrClrnc)) deallocate(OutData%TwrClrnc) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrClrnc(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrClrnc.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrClrnc) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%X)) deallocate(OutData%X) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%X(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%X.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%X) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Y)) deallocate(OutData%Y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Y(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Z)) deallocate(OutData%Z) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Z(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Z.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Z) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%M)) deallocate(OutData%M) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%M(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%M.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%M) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Mx)) deallocate(OutData%Mx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Mx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Mx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Mx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%My)) deallocate(OutData%My) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%My(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%My.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%My) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Mz)) deallocate(OutData%Mz) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Mz(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Mz.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Mz) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vind_i)) deallocate(OutData%Vind_i) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vind_i(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vind_i.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vind_i) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%V_DiskAvg) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%yaw) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tilt) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%hub_theta_x_root)) deallocate(OutData%hub_theta_x_root) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%hub_theta_x_root(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%hub_theta_x_root.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%hub_theta_x_root) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%V_dot_x) - if (RegCheckErr(Buf, RoutineName)) return - call MeshUnpack(Buf, OutData%HubLoad) ! HubLoad + call AA_UnpackMisc(RF, OutData%AA) ! AA + call AA_UnpackOutput(RF, OutData%AA_y) ! AA_y + call AA_UnpackInput(RF, OutData%AA_u) ! AA_u + call RegUnpackAlloc(RF, OutData%DisturbedInflow); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%orientationAnnulus); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%R_li); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AllOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%W_Twr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%X_Twr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Y_Twr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Curve); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrClrnc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%X); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Z); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%M); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Mx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%My); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Mz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vind_i); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%V_DiskAvg); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%yaw); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tilt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%hub_theta_x_root); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%V_dot_x); if (RegCheckErr(RF, RoutineName)) return + call MeshUnpack(RF, OutData%HubLoad) ! HubLoad if (allocated(OutData%B_L_2_H_P)) deallocate(OutData%B_L_2_H_P) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%B_L_2_H_P(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%B_L_2_H_P.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%B_L_2_H_P.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%B_L_2_H_P(i1)) ! B_L_2_H_P + call NWTC_Library_UnpackMeshMapType(RF, OutData%B_L_2_H_P(i1)) ! B_L_2_H_P end do end if - if (allocated(OutData%SigmaCavitCrit)) deallocate(OutData%SigmaCavitCrit) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SigmaCavitCrit(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SigmaCavitCrit.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SigmaCavitCrit) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SigmaCavit)) deallocate(OutData%SigmaCavit) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SigmaCavit(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SigmaCavit.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SigmaCavit) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CavitWarnSet)) deallocate(OutData%CavitWarnSet) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CavitWarnSet(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CavitWarnSet.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CavitWarnSet) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrFB)) deallocate(OutData%TwrFB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrFB(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrFB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrFB) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrMB)) deallocate(OutData%TwrMB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrMB(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrMB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrMB) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%HubFB)) deallocate(OutData%HubFB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%HubFB(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%HubFB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%HubFB) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%HubMB)) deallocate(OutData%HubMB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%HubMB(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%HubMB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%HubMB) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%NacFB)) deallocate(OutData%NacFB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NacFB(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NacFB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NacFB) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%NacMB)) deallocate(OutData%NacMB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NacMB(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NacMB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NacMB) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%SigmaCavitCrit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SigmaCavit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CavitWarnSet); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrFB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrMB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%HubFB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%HubMB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NacFB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NacMB); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%BladeRootLoad)) deallocate(OutData%BladeRootLoad) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BladeRootLoad(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeRootLoad.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeRootLoad.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%BladeRootLoad(i1)) ! BladeRootLoad + call MeshUnpack(RF, OutData%BladeRootLoad(i1)) ! BladeRootLoad end do end if if (allocated(OutData%B_L_2_R_P)) deallocate(OutData%B_L_2_R_P) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%B_L_2_R_P(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%B_L_2_R_P.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%B_L_2_R_P.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%B_L_2_R_P(i1)) ! B_L_2_R_P + call NWTC_Library_UnpackMeshMapType(RF, OutData%B_L_2_R_P(i1)) ! B_L_2_R_P end do end if if (allocated(OutData%BladeBuoyLoadPoint)) deallocate(OutData%BladeBuoyLoadPoint) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BladeBuoyLoadPoint(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeBuoyLoadPoint.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeBuoyLoadPoint.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%BladeBuoyLoadPoint(i1)) ! BladeBuoyLoadPoint + call MeshUnpack(RF, OutData%BladeBuoyLoadPoint(i1)) ! BladeBuoyLoadPoint end do end if if (allocated(OutData%BladeBuoyLoad)) deallocate(OutData%BladeBuoyLoad) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BladeBuoyLoad(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeBuoyLoad.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeBuoyLoad.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%BladeBuoyLoad(i1)) ! BladeBuoyLoad + call MeshUnpack(RF, OutData%BladeBuoyLoad(i1)) ! BladeBuoyLoad end do end if if (allocated(OutData%B_P_2_B_L)) deallocate(OutData%B_P_2_B_L) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%B_P_2_B_L(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%B_P_2_B_L.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%B_P_2_B_L.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%B_P_2_B_L(i1)) ! B_P_2_B_L + call NWTC_Library_UnpackMeshMapType(RF, OutData%B_P_2_B_L(i1)) ! B_P_2_B_L end do end if - call MeshUnpack(Buf, OutData%TwrBuoyLoadPoint) ! TwrBuoyLoadPoint - call MeshUnpack(Buf, OutData%TwrBuoyLoad) ! TwrBuoyLoad - call NWTC_Library_UnpackMeshMapType(Buf, OutData%T_P_2_T_L) ! T_P_2_T_L - call RegUnpack(Buf, OutData%FirstWarn_TowerStrike) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AvgDiskVel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AvgDiskVelDist) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinAlpha) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinRe) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinVrel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinVund_i) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinVind_i) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinVrel_i) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinSTV_i) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinF_i) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinM_i) - if (RegCheckErr(Buf, RoutineName)) return + call MeshUnpack(RF, OutData%TwrBuoyLoadPoint) ! TwrBuoyLoadPoint + call MeshUnpack(RF, OutData%TwrBuoyLoad) ! TwrBuoyLoad + call NWTC_Library_UnpackMeshMapType(RF, OutData%T_P_2_T_L) ! T_P_2_T_L + call RegUnpack(RF, OutData%FirstWarn_TowerStrike); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AvgDiskVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AvgDiskVelDist); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinAlpha); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinRe); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinVrel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinVund_i); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinVind_i); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinVrel_i); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinSTV_i); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinF_i); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinM_i); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -5197,134 +3965,79 @@ subroutine AD_DestroyMisc(MiscData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackMisc' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%rotors)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%rotors)) if (allocated(InData%rotors)) then - call RegPackBounds(Buf, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) LB(1:1) = lbound(InData%rotors, kind=B8Ki) UB(1:1) = ubound(InData%rotors, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackRotMiscVarType(Buf, InData%rotors(i1)) + call AD_PackRotMiscVarType(RF, InData%rotors(i1)) end do end if - call RegPack(Buf, allocated(InData%FVW_u)) + call RegPack(RF, allocated(InData%FVW_u)) if (allocated(InData%FVW_u)) then - call RegPackBounds(Buf, 1, lbound(InData%FVW_u, kind=B8Ki), ubound(InData%FVW_u, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%FVW_u, kind=B8Ki), ubound(InData%FVW_u, kind=B8Ki)) LB(1:1) = lbound(InData%FVW_u, kind=B8Ki) UB(1:1) = ubound(InData%FVW_u, kind=B8Ki) do i1 = LB(1), UB(1) - call FVW_PackInput(Buf, InData%FVW_u(i1)) + call FVW_PackInput(RF, InData%FVW_u(i1)) end do end if - call FVW_PackOutput(Buf, InData%FVW_y) - call FVW_PackMisc(Buf, InData%FVW) - call RegPack(Buf, allocated(InData%WindPos)) - if (allocated(InData%WindPos)) then - call RegPackBounds(Buf, 2, lbound(InData%WindPos, kind=B8Ki), ubound(InData%WindPos, kind=B8Ki)) - call RegPack(Buf, InData%WindPos) - end if - call RegPack(Buf, allocated(InData%WindVel)) - if (allocated(InData%WindVel)) then - call RegPackBounds(Buf, 2, lbound(InData%WindVel, kind=B8Ki), ubound(InData%WindVel, kind=B8Ki)) - call RegPack(Buf, InData%WindVel) - end if - call RegPack(Buf, allocated(InData%WindAcc)) - if (allocated(InData%WindAcc)) then - call RegPackBounds(Buf, 2, lbound(InData%WindAcc, kind=B8Ki), ubound(InData%WindAcc, kind=B8Ki)) - call RegPack(Buf, InData%WindAcc) - end if - if (RegCheckErr(Buf, RoutineName)) return + call FVW_PackOutput(RF, InData%FVW_y) + call FVW_PackMisc(RF, InData%FVW) + call RegPackAlloc(RF, InData%WindPos) + call RegPackAlloc(RF, InData%WindVel) + call RegPackAlloc(RF, InData%WindAcc) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackMisc' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%rotors)) deallocate(OutData%rotors) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%rotors(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackRotMiscVarType(Buf, OutData%rotors(i1)) ! rotors + call AD_UnpackRotMiscVarType(RF, OutData%rotors(i1)) ! rotors end do end if if (allocated(OutData%FVW_u)) deallocate(OutData%FVW_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%FVW_u(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FVW_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FVW_u.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FVW_UnpackInput(Buf, OutData%FVW_u(i1)) ! FVW_u + call FVW_UnpackInput(RF, OutData%FVW_u(i1)) ! FVW_u end do end if - call FVW_UnpackOutput(Buf, OutData%FVW_y) ! FVW_y - call FVW_UnpackMisc(Buf, OutData%FVW) ! FVW - if (allocated(OutData%WindPos)) deallocate(OutData%WindPos) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WindPos(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WindPos.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WindPos) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WindVel)) deallocate(OutData%WindVel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WindVel(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WindVel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WindVel) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WindAcc)) deallocate(OutData%WindAcc) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WindAcc(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WindAcc.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WindAcc) - if (RegCheckErr(Buf, RoutineName)) return - end if + call FVW_UnpackOutput(RF, OutData%FVW_y) ! FVW_y + call FVW_UnpackMisc(RF, OutData%FVW) ! FVW + call RegUnpackAlloc(RF, OutData%WindPos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WindVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WindAcc); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_CopyRotParameterType(SrcRotParameterTypeData, DstRotParameterTypeData, CtrlCode, ErrStat, ErrMsg) @@ -5744,557 +4457,191 @@ subroutine AD_DestroyRotParameterType(RotParameterTypeData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD_PackRotParameterType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackRotParameterType(RF, Indata) + type(RegFile), intent(inout) :: RF type(RotParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackRotParameterType' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%NumBlades) - call RegPack(Buf, InData%NumBlNds) - call RegPack(Buf, InData%NumTwrNds) - call RegPack(Buf, allocated(InData%TwrDiam)) - if (allocated(InData%TwrDiam)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrDiam, kind=B8Ki), ubound(InData%TwrDiam, kind=B8Ki)) - call RegPack(Buf, InData%TwrDiam) - end if - call RegPack(Buf, allocated(InData%TwrCd)) - if (allocated(InData%TwrCd)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrCd, kind=B8Ki), ubound(InData%TwrCd, kind=B8Ki)) - call RegPack(Buf, InData%TwrCd) - end if - call RegPack(Buf, allocated(InData%TwrTI)) - if (allocated(InData%TwrTI)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrTI, kind=B8Ki), ubound(InData%TwrTI, kind=B8Ki)) - call RegPack(Buf, InData%TwrTI) - end if - call RegPack(Buf, allocated(InData%BlTwist)) - if (allocated(InData%BlTwist)) then - call RegPackBounds(Buf, 2, lbound(InData%BlTwist, kind=B8Ki), ubound(InData%BlTwist, kind=B8Ki)) - call RegPack(Buf, InData%BlTwist) - end if - call RegPack(Buf, allocated(InData%TwrCb)) - if (allocated(InData%TwrCb)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrCb, kind=B8Ki), ubound(InData%TwrCb, kind=B8Ki)) - call RegPack(Buf, InData%TwrCb) - end if - call RegPack(Buf, allocated(InData%BlCenBn)) - if (allocated(InData%BlCenBn)) then - call RegPackBounds(Buf, 2, lbound(InData%BlCenBn, kind=B8Ki), ubound(InData%BlCenBn, kind=B8Ki)) - call RegPack(Buf, InData%BlCenBn) - end if - call RegPack(Buf, allocated(InData%BlCenBt)) - if (allocated(InData%BlCenBt)) then - call RegPackBounds(Buf, 2, lbound(InData%BlCenBt, kind=B8Ki), ubound(InData%BlCenBt, kind=B8Ki)) - call RegPack(Buf, InData%BlCenBt) - end if - call RegPack(Buf, InData%VolHub) - call RegPack(Buf, InData%HubCenBx) - call RegPack(Buf, InData%VolNac) - call RegPack(Buf, InData%NacCenB) - call RegPack(Buf, InData%VolBl) - call RegPack(Buf, InData%VolTwr) - call RegPack(Buf, allocated(InData%BlRad)) - if (allocated(InData%BlRad)) then - call RegPackBounds(Buf, 2, lbound(InData%BlRad, kind=B8Ki), ubound(InData%BlRad, kind=B8Ki)) - call RegPack(Buf, InData%BlRad) - end if - call RegPack(Buf, allocated(InData%BlDL)) - if (allocated(InData%BlDL)) then - call RegPackBounds(Buf, 2, lbound(InData%BlDL, kind=B8Ki), ubound(InData%BlDL, kind=B8Ki)) - call RegPack(Buf, InData%BlDL) - end if - call RegPack(Buf, allocated(InData%BlTaper)) - if (allocated(InData%BlTaper)) then - call RegPackBounds(Buf, 2, lbound(InData%BlTaper, kind=B8Ki), ubound(InData%BlTaper, kind=B8Ki)) - call RegPack(Buf, InData%BlTaper) - end if - call RegPack(Buf, allocated(InData%BlAxCent)) - if (allocated(InData%BlAxCent)) then - call RegPackBounds(Buf, 2, lbound(InData%BlAxCent, kind=B8Ki), ubound(InData%BlAxCent, kind=B8Ki)) - call RegPack(Buf, InData%BlAxCent) - end if - call RegPack(Buf, allocated(InData%TwrRad)) - if (allocated(InData%TwrRad)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrRad, kind=B8Ki), ubound(InData%TwrRad, kind=B8Ki)) - call RegPack(Buf, InData%TwrRad) - end if - call RegPack(Buf, allocated(InData%TwrDL)) - if (allocated(InData%TwrDL)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrDL, kind=B8Ki), ubound(InData%TwrDL, kind=B8Ki)) - call RegPack(Buf, InData%TwrDL) - end if - call RegPack(Buf, allocated(InData%TwrTaper)) - if (allocated(InData%TwrTaper)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrTaper, kind=B8Ki), ubound(InData%TwrTaper, kind=B8Ki)) - call RegPack(Buf, InData%TwrTaper) - end if - call RegPack(Buf, allocated(InData%TwrAxCent)) - if (allocated(InData%TwrAxCent)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrAxCent, kind=B8Ki), ubound(InData%TwrAxCent, kind=B8Ki)) - call RegPack(Buf, InData%TwrAxCent) - end if - call BEMT_PackParam(Buf, InData%BEMT) - call AA_PackParam(Buf, InData%AA) - call RegPack(Buf, allocated(InData%Jac_u_indx)) - if (allocated(InData%Jac_u_indx)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_u_indx, kind=B8Ki), ubound(InData%Jac_u_indx, kind=B8Ki)) - call RegPack(Buf, InData%Jac_u_indx) - end if - call RegPack(Buf, allocated(InData%du)) - if (allocated(InData%du)) then - call RegPackBounds(Buf, 1, lbound(InData%du, kind=B8Ki), ubound(InData%du, kind=B8Ki)) - call RegPack(Buf, InData%du) - end if - call RegPack(Buf, allocated(InData%dx)) - if (allocated(InData%dx)) then - call RegPackBounds(Buf, 1, lbound(InData%dx, kind=B8Ki), ubound(InData%dx, kind=B8Ki)) - call RegPack(Buf, InData%dx) - end if - call RegPack(Buf, InData%Jac_ny) - call RegPack(Buf, InData%NumBl_Lin) - call RegPack(Buf, InData%TwrPotent) - call RegPack(Buf, InData%TwrShadow) - call RegPack(Buf, InData%TwrAero) - call RegPack(Buf, InData%FrozenWake) - call RegPack(Buf, InData%CavitCheck) - call RegPack(Buf, InData%Buoyancy) - call RegPack(Buf, InData%MHK) - call RegPack(Buf, InData%CompAA) - call RegPack(Buf, InData%AirDens) - call RegPack(Buf, InData%KinVisc) - call RegPack(Buf, InData%SpdSound) - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, InData%Patm) - call RegPack(Buf, InData%Pvap) - call RegPack(Buf, InData%WtrDpth) - call RegPack(Buf, InData%MSL2SWL) - call RegPack(Buf, InData%AeroProjMod) - call RegPack(Buf, InData%AeroBEM_Mod) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, allocated(InData%OutParam)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%NumBlades) + call RegPack(RF, InData%NumBlNds) + call RegPack(RF, InData%NumTwrNds) + call RegPackAlloc(RF, InData%TwrDiam) + call RegPackAlloc(RF, InData%TwrCd) + call RegPackAlloc(RF, InData%TwrTI) + call RegPackAlloc(RF, InData%BlTwist) + call RegPackAlloc(RF, InData%TwrCb) + call RegPackAlloc(RF, InData%BlCenBn) + call RegPackAlloc(RF, InData%BlCenBt) + call RegPack(RF, InData%VolHub) + call RegPack(RF, InData%HubCenBx) + call RegPack(RF, InData%VolNac) + call RegPack(RF, InData%NacCenB) + call RegPack(RF, InData%VolBl) + call RegPack(RF, InData%VolTwr) + call RegPackAlloc(RF, InData%BlRad) + call RegPackAlloc(RF, InData%BlDL) + call RegPackAlloc(RF, InData%BlTaper) + call RegPackAlloc(RF, InData%BlAxCent) + call RegPackAlloc(RF, InData%TwrRad) + call RegPackAlloc(RF, InData%TwrDL) + call RegPackAlloc(RF, InData%TwrTaper) + call RegPackAlloc(RF, InData%TwrAxCent) + call BEMT_PackParam(RF, InData%BEMT) + call AA_PackParam(RF, InData%AA) + call RegPackAlloc(RF, InData%Jac_u_indx) + call RegPackAlloc(RF, InData%du) + call RegPackAlloc(RF, InData%dx) + call RegPack(RF, InData%Jac_ny) + call RegPack(RF, InData%NumBl_Lin) + call RegPack(RF, InData%TwrPotent) + call RegPack(RF, InData%TwrShadow) + call RegPack(RF, InData%TwrAero) + call RegPack(RF, InData%FrozenWake) + call RegPack(RF, InData%CavitCheck) + call RegPack(RF, InData%Buoyancy) + call RegPack(RF, InData%MHK) + call RegPack(RF, InData%CompAA) + call RegPack(RF, InData%AirDens) + call RegPack(RF, InData%KinVisc) + call RegPack(RF, InData%SpdSound) + call RegPack(RF, InData%Gravity) + call RegPack(RF, InData%Patm) + call RegPack(RF, InData%Pvap) + call RegPack(RF, InData%WtrDpth) + call RegPack(RF, InData%MSL2SWL) + call RegPack(RF, InData%AeroProjMod) + call RegPack(RF, InData%AeroBEM_Mod) + call RegPack(RF, InData%NumOuts) + call RegPack(RF, InData%RootName) + call RegPack(RF, allocated(InData%OutParam)) if (allocated(InData%OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) LB(1:1) = lbound(InData%OutParam, kind=B8Ki) UB(1:1) = ubound(InData%OutParam, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackOutParmType(Buf, InData%OutParam(i1)) + call NWTC_Library_PackOutParmType(RF, InData%OutParam(i1)) end do end if - call RegPack(Buf, InData%NBlOuts) - call RegPack(Buf, InData%BlOutNd) - call RegPack(Buf, InData%NTwOuts) - call RegPack(Buf, InData%TwOutNd) - call RegPack(Buf, InData%BldNd_NumOuts) - call RegPack(Buf, InData%BldNd_TotNumOuts) - call RegPack(Buf, allocated(InData%BldNd_OutParam)) + call RegPack(RF, InData%NBlOuts) + call RegPack(RF, InData%BlOutNd) + call RegPack(RF, InData%NTwOuts) + call RegPack(RF, InData%TwOutNd) + call RegPack(RF, InData%BldNd_NumOuts) + call RegPack(RF, InData%BldNd_TotNumOuts) + call RegPack(RF, allocated(InData%BldNd_OutParam)) if (allocated(InData%BldNd_OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%BldNd_OutParam, kind=B8Ki), ubound(InData%BldNd_OutParam, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BldNd_OutParam, kind=B8Ki), ubound(InData%BldNd_OutParam, kind=B8Ki)) LB(1:1) = lbound(InData%BldNd_OutParam, kind=B8Ki) UB(1:1) = ubound(InData%BldNd_OutParam, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackOutParmType(Buf, InData%BldNd_OutParam(i1)) + call NWTC_Library_PackOutParmType(RF, InData%BldNd_OutParam(i1)) end do end if - call RegPack(Buf, allocated(InData%BldNd_BlOutNd)) - if (allocated(InData%BldNd_BlOutNd)) then - call RegPackBounds(Buf, 1, lbound(InData%BldNd_BlOutNd, kind=B8Ki), ubound(InData%BldNd_BlOutNd, kind=B8Ki)) - call RegPack(Buf, InData%BldNd_BlOutNd) - end if - call RegPack(Buf, InData%BldNd_BladesOut) - call RegPack(Buf, InData%TFinAero) - call AD_PackTFinParameterType(Buf, InData%TFin) - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%BldNd_BlOutNd) + call RegPack(RF, InData%BldNd_BladesOut) + call RegPack(RF, InData%TFinAero) + call AD_PackTFinParameterType(RF, InData%TFin) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackRotParameterType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackRotParameterType(RF, OutData) + type(RegFile), intent(inout) :: RF type(RotParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackRotParameterType' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%NumBlades) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBlNds) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumTwrNds) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TwrDiam)) deallocate(OutData%TwrDiam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrDiam(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrDiam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrDiam) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrCd)) deallocate(OutData%TwrCd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrCd(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrCd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrCd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrTI)) deallocate(OutData%TwrTI) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrTI(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrTI.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrTI) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlTwist)) deallocate(OutData%BlTwist) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlTwist(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlTwist.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlTwist) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrCb)) deallocate(OutData%TwrCb) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrCb(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrCb.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrCb) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlCenBn)) deallocate(OutData%BlCenBn) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlCenBn(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlCenBn.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlCenBn) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlCenBt)) deallocate(OutData%BlCenBt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlCenBt(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlCenBt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlCenBt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%VolHub) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubCenBx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VolNac) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacCenB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VolBl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VolTwr) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BlRad)) deallocate(OutData%BlRad) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlRad(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlRad.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlRad) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlDL)) deallocate(OutData%BlDL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlDL(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlDL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlDL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlTaper)) deallocate(OutData%BlTaper) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlTaper(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlTaper.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlTaper) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlAxCent)) deallocate(OutData%BlAxCent) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlAxCent(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlAxCent.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlAxCent) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrRad)) deallocate(OutData%TwrRad) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrRad(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrRad.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrRad) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrDL)) deallocate(OutData%TwrDL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrDL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrDL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrDL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrTaper)) deallocate(OutData%TwrTaper) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrTaper(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrTaper.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrTaper) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrAxCent)) deallocate(OutData%TwrAxCent) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrAxCent(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrAxCent.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrAxCent) - if (RegCheckErr(Buf, RoutineName)) return - end if - call BEMT_UnpackParam(Buf, OutData%BEMT) ! BEMT - call AA_UnpackParam(Buf, OutData%AA) ! AA - if (allocated(OutData%Jac_u_indx)) deallocate(OutData%Jac_u_indx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_u_indx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_u_indx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_u_indx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%du)) deallocate(OutData%du) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%du(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%du.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%du) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dx)) deallocate(OutData%dx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dx(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dx) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Jac_ny) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBl_Lin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrPotent) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrShadow) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrAero) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FrozenWake) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CavitCheck) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Buoyancy) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MHK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompAA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AirDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%KinVisc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SpdSound) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Patm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Pvap) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDpth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MSL2SWL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AeroProjMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AeroBEM_Mod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%NumBlades); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBlNds); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumTwrNds); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrDiam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrCd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrTI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlTwist); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrCb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlCenBn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlCenBt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VolHub); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubCenBx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VolNac); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacCenB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VolBl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VolTwr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlRad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlDL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlTaper); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlAxCent); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrRad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrDL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrTaper); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrAxCent); if (RegCheckErr(RF, RoutineName)) return + call BEMT_UnpackParam(RF, OutData%BEMT) ! BEMT + call AA_UnpackParam(RF, OutData%AA) ! AA + call RegUnpackAlloc(RF, OutData%Jac_u_indx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%du); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Jac_ny); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBl_Lin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrPotent); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrShadow); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrAero); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FrozenWake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CavitCheck); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Buoyancy); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MHK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompAA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AirDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%KinVisc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SpdSound); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Patm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Pvap); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDpth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MSL2SWL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AeroProjMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AeroBEM_Mod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%OutParam)) deallocate(OutData%OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackOutParmType(Buf, OutData%OutParam(i1)) ! OutParam + call NWTC_Library_UnpackOutParmType(RF, OutData%OutParam(i1)) ! OutParam end do end if - call RegUnpack(Buf, OutData%NBlOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BlOutNd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NTwOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwOutNd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BldNd_NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BldNd_TotNumOuts) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NBlOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BlOutNd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NTwOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwOutNd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldNd_NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldNd_TotNumOuts); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%BldNd_OutParam)) deallocate(OutData%BldNd_OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BldNd_OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldNd_OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldNd_OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackOutParmType(Buf, OutData%BldNd_OutParam(i1)) ! BldNd_OutParam + call NWTC_Library_UnpackOutParmType(RF, OutData%BldNd_OutParam(i1)) ! BldNd_OutParam end do end if - if (allocated(OutData%BldNd_BlOutNd)) deallocate(OutData%BldNd_BlOutNd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldNd_BlOutNd(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldNd_BlOutNd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldNd_BlOutNd) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%BldNd_BladesOut) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinAero) - if (RegCheckErr(Buf, RoutineName)) return - call AD_UnpackTFinParameterType(Buf, OutData%TFin) ! TFin + call RegUnpackAlloc(RF, OutData%BldNd_BlOutNd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldNd_BladesOut); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinAero); if (RegCheckErr(RF, RoutineName)) return + call AD_UnpackTFinParameterType(RF, OutData%TFin) ! TFin end subroutine subroutine AD_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -6388,51 +4735,51 @@ subroutine AD_DestroyParam(ParamData, ErrStat, ErrMsg) nullify(ParamData%FlowField) end subroutine -subroutine AD_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackParam' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%rotors)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%rotors)) if (allocated(InData%rotors)) then - call RegPackBounds(Buf, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) LB(1:1) = lbound(InData%rotors, kind=B8Ki) UB(1:1) = ubound(InData%rotors, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackRotParameterType(Buf, InData%rotors(i1)) + call AD_PackRotParameterType(RF, InData%rotors(i1)) end do end if - call RegPack(Buf, InData%DT) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, allocated(InData%AFI)) + call RegPack(RF, InData%DT) + call RegPack(RF, InData%RootName) + call RegPack(RF, allocated(InData%AFI)) if (allocated(InData%AFI)) then - call RegPackBounds(Buf, 1, lbound(InData%AFI, kind=B8Ki), ubound(InData%AFI, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%AFI, kind=B8Ki), ubound(InData%AFI, kind=B8Ki)) LB(1:1) = lbound(InData%AFI, kind=B8Ki) UB(1:1) = ubound(InData%AFI, kind=B8Ki) do i1 = LB(1), UB(1) - call AFI_PackParam(Buf, InData%AFI(i1)) + call AFI_PackParam(RF, InData%AFI(i1)) end do end if - call RegPack(Buf, InData%SkewMod) - call RegPack(Buf, InData%WakeMod) - call FVW_PackParam(Buf, InData%FVW) - call RegPack(Buf, InData%CompAeroMaps) - call RegPack(Buf, InData%UA_Flag) - call RegPack(Buf, associated(InData%FlowField)) + call RegPack(RF, InData%SkewMod) + call RegPack(RF, InData%WakeMod) + call FVW_PackParam(RF, InData%FVW) + call RegPack(RF, InData%CompAeroMaps) + call RegPack(RF, InData%UA_Flag) + call RegPack(RF, associated(InData%FlowField)) if (associated(InData%FlowField)) then - call RegPackPointer(Buf, c_loc(InData%FlowField), PtrInIndex) + call RegPackPointer(RF, c_loc(InData%FlowField), PtrInIndex) if (.not. PtrInIndex) then - call IfW_FlowField_PackFlowFieldType(Buf, InData%FlowField) + call IfW_FlowField_PackFlowFieldType(RF, InData%FlowField) end if end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackParam' integer(B8Ki) :: i1 @@ -6441,66 +4788,54 @@ subroutine AD_UnPackParam(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%rotors)) deallocate(OutData%rotors) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%rotors(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackRotParameterType(Buf, OutData%rotors(i1)) ! rotors + call AD_UnpackRotParameterType(RF, OutData%rotors(i1)) ! rotors end do end if - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%AFI)) deallocate(OutData%AFI) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%AFI(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AFI.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AFI.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AFI_UnpackParam(Buf, OutData%AFI(i1)) ! AFI + call AFI_UnpackParam(RF, OutData%AFI(i1)) ! AFI end do end if - call RegUnpack(Buf, OutData%SkewMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WakeMod) - if (RegCheckErr(Buf, RoutineName)) return - call FVW_UnpackParam(Buf, OutData%FVW) ! FVW - call RegUnpack(Buf, OutData%CompAeroMaps) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UA_Flag) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%SkewMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WakeMod); if (RegCheckErr(RF, RoutineName)) return + call FVW_UnpackParam(RF, OutData%FVW) ! FVW + call RegUnpack(RF, OutData%CompAeroMaps); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UA_Flag); if (RegCheckErr(RF, RoutineName)) return if (associated(OutData%FlowField)) deallocate(OutData%FlowField) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPointer(RF, Ptr, PtrIdx); if (RegCheckErr(RF, RoutineName)) return if (c_associated(Ptr)) then call c_f_pointer(Ptr, OutData%FlowField) else allocate(OutData%FlowField,stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FlowField.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FlowField.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - Buf%Pointers(PtrIdx) = c_loc(OutData%FlowField) - call IfW_FlowField_UnpackFlowFieldType(Buf, OutData%FlowField) ! FlowField + RF%Pointers(PtrIdx) = c_loc(OutData%FlowField) + call IfW_FlowField_UnpackFlowFieldType(RF, OutData%FlowField) ! FlowField end if else OutData%FlowField => null() @@ -6559,60 +4894,26 @@ subroutine AD_DestroyBldInputType(BldInputTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_PackBldInputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackBldInputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(BldInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackBldInputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%InflowOnBlade)) - if (allocated(InData%InflowOnBlade)) then - call RegPackBounds(Buf, 2, lbound(InData%InflowOnBlade, kind=B8Ki), ubound(InData%InflowOnBlade, kind=B8Ki)) - call RegPack(Buf, InData%InflowOnBlade) - end if - call RegPack(Buf, allocated(InData%AccelOnBlade)) - if (allocated(InData%AccelOnBlade)) then - call RegPackBounds(Buf, 2, lbound(InData%AccelOnBlade, kind=B8Ki), ubound(InData%AccelOnBlade, kind=B8Ki)) - call RegPack(Buf, InData%AccelOnBlade) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%InflowOnBlade) + call RegPackAlloc(RF, InData%AccelOnBlade) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackBldInputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackBldInputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(BldInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackBldInputType' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%InflowOnBlade)) deallocate(OutData%InflowOnBlade) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InflowOnBlade(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InflowOnBlade.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InflowOnBlade) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AccelOnBlade)) deallocate(OutData%AccelOnBlade) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AccelOnBlade(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AccelOnBlade.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AccelOnBlade) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%InflowOnBlade); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AccelOnBlade); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_CopyRotInputType(SrcRotInputTypeData, DstRotInputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -6787,174 +5088,113 @@ subroutine AD_DestroyRotInputType(RotInputTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_PackRotInputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackRotInputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(RotInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackRotInputType' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%NacelleMotion) - call MeshPack(Buf, InData%TowerMotion) - call MeshPack(Buf, InData%HubMotion) - call RegPack(Buf, allocated(InData%BladeRootMotion)) + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%NacelleMotion) + call MeshPack(RF, InData%TowerMotion) + call MeshPack(RF, InData%HubMotion) + call RegPack(RF, allocated(InData%BladeRootMotion)) if (allocated(InData%BladeRootMotion)) then - call RegPackBounds(Buf, 1, lbound(InData%BladeRootMotion, kind=B8Ki), ubound(InData%BladeRootMotion, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BladeRootMotion, kind=B8Ki), ubound(InData%BladeRootMotion, kind=B8Ki)) LB(1:1) = lbound(InData%BladeRootMotion, kind=B8Ki) UB(1:1) = ubound(InData%BladeRootMotion, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%BladeRootMotion(i1)) + call MeshPack(RF, InData%BladeRootMotion(i1)) end do end if - call RegPack(Buf, allocated(InData%BladeMotion)) + call RegPack(RF, allocated(InData%BladeMotion)) if (allocated(InData%BladeMotion)) then - call RegPackBounds(Buf, 1, lbound(InData%BladeMotion, kind=B8Ki), ubound(InData%BladeMotion, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BladeMotion, kind=B8Ki), ubound(InData%BladeMotion, kind=B8Ki)) LB(1:1) = lbound(InData%BladeMotion, kind=B8Ki) UB(1:1) = ubound(InData%BladeMotion, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%BladeMotion(i1)) + call MeshPack(RF, InData%BladeMotion(i1)) end do end if - call MeshPack(Buf, InData%TFinMotion) - call RegPack(Buf, allocated(InData%Bld)) + call MeshPack(RF, InData%TFinMotion) + call RegPack(RF, allocated(InData%Bld)) if (allocated(InData%Bld)) then - call RegPackBounds(Buf, 1, lbound(InData%Bld, kind=B8Ki), ubound(InData%Bld, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Bld, kind=B8Ki), ubound(InData%Bld, kind=B8Ki)) LB(1:1) = lbound(InData%Bld, kind=B8Ki) UB(1:1) = ubound(InData%Bld, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackBldInputType(Buf, InData%Bld(i1)) + call AD_PackBldInputType(RF, InData%Bld(i1)) end do end if - call RegPack(Buf, allocated(InData%InflowOnTower)) - if (allocated(InData%InflowOnTower)) then - call RegPackBounds(Buf, 2, lbound(InData%InflowOnTower, kind=B8Ki), ubound(InData%InflowOnTower, kind=B8Ki)) - call RegPack(Buf, InData%InflowOnTower) - end if - call RegPack(Buf, allocated(InData%AccelOnTower)) - if (allocated(InData%AccelOnTower)) then - call RegPackBounds(Buf, 2, lbound(InData%AccelOnTower, kind=B8Ki), ubound(InData%AccelOnTower, kind=B8Ki)) - call RegPack(Buf, InData%AccelOnTower) - end if - call RegPack(Buf, InData%InflowOnHub) - call RegPack(Buf, InData%InflowOnNacelle) - call RegPack(Buf, InData%InflowOnTailFin) - call RegPack(Buf, InData%AvgDiskVel) - call RegPack(Buf, allocated(InData%UserProp)) - if (allocated(InData%UserProp)) then - call RegPackBounds(Buf, 2, lbound(InData%UserProp, kind=B8Ki), ubound(InData%UserProp, kind=B8Ki)) - call RegPack(Buf, InData%UserProp) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%InflowOnTower) + call RegPackAlloc(RF, InData%AccelOnTower) + call RegPack(RF, InData%InflowOnHub) + call RegPack(RF, InData%InflowOnNacelle) + call RegPack(RF, InData%InflowOnTailFin) + call RegPack(RF, InData%AvgDiskVel) + call RegPackAlloc(RF, InData%UserProp) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackRotInputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackRotInputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(RotInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackRotInputType' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%NacelleMotion) ! NacelleMotion - call MeshUnpack(Buf, OutData%TowerMotion) ! TowerMotion - call MeshUnpack(Buf, OutData%HubMotion) ! HubMotion + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%NacelleMotion) ! NacelleMotion + call MeshUnpack(RF, OutData%TowerMotion) ! TowerMotion + call MeshUnpack(RF, OutData%HubMotion) ! HubMotion if (allocated(OutData%BladeRootMotion)) deallocate(OutData%BladeRootMotion) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BladeRootMotion(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeRootMotion.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeRootMotion.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%BladeRootMotion(i1)) ! BladeRootMotion + call MeshUnpack(RF, OutData%BladeRootMotion(i1)) ! BladeRootMotion end do end if if (allocated(OutData%BladeMotion)) deallocate(OutData%BladeMotion) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BladeMotion(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeMotion.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeMotion.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%BladeMotion(i1)) ! BladeMotion + call MeshUnpack(RF, OutData%BladeMotion(i1)) ! BladeMotion end do end if - call MeshUnpack(Buf, OutData%TFinMotion) ! TFinMotion + call MeshUnpack(RF, OutData%TFinMotion) ! TFinMotion if (allocated(OutData%Bld)) deallocate(OutData%Bld) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Bld(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Bld.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Bld.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackBldInputType(Buf, OutData%Bld(i1)) ! Bld + call AD_UnpackBldInputType(RF, OutData%Bld(i1)) ! Bld end do end if - if (allocated(OutData%InflowOnTower)) deallocate(OutData%InflowOnTower) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InflowOnTower(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InflowOnTower.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InflowOnTower) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AccelOnTower)) deallocate(OutData%AccelOnTower) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AccelOnTower(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AccelOnTower.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AccelOnTower) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%InflowOnHub) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InflowOnNacelle) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InflowOnTailFin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AvgDiskVel) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%UserProp)) deallocate(OutData%UserProp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%UserProp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UserProp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%UserProp) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%InflowOnTower); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AccelOnTower); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InflowOnHub); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InflowOnNacelle); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InflowOnTailFin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AvgDiskVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%UserProp); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -7025,68 +5265,49 @@ subroutine AD_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackInput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%rotors)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%rotors)) if (allocated(InData%rotors)) then - call RegPackBounds(Buf, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) LB(1:1) = lbound(InData%rotors, kind=B8Ki) UB(1:1) = ubound(InData%rotors, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackRotInputType(Buf, InData%rotors(i1)) + call AD_PackRotInputType(RF, InData%rotors(i1)) end do end if - call RegPack(Buf, allocated(InData%InflowWakeVel)) - if (allocated(InData%InflowWakeVel)) then - call RegPackBounds(Buf, 2, lbound(InData%InflowWakeVel, kind=B8Ki), ubound(InData%InflowWakeVel, kind=B8Ki)) - call RegPack(Buf, InData%InflowWakeVel) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%InflowWakeVel) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackInput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%rotors)) deallocate(OutData%rotors) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%rotors(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackRotInputType(Buf, OutData%rotors(i1)) ! rotors + call AD_UnpackRotInputType(RF, OutData%rotors(i1)) ! rotors end do end if - if (allocated(OutData%InflowWakeVel)) deallocate(OutData%InflowWakeVel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InflowWakeVel(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InflowWakeVel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InflowWakeVel) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%InflowWakeVel); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_CopyRotOutputType(SrcRotOutputTypeData, DstRotOutputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -7177,76 +5398,57 @@ subroutine AD_DestroyRotOutputType(RotOutputTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_PackRotOutputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackRotOutputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(RotOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackRotOutputType' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%NacelleLoad) - call MeshPack(Buf, InData%HubLoad) - call MeshPack(Buf, InData%TowerLoad) - call RegPack(Buf, allocated(InData%BladeLoad)) + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%NacelleLoad) + call MeshPack(RF, InData%HubLoad) + call MeshPack(RF, InData%TowerLoad) + call RegPack(RF, allocated(InData%BladeLoad)) if (allocated(InData%BladeLoad)) then - call RegPackBounds(Buf, 1, lbound(InData%BladeLoad, kind=B8Ki), ubound(InData%BladeLoad, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BladeLoad, kind=B8Ki), ubound(InData%BladeLoad, kind=B8Ki)) LB(1:1) = lbound(InData%BladeLoad, kind=B8Ki) UB(1:1) = ubound(InData%BladeLoad, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%BladeLoad(i1)) + call MeshPack(RF, InData%BladeLoad(i1)) end do end if - call MeshPack(Buf, InData%TFinLoad) - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - if (RegCheckErr(Buf, RoutineName)) return + call MeshPack(RF, InData%TFinLoad) + call RegPackAlloc(RF, InData%WriteOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackRotOutputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackRotOutputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(RotOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackRotOutputType' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%NacelleLoad) ! NacelleLoad - call MeshUnpack(Buf, OutData%HubLoad) ! HubLoad - call MeshUnpack(Buf, OutData%TowerLoad) ! TowerLoad + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%NacelleLoad) ! NacelleLoad + call MeshUnpack(RF, OutData%HubLoad) ! HubLoad + call MeshUnpack(RF, OutData%TowerLoad) ! TowerLoad if (allocated(OutData%BladeLoad)) deallocate(OutData%BladeLoad) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BladeLoad(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeLoad.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeLoad.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%BladeLoad(i1)) ! BladeLoad + call MeshUnpack(RF, OutData%BladeLoad(i1)) ! BladeLoad end do end if - call MeshUnpack(Buf, OutData%TFinLoad) ! TFinLoad - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + call MeshUnpack(RF, OutData%TFinLoad) ! TFinLoad + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -7302,47 +5504,45 @@ subroutine AD_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine AD_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD_PackOutput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%rotors)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%rotors)) if (allocated(InData%rotors)) then - call RegPackBounds(Buf, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) LB(1:1) = lbound(InData%rotors, kind=B8Ki) UB(1:1) = ubound(InData%rotors, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackRotOutputType(Buf, InData%rotors(i1)) + call AD_PackRotOutputType(RF, InData%rotors(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD_UnPackOutput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%rotors)) deallocate(OutData%rotors) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%rotors(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackRotOutputType(Buf, OutData%rotors(i1)) ! rotors + call AD_UnpackRotOutputType(RF, OutData%rotors(i1)) ! rotors end do end if end subroutine diff --git a/modules/aerodyn/src/AirfoilInfo_Types.f90 b/modules/aerodyn/src/AirfoilInfo_Types.f90 index 48668f43af..83b789170b 100644 --- a/modules/aerodyn/src/AirfoilInfo_Types.f90 +++ b/modules/aerodyn/src/AirfoilInfo_Types.f90 @@ -267,160 +267,113 @@ subroutine AFI_DestroyUA_BL_Type(UA_BL_TypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AFI_PackUA_BL_Type(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AFI_PackUA_BL_Type(RF, Indata) + type(RegFile), intent(inout) :: RF type(AFI_UA_BL_Type), intent(in) :: InData character(*), parameter :: RoutineName = 'AFI_PackUA_BL_Type' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%alpha0) - call RegPack(Buf, InData%alpha1) - call RegPack(Buf, InData%alpha2) - call RegPack(Buf, InData%eta_e) - call RegPack(Buf, InData%C_nalpha) - call RegPack(Buf, InData%C_lalpha) - call RegPack(Buf, InData%T_f0) - call RegPack(Buf, InData%T_V0) - call RegPack(Buf, InData%T_p) - call RegPack(Buf, InData%T_VL) - call RegPack(Buf, InData%b1) - call RegPack(Buf, InData%b2) - call RegPack(Buf, InData%b5) - call RegPack(Buf, InData%A1) - call RegPack(Buf, InData%A2) - call RegPack(Buf, InData%A5) - call RegPack(Buf, InData%S1) - call RegPack(Buf, InData%S2) - call RegPack(Buf, InData%S3) - call RegPack(Buf, InData%S4) - call RegPack(Buf, InData%Cn1) - call RegPack(Buf, InData%Cn2) - call RegPack(Buf, InData%St_sh) - call RegPack(Buf, InData%Cd0) - call RegPack(Buf, InData%Cm0) - call RegPack(Buf, InData%k0) - call RegPack(Buf, InData%k1) - call RegPack(Buf, InData%k2) - call RegPack(Buf, InData%k3) - call RegPack(Buf, InData%k1_hat) - call RegPack(Buf, InData%x_cp_bar) - call RegPack(Buf, InData%UACutout) - call RegPack(Buf, InData%UACutout_delta) - call RegPack(Buf, InData%UACutout_blend) - call RegPack(Buf, InData%filtCutOff) - call RegPack(Buf, InData%alphaUpper) - call RegPack(Buf, InData%alphaLower) - call RegPack(Buf, InData%c_Rate) - call RegPack(Buf, InData%c_RateUpper) - call RegPack(Buf, InData%c_RateLower) - call RegPack(Buf, InData%c_alphaLower) - call RegPack(Buf, InData%c_alphaUpper) - call RegPack(Buf, InData%alphaUpperWrap) - call RegPack(Buf, InData%alphaLowerWrap) - call RegPack(Buf, InData%c_RateWrap) - call RegPack(Buf, InData%c_alphaLowerWrap) - call RegPack(Buf, InData%c_alphaUpperWrap) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%alpha0) + call RegPack(RF, InData%alpha1) + call RegPack(RF, InData%alpha2) + call RegPack(RF, InData%eta_e) + call RegPack(RF, InData%C_nalpha) + call RegPack(RF, InData%C_lalpha) + call RegPack(RF, InData%T_f0) + call RegPack(RF, InData%T_V0) + call RegPack(RF, InData%T_p) + call RegPack(RF, InData%T_VL) + call RegPack(RF, InData%b1) + call RegPack(RF, InData%b2) + call RegPack(RF, InData%b5) + call RegPack(RF, InData%A1) + call RegPack(RF, InData%A2) + call RegPack(RF, InData%A5) + call RegPack(RF, InData%S1) + call RegPack(RF, InData%S2) + call RegPack(RF, InData%S3) + call RegPack(RF, InData%S4) + call RegPack(RF, InData%Cn1) + call RegPack(RF, InData%Cn2) + call RegPack(RF, InData%St_sh) + call RegPack(RF, InData%Cd0) + call RegPack(RF, InData%Cm0) + call RegPack(RF, InData%k0) + call RegPack(RF, InData%k1) + call RegPack(RF, InData%k2) + call RegPack(RF, InData%k3) + call RegPack(RF, InData%k1_hat) + call RegPack(RF, InData%x_cp_bar) + call RegPack(RF, InData%UACutout) + call RegPack(RF, InData%UACutout_delta) + call RegPack(RF, InData%UACutout_blend) + call RegPack(RF, InData%filtCutOff) + call RegPack(RF, InData%alphaUpper) + call RegPack(RF, InData%alphaLower) + call RegPack(RF, InData%c_Rate) + call RegPack(RF, InData%c_RateUpper) + call RegPack(RF, InData%c_RateLower) + call RegPack(RF, InData%c_alphaLower) + call RegPack(RF, InData%c_alphaUpper) + call RegPack(RF, InData%alphaUpperWrap) + call RegPack(RF, InData%alphaLowerWrap) + call RegPack(RF, InData%c_RateWrap) + call RegPack(RF, InData%c_alphaLowerWrap) + call RegPack(RF, InData%c_alphaUpperWrap) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AFI_UnPackUA_BL_Type(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AFI_UnPackUA_BL_Type(RF, OutData) + type(RegFile), intent(inout) :: RF type(AFI_UA_BL_Type), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AFI_UnPackUA_BL_Type' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%alpha0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%alpha1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%alpha2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%eta_e) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_nalpha) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_lalpha) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%T_f0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%T_V0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%T_p) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%T_VL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%b1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%b2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%b5) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%A1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%A2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%A5) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%S1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%S2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%S3) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%S4) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cn1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cn2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%St_sh) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cd0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cm0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k3) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k1_hat) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%x_cp_bar) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UACutout) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UACutout_delta) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UACutout_blend) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%filtCutOff) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%alphaUpper) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%alphaLower) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%c_Rate) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%c_RateUpper) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%c_RateLower) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%c_alphaLower) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%c_alphaUpper) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%alphaUpperWrap) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%alphaLowerWrap) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%c_RateWrap) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%c_alphaLowerWrap) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%c_alphaUpperWrap) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%alpha0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%alpha1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%alpha2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%eta_e); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_nalpha); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_lalpha); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%T_f0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%T_V0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%T_p); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%T_VL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%b1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%b2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%b5); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%A1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%A2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%A5); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%S1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%S2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%S3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%S4); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cn1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cn2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%St_sh); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cd0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cm0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k1_hat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%x_cp_bar); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UACutout); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UACutout_delta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UACutout_blend); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%filtCutOff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%alphaUpper); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%alphaLower); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%c_Rate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%c_RateUpper); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%c_RateLower); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%c_alphaLower); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%c_alphaUpper); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%alphaUpperWrap); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%alphaLowerWrap); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%c_RateWrap); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%c_alphaLowerWrap); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%c_alphaUpperWrap); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AFI_CopyUA_BL_Default_Type(SrcUA_BL_Default_TypeData, DstUA_BL_Default_TypeData, CtrlCode, ErrStat, ErrMsg) @@ -479,127 +432,91 @@ subroutine AFI_DestroyUA_BL_Default_Type(UA_BL_Default_TypeData, ErrStat, ErrMsg ErrMsg = '' end subroutine -subroutine AFI_PackUA_BL_Default_Type(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AFI_PackUA_BL_Default_Type(RF, Indata) + type(RegFile), intent(inout) :: RF type(AFI_UA_BL_Default_Type), intent(in) :: InData character(*), parameter :: RoutineName = 'AFI_PackUA_BL_Default_Type' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%alpha0) - call RegPack(Buf, InData%alpha1) - call RegPack(Buf, InData%alpha2) - call RegPack(Buf, InData%eta_e) - call RegPack(Buf, InData%C_nalpha) - call RegPack(Buf, InData%C_lalpha) - call RegPack(Buf, InData%T_f0) - call RegPack(Buf, InData%T_V0) - call RegPack(Buf, InData%T_p) - call RegPack(Buf, InData%T_VL) - call RegPack(Buf, InData%b1) - call RegPack(Buf, InData%b2) - call RegPack(Buf, InData%b5) - call RegPack(Buf, InData%A1) - call RegPack(Buf, InData%A2) - call RegPack(Buf, InData%A5) - call RegPack(Buf, InData%S1) - call RegPack(Buf, InData%S2) - call RegPack(Buf, InData%S3) - call RegPack(Buf, InData%S4) - call RegPack(Buf, InData%Cn1) - call RegPack(Buf, InData%Cn2) - call RegPack(Buf, InData%St_sh) - call RegPack(Buf, InData%Cd0) - call RegPack(Buf, InData%Cm0) - call RegPack(Buf, InData%k0) - call RegPack(Buf, InData%k1) - call RegPack(Buf, InData%k2) - call RegPack(Buf, InData%k3) - call RegPack(Buf, InData%k1_hat) - call RegPack(Buf, InData%x_cp_bar) - call RegPack(Buf, InData%UACutout) - call RegPack(Buf, InData%UACutout_delta) - call RegPack(Buf, InData%filtCutOff) - call RegPack(Buf, InData%alphaUpper) - call RegPack(Buf, InData%alphaLower) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%alpha0) + call RegPack(RF, InData%alpha1) + call RegPack(RF, InData%alpha2) + call RegPack(RF, InData%eta_e) + call RegPack(RF, InData%C_nalpha) + call RegPack(RF, InData%C_lalpha) + call RegPack(RF, InData%T_f0) + call RegPack(RF, InData%T_V0) + call RegPack(RF, InData%T_p) + call RegPack(RF, InData%T_VL) + call RegPack(RF, InData%b1) + call RegPack(RF, InData%b2) + call RegPack(RF, InData%b5) + call RegPack(RF, InData%A1) + call RegPack(RF, InData%A2) + call RegPack(RF, InData%A5) + call RegPack(RF, InData%S1) + call RegPack(RF, InData%S2) + call RegPack(RF, InData%S3) + call RegPack(RF, InData%S4) + call RegPack(RF, InData%Cn1) + call RegPack(RF, InData%Cn2) + call RegPack(RF, InData%St_sh) + call RegPack(RF, InData%Cd0) + call RegPack(RF, InData%Cm0) + call RegPack(RF, InData%k0) + call RegPack(RF, InData%k1) + call RegPack(RF, InData%k2) + call RegPack(RF, InData%k3) + call RegPack(RF, InData%k1_hat) + call RegPack(RF, InData%x_cp_bar) + call RegPack(RF, InData%UACutout) + call RegPack(RF, InData%UACutout_delta) + call RegPack(RF, InData%filtCutOff) + call RegPack(RF, InData%alphaUpper) + call RegPack(RF, InData%alphaLower) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AFI_UnPackUA_BL_Default_Type(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AFI_UnPackUA_BL_Default_Type(RF, OutData) + type(RegFile), intent(inout) :: RF type(AFI_UA_BL_Default_Type), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AFI_UnPackUA_BL_Default_Type' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%alpha0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%alpha1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%alpha2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%eta_e) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_nalpha) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_lalpha) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%T_f0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%T_V0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%T_p) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%T_VL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%b1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%b2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%b5) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%A1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%A2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%A5) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%S1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%S2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%S3) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%S4) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cn1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cn2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%St_sh) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cd0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cm0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k3) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k1_hat) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%x_cp_bar) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UACutout) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UACutout_delta) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%filtCutOff) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%alphaUpper) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%alphaLower) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%alpha0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%alpha1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%alpha2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%eta_e); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_nalpha); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_lalpha); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%T_f0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%T_V0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%T_p); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%T_VL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%b1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%b2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%b5); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%A1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%A2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%A5); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%S1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%S2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%S3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%S4); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cn1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cn2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%St_sh); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cd0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cm0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k1_hat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%x_cp_bar); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UACutout); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UACutout_delta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%filtCutOff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%alphaUpper); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%alphaLower); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AFI_CopyTable_Type(SrcTable_TypeData, DstTable_TypeData, CtrlCode, ErrStat, ErrMsg) @@ -682,96 +599,40 @@ subroutine AFI_DestroyTable_Type(Table_TypeData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AFI_PackTable_Type(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AFI_PackTable_Type(RF, Indata) + type(RegFile), intent(inout) :: RF type(AFI_Table_Type), intent(in) :: InData character(*), parameter :: RoutineName = 'AFI_PackTable_Type' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Alpha)) - if (allocated(InData%Alpha)) then - call RegPackBounds(Buf, 1, lbound(InData%Alpha, kind=B8Ki), ubound(InData%Alpha, kind=B8Ki)) - call RegPack(Buf, InData%Alpha) - end if - call RegPack(Buf, allocated(InData%Coefs)) - if (allocated(InData%Coefs)) then - call RegPackBounds(Buf, 2, lbound(InData%Coefs, kind=B8Ki), ubound(InData%Coefs, kind=B8Ki)) - call RegPack(Buf, InData%Coefs) - end if - call RegPack(Buf, allocated(InData%SplineCoefs)) - if (allocated(InData%SplineCoefs)) then - call RegPackBounds(Buf, 3, lbound(InData%SplineCoefs, kind=B8Ki), ubound(InData%SplineCoefs, kind=B8Ki)) - call RegPack(Buf, InData%SplineCoefs) - end if - call RegPack(Buf, InData%UserProp) - call RegPack(Buf, InData%Re) - call RegPack(Buf, InData%NumAlf) - call RegPack(Buf, InData%ConstData) - call RegPack(Buf, InData%InclUAdata) - call AFI_PackUA_BL_Type(Buf, InData%UA_BL) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%Alpha) + call RegPackAlloc(RF, InData%Coefs) + call RegPackAlloc(RF, InData%SplineCoefs) + call RegPack(RF, InData%UserProp) + call RegPack(RF, InData%Re) + call RegPack(RF, InData%NumAlf) + call RegPack(RF, InData%ConstData) + call RegPack(RF, InData%InclUAdata) + call AFI_PackUA_BL_Type(RF, InData%UA_BL) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AFI_UnPackTable_Type(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AFI_UnPackTable_Type(RF, OutData) + type(RegFile), intent(inout) :: RF type(AFI_Table_Type), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AFI_UnPackTable_Type' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%Alpha)) deallocate(OutData%Alpha) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Alpha(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Alpha.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Alpha) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Coefs)) deallocate(OutData%Coefs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Coefs(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Coefs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Coefs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SplineCoefs)) deallocate(OutData%SplineCoefs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SplineCoefs(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SplineCoefs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SplineCoefs) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%UserProp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Re) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumAlf) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ConstData) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InclUAdata) - if (RegCheckErr(Buf, RoutineName)) return - call AFI_UnpackUA_BL_Type(Buf, OutData%UA_BL) ! UA_BL + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%Alpha); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Coefs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SplineCoefs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UserProp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Re); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumAlf); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ConstData); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InclUAdata); if (RegCheckErr(RF, RoutineName)) return + call AFI_UnpackUA_BL_Type(RF, OutData%UA_BL) ! UA_BL end subroutine subroutine AFI_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -802,43 +663,35 @@ subroutine AFI_DestroyInitInput(InitInputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AFI_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AFI_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AFI_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AFI_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%FileName) - call RegPack(Buf, InData%AFTabMod) - call RegPack(Buf, InData%InCol_Alfa) - call RegPack(Buf, InData%InCol_Cl) - call RegPack(Buf, InData%InCol_Cd) - call RegPack(Buf, InData%InCol_Cm) - call RegPack(Buf, InData%InCol_Cpmin) - call RegPack(Buf, InData%UA_f_cn) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%FileName) + call RegPack(RF, InData%AFTabMod) + call RegPack(RF, InData%InCol_Alfa) + call RegPack(RF, InData%InCol_Cl) + call RegPack(RF, InData%InCol_Cd) + call RegPack(RF, InData%InCol_Cm) + call RegPack(RF, InData%InCol_Cpmin) + call RegPack(RF, InData%UA_f_cn) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AFI_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AFI_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AFI_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AFI_UnPackInitInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%FileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AFTabMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InCol_Alfa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InCol_Cl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InCol_Cd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InCol_Cm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InCol_Cpmin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UA_f_cn) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%FileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AFTabMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InCol_Alfa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InCol_Cl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InCol_Cd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InCol_Cm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InCol_Cpmin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UA_f_cn); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AFI_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -870,21 +723,21 @@ subroutine AFI_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AFI_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AFI_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AFI_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AFI_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call NWTC_Library_PackProgDesc(RF, InData%Ver) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AFI_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AFI_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AFI_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AFI_UnPackInitOutput' - if (Buf%ErrStat /= ErrID_None) return - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver + if (RF%ErrStat /= ErrID_None) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver end subroutine subroutine AFI_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -998,145 +851,79 @@ subroutine AFI_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine AFI_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AFI_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(AFI_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'AFI_PackParam' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%ColCd) - call RegPack(Buf, InData%ColCl) - call RegPack(Buf, InData%ColCm) - call RegPack(Buf, InData%ColCpmin) - call RegPack(Buf, InData%ColUAf) - call RegPack(Buf, InData%AFTabMod) - call RegPack(Buf, allocated(InData%secondVals)) - if (allocated(InData%secondVals)) then - call RegPackBounds(Buf, 1, lbound(InData%secondVals, kind=B8Ki), ubound(InData%secondVals, kind=B8Ki)) - call RegPack(Buf, InData%secondVals) - end if - call RegPack(Buf, InData%InterpOrd) - call RegPack(Buf, InData%RelThickness) - call RegPack(Buf, InData%NonDimArea) - call RegPack(Buf, InData%NumCoords) - call RegPack(Buf, allocated(InData%X_Coord)) - if (allocated(InData%X_Coord)) then - call RegPackBounds(Buf, 1, lbound(InData%X_Coord, kind=B8Ki), ubound(InData%X_Coord, kind=B8Ki)) - call RegPack(Buf, InData%X_Coord) - end if - call RegPack(Buf, allocated(InData%Y_Coord)) - if (allocated(InData%Y_Coord)) then - call RegPackBounds(Buf, 1, lbound(InData%Y_Coord, kind=B8Ki), ubound(InData%Y_Coord, kind=B8Ki)) - call RegPack(Buf, InData%Y_Coord) - end if - call RegPack(Buf, InData%NumTabs) - call RegPack(Buf, allocated(InData%Table)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%ColCd) + call RegPack(RF, InData%ColCl) + call RegPack(RF, InData%ColCm) + call RegPack(RF, InData%ColCpmin) + call RegPack(RF, InData%ColUAf) + call RegPack(RF, InData%AFTabMod) + call RegPackAlloc(RF, InData%secondVals) + call RegPack(RF, InData%InterpOrd) + call RegPack(RF, InData%RelThickness) + call RegPack(RF, InData%NonDimArea) + call RegPack(RF, InData%NumCoords) + call RegPackAlloc(RF, InData%X_Coord) + call RegPackAlloc(RF, InData%Y_Coord) + call RegPack(RF, InData%NumTabs) + call RegPack(RF, allocated(InData%Table)) if (allocated(InData%Table)) then - call RegPackBounds(Buf, 1, lbound(InData%Table, kind=B8Ki), ubound(InData%Table, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Table, kind=B8Ki), ubound(InData%Table, kind=B8Ki)) LB(1:1) = lbound(InData%Table, kind=B8Ki) UB(1:1) = ubound(InData%Table, kind=B8Ki) do i1 = LB(1), UB(1) - call AFI_PackTable_Type(Buf, InData%Table(i1)) + call AFI_PackTable_Type(RF, InData%Table(i1)) end do end if - call RegPack(Buf, InData%BL_file) - call RegPack(Buf, InData%FileName) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%BL_file) + call RegPack(RF, InData%FileName) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AFI_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AFI_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(AFI_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AFI_UnPackParam' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%ColCd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ColCl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ColCm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ColCpmin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ColUAf) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AFTabMod) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%secondVals)) deallocate(OutData%secondVals) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%secondVals(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%secondVals.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%secondVals) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%InterpOrd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RelThickness) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NonDimArea) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumCoords) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%X_Coord)) deallocate(OutData%X_Coord) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%X_Coord(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%X_Coord.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%X_Coord) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Y_Coord)) deallocate(OutData%Y_Coord) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Y_Coord(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Y_Coord.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Y_Coord) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NumTabs) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%ColCd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ColCl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ColCm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ColCpmin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ColUAf); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AFTabMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%secondVals); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InterpOrd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RelThickness); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NonDimArea); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumCoords); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%X_Coord); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Y_Coord); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumTabs); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%Table)) deallocate(OutData%Table) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Table(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Table.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Table.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AFI_UnpackTable_Type(Buf, OutData%Table(i1)) ! Table + call AFI_UnpackTable_Type(RF, OutData%Table(i1)) ! Table end do end if - call RegUnpack(Buf, OutData%BL_file) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FileName) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%BL_file); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FileName); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AFI_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -1162,28 +949,25 @@ subroutine AFI_DestroyInput(InputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AFI_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AFI_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AFI_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AFI_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%AoA) - call RegPack(Buf, InData%UserProp) - call RegPack(Buf, InData%Re) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%AoA) + call RegPack(RF, InData%UserProp) + call RegPack(RF, InData%Re) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AFI_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AFI_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AFI_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AFI_UnPackInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%AoA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UserProp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Re) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%AoA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UserProp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Re); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AFI_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -1215,46 +999,37 @@ subroutine AFI_DestroyOutput(OutputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AFI_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AFI_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AFI_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AFI_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Cl) - call RegPack(Buf, InData%Cd) - call RegPack(Buf, InData%Cm) - call RegPack(Buf, InData%Cpmin) - call RegPack(Buf, InData%Cd0) - call RegPack(Buf, InData%Cm0) - call RegPack(Buf, InData%f_st) - call RegPack(Buf, InData%FullySeparate) - call RegPack(Buf, InData%FullyAttached) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Cl) + call RegPack(RF, InData%Cd) + call RegPack(RF, InData%Cm) + call RegPack(RF, InData%Cpmin) + call RegPack(RF, InData%Cd0) + call RegPack(RF, InData%Cm0) + call RegPack(RF, InData%f_st) + call RegPack(RF, InData%FullySeparate) + call RegPack(RF, InData%FullyAttached) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AFI_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AFI_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AFI_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AFI_UnPackOutput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Cl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cpmin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cd0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cm0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%f_st) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FullySeparate) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FullyAttached) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Cl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cpmin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cd0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cm0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%f_st); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FullySeparate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FullyAttached); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AFI_Output_ExtrapInterp(y, t, y_out, t_out, ErrStat, ErrMsg) diff --git a/modules/aerodyn/src/BEMT_Types.f90 b/modules/aerodyn/src/BEMT_Types.f90 index c8acce2fc8..01b8ef02a6 100644 --- a/modules/aerodyn/src/BEMT_Types.f90 +++ b/modules/aerodyn/src/BEMT_Types.f90 @@ -411,268 +411,90 @@ subroutine BEMT_DestroyInitInput(InitInputData, ErrStat, ErrMsg) end if end subroutine -subroutine BEMT_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(BEMT_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'BEMT_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%chord)) - if (allocated(InData%chord)) then - call RegPackBounds(Buf, 2, lbound(InData%chord, kind=B8Ki), ubound(InData%chord, kind=B8Ki)) - call RegPack(Buf, InData%chord) - end if - call RegPack(Buf, InData%numBlades) - call RegPack(Buf, InData%airDens) - call RegPack(Buf, InData%kinVisc) - call RegPack(Buf, InData%skewWakeMod) - call RegPack(Buf, InData%aTol) - call RegPack(Buf, InData%useTipLoss) - call RegPack(Buf, InData%useHubLoss) - call RegPack(Buf, InData%useInduction) - call RegPack(Buf, InData%useTanInd) - call RegPack(Buf, InData%useAIDrag) - call RegPack(Buf, InData%useTIDrag) - call RegPack(Buf, InData%MomentumCorr) - call RegPack(Buf, InData%numBladeNodes) - call RegPack(Buf, InData%numReIterations) - call RegPack(Buf, InData%maxIndIterations) - call RegPack(Buf, allocated(InData%AFindx)) - if (allocated(InData%AFindx)) then - call RegPackBounds(Buf, 2, lbound(InData%AFindx, kind=B8Ki), ubound(InData%AFindx, kind=B8Ki)) - call RegPack(Buf, InData%AFindx) - end if - call RegPack(Buf, allocated(InData%zHub)) - if (allocated(InData%zHub)) then - call RegPackBounds(Buf, 1, lbound(InData%zHub, kind=B8Ki), ubound(InData%zHub, kind=B8Ki)) - call RegPack(Buf, InData%zHub) - end if - call RegPack(Buf, allocated(InData%zLocal)) - if (allocated(InData%zLocal)) then - call RegPackBounds(Buf, 2, lbound(InData%zLocal, kind=B8Ki), ubound(InData%zLocal, kind=B8Ki)) - call RegPack(Buf, InData%zLocal) - end if - call RegPack(Buf, allocated(InData%zTip)) - if (allocated(InData%zTip)) then - call RegPackBounds(Buf, 1, lbound(InData%zTip, kind=B8Ki), ubound(InData%zTip, kind=B8Ki)) - call RegPack(Buf, InData%zTip) - end if - call RegPack(Buf, allocated(InData%rLocal)) - if (allocated(InData%rLocal)) then - call RegPackBounds(Buf, 2, lbound(InData%rLocal, kind=B8Ki), ubound(InData%rLocal, kind=B8Ki)) - call RegPack(Buf, InData%rLocal) - end if - call RegPack(Buf, allocated(InData%rTipFix)) - if (allocated(InData%rTipFix)) then - call RegPackBounds(Buf, 1, lbound(InData%rTipFix, kind=B8Ki), ubound(InData%rTipFix, kind=B8Ki)) - call RegPack(Buf, InData%rTipFix) - end if - call RegPack(Buf, InData%UAMod) - call RegPack(Buf, InData%UA_Flag) - call RegPack(Buf, InData%Flookup) - call RegPack(Buf, InData%a_s) - call RegPack(Buf, InData%DBEMT_Mod) - call RegPack(Buf, InData%tau1_const) - call RegPack(Buf, InData%yawCorrFactor) - call RegPack(Buf, allocated(InData%UAOff_innerNode)) - if (allocated(InData%UAOff_innerNode)) then - call RegPackBounds(Buf, 1, lbound(InData%UAOff_innerNode, kind=B8Ki), ubound(InData%UAOff_innerNode, kind=B8Ki)) - call RegPack(Buf, InData%UAOff_innerNode) - end if - call RegPack(Buf, allocated(InData%UAOff_outerNode)) - if (allocated(InData%UAOff_outerNode)) then - call RegPackBounds(Buf, 1, lbound(InData%UAOff_outerNode, kind=B8Ki), ubound(InData%UAOff_outerNode, kind=B8Ki)) - call RegPack(Buf, InData%UAOff_outerNode) - end if - call RegPack(Buf, InData%RootName) - call RegPack(Buf, InData%SumPrint) - call RegPack(Buf, InData%BEM_Mod) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%chord) + call RegPack(RF, InData%numBlades) + call RegPack(RF, InData%airDens) + call RegPack(RF, InData%kinVisc) + call RegPack(RF, InData%skewWakeMod) + call RegPack(RF, InData%aTol) + call RegPack(RF, InData%useTipLoss) + call RegPack(RF, InData%useHubLoss) + call RegPack(RF, InData%useInduction) + call RegPack(RF, InData%useTanInd) + call RegPack(RF, InData%useAIDrag) + call RegPack(RF, InData%useTIDrag) + call RegPack(RF, InData%MomentumCorr) + call RegPack(RF, InData%numBladeNodes) + call RegPack(RF, InData%numReIterations) + call RegPack(RF, InData%maxIndIterations) + call RegPackAlloc(RF, InData%AFindx) + call RegPackAlloc(RF, InData%zHub) + call RegPackAlloc(RF, InData%zLocal) + call RegPackAlloc(RF, InData%zTip) + call RegPackAlloc(RF, InData%rLocal) + call RegPackAlloc(RF, InData%rTipFix) + call RegPack(RF, InData%UAMod) + call RegPack(RF, InData%UA_Flag) + call RegPack(RF, InData%Flookup) + call RegPack(RF, InData%a_s) + call RegPack(RF, InData%DBEMT_Mod) + call RegPack(RF, InData%tau1_const) + call RegPack(RF, InData%yawCorrFactor) + call RegPackAlloc(RF, InData%UAOff_innerNode) + call RegPackAlloc(RF, InData%UAOff_outerNode) + call RegPack(RF, InData%RootName) + call RegPack(RF, InData%SumPrint) + call RegPack(RF, InData%BEM_Mod) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BEMT_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(BEMT_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BEMT_UnPackInitInput' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%chord)) deallocate(OutData%chord) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%chord(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%chord.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%chord) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%numBlades) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%airDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%kinVisc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%skewWakeMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%aTol) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%useTipLoss) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%useHubLoss) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%useInduction) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%useTanInd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%useAIDrag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%useTIDrag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MomentumCorr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%numBladeNodes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%numReIterations) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%maxIndIterations) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%AFindx)) deallocate(OutData%AFindx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AFindx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AFindx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AFindx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%zHub)) deallocate(OutData%zHub) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%zHub(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%zHub.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%zHub) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%zLocal)) deallocate(OutData%zLocal) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%zLocal(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%zLocal.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%zLocal) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%zTip)) deallocate(OutData%zTip) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%zTip(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%zTip.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%zTip) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rLocal)) deallocate(OutData%rLocal) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rLocal(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rLocal.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rLocal) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rTipFix)) deallocate(OutData%rTipFix) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rTipFix(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rTipFix.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rTipFix) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%UAMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UA_Flag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Flookup) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%a_s) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DBEMT_Mod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tau1_const) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%yawCorrFactor) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%UAOff_innerNode)) deallocate(OutData%UAOff_innerNode) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%UAOff_innerNode(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UAOff_innerNode.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%UAOff_innerNode) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%UAOff_outerNode)) deallocate(OutData%UAOff_outerNode) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%UAOff_outerNode(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UAOff_outerNode.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%UAOff_outerNode) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SumPrint) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BEM_Mod) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%chord); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numBlades); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%airDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%kinVisc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%skewWakeMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%aTol); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%useTipLoss); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%useHubLoss); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%useInduction); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%useTanInd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%useAIDrag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%useTIDrag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MomentumCorr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numBladeNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numReIterations); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%maxIndIterations); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AFindx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%zHub); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%zLocal); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%zTip); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rLocal); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rTipFix); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UAMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UA_Flag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Flookup); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%a_s); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DBEMT_Mod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tau1_const); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%yawCorrFactor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%UAOff_innerNode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%UAOff_outerNode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SumPrint); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BEM_Mod); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BEMT_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -704,21 +526,21 @@ subroutine BEMT_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine BEMT_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(BEMT_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'BEMT_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call NWTC_Library_PackProgDesc(Buf, InData%Version) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call NWTC_Library_PackProgDesc(RF, InData%Version) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BEMT_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(BEMT_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BEMT_UnPackInitOutput' - if (Buf%ErrStat /= ErrID_None) return - call NWTC_Library_UnpackProgDesc(Buf, OutData%Version) ! Version + if (RF%ErrStat /= ErrID_None) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Version) ! Version end subroutine subroutine BEMT_CopySkewWake_InputType(SrcSkewWake_InputTypeData, DstSkewWake_InputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -744,28 +566,25 @@ subroutine BEMT_DestroySkewWake_InputType(SkewWake_InputTypeData, ErrStat, ErrMs ErrMsg = '' end subroutine -subroutine BEMT_PackSkewWake_InputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_PackSkewWake_InputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(BEMT_SkewWake_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'BEMT_PackSkewWake_InputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%v_qsw) - call RegPack(Buf, InData%V0) - call RegPack(Buf, InData%R) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%v_qsw) + call RegPack(RF, InData%V0) + call RegPack(RF, InData%R) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BEMT_UnPackSkewWake_InputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_UnPackSkewWake_InputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(BEMT_SkewWake_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BEMT_UnPackSkewWake_InputType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%v_qsw) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%V0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%R) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%v_qsw); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%V0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%R); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BEMT_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -803,26 +622,25 @@ subroutine BEMT_DestroyContState(ContStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine BEMT_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(BEMT_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'BEMT_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call UA_PackContState(Buf, InData%UA) - call DBEMT_PackContState(Buf, InData%DBEMT) - call RegPack(Buf, InData%V_w) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call UA_PackContState(RF, InData%UA) + call DBEMT_PackContState(RF, InData%DBEMT) + call RegPack(RF, InData%V_w) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BEMT_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(BEMT_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BEMT_UnPackContState' - if (Buf%ErrStat /= ErrID_None) return - call UA_UnpackContState(Buf, OutData%UA) ! UA - call DBEMT_UnpackContState(Buf, OutData%DBEMT) ! DBEMT - call RegUnpack(Buf, OutData%V_w) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call UA_UnpackContState(RF, OutData%UA) ! UA + call DBEMT_UnpackContState(RF, OutData%DBEMT) ! DBEMT + call RegUnpack(RF, OutData%V_w); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BEMT_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -854,21 +672,21 @@ subroutine BEMT_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine BEMT_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(BEMT_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'BEMT_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call UA_PackDiscState(Buf, InData%UA) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call UA_PackDiscState(RF, InData%UA) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BEMT_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(BEMT_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BEMT_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call UA_UnpackDiscState(Buf, OutData%UA) ! UA + if (RF%ErrStat /= ErrID_None) return + call UA_UnpackDiscState(RF, OutData%UA) ! UA end subroutine subroutine BEMT_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -908,41 +726,24 @@ subroutine BEMT_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) end if end subroutine -subroutine BEMT_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(BEMT_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'BEMT_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%phi)) - if (allocated(InData%phi)) then - call RegPackBounds(Buf, 2, lbound(InData%phi, kind=B8Ki), ubound(InData%phi, kind=B8Ki)) - call RegPack(Buf, InData%phi) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%phi) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BEMT_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(BEMT_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BEMT_UnPackConstrState' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%phi)) deallocate(OutData%phi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%phi(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%phi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%phi) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%phi); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BEMT_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -1013,64 +814,45 @@ subroutine BEMT_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) end do end subroutine -subroutine BEMT_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(BEMT_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'BEMT_PackOtherState' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call UA_PackOtherState(Buf, InData%UA) - call DBEMT_PackOtherState(Buf, InData%DBEMT) - call RegPack(Buf, allocated(InData%ValidPhi)) - if (allocated(InData%ValidPhi)) then - call RegPackBounds(Buf, 2, lbound(InData%ValidPhi, kind=B8Ki), ubound(InData%ValidPhi, kind=B8Ki)) - call RegPack(Buf, InData%ValidPhi) - end if - call RegPack(Buf, InData%nodesInitialized) + if (RF%ErrStat >= AbortErrLev) return + call UA_PackOtherState(RF, InData%UA) + call DBEMT_PackOtherState(RF, InData%DBEMT) + call RegPackAlloc(RF, InData%ValidPhi) + call RegPack(RF, InData%nodesInitialized) LB(1:1) = lbound(InData%xdot, kind=B8Ki) UB(1:1) = ubound(InData%xdot, kind=B8Ki) do i1 = LB(1), UB(1) - call BEMT_PackContState(Buf, InData%xdot(i1)) + call BEMT_PackContState(RF, InData%xdot(i1)) end do - call RegPack(Buf, InData%n) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%n) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BEMT_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(BEMT_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BEMT_UnPackOtherState' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call UA_UnpackOtherState(Buf, OutData%UA) ! UA - call DBEMT_UnpackOtherState(Buf, OutData%DBEMT) ! DBEMT - if (allocated(OutData%ValidPhi)) deallocate(OutData%ValidPhi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ValidPhi(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ValidPhi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ValidPhi) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%nodesInitialized) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call UA_UnpackOtherState(RF, OutData%UA) ! UA + call DBEMT_UnpackOtherState(RF, OutData%DBEMT) ! DBEMT + call RegUnpackAlloc(RF, OutData%ValidPhi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nodesInitialized); if (RegCheckErr(RF, RoutineName)) return LB(1:1) = lbound(OutData%xdot, kind=B8Ki) UB(1:1) = ubound(OutData%xdot, kind=B8Ki) do i1 = LB(1), UB(1) - call BEMT_UnpackContState(Buf, OutData%xdot(i1)) ! xdot + call BEMT_UnpackContState(RF, OutData%xdot(i1)) ! xdot end do - call RegUnpack(Buf, OutData%n) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%n); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BEMT_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -1300,28 +1082,28 @@ subroutine BEMT_DestroyMisc(MiscData, ErrStat, ErrMsg) end if end subroutine -subroutine BEMT_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(BEMT_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'BEMT_PackMisc' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%FirstWarn_Skew) - call RegPack(Buf, InData%FirstWarn_Phi) - call RegPack(Buf, InData%FirstWarn_BEMoff) - call UA_PackMisc(Buf, InData%UA) - call DBEMT_PackMisc(Buf, InData%DBEMT) - call UA_PackOutput(Buf, InData%y_UA) - call RegPack(Buf, allocated(InData%u_UA)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%FirstWarn_Skew) + call RegPack(RF, InData%FirstWarn_Phi) + call RegPack(RF, InData%FirstWarn_BEMoff) + call UA_PackMisc(RF, InData%UA) + call DBEMT_PackMisc(RF, InData%DBEMT) + call UA_PackOutput(RF, InData%y_UA) + call RegPack(RF, allocated(InData%u_UA)) if (allocated(InData%u_UA)) then - call RegPackBounds(Buf, 3, lbound(InData%u_UA, kind=B8Ki), ubound(InData%u_UA, kind=B8Ki)) + call RegPackBounds(RF, 3, lbound(InData%u_UA, kind=B8Ki), ubound(InData%u_UA, kind=B8Ki)) LB(1:3) = lbound(InData%u_UA, kind=B8Ki) UB(1:3) = ubound(InData%u_UA, kind=B8Ki) do i3 = LB(3), UB(3) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call UA_PackInput(Buf, InData%u_UA(i1,i2,i3)) + call UA_PackInput(RF, InData%u_UA(i1,i2,i3)) end do end do end do @@ -1329,91 +1111,54 @@ subroutine BEMT_PackMisc(Buf, Indata) LB(1:1) = lbound(InData%u_DBEMT, kind=B8Ki) UB(1:1) = ubound(InData%u_DBEMT, kind=B8Ki) do i1 = LB(1), UB(1) - call DBEMT_PackInput(Buf, InData%u_DBEMT(i1)) + call DBEMT_PackInput(RF, InData%u_DBEMT(i1)) end do LB(1:1) = lbound(InData%u_SkewWake, kind=B8Ki) UB(1:1) = ubound(InData%u_SkewWake, kind=B8Ki) do i1 = LB(1), UB(1) - call BEMT_PackSkewWake_InputType(Buf, InData%u_SkewWake(i1)) + call BEMT_PackSkewWake_InputType(RF, InData%u_SkewWake(i1)) end do - call RegPack(Buf, allocated(InData%TnInd_op)) - if (allocated(InData%TnInd_op)) then - call RegPackBounds(Buf, 2, lbound(InData%TnInd_op, kind=B8Ki), ubound(InData%TnInd_op, kind=B8Ki)) - call RegPack(Buf, InData%TnInd_op) - end if - call RegPack(Buf, allocated(InData%AxInd_op)) - if (allocated(InData%AxInd_op)) then - call RegPackBounds(Buf, 2, lbound(InData%AxInd_op, kind=B8Ki), ubound(InData%AxInd_op, kind=B8Ki)) - call RegPack(Buf, InData%AxInd_op) - end if - call RegPack(Buf, allocated(InData%AxInduction)) - if (allocated(InData%AxInduction)) then - call RegPackBounds(Buf, 2, lbound(InData%AxInduction, kind=B8Ki), ubound(InData%AxInduction, kind=B8Ki)) - call RegPack(Buf, InData%AxInduction) - end if - call RegPack(Buf, allocated(InData%TanInduction)) - if (allocated(InData%TanInduction)) then - call RegPackBounds(Buf, 2, lbound(InData%TanInduction, kind=B8Ki), ubound(InData%TanInduction, kind=B8Ki)) - call RegPack(Buf, InData%TanInduction) - end if - call RegPack(Buf, InData%UseFrozenWake) - call RegPack(Buf, allocated(InData%Rtip)) - if (allocated(InData%Rtip)) then - call RegPackBounds(Buf, 1, lbound(InData%Rtip, kind=B8Ki), ubound(InData%Rtip, kind=B8Ki)) - call RegPack(Buf, InData%Rtip) - end if - call RegPack(Buf, allocated(InData%phi)) - if (allocated(InData%phi)) then - call RegPackBounds(Buf, 2, lbound(InData%phi, kind=B8Ki), ubound(InData%phi, kind=B8Ki)) - call RegPack(Buf, InData%phi) - end if - call RegPack(Buf, allocated(InData%chi)) - if (allocated(InData%chi)) then - call RegPackBounds(Buf, 2, lbound(InData%chi, kind=B8Ki), ubound(InData%chi, kind=B8Ki)) - call RegPack(Buf, InData%chi) - end if - call RegPack(Buf, allocated(InData%ValidPhi)) - if (allocated(InData%ValidPhi)) then - call RegPackBounds(Buf, 2, lbound(InData%ValidPhi, kind=B8Ki), ubound(InData%ValidPhi, kind=B8Ki)) - call RegPack(Buf, InData%ValidPhi) - end if - call RegPack(Buf, InData%BEM_weight) - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%TnInd_op) + call RegPackAlloc(RF, InData%AxInd_op) + call RegPackAlloc(RF, InData%AxInduction) + call RegPackAlloc(RF, InData%TanInduction) + call RegPack(RF, InData%UseFrozenWake) + call RegPackAlloc(RF, InData%Rtip) + call RegPackAlloc(RF, InData%phi) + call RegPackAlloc(RF, InData%chi) + call RegPackAlloc(RF, InData%ValidPhi) + call RegPack(RF, InData%BEM_weight) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BEMT_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(BEMT_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BEMT_UnPackMisc' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%FirstWarn_Skew) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FirstWarn_Phi) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FirstWarn_BEMoff) - if (RegCheckErr(Buf, RoutineName)) return - call UA_UnpackMisc(Buf, OutData%UA) ! UA - call DBEMT_UnpackMisc(Buf, OutData%DBEMT) ! DBEMT - call UA_UnpackOutput(Buf, OutData%y_UA) ! y_UA + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%FirstWarn_Skew); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FirstWarn_Phi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FirstWarn_BEMoff); if (RegCheckErr(RF, RoutineName)) return + call UA_UnpackMisc(RF, OutData%UA) ! UA + call DBEMT_UnpackMisc(RF, OutData%DBEMT) ! DBEMT + call UA_UnpackOutput(RF, OutData%y_UA) ! y_UA if (allocated(OutData%u_UA)) deallocate(OutData%u_UA) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 3, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_UA(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_UA.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_UA.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i3 = LB(3), UB(3) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call UA_UnpackInput(Buf, OutData%u_UA(i1,i2,i3)) ! u_UA + call UA_UnpackInput(RF, OutData%u_UA(i1,i2,i3)) ! u_UA end do end do end do @@ -1421,129 +1166,23 @@ subroutine BEMT_UnPackMisc(Buf, OutData) LB(1:1) = lbound(OutData%u_DBEMT, kind=B8Ki) UB(1:1) = ubound(OutData%u_DBEMT, kind=B8Ki) do i1 = LB(1), UB(1) - call DBEMT_UnpackInput(Buf, OutData%u_DBEMT(i1)) ! u_DBEMT + call DBEMT_UnpackInput(RF, OutData%u_DBEMT(i1)) ! u_DBEMT end do LB(1:1) = lbound(OutData%u_SkewWake, kind=B8Ki) UB(1:1) = ubound(OutData%u_SkewWake, kind=B8Ki) do i1 = LB(1), UB(1) - call BEMT_UnpackSkewWake_InputType(Buf, OutData%u_SkewWake(i1)) ! u_SkewWake + call BEMT_UnpackSkewWake_InputType(RF, OutData%u_SkewWake(i1)) ! u_SkewWake end do - if (allocated(OutData%TnInd_op)) deallocate(OutData%TnInd_op) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TnInd_op(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TnInd_op.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TnInd_op) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AxInd_op)) deallocate(OutData%AxInd_op) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AxInd_op(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AxInd_op.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AxInd_op) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AxInduction)) deallocate(OutData%AxInduction) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AxInduction(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AxInduction.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AxInduction) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TanInduction)) deallocate(OutData%TanInduction) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TanInduction(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TanInduction.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TanInduction) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%UseFrozenWake) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Rtip)) deallocate(OutData%Rtip) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Rtip(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Rtip.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Rtip) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%phi)) deallocate(OutData%phi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%phi(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%phi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%phi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%chi)) deallocate(OutData%chi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%chi(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%chi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%chi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ValidPhi)) deallocate(OutData%ValidPhi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ValidPhi(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ValidPhi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ValidPhi) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%BEM_weight) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TnInd_op); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AxInd_op); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AxInduction); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TanInduction); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseFrozenWake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Rtip); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%phi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%chi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ValidPhi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BEM_weight); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BEMT_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -1708,225 +1347,84 @@ subroutine BEMT_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine BEMT_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(BEMT_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'BEMT_PackParam' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT) - call RegPack(Buf, allocated(InData%chord)) - if (allocated(InData%chord)) then - call RegPackBounds(Buf, 2, lbound(InData%chord, kind=B8Ki), ubound(InData%chord, kind=B8Ki)) - call RegPack(Buf, InData%chord) - end if - call RegPack(Buf, InData%numBlades) - call RegPack(Buf, InData%airDens) - call RegPack(Buf, InData%kinVisc) - call RegPack(Buf, InData%skewWakeMod) - call RegPack(Buf, InData%aTol) - call RegPack(Buf, InData%useTipLoss) - call RegPack(Buf, InData%useHubLoss) - call RegPack(Buf, InData%useInduction) - call RegPack(Buf, InData%useTanInd) - call RegPack(Buf, InData%useAIDrag) - call RegPack(Buf, InData%useTIDrag) - call RegPack(Buf, InData%numBladeNodes) - call RegPack(Buf, InData%numReIterations) - call RegPack(Buf, InData%maxIndIterations) - call RegPack(Buf, allocated(InData%AFindx)) - if (allocated(InData%AFindx)) then - call RegPackBounds(Buf, 2, lbound(InData%AFindx, kind=B8Ki), ubound(InData%AFindx, kind=B8Ki)) - call RegPack(Buf, InData%AFindx) - end if - call RegPack(Buf, allocated(InData%tipLossConst)) - if (allocated(InData%tipLossConst)) then - call RegPackBounds(Buf, 2, lbound(InData%tipLossConst, kind=B8Ki), ubound(InData%tipLossConst, kind=B8Ki)) - call RegPack(Buf, InData%tipLossConst) - end if - call RegPack(Buf, allocated(InData%hubLossConst)) - if (allocated(InData%hubLossConst)) then - call RegPackBounds(Buf, 2, lbound(InData%hubLossConst, kind=B8Ki), ubound(InData%hubLossConst, kind=B8Ki)) - call RegPack(Buf, InData%hubLossConst) - end if - call RegPack(Buf, allocated(InData%zHub)) - if (allocated(InData%zHub)) then - call RegPackBounds(Buf, 1, lbound(InData%zHub, kind=B8Ki), ubound(InData%zHub, kind=B8Ki)) - call RegPack(Buf, InData%zHub) - end if - call UA_PackParam(Buf, InData%UA) - call DBEMT_PackParam(Buf, InData%DBEMT) - call RegPack(Buf, InData%UA_Flag) - call RegPack(Buf, InData%DBEMT_Mod) - call RegPack(Buf, InData%yawCorrFactor) - call RegPack(Buf, allocated(InData%FixedInductions)) - if (allocated(InData%FixedInductions)) then - call RegPackBounds(Buf, 2, lbound(InData%FixedInductions, kind=B8Ki), ubound(InData%FixedInductions, kind=B8Ki)) - call RegPack(Buf, InData%FixedInductions) - end if - call RegPack(Buf, InData%MomentumCorr) - call RegPack(Buf, InData%rTipFixMax) - call RegPack(Buf, allocated(InData%IntegrateWeight)) - if (allocated(InData%IntegrateWeight)) then - call RegPackBounds(Buf, 2, lbound(InData%IntegrateWeight, kind=B8Ki), ubound(InData%IntegrateWeight, kind=B8Ki)) - call RegPack(Buf, InData%IntegrateWeight) - end if - call RegPack(Buf, InData%lin_nx) - call RegPack(Buf, InData%BEM_Mod) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT) + call RegPackAlloc(RF, InData%chord) + call RegPack(RF, InData%numBlades) + call RegPack(RF, InData%airDens) + call RegPack(RF, InData%kinVisc) + call RegPack(RF, InData%skewWakeMod) + call RegPack(RF, InData%aTol) + call RegPack(RF, InData%useTipLoss) + call RegPack(RF, InData%useHubLoss) + call RegPack(RF, InData%useInduction) + call RegPack(RF, InData%useTanInd) + call RegPack(RF, InData%useAIDrag) + call RegPack(RF, InData%useTIDrag) + call RegPack(RF, InData%numBladeNodes) + call RegPack(RF, InData%numReIterations) + call RegPack(RF, InData%maxIndIterations) + call RegPackAlloc(RF, InData%AFindx) + call RegPackAlloc(RF, InData%tipLossConst) + call RegPackAlloc(RF, InData%hubLossConst) + call RegPackAlloc(RF, InData%zHub) + call UA_PackParam(RF, InData%UA) + call DBEMT_PackParam(RF, InData%DBEMT) + call RegPack(RF, InData%UA_Flag) + call RegPack(RF, InData%DBEMT_Mod) + call RegPack(RF, InData%yawCorrFactor) + call RegPackAlloc(RF, InData%FixedInductions) + call RegPack(RF, InData%MomentumCorr) + call RegPack(RF, InData%rTipFixMax) + call RegPackAlloc(RF, InData%IntegrateWeight) + call RegPack(RF, InData%lin_nx) + call RegPack(RF, InData%BEM_Mod) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BEMT_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(BEMT_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BEMT_UnPackParam' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%chord)) deallocate(OutData%chord) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%chord(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%chord.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%chord) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%numBlades) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%airDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%kinVisc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%skewWakeMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%aTol) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%useTipLoss) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%useHubLoss) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%useInduction) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%useTanInd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%useAIDrag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%useTIDrag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%numBladeNodes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%numReIterations) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%maxIndIterations) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%AFindx)) deallocate(OutData%AFindx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AFindx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AFindx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AFindx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%tipLossConst)) deallocate(OutData%tipLossConst) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%tipLossConst(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%tipLossConst.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%tipLossConst) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%hubLossConst)) deallocate(OutData%hubLossConst) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%hubLossConst(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%hubLossConst.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%hubLossConst) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%zHub)) deallocate(OutData%zHub) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%zHub(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%zHub.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%zHub) - if (RegCheckErr(Buf, RoutineName)) return - end if - call UA_UnpackParam(Buf, OutData%UA) ! UA - call DBEMT_UnpackParam(Buf, OutData%DBEMT) ! DBEMT - call RegUnpack(Buf, OutData%UA_Flag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DBEMT_Mod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%yawCorrFactor) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%FixedInductions)) deallocate(OutData%FixedInductions) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FixedInductions(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FixedInductions.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FixedInductions) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%MomentumCorr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rTipFixMax) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%IntegrateWeight)) deallocate(OutData%IntegrateWeight) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IntegrateWeight(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IntegrateWeight.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IntegrateWeight) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%lin_nx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BEM_Mod) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%chord); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numBlades); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%airDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%kinVisc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%skewWakeMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%aTol); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%useTipLoss); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%useHubLoss); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%useInduction); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%useTanInd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%useAIDrag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%useTIDrag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numBladeNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numReIterations); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%maxIndIterations); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AFindx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%tipLossConst); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%hubLossConst); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%zHub); if (RegCheckErr(RF, RoutineName)) return + call UA_UnpackParam(RF, OutData%UA) ! UA + call DBEMT_UnpackParam(RF, OutData%DBEMT) ! DBEMT + call RegUnpack(RF, OutData%UA_Flag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DBEMT_Mod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%yawCorrFactor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FixedInductions); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MomentumCorr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rTipFixMax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IntegrateWeight); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%lin_nx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BEM_Mod); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BEMT_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -2138,271 +1636,60 @@ subroutine BEMT_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine BEMT_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(BEMT_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'BEMT_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%theta)) - if (allocated(InData%theta)) then - call RegPackBounds(Buf, 2, lbound(InData%theta, kind=B8Ki), ubound(InData%theta, kind=B8Ki)) - call RegPack(Buf, InData%theta) - end if - call RegPack(Buf, InData%chi0) - call RegPack(Buf, InData%psiSkewOffset) - call RegPack(Buf, allocated(InData%psi_s)) - if (allocated(InData%psi_s)) then - call RegPackBounds(Buf, 1, lbound(InData%psi_s, kind=B8Ki), ubound(InData%psi_s, kind=B8Ki)) - call RegPack(Buf, InData%psi_s) - end if - call RegPack(Buf, InData%omega) - call RegPack(Buf, InData%TSR) - call RegPack(Buf, allocated(InData%Vx)) - if (allocated(InData%Vx)) then - call RegPackBounds(Buf, 2, lbound(InData%Vx, kind=B8Ki), ubound(InData%Vx, kind=B8Ki)) - call RegPack(Buf, InData%Vx) - end if - call RegPack(Buf, allocated(InData%Vy)) - if (allocated(InData%Vy)) then - call RegPackBounds(Buf, 2, lbound(InData%Vy, kind=B8Ki), ubound(InData%Vy, kind=B8Ki)) - call RegPack(Buf, InData%Vy) - end if - call RegPack(Buf, allocated(InData%Vz)) - if (allocated(InData%Vz)) then - call RegPackBounds(Buf, 2, lbound(InData%Vz, kind=B8Ki), ubound(InData%Vz, kind=B8Ki)) - call RegPack(Buf, InData%Vz) - end if - call RegPack(Buf, allocated(InData%omega_z)) - if (allocated(InData%omega_z)) then - call RegPackBounds(Buf, 2, lbound(InData%omega_z, kind=B8Ki), ubound(InData%omega_z, kind=B8Ki)) - call RegPack(Buf, InData%omega_z) - end if - call RegPack(Buf, allocated(InData%xVelCorr)) - if (allocated(InData%xVelCorr)) then - call RegPackBounds(Buf, 2, lbound(InData%xVelCorr, kind=B8Ki), ubound(InData%xVelCorr, kind=B8Ki)) - call RegPack(Buf, InData%xVelCorr) - end if - call RegPack(Buf, allocated(InData%rLocal)) - if (allocated(InData%rLocal)) then - call RegPackBounds(Buf, 2, lbound(InData%rLocal, kind=B8Ki), ubound(InData%rLocal, kind=B8Ki)) - call RegPack(Buf, InData%rLocal) - end if - call RegPack(Buf, InData%Un_disk) - call RegPack(Buf, InData%V0) - call RegPack(Buf, InData%x_hat_disk) - call RegPack(Buf, allocated(InData%UserProp)) - if (allocated(InData%UserProp)) then - call RegPackBounds(Buf, 2, lbound(InData%UserProp, kind=B8Ki), ubound(InData%UserProp, kind=B8Ki)) - call RegPack(Buf, InData%UserProp) - end if - call RegPack(Buf, allocated(InData%CantAngle)) - if (allocated(InData%CantAngle)) then - call RegPackBounds(Buf, 2, lbound(InData%CantAngle, kind=B8Ki), ubound(InData%CantAngle, kind=B8Ki)) - call RegPack(Buf, InData%CantAngle) - end if - call RegPack(Buf, allocated(InData%drdz)) - if (allocated(InData%drdz)) then - call RegPackBounds(Buf, 2, lbound(InData%drdz, kind=B8Ki), ubound(InData%drdz, kind=B8Ki)) - call RegPack(Buf, InData%drdz) - end if - call RegPack(Buf, allocated(InData%toeAngle)) - if (allocated(InData%toeAngle)) then - call RegPackBounds(Buf, 2, lbound(InData%toeAngle, kind=B8Ki), ubound(InData%toeAngle, kind=B8Ki)) - call RegPack(Buf, InData%toeAngle) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%theta) + call RegPack(RF, InData%chi0) + call RegPack(RF, InData%psiSkewOffset) + call RegPackAlloc(RF, InData%psi_s) + call RegPack(RF, InData%omega) + call RegPack(RF, InData%TSR) + call RegPackAlloc(RF, InData%Vx) + call RegPackAlloc(RF, InData%Vy) + call RegPackAlloc(RF, InData%Vz) + call RegPackAlloc(RF, InData%omega_z) + call RegPackAlloc(RF, InData%xVelCorr) + call RegPackAlloc(RF, InData%rLocal) + call RegPack(RF, InData%Un_disk) + call RegPack(RF, InData%V0) + call RegPack(RF, InData%x_hat_disk) + call RegPackAlloc(RF, InData%UserProp) + call RegPackAlloc(RF, InData%CantAngle) + call RegPackAlloc(RF, InData%drdz) + call RegPackAlloc(RF, InData%toeAngle) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BEMT_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(BEMT_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BEMT_UnPackInput' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%theta)) deallocate(OutData%theta) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%theta(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%theta.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%theta) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%chi0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%psiSkewOffset) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%psi_s)) deallocate(OutData%psi_s) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%psi_s(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%psi_s.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%psi_s) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%omega) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TSR) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Vx)) deallocate(OutData%Vx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vy)) deallocate(OutData%Vy) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vy(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vy.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vy) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vz)) deallocate(OutData%Vz) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vz(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vz.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vz) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%omega_z)) deallocate(OutData%omega_z) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%omega_z(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%omega_z.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%omega_z) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%xVelCorr)) deallocate(OutData%xVelCorr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%xVelCorr(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xVelCorr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%xVelCorr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rLocal)) deallocate(OutData%rLocal) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rLocal(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rLocal.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rLocal) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Un_disk) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%V0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%x_hat_disk) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%UserProp)) deallocate(OutData%UserProp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%UserProp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UserProp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%UserProp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CantAngle)) deallocate(OutData%CantAngle) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CantAngle(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CantAngle.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CantAngle) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%drdz)) deallocate(OutData%drdz) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%drdz(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%drdz.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%drdz) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%toeAngle)) deallocate(OutData%toeAngle) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%toeAngle(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%toeAngle.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%toeAngle) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%theta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%chi0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%psiSkewOffset); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%psi_s); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%omega); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TSR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vy); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%omega_z); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%xVelCorr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rLocal); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Un_disk); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%V0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%x_hat_disk); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%UserProp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CantAngle); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%drdz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%toeAngle); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BEMT_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -2757,440 +2044,66 @@ subroutine BEMT_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine BEMT_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(BEMT_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'BEMT_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Vrel)) - if (allocated(InData%Vrel)) then - call RegPackBounds(Buf, 2, lbound(InData%Vrel, kind=B8Ki), ubound(InData%Vrel, kind=B8Ki)) - call RegPack(Buf, InData%Vrel) - end if - call RegPack(Buf, allocated(InData%phi)) - if (allocated(InData%phi)) then - call RegPackBounds(Buf, 2, lbound(InData%phi, kind=B8Ki), ubound(InData%phi, kind=B8Ki)) - call RegPack(Buf, InData%phi) - end if - call RegPack(Buf, allocated(InData%axInduction)) - if (allocated(InData%axInduction)) then - call RegPackBounds(Buf, 2, lbound(InData%axInduction, kind=B8Ki), ubound(InData%axInduction, kind=B8Ki)) - call RegPack(Buf, InData%axInduction) - end if - call RegPack(Buf, allocated(InData%tanInduction)) - if (allocated(InData%tanInduction)) then - call RegPackBounds(Buf, 2, lbound(InData%tanInduction, kind=B8Ki), ubound(InData%tanInduction, kind=B8Ki)) - call RegPack(Buf, InData%tanInduction) - end if - call RegPack(Buf, allocated(InData%axInduction_qs)) - if (allocated(InData%axInduction_qs)) then - call RegPackBounds(Buf, 2, lbound(InData%axInduction_qs, kind=B8Ki), ubound(InData%axInduction_qs, kind=B8Ki)) - call RegPack(Buf, InData%axInduction_qs) - end if - call RegPack(Buf, allocated(InData%tanInduction_qs)) - if (allocated(InData%tanInduction_qs)) then - call RegPackBounds(Buf, 2, lbound(InData%tanInduction_qs, kind=B8Ki), ubound(InData%tanInduction_qs, kind=B8Ki)) - call RegPack(Buf, InData%tanInduction_qs) - end if - call RegPack(Buf, allocated(InData%k)) - if (allocated(InData%k)) then - call RegPackBounds(Buf, 2, lbound(InData%k, kind=B8Ki), ubound(InData%k, kind=B8Ki)) - call RegPack(Buf, InData%k) - end if - call RegPack(Buf, allocated(InData%k_p)) - if (allocated(InData%k_p)) then - call RegPackBounds(Buf, 2, lbound(InData%k_p, kind=B8Ki), ubound(InData%k_p, kind=B8Ki)) - call RegPack(Buf, InData%k_p) - end if - call RegPack(Buf, allocated(InData%F)) - if (allocated(InData%F)) then - call RegPackBounds(Buf, 2, lbound(InData%F, kind=B8Ki), ubound(InData%F, kind=B8Ki)) - call RegPack(Buf, InData%F) - end if - call RegPack(Buf, allocated(InData%Re)) - if (allocated(InData%Re)) then - call RegPackBounds(Buf, 2, lbound(InData%Re, kind=B8Ki), ubound(InData%Re, kind=B8Ki)) - call RegPack(Buf, InData%Re) - end if - call RegPack(Buf, allocated(InData%AOA)) - if (allocated(InData%AOA)) then - call RegPackBounds(Buf, 2, lbound(InData%AOA, kind=B8Ki), ubound(InData%AOA, kind=B8Ki)) - call RegPack(Buf, InData%AOA) - end if - call RegPack(Buf, allocated(InData%Cx)) - if (allocated(InData%Cx)) then - call RegPackBounds(Buf, 2, lbound(InData%Cx, kind=B8Ki), ubound(InData%Cx, kind=B8Ki)) - call RegPack(Buf, InData%Cx) - end if - call RegPack(Buf, allocated(InData%Cy)) - if (allocated(InData%Cy)) then - call RegPackBounds(Buf, 2, lbound(InData%Cy, kind=B8Ki), ubound(InData%Cy, kind=B8Ki)) - call RegPack(Buf, InData%Cy) - end if - call RegPack(Buf, allocated(InData%Cz)) - if (allocated(InData%Cz)) then - call RegPackBounds(Buf, 2, lbound(InData%Cz, kind=B8Ki), ubound(InData%Cz, kind=B8Ki)) - call RegPack(Buf, InData%Cz) - end if - call RegPack(Buf, allocated(InData%Cmx)) - if (allocated(InData%Cmx)) then - call RegPackBounds(Buf, 2, lbound(InData%Cmx, kind=B8Ki), ubound(InData%Cmx, kind=B8Ki)) - call RegPack(Buf, InData%Cmx) - end if - call RegPack(Buf, allocated(InData%Cmy)) - if (allocated(InData%Cmy)) then - call RegPackBounds(Buf, 2, lbound(InData%Cmy, kind=B8Ki), ubound(InData%Cmy, kind=B8Ki)) - call RegPack(Buf, InData%Cmy) - end if - call RegPack(Buf, allocated(InData%Cmz)) - if (allocated(InData%Cmz)) then - call RegPackBounds(Buf, 2, lbound(InData%Cmz, kind=B8Ki), ubound(InData%Cmz, kind=B8Ki)) - call RegPack(Buf, InData%Cmz) - end if - call RegPack(Buf, allocated(InData%Cm)) - if (allocated(InData%Cm)) then - call RegPackBounds(Buf, 2, lbound(InData%Cm, kind=B8Ki), ubound(InData%Cm, kind=B8Ki)) - call RegPack(Buf, InData%Cm) - end if - call RegPack(Buf, allocated(InData%Cl)) - if (allocated(InData%Cl)) then - call RegPackBounds(Buf, 2, lbound(InData%Cl, kind=B8Ki), ubound(InData%Cl, kind=B8Ki)) - call RegPack(Buf, InData%Cl) - end if - call RegPack(Buf, allocated(InData%Cd)) - if (allocated(InData%Cd)) then - call RegPackBounds(Buf, 2, lbound(InData%Cd, kind=B8Ki), ubound(InData%Cd, kind=B8Ki)) - call RegPack(Buf, InData%Cd) - end if - call RegPack(Buf, allocated(InData%chi)) - if (allocated(InData%chi)) then - call RegPackBounds(Buf, 2, lbound(InData%chi, kind=B8Ki), ubound(InData%chi, kind=B8Ki)) - call RegPack(Buf, InData%chi) - end if - call RegPack(Buf, allocated(InData%Cpmin)) - if (allocated(InData%Cpmin)) then - call RegPackBounds(Buf, 2, lbound(InData%Cpmin, kind=B8Ki), ubound(InData%Cpmin, kind=B8Ki)) - call RegPack(Buf, InData%Cpmin) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%Vrel) + call RegPackAlloc(RF, InData%phi) + call RegPackAlloc(RF, InData%axInduction) + call RegPackAlloc(RF, InData%tanInduction) + call RegPackAlloc(RF, InData%axInduction_qs) + call RegPackAlloc(RF, InData%tanInduction_qs) + call RegPackAlloc(RF, InData%k) + call RegPackAlloc(RF, InData%k_p) + call RegPackAlloc(RF, InData%F) + call RegPackAlloc(RF, InData%Re) + call RegPackAlloc(RF, InData%AOA) + call RegPackAlloc(RF, InData%Cx) + call RegPackAlloc(RF, InData%Cy) + call RegPackAlloc(RF, InData%Cz) + call RegPackAlloc(RF, InData%Cmx) + call RegPackAlloc(RF, InData%Cmy) + call RegPackAlloc(RF, InData%Cmz) + call RegPackAlloc(RF, InData%Cm) + call RegPackAlloc(RF, InData%Cl) + call RegPackAlloc(RF, InData%Cd) + call RegPackAlloc(RF, InData%chi) + call RegPackAlloc(RF, InData%Cpmin) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BEMT_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BEMT_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(BEMT_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BEMT_UnPackOutput' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%Vrel)) deallocate(OutData%Vrel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vrel(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vrel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vrel) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%phi)) deallocate(OutData%phi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%phi(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%phi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%phi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%axInduction)) deallocate(OutData%axInduction) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%axInduction(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%axInduction.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%axInduction) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%tanInduction)) deallocate(OutData%tanInduction) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%tanInduction(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%tanInduction.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%tanInduction) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%axInduction_qs)) deallocate(OutData%axInduction_qs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%axInduction_qs(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%axInduction_qs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%axInduction_qs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%tanInduction_qs)) deallocate(OutData%tanInduction_qs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%tanInduction_qs(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%tanInduction_qs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%tanInduction_qs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%k)) deallocate(OutData%k) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%k(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%k.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%k) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%k_p)) deallocate(OutData%k_p) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%k_p(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%k_p.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%k_p) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F)) deallocate(OutData%F) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Re)) deallocate(OutData%Re) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Re(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Re.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Re) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AOA)) deallocate(OutData%AOA) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AOA(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AOA.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AOA) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cx)) deallocate(OutData%Cx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cy)) deallocate(OutData%Cy) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cy(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cy.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cy) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cz)) deallocate(OutData%Cz) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cz(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cz.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cz) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cmx)) deallocate(OutData%Cmx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cmx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cmx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cmx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cmy)) deallocate(OutData%Cmy) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cmy(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cmy.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cmy) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cmz)) deallocate(OutData%Cmz) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cmz(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cmz.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cmz) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cm)) deallocate(OutData%Cm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cm(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cm) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cl)) deallocate(OutData%Cl) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cl(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cl.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cl) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cd)) deallocate(OutData%Cd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cd(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%chi)) deallocate(OutData%chi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%chi(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%chi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%chi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cpmin)) deallocate(OutData%Cpmin) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cpmin(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cpmin.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cpmin) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%Vrel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%phi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%axInduction); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%tanInduction); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%axInduction_qs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%tanInduction_qs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%k); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%k_p); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Re); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AOA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cy); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cmx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cmy); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cmz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%chi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cpmin); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BEMT_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/aerodyn/src/DBEMT_Types.f90 b/modules/aerodyn/src/DBEMT_Types.f90 index dbc59138e3..17d9640ed6 100644 --- a/modules/aerodyn/src/DBEMT_Types.f90 +++ b/modules/aerodyn/src/DBEMT_Types.f90 @@ -160,53 +160,32 @@ subroutine DBEMT_DestroyInitInput(InitInputData, ErrStat, ErrMsg) end if end subroutine -subroutine DBEMT_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(DBEMT_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'DBEMT_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%NumBlades) - call RegPack(Buf, InData%NumNodes) - call RegPack(Buf, InData%tau1_const) - call RegPack(Buf, InData%DBEMT_Mod) - call RegPack(Buf, allocated(InData%rLocal)) - if (allocated(InData%rLocal)) then - call RegPackBounds(Buf, 2, lbound(InData%rLocal, kind=B8Ki), ubound(InData%rLocal, kind=B8Ki)) - call RegPack(Buf, InData%rLocal) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%NumBlades) + call RegPack(RF, InData%NumNodes) + call RegPack(RF, InData%tau1_const) + call RegPack(RF, InData%DBEMT_Mod) + call RegPackAlloc(RF, InData%rLocal) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DBEMT_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(DBEMT_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DBEMT_UnPackInitInput' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%NumBlades) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumNodes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tau1_const) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DBEMT_Mod) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%rLocal)) deallocate(OutData%rLocal) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rLocal(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rLocal.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rLocal) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%NumBlades); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tau1_const); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DBEMT_Mod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rLocal); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DBEMT_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -238,21 +217,21 @@ subroutine DBEMT_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine DBEMT_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(DBEMT_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'DBEMT_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call NWTC_Library_PackProgDesc(RF, InData%Ver) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DBEMT_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(DBEMT_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DBEMT_UnPackInitOutput' - if (Buf%ErrStat /= ErrID_None) return - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver + if (RF%ErrStat /= ErrID_None) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver end subroutine subroutine DBEMT_CopyElementContinuousStateType(SrcElementContinuousStateTypeData, DstElementContinuousStateTypeData, CtrlCode, ErrStat, ErrMsg) @@ -277,25 +256,23 @@ subroutine DBEMT_DestroyElementContinuousStateType(ElementContinuousStateTypeDat ErrMsg = '' end subroutine -subroutine DBEMT_PackElementContinuousStateType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_PackElementContinuousStateType(RF, Indata) + type(RegFile), intent(inout) :: RF type(DBEMT_ElementContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'DBEMT_PackElementContinuousStateType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%vind) - call RegPack(Buf, InData%vind_1) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%vind) + call RegPack(RF, InData%vind_1) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DBEMT_UnPackElementContinuousStateType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_UnPackElementContinuousStateType(RF, OutData) + type(RegFile), intent(inout) :: RF type(DBEMT_ElementContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DBEMT_UnPackElementContinuousStateType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%vind) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%vind_1) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%vind); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%vind_1); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DBEMT_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -355,50 +332,48 @@ subroutine DBEMT_DestroyContState(ContStateData, ErrStat, ErrMsg) end if end subroutine -subroutine DBEMT_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(DBEMT_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'DBEMT_PackContState' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%element)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%element)) if (allocated(InData%element)) then - call RegPackBounds(Buf, 2, lbound(InData%element, kind=B8Ki), ubound(InData%element, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%element, kind=B8Ki), ubound(InData%element, kind=B8Ki)) LB(1:2) = lbound(InData%element, kind=B8Ki) UB(1:2) = ubound(InData%element, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call DBEMT_PackElementContinuousStateType(Buf, InData%element(i1,i2)) + call DBEMT_PackElementContinuousStateType(RF, InData%element(i1,i2)) end do end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DBEMT_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(DBEMT_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DBEMT_UnPackContState' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%element)) deallocate(OutData%element) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%element(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%element.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%element.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call DBEMT_UnpackElementContinuousStateType(Buf, OutData%element(i1,i2)) ! element + call DBEMT_UnpackElementContinuousStateType(RF, OutData%element(i1,i2)) ! element end do end do end if @@ -425,22 +400,21 @@ subroutine DBEMT_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine DBEMT_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(DBEMT_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'DBEMT_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DBEMT_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(DBEMT_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DBEMT_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DBEMT_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -464,22 +438,21 @@ subroutine DBEMT_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine DBEMT_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(DBEMT_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'DBEMT_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DBEMT_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(DBEMT_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DBEMT_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DBEMT_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -555,78 +528,42 @@ subroutine DBEMT_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) end do end subroutine -subroutine DBEMT_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(DBEMT_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'DBEMT_PackOtherState' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%areStatesInitialized)) - if (allocated(InData%areStatesInitialized)) then - call RegPackBounds(Buf, 2, lbound(InData%areStatesInitialized, kind=B8Ki), ubound(InData%areStatesInitialized, kind=B8Ki)) - call RegPack(Buf, InData%areStatesInitialized) - end if - call RegPack(Buf, InData%tau1) - call RegPack(Buf, InData%tau2) - call RegPack(Buf, allocated(InData%n)) - if (allocated(InData%n)) then - call RegPackBounds(Buf, 2, lbound(InData%n, kind=B8Ki), ubound(InData%n, kind=B8Ki)) - call RegPack(Buf, InData%n) - end if + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%areStatesInitialized) + call RegPack(RF, InData%tau1) + call RegPack(RF, InData%tau2) + call RegPackAlloc(RF, InData%n) LB(1:1) = lbound(InData%xdot, kind=B8Ki) UB(1:1) = ubound(InData%xdot, kind=B8Ki) do i1 = LB(1), UB(1) - call DBEMT_PackContState(Buf, InData%xdot(i1)) + call DBEMT_PackContState(RF, InData%xdot(i1)) end do - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DBEMT_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(DBEMT_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DBEMT_UnPackOtherState' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%areStatesInitialized)) deallocate(OutData%areStatesInitialized) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%areStatesInitialized(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%areStatesInitialized.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%areStatesInitialized) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%tau1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tau2) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%n)) deallocate(OutData%n) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%n(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%n.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%n) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%areStatesInitialized); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tau1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tau2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%n); if (RegCheckErr(RF, RoutineName)) return LB(1:1) = lbound(OutData%xdot, kind=B8Ki) UB(1:1) = ubound(OutData%xdot, kind=B8Ki) do i1 = LB(1), UB(1) - call DBEMT_UnpackContState(Buf, OutData%xdot(i1)) ! xdot + call DBEMT_UnpackContState(RF, OutData%xdot(i1)) ! xdot end do end subroutine @@ -651,22 +588,21 @@ subroutine DBEMT_DestroyMisc(MiscData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine DBEMT_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(DBEMT_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'DBEMT_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%FirstWarn_tau1) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%FirstWarn_tau1) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DBEMT_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(DBEMT_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DBEMT_UnPackMisc' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%FirstWarn_tau1) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%FirstWarn_tau1); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DBEMT_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -713,62 +649,38 @@ subroutine DBEMT_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine DBEMT_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(DBEMT_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'DBEMT_PackParam' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT) - call RegPack(Buf, InData%lin_nx) - call RegPack(Buf, InData%NumBlades) - call RegPack(Buf, InData%NumNodes) - call RegPack(Buf, InData%k_0ye) - call RegPack(Buf, InData%tau1_const) - call RegPack(Buf, allocated(InData%spanRatio)) - if (allocated(InData%spanRatio)) then - call RegPackBounds(Buf, 2, lbound(InData%spanRatio, kind=B8Ki), ubound(InData%spanRatio, kind=B8Ki)) - call RegPack(Buf, InData%spanRatio) - end if - call RegPack(Buf, InData%DBEMT_Mod) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT) + call RegPack(RF, InData%lin_nx) + call RegPack(RF, InData%NumBlades) + call RegPack(RF, InData%NumNodes) + call RegPack(RF, InData%k_0ye) + call RegPack(RF, InData%tau1_const) + call RegPackAlloc(RF, InData%spanRatio) + call RegPack(RF, InData%DBEMT_Mod) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DBEMT_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(DBEMT_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DBEMT_UnPackParam' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%lin_nx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBlades) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumNodes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k_0ye) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tau1_const) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%spanRatio)) deallocate(OutData%spanRatio) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%spanRatio(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%spanRatio.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%spanRatio) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%DBEMT_Mod) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%lin_nx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBlades); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k_0ye); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tau1_const); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%spanRatio); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DBEMT_Mod); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DBEMT_CopyElementInputType(SrcElementInputTypeData, DstElementInputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -793,25 +705,23 @@ subroutine DBEMT_DestroyElementInputType(ElementInputTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine DBEMT_PackElementInputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_PackElementInputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(DBEMT_ElementInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'DBEMT_PackElementInputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%vind_s) - call RegPack(Buf, InData%spanRatio) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%vind_s) + call RegPack(RF, InData%spanRatio) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DBEMT_UnPackElementInputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_UnPackElementInputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(DBEMT_ElementInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DBEMT_UnPackElementInputType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%vind_s) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%spanRatio) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%vind_s); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%spanRatio); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DBEMT_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -874,59 +784,54 @@ subroutine DBEMT_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine DBEMT_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(DBEMT_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'DBEMT_PackInput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%AxInd_disk) - call RegPack(Buf, InData%Un_disk) - call RegPack(Buf, InData%R_disk) - call RegPack(Buf, allocated(InData%element)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%AxInd_disk) + call RegPack(RF, InData%Un_disk) + call RegPack(RF, InData%R_disk) + call RegPack(RF, allocated(InData%element)) if (allocated(InData%element)) then - call RegPackBounds(Buf, 2, lbound(InData%element, kind=B8Ki), ubound(InData%element, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%element, kind=B8Ki), ubound(InData%element, kind=B8Ki)) LB(1:2) = lbound(InData%element, kind=B8Ki) UB(1:2) = ubound(InData%element, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call DBEMT_PackElementInputType(Buf, InData%element(i1,i2)) + call DBEMT_PackElementInputType(RF, InData%element(i1,i2)) end do end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DBEMT_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(DBEMT_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DBEMT_UnPackInput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%AxInd_disk) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Un_disk) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%R_disk) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%AxInd_disk); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Un_disk); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%R_disk); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%element)) deallocate(OutData%element) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%element(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%element.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%element.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call DBEMT_UnpackElementInputType(Buf, OutData%element(i1,i2)) ! element + call DBEMT_UnpackElementInputType(RF, OutData%element(i1,i2)) ! element end do end do end if @@ -969,41 +874,24 @@ subroutine DBEMT_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine DBEMT_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(DBEMT_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'DBEMT_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%vind)) - if (allocated(InData%vind)) then - call RegPackBounds(Buf, 3, lbound(InData%vind, kind=B8Ki), ubound(InData%vind, kind=B8Ki)) - call RegPack(Buf, InData%vind) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%vind) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DBEMT_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DBEMT_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(DBEMT_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DBEMT_UnPackOutput' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%vind)) deallocate(OutData%vind) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%vind(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%vind.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%vind) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%vind); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DBEMT_ElementInputType_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/aerodyn/src/FVW_Types.f90 b/modules/aerodyn/src/FVW_Types.f90 index bd59dc4a50..0cd9fbcbe1 100644 --- a/modules/aerodyn/src/FVW_Types.f90 +++ b/modules/aerodyn/src/FVW_Types.f90 @@ -424,105 +424,56 @@ subroutine FVW_DestroyGridOutType(GridOutTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine FVW_PackGridOutType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackGridOutType(RF, Indata) + type(RegFile), intent(inout) :: RF type(GridOutType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackGridOutType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%name) - call RegPack(Buf, InData%type) - call RegPack(Buf, InData%tStart) - call RegPack(Buf, InData%tEnd) - call RegPack(Buf, InData%DTout) - call RegPack(Buf, InData%xStart) - call RegPack(Buf, InData%yStart) - call RegPack(Buf, InData%zStart) - call RegPack(Buf, InData%xEnd) - call RegPack(Buf, InData%yEnd) - call RegPack(Buf, InData%zEnd) - call RegPack(Buf, InData%nx) - call RegPack(Buf, InData%ny) - call RegPack(Buf, InData%nz) - call RegPack(Buf, allocated(InData%uGrid)) - if (allocated(InData%uGrid)) then - call RegPackBounds(Buf, 4, lbound(InData%uGrid, kind=B8Ki), ubound(InData%uGrid, kind=B8Ki)) - call RegPack(Buf, InData%uGrid) - end if - call RegPack(Buf, allocated(InData%omGrid)) - if (allocated(InData%omGrid)) then - call RegPackBounds(Buf, 4, lbound(InData%omGrid, kind=B8Ki), ubound(InData%omGrid, kind=B8Ki)) - call RegPack(Buf, InData%omGrid) - end if - call RegPack(Buf, InData%tLastOutput) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FVW_UnPackGridOutType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%name) + call RegPack(RF, InData%type) + call RegPack(RF, InData%tStart) + call RegPack(RF, InData%tEnd) + call RegPack(RF, InData%DTout) + call RegPack(RF, InData%xStart) + call RegPack(RF, InData%yStart) + call RegPack(RF, InData%zStart) + call RegPack(RF, InData%xEnd) + call RegPack(RF, InData%yEnd) + call RegPack(RF, InData%zEnd) + call RegPack(RF, InData%nx) + call RegPack(RF, InData%ny) + call RegPack(RF, InData%nz) + call RegPackAlloc(RF, InData%uGrid) + call RegPackAlloc(RF, InData%omGrid) + call RegPack(RF, InData%tLastOutput) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FVW_UnPackGridOutType(RF, OutData) + type(RegFile), intent(inout) :: RF type(GridOutType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackGridOutType' integer(B8Ki) :: LB(4), UB(4) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%name) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%type) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tStart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tEnd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DTout) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%xStart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%yStart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%zStart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%xEnd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%yEnd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%zEnd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ny) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nz) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%uGrid)) deallocate(OutData%uGrid) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%uGrid(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%uGrid.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%uGrid) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%omGrid)) deallocate(OutData%omGrid) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%omGrid(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%omGrid.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%omGrid) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%tLastOutput) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%name); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%type); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tStart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tEnd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DTout); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%xStart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%yStart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%zStart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%xEnd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%yEnd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%zEnd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ny); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%uGrid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%omGrid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tLastOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_CopyT_Sgmt(SrcT_SgmtData, DstT_SgmtData, CtrlCode, ErrStat, ErrMsg) @@ -610,107 +561,36 @@ subroutine FVW_DestroyT_Sgmt(T_SgmtData, ErrStat, ErrMsg) end if end subroutine -subroutine FVW_PackT_Sgmt(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackT_Sgmt(RF, Indata) + type(RegFile), intent(inout) :: RF type(T_Sgmt), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackT_Sgmt' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Points)) - if (allocated(InData%Points)) then - call RegPackBounds(Buf, 2, lbound(InData%Points, kind=B8Ki), ubound(InData%Points, kind=B8Ki)) - call RegPack(Buf, InData%Points) - end if - call RegPack(Buf, allocated(InData%Connct)) - if (allocated(InData%Connct)) then - call RegPackBounds(Buf, 2, lbound(InData%Connct, kind=B8Ki), ubound(InData%Connct, kind=B8Ki)) - call RegPack(Buf, InData%Connct) - end if - call RegPack(Buf, allocated(InData%Gamma)) - if (allocated(InData%Gamma)) then - call RegPackBounds(Buf, 1, lbound(InData%Gamma, kind=B8Ki), ubound(InData%Gamma, kind=B8Ki)) - call RegPack(Buf, InData%Gamma) - end if - call RegPack(Buf, allocated(InData%Epsilon)) - if (allocated(InData%Epsilon)) then - call RegPackBounds(Buf, 1, lbound(InData%Epsilon, kind=B8Ki), ubound(InData%Epsilon, kind=B8Ki)) - call RegPack(Buf, InData%Epsilon) - end if - call RegPack(Buf, InData%RegFunction) - call RegPack(Buf, InData%nAct) - call RegPack(Buf, InData%nActP) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FVW_UnPackT_Sgmt(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%Points) + call RegPackAlloc(RF, InData%Connct) + call RegPackAlloc(RF, InData%Gamma) + call RegPackAlloc(RF, InData%Epsilon) + call RegPack(RF, InData%RegFunction) + call RegPack(RF, InData%nAct) + call RegPack(RF, InData%nActP) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FVW_UnPackT_Sgmt(RF, OutData) + type(RegFile), intent(inout) :: RF type(T_Sgmt), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackT_Sgmt' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%Points)) deallocate(OutData%Points) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Points(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Points.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Points) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Connct)) deallocate(OutData%Connct) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Connct(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Connct.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Connct) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Gamma)) deallocate(OutData%Gamma) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Gamma(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Gamma.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Gamma) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Epsilon)) deallocate(OutData%Epsilon) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Epsilon(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Epsilon.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Epsilon) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%RegFunction) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nAct) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nActP) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%Points); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Connct); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Gamma); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Epsilon); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RegFunction); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nAct); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nActP); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_CopyT_Part(SrcT_PartData, DstT_PartData, CtrlCode, ErrStat, ErrMsg) @@ -782,85 +662,32 @@ subroutine FVW_DestroyT_Part(T_PartData, ErrStat, ErrMsg) end if end subroutine -subroutine FVW_PackT_Part(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackT_Part(RF, Indata) + type(RegFile), intent(inout) :: RF type(T_Part), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackT_Part' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%P)) - if (allocated(InData%P)) then - call RegPackBounds(Buf, 2, lbound(InData%P, kind=B8Ki), ubound(InData%P, kind=B8Ki)) - call RegPack(Buf, InData%P) - end if - call RegPack(Buf, allocated(InData%Alpha)) - if (allocated(InData%Alpha)) then - call RegPackBounds(Buf, 2, lbound(InData%Alpha, kind=B8Ki), ubound(InData%Alpha, kind=B8Ki)) - call RegPack(Buf, InData%Alpha) - end if - call RegPack(Buf, allocated(InData%RegParam)) - if (allocated(InData%RegParam)) then - call RegPackBounds(Buf, 1, lbound(InData%RegParam, kind=B8Ki), ubound(InData%RegParam, kind=B8Ki)) - call RegPack(Buf, InData%RegParam) - end if - call RegPack(Buf, InData%RegFunction) - call RegPack(Buf, InData%nAct) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%P) + call RegPackAlloc(RF, InData%Alpha) + call RegPackAlloc(RF, InData%RegParam) + call RegPack(RF, InData%RegFunction) + call RegPack(RF, InData%nAct) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FVW_UnPackT_Part(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_UnPackT_Part(RF, OutData) + type(RegFile), intent(inout) :: RF type(T_Part), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackT_Part' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%P)) deallocate(OutData%P) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%P(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%P.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%P) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Alpha)) deallocate(OutData%Alpha) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Alpha(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Alpha.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Alpha) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RegParam)) deallocate(OutData%RegParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RegParam(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RegParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RegParam) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%RegFunction) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nAct) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%P); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Alpha); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RegParam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RegFunction); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nAct); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_CopyWng_ParameterType(SrcWng_ParameterTypeData, DstWng_ParameterTypeData, CtrlCode, ErrStat, ErrMsg) @@ -977,142 +804,38 @@ subroutine FVW_DestroyWng_ParameterType(Wng_ParameterTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine FVW_PackWng_ParameterType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackWng_ParameterType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Wng_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackWng_ParameterType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%chord_LL)) - if (allocated(InData%chord_LL)) then - call RegPackBounds(Buf, 1, lbound(InData%chord_LL, kind=B8Ki), ubound(InData%chord_LL, kind=B8Ki)) - call RegPack(Buf, InData%chord_LL) - end if - call RegPack(Buf, allocated(InData%chord_CP)) - if (allocated(InData%chord_CP)) then - call RegPackBounds(Buf, 1, lbound(InData%chord_CP, kind=B8Ki), ubound(InData%chord_CP, kind=B8Ki)) - call RegPack(Buf, InData%chord_CP) - end if - call RegPack(Buf, allocated(InData%s_LL)) - if (allocated(InData%s_LL)) then - call RegPackBounds(Buf, 1, lbound(InData%s_LL, kind=B8Ki), ubound(InData%s_LL, kind=B8Ki)) - call RegPack(Buf, InData%s_LL) - end if - call RegPack(Buf, allocated(InData%s_CP)) - if (allocated(InData%s_CP)) then - call RegPackBounds(Buf, 1, lbound(InData%s_CP, kind=B8Ki), ubound(InData%s_CP, kind=B8Ki)) - call RegPack(Buf, InData%s_CP) - end if - call RegPack(Buf, InData%iRotor) - call RegPack(Buf, allocated(InData%AFindx)) - if (allocated(InData%AFindx)) then - call RegPackBounds(Buf, 2, lbound(InData%AFindx, kind=B8Ki), ubound(InData%AFindx, kind=B8Ki)) - call RegPack(Buf, InData%AFindx) - end if - call RegPack(Buf, InData%nSpan) - call RegPack(Buf, allocated(InData%PrescribedCirculation)) - if (allocated(InData%PrescribedCirculation)) then - call RegPackBounds(Buf, 1, lbound(InData%PrescribedCirculation, kind=B8Ki), ubound(InData%PrescribedCirculation, kind=B8Ki)) - call RegPack(Buf, InData%PrescribedCirculation) - end if - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FVW_UnPackWng_ParameterType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%chord_LL) + call RegPackAlloc(RF, InData%chord_CP) + call RegPackAlloc(RF, InData%s_LL) + call RegPackAlloc(RF, InData%s_CP) + call RegPack(RF, InData%iRotor) + call RegPackAlloc(RF, InData%AFindx) + call RegPack(RF, InData%nSpan) + call RegPackAlloc(RF, InData%PrescribedCirculation) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FVW_UnPackWng_ParameterType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Wng_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackWng_ParameterType' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%chord_LL)) deallocate(OutData%chord_LL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%chord_LL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%chord_LL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%chord_LL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%chord_CP)) deallocate(OutData%chord_CP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%chord_CP(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%chord_CP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%chord_CP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%s_LL)) deallocate(OutData%s_LL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%s_LL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%s_LL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%s_LL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%s_CP)) deallocate(OutData%s_CP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%s_CP(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%s_CP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%s_CP) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%iRotor) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%AFindx)) deallocate(OutData%AFindx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AFindx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AFindx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AFindx) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%nSpan) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PrescribedCirculation)) deallocate(OutData%PrescribedCirculation) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PrescribedCirculation(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PrescribedCirculation.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PrescribedCirculation) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%chord_LL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%chord_CP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%s_LL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%s_CP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%iRotor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AFindx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nSpan); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PrescribedCirculation); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -1230,209 +953,143 @@ subroutine FVW_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine FVW_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(FVW_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackParam' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%nRotors) - call RegPack(Buf, InData%nWings) - call RegPack(Buf, allocated(InData%W)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%nRotors) + call RegPack(RF, InData%nWings) + call RegPack(RF, allocated(InData%W)) if (allocated(InData%W)) then - call RegPackBounds(Buf, 1, lbound(InData%W, kind=B8Ki), ubound(InData%W, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%W, kind=B8Ki), ubound(InData%W, kind=B8Ki)) LB(1:1) = lbound(InData%W, kind=B8Ki) UB(1:1) = ubound(InData%W, kind=B8Ki) do i1 = LB(1), UB(1) - call FVW_PackWng_ParameterType(Buf, InData%W(i1)) + call FVW_PackWng_ParameterType(RF, InData%W(i1)) end do end if - call RegPack(Buf, allocated(InData%Bld2Wings)) - if (allocated(InData%Bld2Wings)) then - call RegPackBounds(Buf, 2, lbound(InData%Bld2Wings, kind=B8Ki), ubound(InData%Bld2Wings, kind=B8Ki)) - call RegPack(Buf, InData%Bld2Wings) - end if - call RegPack(Buf, InData%iNWStart) - call RegPack(Buf, InData%nNWMax) - call RegPack(Buf, InData%nNWFree) - call RegPack(Buf, InData%nFWMax) - call RegPack(Buf, InData%nFWFree) - call RegPack(Buf, InData%FWShedVorticity) - call RegPack(Buf, InData%IntMethod) - call RegPack(Buf, InData%FreeWakeStart) - call RegPack(Buf, InData%FullCircStart) - call RegPack(Buf, InData%CircSolvMethod) - call RegPack(Buf, InData%CircSolvMaxIter) - call RegPack(Buf, InData%CircSolvConvCrit) - call RegPack(Buf, InData%CircSolvRelaxation) - call RegPack(Buf, InData%CircSolvPolar) - call RegPack(Buf, InData%DiffusionMethod) - call RegPack(Buf, InData%CoreSpreadEddyVisc) - call RegPack(Buf, InData%RegDeterMethod) - call RegPack(Buf, InData%RegFunction) - call RegPack(Buf, InData%WakeRegMethod) - call RegPack(Buf, InData%WakeRegParam) - call RegPack(Buf, InData%WingRegParam) - call RegPack(Buf, InData%ShearModel) - call RegPack(Buf, InData%TwrShadowOnWake) - call RegPack(Buf, InData%VelocityMethod) - call RegPack(Buf, InData%TreeBranchFactor) - call RegPack(Buf, InData%PartPerSegment) - call RegPack(Buf, InData%DTaero) - call RegPack(Buf, InData%DTfvw) - call RegPack(Buf, InData%KinVisc) - call RegPack(Buf, InData%MHK) - call RegPack(Buf, InData%WtrDpth) - call RegPack(Buf, InData%WrVTK) - call RegPack(Buf, InData%VTKBlades) - call RegPack(Buf, InData%DTvtk) - call RegPack(Buf, InData%VTKCoord) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, InData%VTK_OutFileRoot) - call RegPack(Buf, InData%VTK_OutFileBase) - call RegPack(Buf, InData%nGridOut) - call RegPack(Buf, InData%InductionAtCP) - call RegPack(Buf, InData%WakeAtTE) - call RegPack(Buf, InData%DStallOnWake) - call RegPack(Buf, InData%Induction) - call RegPack(Buf, InData%kFrozenNWStart) - call RegPack(Buf, InData%kFrozenNWEnd) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FVW_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + call RegPackAlloc(RF, InData%Bld2Wings) + call RegPack(RF, InData%iNWStart) + call RegPack(RF, InData%nNWMax) + call RegPack(RF, InData%nNWFree) + call RegPack(RF, InData%nFWMax) + call RegPack(RF, InData%nFWFree) + call RegPack(RF, InData%FWShedVorticity) + call RegPack(RF, InData%IntMethod) + call RegPack(RF, InData%FreeWakeStart) + call RegPack(RF, InData%FullCircStart) + call RegPack(RF, InData%CircSolvMethod) + call RegPack(RF, InData%CircSolvMaxIter) + call RegPack(RF, InData%CircSolvConvCrit) + call RegPack(RF, InData%CircSolvRelaxation) + call RegPack(RF, InData%CircSolvPolar) + call RegPack(RF, InData%DiffusionMethod) + call RegPack(RF, InData%CoreSpreadEddyVisc) + call RegPack(RF, InData%RegDeterMethod) + call RegPack(RF, InData%RegFunction) + call RegPack(RF, InData%WakeRegMethod) + call RegPack(RF, InData%WakeRegParam) + call RegPack(RF, InData%WingRegParam) + call RegPack(RF, InData%ShearModel) + call RegPack(RF, InData%TwrShadowOnWake) + call RegPack(RF, InData%VelocityMethod) + call RegPack(RF, InData%TreeBranchFactor) + call RegPack(RF, InData%PartPerSegment) + call RegPack(RF, InData%DTaero) + call RegPack(RF, InData%DTfvw) + call RegPack(RF, InData%KinVisc) + call RegPack(RF, InData%MHK) + call RegPack(RF, InData%WtrDpth) + call RegPack(RF, InData%WrVTK) + call RegPack(RF, InData%VTKBlades) + call RegPack(RF, InData%DTvtk) + call RegPack(RF, InData%VTKCoord) + call RegPack(RF, InData%RootName) + call RegPack(RF, InData%VTK_OutFileRoot) + call RegPack(RF, InData%VTK_OutFileBase) + call RegPack(RF, InData%nGridOut) + call RegPack(RF, InData%InductionAtCP) + call RegPack(RF, InData%WakeAtTE) + call RegPack(RF, InData%DStallOnWake) + call RegPack(RF, InData%Induction) + call RegPack(RF, InData%kFrozenNWStart) + call RegPack(RF, InData%kFrozenNWEnd) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FVW_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(FVW_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackParam' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%nRotors) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nWings) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%nRotors); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nWings); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%W)) deallocate(OutData%W) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%W(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FVW_UnpackWng_ParameterType(Buf, OutData%W(i1)) ! W + call FVW_UnpackWng_ParameterType(RF, OutData%W(i1)) ! W end do end if - if (allocated(OutData%Bld2Wings)) deallocate(OutData%Bld2Wings) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Bld2Wings(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Bld2Wings.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Bld2Wings) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%iNWStart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nNWMax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nNWFree) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nFWMax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nFWFree) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FWShedVorticity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%IntMethod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FreeWakeStart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FullCircStart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CircSolvMethod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CircSolvMaxIter) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CircSolvConvCrit) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CircSolvRelaxation) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CircSolvPolar) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DiffusionMethod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CoreSpreadEddyVisc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RegDeterMethod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RegFunction) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WakeRegMethod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WakeRegParam) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WingRegParam) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ShearModel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrShadowOnWake) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VelocityMethod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TreeBranchFactor) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PartPerSegment) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DTaero) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DTfvw) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%KinVisc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MHK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDpth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WrVTK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTKBlades) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DTvtk) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTKCoord) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTK_OutFileRoot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTK_OutFileBase) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nGridOut) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InductionAtCP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WakeAtTE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DStallOnWake) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Induction) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%kFrozenNWStart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%kFrozenNWEnd) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Bld2Wings); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%iNWStart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nNWMax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nNWFree); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nFWMax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nFWFree); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FWShedVorticity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IntMethod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FreeWakeStart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FullCircStart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CircSolvMethod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CircSolvMaxIter); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CircSolvConvCrit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CircSolvRelaxation); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CircSolvPolar); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DiffusionMethod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CoreSpreadEddyVisc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RegDeterMethod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RegFunction); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WakeRegMethod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WakeRegParam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WingRegParam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ShearModel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrShadowOnWake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VelocityMethod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TreeBranchFactor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PartPerSegment); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DTaero); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DTfvw); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%KinVisc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MHK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDpth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrVTK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTKBlades); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DTvtk); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTKCoord); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTK_OutFileRoot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTK_OutFileBase); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nGridOut); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InductionAtCP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WakeAtTE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DStallOnWake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Induction); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%kFrozenNWStart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%kFrozenNWEnd); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_CopyWng_ContinuousStateType(SrcWng_ContinuousStateTypeData, DstWng_ContinuousStateTypeData, CtrlCode, ErrStat, ErrMsg) @@ -1547,136 +1204,34 @@ subroutine FVW_DestroyWng_ContinuousStateType(Wng_ContinuousStateTypeData, ErrSt end if end subroutine -subroutine FVW_PackWng_ContinuousStateType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackWng_ContinuousStateType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Wng_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackWng_ContinuousStateType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Gamma_NW)) - if (allocated(InData%Gamma_NW)) then - call RegPackBounds(Buf, 2, lbound(InData%Gamma_NW, kind=B8Ki), ubound(InData%Gamma_NW, kind=B8Ki)) - call RegPack(Buf, InData%Gamma_NW) - end if - call RegPack(Buf, allocated(InData%Gamma_FW)) - if (allocated(InData%Gamma_FW)) then - call RegPackBounds(Buf, 2, lbound(InData%Gamma_FW, kind=B8Ki), ubound(InData%Gamma_FW, kind=B8Ki)) - call RegPack(Buf, InData%Gamma_FW) - end if - call RegPack(Buf, allocated(InData%Eps_NW)) - if (allocated(InData%Eps_NW)) then - call RegPackBounds(Buf, 3, lbound(InData%Eps_NW, kind=B8Ki), ubound(InData%Eps_NW, kind=B8Ki)) - call RegPack(Buf, InData%Eps_NW) - end if - call RegPack(Buf, allocated(InData%Eps_FW)) - if (allocated(InData%Eps_FW)) then - call RegPackBounds(Buf, 3, lbound(InData%Eps_FW, kind=B8Ki), ubound(InData%Eps_FW, kind=B8Ki)) - call RegPack(Buf, InData%Eps_FW) - end if - call RegPack(Buf, allocated(InData%r_NW)) - if (allocated(InData%r_NW)) then - call RegPackBounds(Buf, 3, lbound(InData%r_NW, kind=B8Ki), ubound(InData%r_NW, kind=B8Ki)) - call RegPack(Buf, InData%r_NW) - end if - call RegPack(Buf, allocated(InData%r_FW)) - if (allocated(InData%r_FW)) then - call RegPackBounds(Buf, 3, lbound(InData%r_FW, kind=B8Ki), ubound(InData%r_FW, kind=B8Ki)) - call RegPack(Buf, InData%r_FW) - end if - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FVW_UnPackWng_ContinuousStateType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%Gamma_NW) + call RegPackAlloc(RF, InData%Gamma_FW) + call RegPackAlloc(RF, InData%Eps_NW) + call RegPackAlloc(RF, InData%Eps_FW) + call RegPackAlloc(RF, InData%r_NW) + call RegPackAlloc(RF, InData%r_FW) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FVW_UnPackWng_ContinuousStateType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Wng_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackWng_ContinuousStateType' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%Gamma_NW)) deallocate(OutData%Gamma_NW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Gamma_NW(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Gamma_NW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Gamma_NW) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Gamma_FW)) deallocate(OutData%Gamma_FW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Gamma_FW(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Gamma_FW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Gamma_FW) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Eps_NW)) deallocate(OutData%Eps_NW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Eps_NW(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Eps_NW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Eps_NW) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Eps_FW)) deallocate(OutData%Eps_FW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Eps_FW(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Eps_FW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Eps_FW) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%r_NW)) deallocate(OutData%r_NW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%r_NW(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%r_NW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%r_NW) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%r_FW)) deallocate(OutData%r_FW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%r_FW(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%r_FW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%r_FW) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%Gamma_NW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Gamma_FW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Eps_NW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Eps_FW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%r_NW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%r_FW); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -1757,71 +1312,67 @@ subroutine FVW_DestroyContState(ContStateData, ErrStat, ErrMsg) end if end subroutine -subroutine FVW_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(FVW_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackContState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%W)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%W)) if (allocated(InData%W)) then - call RegPackBounds(Buf, 1, lbound(InData%W, kind=B8Ki), ubound(InData%W, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%W, kind=B8Ki), ubound(InData%W, kind=B8Ki)) LB(1:1) = lbound(InData%W, kind=B8Ki) UB(1:1) = ubound(InData%W, kind=B8Ki) do i1 = LB(1), UB(1) - call FVW_PackWng_ContinuousStateType(Buf, InData%W(i1)) + call FVW_PackWng_ContinuousStateType(RF, InData%W(i1)) end do end if - call RegPack(Buf, allocated(InData%UA)) + call RegPack(RF, allocated(InData%UA)) if (allocated(InData%UA)) then - call RegPackBounds(Buf, 1, lbound(InData%UA, kind=B8Ki), ubound(InData%UA, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%UA, kind=B8Ki), ubound(InData%UA, kind=B8Ki)) LB(1:1) = lbound(InData%UA, kind=B8Ki) UB(1:1) = ubound(InData%UA, kind=B8Ki) do i1 = LB(1), UB(1) - call UA_PackContState(Buf, InData%UA(i1)) + call UA_PackContState(RF, InData%UA(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FVW_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(FVW_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackContState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%W)) deallocate(OutData%W) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%W(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FVW_UnpackWng_ContinuousStateType(Buf, OutData%W(i1)) ! W + call FVW_UnpackWng_ContinuousStateType(RF, OutData%W(i1)) ! W end do end if if (allocated(OutData%UA)) deallocate(OutData%UA) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%UA(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UA.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UA.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call UA_UnpackContState(Buf, OutData%UA(i1)) ! UA + call UA_UnpackContState(RF, OutData%UA(i1)) ! UA end do end if end subroutine @@ -1863,41 +1414,24 @@ subroutine FVW_DestroyWng_OutputType(Wng_OutputTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine FVW_PackWng_OutputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackWng_OutputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Wng_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackWng_OutputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Vind)) - if (allocated(InData%Vind)) then - call RegPackBounds(Buf, 2, lbound(InData%Vind, kind=B8Ki), ubound(InData%Vind, kind=B8Ki)) - call RegPack(Buf, InData%Vind) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%Vind) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FVW_UnPackWng_OutputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_UnPackWng_OutputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Wng_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackWng_OutputType' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%Vind)) deallocate(OutData%Vind) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vind(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vind.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vind) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%Vind); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -1953,47 +1487,45 @@ subroutine FVW_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine FVW_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(FVW_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackOutput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%W)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%W)) if (allocated(InData%W)) then - call RegPackBounds(Buf, 1, lbound(InData%W, kind=B8Ki), ubound(InData%W, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%W, kind=B8Ki), ubound(InData%W, kind=B8Ki)) LB(1:1) = lbound(InData%W, kind=B8Ki) UB(1:1) = ubound(InData%W, kind=B8Ki) do i1 = LB(1), UB(1) - call FVW_PackWng_OutputType(Buf, InData%W(i1)) + call FVW_PackWng_OutputType(RF, InData%W(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FVW_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(FVW_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackOutput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%W)) deallocate(OutData%W) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%W(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FVW_UnpackWng_OutputType(Buf, OutData%W(i1)) ! W + call FVW_UnpackWng_OutputType(RF, OutData%W(i1)) ! W end do end if end subroutine @@ -2642,787 +2174,137 @@ subroutine FVW_DestroyWng_MiscVarType(Wng_MiscVarTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine FVW_PackWng_MiscVarType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackWng_MiscVarType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Wng_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackWng_MiscVarType' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%LE)) - if (allocated(InData%LE)) then - call RegPackBounds(Buf, 2, lbound(InData%LE, kind=B8Ki), ubound(InData%LE, kind=B8Ki)) - call RegPack(Buf, InData%LE) - end if - call RegPack(Buf, allocated(InData%TE)) - if (allocated(InData%TE)) then - call RegPackBounds(Buf, 2, lbound(InData%TE, kind=B8Ki), ubound(InData%TE, kind=B8Ki)) - call RegPack(Buf, InData%TE) - end if - call RegPack(Buf, allocated(InData%r_LL)) - if (allocated(InData%r_LL)) then - call RegPackBounds(Buf, 3, lbound(InData%r_LL, kind=B8Ki), ubound(InData%r_LL, kind=B8Ki)) - call RegPack(Buf, InData%r_LL) - end if - call RegPack(Buf, allocated(InData%CP)) - if (allocated(InData%CP)) then - call RegPackBounds(Buf, 2, lbound(InData%CP, kind=B8Ki), ubound(InData%CP, kind=B8Ki)) - call RegPack(Buf, InData%CP) - end if - call RegPack(Buf, allocated(InData%Tang)) - if (allocated(InData%Tang)) then - call RegPackBounds(Buf, 2, lbound(InData%Tang, kind=B8Ki), ubound(InData%Tang, kind=B8Ki)) - call RegPack(Buf, InData%Tang) - end if - call RegPack(Buf, allocated(InData%Norm)) - if (allocated(InData%Norm)) then - call RegPackBounds(Buf, 2, lbound(InData%Norm, kind=B8Ki), ubound(InData%Norm, kind=B8Ki)) - call RegPack(Buf, InData%Norm) - end if - call RegPack(Buf, allocated(InData%Orth)) - if (allocated(InData%Orth)) then - call RegPackBounds(Buf, 2, lbound(InData%Orth, kind=B8Ki), ubound(InData%Orth, kind=B8Ki)) - call RegPack(Buf, InData%Orth) - end if - call RegPack(Buf, allocated(InData%dl)) - if (allocated(InData%dl)) then - call RegPackBounds(Buf, 2, lbound(InData%dl, kind=B8Ki), ubound(InData%dl, kind=B8Ki)) - call RegPack(Buf, InData%dl) - end if - call RegPack(Buf, allocated(InData%Area)) - if (allocated(InData%Area)) then - call RegPackBounds(Buf, 1, lbound(InData%Area, kind=B8Ki), ubound(InData%Area, kind=B8Ki)) - call RegPack(Buf, InData%Area) - end if - call RegPack(Buf, allocated(InData%diag_LL)) - if (allocated(InData%diag_LL)) then - call RegPackBounds(Buf, 1, lbound(InData%diag_LL, kind=B8Ki), ubound(InData%diag_LL, kind=B8Ki)) - call RegPack(Buf, InData%diag_LL) - end if - call RegPack(Buf, allocated(InData%Vind_CP)) - if (allocated(InData%Vind_CP)) then - call RegPackBounds(Buf, 2, lbound(InData%Vind_CP, kind=B8Ki), ubound(InData%Vind_CP, kind=B8Ki)) - call RegPack(Buf, InData%Vind_CP) - end if - call RegPack(Buf, allocated(InData%Vtot_CP)) - if (allocated(InData%Vtot_CP)) then - call RegPackBounds(Buf, 2, lbound(InData%Vtot_CP, kind=B8Ki), ubound(InData%Vtot_CP, kind=B8Ki)) - call RegPack(Buf, InData%Vtot_CP) - end if - call RegPack(Buf, allocated(InData%Vstr_CP)) - if (allocated(InData%Vstr_CP)) then - call RegPackBounds(Buf, 2, lbound(InData%Vstr_CP, kind=B8Ki), ubound(InData%Vstr_CP, kind=B8Ki)) - call RegPack(Buf, InData%Vstr_CP) - end if - call RegPack(Buf, allocated(InData%Vwnd_CP)) - if (allocated(InData%Vwnd_CP)) then - call RegPackBounds(Buf, 2, lbound(InData%Vwnd_CP, kind=B8Ki), ubound(InData%Vwnd_CP, kind=B8Ki)) - call RegPack(Buf, InData%Vwnd_CP) - end if - call RegPack(Buf, allocated(InData%Vwnd_NW)) - if (allocated(InData%Vwnd_NW)) then - call RegPackBounds(Buf, 3, lbound(InData%Vwnd_NW, kind=B8Ki), ubound(InData%Vwnd_NW, kind=B8Ki)) - call RegPack(Buf, InData%Vwnd_NW) - end if - call RegPack(Buf, allocated(InData%Vwnd_FW)) - if (allocated(InData%Vwnd_FW)) then - call RegPackBounds(Buf, 3, lbound(InData%Vwnd_FW, kind=B8Ki), ubound(InData%Vwnd_FW, kind=B8Ki)) - call RegPack(Buf, InData%Vwnd_FW) - end if - call RegPack(Buf, allocated(InData%Vind_NW)) - if (allocated(InData%Vind_NW)) then - call RegPackBounds(Buf, 3, lbound(InData%Vind_NW, kind=B8Ki), ubound(InData%Vind_NW, kind=B8Ki)) - call RegPack(Buf, InData%Vind_NW) - end if - call RegPack(Buf, allocated(InData%Vind_FW)) - if (allocated(InData%Vind_FW)) then - call RegPackBounds(Buf, 3, lbound(InData%Vind_FW, kind=B8Ki), ubound(InData%Vind_FW, kind=B8Ki)) - call RegPack(Buf, InData%Vind_FW) - end if - call RegPack(Buf, allocated(InData%PitchAndTwist)) - if (allocated(InData%PitchAndTwist)) then - call RegPackBounds(Buf, 1, lbound(InData%PitchAndTwist, kind=B8Ki), ubound(InData%PitchAndTwist, kind=B8Ki)) - call RegPack(Buf, InData%PitchAndTwist) - end if - call RegPack(Buf, InData%iTip) - call RegPack(Buf, InData%iRoot) - call RegPack(Buf, allocated(InData%alpha_LL)) - if (allocated(InData%alpha_LL)) then - call RegPackBounds(Buf, 1, lbound(InData%alpha_LL, kind=B8Ki), ubound(InData%alpha_LL, kind=B8Ki)) - call RegPack(Buf, InData%alpha_LL) - end if - call RegPack(Buf, allocated(InData%Vreln_LL)) - if (allocated(InData%Vreln_LL)) then - call RegPackBounds(Buf, 1, lbound(InData%Vreln_LL, kind=B8Ki), ubound(InData%Vreln_LL, kind=B8Ki)) - call RegPack(Buf, InData%Vreln_LL) - end if - call RegPack(Buf, allocated(InData%u_UA)) + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%LE) + call RegPackAlloc(RF, InData%TE) + call RegPackAlloc(RF, InData%r_LL) + call RegPackAlloc(RF, InData%CP) + call RegPackAlloc(RF, InData%Tang) + call RegPackAlloc(RF, InData%Norm) + call RegPackAlloc(RF, InData%Orth) + call RegPackAlloc(RF, InData%dl) + call RegPackAlloc(RF, InData%Area) + call RegPackAlloc(RF, InData%diag_LL) + call RegPackAlloc(RF, InData%Vind_CP) + call RegPackAlloc(RF, InData%Vtot_CP) + call RegPackAlloc(RF, InData%Vstr_CP) + call RegPackAlloc(RF, InData%Vwnd_CP) + call RegPackAlloc(RF, InData%Vwnd_NW) + call RegPackAlloc(RF, InData%Vwnd_FW) + call RegPackAlloc(RF, InData%Vind_NW) + call RegPackAlloc(RF, InData%Vind_FW) + call RegPackAlloc(RF, InData%PitchAndTwist) + call RegPack(RF, InData%iTip) + call RegPack(RF, InData%iRoot) + call RegPackAlloc(RF, InData%alpha_LL) + call RegPackAlloc(RF, InData%Vreln_LL) + call RegPack(RF, allocated(InData%u_UA)) if (allocated(InData%u_UA)) then - call RegPackBounds(Buf, 2, lbound(InData%u_UA, kind=B8Ki), ubound(InData%u_UA, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%u_UA, kind=B8Ki), ubound(InData%u_UA, kind=B8Ki)) LB(1:2) = lbound(InData%u_UA, kind=B8Ki) UB(1:2) = ubound(InData%u_UA, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call UA_PackInput(Buf, InData%u_UA(i1,i2)) + call UA_PackInput(RF, InData%u_UA(i1,i2)) end do end do end if - call UA_PackMisc(Buf, InData%m_UA) - call UA_PackOutput(Buf, InData%y_UA) - call UA_PackParam(Buf, InData%p_UA) - call RegPack(Buf, allocated(InData%Vind_LL)) - if (allocated(InData%Vind_LL)) then - call RegPackBounds(Buf, 2, lbound(InData%Vind_LL, kind=B8Ki), ubound(InData%Vind_LL, kind=B8Ki)) - call RegPack(Buf, InData%Vind_LL) - end if - call RegPack(Buf, allocated(InData%BN_AxInd)) - if (allocated(InData%BN_AxInd)) then - call RegPackBounds(Buf, 1, lbound(InData%BN_AxInd, kind=B8Ki), ubound(InData%BN_AxInd, kind=B8Ki)) - call RegPack(Buf, InData%BN_AxInd) - end if - call RegPack(Buf, allocated(InData%BN_TanInd)) - if (allocated(InData%BN_TanInd)) then - call RegPackBounds(Buf, 1, lbound(InData%BN_TanInd, kind=B8Ki), ubound(InData%BN_TanInd, kind=B8Ki)) - call RegPack(Buf, InData%BN_TanInd) - end if - call RegPack(Buf, allocated(InData%BN_Vrel)) - if (allocated(InData%BN_Vrel)) then - call RegPackBounds(Buf, 1, lbound(InData%BN_Vrel, kind=B8Ki), ubound(InData%BN_Vrel, kind=B8Ki)) - call RegPack(Buf, InData%BN_Vrel) - end if - call RegPack(Buf, allocated(InData%BN_alpha)) - if (allocated(InData%BN_alpha)) then - call RegPackBounds(Buf, 1, lbound(InData%BN_alpha, kind=B8Ki), ubound(InData%BN_alpha, kind=B8Ki)) - call RegPack(Buf, InData%BN_alpha) - end if - call RegPack(Buf, allocated(InData%BN_phi)) - if (allocated(InData%BN_phi)) then - call RegPackBounds(Buf, 1, lbound(InData%BN_phi, kind=B8Ki), ubound(InData%BN_phi, kind=B8Ki)) - call RegPack(Buf, InData%BN_phi) - end if - call RegPack(Buf, allocated(InData%BN_Re)) - if (allocated(InData%BN_Re)) then - call RegPackBounds(Buf, 1, lbound(InData%BN_Re, kind=B8Ki), ubound(InData%BN_Re, kind=B8Ki)) - call RegPack(Buf, InData%BN_Re) - end if - call RegPack(Buf, allocated(InData%BN_URelWind_s)) - if (allocated(InData%BN_URelWind_s)) then - call RegPackBounds(Buf, 2, lbound(InData%BN_URelWind_s, kind=B8Ki), ubound(InData%BN_URelWind_s, kind=B8Ki)) - call RegPack(Buf, InData%BN_URelWind_s) - end if - call RegPack(Buf, allocated(InData%BN_Cl_Static)) - if (allocated(InData%BN_Cl_Static)) then - call RegPackBounds(Buf, 1, lbound(InData%BN_Cl_Static, kind=B8Ki), ubound(InData%BN_Cl_Static, kind=B8Ki)) - call RegPack(Buf, InData%BN_Cl_Static) - end if - call RegPack(Buf, allocated(InData%BN_Cd_Static)) - if (allocated(InData%BN_Cd_Static)) then - call RegPackBounds(Buf, 1, lbound(InData%BN_Cd_Static, kind=B8Ki), ubound(InData%BN_Cd_Static, kind=B8Ki)) - call RegPack(Buf, InData%BN_Cd_Static) - end if - call RegPack(Buf, allocated(InData%BN_Cm_Static)) - if (allocated(InData%BN_Cm_Static)) then - call RegPackBounds(Buf, 1, lbound(InData%BN_Cm_Static, kind=B8Ki), ubound(InData%BN_Cm_Static, kind=B8Ki)) - call RegPack(Buf, InData%BN_Cm_Static) - end if - call RegPack(Buf, allocated(InData%BN_Cpmin)) - if (allocated(InData%BN_Cpmin)) then - call RegPackBounds(Buf, 1, lbound(InData%BN_Cpmin, kind=B8Ki), ubound(InData%BN_Cpmin, kind=B8Ki)) - call RegPack(Buf, InData%BN_Cpmin) - end if - call RegPack(Buf, allocated(InData%BN_Cl)) - if (allocated(InData%BN_Cl)) then - call RegPackBounds(Buf, 1, lbound(InData%BN_Cl, kind=B8Ki), ubound(InData%BN_Cl, kind=B8Ki)) - call RegPack(Buf, InData%BN_Cl) - end if - call RegPack(Buf, allocated(InData%BN_Cd)) - if (allocated(InData%BN_Cd)) then - call RegPackBounds(Buf, 1, lbound(InData%BN_Cd, kind=B8Ki), ubound(InData%BN_Cd, kind=B8Ki)) - call RegPack(Buf, InData%BN_Cd) - end if - call RegPack(Buf, allocated(InData%BN_Cm)) - if (allocated(InData%BN_Cm)) then - call RegPackBounds(Buf, 1, lbound(InData%BN_Cm, kind=B8Ki), ubound(InData%BN_Cm, kind=B8Ki)) - call RegPack(Buf, InData%BN_Cm) - end if - call RegPack(Buf, allocated(InData%BN_Cx)) - if (allocated(InData%BN_Cx)) then - call RegPackBounds(Buf, 1, lbound(InData%BN_Cx, kind=B8Ki), ubound(InData%BN_Cx, kind=B8Ki)) - call RegPack(Buf, InData%BN_Cx) - end if - call RegPack(Buf, allocated(InData%BN_Cy)) - if (allocated(InData%BN_Cy)) then - call RegPackBounds(Buf, 1, lbound(InData%BN_Cy, kind=B8Ki), ubound(InData%BN_Cy, kind=B8Ki)) - call RegPack(Buf, InData%BN_Cy) - end if - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FVW_UnPackWng_MiscVarType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + call UA_PackMisc(RF, InData%m_UA) + call UA_PackOutput(RF, InData%y_UA) + call UA_PackParam(RF, InData%p_UA) + call RegPackAlloc(RF, InData%Vind_LL) + call RegPackAlloc(RF, InData%BN_AxInd) + call RegPackAlloc(RF, InData%BN_TanInd) + call RegPackAlloc(RF, InData%BN_Vrel) + call RegPackAlloc(RF, InData%BN_alpha) + call RegPackAlloc(RF, InData%BN_phi) + call RegPackAlloc(RF, InData%BN_Re) + call RegPackAlloc(RF, InData%BN_URelWind_s) + call RegPackAlloc(RF, InData%BN_Cl_Static) + call RegPackAlloc(RF, InData%BN_Cd_Static) + call RegPackAlloc(RF, InData%BN_Cm_Static) + call RegPackAlloc(RF, InData%BN_Cpmin) + call RegPackAlloc(RF, InData%BN_Cl) + call RegPackAlloc(RF, InData%BN_Cd) + call RegPackAlloc(RF, InData%BN_Cm) + call RegPackAlloc(RF, InData%BN_Cx) + call RegPackAlloc(RF, InData%BN_Cy) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FVW_UnPackWng_MiscVarType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Wng_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackWng_MiscVarType' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%LE)) deallocate(OutData%LE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LE(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TE)) deallocate(OutData%TE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TE(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%r_LL)) deallocate(OutData%r_LL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%r_LL(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%r_LL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%r_LL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CP)) deallocate(OutData%CP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Tang)) deallocate(OutData%Tang) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Tang(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Tang.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Tang) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Norm)) deallocate(OutData%Norm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Norm(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Norm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Norm) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Orth)) deallocate(OutData%Orth) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Orth(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Orth.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Orth) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dl)) deallocate(OutData%dl) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dl(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dl.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dl) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Area)) deallocate(OutData%Area) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Area(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Area.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Area) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%diag_LL)) deallocate(OutData%diag_LL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%diag_LL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%diag_LL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%diag_LL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vind_CP)) deallocate(OutData%Vind_CP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vind_CP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vind_CP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vind_CP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vtot_CP)) deallocate(OutData%Vtot_CP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vtot_CP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vtot_CP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vtot_CP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vstr_CP)) deallocate(OutData%Vstr_CP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vstr_CP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vstr_CP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vstr_CP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vwnd_CP)) deallocate(OutData%Vwnd_CP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vwnd_CP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vwnd_CP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vwnd_CP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vwnd_NW)) deallocate(OutData%Vwnd_NW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vwnd_NW(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vwnd_NW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vwnd_NW) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vwnd_FW)) deallocate(OutData%Vwnd_FW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vwnd_FW(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vwnd_FW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vwnd_FW) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vind_NW)) deallocate(OutData%Vind_NW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vind_NW(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vind_NW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vind_NW) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vind_FW)) deallocate(OutData%Vind_FW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vind_FW(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vind_FW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vind_FW) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PitchAndTwist)) deallocate(OutData%PitchAndTwist) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PitchAndTwist(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PitchAndTwist.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PitchAndTwist) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%iTip) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%iRoot) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%alpha_LL)) deallocate(OutData%alpha_LL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%alpha_LL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%alpha_LL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%alpha_LL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vreln_LL)) deallocate(OutData%Vreln_LL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vreln_LL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vreln_LL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vreln_LL) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%LE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%r_LL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Tang); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Norm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Orth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Area); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%diag_LL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vind_CP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vtot_CP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vstr_CP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vwnd_CP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vwnd_NW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vwnd_FW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vind_NW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vind_FW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PitchAndTwist); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%iTip); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%iRoot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%alpha_LL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vreln_LL); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%u_UA)) deallocate(OutData%u_UA) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_UA(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_UA.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_UA.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call UA_UnpackInput(Buf, OutData%u_UA(i1,i2)) ! u_UA + call UA_UnpackInput(RF, OutData%u_UA(i1,i2)) ! u_UA end do end do end if - call UA_UnpackMisc(Buf, OutData%m_UA) ! m_UA - call UA_UnpackOutput(Buf, OutData%y_UA) ! y_UA - call UA_UnpackParam(Buf, OutData%p_UA) ! p_UA - if (allocated(OutData%Vind_LL)) deallocate(OutData%Vind_LL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vind_LL(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vind_LL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vind_LL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BN_AxInd)) deallocate(OutData%BN_AxInd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BN_AxInd(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BN_AxInd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BN_AxInd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BN_TanInd)) deallocate(OutData%BN_TanInd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BN_TanInd(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BN_TanInd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BN_TanInd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BN_Vrel)) deallocate(OutData%BN_Vrel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BN_Vrel(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BN_Vrel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BN_Vrel) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BN_alpha)) deallocate(OutData%BN_alpha) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BN_alpha(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BN_alpha.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BN_alpha) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BN_phi)) deallocate(OutData%BN_phi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BN_phi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BN_phi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BN_phi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BN_Re)) deallocate(OutData%BN_Re) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BN_Re(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BN_Re.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BN_Re) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BN_URelWind_s)) deallocate(OutData%BN_URelWind_s) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BN_URelWind_s(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BN_URelWind_s.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BN_URelWind_s) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BN_Cl_Static)) deallocate(OutData%BN_Cl_Static) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BN_Cl_Static(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BN_Cl_Static.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BN_Cl_Static) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BN_Cd_Static)) deallocate(OutData%BN_Cd_Static) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BN_Cd_Static(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BN_Cd_Static.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BN_Cd_Static) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BN_Cm_Static)) deallocate(OutData%BN_Cm_Static) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BN_Cm_Static(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BN_Cm_Static.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BN_Cm_Static) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BN_Cpmin)) deallocate(OutData%BN_Cpmin) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BN_Cpmin(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BN_Cpmin.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BN_Cpmin) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BN_Cl)) deallocate(OutData%BN_Cl) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BN_Cl(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BN_Cl.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BN_Cl) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BN_Cd)) deallocate(OutData%BN_Cd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BN_Cd(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BN_Cd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BN_Cd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BN_Cm)) deallocate(OutData%BN_Cm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BN_Cm(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BN_Cm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BN_Cm) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BN_Cx)) deallocate(OutData%BN_Cx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BN_Cx(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BN_Cx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BN_Cx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BN_Cy)) deallocate(OutData%BN_Cy) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BN_Cy(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BN_Cy.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BN_Cy) - if (RegCheckErr(Buf, RoutineName)) return - end if + call UA_UnpackMisc(RF, OutData%m_UA) ! m_UA + call UA_UnpackOutput(RF, OutData%y_UA) ! y_UA + call UA_UnpackParam(RF, OutData%p_UA) ! p_UA + call RegUnpackAlloc(RF, OutData%Vind_LL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BN_AxInd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BN_TanInd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BN_Vrel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BN_alpha); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BN_phi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BN_Re); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BN_URelWind_s); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BN_Cl_Static); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BN_Cd_Static); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BN_Cm_Static); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BN_Cpmin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BN_Cl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BN_Cd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BN_Cm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BN_Cx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BN_Cy); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -3585,176 +2467,109 @@ subroutine FVW_DestroyMisc(MiscData, ErrStat, ErrMsg) end if end subroutine -subroutine FVW_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(FVW_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackMisc' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%W)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%W)) if (allocated(InData%W)) then - call RegPackBounds(Buf, 1, lbound(InData%W, kind=B8Ki), ubound(InData%W, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%W, kind=B8Ki), ubound(InData%W, kind=B8Ki)) LB(1:1) = lbound(InData%W, kind=B8Ki) UB(1:1) = ubound(InData%W, kind=B8Ki) do i1 = LB(1), UB(1) - call FVW_PackWng_MiscVarType(Buf, InData%W(i1)) + call FVW_PackWng_MiscVarType(RF, InData%W(i1)) end do end if - call RegPack(Buf, InData%FirstCall) - call RegPack(Buf, InData%nNW) - call RegPack(Buf, InData%nFW) - call RegPack(Buf, InData%iStep) - call RegPack(Buf, InData%VTKstep) - call RegPack(Buf, InData%VTKlastTime) - call RegPack(Buf, allocated(InData%r_wind)) - if (allocated(InData%r_wind)) then - call RegPackBounds(Buf, 2, lbound(InData%r_wind, kind=B8Ki), ubound(InData%r_wind, kind=B8Ki)) - call RegPack(Buf, InData%r_wind) - end if - call RegPack(Buf, InData%ComputeWakeInduced) - call RegPack(Buf, InData%OldWakeTime) - call FVW_PackContState(Buf, InData%dxdt) - call FVW_PackContState(Buf, InData%x1) - call FVW_PackContState(Buf, InData%x2) - call RegPack(Buf, InData%t1) - call RegPack(Buf, InData%t2) - call RegPack(Buf, InData%UA_Flag) - call FVW_PackT_Sgmt(Buf, InData%Sgmt) - call FVW_PackT_Part(Buf, InData%Part) - call RegPack(Buf, allocated(InData%CPs)) - if (allocated(InData%CPs)) then - call RegPackBounds(Buf, 2, lbound(InData%CPs, kind=B8Ki), ubound(InData%CPs, kind=B8Ki)) - call RegPack(Buf, InData%CPs) - end if - call RegPack(Buf, allocated(InData%Uind)) - if (allocated(InData%Uind)) then - call RegPackBounds(Buf, 2, lbound(InData%Uind, kind=B8Ki), ubound(InData%Uind, kind=B8Ki)) - call RegPack(Buf, InData%Uind) - end if - call RegPack(Buf, allocated(InData%GridOutputs)) + call RegPack(RF, InData%FirstCall) + call RegPack(RF, InData%nNW) + call RegPack(RF, InData%nFW) + call RegPack(RF, InData%iStep) + call RegPack(RF, InData%VTKstep) + call RegPack(RF, InData%VTKlastTime) + call RegPackAlloc(RF, InData%r_wind) + call RegPack(RF, InData%ComputeWakeInduced) + call RegPack(RF, InData%OldWakeTime) + call FVW_PackContState(RF, InData%dxdt) + call FVW_PackContState(RF, InData%x1) + call FVW_PackContState(RF, InData%x2) + call RegPack(RF, InData%t1) + call RegPack(RF, InData%t2) + call RegPack(RF, InData%UA_Flag) + call FVW_PackT_Sgmt(RF, InData%Sgmt) + call FVW_PackT_Part(RF, InData%Part) + call RegPackAlloc(RF, InData%CPs) + call RegPackAlloc(RF, InData%Uind) + call RegPack(RF, allocated(InData%GridOutputs)) if (allocated(InData%GridOutputs)) then - call RegPackBounds(Buf, 1, lbound(InData%GridOutputs, kind=B8Ki), ubound(InData%GridOutputs, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%GridOutputs, kind=B8Ki), ubound(InData%GridOutputs, kind=B8Ki)) LB(1:1) = lbound(InData%GridOutputs, kind=B8Ki) UB(1:1) = ubound(InData%GridOutputs, kind=B8Ki) do i1 = LB(1), UB(1) - call FVW_PackGridOutType(Buf, InData%GridOutputs(i1)) + call FVW_PackGridOutType(RF, InData%GridOutputs(i1)) end do end if - call RegPack(Buf, InData%InfoReeval) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%InfoReeval) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FVW_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(FVW_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackMisc' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%W)) deallocate(OutData%W) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%W(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FVW_UnpackWng_MiscVarType(Buf, OutData%W(i1)) ! W + call FVW_UnpackWng_MiscVarType(RF, OutData%W(i1)) ! W end do end if - call RegUnpack(Buf, OutData%FirstCall) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nNW) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nFW) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%iStep) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTKstep) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTKlastTime) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%r_wind)) deallocate(OutData%r_wind) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%r_wind(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%r_wind.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%r_wind) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%ComputeWakeInduced) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OldWakeTime) - if (RegCheckErr(Buf, RoutineName)) return - call FVW_UnpackContState(Buf, OutData%dxdt) ! dxdt - call FVW_UnpackContState(Buf, OutData%x1) ! x1 - call FVW_UnpackContState(Buf, OutData%x2) ! x2 - call RegUnpack(Buf, OutData%t1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%t2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UA_Flag) - if (RegCheckErr(Buf, RoutineName)) return - call FVW_UnpackT_Sgmt(Buf, OutData%Sgmt) ! Sgmt - call FVW_UnpackT_Part(Buf, OutData%Part) ! Part - if (allocated(OutData%CPs)) deallocate(OutData%CPs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CPs(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CPs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CPs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Uind)) deallocate(OutData%Uind) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Uind(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Uind.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Uind) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpack(RF, OutData%FirstCall); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nNW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nFW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%iStep); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTKstep); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTKlastTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%r_wind); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ComputeWakeInduced); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OldWakeTime); if (RegCheckErr(RF, RoutineName)) return + call FVW_UnpackContState(RF, OutData%dxdt) ! dxdt + call FVW_UnpackContState(RF, OutData%x1) ! x1 + call FVW_UnpackContState(RF, OutData%x2) ! x2 + call RegUnpack(RF, OutData%t1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%t2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UA_Flag); if (RegCheckErr(RF, RoutineName)) return + call FVW_UnpackT_Sgmt(RF, OutData%Sgmt) ! Sgmt + call FVW_UnpackT_Part(RF, OutData%Part) ! Part + call RegUnpackAlloc(RF, OutData%CPs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Uind); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%GridOutputs)) deallocate(OutData%GridOutputs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%GridOutputs(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GridOutputs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GridOutputs.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FVW_UnpackGridOutType(Buf, OutData%GridOutputs(i1)) ! GridOutputs + call FVW_UnpackGridOutType(RF, OutData%GridOutputs(i1)) ! GridOutputs end do end if - call RegUnpack(Buf, OutData%InfoReeval) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%InfoReeval); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_CopyRot_InputType(SrcRot_InputTypeData, DstRot_InputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -3779,25 +2594,23 @@ subroutine FVW_DestroyRot_InputType(Rot_InputTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine FVW_PackRot_InputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackRot_InputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Rot_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackRot_InputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%HubOrientation) - call RegPack(Buf, InData%HubPosition) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%HubOrientation) + call RegPack(RF, InData%HubPosition) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FVW_UnPackRot_InputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_UnPackRot_InputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Rot_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackRot_InputType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%HubOrientation) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubPosition) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%HubOrientation); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubPosition); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_CopyWng_InputType(SrcWng_InputTypeData, DstWng_InputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -3852,60 +2665,26 @@ subroutine FVW_DestroyWng_InputType(Wng_InputTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine FVW_PackWng_InputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackWng_InputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Wng_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackWng_InputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Vwnd_LL)) - if (allocated(InData%Vwnd_LL)) then - call RegPackBounds(Buf, 2, lbound(InData%Vwnd_LL, kind=B8Ki), ubound(InData%Vwnd_LL, kind=B8Ki)) - call RegPack(Buf, InData%Vwnd_LL) - end if - call RegPack(Buf, allocated(InData%omega_z)) - if (allocated(InData%omega_z)) then - call RegPackBounds(Buf, 1, lbound(InData%omega_z, kind=B8Ki), ubound(InData%omega_z, kind=B8Ki)) - call RegPack(Buf, InData%omega_z) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%Vwnd_LL) + call RegPackAlloc(RF, InData%omega_z) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FVW_UnPackWng_InputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_UnPackWng_InputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Wng_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackWng_InputType' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%Vwnd_LL)) deallocate(OutData%Vwnd_LL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vwnd_LL(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vwnd_LL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vwnd_LL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%omega_z)) deallocate(OutData%omega_z) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%omega_z(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%omega_z.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%omega_z) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%Vwnd_LL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%omega_z); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -4026,116 +2805,93 @@ subroutine FVW_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine FVW_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(FVW_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackInput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%rotors)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%rotors)) if (allocated(InData%rotors)) then - call RegPackBounds(Buf, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%rotors, kind=B8Ki), ubound(InData%rotors, kind=B8Ki)) LB(1:1) = lbound(InData%rotors, kind=B8Ki) UB(1:1) = ubound(InData%rotors, kind=B8Ki) do i1 = LB(1), UB(1) - call FVW_PackRot_InputType(Buf, InData%rotors(i1)) + call FVW_PackRot_InputType(RF, InData%rotors(i1)) end do end if - call RegPack(Buf, allocated(InData%W)) + call RegPack(RF, allocated(InData%W)) if (allocated(InData%W)) then - call RegPackBounds(Buf, 1, lbound(InData%W, kind=B8Ki), ubound(InData%W, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%W, kind=B8Ki), ubound(InData%W, kind=B8Ki)) LB(1:1) = lbound(InData%W, kind=B8Ki) UB(1:1) = ubound(InData%W, kind=B8Ki) do i1 = LB(1), UB(1) - call FVW_PackWng_InputType(Buf, InData%W(i1)) + call FVW_PackWng_InputType(RF, InData%W(i1)) end do end if - call RegPack(Buf, allocated(InData%WingsMesh)) + call RegPack(RF, allocated(InData%WingsMesh)) if (allocated(InData%WingsMesh)) then - call RegPackBounds(Buf, 1, lbound(InData%WingsMesh, kind=B8Ki), ubound(InData%WingsMesh, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%WingsMesh, kind=B8Ki), ubound(InData%WingsMesh, kind=B8Ki)) LB(1:1) = lbound(InData%WingsMesh, kind=B8Ki) UB(1:1) = ubound(InData%WingsMesh, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%WingsMesh(i1)) + call MeshPack(RF, InData%WingsMesh(i1)) end do end if - call RegPack(Buf, allocated(InData%V_wind)) - if (allocated(InData%V_wind)) then - call RegPackBounds(Buf, 2, lbound(InData%V_wind, kind=B8Ki), ubound(InData%V_wind, kind=B8Ki)) - call RegPack(Buf, InData%V_wind) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%V_wind) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FVW_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(FVW_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackInput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%rotors)) deallocate(OutData%rotors) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%rotors(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rotors.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FVW_UnpackRot_InputType(Buf, OutData%rotors(i1)) ! rotors + call FVW_UnpackRot_InputType(RF, OutData%rotors(i1)) ! rotors end do end if if (allocated(OutData%W)) deallocate(OutData%W) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%W(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FVW_UnpackWng_InputType(Buf, OutData%W(i1)) ! W + call FVW_UnpackWng_InputType(RF, OutData%W(i1)) ! W end do end if if (allocated(OutData%WingsMesh)) deallocate(OutData%WingsMesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%WingsMesh(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WingsMesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WingsMesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%WingsMesh(i1)) ! WingsMesh + call MeshUnpack(RF, OutData%WingsMesh(i1)) ! WingsMesh end do end if - if (allocated(OutData%V_wind)) deallocate(OutData%V_wind) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%V_wind(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%V_wind.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%V_wind) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%V_wind); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -4192,50 +2948,47 @@ subroutine FVW_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) end if end subroutine -subroutine FVW_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(FVW_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackDiscState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Dummy) - call RegPack(Buf, allocated(InData%UA)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Dummy) + call RegPack(RF, allocated(InData%UA)) if (allocated(InData%UA)) then - call RegPackBounds(Buf, 1, lbound(InData%UA, kind=B8Ki), ubound(InData%UA, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%UA, kind=B8Ki), ubound(InData%UA, kind=B8Ki)) LB(1:1) = lbound(InData%UA, kind=B8Ki) UB(1:1) = ubound(InData%UA, kind=B8Ki) do i1 = LB(1), UB(1) - call UA_PackDiscState(Buf, InData%UA(i1)) + call UA_PackDiscState(RF, InData%UA(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FVW_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(FVW_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackDiscState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Dummy); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%UA)) deallocate(OutData%UA) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%UA(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UA.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UA.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call UA_UnpackDiscState(Buf, OutData%UA(i1)) ! UA + call UA_UnpackDiscState(RF, OutData%UA(i1)) ! UA end do end if end subroutine @@ -4277,41 +3030,24 @@ subroutine FVW_DestroyWng_ConstraintStateType(Wng_ConstraintStateTypeData, ErrSt end if end subroutine -subroutine FVW_PackWng_ConstraintStateType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackWng_ConstraintStateType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Wng_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackWng_ConstraintStateType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Gamma_LL)) - if (allocated(InData%Gamma_LL)) then - call RegPackBounds(Buf, 1, lbound(InData%Gamma_LL, kind=B8Ki), ubound(InData%Gamma_LL, kind=B8Ki)) - call RegPack(Buf, InData%Gamma_LL) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%Gamma_LL) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FVW_UnPackWng_ConstraintStateType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_UnPackWng_ConstraintStateType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Wng_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackWng_ConstraintStateType' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%Gamma_LL)) deallocate(OutData%Gamma_LL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Gamma_LL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Gamma_LL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Gamma_LL) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%Gamma_LL); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -4368,52 +3104,49 @@ subroutine FVW_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) end if end subroutine -subroutine FVW_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(FVW_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackConstrState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%W)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%W)) if (allocated(InData%W)) then - call RegPackBounds(Buf, 1, lbound(InData%W, kind=B8Ki), ubound(InData%W, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%W, kind=B8Ki), ubound(InData%W, kind=B8Ki)) LB(1:1) = lbound(InData%W, kind=B8Ki) UB(1:1) = ubound(InData%W, kind=B8Ki) do i1 = LB(1), UB(1) - call FVW_PackWng_ConstraintStateType(Buf, InData%W(i1)) + call FVW_PackWng_ConstraintStateType(RF, InData%W(i1)) end do end if - call RegPack(Buf, InData%residual) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%residual) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FVW_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(FVW_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackConstrState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%W)) deallocate(OutData%W) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%W(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FVW_UnpackWng_ConstraintStateType(Buf, OutData%W(i1)) ! W + call FVW_UnpackWng_ConstraintStateType(RF, OutData%W(i1)) ! W end do end if - call RegUnpack(Buf, OutData%residual) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%residual); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -4470,50 +3203,47 @@ subroutine FVW_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) end if end subroutine -subroutine FVW_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(FVW_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Dummy) - call RegPack(Buf, allocated(InData%UA)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Dummy) + call RegPack(RF, allocated(InData%UA)) if (allocated(InData%UA)) then - call RegPackBounds(Buf, 1, lbound(InData%UA, kind=B8Ki), ubound(InData%UA, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%UA, kind=B8Ki), ubound(InData%UA, kind=B8Ki)) LB(1:1) = lbound(InData%UA, kind=B8Ki) UB(1:1) = ubound(InData%UA, kind=B8Ki) do i1 = LB(1), UB(1) - call UA_PackOtherState(Buf, InData%UA(i1)) + call UA_PackOtherState(RF, InData%UA(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FVW_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(FVW_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Dummy); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%UA)) deallocate(OutData%UA) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%UA(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UA.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UA.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call UA_UnpackOtherState(Buf, OutData%UA(i1)) ! UA + call UA_UnpackOtherState(RF, OutData%UA(i1)) ! UA end do end if end subroutine @@ -4588,88 +3318,34 @@ subroutine FVW_DestroyWng_InitInputType(Wng_InitInputTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine FVW_PackWng_InitInputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackWng_InitInputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Wng_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackWng_InitInputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%AFindx)) - if (allocated(InData%AFindx)) then - call RegPackBounds(Buf, 2, lbound(InData%AFindx, kind=B8Ki), ubound(InData%AFindx, kind=B8Ki)) - call RegPack(Buf, InData%AFindx) - end if - call RegPack(Buf, allocated(InData%chord)) - if (allocated(InData%chord)) then - call RegPackBounds(Buf, 1, lbound(InData%chord, kind=B8Ki), ubound(InData%chord, kind=B8Ki)) - call RegPack(Buf, InData%chord) - end if - call RegPack(Buf, allocated(InData%RElm)) - if (allocated(InData%RElm)) then - call RegPackBounds(Buf, 1, lbound(InData%RElm, kind=B8Ki), ubound(InData%RElm, kind=B8Ki)) - call RegPack(Buf, InData%RElm) - end if - call RegPack(Buf, InData%iRotor) - call RegPack(Buf, InData%UAOff_innerNode) - call RegPack(Buf, InData%UAOff_outerNode) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FVW_UnPackWng_InitInputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%AFindx) + call RegPackAlloc(RF, InData%chord) + call RegPackAlloc(RF, InData%RElm) + call RegPack(RF, InData%iRotor) + call RegPack(RF, InData%UAOff_innerNode) + call RegPack(RF, InData%UAOff_outerNode) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FVW_UnPackWng_InitInputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Wng_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackWng_InitInputType' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%AFindx)) deallocate(OutData%AFindx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AFindx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AFindx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AFindx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%chord)) deallocate(OutData%chord) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%chord(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%chord.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%chord) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RElm)) deallocate(OutData%RElm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RElm(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RElm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RElm) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%iRotor) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UAOff_innerNode) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UAOff_outerNode) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%AFindx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%chord); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RElm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%iRotor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UAOff_innerNode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UAOff_outerNode); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -4762,109 +3438,93 @@ subroutine FVW_DestroyInitInput(InitInputData, ErrStat, ErrMsg) end if end subroutine -subroutine FVW_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(FVW_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackInitInput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%FVWFileName) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, allocated(InData%W)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%FVWFileName) + call RegPack(RF, InData%RootName) + call RegPack(RF, allocated(InData%W)) if (allocated(InData%W)) then - call RegPackBounds(Buf, 1, lbound(InData%W, kind=B8Ki), ubound(InData%W, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%W, kind=B8Ki), ubound(InData%W, kind=B8Ki)) LB(1:1) = lbound(InData%W, kind=B8Ki) UB(1:1) = ubound(InData%W, kind=B8Ki) do i1 = LB(1), UB(1) - call FVW_PackWng_InitInputType(Buf, InData%W(i1)) + call FVW_PackWng_InitInputType(RF, InData%W(i1)) end do end if - call RegPack(Buf, allocated(InData%WingsMesh)) + call RegPack(RF, allocated(InData%WingsMesh)) if (allocated(InData%WingsMesh)) then - call RegPackBounds(Buf, 1, lbound(InData%WingsMesh, kind=B8Ki), ubound(InData%WingsMesh, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%WingsMesh, kind=B8Ki), ubound(InData%WingsMesh, kind=B8Ki)) LB(1:1) = lbound(InData%WingsMesh, kind=B8Ki) UB(1:1) = ubound(InData%WingsMesh, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%WingsMesh(i1)) + call MeshPack(RF, InData%WingsMesh(i1)) end do end if - call RegPack(Buf, InData%numBladeNodes) - call RegPack(Buf, InData%DTaero) - call RegPack(Buf, InData%KinVisc) - call RegPack(Buf, InData%MHK) - call RegPack(Buf, InData%WtrDpth) - call RegPack(Buf, InData%UAMod) - call RegPack(Buf, InData%UA_Flag) - call RegPack(Buf, InData%Flookup) - call RegPack(Buf, InData%a_s) - call RegPack(Buf, InData%SumPrint) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FVW_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + call RegPack(RF, InData%numBladeNodes) + call RegPack(RF, InData%DTaero) + call RegPack(RF, InData%KinVisc) + call RegPack(RF, InData%MHK) + call RegPack(RF, InData%WtrDpth) + call RegPack(RF, InData%UAMod) + call RegPack(RF, InData%UA_Flag) + call RegPack(RF, InData%Flookup) + call RegPack(RF, InData%a_s) + call RegPack(RF, InData%SumPrint) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FVW_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(FVW_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackInitInput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%FVWFileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%FVWFileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%W)) deallocate(OutData%W) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%W(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FVW_UnpackWng_InitInputType(Buf, OutData%W(i1)) ! W + call FVW_UnpackWng_InitInputType(RF, OutData%W(i1)) ! W end do end if if (allocated(OutData%WingsMesh)) deallocate(OutData%WingsMesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%WingsMesh(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WingsMesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WingsMesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%WingsMesh(i1)) ! WingsMesh + call MeshUnpack(RF, OutData%WingsMesh(i1)) ! WingsMesh end do end if - call RegUnpack(Buf, OutData%numBladeNodes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DTaero) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%KinVisc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MHK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDpth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UAMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UA_Flag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Flookup) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%a_s) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SumPrint) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%numBladeNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DTaero); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%KinVisc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MHK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDpth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UAMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UA_Flag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Flookup); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%a_s); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SumPrint); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_CopyInputFile(SrcInputFileData, DstInputFileData, CtrlCode, ErrStat, ErrMsg) @@ -4919,115 +3579,83 @@ subroutine FVW_DestroyInputFile(InputFileData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine FVW_PackInputFile(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackInputFile(RF, Indata) + type(RegFile), intent(inout) :: RF type(FVW_InputFile), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackInputFile' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%CircSolvMethod) - call RegPack(Buf, InData%CirculationFile) - call RegPack(Buf, InData%CircSolvMaxIter) - call RegPack(Buf, InData%CircSolvConvCrit) - call RegPack(Buf, InData%CircSolvRelaxation) - call RegPack(Buf, InData%IntMethod) - call RegPack(Buf, InData%FreeWake) - call RegPack(Buf, InData%FreeWakeStart) - call RegPack(Buf, InData%FullCircStart) - call RegPack(Buf, InData%DTfvw) - call RegPack(Buf, InData%CircSolvPolar) - call RegPack(Buf, InData%nNWPanels) - call RegPack(Buf, InData%nNWPanelsFree) - call RegPack(Buf, InData%nFWPanels) - call RegPack(Buf, InData%nFWPanelsFree) - call RegPack(Buf, InData%FWShedVorticity) - call RegPack(Buf, InData%DiffusionMethod) - call RegPack(Buf, InData%CoreSpreadEddyVisc) - call RegPack(Buf, InData%RegDeterMethod) - call RegPack(Buf, InData%RegFunction) - call RegPack(Buf, InData%WakeRegMethod) - call RegPack(Buf, InData%WakeRegParam) - call RegPack(Buf, InData%WingRegParam) - call RegPack(Buf, InData%ShearModel) - call RegPack(Buf, InData%TwrShadowOnWake) - call RegPack(Buf, InData%VelocityMethod) - call RegPack(Buf, InData%TreeBranchFactor) - call RegPack(Buf, InData%PartPerSegment) - call RegPack(Buf, InData%WrVTK) - call RegPack(Buf, InData%VTKBlades) - call RegPack(Buf, InData%DTvtk) - call RegPack(Buf, InData%VTKCoord) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FVW_UnPackInputFile(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%CircSolvMethod) + call RegPack(RF, InData%CirculationFile) + call RegPack(RF, InData%CircSolvMaxIter) + call RegPack(RF, InData%CircSolvConvCrit) + call RegPack(RF, InData%CircSolvRelaxation) + call RegPack(RF, InData%IntMethod) + call RegPack(RF, InData%FreeWake) + call RegPack(RF, InData%FreeWakeStart) + call RegPack(RF, InData%FullCircStart) + call RegPack(RF, InData%DTfvw) + call RegPack(RF, InData%CircSolvPolar) + call RegPack(RF, InData%nNWPanels) + call RegPack(RF, InData%nNWPanelsFree) + call RegPack(RF, InData%nFWPanels) + call RegPack(RF, InData%nFWPanelsFree) + call RegPack(RF, InData%FWShedVorticity) + call RegPack(RF, InData%DiffusionMethod) + call RegPack(RF, InData%CoreSpreadEddyVisc) + call RegPack(RF, InData%RegDeterMethod) + call RegPack(RF, InData%RegFunction) + call RegPack(RF, InData%WakeRegMethod) + call RegPack(RF, InData%WakeRegParam) + call RegPack(RF, InData%WingRegParam) + call RegPack(RF, InData%ShearModel) + call RegPack(RF, InData%TwrShadowOnWake) + call RegPack(RF, InData%VelocityMethod) + call RegPack(RF, InData%TreeBranchFactor) + call RegPack(RF, InData%PartPerSegment) + call RegPack(RF, InData%WrVTK) + call RegPack(RF, InData%VTKBlades) + call RegPack(RF, InData%DTvtk) + call RegPack(RF, InData%VTKCoord) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FVW_UnPackInputFile(RF, OutData) + type(RegFile), intent(inout) :: RF type(FVW_InputFile), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackInputFile' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%CircSolvMethod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CirculationFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CircSolvMaxIter) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CircSolvConvCrit) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CircSolvRelaxation) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%IntMethod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FreeWake) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FreeWakeStart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FullCircStart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DTfvw) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CircSolvPolar) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nNWPanels) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nNWPanelsFree) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nFWPanels) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nFWPanelsFree) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FWShedVorticity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DiffusionMethod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CoreSpreadEddyVisc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RegDeterMethod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RegFunction) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WakeRegMethod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WakeRegParam) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WingRegParam) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ShearModel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrShadowOnWake) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VelocityMethod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TreeBranchFactor) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PartPerSegment) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WrVTK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTKBlades) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DTvtk) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTKCoord) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%CircSolvMethod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CirculationFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CircSolvMaxIter); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CircSolvConvCrit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CircSolvRelaxation); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IntMethod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FreeWake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FreeWakeStart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FullCircStart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DTfvw); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CircSolvPolar); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nNWPanels); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nNWPanelsFree); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nFWPanels); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nFWPanelsFree); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FWShedVorticity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DiffusionMethod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CoreSpreadEddyVisc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RegDeterMethod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RegFunction); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WakeRegMethod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WakeRegParam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WingRegParam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ShearModel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrShadowOnWake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VelocityMethod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TreeBranchFactor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PartPerSegment); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrVTK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTKBlades); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DTvtk); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTKCoord); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -5051,22 +3679,21 @@ subroutine FVW_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine FVW_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(FVW_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'FVW_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Dummy) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FVW_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FVW_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(FVW_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FVW_UnPackInitOutput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Dummy); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FVW_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/aerodyn/src/UnsteadyAero_Types.f90 b/modules/aerodyn/src/UnsteadyAero_Types.f90 index af725dc88d..8fad9bcdcf 100644 --- a/modules/aerodyn/src/UnsteadyAero_Types.f90 +++ b/modules/aerodyn/src/UnsteadyAero_Types.f90 @@ -324,106 +324,46 @@ subroutine UA_DestroyInitInput(InitInputData, ErrStat, ErrMsg) end if end subroutine -subroutine UA_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(UA_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'UA_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%dt) - call RegPack(Buf, InData%OutRootName) - call RegPack(Buf, allocated(InData%c)) - if (allocated(InData%c)) then - call RegPackBounds(Buf, 2, lbound(InData%c, kind=B8Ki), ubound(InData%c, kind=B8Ki)) - call RegPack(Buf, InData%c) - end if - call RegPack(Buf, InData%numBlades) - call RegPack(Buf, InData%nNodesPerBlade) - call RegPack(Buf, InData%UAMod) - call RegPack(Buf, InData%a_s) - call RegPack(Buf, InData%Flookup) - call RegPack(Buf, InData%ShedEffect) - call RegPack(Buf, InData%WrSum) - call RegPack(Buf, allocated(InData%UAOff_innerNode)) - if (allocated(InData%UAOff_innerNode)) then - call RegPackBounds(Buf, 1, lbound(InData%UAOff_innerNode, kind=B8Ki), ubound(InData%UAOff_innerNode, kind=B8Ki)) - call RegPack(Buf, InData%UAOff_innerNode) - end if - call RegPack(Buf, allocated(InData%UAOff_outerNode)) - if (allocated(InData%UAOff_outerNode)) then - call RegPackBounds(Buf, 1, lbound(InData%UAOff_outerNode, kind=B8Ki), ubound(InData%UAOff_outerNode, kind=B8Ki)) - call RegPack(Buf, InData%UAOff_outerNode) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%dt) + call RegPack(RF, InData%OutRootName) + call RegPackAlloc(RF, InData%c) + call RegPack(RF, InData%numBlades) + call RegPack(RF, InData%nNodesPerBlade) + call RegPack(RF, InData%UAMod) + call RegPack(RF, InData%a_s) + call RegPack(RF, InData%Flookup) + call RegPack(RF, InData%ShedEffect) + call RegPack(RF, InData%WrSum) + call RegPackAlloc(RF, InData%UAOff_innerNode) + call RegPackAlloc(RF, InData%UAOff_outerNode) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine UA_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(UA_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'UA_UnPackInitInput' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%dt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutRootName) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%c)) deallocate(OutData%c) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%c(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%c.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%c) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%numBlades) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nNodesPerBlade) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UAMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%a_s) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Flookup) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ShedEffect) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WrSum) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%UAOff_innerNode)) deallocate(OutData%UAOff_innerNode) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%UAOff_innerNode(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UAOff_innerNode.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%UAOff_innerNode) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%UAOff_outerNode)) deallocate(OutData%UAOff_outerNode) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%UAOff_outerNode(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UAOff_outerNode.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%UAOff_outerNode) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%dt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutRootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%c); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numBlades); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nNodesPerBlade); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UAMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%a_s); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Flookup); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ShedEffect); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrSum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%UAOff_innerNode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%UAOff_outerNode); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine UA_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -486,62 +426,28 @@ subroutine UA_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine UA_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(UA_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'UA_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call NWTC_Library_PackProgDesc(Buf, InData%Version) - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call NWTC_Library_PackProgDesc(RF, InData%Version) + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine UA_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(UA_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'UA_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call NWTC_Library_UnpackProgDesc(Buf, OutData%Version) ! Version - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Version) ! Version + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine UA_CopyKelvinChainType(SrcKelvinChainTypeData, DstKelvinChainTypeData, CtrlCode, ErrStat, ErrMsg) @@ -615,172 +521,121 @@ subroutine UA_DestroyKelvinChainType(KelvinChainTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine UA_PackKelvinChainType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_PackKelvinChainType(RF, Indata) + type(RegFile), intent(inout) :: RF type(UA_KelvinChainType), intent(in) :: InData character(*), parameter :: RoutineName = 'UA_PackKelvinChainType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Cn_prime) - call RegPack(Buf, InData%C_nalpha_circ) - call RegPack(Buf, InData%Kalpha_f) - call RegPack(Buf, InData%Kq_f) - call RegPack(Buf, InData%alpha_filt_cur) - call RegPack(Buf, InData%alpha_e) - call RegPack(Buf, InData%dalpha0) - call RegPack(Buf, InData%alpha_f) - call RegPack(Buf, InData%Kq) - call RegPack(Buf, InData%q_cur) - call RegPack(Buf, InData%q_f_cur) - call RegPack(Buf, InData%X1) - call RegPack(Buf, InData%X2) - call RegPack(Buf, InData%X3) - call RegPack(Buf, InData%X4) - call RegPack(Buf, InData%Kprime_alpha) - call RegPack(Buf, InData%Kprime_q) - call RegPack(Buf, InData%K3prime_q) - call RegPack(Buf, InData%Kprimeprime_q) - call RegPack(Buf, InData%Dp) - call RegPack(Buf, InData%Cn_pot) - call RegPack(Buf, InData%Cc_pot) - call RegPack(Buf, InData%Cn_alpha_q_circ) - call RegPack(Buf, InData%Cn_alpha_q_nc) - call RegPack(Buf, InData%Cm_q_circ) - call RegPack(Buf, InData%Cn_alpha_nc) - call RegPack(Buf, InData%Cn_q_circ) - call RegPack(Buf, InData%Cn_q_nc) - call RegPack(Buf, InData%Cm_q_nc) - call RegPack(Buf, InData%fprimeprime) - call RegPack(Buf, InData%Df) - call RegPack(Buf, InData%Df_c) - call RegPack(Buf, InData%Df_m) - call RegPack(Buf, InData%Dalphaf) - call RegPack(Buf, InData%fprime) - call RegPack(Buf, InData%fprime_c) - call RegPack(Buf, InData%fprimeprime_c) - call RegPack(Buf, InData%fprime_m) - call RegPack(Buf, InData%fprimeprime_m) - call RegPack(Buf, InData%Cn_v) - call RegPack(Buf, InData%C_V) - call RegPack(Buf, InData%Cn_FS) - call RegPack(Buf, InData%T_f) - call RegPack(Buf, InData%T_fc) - call RegPack(Buf, InData%T_fm) - call RegPack(Buf, InData%T_V) - call RegPack(Buf, InData%k_alpha) - call RegPack(Buf, InData%k_q) - call RegPack(Buf, InData%T_alpha) - call RegPack(Buf, InData%T_q) - call RegPack(Buf, InData%ds) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Cn_prime) + call RegPack(RF, InData%C_nalpha_circ) + call RegPack(RF, InData%Kalpha_f) + call RegPack(RF, InData%Kq_f) + call RegPack(RF, InData%alpha_filt_cur) + call RegPack(RF, InData%alpha_e) + call RegPack(RF, InData%dalpha0) + call RegPack(RF, InData%alpha_f) + call RegPack(RF, InData%Kq) + call RegPack(RF, InData%q_cur) + call RegPack(RF, InData%q_f_cur) + call RegPack(RF, InData%X1) + call RegPack(RF, InData%X2) + call RegPack(RF, InData%X3) + call RegPack(RF, InData%X4) + call RegPack(RF, InData%Kprime_alpha) + call RegPack(RF, InData%Kprime_q) + call RegPack(RF, InData%K3prime_q) + call RegPack(RF, InData%Kprimeprime_q) + call RegPack(RF, InData%Dp) + call RegPack(RF, InData%Cn_pot) + call RegPack(RF, InData%Cc_pot) + call RegPack(RF, InData%Cn_alpha_q_circ) + call RegPack(RF, InData%Cn_alpha_q_nc) + call RegPack(RF, InData%Cm_q_circ) + call RegPack(RF, InData%Cn_alpha_nc) + call RegPack(RF, InData%Cn_q_circ) + call RegPack(RF, InData%Cn_q_nc) + call RegPack(RF, InData%Cm_q_nc) + call RegPack(RF, InData%fprimeprime) + call RegPack(RF, InData%Df) + call RegPack(RF, InData%Df_c) + call RegPack(RF, InData%Df_m) + call RegPack(RF, InData%Dalphaf) + call RegPack(RF, InData%fprime) + call RegPack(RF, InData%fprime_c) + call RegPack(RF, InData%fprimeprime_c) + call RegPack(RF, InData%fprime_m) + call RegPack(RF, InData%fprimeprime_m) + call RegPack(RF, InData%Cn_v) + call RegPack(RF, InData%C_V) + call RegPack(RF, InData%Cn_FS) + call RegPack(RF, InData%T_f) + call RegPack(RF, InData%T_fc) + call RegPack(RF, InData%T_fm) + call RegPack(RF, InData%T_V) + call RegPack(RF, InData%k_alpha) + call RegPack(RF, InData%k_q) + call RegPack(RF, InData%T_alpha) + call RegPack(RF, InData%T_q) + call RegPack(RF, InData%ds) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine UA_UnPackKelvinChainType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_UnPackKelvinChainType(RF, OutData) + type(RegFile), intent(inout) :: RF type(UA_KelvinChainType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'UA_UnPackKelvinChainType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Cn_prime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_nalpha_circ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Kalpha_f) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Kq_f) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%alpha_filt_cur) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%alpha_e) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dalpha0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%alpha_f) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Kq) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%q_cur) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%q_f_cur) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%X1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%X2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%X3) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%X4) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Kprime_alpha) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Kprime_q) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%K3prime_q) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Kprimeprime_q) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Dp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cn_pot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cc_pot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cn_alpha_q_circ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cn_alpha_q_nc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cm_q_circ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cn_alpha_nc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cn_q_circ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cn_q_nc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cm_q_nc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%fprimeprime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Df) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Df_c) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Df_m) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Dalphaf) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%fprime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%fprime_c) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%fprimeprime_c) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%fprime_m) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%fprimeprime_m) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cn_v) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_V) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cn_FS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%T_f) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%T_fc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%T_fm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%T_V) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k_alpha) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k_q) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%T_alpha) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%T_q) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ds) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Cn_prime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_nalpha_circ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Kalpha_f); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Kq_f); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%alpha_filt_cur); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%alpha_e); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dalpha0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%alpha_f); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Kq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%q_cur); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%q_f_cur); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%X1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%X2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%X3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%X4); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Kprime_alpha); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Kprime_q); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%K3prime_q); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Kprimeprime_q); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Dp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cn_pot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cc_pot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cn_alpha_q_circ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cn_alpha_q_nc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cm_q_circ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cn_alpha_nc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cn_q_circ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cn_q_nc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cm_q_nc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%fprimeprime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Df); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Df_c); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Df_m); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Dalphaf); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%fprime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%fprime_c); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%fprimeprime_c); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%fprime_m); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%fprimeprime_m); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cn_v); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_V); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cn_FS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%T_f); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%T_fc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%T_fm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%T_V); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k_alpha); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k_q); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%T_alpha); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%T_q); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ds); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine UA_CopyElementContinuousStateType(SrcElementContinuousStateTypeData, DstElementContinuousStateTypeData, CtrlCode, ErrStat, ErrMsg) @@ -804,22 +659,21 @@ subroutine UA_DestroyElementContinuousStateType(ElementContinuousStateTypeData, ErrMsg = '' end subroutine -subroutine UA_PackElementContinuousStateType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_PackElementContinuousStateType(RF, Indata) + type(RegFile), intent(inout) :: RF type(UA_ElementContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'UA_PackElementContinuousStateType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%x) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%x) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine UA_UnPackElementContinuousStateType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_UnPackElementContinuousStateType(RF, OutData) + type(RegFile), intent(inout) :: RF type(UA_ElementContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'UA_UnPackElementContinuousStateType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%x) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%x); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine UA_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -879,50 +733,48 @@ subroutine UA_DestroyContState(ContStateData, ErrStat, ErrMsg) end if end subroutine -subroutine UA_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(UA_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'UA_PackContState' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%element)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%element)) if (allocated(InData%element)) then - call RegPackBounds(Buf, 2, lbound(InData%element, kind=B8Ki), ubound(InData%element, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%element, kind=B8Ki), ubound(InData%element, kind=B8Ki)) LB(1:2) = lbound(InData%element, kind=B8Ki) UB(1:2) = ubound(InData%element, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call UA_PackElementContinuousStateType(Buf, InData%element(i1,i2)) + call UA_PackElementContinuousStateType(RF, InData%element(i1,i2)) end do end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine UA_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(UA_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'UA_UnPackContState' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%element)) deallocate(OutData%element) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%element(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%element.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%element.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call UA_UnpackElementContinuousStateType(Buf, OutData%element(i1,i2)) ! element + call UA_UnpackElementContinuousStateType(RF, OutData%element(i1,i2)) ! element end do end do end if @@ -1460,668 +1312,90 @@ subroutine UA_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) end if end subroutine -subroutine UA_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(UA_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'UA_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%alpha_minus1)) - if (allocated(InData%alpha_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%alpha_minus1, kind=B8Ki), ubound(InData%alpha_minus1, kind=B8Ki)) - call RegPack(Buf, InData%alpha_minus1) - end if - call RegPack(Buf, allocated(InData%alpha_filt_minus1)) - if (allocated(InData%alpha_filt_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%alpha_filt_minus1, kind=B8Ki), ubound(InData%alpha_filt_minus1, kind=B8Ki)) - call RegPack(Buf, InData%alpha_filt_minus1) - end if - call RegPack(Buf, allocated(InData%alpha_dot)) - if (allocated(InData%alpha_dot)) then - call RegPackBounds(Buf, 2, lbound(InData%alpha_dot, kind=B8Ki), ubound(InData%alpha_dot, kind=B8Ki)) - call RegPack(Buf, InData%alpha_dot) - end if - call RegPack(Buf, allocated(InData%alpha_dot_minus1)) - if (allocated(InData%alpha_dot_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%alpha_dot_minus1, kind=B8Ki), ubound(InData%alpha_dot_minus1, kind=B8Ki)) - call RegPack(Buf, InData%alpha_dot_minus1) - end if - call RegPack(Buf, allocated(InData%q_minus1)) - if (allocated(InData%q_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%q_minus1, kind=B8Ki), ubound(InData%q_minus1, kind=B8Ki)) - call RegPack(Buf, InData%q_minus1) - end if - call RegPack(Buf, allocated(InData%Kalpha_f_minus1)) - if (allocated(InData%Kalpha_f_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%Kalpha_f_minus1, kind=B8Ki), ubound(InData%Kalpha_f_minus1, kind=B8Ki)) - call RegPack(Buf, InData%Kalpha_f_minus1) - end if - call RegPack(Buf, allocated(InData%Kq_f_minus1)) - if (allocated(InData%Kq_f_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%Kq_f_minus1, kind=B8Ki), ubound(InData%Kq_f_minus1, kind=B8Ki)) - call RegPack(Buf, InData%Kq_f_minus1) - end if - call RegPack(Buf, allocated(InData%q_f_minus1)) - if (allocated(InData%q_f_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%q_f_minus1, kind=B8Ki), ubound(InData%q_f_minus1, kind=B8Ki)) - call RegPack(Buf, InData%q_f_minus1) - end if - call RegPack(Buf, allocated(InData%X1_minus1)) - if (allocated(InData%X1_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%X1_minus1, kind=B8Ki), ubound(InData%X1_minus1, kind=B8Ki)) - call RegPack(Buf, InData%X1_minus1) - end if - call RegPack(Buf, allocated(InData%X2_minus1)) - if (allocated(InData%X2_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%X2_minus1, kind=B8Ki), ubound(InData%X2_minus1, kind=B8Ki)) - call RegPack(Buf, InData%X2_minus1) - end if - call RegPack(Buf, allocated(InData%X3_minus1)) - if (allocated(InData%X3_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%X3_minus1, kind=B8Ki), ubound(InData%X3_minus1, kind=B8Ki)) - call RegPack(Buf, InData%X3_minus1) - end if - call RegPack(Buf, allocated(InData%X4_minus1)) - if (allocated(InData%X4_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%X4_minus1, kind=B8Ki), ubound(InData%X4_minus1, kind=B8Ki)) - call RegPack(Buf, InData%X4_minus1) - end if - call RegPack(Buf, allocated(InData%Kprime_alpha_minus1)) - if (allocated(InData%Kprime_alpha_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%Kprime_alpha_minus1, kind=B8Ki), ubound(InData%Kprime_alpha_minus1, kind=B8Ki)) - call RegPack(Buf, InData%Kprime_alpha_minus1) - end if - call RegPack(Buf, allocated(InData%Kprime_q_minus1)) - if (allocated(InData%Kprime_q_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%Kprime_q_minus1, kind=B8Ki), ubound(InData%Kprime_q_minus1, kind=B8Ki)) - call RegPack(Buf, InData%Kprime_q_minus1) - end if - call RegPack(Buf, allocated(InData%Kprimeprime_q_minus1)) - if (allocated(InData%Kprimeprime_q_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%Kprimeprime_q_minus1, kind=B8Ki), ubound(InData%Kprimeprime_q_minus1, kind=B8Ki)) - call RegPack(Buf, InData%Kprimeprime_q_minus1) - end if - call RegPack(Buf, allocated(InData%K3prime_q_minus1)) - if (allocated(InData%K3prime_q_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%K3prime_q_minus1, kind=B8Ki), ubound(InData%K3prime_q_minus1, kind=B8Ki)) - call RegPack(Buf, InData%K3prime_q_minus1) - end if - call RegPack(Buf, allocated(InData%Dp_minus1)) - if (allocated(InData%Dp_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%Dp_minus1, kind=B8Ki), ubound(InData%Dp_minus1, kind=B8Ki)) - call RegPack(Buf, InData%Dp_minus1) - end if - call RegPack(Buf, allocated(InData%Cn_pot_minus1)) - if (allocated(InData%Cn_pot_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%Cn_pot_minus1, kind=B8Ki), ubound(InData%Cn_pot_minus1, kind=B8Ki)) - call RegPack(Buf, InData%Cn_pot_minus1) - end if - call RegPack(Buf, allocated(InData%fprimeprime_minus1)) - if (allocated(InData%fprimeprime_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%fprimeprime_minus1, kind=B8Ki), ubound(InData%fprimeprime_minus1, kind=B8Ki)) - call RegPack(Buf, InData%fprimeprime_minus1) - end if - call RegPack(Buf, allocated(InData%fprimeprime_c_minus1)) - if (allocated(InData%fprimeprime_c_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%fprimeprime_c_minus1, kind=B8Ki), ubound(InData%fprimeprime_c_minus1, kind=B8Ki)) - call RegPack(Buf, InData%fprimeprime_c_minus1) - end if - call RegPack(Buf, allocated(InData%fprimeprime_m_minus1)) - if (allocated(InData%fprimeprime_m_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%fprimeprime_m_minus1, kind=B8Ki), ubound(InData%fprimeprime_m_minus1, kind=B8Ki)) - call RegPack(Buf, InData%fprimeprime_m_minus1) - end if - call RegPack(Buf, allocated(InData%Df_minus1)) - if (allocated(InData%Df_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%Df_minus1, kind=B8Ki), ubound(InData%Df_minus1, kind=B8Ki)) - call RegPack(Buf, InData%Df_minus1) - end if - call RegPack(Buf, allocated(InData%Df_c_minus1)) - if (allocated(InData%Df_c_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%Df_c_minus1, kind=B8Ki), ubound(InData%Df_c_minus1, kind=B8Ki)) - call RegPack(Buf, InData%Df_c_minus1) - end if - call RegPack(Buf, allocated(InData%Df_m_minus1)) - if (allocated(InData%Df_m_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%Df_m_minus1, kind=B8Ki), ubound(InData%Df_m_minus1, kind=B8Ki)) - call RegPack(Buf, InData%Df_m_minus1) - end if - call RegPack(Buf, allocated(InData%Dalphaf_minus1)) - if (allocated(InData%Dalphaf_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%Dalphaf_minus1, kind=B8Ki), ubound(InData%Dalphaf_minus1, kind=B8Ki)) - call RegPack(Buf, InData%Dalphaf_minus1) - end if - call RegPack(Buf, allocated(InData%alphaf_minus1)) - if (allocated(InData%alphaf_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%alphaf_minus1, kind=B8Ki), ubound(InData%alphaf_minus1, kind=B8Ki)) - call RegPack(Buf, InData%alphaf_minus1) - end if - call RegPack(Buf, allocated(InData%fprime_minus1)) - if (allocated(InData%fprime_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%fprime_minus1, kind=B8Ki), ubound(InData%fprime_minus1, kind=B8Ki)) - call RegPack(Buf, InData%fprime_minus1) - end if - call RegPack(Buf, allocated(InData%fprime_c_minus1)) - if (allocated(InData%fprime_c_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%fprime_c_minus1, kind=B8Ki), ubound(InData%fprime_c_minus1, kind=B8Ki)) - call RegPack(Buf, InData%fprime_c_minus1) - end if - call RegPack(Buf, allocated(InData%fprime_m_minus1)) - if (allocated(InData%fprime_m_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%fprime_m_minus1, kind=B8Ki), ubound(InData%fprime_m_minus1, kind=B8Ki)) - call RegPack(Buf, InData%fprime_m_minus1) - end if - call RegPack(Buf, allocated(InData%tau_V)) - if (allocated(InData%tau_V)) then - call RegPackBounds(Buf, 2, lbound(InData%tau_V, kind=B8Ki), ubound(InData%tau_V, kind=B8Ki)) - call RegPack(Buf, InData%tau_V) - end if - call RegPack(Buf, allocated(InData%tau_V_minus1)) - if (allocated(InData%tau_V_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%tau_V_minus1, kind=B8Ki), ubound(InData%tau_V_minus1, kind=B8Ki)) - call RegPack(Buf, InData%tau_V_minus1) - end if - call RegPack(Buf, allocated(InData%Cn_v_minus1)) - if (allocated(InData%Cn_v_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%Cn_v_minus1, kind=B8Ki), ubound(InData%Cn_v_minus1, kind=B8Ki)) - call RegPack(Buf, InData%Cn_v_minus1) - end if - call RegPack(Buf, allocated(InData%C_V_minus1)) - if (allocated(InData%C_V_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%C_V_minus1, kind=B8Ki), ubound(InData%C_V_minus1, kind=B8Ki)) - call RegPack(Buf, InData%C_V_minus1) - end if - call RegPack(Buf, allocated(InData%Cn_prime_minus1)) - if (allocated(InData%Cn_prime_minus1)) then - call RegPackBounds(Buf, 2, lbound(InData%Cn_prime_minus1, kind=B8Ki), ubound(InData%Cn_prime_minus1, kind=B8Ki)) - call RegPack(Buf, InData%Cn_prime_minus1) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%alpha_minus1) + call RegPackAlloc(RF, InData%alpha_filt_minus1) + call RegPackAlloc(RF, InData%alpha_dot) + call RegPackAlloc(RF, InData%alpha_dot_minus1) + call RegPackAlloc(RF, InData%q_minus1) + call RegPackAlloc(RF, InData%Kalpha_f_minus1) + call RegPackAlloc(RF, InData%Kq_f_minus1) + call RegPackAlloc(RF, InData%q_f_minus1) + call RegPackAlloc(RF, InData%X1_minus1) + call RegPackAlloc(RF, InData%X2_minus1) + call RegPackAlloc(RF, InData%X3_minus1) + call RegPackAlloc(RF, InData%X4_minus1) + call RegPackAlloc(RF, InData%Kprime_alpha_minus1) + call RegPackAlloc(RF, InData%Kprime_q_minus1) + call RegPackAlloc(RF, InData%Kprimeprime_q_minus1) + call RegPackAlloc(RF, InData%K3prime_q_minus1) + call RegPackAlloc(RF, InData%Dp_minus1) + call RegPackAlloc(RF, InData%Cn_pot_minus1) + call RegPackAlloc(RF, InData%fprimeprime_minus1) + call RegPackAlloc(RF, InData%fprimeprime_c_minus1) + call RegPackAlloc(RF, InData%fprimeprime_m_minus1) + call RegPackAlloc(RF, InData%Df_minus1) + call RegPackAlloc(RF, InData%Df_c_minus1) + call RegPackAlloc(RF, InData%Df_m_minus1) + call RegPackAlloc(RF, InData%Dalphaf_minus1) + call RegPackAlloc(RF, InData%alphaf_minus1) + call RegPackAlloc(RF, InData%fprime_minus1) + call RegPackAlloc(RF, InData%fprime_c_minus1) + call RegPackAlloc(RF, InData%fprime_m_minus1) + call RegPackAlloc(RF, InData%tau_V) + call RegPackAlloc(RF, InData%tau_V_minus1) + call RegPackAlloc(RF, InData%Cn_v_minus1) + call RegPackAlloc(RF, InData%C_V_minus1) + call RegPackAlloc(RF, InData%Cn_prime_minus1) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine UA_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(UA_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'UA_UnPackDiscState' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%alpha_minus1)) deallocate(OutData%alpha_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%alpha_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%alpha_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%alpha_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%alpha_filt_minus1)) deallocate(OutData%alpha_filt_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%alpha_filt_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%alpha_filt_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%alpha_filt_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%alpha_dot)) deallocate(OutData%alpha_dot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%alpha_dot(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%alpha_dot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%alpha_dot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%alpha_dot_minus1)) deallocate(OutData%alpha_dot_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%alpha_dot_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%alpha_dot_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%alpha_dot_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%q_minus1)) deallocate(OutData%q_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%q_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%q_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%q_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Kalpha_f_minus1)) deallocate(OutData%Kalpha_f_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Kalpha_f_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Kalpha_f_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Kalpha_f_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Kq_f_minus1)) deallocate(OutData%Kq_f_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Kq_f_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Kq_f_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Kq_f_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%q_f_minus1)) deallocate(OutData%q_f_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%q_f_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%q_f_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%q_f_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%X1_minus1)) deallocate(OutData%X1_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%X1_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%X1_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%X1_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%X2_minus1)) deallocate(OutData%X2_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%X2_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%X2_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%X2_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%X3_minus1)) deallocate(OutData%X3_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%X3_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%X3_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%X3_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%X4_minus1)) deallocate(OutData%X4_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%X4_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%X4_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%X4_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Kprime_alpha_minus1)) deallocate(OutData%Kprime_alpha_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Kprime_alpha_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Kprime_alpha_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Kprime_alpha_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Kprime_q_minus1)) deallocate(OutData%Kprime_q_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Kprime_q_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Kprime_q_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Kprime_q_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Kprimeprime_q_minus1)) deallocate(OutData%Kprimeprime_q_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Kprimeprime_q_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Kprimeprime_q_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Kprimeprime_q_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%K3prime_q_minus1)) deallocate(OutData%K3prime_q_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%K3prime_q_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%K3prime_q_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%K3prime_q_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Dp_minus1)) deallocate(OutData%Dp_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Dp_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Dp_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Dp_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cn_pot_minus1)) deallocate(OutData%Cn_pot_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cn_pot_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cn_pot_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cn_pot_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%fprimeprime_minus1)) deallocate(OutData%fprimeprime_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%fprimeprime_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fprimeprime_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%fprimeprime_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%fprimeprime_c_minus1)) deallocate(OutData%fprimeprime_c_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%fprimeprime_c_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fprimeprime_c_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%fprimeprime_c_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%fprimeprime_m_minus1)) deallocate(OutData%fprimeprime_m_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%fprimeprime_m_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fprimeprime_m_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%fprimeprime_m_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Df_minus1)) deallocate(OutData%Df_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Df_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Df_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Df_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Df_c_minus1)) deallocate(OutData%Df_c_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Df_c_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Df_c_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Df_c_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Df_m_minus1)) deallocate(OutData%Df_m_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Df_m_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Df_m_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Df_m_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Dalphaf_minus1)) deallocate(OutData%Dalphaf_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Dalphaf_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Dalphaf_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Dalphaf_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%alphaf_minus1)) deallocate(OutData%alphaf_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%alphaf_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%alphaf_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%alphaf_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%fprime_minus1)) deallocate(OutData%fprime_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%fprime_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fprime_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%fprime_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%fprime_c_minus1)) deallocate(OutData%fprime_c_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%fprime_c_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fprime_c_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%fprime_c_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%fprime_m_minus1)) deallocate(OutData%fprime_m_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%fprime_m_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fprime_m_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%fprime_m_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%tau_V)) deallocate(OutData%tau_V) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%tau_V(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%tau_V.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%tau_V) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%tau_V_minus1)) deallocate(OutData%tau_V_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%tau_V_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%tau_V_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%tau_V_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cn_v_minus1)) deallocate(OutData%Cn_v_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cn_v_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cn_v_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cn_v_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%C_V_minus1)) deallocate(OutData%C_V_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%C_V_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%C_V_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%C_V_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cn_prime_minus1)) deallocate(OutData%Cn_prime_minus1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cn_prime_minus1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cn_prime_minus1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cn_prime_minus1) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%alpha_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%alpha_filt_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%alpha_dot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%alpha_dot_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%q_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Kalpha_f_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Kq_f_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%q_f_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%X1_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%X2_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%X3_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%X4_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Kprime_alpha_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Kprime_q_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Kprimeprime_q_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%K3prime_q_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Dp_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cn_pot_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%fprimeprime_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%fprimeprime_c_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%fprimeprime_m_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Df_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Df_c_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Df_m_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Dalphaf_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%alphaf_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%fprime_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%fprime_c_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%fprime_m_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%tau_V); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%tau_V_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cn_v_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%C_V_minus1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cn_prime_minus1); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine UA_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -2145,22 +1419,21 @@ subroutine UA_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine UA_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(UA_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'UA_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstraintState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstraintState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine UA_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(UA_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'UA_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstraintState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstraintState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine UA_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -2412,292 +1685,71 @@ subroutine UA_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) end if end subroutine -subroutine UA_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(UA_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'UA_PackOtherState' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%FirstPass)) - if (allocated(InData%FirstPass)) then - call RegPackBounds(Buf, 2, lbound(InData%FirstPass, kind=B8Ki), ubound(InData%FirstPass, kind=B8Ki)) - call RegPack(Buf, InData%FirstPass) - end if - call RegPack(Buf, allocated(InData%sigma1)) - if (allocated(InData%sigma1)) then - call RegPackBounds(Buf, 2, lbound(InData%sigma1, kind=B8Ki), ubound(InData%sigma1, kind=B8Ki)) - call RegPack(Buf, InData%sigma1) - end if - call RegPack(Buf, allocated(InData%sigma1c)) - if (allocated(InData%sigma1c)) then - call RegPackBounds(Buf, 2, lbound(InData%sigma1c, kind=B8Ki), ubound(InData%sigma1c, kind=B8Ki)) - call RegPack(Buf, InData%sigma1c) - end if - call RegPack(Buf, allocated(InData%sigma1m)) - if (allocated(InData%sigma1m)) then - call RegPackBounds(Buf, 2, lbound(InData%sigma1m, kind=B8Ki), ubound(InData%sigma1m, kind=B8Ki)) - call RegPack(Buf, InData%sigma1m) - end if - call RegPack(Buf, allocated(InData%sigma3)) - if (allocated(InData%sigma3)) then - call RegPackBounds(Buf, 2, lbound(InData%sigma3, kind=B8Ki), ubound(InData%sigma3, kind=B8Ki)) - call RegPack(Buf, InData%sigma3) - end if - call RegPack(Buf, allocated(InData%n)) - if (allocated(InData%n)) then - call RegPackBounds(Buf, 2, lbound(InData%n, kind=B8Ki), ubound(InData%n, kind=B8Ki)) - call RegPack(Buf, InData%n) - end if + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%FirstPass) + call RegPackAlloc(RF, InData%sigma1) + call RegPackAlloc(RF, InData%sigma1c) + call RegPackAlloc(RF, InData%sigma1m) + call RegPackAlloc(RF, InData%sigma3) + call RegPackAlloc(RF, InData%n) LB(1:1) = lbound(InData%xdot, kind=B8Ki) UB(1:1) = ubound(InData%xdot, kind=B8Ki) do i1 = LB(1), UB(1) - call UA_PackContState(Buf, InData%xdot(i1)) + call UA_PackContState(RF, InData%xdot(i1)) end do LB(1:1) = lbound(InData%xHistory, kind=B8Ki) UB(1:1) = ubound(InData%xHistory, kind=B8Ki) do i1 = LB(1), UB(1) - call UA_PackContState(Buf, InData%xHistory(i1)) + call UA_PackContState(RF, InData%xHistory(i1)) end do - call RegPack(Buf, allocated(InData%t_vortexBegin)) - if (allocated(InData%t_vortexBegin)) then - call RegPackBounds(Buf, 2, lbound(InData%t_vortexBegin, kind=B8Ki), ubound(InData%t_vortexBegin, kind=B8Ki)) - call RegPack(Buf, InData%t_vortexBegin) - end if - call RegPack(Buf, allocated(InData%SignOfOmega)) - if (allocated(InData%SignOfOmega)) then - call RegPackBounds(Buf, 2, lbound(InData%SignOfOmega, kind=B8Ki), ubound(InData%SignOfOmega, kind=B8Ki)) - call RegPack(Buf, InData%SignOfOmega) - end if - call RegPack(Buf, allocated(InData%PositivePressure)) - if (allocated(InData%PositivePressure)) then - call RegPackBounds(Buf, 2, lbound(InData%PositivePressure, kind=B8Ki), ubound(InData%PositivePressure, kind=B8Ki)) - call RegPack(Buf, InData%PositivePressure) - end if - call RegPack(Buf, allocated(InData%vortexOn)) - if (allocated(InData%vortexOn)) then - call RegPackBounds(Buf, 2, lbound(InData%vortexOn, kind=B8Ki), ubound(InData%vortexOn, kind=B8Ki)) - call RegPack(Buf, InData%vortexOn) - end if - call RegPack(Buf, allocated(InData%BelowThreshold)) - if (allocated(InData%BelowThreshold)) then - call RegPackBounds(Buf, 2, lbound(InData%BelowThreshold, kind=B8Ki), ubound(InData%BelowThreshold, kind=B8Ki)) - call RegPack(Buf, InData%BelowThreshold) - end if - call RegPack(Buf, allocated(InData%activeL)) - if (allocated(InData%activeL)) then - call RegPackBounds(Buf, 2, lbound(InData%activeL, kind=B8Ki), ubound(InData%activeL, kind=B8Ki)) - call RegPack(Buf, InData%activeL) - end if - call RegPack(Buf, allocated(InData%activeD)) - if (allocated(InData%activeD)) then - call RegPackBounds(Buf, 2, lbound(InData%activeD, kind=B8Ki), ubound(InData%activeD, kind=B8Ki)) - call RegPack(Buf, InData%activeD) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%t_vortexBegin) + call RegPackAlloc(RF, InData%SignOfOmega) + call RegPackAlloc(RF, InData%PositivePressure) + call RegPackAlloc(RF, InData%vortexOn) + call RegPackAlloc(RF, InData%BelowThreshold) + call RegPackAlloc(RF, InData%activeL) + call RegPackAlloc(RF, InData%activeD) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine UA_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(UA_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'UA_UnPackOtherState' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%FirstPass)) deallocate(OutData%FirstPass) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FirstPass(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FirstPass.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FirstPass) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%sigma1)) deallocate(OutData%sigma1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%sigma1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%sigma1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%sigma1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%sigma1c)) deallocate(OutData%sigma1c) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%sigma1c(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%sigma1c.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%sigma1c) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%sigma1m)) deallocate(OutData%sigma1m) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%sigma1m(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%sigma1m.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%sigma1m) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%sigma3)) deallocate(OutData%sigma3) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%sigma3(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%sigma3.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%sigma3) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%n)) deallocate(OutData%n) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%n(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%n.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%n) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%FirstPass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%sigma1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%sigma1c); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%sigma1m); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%sigma3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%n); if (RegCheckErr(RF, RoutineName)) return LB(1:1) = lbound(OutData%xdot, kind=B8Ki) UB(1:1) = ubound(OutData%xdot, kind=B8Ki) do i1 = LB(1), UB(1) - call UA_UnpackContState(Buf, OutData%xdot(i1)) ! xdot + call UA_UnpackContState(RF, OutData%xdot(i1)) ! xdot end do LB(1:1) = lbound(OutData%xHistory, kind=B8Ki) UB(1:1) = ubound(OutData%xHistory, kind=B8Ki) do i1 = LB(1), UB(1) - call UA_UnpackContState(Buf, OutData%xHistory(i1)) ! xHistory + call UA_UnpackContState(RF, OutData%xHistory(i1)) ! xHistory end do - if (allocated(OutData%t_vortexBegin)) deallocate(OutData%t_vortexBegin) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%t_vortexBegin(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%t_vortexBegin.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%t_vortexBegin) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SignOfOmega)) deallocate(OutData%SignOfOmega) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SignOfOmega(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SignOfOmega.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SignOfOmega) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PositivePressure)) deallocate(OutData%PositivePressure) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PositivePressure(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PositivePressure.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PositivePressure) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%vortexOn)) deallocate(OutData%vortexOn) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%vortexOn(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%vortexOn.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%vortexOn) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BelowThreshold)) deallocate(OutData%BelowThreshold) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BelowThreshold(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BelowThreshold.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BelowThreshold) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%activeL)) deallocate(OutData%activeL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%activeL(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%activeL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%activeL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%activeD)) deallocate(OutData%activeD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%activeD(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%activeD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%activeD) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%t_vortexBegin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SignOfOmega); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PositivePressure); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%vortexOn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BelowThreshold); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%activeL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%activeD); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine UA_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -2815,145 +1867,40 @@ subroutine UA_DestroyMisc(MiscData, ErrStat, ErrMsg) end if end subroutine -subroutine UA_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(UA_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'UA_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%FirstWarn_M) - call RegPack(Buf, InData%FirstWarn_UA) - call RegPack(Buf, InData%FirstWarn_UA_off) - call RegPack(Buf, allocated(InData%TESF)) - if (allocated(InData%TESF)) then - call RegPackBounds(Buf, 2, lbound(InData%TESF, kind=B8Ki), ubound(InData%TESF, kind=B8Ki)) - call RegPack(Buf, InData%TESF) - end if - call RegPack(Buf, allocated(InData%LESF)) - if (allocated(InData%LESF)) then - call RegPackBounds(Buf, 2, lbound(InData%LESF, kind=B8Ki), ubound(InData%LESF, kind=B8Ki)) - call RegPack(Buf, InData%LESF) - end if - call RegPack(Buf, allocated(InData%VRTX)) - if (allocated(InData%VRTX)) then - call RegPackBounds(Buf, 2, lbound(InData%VRTX, kind=B8Ki), ubound(InData%VRTX, kind=B8Ki)) - call RegPack(Buf, InData%VRTX) - end if - call RegPack(Buf, allocated(InData%T_Sh)) - if (allocated(InData%T_Sh)) then - call RegPackBounds(Buf, 2, lbound(InData%T_Sh, kind=B8Ki), ubound(InData%T_Sh, kind=B8Ki)) - call RegPack(Buf, InData%T_Sh) - end if - call RegPack(Buf, allocated(InData%BEDSEP)) - if (allocated(InData%BEDSEP)) then - call RegPackBounds(Buf, 2, lbound(InData%BEDSEP, kind=B8Ki), ubound(InData%BEDSEP, kind=B8Ki)) - call RegPack(Buf, InData%BEDSEP) - end if - call RegPack(Buf, allocated(InData%weight)) - if (allocated(InData%weight)) then - call RegPackBounds(Buf, 2, lbound(InData%weight, kind=B8Ki), ubound(InData%weight, kind=B8Ki)) - call RegPack(Buf, InData%weight) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%FirstWarn_M) + call RegPack(RF, InData%FirstWarn_UA) + call RegPack(RF, InData%FirstWarn_UA_off) + call RegPackAlloc(RF, InData%TESF) + call RegPackAlloc(RF, InData%LESF) + call RegPackAlloc(RF, InData%VRTX) + call RegPackAlloc(RF, InData%T_Sh) + call RegPackAlloc(RF, InData%BEDSEP) + call RegPackAlloc(RF, InData%weight) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine UA_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(UA_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'UA_UnPackMisc' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%FirstWarn_M) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FirstWarn_UA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FirstWarn_UA_off) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TESF)) deallocate(OutData%TESF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TESF(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TESF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TESF) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LESF)) deallocate(OutData%LESF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LESF(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LESF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LESF) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%VRTX)) deallocate(OutData%VRTX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%VRTX(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VRTX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%VRTX) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%T_Sh)) deallocate(OutData%T_Sh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%T_Sh(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%T_Sh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%T_Sh) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BEDSEP)) deallocate(OutData%BEDSEP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BEDSEP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BEDSEP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BEDSEP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%weight)) deallocate(OutData%weight) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%weight(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%weight.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%weight) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%FirstWarn_M); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FirstWarn_UA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FirstWarn_UA_off); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TESF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LESF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%VRTX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%T_Sh); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BEDSEP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%weight); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine UA_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -3038,124 +1985,58 @@ subroutine UA_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine UA_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(UA_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'UA_PackParam' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%dt) - call RegPack(Buf, allocated(InData%c)) - if (allocated(InData%c)) then - call RegPackBounds(Buf, 2, lbound(InData%c, kind=B8Ki), ubound(InData%c, kind=B8Ki)) - call RegPack(Buf, InData%c) - end if - call RegPack(Buf, InData%numBlades) - call RegPack(Buf, InData%nNodesPerBlade) - call RegPack(Buf, InData%UAMod) - call RegPack(Buf, InData%Flookup) - call RegPack(Buf, InData%a_s) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, InData%OutSwtch) - call RegPack(Buf, InData%OutFmt) - call RegPack(Buf, InData%OutSFmt) - call RegPack(Buf, InData%Delim) - call RegPack(Buf, InData%UnOutFile) - call RegPack(Buf, InData%ShedEffect) - call RegPack(Buf, InData%lin_nx) - call RegPack(Buf, allocated(InData%UA_off_forGood)) - if (allocated(InData%UA_off_forGood)) then - call RegPackBounds(Buf, 2, lbound(InData%UA_off_forGood, kind=B8Ki), ubound(InData%UA_off_forGood, kind=B8Ki)) - call RegPack(Buf, InData%UA_off_forGood) - end if - call RegPack(Buf, allocated(InData%lin_xIndx)) - if (allocated(InData%lin_xIndx)) then - call RegPackBounds(Buf, 2, lbound(InData%lin_xIndx, kind=B8Ki), ubound(InData%lin_xIndx, kind=B8Ki)) - call RegPack(Buf, InData%lin_xIndx) - end if - call RegPack(Buf, InData%dx) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%dt) + call RegPackAlloc(RF, InData%c) + call RegPack(RF, InData%numBlades) + call RegPack(RF, InData%nNodesPerBlade) + call RegPack(RF, InData%UAMod) + call RegPack(RF, InData%Flookup) + call RegPack(RF, InData%a_s) + call RegPack(RF, InData%NumOuts) + call RegPack(RF, InData%OutSwtch) + call RegPack(RF, InData%OutFmt) + call RegPack(RF, InData%OutSFmt) + call RegPack(RF, InData%Delim) + call RegPack(RF, InData%UnOutFile) + call RegPack(RF, InData%ShedEffect) + call RegPack(RF, InData%lin_nx) + call RegPackAlloc(RF, InData%UA_off_forGood) + call RegPackAlloc(RF, InData%lin_xIndx) + call RegPack(RF, InData%dx) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine UA_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(UA_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'UA_UnPackParam' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%dt) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%c)) deallocate(OutData%c) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%c(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%c.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%c) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%numBlades) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nNodesPerBlade) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UAMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Flookup) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%a_s) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutSwtch) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutSFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Delim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UnOutFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ShedEffect) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%lin_nx) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%UA_off_forGood)) deallocate(OutData%UA_off_forGood) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%UA_off_forGood(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UA_off_forGood.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%UA_off_forGood) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%lin_xIndx)) deallocate(OutData%lin_xIndx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%lin_xIndx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%lin_xIndx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%lin_xIndx) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%dx) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%dt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%c); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numBlades); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nNodesPerBlade); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UAMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Flookup); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%a_s); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutSwtch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutSFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Delim); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UnOutFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ShedEffect); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%lin_nx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%UA_off_forGood); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%lin_xIndx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dx); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine UA_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -3184,37 +2065,31 @@ subroutine UA_DestroyInput(InputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine UA_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(UA_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'UA_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%U) - call RegPack(Buf, InData%alpha) - call RegPack(Buf, InData%Re) - call RegPack(Buf, InData%UserProp) - call RegPack(Buf, InData%v_ac) - call RegPack(Buf, InData%omega) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%U) + call RegPack(RF, InData%alpha) + call RegPack(RF, InData%Re) + call RegPack(RF, InData%UserProp) + call RegPack(RF, InData%v_ac) + call RegPack(RF, InData%omega) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine UA_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(UA_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'UA_UnPackInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%U) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%alpha) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Re) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UserProp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%v_ac) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%omega) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%U); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%alpha); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Re); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UserProp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%v_ac); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%omega); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine UA_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -3259,56 +2134,34 @@ subroutine UA_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine UA_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(UA_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'UA_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Cn) - call RegPack(Buf, InData%Cc) - call RegPack(Buf, InData%Cm) - call RegPack(Buf, InData%Cl) - call RegPack(Buf, InData%Cd) - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Cn) + call RegPack(RF, InData%Cc) + call RegPack(RF, InData%Cm) + call RegPack(RF, InData%Cl) + call RegPack(RF, InData%Cd) + call RegPackAlloc(RF, InData%WriteOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine UA_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine UA_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(UA_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'UA_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Cn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cd) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Cn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine UA_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/aerodyn14/src/AeroDyn14_Types.f90 b/modules/aerodyn14/src/AeroDyn14_Types.f90 index add62bbcfe..9bf6ced3fa 100644 --- a/modules/aerodyn14/src/AeroDyn14_Types.f90 +++ b/modules/aerodyn14/src/AeroDyn14_Types.f90 @@ -495,31 +495,27 @@ subroutine AD14_DestroyMarker(MarkerData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AD14_PackMarker(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackMarker(RF, Indata) + type(RegFile), intent(inout) :: RF type(Marker), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackMarker' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Position) - call RegPack(Buf, InData%Orientation) - call RegPack(Buf, InData%TranslationVel) - call RegPack(Buf, InData%RotationVel) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Position) + call RegPack(RF, InData%Orientation) + call RegPack(RF, InData%TranslationVel) + call RegPack(RF, InData%RotationVel) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackMarker(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackMarker(RF, OutData) + type(RegFile), intent(inout) :: RF type(Marker), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackMarker' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Position) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Orientation) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TranslationVel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotationVel) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Position); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Orientation); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TranslationVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotationVel); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyAeroConfig(SrcAeroConfigData, DstAeroConfigData, CtrlCode, ErrStat, ErrMsg) @@ -611,66 +607,63 @@ subroutine AD14_DestroyAeroConfig(AeroConfigData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD14_PackAeroConfig(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackAeroConfig(RF, Indata) + type(RegFile), intent(inout) :: RF type(AeroConfig), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackAeroConfig' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Blade)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%Blade)) if (allocated(InData%Blade)) then - call RegPackBounds(Buf, 1, lbound(InData%Blade, kind=B8Ki), ubound(InData%Blade, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Blade, kind=B8Ki), ubound(InData%Blade, kind=B8Ki)) LB(1:1) = lbound(InData%Blade, kind=B8Ki) UB(1:1) = ubound(InData%Blade, kind=B8Ki) do i1 = LB(1), UB(1) - call AD14_PackMarker(Buf, InData%Blade(i1)) + call AD14_PackMarker(RF, InData%Blade(i1)) end do end if - call AD14_PackMarker(Buf, InData%Hub) - call AD14_PackMarker(Buf, InData%RotorFurl) - call AD14_PackMarker(Buf, InData%Nacelle) - call AD14_PackMarker(Buf, InData%TailFin) - call AD14_PackMarker(Buf, InData%Tower) - call AD14_PackMarker(Buf, InData%SubStructure) - call AD14_PackMarker(Buf, InData%Foundation) - call RegPack(Buf, InData%BladeLength) - if (RegCheckErr(Buf, RoutineName)) return + call AD14_PackMarker(RF, InData%Hub) + call AD14_PackMarker(RF, InData%RotorFurl) + call AD14_PackMarker(RF, InData%Nacelle) + call AD14_PackMarker(RF, InData%TailFin) + call AD14_PackMarker(RF, InData%Tower) + call AD14_PackMarker(RF, InData%SubStructure) + call AD14_PackMarker(RF, InData%Foundation) + call RegPack(RF, InData%BladeLength) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackAeroConfig(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackAeroConfig(RF, OutData) + type(RegFile), intent(inout) :: RF type(AeroConfig), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackAeroConfig' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%Blade)) deallocate(OutData%Blade) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Blade(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Blade.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Blade.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD14_UnpackMarker(Buf, OutData%Blade(i1)) ! Blade + call AD14_UnpackMarker(RF, OutData%Blade(i1)) ! Blade end do end if - call AD14_UnpackMarker(Buf, OutData%Hub) ! Hub - call AD14_UnpackMarker(Buf, OutData%RotorFurl) ! RotorFurl - call AD14_UnpackMarker(Buf, OutData%Nacelle) ! Nacelle - call AD14_UnpackMarker(Buf, OutData%TailFin) ! TailFin - call AD14_UnpackMarker(Buf, OutData%Tower) ! Tower - call AD14_UnpackMarker(Buf, OutData%SubStructure) ! SubStructure - call AD14_UnpackMarker(Buf, OutData%Foundation) ! Foundation - call RegUnpack(Buf, OutData%BladeLength) - if (RegCheckErr(Buf, RoutineName)) return + call AD14_UnpackMarker(RF, OutData%Hub) ! Hub + call AD14_UnpackMarker(RF, OutData%RotorFurl) ! RotorFurl + call AD14_UnpackMarker(RF, OutData%Nacelle) ! Nacelle + call AD14_UnpackMarker(RF, OutData%TailFin) ! TailFin + call AD14_UnpackMarker(RF, OutData%Tower) ! Tower + call AD14_UnpackMarker(RF, OutData%SubStructure) ! SubStructure + call AD14_UnpackMarker(RF, OutData%Foundation) ! Foundation + call RegUnpack(RF, OutData%BladeLength); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyAirFoil(SrcAirFoilData, DstAirFoilData, CtrlCode, ErrStat, ErrMsg) @@ -757,104 +750,34 @@ subroutine AD14_DestroyAirFoil(AirFoilData, ErrStat, ErrMsg) end if end subroutine -subroutine AD14_PackAirFoil(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackAirFoil(RF, Indata) + type(RegFile), intent(inout) :: RF type(AirFoil), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackAirFoil' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%AL)) - if (allocated(InData%AL)) then - call RegPackBounds(Buf, 2, lbound(InData%AL, kind=B8Ki), ubound(InData%AL, kind=B8Ki)) - call RegPack(Buf, InData%AL) - end if - call RegPack(Buf, allocated(InData%CD)) - if (allocated(InData%CD)) then - call RegPackBounds(Buf, 3, lbound(InData%CD, kind=B8Ki), ubound(InData%CD, kind=B8Ki)) - call RegPack(Buf, InData%CD) - end if - call RegPack(Buf, allocated(InData%CL)) - if (allocated(InData%CL)) then - call RegPackBounds(Buf, 3, lbound(InData%CL, kind=B8Ki), ubound(InData%CL, kind=B8Ki)) - call RegPack(Buf, InData%CL) - end if - call RegPack(Buf, allocated(InData%CM)) - if (allocated(InData%CM)) then - call RegPackBounds(Buf, 3, lbound(InData%CM, kind=B8Ki), ubound(InData%CM, kind=B8Ki)) - call RegPack(Buf, InData%CM) - end if - call RegPack(Buf, InData%PMC) - call RegPack(Buf, InData%MulTabLoc) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%AL) + call RegPackAlloc(RF, InData%CD) + call RegPackAlloc(RF, InData%CL) + call RegPackAlloc(RF, InData%CM) + call RegPack(RF, InData%PMC) + call RegPack(RF, InData%MulTabLoc) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackAirFoil(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackAirFoil(RF, OutData) + type(RegFile), intent(inout) :: RF type(AirFoil), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackAirFoil' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%AL)) deallocate(OutData%AL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AL(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CD)) deallocate(OutData%CD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CD(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CD) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CL)) deallocate(OutData%CL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CL(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CM)) deallocate(OutData%CM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CM(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CM) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%PMC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MulTabLoc) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%AL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PMC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MulTabLoc); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyAirFoilParms(SrcAirFoilParmsData, DstAirFoilParmsData, CtrlCode, ErrStat, ErrMsg) @@ -957,126 +880,38 @@ subroutine AD14_DestroyAirFoilParms(AirFoilParmsData, ErrStat, ErrMsg) end if end subroutine -subroutine AD14_PackAirFoilParms(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackAirFoilParms(RF, Indata) + type(RegFile), intent(inout) :: RF type(AirFoilParms), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackAirFoilParms' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%MaxTable) - call RegPack(Buf, allocated(InData%NTables)) - if (allocated(InData%NTables)) then - call RegPackBounds(Buf, 1, lbound(InData%NTables, kind=B8Ki), ubound(InData%NTables, kind=B8Ki)) - call RegPack(Buf, InData%NTables) - end if - call RegPack(Buf, allocated(InData%NLift)) - if (allocated(InData%NLift)) then - call RegPackBounds(Buf, 1, lbound(InData%NLift, kind=B8Ki), ubound(InData%NLift, kind=B8Ki)) - call RegPack(Buf, InData%NLift) - end if - call RegPack(Buf, InData%NumCL) - call RegPack(Buf, InData%NumFoil) - call RegPack(Buf, allocated(InData%NFoil)) - if (allocated(InData%NFoil)) then - call RegPackBounds(Buf, 1, lbound(InData%NFoil, kind=B8Ki), ubound(InData%NFoil, kind=B8Ki)) - call RegPack(Buf, InData%NFoil) - end if - call RegPack(Buf, allocated(InData%MulTabMet)) - if (allocated(InData%MulTabMet)) then - call RegPackBounds(Buf, 2, lbound(InData%MulTabMet, kind=B8Ki), ubound(InData%MulTabMet, kind=B8Ki)) - call RegPack(Buf, InData%MulTabMet) - end if - call RegPack(Buf, allocated(InData%FoilNm)) - if (allocated(InData%FoilNm)) then - call RegPackBounds(Buf, 1, lbound(InData%FoilNm, kind=B8Ki), ubound(InData%FoilNm, kind=B8Ki)) - call RegPack(Buf, InData%FoilNm) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%MaxTable) + call RegPackAlloc(RF, InData%NTables) + call RegPackAlloc(RF, InData%NLift) + call RegPack(RF, InData%NumCL) + call RegPack(RF, InData%NumFoil) + call RegPackAlloc(RF, InData%NFoil) + call RegPackAlloc(RF, InData%MulTabMet) + call RegPackAlloc(RF, InData%FoilNm) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackAirFoilParms(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackAirFoilParms(RF, OutData) + type(RegFile), intent(inout) :: RF type(AirFoilParms), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackAirFoilParms' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%MaxTable) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%NTables)) deallocate(OutData%NTables) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NTables(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NTables.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NTables) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%NLift)) deallocate(OutData%NLift) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NLift(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NLift.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NLift) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NumCL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumFoil) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%NFoil)) deallocate(OutData%NFoil) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NFoil(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NFoil.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NFoil) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MulTabMet)) deallocate(OutData%MulTabMet) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MulTabMet(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MulTabMet.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MulTabMet) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FoilNm)) deallocate(OutData%FoilNm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FoilNm(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FoilNm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FoilNm) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%MaxTable); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NTables); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NLift); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumCL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumFoil); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NFoil); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MulTabMet); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FoilNm); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyBeddoes(SrcBeddoesData, DstBeddoesData, CtrlCode, ErrStat, ErrMsg) @@ -1889,1054 +1724,157 @@ subroutine AD14_DestroyBeddoes(BeddoesData, ErrStat, ErrMsg) if (allocated(BeddoesData%XN)) then deallocate(BeddoesData%XN) end if - if (allocated(BeddoesData%YN)) then - deallocate(BeddoesData%YN) - end if -end subroutine - -subroutine AD14_PackBeddoes(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf - type(Beddoes), intent(in) :: InData - character(*), parameter :: RoutineName = 'AD14_PackBeddoes' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%ADOT)) - if (allocated(InData%ADOT)) then - call RegPackBounds(Buf, 2, lbound(InData%ADOT, kind=B8Ki), ubound(InData%ADOT, kind=B8Ki)) - call RegPack(Buf, InData%ADOT) - end if - call RegPack(Buf, allocated(InData%ADOT1)) - if (allocated(InData%ADOT1)) then - call RegPackBounds(Buf, 2, lbound(InData%ADOT1, kind=B8Ki), ubound(InData%ADOT1, kind=B8Ki)) - call RegPack(Buf, InData%ADOT1) - end if - call RegPack(Buf, allocated(InData%AFE)) - if (allocated(InData%AFE)) then - call RegPackBounds(Buf, 2, lbound(InData%AFE, kind=B8Ki), ubound(InData%AFE, kind=B8Ki)) - call RegPack(Buf, InData%AFE) - end if - call RegPack(Buf, allocated(InData%AFE1)) - if (allocated(InData%AFE1)) then - call RegPackBounds(Buf, 2, lbound(InData%AFE1, kind=B8Ki), ubound(InData%AFE1, kind=B8Ki)) - call RegPack(Buf, InData%AFE1) - end if - call RegPack(Buf, InData%AN) - call RegPack(Buf, allocated(InData%ANE)) - if (allocated(InData%ANE)) then - call RegPackBounds(Buf, 2, lbound(InData%ANE, kind=B8Ki), ubound(InData%ANE, kind=B8Ki)) - call RegPack(Buf, InData%ANE) - end if - call RegPack(Buf, allocated(InData%ANE1)) - if (allocated(InData%ANE1)) then - call RegPackBounds(Buf, 2, lbound(InData%ANE1, kind=B8Ki), ubound(InData%ANE1, kind=B8Ki)) - call RegPack(Buf, InData%ANE1) - end if - call RegPack(Buf, allocated(InData%AOD)) - if (allocated(InData%AOD)) then - call RegPackBounds(Buf, 2, lbound(InData%AOD, kind=B8Ki), ubound(InData%AOD, kind=B8Ki)) - call RegPack(Buf, InData%AOD) - end if - call RegPack(Buf, allocated(InData%AOL)) - if (allocated(InData%AOL)) then - call RegPackBounds(Buf, 2, lbound(InData%AOL, kind=B8Ki), ubound(InData%AOL, kind=B8Ki)) - call RegPack(Buf, InData%AOL) - end if - call RegPack(Buf, allocated(InData%BEDSEP)) - if (allocated(InData%BEDSEP)) then - call RegPackBounds(Buf, 2, lbound(InData%BEDSEP, kind=B8Ki), ubound(InData%BEDSEP, kind=B8Ki)) - call RegPack(Buf, InData%BEDSEP) - end if - call RegPack(Buf, allocated(InData%OLDSEP)) - if (allocated(InData%OLDSEP)) then - call RegPackBounds(Buf, 2, lbound(InData%OLDSEP, kind=B8Ki), ubound(InData%OLDSEP, kind=B8Ki)) - call RegPack(Buf, InData%OLDSEP) - end if - call RegPack(Buf, InData%CC) - call RegPack(Buf, allocated(InData%CDO)) - if (allocated(InData%CDO)) then - call RegPackBounds(Buf, 2, lbound(InData%CDO, kind=B8Ki), ubound(InData%CDO, kind=B8Ki)) - call RegPack(Buf, InData%CDO) - end if - call RegPack(Buf, InData%CMI) - call RegPack(Buf, InData%CMQ) - call RegPack(Buf, InData%CN) - call RegPack(Buf, allocated(InData%CNA)) - if (allocated(InData%CNA)) then - call RegPackBounds(Buf, 2, lbound(InData%CNA, kind=B8Ki), ubound(InData%CNA, kind=B8Ki)) - call RegPack(Buf, InData%CNA) - end if - call RegPack(Buf, InData%CNCP) - call RegPack(Buf, InData%CNIQ) - call RegPack(Buf, allocated(InData%CNP)) - if (allocated(InData%CNP)) then - call RegPackBounds(Buf, 2, lbound(InData%CNP, kind=B8Ki), ubound(InData%CNP, kind=B8Ki)) - call RegPack(Buf, InData%CNP) - end if - call RegPack(Buf, allocated(InData%CNP1)) - if (allocated(InData%CNP1)) then - call RegPackBounds(Buf, 2, lbound(InData%CNP1, kind=B8Ki), ubound(InData%CNP1, kind=B8Ki)) - call RegPack(Buf, InData%CNP1) - end if - call RegPack(Buf, allocated(InData%CNPD)) - if (allocated(InData%CNPD)) then - call RegPackBounds(Buf, 2, lbound(InData%CNPD, kind=B8Ki), ubound(InData%CNPD, kind=B8Ki)) - call RegPack(Buf, InData%CNPD) - end if - call RegPack(Buf, allocated(InData%CNPD1)) - if (allocated(InData%CNPD1)) then - call RegPackBounds(Buf, 2, lbound(InData%CNPD1, kind=B8Ki), ubound(InData%CNPD1, kind=B8Ki)) - call RegPack(Buf, InData%CNPD1) - end if - call RegPack(Buf, allocated(InData%CNPOT)) - if (allocated(InData%CNPOT)) then - call RegPackBounds(Buf, 2, lbound(InData%CNPOT, kind=B8Ki), ubound(InData%CNPOT, kind=B8Ki)) - call RegPack(Buf, InData%CNPOT) - end if - call RegPack(Buf, allocated(InData%CNPOT1)) - if (allocated(InData%CNPOT1)) then - call RegPackBounds(Buf, 2, lbound(InData%CNPOT1, kind=B8Ki), ubound(InData%CNPOT1, kind=B8Ki)) - call RegPack(Buf, InData%CNPOT1) - end if - call RegPack(Buf, allocated(InData%CNS)) - if (allocated(InData%CNS)) then - call RegPackBounds(Buf, 2, lbound(InData%CNS, kind=B8Ki), ubound(InData%CNS, kind=B8Ki)) - call RegPack(Buf, InData%CNS) - end if - call RegPack(Buf, allocated(InData%CNSL)) - if (allocated(InData%CNSL)) then - call RegPackBounds(Buf, 2, lbound(InData%CNSL, kind=B8Ki), ubound(InData%CNSL, kind=B8Ki)) - call RegPack(Buf, InData%CNSL) - end if - call RegPack(Buf, allocated(InData%CNV)) - if (allocated(InData%CNV)) then - call RegPackBounds(Buf, 2, lbound(InData%CNV, kind=B8Ki), ubound(InData%CNV, kind=B8Ki)) - call RegPack(Buf, InData%CNV) - end if - call RegPack(Buf, allocated(InData%CVN)) - if (allocated(InData%CVN)) then - call RegPackBounds(Buf, 2, lbound(InData%CVN, kind=B8Ki), ubound(InData%CVN, kind=B8Ki)) - call RegPack(Buf, InData%CVN) - end if - call RegPack(Buf, allocated(InData%CVN1)) - if (allocated(InData%CVN1)) then - call RegPackBounds(Buf, 2, lbound(InData%CVN1, kind=B8Ki), ubound(InData%CVN1, kind=B8Ki)) - call RegPack(Buf, InData%CVN1) - end if - call RegPack(Buf, allocated(InData%DF)) - if (allocated(InData%DF)) then - call RegPackBounds(Buf, 2, lbound(InData%DF, kind=B8Ki), ubound(InData%DF, kind=B8Ki)) - call RegPack(Buf, InData%DF) - end if - call RegPack(Buf, allocated(InData%DFAFE)) - if (allocated(InData%DFAFE)) then - call RegPackBounds(Buf, 2, lbound(InData%DFAFE, kind=B8Ki), ubound(InData%DFAFE, kind=B8Ki)) - call RegPack(Buf, InData%DFAFE) - end if - call RegPack(Buf, allocated(InData%DFAFE1)) - if (allocated(InData%DFAFE1)) then - call RegPackBounds(Buf, 2, lbound(InData%DFAFE1, kind=B8Ki), ubound(InData%DFAFE1, kind=B8Ki)) - call RegPack(Buf, InData%DFAFE1) - end if - call RegPack(Buf, allocated(InData%DFC)) - if (allocated(InData%DFC)) then - call RegPackBounds(Buf, 2, lbound(InData%DFC, kind=B8Ki), ubound(InData%DFC, kind=B8Ki)) - call RegPack(Buf, InData%DFC) - end if - call RegPack(Buf, allocated(InData%DN)) - if (allocated(InData%DN)) then - call RegPackBounds(Buf, 2, lbound(InData%DN, kind=B8Ki), ubound(InData%DN, kind=B8Ki)) - call RegPack(Buf, InData%DN) - end if - call RegPack(Buf, allocated(InData%DPP)) - if (allocated(InData%DPP)) then - call RegPackBounds(Buf, 2, lbound(InData%DPP, kind=B8Ki), ubound(InData%DPP, kind=B8Ki)) - call RegPack(Buf, InData%DPP) - end if - call RegPack(Buf, allocated(InData%DQ)) - if (allocated(InData%DQ)) then - call RegPackBounds(Buf, 2, lbound(InData%DQ, kind=B8Ki), ubound(InData%DQ, kind=B8Ki)) - call RegPack(Buf, InData%DQ) - end if - call RegPack(Buf, allocated(InData%DQP)) - if (allocated(InData%DQP)) then - call RegPackBounds(Buf, 2, lbound(InData%DQP, kind=B8Ki), ubound(InData%DQP, kind=B8Ki)) - call RegPack(Buf, InData%DQP) - end if - call RegPack(Buf, allocated(InData%DQP1)) - if (allocated(InData%DQP1)) then - call RegPackBounds(Buf, 2, lbound(InData%DQP1, kind=B8Ki), ubound(InData%DQP1, kind=B8Ki)) - call RegPack(Buf, InData%DQP1) - end if - call RegPack(Buf, InData%DS) - call RegPack(Buf, InData%FK) - call RegPack(Buf, InData%FP) - call RegPack(Buf, InData%FPC) - call RegPack(Buf, allocated(InData%FSP)) - if (allocated(InData%FSP)) then - call RegPackBounds(Buf, 2, lbound(InData%FSP, kind=B8Ki), ubound(InData%FSP, kind=B8Ki)) - call RegPack(Buf, InData%FSP) - end if - call RegPack(Buf, allocated(InData%FSP1)) - if (allocated(InData%FSP1)) then - call RegPackBounds(Buf, 2, lbound(InData%FSP1, kind=B8Ki), ubound(InData%FSP1, kind=B8Ki)) - call RegPack(Buf, InData%FSP1) - end if - call RegPack(Buf, allocated(InData%FSPC)) - if (allocated(InData%FSPC)) then - call RegPackBounds(Buf, 2, lbound(InData%FSPC, kind=B8Ki), ubound(InData%FSPC, kind=B8Ki)) - call RegPack(Buf, InData%FSPC) - end if - call RegPack(Buf, allocated(InData%FSPC1)) - if (allocated(InData%FSPC1)) then - call RegPackBounds(Buf, 2, lbound(InData%FSPC1, kind=B8Ki), ubound(InData%FSPC1, kind=B8Ki)) - call RegPack(Buf, InData%FSPC1) - end if - call RegPack(Buf, allocated(InData%FTB)) - if (allocated(InData%FTB)) then - call RegPackBounds(Buf, 3, lbound(InData%FTB, kind=B8Ki), ubound(InData%FTB, kind=B8Ki)) - call RegPack(Buf, InData%FTB) - end if - call RegPack(Buf, allocated(InData%FTBC)) - if (allocated(InData%FTBC)) then - call RegPackBounds(Buf, 3, lbound(InData%FTBC, kind=B8Ki), ubound(InData%FTBC, kind=B8Ki)) - call RegPack(Buf, InData%FTBC) - end if - call RegPack(Buf, allocated(InData%OLDCNV)) - if (allocated(InData%OLDCNV)) then - call RegPackBounds(Buf, 2, lbound(InData%OLDCNV, kind=B8Ki), ubound(InData%OLDCNV, kind=B8Ki)) - call RegPack(Buf, InData%OLDCNV) - end if - call RegPack(Buf, allocated(InData%OLDDF)) - if (allocated(InData%OLDDF)) then - call RegPackBounds(Buf, 2, lbound(InData%OLDDF, kind=B8Ki), ubound(InData%OLDDF, kind=B8Ki)) - call RegPack(Buf, InData%OLDDF) - end if - call RegPack(Buf, allocated(InData%OLDDFC)) - if (allocated(InData%OLDDFC)) then - call RegPackBounds(Buf, 2, lbound(InData%OLDDFC, kind=B8Ki), ubound(InData%OLDDFC, kind=B8Ki)) - call RegPack(Buf, InData%OLDDFC) - end if - call RegPack(Buf, allocated(InData%OLDDN)) - if (allocated(InData%OLDDN)) then - call RegPackBounds(Buf, 2, lbound(InData%OLDDN, kind=B8Ki), ubound(InData%OLDDN, kind=B8Ki)) - call RegPack(Buf, InData%OLDDN) - end if - call RegPack(Buf, allocated(InData%OLDDPP)) - if (allocated(InData%OLDDPP)) then - call RegPackBounds(Buf, 2, lbound(InData%OLDDPP, kind=B8Ki), ubound(InData%OLDDPP, kind=B8Ki)) - call RegPack(Buf, InData%OLDDPP) - end if - call RegPack(Buf, allocated(InData%OLDDQ)) - if (allocated(InData%OLDDQ)) then - call RegPackBounds(Buf, 2, lbound(InData%OLDDQ, kind=B8Ki), ubound(InData%OLDDQ, kind=B8Ki)) - call RegPack(Buf, InData%OLDDQ) - end if - call RegPack(Buf, allocated(InData%OLDTAU)) - if (allocated(InData%OLDTAU)) then - call RegPackBounds(Buf, 2, lbound(InData%OLDTAU, kind=B8Ki), ubound(InData%OLDTAU, kind=B8Ki)) - call RegPack(Buf, InData%OLDTAU) - end if - call RegPack(Buf, allocated(InData%OLDXN)) - if (allocated(InData%OLDXN)) then - call RegPackBounds(Buf, 2, lbound(InData%OLDXN, kind=B8Ki), ubound(InData%OLDXN, kind=B8Ki)) - call RegPack(Buf, InData%OLDXN) - end if - call RegPack(Buf, allocated(InData%OLDYN)) - if (allocated(InData%OLDYN)) then - call RegPackBounds(Buf, 2, lbound(InData%OLDYN, kind=B8Ki), ubound(InData%OLDYN, kind=B8Ki)) - call RegPack(Buf, InData%OLDYN) - end if - call RegPack(Buf, allocated(InData%QX)) - if (allocated(InData%QX)) then - call RegPackBounds(Buf, 2, lbound(InData%QX, kind=B8Ki), ubound(InData%QX, kind=B8Ki)) - call RegPack(Buf, InData%QX) - end if - call RegPack(Buf, allocated(InData%QX1)) - if (allocated(InData%QX1)) then - call RegPackBounds(Buf, 2, lbound(InData%QX1, kind=B8Ki), ubound(InData%QX1, kind=B8Ki)) - call RegPack(Buf, InData%QX1) - end if - call RegPack(Buf, allocated(InData%TAU)) - if (allocated(InData%TAU)) then - call RegPackBounds(Buf, 2, lbound(InData%TAU, kind=B8Ki), ubound(InData%TAU, kind=B8Ki)) - call RegPack(Buf, InData%TAU) - end if - call RegPack(Buf, allocated(InData%XN)) - if (allocated(InData%XN)) then - call RegPackBounds(Buf, 2, lbound(InData%XN, kind=B8Ki), ubound(InData%XN, kind=B8Ki)) - call RegPack(Buf, InData%XN) - end if - call RegPack(Buf, allocated(InData%YN)) - if (allocated(InData%YN)) then - call RegPackBounds(Buf, 2, lbound(InData%YN, kind=B8Ki), ubound(InData%YN, kind=B8Ki)) - call RegPack(Buf, InData%YN) - end if - call RegPack(Buf, InData%SHIFT) - call RegPack(Buf, InData%VOR) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine AD14_UnPackBeddoes(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf - type(Beddoes), intent(inout) :: OutData - character(*), parameter :: RoutineName = 'AD14_UnPackBeddoes' - integer(B8Ki) :: LB(3), UB(3) - integer(IntKi) :: stat - logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%ADOT)) deallocate(OutData%ADOT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ADOT(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ADOT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ADOT) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ADOT1)) deallocate(OutData%ADOT1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ADOT1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ADOT1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ADOT1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AFE)) deallocate(OutData%AFE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AFE(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AFE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AFE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AFE1)) deallocate(OutData%AFE1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AFE1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AFE1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AFE1) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%AN) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%ANE)) deallocate(OutData%ANE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ANE(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ANE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ANE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ANE1)) deallocate(OutData%ANE1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ANE1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ANE1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ANE1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AOD)) deallocate(OutData%AOD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AOD(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AOD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AOD) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AOL)) deallocate(OutData%AOL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AOL(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AOL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AOL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BEDSEP)) deallocate(OutData%BEDSEP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BEDSEP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BEDSEP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BEDSEP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OLDSEP)) deallocate(OutData%OLDSEP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OLDSEP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OLDSEP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OLDSEP) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%CC) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%CDO)) deallocate(OutData%CDO) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CDO(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CDO.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CDO) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%CMI) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CMQ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CN) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%CNA)) deallocate(OutData%CNA) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CNA(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CNA.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CNA) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%CNCP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CNIQ) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%CNP)) deallocate(OutData%CNP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CNP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CNP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CNP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CNP1)) deallocate(OutData%CNP1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CNP1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CNP1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CNP1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CNPD)) deallocate(OutData%CNPD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CNPD(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CNPD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CNPD) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CNPD1)) deallocate(OutData%CNPD1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CNPD1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CNPD1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CNPD1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CNPOT)) deallocate(OutData%CNPOT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CNPOT(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CNPOT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CNPOT) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CNPOT1)) deallocate(OutData%CNPOT1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CNPOT1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CNPOT1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CNPOT1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CNS)) deallocate(OutData%CNS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CNS(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CNS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CNS) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CNSL)) deallocate(OutData%CNSL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CNSL(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CNSL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CNSL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CNV)) deallocate(OutData%CNV) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CNV(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CNV.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CNV) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CVN)) deallocate(OutData%CVN) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CVN(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CVN.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CVN) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CVN1)) deallocate(OutData%CVN1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CVN1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CVN1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CVN1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DF)) deallocate(OutData%DF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DF(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DF) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DFAFE)) deallocate(OutData%DFAFE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DFAFE(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DFAFE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DFAFE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DFAFE1)) deallocate(OutData%DFAFE1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DFAFE1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DFAFE1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DFAFE1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DFC)) deallocate(OutData%DFC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DFC(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DFC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DFC) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DN)) deallocate(OutData%DN) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DN(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DN.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DN) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DPP)) deallocate(OutData%DPP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DPP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DPP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DPP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DQ)) deallocate(OutData%DQ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DQ(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DQ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DQ) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DQP)) deallocate(OutData%DQP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DQP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DQP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DQP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DQP1)) deallocate(OutData%DQP1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DQP1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DQP1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DQP1) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%DS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FPC) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%FSP)) deallocate(OutData%FSP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FSP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FSP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FSP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FSP1)) deallocate(OutData%FSP1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FSP1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FSP1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FSP1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FSPC)) deallocate(OutData%FSPC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FSPC(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FSPC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FSPC) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FSPC1)) deallocate(OutData%FSPC1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FSPC1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FSPC1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FSPC1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FTB)) deallocate(OutData%FTB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FTB(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FTB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FTB) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FTBC)) deallocate(OutData%FTBC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FTBC(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FTBC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FTBC) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OLDCNV)) deallocate(OutData%OLDCNV) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OLDCNV(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OLDCNV.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OLDCNV) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OLDDF)) deallocate(OutData%OLDDF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OLDDF(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OLDDF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OLDDF) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OLDDFC)) deallocate(OutData%OLDDFC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OLDDFC(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OLDDFC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OLDDFC) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OLDDN)) deallocate(OutData%OLDDN) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OLDDN(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OLDDN.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OLDDN) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OLDDPP)) deallocate(OutData%OLDDPP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OLDDPP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OLDDPP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OLDDPP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OLDDQ)) deallocate(OutData%OLDDQ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OLDDQ(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OLDDQ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OLDDQ) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OLDTAU)) deallocate(OutData%OLDTAU) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OLDTAU(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OLDTAU.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OLDTAU) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OLDXN)) deallocate(OutData%OLDXN) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OLDXN(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OLDXN.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OLDXN) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OLDYN)) deallocate(OutData%OLDYN) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OLDYN(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OLDYN.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OLDYN) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%QX)) deallocate(OutData%QX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%QX(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%QX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%QX) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%QX1)) deallocate(OutData%QX1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%QX1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%QX1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%QX1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TAU)) deallocate(OutData%TAU) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TAU(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TAU.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TAU) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%XN)) deallocate(OutData%XN) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%XN(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%XN.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%XN) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%YN)) deallocate(OutData%YN) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%YN(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%YN.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%YN) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%SHIFT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VOR) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(BeddoesData%YN)) then + deallocate(BeddoesData%YN) + end if +end subroutine + +subroutine AD14_PackBeddoes(RF, Indata) + type(RegFile), intent(inout) :: RF + type(Beddoes), intent(in) :: InData + character(*), parameter :: RoutineName = 'AD14_PackBeddoes' + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%ADOT) + call RegPackAlloc(RF, InData%ADOT1) + call RegPackAlloc(RF, InData%AFE) + call RegPackAlloc(RF, InData%AFE1) + call RegPack(RF, InData%AN) + call RegPackAlloc(RF, InData%ANE) + call RegPackAlloc(RF, InData%ANE1) + call RegPackAlloc(RF, InData%AOD) + call RegPackAlloc(RF, InData%AOL) + call RegPackAlloc(RF, InData%BEDSEP) + call RegPackAlloc(RF, InData%OLDSEP) + call RegPack(RF, InData%CC) + call RegPackAlloc(RF, InData%CDO) + call RegPack(RF, InData%CMI) + call RegPack(RF, InData%CMQ) + call RegPack(RF, InData%CN) + call RegPackAlloc(RF, InData%CNA) + call RegPack(RF, InData%CNCP) + call RegPack(RF, InData%CNIQ) + call RegPackAlloc(RF, InData%CNP) + call RegPackAlloc(RF, InData%CNP1) + call RegPackAlloc(RF, InData%CNPD) + call RegPackAlloc(RF, InData%CNPD1) + call RegPackAlloc(RF, InData%CNPOT) + call RegPackAlloc(RF, InData%CNPOT1) + call RegPackAlloc(RF, InData%CNS) + call RegPackAlloc(RF, InData%CNSL) + call RegPackAlloc(RF, InData%CNV) + call RegPackAlloc(RF, InData%CVN) + call RegPackAlloc(RF, InData%CVN1) + call RegPackAlloc(RF, InData%DF) + call RegPackAlloc(RF, InData%DFAFE) + call RegPackAlloc(RF, InData%DFAFE1) + call RegPackAlloc(RF, InData%DFC) + call RegPackAlloc(RF, InData%DN) + call RegPackAlloc(RF, InData%DPP) + call RegPackAlloc(RF, InData%DQ) + call RegPackAlloc(RF, InData%DQP) + call RegPackAlloc(RF, InData%DQP1) + call RegPack(RF, InData%DS) + call RegPack(RF, InData%FK) + call RegPack(RF, InData%FP) + call RegPack(RF, InData%FPC) + call RegPackAlloc(RF, InData%FSP) + call RegPackAlloc(RF, InData%FSP1) + call RegPackAlloc(RF, InData%FSPC) + call RegPackAlloc(RF, InData%FSPC1) + call RegPackAlloc(RF, InData%FTB) + call RegPackAlloc(RF, InData%FTBC) + call RegPackAlloc(RF, InData%OLDCNV) + call RegPackAlloc(RF, InData%OLDDF) + call RegPackAlloc(RF, InData%OLDDFC) + call RegPackAlloc(RF, InData%OLDDN) + call RegPackAlloc(RF, InData%OLDDPP) + call RegPackAlloc(RF, InData%OLDDQ) + call RegPackAlloc(RF, InData%OLDTAU) + call RegPackAlloc(RF, InData%OLDXN) + call RegPackAlloc(RF, InData%OLDYN) + call RegPackAlloc(RF, InData%QX) + call RegPackAlloc(RF, InData%QX1) + call RegPackAlloc(RF, InData%TAU) + call RegPackAlloc(RF, InData%XN) + call RegPackAlloc(RF, InData%YN) + call RegPack(RF, InData%SHIFT) + call RegPack(RF, InData%VOR) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine AD14_UnPackBeddoes(RF, OutData) + type(RegFile), intent(inout) :: RF + type(Beddoes), intent(inout) :: OutData + character(*), parameter :: RoutineName = 'AD14_UnPackBeddoes' + integer(B8Ki) :: LB(3), UB(3) + integer(IntKi) :: stat + logical :: IsAllocAssoc + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%ADOT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ADOT1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AFE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AFE1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ANE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ANE1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AOD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AOL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BEDSEP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OLDSEP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CDO); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CMI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CMQ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CNA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CNCP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CNIQ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CNP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CNP1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CNPD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CNPD1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CNPOT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CNPOT1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CNS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CNSL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CNV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CVN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CVN1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DFAFE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DFAFE1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DFC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DPP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DQ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DQP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DQP1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FPC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FSP1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FSPC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FSPC1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FTB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FTBC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OLDCNV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OLDDF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OLDDFC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OLDDN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OLDDPP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OLDDQ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OLDTAU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OLDXN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OLDYN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%QX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%QX1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TAU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%XN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%YN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SHIFT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VOR); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyBeddoesParms(SrcBeddoesParmsData, DstBeddoesParmsData, CtrlCode, ErrStat, ErrMsg) @@ -2964,34 +1902,29 @@ subroutine AD14_DestroyBeddoesParms(BeddoesParmsData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AD14_PackBeddoesParms(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackBeddoesParms(RF, Indata) + type(RegFile), intent(inout) :: RF type(BeddoesParms), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackBeddoesParms' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%AS) - call RegPack(Buf, InData%TF) - call RegPack(Buf, InData%TP) - call RegPack(Buf, InData%TV) - call RegPack(Buf, InData%TVL) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%AS) + call RegPack(RF, InData%TF) + call RegPack(RF, InData%TP) + call RegPack(RF, InData%TV) + call RegPack(RF, InData%TVL) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackBeddoesParms(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackBeddoesParms(RF, OutData) + type(RegFile), intent(inout) :: RF type(BeddoesParms), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackBeddoesParms' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%AS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TVL) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%AS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TVL); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyBladeParms(SrcBladeParmsData, DstBladeParmsData, CtrlCode, ErrStat, ErrMsg) @@ -3048,66 +1981,30 @@ subroutine AD14_DestroyBladeParms(BladeParmsData, ErrStat, ErrMsg) end if end subroutine -subroutine AD14_PackBladeParms(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackBladeParms(RF, Indata) + type(RegFile), intent(inout) :: RF type(BladeParms), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackBladeParms' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%C)) - if (allocated(InData%C)) then - call RegPackBounds(Buf, 1, lbound(InData%C, kind=B8Ki), ubound(InData%C, kind=B8Ki)) - call RegPack(Buf, InData%C) - end if - call RegPack(Buf, allocated(InData%DR)) - if (allocated(InData%DR)) then - call RegPackBounds(Buf, 1, lbound(InData%DR, kind=B8Ki), ubound(InData%DR, kind=B8Ki)) - call RegPack(Buf, InData%DR) - end if - call RegPack(Buf, InData%R) - call RegPack(Buf, InData%BladeLength) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%C) + call RegPackAlloc(RF, InData%DR) + call RegPack(RF, InData%R) + call RegPack(RF, InData%BladeLength) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackBladeParms(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackBladeParms(RF, OutData) + type(RegFile), intent(inout) :: RF type(BladeParms), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackBladeParms' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%C)) deallocate(OutData%C) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%C(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%C.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%C) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DR)) deallocate(OutData%DR) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DR(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DR.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DR) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%R) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BladeLength) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%C); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%R); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BladeLength); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyDynInflow(SrcDynInflowData, DstDynInflowData, CtrlCode, ErrStat, ErrMsg) @@ -3186,132 +2083,74 @@ subroutine AD14_DestroyDynInflow(DynInflowData, ErrStat, ErrMsg) end if end subroutine -subroutine AD14_PackDynInflow(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackDynInflow(RF, Indata) + type(RegFile), intent(inout) :: RF type(DynInflow), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackDynInflow' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%dAlph_dt) - call RegPack(Buf, InData%dBeta_dt) - call RegPack(Buf, InData%DTO) - call RegPack(Buf, InData%old_Alph) - call RegPack(Buf, InData%old_Beta) - call RegPack(Buf, InData%old_LmdM) - call RegPack(Buf, InData%oldKai) - call RegPack(Buf, InData%PhiLqC) - call RegPack(Buf, InData%PhiLqS) - call RegPack(Buf, InData%Pzero) - call RegPack(Buf, allocated(InData%RMC_SAVE)) - if (allocated(InData%RMC_SAVE)) then - call RegPackBounds(Buf, 3, lbound(InData%RMC_SAVE, kind=B8Ki), ubound(InData%RMC_SAVE, kind=B8Ki)) - call RegPack(Buf, InData%RMC_SAVE) - end if - call RegPack(Buf, allocated(InData%RMS_SAVE)) - if (allocated(InData%RMS_SAVE)) then - call RegPackBounds(Buf, 3, lbound(InData%RMS_SAVE, kind=B8Ki), ubound(InData%RMS_SAVE, kind=B8Ki)) - call RegPack(Buf, InData%RMS_SAVE) - end if - call RegPack(Buf, InData%TipSpeed) - call RegPack(Buf, InData%totalInf) - call RegPack(Buf, InData%Vparam) - call RegPack(Buf, InData%Vtotal) - call RegPack(Buf, InData%xAlpha) - call RegPack(Buf, InData%xBeta) - call RegPack(Buf, InData%xKai) - call RegPack(Buf, InData%XLAMBDA_M) - call RegPack(Buf, InData%xLcos) - call RegPack(Buf, InData%xLsin) - call RegPack(Buf, InData%MminR) - call RegPack(Buf, InData%MminusR) - call RegPack(Buf, InData%MplusR) - call RegPack(Buf, InData%GAMMA) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%dAlph_dt) + call RegPack(RF, InData%dBeta_dt) + call RegPack(RF, InData%DTO) + call RegPack(RF, InData%old_Alph) + call RegPack(RF, InData%old_Beta) + call RegPack(RF, InData%old_LmdM) + call RegPack(RF, InData%oldKai) + call RegPack(RF, InData%PhiLqC) + call RegPack(RF, InData%PhiLqS) + call RegPack(RF, InData%Pzero) + call RegPackAlloc(RF, InData%RMC_SAVE) + call RegPackAlloc(RF, InData%RMS_SAVE) + call RegPack(RF, InData%TipSpeed) + call RegPack(RF, InData%totalInf) + call RegPack(RF, InData%Vparam) + call RegPack(RF, InData%Vtotal) + call RegPack(RF, InData%xAlpha) + call RegPack(RF, InData%xBeta) + call RegPack(RF, InData%xKai) + call RegPack(RF, InData%XLAMBDA_M) + call RegPack(RF, InData%xLcos) + call RegPack(RF, InData%xLsin) + call RegPack(RF, InData%MminR) + call RegPack(RF, InData%MminusR) + call RegPack(RF, InData%MplusR) + call RegPack(RF, InData%GAMMA) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackDynInflow(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackDynInflow(RF, OutData) + type(RegFile), intent(inout) :: RF type(DynInflow), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackDynInflow' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%dAlph_dt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dBeta_dt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DTO) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%old_Alph) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%old_Beta) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%old_LmdM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%oldKai) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PhiLqC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PhiLqS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Pzero) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%RMC_SAVE)) deallocate(OutData%RMC_SAVE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RMC_SAVE(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RMC_SAVE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RMC_SAVE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RMS_SAVE)) deallocate(OutData%RMS_SAVE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RMS_SAVE(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RMS_SAVE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RMS_SAVE) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%TipSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%totalInf) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Vparam) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Vtotal) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%xAlpha) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%xBeta) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%xKai) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%XLAMBDA_M) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%xLcos) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%xLsin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MminR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MminusR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MplusR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GAMMA) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%dAlph_dt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dBeta_dt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DTO); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%old_Alph); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%old_Beta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%old_LmdM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%oldKai); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PhiLqC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PhiLqS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Pzero); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RMC_SAVE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RMS_SAVE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TipSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%totalInf); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Vparam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Vtotal); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%xAlpha); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%xBeta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%xKai); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%XLAMBDA_M); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%xLcos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%xLsin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MminR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MminusR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MplusR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GAMMA); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyDynInflowParms(SrcDynInflowParmsData, DstDynInflowParmsData, CtrlCode, ErrStat, ErrMsg) @@ -3336,25 +2175,23 @@ subroutine AD14_DestroyDynInflowParms(DynInflowParmsData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AD14_PackDynInflowParms(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackDynInflowParms(RF, Indata) + type(RegFile), intent(inout) :: RF type(DynInflowParms), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackDynInflowParms' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%MAXINFLO) - call RegPack(Buf, InData%xMinv) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%MAXINFLO) + call RegPack(RF, InData%xMinv) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackDynInflowParms(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackDynInflowParms(RF, OutData) + type(RegFile), intent(inout) :: RF type(DynInflowParms), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackDynInflowParms' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%MAXINFLO) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%xMinv) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%MAXINFLO); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%xMinv); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyElement(SrcElementData, DstElementData, CtrlCode, ErrStat, ErrMsg) @@ -3484,155 +2321,36 @@ subroutine AD14_DestroyElement(ElementData, ErrStat, ErrMsg) end if end subroutine -subroutine AD14_PackElement(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackElement(RF, Indata) + type(RegFile), intent(inout) :: RF type(Element), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackElement' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%A)) - if (allocated(InData%A)) then - call RegPackBounds(Buf, 2, lbound(InData%A, kind=B8Ki), ubound(InData%A, kind=B8Ki)) - call RegPack(Buf, InData%A) - end if - call RegPack(Buf, allocated(InData%AP)) - if (allocated(InData%AP)) then - call RegPackBounds(Buf, 2, lbound(InData%AP, kind=B8Ki), ubound(InData%AP, kind=B8Ki)) - call RegPack(Buf, InData%AP) - end if - call RegPack(Buf, allocated(InData%ALPHA)) - if (allocated(InData%ALPHA)) then - call RegPackBounds(Buf, 2, lbound(InData%ALPHA, kind=B8Ki), ubound(InData%ALPHA, kind=B8Ki)) - call RegPack(Buf, InData%ALPHA) - end if - call RegPack(Buf, allocated(InData%W2)) - if (allocated(InData%W2)) then - call RegPackBounds(Buf, 2, lbound(InData%W2, kind=B8Ki), ubound(InData%W2, kind=B8Ki)) - call RegPack(Buf, InData%W2) - end if - call RegPack(Buf, allocated(InData%OLD_A_NS)) - if (allocated(InData%OLD_A_NS)) then - call RegPackBounds(Buf, 2, lbound(InData%OLD_A_NS, kind=B8Ki), ubound(InData%OLD_A_NS, kind=B8Ki)) - call RegPack(Buf, InData%OLD_A_NS) - end if - call RegPack(Buf, allocated(InData%OLD_AP_NS)) - if (allocated(InData%OLD_AP_NS)) then - call RegPackBounds(Buf, 2, lbound(InData%OLD_AP_NS, kind=B8Ki), ubound(InData%OLD_AP_NS, kind=B8Ki)) - call RegPack(Buf, InData%OLD_AP_NS) - end if - call RegPack(Buf, allocated(InData%PITNOW)) - if (allocated(InData%PITNOW)) then - call RegPackBounds(Buf, 2, lbound(InData%PITNOW, kind=B8Ki), ubound(InData%PITNOW, kind=B8Ki)) - call RegPack(Buf, InData%PITNOW) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%A) + call RegPackAlloc(RF, InData%AP) + call RegPackAlloc(RF, InData%ALPHA) + call RegPackAlloc(RF, InData%W2) + call RegPackAlloc(RF, InData%OLD_A_NS) + call RegPackAlloc(RF, InData%OLD_AP_NS) + call RegPackAlloc(RF, InData%PITNOW) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackElement(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackElement(RF, OutData) + type(RegFile), intent(inout) :: RF type(Element), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackElement' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%A)) deallocate(OutData%A) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%A(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%A.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%A) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AP)) deallocate(OutData%AP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ALPHA)) deallocate(OutData%ALPHA) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ALPHA(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ALPHA.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ALPHA) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%W2)) deallocate(OutData%W2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%W2(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%W2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OLD_A_NS)) deallocate(OutData%OLD_A_NS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OLD_A_NS(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OLD_A_NS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OLD_A_NS) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OLD_AP_NS)) deallocate(OutData%OLD_AP_NS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OLD_AP_NS(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OLD_AP_NS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OLD_AP_NS) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PITNOW)) deallocate(OutData%PITNOW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PITNOW(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PITNOW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PITNOW) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%A); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ALPHA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%W2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OLD_A_NS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OLD_AP_NS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PITNOW); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyElementParms(SrcElementParmsData, DstElementParmsData, CtrlCode, ErrStat, ErrMsg) @@ -3718,101 +2436,32 @@ subroutine AD14_DestroyElementParms(ElementParmsData, ErrStat, ErrMsg) end if end subroutine -subroutine AD14_PackElementParms(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackElementParms(RF, Indata) + type(RegFile), intent(inout) :: RF type(ElementParms), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackElementParms' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%NELM) - call RegPack(Buf, allocated(InData%TWIST)) - if (allocated(InData%TWIST)) then - call RegPackBounds(Buf, 1, lbound(InData%TWIST, kind=B8Ki), ubound(InData%TWIST, kind=B8Ki)) - call RegPack(Buf, InData%TWIST) - end if - call RegPack(Buf, allocated(InData%RELM)) - if (allocated(InData%RELM)) then - call RegPackBounds(Buf, 1, lbound(InData%RELM, kind=B8Ki), ubound(InData%RELM, kind=B8Ki)) - call RegPack(Buf, InData%RELM) - end if - call RegPack(Buf, allocated(InData%HLCNST)) - if (allocated(InData%HLCNST)) then - call RegPackBounds(Buf, 1, lbound(InData%HLCNST, kind=B8Ki), ubound(InData%HLCNST, kind=B8Ki)) - call RegPack(Buf, InData%HLCNST) - end if - call RegPack(Buf, allocated(InData%TLCNST)) - if (allocated(InData%TLCNST)) then - call RegPackBounds(Buf, 1, lbound(InData%TLCNST, kind=B8Ki), ubound(InData%TLCNST, kind=B8Ki)) - call RegPack(Buf, InData%TLCNST) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%NELM) + call RegPackAlloc(RF, InData%TWIST) + call RegPackAlloc(RF, InData%RELM) + call RegPackAlloc(RF, InData%HLCNST) + call RegPackAlloc(RF, InData%TLCNST) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackElementParms(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackElementParms(RF, OutData) + type(RegFile), intent(inout) :: RF type(ElementParms), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackElementParms' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%NELM) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TWIST)) deallocate(OutData%TWIST) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TWIST(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TWIST.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TWIST) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RELM)) deallocate(OutData%RELM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RELM(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RELM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RELM) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%HLCNST)) deallocate(OutData%HLCNST) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%HLCNST(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%HLCNST.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%HLCNST) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TLCNST)) deallocate(OutData%TLCNST) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TLCNST(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TLCNST.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TLCNST) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%NELM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TWIST); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RELM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%HLCNST); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TLCNST); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyElOutParms(SrcElOutParmsData, DstElOutParmsData, CtrlCode, ErrStat, ErrMsg) @@ -4172,455 +2821,76 @@ subroutine AD14_DestroyElOutParms(ElOutParmsData, ErrStat, ErrMsg) end if end subroutine -subroutine AD14_PackElOutParms(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackElOutParms(RF, Indata) + type(RegFile), intent(inout) :: RF type(ElOutParms), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackElOutParms' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%AAA)) - if (allocated(InData%AAA)) then - call RegPackBounds(Buf, 1, lbound(InData%AAA, kind=B8Ki), ubound(InData%AAA, kind=B8Ki)) - call RegPack(Buf, InData%AAA) - end if - call RegPack(Buf, allocated(InData%AAP)) - if (allocated(InData%AAP)) then - call RegPackBounds(Buf, 1, lbound(InData%AAP, kind=B8Ki), ubound(InData%AAP, kind=B8Ki)) - call RegPack(Buf, InData%AAP) - end if - call RegPack(Buf, allocated(InData%ALF)) - if (allocated(InData%ALF)) then - call RegPackBounds(Buf, 1, lbound(InData%ALF, kind=B8Ki), ubound(InData%ALF, kind=B8Ki)) - call RegPack(Buf, InData%ALF) - end if - call RegPack(Buf, allocated(InData%CDD)) - if (allocated(InData%CDD)) then - call RegPackBounds(Buf, 1, lbound(InData%CDD, kind=B8Ki), ubound(InData%CDD, kind=B8Ki)) - call RegPack(Buf, InData%CDD) - end if - call RegPack(Buf, allocated(InData%CLL)) - if (allocated(InData%CLL)) then - call RegPackBounds(Buf, 1, lbound(InData%CLL, kind=B8Ki), ubound(InData%CLL, kind=B8Ki)) - call RegPack(Buf, InData%CLL) - end if - call RegPack(Buf, allocated(InData%CMM)) - if (allocated(InData%CMM)) then - call RegPackBounds(Buf, 1, lbound(InData%CMM, kind=B8Ki), ubound(InData%CMM, kind=B8Ki)) - call RegPack(Buf, InData%CMM) - end if - call RegPack(Buf, allocated(InData%CNN)) - if (allocated(InData%CNN)) then - call RegPackBounds(Buf, 1, lbound(InData%CNN, kind=B8Ki), ubound(InData%CNN, kind=B8Ki)) - call RegPack(Buf, InData%CNN) - end if - call RegPack(Buf, allocated(InData%CTT)) - if (allocated(InData%CTT)) then - call RegPackBounds(Buf, 1, lbound(InData%CTT, kind=B8Ki), ubound(InData%CTT, kind=B8Ki)) - call RegPack(Buf, InData%CTT) - end if - call RegPack(Buf, allocated(InData%DFNSAV)) - if (allocated(InData%DFNSAV)) then - call RegPackBounds(Buf, 1, lbound(InData%DFNSAV, kind=B8Ki), ubound(InData%DFNSAV, kind=B8Ki)) - call RegPack(Buf, InData%DFNSAV) - end if - call RegPack(Buf, allocated(InData%DFTSAV)) - if (allocated(InData%DFTSAV)) then - call RegPackBounds(Buf, 1, lbound(InData%DFTSAV, kind=B8Ki), ubound(InData%DFTSAV, kind=B8Ki)) - call RegPack(Buf, InData%DFTSAV) - end if - call RegPack(Buf, allocated(InData%DynPres)) - if (allocated(InData%DynPres)) then - call RegPackBounds(Buf, 1, lbound(InData%DynPres, kind=B8Ki), ubound(InData%DynPres, kind=B8Ki)) - call RegPack(Buf, InData%DynPres) - end if - call RegPack(Buf, allocated(InData%PMM)) - if (allocated(InData%PMM)) then - call RegPackBounds(Buf, 1, lbound(InData%PMM, kind=B8Ki), ubound(InData%PMM, kind=B8Ki)) - call RegPack(Buf, InData%PMM) - end if - call RegPack(Buf, allocated(InData%PITSAV)) - if (allocated(InData%PITSAV)) then - call RegPackBounds(Buf, 1, lbound(InData%PITSAV, kind=B8Ki), ubound(InData%PITSAV, kind=B8Ki)) - call RegPack(Buf, InData%PITSAV) - end if - call RegPack(Buf, allocated(InData%ReyNum)) - if (allocated(InData%ReyNum)) then - call RegPackBounds(Buf, 1, lbound(InData%ReyNum, kind=B8Ki), ubound(InData%ReyNum, kind=B8Ki)) - call RegPack(Buf, InData%ReyNum) - end if - call RegPack(Buf, allocated(InData%Gamma)) - if (allocated(InData%Gamma)) then - call RegPackBounds(Buf, 1, lbound(InData%Gamma, kind=B8Ki), ubound(InData%Gamma, kind=B8Ki)) - call RegPack(Buf, InData%Gamma) - end if - call RegPack(Buf, allocated(InData%SaveVX)) - if (allocated(InData%SaveVX)) then - call RegPackBounds(Buf, 2, lbound(InData%SaveVX, kind=B8Ki), ubound(InData%SaveVX, kind=B8Ki)) - call RegPack(Buf, InData%SaveVX) - end if - call RegPack(Buf, allocated(InData%SaveVY)) - if (allocated(InData%SaveVY)) then - call RegPackBounds(Buf, 2, lbound(InData%SaveVY, kind=B8Ki), ubound(InData%SaveVY, kind=B8Ki)) - call RegPack(Buf, InData%SaveVY) - end if - call RegPack(Buf, allocated(InData%SaveVZ)) - if (allocated(InData%SaveVZ)) then - call RegPackBounds(Buf, 2, lbound(InData%SaveVZ, kind=B8Ki), ubound(InData%SaveVZ, kind=B8Ki)) - call RegPack(Buf, InData%SaveVZ) - end if - call RegPack(Buf, InData%VXSAV) - call RegPack(Buf, InData%VYSAV) - call RegPack(Buf, InData%VZSAV) - call RegPack(Buf, InData%NumWndElOut) - call RegPack(Buf, allocated(InData%WndElPrList)) - if (allocated(InData%WndElPrList)) then - call RegPackBounds(Buf, 1, lbound(InData%WndElPrList, kind=B8Ki), ubound(InData%WndElPrList, kind=B8Ki)) - call RegPack(Buf, InData%WndElPrList) - end if - call RegPack(Buf, allocated(InData%WndElPrNum)) - if (allocated(InData%WndElPrNum)) then - call RegPackBounds(Buf, 1, lbound(InData%WndElPrNum, kind=B8Ki), ubound(InData%WndElPrNum, kind=B8Ki)) - call RegPack(Buf, InData%WndElPrNum) - end if - call RegPack(Buf, allocated(InData%ElPrList)) - if (allocated(InData%ElPrList)) then - call RegPackBounds(Buf, 1, lbound(InData%ElPrList, kind=B8Ki), ubound(InData%ElPrList, kind=B8Ki)) - call RegPack(Buf, InData%ElPrList) - end if - call RegPack(Buf, allocated(InData%ElPrNum)) - if (allocated(InData%ElPrNum)) then - call RegPackBounds(Buf, 1, lbound(InData%ElPrNum, kind=B8Ki), ubound(InData%ElPrNum, kind=B8Ki)) - call RegPack(Buf, InData%ElPrNum) - end if - call RegPack(Buf, InData%NumElOut) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%AAA) + call RegPackAlloc(RF, InData%AAP) + call RegPackAlloc(RF, InData%ALF) + call RegPackAlloc(RF, InData%CDD) + call RegPackAlloc(RF, InData%CLL) + call RegPackAlloc(RF, InData%CMM) + call RegPackAlloc(RF, InData%CNN) + call RegPackAlloc(RF, InData%CTT) + call RegPackAlloc(RF, InData%DFNSAV) + call RegPackAlloc(RF, InData%DFTSAV) + call RegPackAlloc(RF, InData%DynPres) + call RegPackAlloc(RF, InData%PMM) + call RegPackAlloc(RF, InData%PITSAV) + call RegPackAlloc(RF, InData%ReyNum) + call RegPackAlloc(RF, InData%Gamma) + call RegPackAlloc(RF, InData%SaveVX) + call RegPackAlloc(RF, InData%SaveVY) + call RegPackAlloc(RF, InData%SaveVZ) + call RegPack(RF, InData%VXSAV) + call RegPack(RF, InData%VYSAV) + call RegPack(RF, InData%VZSAV) + call RegPack(RF, InData%NumWndElOut) + call RegPackAlloc(RF, InData%WndElPrList) + call RegPackAlloc(RF, InData%WndElPrNum) + call RegPackAlloc(RF, InData%ElPrList) + call RegPackAlloc(RF, InData%ElPrNum) + call RegPack(RF, InData%NumElOut) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackElOutParms(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackElOutParms(RF, OutData) + type(RegFile), intent(inout) :: RF type(ElOutParms), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackElOutParms' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%AAA)) deallocate(OutData%AAA) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AAA(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AAA.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AAA) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AAP)) deallocate(OutData%AAP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AAP(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AAP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AAP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ALF)) deallocate(OutData%ALF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ALF(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ALF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ALF) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CDD)) deallocate(OutData%CDD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CDD(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CDD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CDD) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CLL)) deallocate(OutData%CLL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CLL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CLL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CLL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CMM)) deallocate(OutData%CMM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CMM(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CMM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CMM) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CNN)) deallocate(OutData%CNN) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CNN(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CNN.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CNN) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CTT)) deallocate(OutData%CTT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CTT(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CTT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CTT) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DFNSAV)) deallocate(OutData%DFNSAV) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DFNSAV(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DFNSAV.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DFNSAV) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DFTSAV)) deallocate(OutData%DFTSAV) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DFTSAV(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DFTSAV.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DFTSAV) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DynPres)) deallocate(OutData%DynPres) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DynPres(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DynPres.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DynPres) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PMM)) deallocate(OutData%PMM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PMM(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PMM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PMM) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PITSAV)) deallocate(OutData%PITSAV) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PITSAV(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PITSAV.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PITSAV) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ReyNum)) deallocate(OutData%ReyNum) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ReyNum(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ReyNum.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ReyNum) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Gamma)) deallocate(OutData%Gamma) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Gamma(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Gamma.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Gamma) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SaveVX)) deallocate(OutData%SaveVX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SaveVX(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SaveVX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SaveVX) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SaveVY)) deallocate(OutData%SaveVY) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SaveVY(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SaveVY.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SaveVY) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SaveVZ)) deallocate(OutData%SaveVZ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SaveVZ(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SaveVZ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SaveVZ) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%VXSAV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VYSAV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VZSAV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumWndElOut) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WndElPrList)) deallocate(OutData%WndElPrList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WndElPrList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WndElPrList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WndElPrList) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WndElPrNum)) deallocate(OutData%WndElPrNum) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WndElPrNum(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WndElPrNum.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WndElPrNum) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ElPrList)) deallocate(OutData%ElPrList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ElPrList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ElPrList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ElPrList) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ElPrNum)) deallocate(OutData%ElPrNum) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ElPrNum(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ElPrNum.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ElPrNum) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NumElOut) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%AAA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AAP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ALF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CDD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CLL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CMM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CNN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CTT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DFNSAV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DFTSAV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DynPres); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PMM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PITSAV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ReyNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Gamma); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SaveVX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SaveVY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SaveVZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VXSAV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VYSAV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VZSAV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumWndElOut); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WndElPrList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WndElPrNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ElPrList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ElPrNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumElOut); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyInducedVel(SrcInducedVelData, DstInducedVelData, CtrlCode, ErrStat, ErrMsg) @@ -4644,22 +2914,21 @@ subroutine AD14_DestroyInducedVel(InducedVelData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AD14_PackInducedVel(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackInducedVel(RF, Indata) + type(RegFile), intent(inout) :: RF type(InducedVel), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackInducedVel' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%SumInFl) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%SumInFl) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackInducedVel(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackInducedVel(RF, OutData) + type(RegFile), intent(inout) :: RF type(InducedVel), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackInducedVel' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%SumInFl) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%SumInFl); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyInducedVelParms(SrcInducedVelParmsData, DstInducedVelParmsData, CtrlCode, ErrStat, ErrMsg) @@ -4689,40 +2958,33 @@ subroutine AD14_DestroyInducedVelParms(InducedVelParmsData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AD14_PackInducedVelParms(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackInducedVelParms(RF, Indata) + type(RegFile), intent(inout) :: RF type(InducedVelParms), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackInducedVelParms' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%AToler) - call RegPack(Buf, InData%EqAIDmult) - call RegPack(Buf, InData%EquilDA) - call RegPack(Buf, InData%EquilDT) - call RegPack(Buf, InData%TLoss) - call RegPack(Buf, InData%GTech) - call RegPack(Buf, InData%HLoss) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%AToler) + call RegPack(RF, InData%EqAIDmult) + call RegPack(RF, InData%EquilDA) + call RegPack(RF, InData%EquilDT) + call RegPack(RF, InData%TLoss) + call RegPack(RF, InData%GTech) + call RegPack(RF, InData%HLoss) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackInducedVelParms(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackInducedVelParms(RF, OutData) + type(RegFile), intent(inout) :: RF type(InducedVelParms), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackInducedVelParms' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%AToler) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EqAIDmult) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EquilDA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EquilDT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TLoss) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GTech) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HLoss) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%AToler); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EqAIDmult); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EquilDA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EquilDT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TLoss); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GTech); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HLoss); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyRotor(SrcRotorData, DstRotorData, CtrlCode, ErrStat, ErrMsg) @@ -4754,46 +3016,37 @@ subroutine AD14_DestroyRotor(RotorData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AD14_PackRotor(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackRotor(RF, Indata) + type(RegFile), intent(inout) :: RF type(Rotor), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackRotor' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%AVGINFL) - call RegPack(Buf, InData%CTILT) - call RegPack(Buf, InData%CYaw) - call RegPack(Buf, InData%REVS) - call RegPack(Buf, InData%STILT) - call RegPack(Buf, InData%SYaw) - call RegPack(Buf, InData%TILT) - call RegPack(Buf, InData%YawAng) - call RegPack(Buf, InData%YawVEL) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%AVGINFL) + call RegPack(RF, InData%CTILT) + call RegPack(RF, InData%CYaw) + call RegPack(RF, InData%REVS) + call RegPack(RF, InData%STILT) + call RegPack(RF, InData%SYaw) + call RegPack(RF, InData%TILT) + call RegPack(RF, InData%YawAng) + call RegPack(RF, InData%YawVEL) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackRotor(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackRotor(RF, OutData) + type(RegFile), intent(inout) :: RF type(Rotor), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackRotor' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%AVGINFL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CTILT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CYaw) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%REVS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%STILT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SYaw) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TILT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawAng) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawVEL) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%AVGINFL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CTILT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CYaw); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%REVS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%STILT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SYaw); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TILT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawAng); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawVEL); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyRotorParms(SrcRotorParmsData, DstRotorParmsData, CtrlCode, ErrStat, ErrMsg) @@ -4817,22 +3070,21 @@ subroutine AD14_DestroyRotorParms(RotorParmsData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AD14_PackRotorParms(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackRotorParms(RF, Indata) + type(RegFile), intent(inout) :: RF type(RotorParms), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackRotorParms' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%HH) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%HH) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackRotorParms(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackRotorParms(RF, OutData) + type(RegFile), intent(inout) :: RF type(RotorParms), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackRotorParms' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%HH) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%HH); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyTwrPropsParms(SrcTwrPropsParmsData, DstTwrPropsParmsData, CtrlCode, ErrStat, ErrMsg) @@ -4963,184 +3215,66 @@ subroutine AD14_DestroyTwrPropsParms(TwrPropsParmsData, ErrStat, ErrMsg) end if end subroutine -subroutine AD14_PackTwrPropsParms(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackTwrPropsParms(RF, Indata) + type(RegFile), intent(inout) :: RF type(TwrPropsParms), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackTwrPropsParms' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%TwrHtFr)) - if (allocated(InData%TwrHtFr)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrHtFr, kind=B8Ki), ubound(InData%TwrHtFr, kind=B8Ki)) - call RegPack(Buf, InData%TwrHtFr) - end if - call RegPack(Buf, allocated(InData%TwrWid)) - if (allocated(InData%TwrWid)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrWid, kind=B8Ki), ubound(InData%TwrWid, kind=B8Ki)) - call RegPack(Buf, InData%TwrWid) - end if - call RegPack(Buf, allocated(InData%TwrCD)) - if (allocated(InData%TwrCD)) then - call RegPackBounds(Buf, 2, lbound(InData%TwrCD, kind=B8Ki), ubound(InData%TwrCD, kind=B8Ki)) - call RegPack(Buf, InData%TwrCD) - end if - call RegPack(Buf, allocated(InData%TwrRe)) - if (allocated(InData%TwrRe)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrRe, kind=B8Ki), ubound(InData%TwrRe, kind=B8Ki)) - call RegPack(Buf, InData%TwrRe) - end if - call RegPack(Buf, InData%VTwr) - call RegPack(Buf, InData%Tower_Wake_Constant) - call RegPack(Buf, allocated(InData%NTwrCDCol)) - if (allocated(InData%NTwrCDCol)) then - call RegPackBounds(Buf, 1, lbound(InData%NTwrCDCol, kind=B8Ki), ubound(InData%NTwrCDCol, kind=B8Ki)) - call RegPack(Buf, InData%NTwrCDCol) - end if - call RegPack(Buf, InData%NTwrHT) - call RegPack(Buf, InData%NTwrRe) - call RegPack(Buf, InData%NTwrCD) - call RegPack(Buf, InData%TwrPotent) - call RegPack(Buf, InData%TwrShadow) - call RegPack(Buf, InData%ShadHWid) - call RegPack(Buf, InData%TShadC1) - call RegPack(Buf, InData%TShadC2) - call RegPack(Buf, InData%TwrShad) - call RegPack(Buf, InData%PJM_Version) - call RegPack(Buf, InData%TwrFile) - call RegPack(Buf, InData%T_Shad_Refpt) - call RegPack(Buf, InData%CalcTwrAero) - call RegPack(Buf, InData%NumTwrNodes) - call RegPack(Buf, allocated(InData%TwrNodeWidth)) - if (allocated(InData%TwrNodeWidth)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrNodeWidth, kind=B8Ki), ubound(InData%TwrNodeWidth, kind=B8Ki)) - call RegPack(Buf, InData%TwrNodeWidth) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%TwrHtFr) + call RegPackAlloc(RF, InData%TwrWid) + call RegPackAlloc(RF, InData%TwrCD) + call RegPackAlloc(RF, InData%TwrRe) + call RegPack(RF, InData%VTwr) + call RegPack(RF, InData%Tower_Wake_Constant) + call RegPackAlloc(RF, InData%NTwrCDCol) + call RegPack(RF, InData%NTwrHT) + call RegPack(RF, InData%NTwrRe) + call RegPack(RF, InData%NTwrCD) + call RegPack(RF, InData%TwrPotent) + call RegPack(RF, InData%TwrShadow) + call RegPack(RF, InData%ShadHWid) + call RegPack(RF, InData%TShadC1) + call RegPack(RF, InData%TShadC2) + call RegPack(RF, InData%TwrShad) + call RegPack(RF, InData%PJM_Version) + call RegPack(RF, InData%TwrFile) + call RegPack(RF, InData%T_Shad_Refpt) + call RegPack(RF, InData%CalcTwrAero) + call RegPack(RF, InData%NumTwrNodes) + call RegPackAlloc(RF, InData%TwrNodeWidth) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackTwrPropsParms(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackTwrPropsParms(RF, OutData) + type(RegFile), intent(inout) :: RF type(TwrPropsParms), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackTwrPropsParms' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%TwrHtFr)) deallocate(OutData%TwrHtFr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrHtFr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrHtFr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrHtFr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrWid)) deallocate(OutData%TwrWid) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrWid(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrWid.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrWid) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrCD)) deallocate(OutData%TwrCD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrCD(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrCD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrCD) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrRe)) deallocate(OutData%TwrRe) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrRe(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrRe.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrRe) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%VTwr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Tower_Wake_Constant) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%NTwrCDCol)) deallocate(OutData%NTwrCDCol) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NTwrCDCol(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NTwrCDCol.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NTwrCDCol) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NTwrHT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NTwrRe) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NTwrCD) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrPotent) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrShadow) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ShadHWid) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TShadC1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TShadC2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrShad) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PJM_Version) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%T_Shad_Refpt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CalcTwrAero) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumTwrNodes) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TwrNodeWidth)) deallocate(OutData%TwrNodeWidth) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrNodeWidth(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrNodeWidth.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrNodeWidth) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%TwrHtFr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrWid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrCD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrRe); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTwr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Tower_Wake_Constant); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NTwrCDCol); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NTwrHT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NTwrRe); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NTwrCD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrPotent); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrShadow); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ShadHWid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TShadC1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TShadC2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrShad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PJM_Version); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%T_Shad_Refpt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CalcTwrAero); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumTwrNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrNodeWidth); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyWind(SrcWindData, DstWindData, CtrlCode, ErrStat, ErrMsg) @@ -5169,37 +3303,31 @@ subroutine AD14_DestroyWind(WindData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AD14_PackWind(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackWind(RF, Indata) + type(RegFile), intent(inout) :: RF type(Wind), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackWind' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%ANGFLW) - call RegPack(Buf, InData%CDEL) - call RegPack(Buf, InData%VROTORX) - call RegPack(Buf, InData%VROTORY) - call RegPack(Buf, InData%VROTORZ) - call RegPack(Buf, InData%SDEL) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%ANGFLW) + call RegPack(RF, InData%CDEL) + call RegPack(RF, InData%VROTORX) + call RegPack(RF, InData%VROTORY) + call RegPack(RF, InData%VROTORZ) + call RegPack(RF, InData%SDEL) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackWind(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackWind(RF, OutData) + type(RegFile), intent(inout) :: RF type(Wind), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackWind' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%ANGFLW) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CDEL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VROTORX) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VROTORY) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VROTORZ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SDEL) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%ANGFLW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CDEL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VROTORX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VROTORY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VROTORZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SDEL); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyWindParms(SrcWindParmsData, DstWindParmsData, CtrlCode, ErrStat, ErrMsg) @@ -5224,25 +3352,23 @@ subroutine AD14_DestroyWindParms(WindParmsData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AD14_PackWindParms(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackWindParms(RF, Indata) + type(RegFile), intent(inout) :: RF type(WindParms), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackWindParms' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Rho) - call RegPack(Buf, InData%KinVisc) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Rho) + call RegPack(RF, InData%KinVisc) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackWindParms(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackWindParms(RF, OutData) + type(RegFile), intent(inout) :: RF type(WindParms), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackWindParms' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Rho) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%KinVisc) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Rho); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%KinVisc); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyPositionType(SrcPositionTypeData, DstPositionTypeData, CtrlCode, ErrStat, ErrMsg) @@ -5266,22 +3392,21 @@ subroutine AD14_DestroyPositionType(PositionTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AD14_PackPositionType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackPositionType(RF, Indata) + type(RegFile), intent(inout) :: RF type(PositionType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackPositionType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Pos) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Pos) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackPositionType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackPositionType(RF, OutData) + type(RegFile), intent(inout) :: RF type(PositionType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackPositionType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Pos) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Pos); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyOrientationType(SrcOrientationTypeData, DstOrientationTypeData, CtrlCode, ErrStat, ErrMsg) @@ -5305,22 +3430,21 @@ subroutine AD14_DestroyOrientationType(OrientationTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine AD14_PackOrientationType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackOrientationType(RF, Indata) + type(RegFile), intent(inout) :: RF type(OrientationType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackOrientationType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Orient) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Orient) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackOrientationType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackOrientationType(RF, OutData) + type(RegFile), intent(inout) :: RF type(OrientationType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackOrientationType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Orient) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Orient); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -5383,75 +3507,48 @@ subroutine AD14_DestroyInitInput(InitInputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD14_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD14_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Title) - call RegPack(Buf, InData%OutRootName) - call RegPack(Buf, InData%ADFileName) - call RegPack(Buf, InData%WrSumFile) - call RegPack(Buf, InData%NumBl) - call RegPack(Buf, InData%BladeLength) - call RegPack(Buf, InData%LinearizeFlag) - call RegPack(Buf, InData%UseDWM) - call AD14_PackAeroConfig(Buf, InData%TurbineComponents) - call RegPack(Buf, InData%NumTwrNodes) - call RegPack(Buf, allocated(InData%TwrNodeLocs)) - if (allocated(InData%TwrNodeLocs)) then - call RegPackBounds(Buf, 2, lbound(InData%TwrNodeLocs, kind=B8Ki), ubound(InData%TwrNodeLocs, kind=B8Ki)) - call RegPack(Buf, InData%TwrNodeLocs) - end if - call RegPack(Buf, InData%HubHt) - call DWM_PackInitInput(Buf, InData%DWM) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Title) + call RegPack(RF, InData%OutRootName) + call RegPack(RF, InData%ADFileName) + call RegPack(RF, InData%WrSumFile) + call RegPack(RF, InData%NumBl) + call RegPack(RF, InData%BladeLength) + call RegPack(RF, InData%LinearizeFlag) + call RegPack(RF, InData%UseDWM) + call AD14_PackAeroConfig(RF, InData%TurbineComponents) + call RegPack(RF, InData%NumTwrNodes) + call RegPackAlloc(RF, InData%TwrNodeLocs) + call RegPack(RF, InData%HubHt) + call DWM_PackInitInput(RF, InData%DWM) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD14_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackInitInput' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Title) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutRootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ADFileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WrSumFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BladeLength) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinearizeFlag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UseDWM) - if (RegCheckErr(Buf, RoutineName)) return - call AD14_UnpackAeroConfig(Buf, OutData%TurbineComponents) ! TurbineComponents - call RegUnpack(Buf, OutData%NumTwrNodes) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TwrNodeLocs)) deallocate(OutData%TwrNodeLocs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrNodeLocs(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrNodeLocs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrNodeLocs) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%HubHt) - if (RegCheckErr(Buf, RoutineName)) return - call DWM_UnpackInitInput(Buf, OutData%DWM) ! DWM + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Title); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutRootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ADFileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrSumFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BladeLength); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinearizeFlag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseDWM); if (RegCheckErr(RF, RoutineName)) return + call AD14_UnpackAeroConfig(RF, OutData%TurbineComponents) ! TurbineComponents + call RegUnpack(RF, OutData%NumTwrNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrNodeLocs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubHt); if (RegCheckErr(RF, RoutineName)) return + call DWM_UnpackInitInput(RF, OutData%DWM) ! DWM end subroutine subroutine AD14_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -5489,26 +3586,25 @@ subroutine AD14_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD14_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD14_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call DWM_PackInitOutput(Buf, InData%DWM) - call RegPack(Buf, InData%AirDens) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call DWM_PackInitOutput(RF, InData%DWM) + call RegPack(RF, InData%AirDens) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD14_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackInitOutput' - if (Buf%ErrStat /= ErrID_None) return - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver - call DWM_UnpackInitOutput(Buf, OutData%DWM) ! DWM - call RegUnpack(Buf, OutData%AirDens) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver + call DWM_UnpackInitOutput(RF, OutData%DWM) ! DWM + call RegUnpack(RF, OutData%AirDens); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -5540,21 +3636,21 @@ subroutine AD14_DestroyContState(ContStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD14_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD14_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call DWM_PackContState(Buf, InData%DWM) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call DWM_PackContState(RF, InData%DWM) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD14_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackContState' - if (Buf%ErrStat /= ErrID_None) return - call DWM_UnpackContState(Buf, OutData%DWM) ! DWM + if (RF%ErrStat /= ErrID_None) return + call DWM_UnpackContState(RF, OutData%DWM) ! DWM end subroutine subroutine AD14_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -5586,21 +3682,21 @@ subroutine AD14_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD14_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD14_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call DWM_PackDiscState(Buf, InData%DWM) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call DWM_PackDiscState(RF, InData%DWM) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD14_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call DWM_UnpackDiscState(Buf, OutData%DWM) ! DWM + if (RF%ErrStat /= ErrID_None) return + call DWM_UnpackDiscState(RF, OutData%DWM) ! DWM end subroutine subroutine AD14_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -5632,21 +3728,21 @@ subroutine AD14_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD14_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD14_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call DWM_PackConstrState(Buf, InData%DWM) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call DWM_PackConstrState(RF, InData%DWM) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD14_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call DWM_UnpackConstrState(Buf, OutData%DWM) ! DWM + if (RF%ErrStat /= ErrID_None) return + call DWM_UnpackConstrState(RF, OutData%DWM) ! DWM end subroutine subroutine AD14_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -5678,21 +3774,21 @@ subroutine AD14_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD14_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD14_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return - call DWM_PackOtherState(Buf, InData%DWM) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call DWM_PackOtherState(RF, InData%DWM) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD14_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackOtherState' - if (Buf%ErrStat /= ErrID_None) return - call DWM_UnpackOtherState(Buf, OutData%DWM) ! DWM + if (RF%ErrStat /= ErrID_None) return + call DWM_UnpackOtherState(RF, OutData%DWM) ! DWM end subroutine subroutine AD14_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -5836,149 +3932,82 @@ subroutine AD14_DestroyMisc(MiscData, ErrStat, ErrMsg) end if end subroutine -subroutine AD14_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD14_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call DWM_PackMisc(Buf, InData%DWM) - call DWM_PackInput(Buf, InData%DWM_Inputs) - call DWM_PackOutput(Buf, InData%DWM_Outputs) - call RegPack(Buf, InData%DT) - call RegPack(Buf, allocated(InData%ElPrNum)) - if (allocated(InData%ElPrNum)) then - call RegPackBounds(Buf, 1, lbound(InData%ElPrNum, kind=B8Ki), ubound(InData%ElPrNum, kind=B8Ki)) - call RegPack(Buf, InData%ElPrNum) - end if - call RegPack(Buf, InData%OldTime) - call RegPack(Buf, InData%HubLoss) - call RegPack(Buf, InData%Loss) - call RegPack(Buf, InData%TipLoss) - call RegPack(Buf, InData%TLpt7) - call RegPack(Buf, InData%FirstPassGTL) - call RegPack(Buf, InData%SuperSonic) - call RegPack(Buf, InData%AFLAGVinderr) - call RegPack(Buf, InData%AFLAGTwrInflu) - call RegPack(Buf, InData%OnePassDynDbg) - call RegPack(Buf, InData%NoLoadsCalculated) - call RegPack(Buf, InData%NERRORS) - call AD14_PackAirFoil(Buf, InData%AirFoil) - call AD14_PackBeddoes(Buf, InData%Beddoes) - call AD14_PackDynInflow(Buf, InData%DynInflow) - call AD14_PackElement(Buf, InData%Element) - call AD14_PackRotor(Buf, InData%Rotor) - call AD14_PackWind(Buf, InData%Wind) - call AD14_PackInducedVel(Buf, InData%InducedVel) - call AD14_PackElOutParms(Buf, InData%ElOut) - call RegPack(Buf, InData%Skew) - call RegPack(Buf, InData%DynInit) - call RegPack(Buf, InData%FirstWarn) - call RegPack(Buf, allocated(InData%StoredForces)) - if (allocated(InData%StoredForces)) then - call RegPackBounds(Buf, 3, lbound(InData%StoredForces, kind=B8Ki), ubound(InData%StoredForces, kind=B8Ki)) - call RegPack(Buf, InData%StoredForces) - end if - call RegPack(Buf, allocated(InData%StoredMoments)) - if (allocated(InData%StoredMoments)) then - call RegPackBounds(Buf, 3, lbound(InData%StoredMoments, kind=B8Ki), ubound(InData%StoredMoments, kind=B8Ki)) - call RegPack(Buf, InData%StoredMoments) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call DWM_PackMisc(RF, InData%DWM) + call DWM_PackInput(RF, InData%DWM_Inputs) + call DWM_PackOutput(RF, InData%DWM_Outputs) + call RegPack(RF, InData%DT) + call RegPackAlloc(RF, InData%ElPrNum) + call RegPack(RF, InData%OldTime) + call RegPack(RF, InData%HubLoss) + call RegPack(RF, InData%Loss) + call RegPack(RF, InData%TipLoss) + call RegPack(RF, InData%TLpt7) + call RegPack(RF, InData%FirstPassGTL) + call RegPack(RF, InData%SuperSonic) + call RegPack(RF, InData%AFLAGVinderr) + call RegPack(RF, InData%AFLAGTwrInflu) + call RegPack(RF, InData%OnePassDynDbg) + call RegPack(RF, InData%NoLoadsCalculated) + call RegPack(RF, InData%NERRORS) + call AD14_PackAirFoil(RF, InData%AirFoil) + call AD14_PackBeddoes(RF, InData%Beddoes) + call AD14_PackDynInflow(RF, InData%DynInflow) + call AD14_PackElement(RF, InData%Element) + call AD14_PackRotor(RF, InData%Rotor) + call AD14_PackWind(RF, InData%Wind) + call AD14_PackInducedVel(RF, InData%InducedVel) + call AD14_PackElOutParms(RF, InData%ElOut) + call RegPack(RF, InData%Skew) + call RegPack(RF, InData%DynInit) + call RegPack(RF, InData%FirstWarn) + call RegPackAlloc(RF, InData%StoredForces) + call RegPackAlloc(RF, InData%StoredMoments) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD14_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackMisc' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call DWM_UnpackMisc(Buf, OutData%DWM) ! DWM - call DWM_UnpackInput(Buf, OutData%DWM_Inputs) ! DWM_Inputs - call DWM_UnpackOutput(Buf, OutData%DWM_Outputs) ! DWM_Outputs - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%ElPrNum)) deallocate(OutData%ElPrNum) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ElPrNum(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ElPrNum.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ElPrNum) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%OldTime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubLoss) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Loss) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TipLoss) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TLpt7) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FirstPassGTL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SuperSonic) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AFLAGVinderr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AFLAGTwrInflu) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OnePassDynDbg) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NoLoadsCalculated) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NERRORS) - if (RegCheckErr(Buf, RoutineName)) return - call AD14_UnpackAirFoil(Buf, OutData%AirFoil) ! AirFoil - call AD14_UnpackBeddoes(Buf, OutData%Beddoes) ! Beddoes - call AD14_UnpackDynInflow(Buf, OutData%DynInflow) ! DynInflow - call AD14_UnpackElement(Buf, OutData%Element) ! Element - call AD14_UnpackRotor(Buf, OutData%Rotor) ! Rotor - call AD14_UnpackWind(Buf, OutData%Wind) ! Wind - call AD14_UnpackInducedVel(Buf, OutData%InducedVel) ! InducedVel - call AD14_UnpackElOutParms(Buf, OutData%ElOut) ! ElOut - call RegUnpack(Buf, OutData%Skew) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DynInit) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FirstWarn) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%StoredForces)) deallocate(OutData%StoredForces) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StoredForces(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StoredForces.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StoredForces) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%StoredMoments)) deallocate(OutData%StoredMoments) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StoredMoments(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StoredMoments.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StoredMoments) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call DWM_UnpackMisc(RF, OutData%DWM) ! DWM + call DWM_UnpackInput(RF, OutData%DWM_Inputs) ! DWM_Inputs + call DWM_UnpackOutput(RF, OutData%DWM_Outputs) ! DWM_Outputs + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ElPrNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OldTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubLoss); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Loss); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TipLoss); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TLpt7); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FirstPassGTL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SuperSonic); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AFLAGVinderr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AFLAGTwrInflu); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OnePassDynDbg); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NoLoadsCalculated); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NERRORS); if (RegCheckErr(RF, RoutineName)) return + call AD14_UnpackAirFoil(RF, OutData%AirFoil) ! AirFoil + call AD14_UnpackBeddoes(RF, OutData%Beddoes) ! Beddoes + call AD14_UnpackDynInflow(RF, OutData%DynInflow) ! DynInflow + call AD14_UnpackElement(RF, OutData%Element) ! Element + call AD14_UnpackRotor(RF, OutData%Rotor) ! Rotor + call AD14_UnpackWind(RF, OutData%Wind) ! Wind + call AD14_UnpackInducedVel(RF, OutData%InducedVel) ! InducedVel + call AD14_UnpackElOutParms(RF, OutData%ElOut) ! ElOut + call RegUnpack(RF, OutData%Skew); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DynInit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FirstWarn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StoredForces); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StoredMoments); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -6080,114 +4109,89 @@ subroutine AD14_DestroyParam(ParamData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD14_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD14_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackParam' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Title) - call RegPack(Buf, InData%SIUnit) - call RegPack(Buf, InData%Echo) - call RegPack(Buf, InData%MultiTab) - call RegPack(Buf, InData%LinearizeFlag) - call RegPack(Buf, InData%OutputPlottingInfo) - call RegPack(Buf, InData%UseDWM) - call RegPack(Buf, InData%TwoPiNB) - call RegPack(Buf, InData%NumBl) - call RegPack(Buf, InData%NBlInpSt) - call RegPack(Buf, InData%ElemPrn) - call RegPack(Buf, InData%DStall) - call RegPack(Buf, InData%PMoment) - call RegPack(Buf, InData%Reynolds) - call RegPack(Buf, InData%DynInfl) - call RegPack(Buf, InData%Wake) - call RegPack(Buf, InData%Swirl) - call RegPack(Buf, InData%DtAero) - call RegPack(Buf, InData%HubRad) - call RegPack(Buf, InData%UnEc) - call RegPack(Buf, InData%UnElem) - call RegPack(Buf, InData%UnWndOut) - call RegPack(Buf, InData%MAXICOUNT) - call RegPack(Buf, InData%WrOptFile) - call RegPack(Buf, InData%DEFAULT_Wind) - call AD14_PackAirFoilParms(Buf, InData%AirFoil) - call AD14_PackBladeParms(Buf, InData%Blade) - call AD14_PackBeddoesParms(Buf, InData%Beddoes) - call AD14_PackDynInflowParms(Buf, InData%DynInflow) - call AD14_PackElementParms(Buf, InData%Element) - call AD14_PackTwrPropsParms(Buf, InData%TwrProps) - call AD14_PackInducedVelParms(Buf, InData%InducedVel) - call AD14_PackWindParms(Buf, InData%Wind) - call AD14_PackRotorParms(Buf, InData%Rotor) - call DWM_PackParam(Buf, InData%DWM) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Title) + call RegPack(RF, InData%SIUnit) + call RegPack(RF, InData%Echo) + call RegPack(RF, InData%MultiTab) + call RegPack(RF, InData%LinearizeFlag) + call RegPack(RF, InData%OutputPlottingInfo) + call RegPack(RF, InData%UseDWM) + call RegPack(RF, InData%TwoPiNB) + call RegPack(RF, InData%NumBl) + call RegPack(RF, InData%NBlInpSt) + call RegPack(RF, InData%ElemPrn) + call RegPack(RF, InData%DStall) + call RegPack(RF, InData%PMoment) + call RegPack(RF, InData%Reynolds) + call RegPack(RF, InData%DynInfl) + call RegPack(RF, InData%Wake) + call RegPack(RF, InData%Swirl) + call RegPack(RF, InData%DtAero) + call RegPack(RF, InData%HubRad) + call RegPack(RF, InData%UnEc) + call RegPack(RF, InData%UnElem) + call RegPack(RF, InData%UnWndOut) + call RegPack(RF, InData%MAXICOUNT) + call RegPack(RF, InData%WrOptFile) + call RegPack(RF, InData%DEFAULT_Wind) + call AD14_PackAirFoilParms(RF, InData%AirFoil) + call AD14_PackBladeParms(RF, InData%Blade) + call AD14_PackBeddoesParms(RF, InData%Beddoes) + call AD14_PackDynInflowParms(RF, InData%DynInflow) + call AD14_PackElementParms(RF, InData%Element) + call AD14_PackTwrPropsParms(RF, InData%TwrProps) + call AD14_PackInducedVelParms(RF, InData%InducedVel) + call AD14_PackWindParms(RF, InData%Wind) + call AD14_PackRotorParms(RF, InData%Rotor) + call DWM_PackParam(RF, InData%DWM) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD14_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackParam' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Title) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SIUnit) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Echo) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MultiTab) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinearizeFlag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutputPlottingInfo) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UseDWM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwoPiNB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NBlInpSt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ElemPrn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DStall) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PMoment) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Reynolds) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DynInfl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Wake) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Swirl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DtAero) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubRad) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UnEc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UnElem) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UnWndOut) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MAXICOUNT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WrOptFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DEFAULT_Wind) - if (RegCheckErr(Buf, RoutineName)) return - call AD14_UnpackAirFoilParms(Buf, OutData%AirFoil) ! AirFoil - call AD14_UnpackBladeParms(Buf, OutData%Blade) ! Blade - call AD14_UnpackBeddoesParms(Buf, OutData%Beddoes) ! Beddoes - call AD14_UnpackDynInflowParms(Buf, OutData%DynInflow) ! DynInflow - call AD14_UnpackElementParms(Buf, OutData%Element) ! Element - call AD14_UnpackTwrPropsParms(Buf, OutData%TwrProps) ! TwrProps - call AD14_UnpackInducedVelParms(Buf, OutData%InducedVel) ! InducedVel - call AD14_UnpackWindParms(Buf, OutData%Wind) ! Wind - call AD14_UnpackRotorParms(Buf, OutData%Rotor) ! Rotor - call DWM_UnpackParam(Buf, OutData%DWM) ! DWM + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Title); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SIUnit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Echo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MultiTab); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinearizeFlag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutputPlottingInfo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseDWM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwoPiNB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NBlInpSt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ElemPrn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DStall); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PMoment); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Reynolds); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DynInfl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Wake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Swirl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DtAero); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubRad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UnEc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UnElem); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UnWndOut); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MAXICOUNT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrOptFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DEFAULT_Wind); if (RegCheckErr(RF, RoutineName)) return + call AD14_UnpackAirFoilParms(RF, OutData%AirFoil) ! AirFoil + call AD14_UnpackBladeParms(RF, OutData%Blade) ! Blade + call AD14_UnpackBeddoesParms(RF, OutData%Beddoes) ! Beddoes + call AD14_UnpackDynInflowParms(RF, OutData%DynInflow) ! DynInflow + call AD14_UnpackElementParms(RF, OutData%Element) ! Element + call AD14_UnpackTwrPropsParms(RF, OutData%TwrProps) ! TwrProps + call AD14_UnpackInducedVelParms(RF, OutData%InducedVel) ! InducedVel + call AD14_UnpackWindParms(RF, OutData%Wind) ! Wind + call AD14_UnpackRotorParms(RF, OutData%Rotor) ! Rotor + call DWM_UnpackParam(RF, OutData%DWM) ! DWM end subroutine subroutine AD14_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -6284,94 +4288,57 @@ subroutine AD14_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine AD14_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD14_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackInput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%InputMarkers)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%InputMarkers)) if (allocated(InData%InputMarkers)) then - call RegPackBounds(Buf, 1, lbound(InData%InputMarkers, kind=B8Ki), ubound(InData%InputMarkers, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%InputMarkers, kind=B8Ki), ubound(InData%InputMarkers, kind=B8Ki)) LB(1:1) = lbound(InData%InputMarkers, kind=B8Ki) UB(1:1) = ubound(InData%InputMarkers, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%InputMarkers(i1)) + call MeshPack(RF, InData%InputMarkers(i1)) end do end if - call MeshPack(Buf, InData%Twr_InputMarkers) - call AD14_PackAeroConfig(Buf, InData%TurbineComponents) - call RegPack(Buf, allocated(InData%MulTabLoc)) - if (allocated(InData%MulTabLoc)) then - call RegPackBounds(Buf, 2, lbound(InData%MulTabLoc, kind=B8Ki), ubound(InData%MulTabLoc, kind=B8Ki)) - call RegPack(Buf, InData%MulTabLoc) - end if - call RegPack(Buf, allocated(InData%InflowVelocity)) - if (allocated(InData%InflowVelocity)) then - call RegPackBounds(Buf, 2, lbound(InData%InflowVelocity, kind=B8Ki), ubound(InData%InflowVelocity, kind=B8Ki)) - call RegPack(Buf, InData%InflowVelocity) - end if - call RegPack(Buf, InData%AvgInfVel) - if (RegCheckErr(Buf, RoutineName)) return + call MeshPack(RF, InData%Twr_InputMarkers) + call AD14_PackAeroConfig(RF, InData%TurbineComponents) + call RegPackAlloc(RF, InData%MulTabLoc) + call RegPackAlloc(RF, InData%InflowVelocity) + call RegPack(RF, InData%AvgInfVel) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD14_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackInput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%InputMarkers)) deallocate(OutData%InputMarkers) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%InputMarkers(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputMarkers.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputMarkers.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%InputMarkers(i1)) ! InputMarkers + call MeshUnpack(RF, OutData%InputMarkers(i1)) ! InputMarkers end do end if - call MeshUnpack(Buf, OutData%Twr_InputMarkers) ! Twr_InputMarkers - call AD14_UnpackAeroConfig(Buf, OutData%TurbineComponents) ! TurbineComponents - if (allocated(OutData%MulTabLoc)) deallocate(OutData%MulTabLoc) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MulTabLoc(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MulTabLoc.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MulTabLoc) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%InflowVelocity)) deallocate(OutData%InflowVelocity) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InflowVelocity(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InflowVelocity.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InflowVelocity) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%AvgInfVel) - if (RegCheckErr(Buf, RoutineName)) return + call MeshUnpack(RF, OutData%Twr_InputMarkers) ! Twr_InputMarkers + call AD14_UnpackAeroConfig(RF, OutData%TurbineComponents) ! TurbineComponents + call RegUnpackAlloc(RF, OutData%MulTabLoc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%InflowVelocity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AvgInfVel); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AD14_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -6432,51 +4399,49 @@ subroutine AD14_DestroyOutput(OutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AD14_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AD14_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AD14_PackOutput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%OutputLoads)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%OutputLoads)) if (allocated(InData%OutputLoads)) then - call RegPackBounds(Buf, 1, lbound(InData%OutputLoads, kind=B8Ki), ubound(InData%OutputLoads, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OutputLoads, kind=B8Ki), ubound(InData%OutputLoads, kind=B8Ki)) LB(1:1) = lbound(InData%OutputLoads, kind=B8Ki) UB(1:1) = ubound(InData%OutputLoads, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%OutputLoads(i1)) + call MeshPack(RF, InData%OutputLoads(i1)) end do end if - call MeshPack(Buf, InData%Twr_OutputLoads) - if (RegCheckErr(Buf, RoutineName)) return + call MeshPack(RF, InData%Twr_OutputLoads) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AD14_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AD14_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AD14_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AD14_UnPackOutput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%OutputLoads)) deallocate(OutData%OutputLoads) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OutputLoads(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutputLoads.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutputLoads.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%OutputLoads(i1)) ! OutputLoads + call MeshUnpack(RF, OutData%OutputLoads(i1)) ! OutputLoads end do end if - call MeshUnpack(Buf, OutData%Twr_OutputLoads) ! Twr_OutputLoads + call MeshUnpack(RF, OutData%Twr_OutputLoads) ! Twr_OutputLoads end subroutine subroutine AD14_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/aerodyn14/src/DWM_Types.f90 b/modules/aerodyn14/src/DWM_Types.f90 index c9756e1f5b..9b729c5e33 100644 --- a/modules/aerodyn14/src/DWM_Types.f90 +++ b/modules/aerodyn14/src/DWM_Types.f90 @@ -350,28 +350,25 @@ subroutine DWM_DestroyCVSD(CVSDData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine DWM_PackCVSD(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackCVSD(RF, Indata) + type(RegFile), intent(inout) :: RF type(CVSD), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackCVSD' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%counter) - call RegPack(Buf, InData%Denominator) - call RegPack(Buf, InData%Numerator) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%counter) + call RegPack(RF, InData%Denominator) + call RegPack(RF, InData%Numerator) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DWM_UnPackCVSD(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_UnPackCVSD(RF, OutData) + type(RegFile), intent(inout) :: RF type(CVSD), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackCVSD' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%counter) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Denominator) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Numerator) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%counter); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Denominator); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Numerator); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DWM_Copyturbine_average_velocity_data(Srcturbine_average_velocity_dataData, Dstturbine_average_velocity_dataData, CtrlCode, ErrStat, ErrMsg) @@ -459,107 +456,36 @@ subroutine DWM_Destroyturbine_average_velocity_data(turbine_average_velocity_dat end if end subroutine -subroutine DWM_Packturbine_average_velocity_data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_Packturbine_average_velocity_data(RF, Indata) + type(RegFile), intent(inout) :: RF type(turbine_average_velocity_data), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_Packturbine_average_velocity_data' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%average_velocity_array_temp)) - if (allocated(InData%average_velocity_array_temp)) then - call RegPackBounds(Buf, 1, lbound(InData%average_velocity_array_temp, kind=B8Ki), ubound(InData%average_velocity_array_temp, kind=B8Ki)) - call RegPack(Buf, InData%average_velocity_array_temp) - end if - call RegPack(Buf, allocated(InData%average_velocity_array)) - if (allocated(InData%average_velocity_array)) then - call RegPackBounds(Buf, 1, lbound(InData%average_velocity_array, kind=B8Ki), ubound(InData%average_velocity_array, kind=B8Ki)) - call RegPack(Buf, InData%average_velocity_array) - end if - call RegPack(Buf, allocated(InData%swept_area)) - if (allocated(InData%swept_area)) then - call RegPackBounds(Buf, 1, lbound(InData%swept_area, kind=B8Ki), ubound(InData%swept_area, kind=B8Ki)) - call RegPack(Buf, InData%swept_area) - end if - call RegPack(Buf, InData%time_step_velocity) - call RegPack(Buf, allocated(InData%time_step_velocity_array)) - if (allocated(InData%time_step_velocity_array)) then - call RegPackBounds(Buf, 1, lbound(InData%time_step_velocity_array, kind=B8Ki), ubound(InData%time_step_velocity_array, kind=B8Ki)) - call RegPack(Buf, InData%time_step_velocity_array) - end if - call RegPack(Buf, InData%time_step_pass_velocity) - call RegPack(Buf, InData%time_step_force) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine DWM_UnPackturbine_average_velocity_data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%average_velocity_array_temp) + call RegPackAlloc(RF, InData%average_velocity_array) + call RegPackAlloc(RF, InData%swept_area) + call RegPack(RF, InData%time_step_velocity) + call RegPackAlloc(RF, InData%time_step_velocity_array) + call RegPack(RF, InData%time_step_pass_velocity) + call RegPack(RF, InData%time_step_force) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine DWM_UnPackturbine_average_velocity_data(RF, OutData) + type(RegFile), intent(inout) :: RF type(turbine_average_velocity_data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackturbine_average_velocity_data' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%average_velocity_array_temp)) deallocate(OutData%average_velocity_array_temp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%average_velocity_array_temp(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%average_velocity_array_temp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%average_velocity_array_temp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%average_velocity_array)) deallocate(OutData%average_velocity_array) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%average_velocity_array(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%average_velocity_array.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%average_velocity_array) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%swept_area)) deallocate(OutData%swept_area) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%swept_area(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%swept_area.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%swept_area) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%time_step_velocity) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%time_step_velocity_array)) deallocate(OutData%time_step_velocity_array) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%time_step_velocity_array(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%time_step_velocity_array.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%time_step_velocity_array) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%time_step_pass_velocity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%time_step_force) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%average_velocity_array_temp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%average_velocity_array); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%swept_area); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%time_step_velocity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%time_step_velocity_array); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%time_step_pass_velocity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%time_step_force); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DWM_CopyWake_Deficit_Data(SrcWake_Deficit_DataData, DstWake_Deficit_DataData, CtrlCode, ErrStat, ErrMsg) @@ -604,56 +530,34 @@ subroutine DWM_DestroyWake_Deficit_Data(Wake_Deficit_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine DWM_PackWake_Deficit_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackWake_Deficit_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(DWM_Wake_Deficit_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackWake_Deficit_Data' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%np_x) - call RegPack(Buf, InData%X_length) - call RegPack(Buf, allocated(InData%Turb_Stress_DWM)) - if (allocated(InData%Turb_Stress_DWM)) then - call RegPackBounds(Buf, 2, lbound(InData%Turb_Stress_DWM, kind=B8Ki), ubound(InData%Turb_Stress_DWM, kind=B8Ki)) - call RegPack(Buf, InData%Turb_Stress_DWM) - end if - call RegPack(Buf, InData%n_x_vector) - call RegPack(Buf, InData%n_r_vector) - call RegPack(Buf, InData%ppR) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine DWM_UnPackWake_Deficit_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%np_x) + call RegPack(RF, InData%X_length) + call RegPackAlloc(RF, InData%Turb_Stress_DWM) + call RegPack(RF, InData%n_x_vector) + call RegPack(RF, InData%n_r_vector) + call RegPack(RF, InData%ppR) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine DWM_UnPackWake_Deficit_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(DWM_Wake_Deficit_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackWake_Deficit_Data' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%np_x) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%X_length) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Turb_Stress_DWM)) deallocate(OutData%Turb_Stress_DWM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Turb_Stress_DWM(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Turb_Stress_DWM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Turb_Stress_DWM) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%n_x_vector) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%n_r_vector) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ppR) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%np_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%X_length); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Turb_Stress_DWM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%n_x_vector); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%n_r_vector); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ppR); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DWM_CopyMeanderData(SrcMeanderDataData, DstMeanderDataData, CtrlCode, ErrStat, ErrMsg) @@ -678,25 +582,23 @@ subroutine DWM_DestroyMeanderData(MeanderDataData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine DWM_PackMeanderData(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackMeanderData(RF, Indata) + type(RegFile), intent(inout) :: RF type(MeanderData), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackMeanderData' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%scale_factor) - call RegPack(Buf, InData%moving_time) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%scale_factor) + call RegPack(RF, InData%moving_time) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DWM_UnPackMeanderData(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_UnPackMeanderData(RF, OutData) + type(RegFile), intent(inout) :: RF type(MeanderData), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackMeanderData' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%scale_factor) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%moving_time) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%scale_factor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%moving_time); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DWM_Copyread_turbine_position_data(Srcread_turbine_position_dataData, Dstread_turbine_position_dataData, CtrlCode, ErrStat, ErrMsg) @@ -965,338 +867,62 @@ subroutine DWM_Destroyread_turbine_position_data(read_turbine_position_dataData, end if end subroutine -subroutine DWM_Packread_turbine_position_data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_Packread_turbine_position_data(RF, Indata) + type(RegFile), intent(inout) :: RF type(read_turbine_position_data), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_Packread_turbine_position_data' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%SimulationOrder_index) - call RegPack(Buf, allocated(InData%Turbine_sort_order)) - if (allocated(InData%Turbine_sort_order)) then - call RegPackBounds(Buf, 1, lbound(InData%Turbine_sort_order, kind=B8Ki), ubound(InData%Turbine_sort_order, kind=B8Ki)) - call RegPack(Buf, InData%Turbine_sort_order) - end if - call RegPack(Buf, InData%WT_index) - call RegPack(Buf, allocated(InData%TurbineInfluenceData)) - if (allocated(InData%TurbineInfluenceData)) then - call RegPackBounds(Buf, 2, lbound(InData%TurbineInfluenceData, kind=B8Ki), ubound(InData%TurbineInfluenceData, kind=B8Ki)) - call RegPack(Buf, InData%TurbineInfluenceData) - end if - call RegPack(Buf, allocated(InData%upwind_turbine_index)) - if (allocated(InData%upwind_turbine_index)) then - call RegPackBounds(Buf, 1, lbound(InData%upwind_turbine_index, kind=B8Ki), ubound(InData%upwind_turbine_index, kind=B8Ki)) - call RegPack(Buf, InData%upwind_turbine_index) - end if - call RegPack(Buf, allocated(InData%downwind_turbine_index)) - if (allocated(InData%downwind_turbine_index)) then - call RegPackBounds(Buf, 1, lbound(InData%downwind_turbine_index, kind=B8Ki), ubound(InData%downwind_turbine_index, kind=B8Ki)) - call RegPack(Buf, InData%downwind_turbine_index) - end if - call RegPack(Buf, InData%upwindturbine_number) - call RegPack(Buf, InData%downwindturbine_number) - call RegPack(Buf, allocated(InData%turbine_windorigin_length)) - if (allocated(InData%turbine_windorigin_length)) then - call RegPackBounds(Buf, 1, lbound(InData%turbine_windorigin_length, kind=B8Ki), ubound(InData%turbine_windorigin_length, kind=B8Ki)) - call RegPack(Buf, InData%turbine_windorigin_length) - end if - call RegPack(Buf, allocated(InData%upwind_turbine_projected_distance)) - if (allocated(InData%upwind_turbine_projected_distance)) then - call RegPackBounds(Buf, 1, lbound(InData%upwind_turbine_projected_distance, kind=B8Ki), ubound(InData%upwind_turbine_projected_distance, kind=B8Ki)) - call RegPack(Buf, InData%upwind_turbine_projected_distance) - end if - call RegPack(Buf, allocated(InData%downwind_turbine_projected_distance)) - if (allocated(InData%downwind_turbine_projected_distance)) then - call RegPackBounds(Buf, 1, lbound(InData%downwind_turbine_projected_distance, kind=B8Ki), ubound(InData%downwind_turbine_projected_distance, kind=B8Ki)) - call RegPack(Buf, InData%downwind_turbine_projected_distance) - end if - call RegPack(Buf, allocated(InData%turbine_angle)) - if (allocated(InData%turbine_angle)) then - call RegPackBounds(Buf, 2, lbound(InData%turbine_angle, kind=B8Ki), ubound(InData%turbine_angle, kind=B8Ki)) - call RegPack(Buf, InData%turbine_angle) - end if - call RegPack(Buf, allocated(InData%upwind_align_angle)) - if (allocated(InData%upwind_align_angle)) then - call RegPackBounds(Buf, 1, lbound(InData%upwind_align_angle, kind=B8Ki), ubound(InData%upwind_align_angle, kind=B8Ki)) - call RegPack(Buf, InData%upwind_align_angle) - end if - call RegPack(Buf, allocated(InData%downwind_align_angle)) - if (allocated(InData%downwind_align_angle)) then - call RegPackBounds(Buf, 1, lbound(InData%downwind_align_angle, kind=B8Ki), ubound(InData%downwind_align_angle, kind=B8Ki)) - call RegPack(Buf, InData%downwind_align_angle) - end if - call RegPack(Buf, allocated(InData%upwind_turbine_Xcoor)) - if (allocated(InData%upwind_turbine_Xcoor)) then - call RegPackBounds(Buf, 1, lbound(InData%upwind_turbine_Xcoor, kind=B8Ki), ubound(InData%upwind_turbine_Xcoor, kind=B8Ki)) - call RegPack(Buf, InData%upwind_turbine_Xcoor) - end if - call RegPack(Buf, allocated(InData%upwind_turbine_Ycoor)) - if (allocated(InData%upwind_turbine_Ycoor)) then - call RegPackBounds(Buf, 1, lbound(InData%upwind_turbine_Ycoor, kind=B8Ki), ubound(InData%upwind_turbine_Ycoor, kind=B8Ki)) - call RegPack(Buf, InData%upwind_turbine_Ycoor) - end if - call RegPack(Buf, allocated(InData%wind_farm_Xcoor)) - if (allocated(InData%wind_farm_Xcoor)) then - call RegPackBounds(Buf, 1, lbound(InData%wind_farm_Xcoor, kind=B8Ki), ubound(InData%wind_farm_Xcoor, kind=B8Ki)) - call RegPack(Buf, InData%wind_farm_Xcoor) - end if - call RegPack(Buf, allocated(InData%wind_farm_Ycoor)) - if (allocated(InData%wind_farm_Ycoor)) then - call RegPackBounds(Buf, 1, lbound(InData%wind_farm_Ycoor, kind=B8Ki), ubound(InData%wind_farm_Ycoor, kind=B8Ki)) - call RegPack(Buf, InData%wind_farm_Ycoor) - end if - call RegPack(Buf, allocated(InData%downwind_turbine_Xcoor)) - if (allocated(InData%downwind_turbine_Xcoor)) then - call RegPackBounds(Buf, 1, lbound(InData%downwind_turbine_Xcoor, kind=B8Ki), ubound(InData%downwind_turbine_Xcoor, kind=B8Ki)) - call RegPack(Buf, InData%downwind_turbine_Xcoor) - end if - call RegPack(Buf, allocated(InData%downwind_turbine_Ycoor)) - if (allocated(InData%downwind_turbine_Ycoor)) then - call RegPackBounds(Buf, 1, lbound(InData%downwind_turbine_Ycoor, kind=B8Ki), ubound(InData%downwind_turbine_Ycoor, kind=B8Ki)) - call RegPack(Buf, InData%downwind_turbine_Ycoor) - end if - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine DWM_UnPackread_turbine_position_data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%SimulationOrder_index) + call RegPackAlloc(RF, InData%Turbine_sort_order) + call RegPack(RF, InData%WT_index) + call RegPackAlloc(RF, InData%TurbineInfluenceData) + call RegPackAlloc(RF, InData%upwind_turbine_index) + call RegPackAlloc(RF, InData%downwind_turbine_index) + call RegPack(RF, InData%upwindturbine_number) + call RegPack(RF, InData%downwindturbine_number) + call RegPackAlloc(RF, InData%turbine_windorigin_length) + call RegPackAlloc(RF, InData%upwind_turbine_projected_distance) + call RegPackAlloc(RF, InData%downwind_turbine_projected_distance) + call RegPackAlloc(RF, InData%turbine_angle) + call RegPackAlloc(RF, InData%upwind_align_angle) + call RegPackAlloc(RF, InData%downwind_align_angle) + call RegPackAlloc(RF, InData%upwind_turbine_Xcoor) + call RegPackAlloc(RF, InData%upwind_turbine_Ycoor) + call RegPackAlloc(RF, InData%wind_farm_Xcoor) + call RegPackAlloc(RF, InData%wind_farm_Ycoor) + call RegPackAlloc(RF, InData%downwind_turbine_Xcoor) + call RegPackAlloc(RF, InData%downwind_turbine_Ycoor) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine DWM_UnPackread_turbine_position_data(RF, OutData) + type(RegFile), intent(inout) :: RF type(read_turbine_position_data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackread_turbine_position_data' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%SimulationOrder_index) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Turbine_sort_order)) deallocate(OutData%Turbine_sort_order) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Turbine_sort_order(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Turbine_sort_order.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Turbine_sort_order) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%WT_index) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TurbineInfluenceData)) deallocate(OutData%TurbineInfluenceData) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TurbineInfluenceData(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TurbineInfluenceData.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TurbineInfluenceData) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%upwind_turbine_index)) deallocate(OutData%upwind_turbine_index) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%upwind_turbine_index(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%upwind_turbine_index.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%upwind_turbine_index) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%downwind_turbine_index)) deallocate(OutData%downwind_turbine_index) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%downwind_turbine_index(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%downwind_turbine_index.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%downwind_turbine_index) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%upwindturbine_number) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%downwindturbine_number) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%turbine_windorigin_length)) deallocate(OutData%turbine_windorigin_length) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%turbine_windorigin_length(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%turbine_windorigin_length.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%turbine_windorigin_length) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%upwind_turbine_projected_distance)) deallocate(OutData%upwind_turbine_projected_distance) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%upwind_turbine_projected_distance(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%upwind_turbine_projected_distance.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%upwind_turbine_projected_distance) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%downwind_turbine_projected_distance)) deallocate(OutData%downwind_turbine_projected_distance) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%downwind_turbine_projected_distance(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%downwind_turbine_projected_distance.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%downwind_turbine_projected_distance) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%turbine_angle)) deallocate(OutData%turbine_angle) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%turbine_angle(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%turbine_angle.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%turbine_angle) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%upwind_align_angle)) deallocate(OutData%upwind_align_angle) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%upwind_align_angle(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%upwind_align_angle.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%upwind_align_angle) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%downwind_align_angle)) deallocate(OutData%downwind_align_angle) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%downwind_align_angle(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%downwind_align_angle.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%downwind_align_angle) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%upwind_turbine_Xcoor)) deallocate(OutData%upwind_turbine_Xcoor) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%upwind_turbine_Xcoor(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%upwind_turbine_Xcoor.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%upwind_turbine_Xcoor) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%upwind_turbine_Ycoor)) deallocate(OutData%upwind_turbine_Ycoor) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%upwind_turbine_Ycoor(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%upwind_turbine_Ycoor.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%upwind_turbine_Ycoor) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%wind_farm_Xcoor)) deallocate(OutData%wind_farm_Xcoor) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%wind_farm_Xcoor(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%wind_farm_Xcoor.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%wind_farm_Xcoor) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%wind_farm_Ycoor)) deallocate(OutData%wind_farm_Ycoor) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%wind_farm_Ycoor(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%wind_farm_Ycoor.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%wind_farm_Ycoor) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%downwind_turbine_Xcoor)) deallocate(OutData%downwind_turbine_Xcoor) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%downwind_turbine_Xcoor(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%downwind_turbine_Xcoor.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%downwind_turbine_Xcoor) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%downwind_turbine_Ycoor)) deallocate(OutData%downwind_turbine_Ycoor) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%downwind_turbine_Ycoor(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%downwind_turbine_Ycoor.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%downwind_turbine_Ycoor) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%SimulationOrder_index); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Turbine_sort_order); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WT_index); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TurbineInfluenceData); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%upwind_turbine_index); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%downwind_turbine_index); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%upwindturbine_number); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%downwindturbine_number); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%turbine_windorigin_length); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%upwind_turbine_projected_distance); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%downwind_turbine_projected_distance); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%turbine_angle); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%upwind_align_angle); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%downwind_align_angle); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%upwind_turbine_Xcoor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%upwind_turbine_Ycoor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%wind_farm_Xcoor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%wind_farm_Ycoor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%downwind_turbine_Xcoor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%downwind_turbine_Ycoor); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DWM_CopyWeiMethod(SrcWeiMethodData, DstWeiMethodData, CtrlCode, ErrStat, ErrMsg) @@ -1337,44 +963,26 @@ subroutine DWM_DestroyWeiMethod(WeiMethodData, ErrStat, ErrMsg) end if end subroutine -subroutine DWM_PackWeiMethod(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackWeiMethod(RF, Indata) + type(RegFile), intent(inout) :: RF type(WeiMethod), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackWeiMethod' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%sweptarea)) - if (allocated(InData%sweptarea)) then - call RegPackBounds(Buf, 1, lbound(InData%sweptarea, kind=B8Ki), ubound(InData%sweptarea, kind=B8Ki)) - call RegPack(Buf, InData%sweptarea) - end if - call RegPack(Buf, InData%weighting_denominator) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%sweptarea) + call RegPack(RF, InData%weighting_denominator) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DWM_UnPackWeiMethod(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_UnPackWeiMethod(RF, OutData) + type(RegFile), intent(inout) :: RF type(WeiMethod), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackWeiMethod' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%sweptarea)) deallocate(OutData%sweptarea) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%sweptarea(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%sweptarea.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%sweptarea) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%weighting_denominator) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%sweptarea); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%weighting_denominator); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DWM_CopyTIDownstream(SrcTIDownstreamData, DstTIDownstreamData, CtrlCode, ErrStat, ErrMsg) @@ -1443,128 +1051,82 @@ subroutine DWM_DestroyTIDownstream(TIDownstreamData, ErrStat, ErrMsg) end if end subroutine -subroutine DWM_PackTIDownstream(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackTIDownstream(RF, Indata) + type(RegFile), intent(inout) :: RF type(TIDownstream), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackTIDownstream' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%TI_downstream_matrix)) - if (allocated(InData%TI_downstream_matrix)) then - call RegPackBounds(Buf, 2, lbound(InData%TI_downstream_matrix, kind=B8Ki), ubound(InData%TI_downstream_matrix, kind=B8Ki)) - call RegPack(Buf, InData%TI_downstream_matrix) - end if - call RegPack(Buf, InData%i) - call RegPack(Buf, InData%j) - call RegPack(Buf, InData%k) - call RegPack(Buf, InData%cross_plane_position_ds) - call RegPack(Buf, InData%cross_plane_position_TI) - call RegPack(Buf, InData%distance_index) - call RegPack(Buf, InData%counter1) - call RegPack(Buf, InData%counter2) - call RegPack(Buf, InData%initial_timestep) - call RegPack(Buf, InData%y_axis_turbine) - call RegPack(Buf, InData%z_axis_turbine) - call RegPack(Buf, InData%distance) - call RegPack(Buf, InData%TI_downstream_node) - call RegPack(Buf, InData%TI_node_temp) - call RegPack(Buf, InData%TI_node) - call RegPack(Buf, InData%TI_accumulation) - call RegPack(Buf, InData%TI_apprant_accumulation) - call RegPack(Buf, InData%TI_average) - call RegPack(Buf, InData%TI_apprant) - call RegPack(Buf, InData%HubHt) - call RegPack(Buf, InData%wake_center_y) - call RegPack(Buf, InData%wake_center_z) - call RegPack(Buf, InData%Rscale) - call RegPack(Buf, InData%y) - call RegPack(Buf, InData%z) - call RegPack(Buf, InData%zero_spacing) - call RegPack(Buf, InData%temp1) - call RegPack(Buf, InData%temp2) - call RegPack(Buf, InData%temp3) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine DWM_UnPackTIDownstream(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%TI_downstream_matrix) + call RegPack(RF, InData%i) + call RegPack(RF, InData%j) + call RegPack(RF, InData%k) + call RegPack(RF, InData%cross_plane_position_ds) + call RegPack(RF, InData%cross_plane_position_TI) + call RegPack(RF, InData%distance_index) + call RegPack(RF, InData%counter1) + call RegPack(RF, InData%counter2) + call RegPack(RF, InData%initial_timestep) + call RegPack(RF, InData%y_axis_turbine) + call RegPack(RF, InData%z_axis_turbine) + call RegPack(RF, InData%distance) + call RegPack(RF, InData%TI_downstream_node) + call RegPack(RF, InData%TI_node_temp) + call RegPack(RF, InData%TI_node) + call RegPack(RF, InData%TI_accumulation) + call RegPack(RF, InData%TI_apprant_accumulation) + call RegPack(RF, InData%TI_average) + call RegPack(RF, InData%TI_apprant) + call RegPack(RF, InData%HubHt) + call RegPack(RF, InData%wake_center_y) + call RegPack(RF, InData%wake_center_z) + call RegPack(RF, InData%Rscale) + call RegPack(RF, InData%y) + call RegPack(RF, InData%z) + call RegPack(RF, InData%zero_spacing) + call RegPack(RF, InData%temp1) + call RegPack(RF, InData%temp2) + call RegPack(RF, InData%temp3) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine DWM_UnPackTIDownstream(RF, OutData) + type(RegFile), intent(inout) :: RF type(TIDownstream), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackTIDownstream' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%TI_downstream_matrix)) deallocate(OutData%TI_downstream_matrix) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TI_downstream_matrix(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TI_downstream_matrix.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TI_downstream_matrix) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%i) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%j) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%cross_plane_position_ds) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%cross_plane_position_TI) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%distance_index) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%counter1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%counter2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%initial_timestep) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%y_axis_turbine) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%z_axis_turbine) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%distance) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TI_downstream_node) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TI_node_temp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TI_node) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TI_accumulation) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TI_apprant_accumulation) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TI_average) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TI_apprant) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubHt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%wake_center_y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%wake_center_z) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Rscale) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%z) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%zero_spacing) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%temp1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%temp2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%temp3) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%TI_downstream_matrix); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%i); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%j); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%cross_plane_position_ds); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%cross_plane_position_TI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%distance_index); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%counter1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%counter2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%initial_timestep); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%y_axis_turbine); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%z_axis_turbine); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%distance); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TI_downstream_node); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TI_node_temp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TI_node); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TI_accumulation); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TI_apprant_accumulation); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TI_average); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TI_apprant); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubHt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%wake_center_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%wake_center_z); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Rscale); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%z); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%zero_spacing); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%temp1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%temp2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%temp3); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DWM_CopyTurbKaimal(SrcTurbKaimalData, DstTurbKaimalData, CtrlCode, ErrStat, ErrMsg) @@ -1594,40 +1156,33 @@ subroutine DWM_DestroyTurbKaimal(TurbKaimalData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine DWM_PackTurbKaimal(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackTurbKaimal(RF, Indata) + type(RegFile), intent(inout) :: RF type(TurbKaimal), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackTurbKaimal' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%fs) - call RegPack(Buf, InData%temp_n) - call RegPack(Buf, InData%i) - call RegPack(Buf, InData%low_f) - call RegPack(Buf, InData%high_f) - call RegPack(Buf, InData%lk_facor) - call RegPack(Buf, InData%STD) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine DWM_UnPackTurbKaimal(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%fs) + call RegPack(RF, InData%temp_n) + call RegPack(RF, InData%i) + call RegPack(RF, InData%low_f) + call RegPack(RF, InData%high_f) + call RegPack(RF, InData%lk_facor) + call RegPack(RF, InData%STD) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine DWM_UnPackTurbKaimal(RF, OutData) + type(RegFile), intent(inout) :: RF type(TurbKaimal), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackTurbKaimal' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%fs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%temp_n) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%i) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%low_f) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%high_f) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%lk_facor) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%STD) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%fs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%temp_n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%i); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%low_f); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%high_f); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%lk_facor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%STD); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DWM_CopyShinozuka(SrcShinozukaData, DstShinozukaData, CtrlCode, ErrStat, ErrMsg) @@ -1735,141 +1290,48 @@ subroutine DWM_DestroyShinozuka(ShinozukaData, ErrStat, ErrMsg) end if end subroutine -subroutine DWM_PackShinozuka(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackShinozuka(RF, Indata) + type(RegFile), intent(inout) :: RF type(Shinozuka), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackShinozuka' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%f_syn)) - if (allocated(InData%f_syn)) then - call RegPackBounds(Buf, 1, lbound(InData%f_syn, kind=B8Ki), ubound(InData%f_syn, kind=B8Ki)) - call RegPack(Buf, InData%f_syn) - end if - call RegPack(Buf, allocated(InData%t_syn)) - if (allocated(InData%t_syn)) then - call RegPackBounds(Buf, 1, lbound(InData%t_syn, kind=B8Ki), ubound(InData%t_syn, kind=B8Ki)) - call RegPack(Buf, InData%t_syn) - end if - call RegPack(Buf, allocated(InData%phi)) - if (allocated(InData%phi)) then - call RegPackBounds(Buf, 1, lbound(InData%phi, kind=B8Ki), ubound(InData%phi, kind=B8Ki)) - call RegPack(Buf, InData%phi) - end if - call RegPack(Buf, allocated(InData%p_k)) - if (allocated(InData%p_k)) then - call RegPackBounds(Buf, 1, lbound(InData%p_k, kind=B8Ki), ubound(InData%p_k, kind=B8Ki)) - call RegPack(Buf, InData%p_k) - end if - call RegPack(Buf, allocated(InData%a_k)) - if (allocated(InData%a_k)) then - call RegPackBounds(Buf, 1, lbound(InData%a_k, kind=B8Ki), ubound(InData%a_k, kind=B8Ki)) - call RegPack(Buf, InData%a_k) - end if - call RegPack(Buf, InData%num_points) - call RegPack(Buf, InData%ILo) - call RegPack(Buf, InData%i) - call RegPack(Buf, InData%j) - call RegPack(Buf, InData%dt) - call RegPack(Buf, InData%t_min) - call RegPack(Buf, InData%t_max) - call RegPack(Buf, InData%df) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine DWM_UnPackShinozuka(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%f_syn) + call RegPackAlloc(RF, InData%t_syn) + call RegPackAlloc(RF, InData%phi) + call RegPackAlloc(RF, InData%p_k) + call RegPackAlloc(RF, InData%a_k) + call RegPack(RF, InData%num_points) + call RegPack(RF, InData%ILo) + call RegPack(RF, InData%i) + call RegPack(RF, InData%j) + call RegPack(RF, InData%dt) + call RegPack(RF, InData%t_min) + call RegPack(RF, InData%t_max) + call RegPack(RF, InData%df) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine DWM_UnPackShinozuka(RF, OutData) + type(RegFile), intent(inout) :: RF type(Shinozuka), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackShinozuka' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%f_syn)) deallocate(OutData%f_syn) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%f_syn(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%f_syn.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%f_syn) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%t_syn)) deallocate(OutData%t_syn) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%t_syn(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%t_syn.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%t_syn) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%phi)) deallocate(OutData%phi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%phi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%phi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%phi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%p_k)) deallocate(OutData%p_k) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%p_k(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%p_k.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%p_k) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%a_k)) deallocate(OutData%a_k) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%a_k(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%a_k.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%a_k) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%num_points) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ILo) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%i) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%j) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%t_min) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%t_max) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%df) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%f_syn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%t_syn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%phi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%p_k); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%a_k); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%num_points); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ILo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%i); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%j); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%t_min); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%t_max); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%df); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DWM_Copysmooth_out_wake_data(Srcsmooth_out_wake_dataData, Dstsmooth_out_wake_dataData, CtrlCode, ErrStat, ErrMsg) @@ -1893,22 +1355,21 @@ subroutine DWM_Destroysmooth_out_wake_data(smooth_out_wake_dataData, ErrStat, Er ErrMsg = '' end subroutine -subroutine DWM_Packsmooth_out_wake_data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_Packsmooth_out_wake_data(RF, Indata) + type(RegFile), intent(inout) :: RF type(smooth_out_wake_data), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_Packsmooth_out_wake_data' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%length_velocity_array) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%length_velocity_array) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DWM_UnPacksmooth_out_wake_data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_UnPacksmooth_out_wake_data(RF, OutData) + type(RegFile), intent(inout) :: RF type(smooth_out_wake_data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPacksmooth_out_wake_data' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%length_velocity_array) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%length_velocity_array); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DWM_CopySWSV(SrcSWSVData, DstSWSVData, CtrlCode, ErrStat, ErrMsg) @@ -1937,37 +1398,31 @@ subroutine DWM_DestroySWSV(SWSVData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine DWM_PackSWSV(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackSWSV(RF, Indata) + type(RegFile), intent(inout) :: RF type(SWSV), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackSWSV' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%p1) - call RegPack(Buf, InData%p2) - call RegPack(Buf, InData%distance) - call RegPack(Buf, InData%y0) - call RegPack(Buf, InData%z0) - call RegPack(Buf, InData%unit) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine DWM_UnPackSWSV(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%p1) + call RegPack(RF, InData%p2) + call RegPack(RF, InData%distance) + call RegPack(RF, InData%y0) + call RegPack(RF, InData%z0) + call RegPack(RF, InData%unit) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine DWM_UnPackSWSV(RF, OutData) + type(RegFile), intent(inout) :: RF type(SWSV), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackSWSV' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%p1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%p2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%distance) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%y0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%z0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%unit) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%p1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%p2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%distance); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%y0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%z0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%unit); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DWM_Copyread_upwind_result(Srcread_upwind_resultData, Dstread_upwind_resultData, CtrlCode, ErrStat, ErrMsg) @@ -2157,231 +1612,44 @@ subroutine DWM_Destroyread_upwind_result(read_upwind_resultData, ErrStat, ErrMsg end if end subroutine -subroutine DWM_Packread_upwind_result(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_Packread_upwind_result(RF, Indata) + type(RegFile), intent(inout) :: RF type(read_upwind_result), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_Packread_upwind_result' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%upwind_U)) - if (allocated(InData%upwind_U)) then - call RegPackBounds(Buf, 2, lbound(InData%upwind_U, kind=B8Ki), ubound(InData%upwind_U, kind=B8Ki)) - call RegPack(Buf, InData%upwind_U) - end if - call RegPack(Buf, allocated(InData%upwind_wakecenter)) - if (allocated(InData%upwind_wakecenter)) then - call RegPackBounds(Buf, 4, lbound(InData%upwind_wakecenter, kind=B8Ki), ubound(InData%upwind_wakecenter, kind=B8Ki)) - call RegPack(Buf, InData%upwind_wakecenter) - end if - call RegPack(Buf, allocated(InData%upwind_meanU)) - if (allocated(InData%upwind_meanU)) then - call RegPackBounds(Buf, 1, lbound(InData%upwind_meanU, kind=B8Ki), ubound(InData%upwind_meanU, kind=B8Ki)) - call RegPack(Buf, InData%upwind_meanU) - end if - call RegPack(Buf, allocated(InData%upwind_TI)) - if (allocated(InData%upwind_TI)) then - call RegPackBounds(Buf, 1, lbound(InData%upwind_TI, kind=B8Ki), ubound(InData%upwind_TI, kind=B8Ki)) - call RegPack(Buf, InData%upwind_TI) - end if - call RegPack(Buf, allocated(InData%upwind_small_TI)) - if (allocated(InData%upwind_small_TI)) then - call RegPackBounds(Buf, 1, lbound(InData%upwind_small_TI, kind=B8Ki), ubound(InData%upwind_small_TI, kind=B8Ki)) - call RegPack(Buf, InData%upwind_small_TI) - end if - call RegPack(Buf, allocated(InData%upwind_smoothWake)) - if (allocated(InData%upwind_smoothWake)) then - call RegPackBounds(Buf, 2, lbound(InData%upwind_smoothWake, kind=B8Ki), ubound(InData%upwind_smoothWake, kind=B8Ki)) - call RegPack(Buf, InData%upwind_smoothWake) - end if - call RegPack(Buf, allocated(InData%velocity_aerodyn)) - if (allocated(InData%velocity_aerodyn)) then - call RegPackBounds(Buf, 1, lbound(InData%velocity_aerodyn, kind=B8Ki), ubound(InData%velocity_aerodyn, kind=B8Ki)) - call RegPack(Buf, InData%velocity_aerodyn) - end if - call RegPack(Buf, allocated(InData%TI_downstream)) - if (allocated(InData%TI_downstream)) then - call RegPackBounds(Buf, 1, lbound(InData%TI_downstream, kind=B8Ki), ubound(InData%TI_downstream, kind=B8Ki)) - call RegPack(Buf, InData%TI_downstream) - end if - call RegPack(Buf, allocated(InData%small_scale_TI_downstream)) - if (allocated(InData%small_scale_TI_downstream)) then - call RegPackBounds(Buf, 1, lbound(InData%small_scale_TI_downstream, kind=B8Ki), ubound(InData%small_scale_TI_downstream, kind=B8Ki)) - call RegPack(Buf, InData%small_scale_TI_downstream) - end if - call RegPack(Buf, allocated(InData%smoothed_velocity_array)) - if (allocated(InData%smoothed_velocity_array)) then - call RegPackBounds(Buf, 2, lbound(InData%smoothed_velocity_array, kind=B8Ki), ubound(InData%smoothed_velocity_array, kind=B8Ki)) - call RegPack(Buf, InData%smoothed_velocity_array) - end if - call RegPack(Buf, allocated(InData%vel_matrix)) - if (allocated(InData%vel_matrix)) then - call RegPackBounds(Buf, 3, lbound(InData%vel_matrix, kind=B8Ki), ubound(InData%vel_matrix, kind=B8Ki)) - call RegPack(Buf, InData%vel_matrix) - end if - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine DWM_UnPackread_upwind_result(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%upwind_U) + call RegPackAlloc(RF, InData%upwind_wakecenter) + call RegPackAlloc(RF, InData%upwind_meanU) + call RegPackAlloc(RF, InData%upwind_TI) + call RegPackAlloc(RF, InData%upwind_small_TI) + call RegPackAlloc(RF, InData%upwind_smoothWake) + call RegPackAlloc(RF, InData%velocity_aerodyn) + call RegPackAlloc(RF, InData%TI_downstream) + call RegPackAlloc(RF, InData%small_scale_TI_downstream) + call RegPackAlloc(RF, InData%smoothed_velocity_array) + call RegPackAlloc(RF, InData%vel_matrix) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine DWM_UnPackread_upwind_result(RF, OutData) + type(RegFile), intent(inout) :: RF type(read_upwind_result), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackread_upwind_result' integer(B8Ki) :: LB(4), UB(4) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%upwind_U)) deallocate(OutData%upwind_U) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%upwind_U(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%upwind_U.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%upwind_U) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%upwind_wakecenter)) deallocate(OutData%upwind_wakecenter) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%upwind_wakecenter(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%upwind_wakecenter.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%upwind_wakecenter) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%upwind_meanU)) deallocate(OutData%upwind_meanU) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%upwind_meanU(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%upwind_meanU.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%upwind_meanU) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%upwind_TI)) deallocate(OutData%upwind_TI) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%upwind_TI(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%upwind_TI.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%upwind_TI) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%upwind_small_TI)) deallocate(OutData%upwind_small_TI) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%upwind_small_TI(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%upwind_small_TI.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%upwind_small_TI) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%upwind_smoothWake)) deallocate(OutData%upwind_smoothWake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%upwind_smoothWake(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%upwind_smoothWake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%upwind_smoothWake) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%velocity_aerodyn)) deallocate(OutData%velocity_aerodyn) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%velocity_aerodyn(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%velocity_aerodyn.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%velocity_aerodyn) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TI_downstream)) deallocate(OutData%TI_downstream) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TI_downstream(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TI_downstream.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TI_downstream) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%small_scale_TI_downstream)) deallocate(OutData%small_scale_TI_downstream) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%small_scale_TI_downstream(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%small_scale_TI_downstream.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%small_scale_TI_downstream) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%smoothed_velocity_array)) deallocate(OutData%smoothed_velocity_array) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%smoothed_velocity_array(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%smoothed_velocity_array.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%smoothed_velocity_array) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%vel_matrix)) deallocate(OutData%vel_matrix) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%vel_matrix(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%vel_matrix.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%vel_matrix) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%upwind_U); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%upwind_wakecenter); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%upwind_meanU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%upwind_TI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%upwind_small_TI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%upwind_smoothWake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%velocity_aerodyn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TI_downstream); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%small_scale_TI_downstream); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%smoothed_velocity_array); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%vel_matrix); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DWM_Copywake_meandered_center(Srcwake_meandered_centerData, Dstwake_meandered_centerData, CtrlCode, ErrStat, ErrMsg) @@ -2421,41 +1689,24 @@ subroutine DWM_Destroywake_meandered_center(wake_meandered_centerData, ErrStat, end if end subroutine -subroutine DWM_Packwake_meandered_center(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_Packwake_meandered_center(RF, Indata) + type(RegFile), intent(inout) :: RF type(wake_meandered_center), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_Packwake_meandered_center' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%wake_width)) - if (allocated(InData%wake_width)) then - call RegPackBounds(Buf, 1, lbound(InData%wake_width, kind=B8Ki), ubound(InData%wake_width, kind=B8Ki)) - call RegPack(Buf, InData%wake_width) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%wake_width) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DWM_UnPackwake_meandered_center(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_UnPackwake_meandered_center(RF, OutData) + type(RegFile), intent(inout) :: RF type(wake_meandered_center), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackwake_meandered_center' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%wake_width)) deallocate(OutData%wake_width) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%wake_width(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%wake_width.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%wake_width) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%wake_width); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DWM_Copyturbine_blade(Srcturbine_bladeData, Dstturbine_bladeData, CtrlCode, ErrStat, ErrMsg) @@ -2481,28 +1732,25 @@ subroutine DWM_Destroyturbine_blade(turbine_bladeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine DWM_Packturbine_blade(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_Packturbine_blade(RF, Indata) + type(RegFile), intent(inout) :: RF type(DWM_turbine_blade), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_Packturbine_blade' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Aerodyn_turbine_num) - call RegPack(Buf, InData%Blade_index) - call RegPack(Buf, InData%Element_index) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Aerodyn_turbine_num) + call RegPack(RF, InData%Blade_index) + call RegPack(RF, InData%Element_index) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DWM_UnPackturbine_blade(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_UnPackturbine_blade(RF, OutData) + type(RegFile), intent(inout) :: RF type(DWM_turbine_blade), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackturbine_blade' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Aerodyn_turbine_num) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Blade_index) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Element_index) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Aerodyn_turbine_num); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Blade_index); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Element_index); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine DWM_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -2621,165 +1869,76 @@ subroutine DWM_DestroyParam(ParamData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine DWM_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(DWM_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackParam' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%velocityU)) - if (allocated(InData%velocityU)) then - call RegPackBounds(Buf, 1, lbound(InData%velocityU, kind=B8Ki), ubound(InData%velocityU, kind=B8Ki)) - call RegPack(Buf, InData%velocityU) - end if - call RegPack(Buf, allocated(InData%smoothed_wake)) - if (allocated(InData%smoothed_wake)) then - call RegPackBounds(Buf, 1, lbound(InData%smoothed_wake, kind=B8Ki), ubound(InData%smoothed_wake, kind=B8Ki)) - call RegPack(Buf, InData%smoothed_wake) - end if - call RegPack(Buf, allocated(InData%WakePosition)) - if (allocated(InData%WakePosition)) then - call RegPackBounds(Buf, 3, lbound(InData%WakePosition, kind=B8Ki), ubound(InData%WakePosition, kind=B8Ki)) - call RegPack(Buf, InData%WakePosition) - end if - call RegPack(Buf, InData%WakePosition_1) - call RegPack(Buf, InData%WakePosition_2) - call RegPack(Buf, InData%smooth_flag) - call RegPack(Buf, InData%p_p_r) - call RegPack(Buf, InData%NumWT) - call RegPack(Buf, InData%Tinfluencer) - call RegPack(Buf, InData%RotorR) - call RegPack(Buf, InData%r_domain) - call RegPack(Buf, InData%x_domain) - call RegPack(Buf, InData%Uambient) - call RegPack(Buf, InData%TI_amb) - call RegPack(Buf, InData%TI_wake) - call RegPack(Buf, InData%hub_height) - call RegPack(Buf, InData%length_velocityU) - call RegPack(Buf, InData%WFLowerBd) - call RegPack(Buf, InData%Wind_file_Mean_u) - call RegPack(Buf, InData%Winddir) - call RegPack(Buf, InData%air_density) - call RegPack(Buf, InData%RR) - call RegPack(Buf, allocated(InData%ElementRad)) - if (allocated(InData%ElementRad)) then - call RegPackBounds(Buf, 1, lbound(InData%ElementRad, kind=B8Ki), ubound(InData%ElementRad, kind=B8Ki)) - call RegPack(Buf, InData%ElementRad) - end if - call RegPack(Buf, InData%Bnum) - call RegPack(Buf, InData%ElementNum) - call DWM_Packread_turbine_position_data(Buf, InData%RTPD) - call InflowWind_PackParam(Buf, InData%IfW) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine DWM_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%velocityU) + call RegPackAlloc(RF, InData%smoothed_wake) + call RegPackAlloc(RF, InData%WakePosition) + call RegPack(RF, InData%WakePosition_1) + call RegPack(RF, InData%WakePosition_2) + call RegPack(RF, InData%smooth_flag) + call RegPack(RF, InData%p_p_r) + call RegPack(RF, InData%NumWT) + call RegPack(RF, InData%Tinfluencer) + call RegPack(RF, InData%RotorR) + call RegPack(RF, InData%r_domain) + call RegPack(RF, InData%x_domain) + call RegPack(RF, InData%Uambient) + call RegPack(RF, InData%TI_amb) + call RegPack(RF, InData%TI_wake) + call RegPack(RF, InData%hub_height) + call RegPack(RF, InData%length_velocityU) + call RegPack(RF, InData%WFLowerBd) + call RegPack(RF, InData%Wind_file_Mean_u) + call RegPack(RF, InData%Winddir) + call RegPack(RF, InData%air_density) + call RegPack(RF, InData%RR) + call RegPackAlloc(RF, InData%ElementRad) + call RegPack(RF, InData%Bnum) + call RegPack(RF, InData%ElementNum) + call DWM_Packread_turbine_position_data(RF, InData%RTPD) + call InflowWind_PackParam(RF, InData%IfW) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine DWM_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(DWM_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackParam' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%velocityU)) deallocate(OutData%velocityU) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%velocityU(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%velocityU.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%velocityU) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%smoothed_wake)) deallocate(OutData%smoothed_wake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%smoothed_wake(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%smoothed_wake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%smoothed_wake) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WakePosition)) deallocate(OutData%WakePosition) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WakePosition(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WakePosition.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WakePosition) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%WakePosition_1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WakePosition_2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%smooth_flag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%p_p_r) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumWT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Tinfluencer) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotorR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%r_domain) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%x_domain) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Uambient) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TI_amb) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TI_wake) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%hub_height) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%length_velocityU) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WFLowerBd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Wind_file_Mean_u) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Winddir) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%air_density) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RR) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%ElementRad)) deallocate(OutData%ElementRad) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ElementRad(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ElementRad.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ElementRad) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Bnum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ElementNum) - if (RegCheckErr(Buf, RoutineName)) return - call DWM_Unpackread_turbine_position_data(Buf, OutData%RTPD) ! RTPD - call InflowWind_UnpackParam(Buf, OutData%IfW) ! IfW + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%velocityU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%smoothed_wake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WakePosition); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WakePosition_1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WakePosition_2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%smooth_flag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%p_p_r); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumWT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Tinfluencer); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotorR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%r_domain); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%x_domain); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Uambient); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TI_amb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TI_wake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%hub_height); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%length_velocityU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WFLowerBd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Wind_file_Mean_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Winddir); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%air_density); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ElementRad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Bnum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ElementNum); if (RegCheckErr(RF, RoutineName)) return + call DWM_Unpackread_turbine_position_data(RF, OutData%RTPD) ! RTPD + call InflowWind_UnpackParam(RF, OutData%IfW) ! IfW end subroutine subroutine DWM_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -2811,21 +1970,21 @@ subroutine DWM_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine DWM_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(DWM_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return - call InflowWind_PackOtherState(Buf, InData%IfW) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call InflowWind_PackOtherState(RF, InData%IfW) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DWM_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(DWM_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackOtherState' - if (Buf%ErrStat /= ErrID_None) return - call InflowWind_UnpackOtherState(Buf, OutData%IfW) ! IfW + if (RF%ErrStat /= ErrID_None) return + call InflowWind_UnpackOtherState(RF, OutData%IfW) ! IfW end subroutine subroutine DWM_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -2959,119 +2118,74 @@ subroutine DWM_DestroyMisc(MiscData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine DWM_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(DWM_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call InflowWind_PackMisc(Buf, InData%IfW) - call RegPack(Buf, InData%position_y) - call RegPack(Buf, InData%position_z) - call RegPack(Buf, InData%velocity_wake_mean) - call RegPack(Buf, InData%shifted_velocity_Aerodyn) - call RegPack(Buf, InData%U_velocity) - call RegPack(Buf, InData%V_velocity) - call RegPack(Buf, allocated(InData%Nforce)) - if (allocated(InData%Nforce)) then - call RegPackBounds(Buf, 2, lbound(InData%Nforce, kind=B8Ki), ubound(InData%Nforce, kind=B8Ki)) - call RegPack(Buf, InData%Nforce) - end if - call RegPack(Buf, allocated(InData%blade_dr)) - if (allocated(InData%blade_dr)) then - call RegPackBounds(Buf, 1, lbound(InData%blade_dr, kind=B8Ki), ubound(InData%blade_dr, kind=B8Ki)) - call RegPack(Buf, InData%blade_dr) - end if - call RegPack(Buf, InData%NacYaw) - call RegPack(Buf, InData%TI_original) - call DWM_Packturbine_average_velocity_data(Buf, InData%TAVD) - call DWM_PackCVSD(Buf, InData%CalVelScale_data) - call DWM_PackMeanderData(Buf, InData%meandering_data) - call DWM_PackWeiMethod(Buf, InData%weighting_method) - call DWM_PackTIDownstream(Buf, InData%TI_downstream_data) - call DWM_PackTurbKaimal(Buf, InData%Turbulence_KS) - call DWM_PackShinozuka(Buf, InData%shinozuka_data) - call DWM_Packsmooth_out_wake_data(Buf, InData%SmoothOut) - call DWM_PackSWSV(Buf, InData%smooth_wake_shifted_velocity_data) - call DWM_PackWake_Deficit_Data(Buf, InData%DWDD) - call RegPack(Buf, InData%ct_tilde) - call RegPack(Buf, InData%FAST_Time) - call RegPack(Buf, InData%SDtimestep) - call DWM_Packturbine_blade(Buf, InData%DWM_tb) - call DWM_Packwake_meandered_center(Buf, InData%WMC) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine DWM_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call InflowWind_PackMisc(RF, InData%IfW) + call RegPack(RF, InData%position_y) + call RegPack(RF, InData%position_z) + call RegPack(RF, InData%velocity_wake_mean) + call RegPack(RF, InData%shifted_velocity_Aerodyn) + call RegPack(RF, InData%U_velocity) + call RegPack(RF, InData%V_velocity) + call RegPackAlloc(RF, InData%Nforce) + call RegPackAlloc(RF, InData%blade_dr) + call RegPack(RF, InData%NacYaw) + call RegPack(RF, InData%TI_original) + call DWM_Packturbine_average_velocity_data(RF, InData%TAVD) + call DWM_PackCVSD(RF, InData%CalVelScale_data) + call DWM_PackMeanderData(RF, InData%meandering_data) + call DWM_PackWeiMethod(RF, InData%weighting_method) + call DWM_PackTIDownstream(RF, InData%TI_downstream_data) + call DWM_PackTurbKaimal(RF, InData%Turbulence_KS) + call DWM_PackShinozuka(RF, InData%shinozuka_data) + call DWM_Packsmooth_out_wake_data(RF, InData%SmoothOut) + call DWM_PackSWSV(RF, InData%smooth_wake_shifted_velocity_data) + call DWM_PackWake_Deficit_Data(RF, InData%DWDD) + call RegPack(RF, InData%ct_tilde) + call RegPack(RF, InData%FAST_Time) + call RegPack(RF, InData%SDtimestep) + call DWM_Packturbine_blade(RF, InData%DWM_tb) + call DWM_Packwake_meandered_center(RF, InData%WMC) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine DWM_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(DWM_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackMisc' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call InflowWind_UnpackMisc(Buf, OutData%IfW) ! IfW - call RegUnpack(Buf, OutData%position_y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%position_z) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%velocity_wake_mean) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%shifted_velocity_Aerodyn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%U_velocity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%V_velocity) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Nforce)) deallocate(OutData%Nforce) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Nforce(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Nforce.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Nforce) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%blade_dr)) deallocate(OutData%blade_dr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%blade_dr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%blade_dr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%blade_dr) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NacYaw) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TI_original) - if (RegCheckErr(Buf, RoutineName)) return - call DWM_Unpackturbine_average_velocity_data(Buf, OutData%TAVD) ! TAVD - call DWM_UnpackCVSD(Buf, OutData%CalVelScale_data) ! CalVelScale_data - call DWM_UnpackMeanderData(Buf, OutData%meandering_data) ! meandering_data - call DWM_UnpackWeiMethod(Buf, OutData%weighting_method) ! weighting_method - call DWM_UnpackTIDownstream(Buf, OutData%TI_downstream_data) ! TI_downstream_data - call DWM_UnpackTurbKaimal(Buf, OutData%Turbulence_KS) ! Turbulence_KS - call DWM_UnpackShinozuka(Buf, OutData%shinozuka_data) ! shinozuka_data - call DWM_Unpacksmooth_out_wake_data(Buf, OutData%SmoothOut) ! SmoothOut - call DWM_UnpackSWSV(Buf, OutData%smooth_wake_shifted_velocity_data) ! smooth_wake_shifted_velocity_data - call DWM_UnpackWake_Deficit_Data(Buf, OutData%DWDD) ! DWDD - call RegUnpack(Buf, OutData%ct_tilde) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FAST_Time) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SDtimestep) - if (RegCheckErr(Buf, RoutineName)) return - call DWM_Unpackturbine_blade(Buf, OutData%DWM_tb) ! DWM_tb - call DWM_Unpackwake_meandered_center(Buf, OutData%WMC) ! WMC + if (RF%ErrStat /= ErrID_None) return + call InflowWind_UnpackMisc(RF, OutData%IfW) ! IfW + call RegUnpack(RF, OutData%position_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%position_z); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%velocity_wake_mean); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%shifted_velocity_Aerodyn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%U_velocity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%V_velocity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Nforce); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%blade_dr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacYaw); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TI_original); if (RegCheckErr(RF, RoutineName)) return + call DWM_Unpackturbine_average_velocity_data(RF, OutData%TAVD) ! TAVD + call DWM_UnpackCVSD(RF, OutData%CalVelScale_data) ! CalVelScale_data + call DWM_UnpackMeanderData(RF, OutData%meandering_data) ! meandering_data + call DWM_UnpackWeiMethod(RF, OutData%weighting_method) ! weighting_method + call DWM_UnpackTIDownstream(RF, OutData%TI_downstream_data) ! TI_downstream_data + call DWM_UnpackTurbKaimal(RF, OutData%Turbulence_KS) ! Turbulence_KS + call DWM_UnpackShinozuka(RF, OutData%shinozuka_data) ! shinozuka_data + call DWM_Unpacksmooth_out_wake_data(RF, OutData%SmoothOut) ! SmoothOut + call DWM_UnpackSWSV(RF, OutData%smooth_wake_shifted_velocity_data) ! smooth_wake_shifted_velocity_data + call DWM_UnpackWake_Deficit_Data(RF, OutData%DWDD) ! DWDD + call RegUnpack(RF, OutData%ct_tilde); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FAST_Time); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SDtimestep); if (RegCheckErr(RF, RoutineName)) return + call DWM_Unpackturbine_blade(RF, OutData%DWM_tb) ! DWM_tb + call DWM_Unpackwake_meandered_center(RF, OutData%WMC) ! WMC end subroutine subroutine DWM_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -3108,23 +2222,23 @@ subroutine DWM_DestroyInput(InputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine DWM_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(DWM_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call DWM_Packread_upwind_result(Buf, InData%Upwind_result) - call InflowWind_PackInput(Buf, InData%IfW) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call DWM_Packread_upwind_result(RF, InData%Upwind_result) + call InflowWind_PackInput(RF, InData%IfW) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DWM_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(DWM_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackInput' - if (Buf%ErrStat /= ErrID_None) return - call DWM_Unpackread_upwind_result(Buf, OutData%Upwind_result) ! Upwind_result - call InflowWind_UnpackInput(Buf, OutData%IfW) ! IfW + if (RF%ErrStat /= ErrID_None) return + call DWM_Unpackread_upwind_result(RF, OutData%Upwind_result) ! Upwind_result + call InflowWind_UnpackInput(RF, OutData%IfW) ! IfW end subroutine subroutine DWM_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -3285,200 +2399,56 @@ subroutine DWM_DestroyOutput(OutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine DWM_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(DWM_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%turbine_thrust_force)) - if (allocated(InData%turbine_thrust_force)) then - call RegPackBounds(Buf, 1, lbound(InData%turbine_thrust_force, kind=B8Ki), ubound(InData%turbine_thrust_force, kind=B8Ki)) - call RegPack(Buf, InData%turbine_thrust_force) - end if - call RegPack(Buf, allocated(InData%induction_factor)) - if (allocated(InData%induction_factor)) then - call RegPackBounds(Buf, 1, lbound(InData%induction_factor, kind=B8Ki), ubound(InData%induction_factor, kind=B8Ki)) - call RegPack(Buf, InData%induction_factor) - end if - call RegPack(Buf, allocated(InData%r_initial)) - if (allocated(InData%r_initial)) then - call RegPackBounds(Buf, 1, lbound(InData%r_initial, kind=B8Ki), ubound(InData%r_initial, kind=B8Ki)) - call RegPack(Buf, InData%r_initial) - end if - call RegPack(Buf, allocated(InData%U_initial)) - if (allocated(InData%U_initial)) then - call RegPackBounds(Buf, 1, lbound(InData%U_initial, kind=B8Ki), ubound(InData%U_initial, kind=B8Ki)) - call RegPack(Buf, InData%U_initial) - end if - call RegPack(Buf, allocated(InData%Mean_FFWS_array)) - if (allocated(InData%Mean_FFWS_array)) then - call RegPackBounds(Buf, 1, lbound(InData%Mean_FFWS_array, kind=B8Ki), ubound(InData%Mean_FFWS_array, kind=B8Ki)) - call RegPack(Buf, InData%Mean_FFWS_array) - end if - call RegPack(Buf, InData%Mean_FFWS) - call RegPack(Buf, InData%TI) - call RegPack(Buf, InData%TI_downstream) - call RegPack(Buf, allocated(InData%wake_u)) - if (allocated(InData%wake_u)) then - call RegPackBounds(Buf, 2, lbound(InData%wake_u, kind=B8Ki), ubound(InData%wake_u, kind=B8Ki)) - call RegPack(Buf, InData%wake_u) - end if - call RegPack(Buf, allocated(InData%wake_position)) - if (allocated(InData%wake_position)) then - call RegPackBounds(Buf, 3, lbound(InData%wake_position, kind=B8Ki), ubound(InData%wake_position, kind=B8Ki)) - call RegPack(Buf, InData%wake_position) - end if - call RegPack(Buf, allocated(InData%smoothed_velocity_array)) - if (allocated(InData%smoothed_velocity_array)) then - call RegPackBounds(Buf, 2, lbound(InData%smoothed_velocity_array, kind=B8Ki), ubound(InData%smoothed_velocity_array, kind=B8Ki)) - call RegPack(Buf, InData%smoothed_velocity_array) - end if - call RegPack(Buf, InData%AtmUscale) - call RegPack(Buf, InData%du_dz_ABL) - call RegPack(Buf, InData%total_SDgenpwr) - call RegPack(Buf, InData%mean_SDgenpwr) - call RegPack(Buf, InData%avg_ct) - call InflowWind_PackOutput(Buf, InData%IfW) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine DWM_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%turbine_thrust_force) + call RegPackAlloc(RF, InData%induction_factor) + call RegPackAlloc(RF, InData%r_initial) + call RegPackAlloc(RF, InData%U_initial) + call RegPackAlloc(RF, InData%Mean_FFWS_array) + call RegPack(RF, InData%Mean_FFWS) + call RegPack(RF, InData%TI) + call RegPack(RF, InData%TI_downstream) + call RegPackAlloc(RF, InData%wake_u) + call RegPackAlloc(RF, InData%wake_position) + call RegPackAlloc(RF, InData%smoothed_velocity_array) + call RegPack(RF, InData%AtmUscale) + call RegPack(RF, InData%du_dz_ABL) + call RegPack(RF, InData%total_SDgenpwr) + call RegPack(RF, InData%mean_SDgenpwr) + call RegPack(RF, InData%avg_ct) + call InflowWind_PackOutput(RF, InData%IfW) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine DWM_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(DWM_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackOutput' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%turbine_thrust_force)) deallocate(OutData%turbine_thrust_force) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%turbine_thrust_force(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%turbine_thrust_force.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%turbine_thrust_force) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%induction_factor)) deallocate(OutData%induction_factor) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%induction_factor(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%induction_factor.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%induction_factor) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%r_initial)) deallocate(OutData%r_initial) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%r_initial(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%r_initial.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%r_initial) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%U_initial)) deallocate(OutData%U_initial) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%U_initial(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%U_initial.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%U_initial) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Mean_FFWS_array)) deallocate(OutData%Mean_FFWS_array) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Mean_FFWS_array(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Mean_FFWS_array.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Mean_FFWS_array) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Mean_FFWS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TI) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TI_downstream) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%wake_u)) deallocate(OutData%wake_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%wake_u(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%wake_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%wake_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%wake_position)) deallocate(OutData%wake_position) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%wake_position(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%wake_position.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%wake_position) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%smoothed_velocity_array)) deallocate(OutData%smoothed_velocity_array) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%smoothed_velocity_array(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%smoothed_velocity_array.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%smoothed_velocity_array) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%AtmUscale) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%du_dz_ABL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%total_SDgenpwr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%mean_SDgenpwr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%avg_ct) - if (RegCheckErr(Buf, RoutineName)) return - call InflowWind_UnpackOutput(Buf, OutData%IfW) ! IfW + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%turbine_thrust_force); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%induction_factor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%r_initial); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%U_initial); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Mean_FFWS_array); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Mean_FFWS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TI_downstream); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%wake_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%wake_position); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%smoothed_velocity_array); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AtmUscale); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%du_dz_ABL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%total_SDgenpwr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%mean_SDgenpwr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%avg_ct); if (RegCheckErr(RF, RoutineName)) return + call InflowWind_UnpackOutput(RF, OutData%IfW) ! IfW end subroutine subroutine DWM_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -3511,24 +2481,23 @@ subroutine DWM_DestroyContState(ContStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine DWM_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(DWM_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%dummy) - call InflowWind_PackContState(Buf, InData%IfW) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%dummy) + call InflowWind_PackContState(RF, InData%IfW) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DWM_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(DWM_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackContState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%dummy) - if (RegCheckErr(Buf, RoutineName)) return - call InflowWind_UnpackContState(Buf, OutData%IfW) ! IfW + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%dummy); if (RegCheckErr(RF, RoutineName)) return + call InflowWind_UnpackContState(RF, OutData%IfW) ! IfW end subroutine subroutine DWM_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -3561,24 +2530,23 @@ subroutine DWM_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine DWM_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(DWM_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%dummy) - call InflowWind_PackDiscState(Buf, InData%IfW) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%dummy) + call InflowWind_PackDiscState(RF, InData%IfW) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DWM_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(DWM_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%dummy) - if (RegCheckErr(Buf, RoutineName)) return - call InflowWind_UnpackDiscState(Buf, OutData%IfW) ! IfW + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%dummy); if (RegCheckErr(RF, RoutineName)) return + call InflowWind_UnpackDiscState(RF, OutData%IfW) ! IfW end subroutine subroutine DWM_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -3611,24 +2579,23 @@ subroutine DWM_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine DWM_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(DWM_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%dummy) - call InflowWind_PackConstrState(Buf, InData%IfW) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%dummy) + call InflowWind_PackConstrState(RF, InData%IfW) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DWM_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(DWM_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%dummy) - if (RegCheckErr(Buf, RoutineName)) return - call InflowWind_UnpackConstrState(Buf, OutData%IfW) ! IfW + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%dummy); if (RegCheckErr(RF, RoutineName)) return + call InflowWind_UnpackConstrState(RF, OutData%IfW) ! IfW end subroutine subroutine DWM_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -3661,24 +2628,23 @@ subroutine DWM_DestroyInitInput(InitInputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine DWM_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(DWM_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%dummy) - call InflowWind_PackInitInput(Buf, InData%IfW) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%dummy) + call InflowWind_PackInitInput(RF, InData%IfW) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DWM_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(DWM_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackInitInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%dummy) - if (RegCheckErr(Buf, RoutineName)) return - call InflowWind_UnpackInitInput(Buf, OutData%IfW) ! IfW + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%dummy); if (RegCheckErr(RF, RoutineName)) return + call InflowWind_UnpackInitInput(RF, OutData%IfW) ! IfW end subroutine subroutine DWM_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -3711,24 +2677,23 @@ subroutine DWM_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine DWM_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(DWM_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'DWM_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%dummy) - call InflowWind_PackInitOutput(Buf, InData%IfW) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%dummy) + call InflowWind_PackInitOutput(RF, InData%IfW) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine DWM_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine DWM_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(DWM_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'DWM_UnPackInitOutput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%dummy) - if (RegCheckErr(Buf, RoutineName)) return - call InflowWind_UnpackInitOutput(Buf, OutData%IfW) ! IfW + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%dummy); if (RegCheckErr(RF, RoutineName)) return + call InflowWind_UnpackInitOutput(RF, OutData%IfW) ! IfW end subroutine subroutine DWM_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/awae/src/AWAE_Types.f90 b/modules/awae/src/AWAE_Types.f90 index 3845a5e793..fdc1135a1f 100644 --- a/modules/awae/src/AWAE_Types.f90 +++ b/modules/awae/src/AWAE_Types.f90 @@ -285,25 +285,18 @@ subroutine AWAE_DestroyHighWindGrid(HighWindGridData, ErrStat, ErrMsg) end if end subroutine -subroutine AWAE_PackHighWindGrid(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_PackHighWindGrid(RF, Indata) + type(RegFile), intent(inout) :: RF type(AWAE_HighWindGrid), intent(in) :: InData character(*), parameter :: RoutineName = 'AWAE_PackHighWindGrid' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, associated(InData%data)) - if (associated(InData%data)) then - call RegPackBounds(Buf, 5, lbound(InData%data, kind=B8Ki), ubound(InData%data, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%data), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%data) - end if - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackPtr(RF, InData%data) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AWAE_UnPackHighWindGrid(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_UnPackHighWindGrid(RF, OutData) + type(RegFile), intent(inout) :: RF type(AWAE_HighWindGrid), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AWAE_UnPackHighWindGrid' integer(B8Ki) :: LB(5), UB(5) @@ -311,31 +304,8 @@ subroutine AWAE_UnPackHighWindGrid(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - if (associated(OutData%data)) deallocate(OutData%data) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 5, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%data, UB(1:5)-LB(1:5)) - OutData%data(LB(1):,LB(2):,LB(3):,LB(4):,LB(5):) => OutData%data - else - allocate(OutData%data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%data.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%data) - call RegUnpack(Buf, OutData%data) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%data => null() - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackPtr(RF, OutData%data); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AWAE_CopyHighWindGridPtr(SrcHighWindGridPtrData, DstHighWindGridPtrData, CtrlCode, ErrStat, ErrMsg) @@ -362,25 +332,18 @@ subroutine AWAE_DestroyHighWindGridPtr(HighWindGridPtrData, ErrStat, ErrMsg) nullify(HighWindGridPtrData%data) end subroutine -subroutine AWAE_PackHighWindGridPtr(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_PackHighWindGridPtr(RF, Indata) + type(RegFile), intent(inout) :: RF type(AWAE_HighWindGridPtr), intent(in) :: InData character(*), parameter :: RoutineName = 'AWAE_PackHighWindGridPtr' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, associated(InData%data)) - if (associated(InData%data)) then - call RegPackBounds(Buf, 5, lbound(InData%data, kind=B8Ki), ubound(InData%data, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%data), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%data) - end if - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackPtr(RF, InData%data) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AWAE_UnPackHighWindGridPtr(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_UnPackHighWindGridPtr(RF, OutData) + type(RegFile), intent(inout) :: RF type(AWAE_HighWindGridPtr), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AWAE_UnPackHighWindGridPtr' integer(B8Ki) :: LB(5), UB(5) @@ -388,31 +351,8 @@ subroutine AWAE_UnPackHighWindGridPtr(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - if (associated(OutData%data)) deallocate(OutData%data) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 5, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%data, UB(1:5)-LB(1:5)) - OutData%data(LB(1):,LB(2):,LB(3):,LB(4):,LB(5):) => OutData%data - else - allocate(OutData%data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%data.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%data) - call RegUnpack(Buf, OutData%data) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%data => null() - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackPtr(RF, OutData%data); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AWAE_CopyInputFileType(SrcInputFileTypeData, DstInputFileTypeData, CtrlCode, ErrStat, ErrMsg) @@ -617,302 +557,102 @@ subroutine AWAE_DestroyInputFileType(InputFileTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine AWAE_PackInputFileType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_PackInputFileType(RF, Indata) + type(RegFile), intent(inout) :: RF type(AWAE_InputFileType), intent(in) :: InData character(*), parameter :: RoutineName = 'AWAE_PackInputFileType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%dr) - call RegPack(Buf, InData%dt_low) - call RegPack(Buf, InData%NumTurbines) - call RegPack(Buf, InData%NumRadii) - call RegPack(Buf, InData%NumPlanes) - call RegPack(Buf, InData%WindFilePath) - call RegPack(Buf, InData%WrDisWind) - call RegPack(Buf, InData%NOutDisWindXY) - call RegPack(Buf, allocated(InData%OutDisWindZ)) - if (allocated(InData%OutDisWindZ)) then - call RegPackBounds(Buf, 1, lbound(InData%OutDisWindZ, kind=B8Ki), ubound(InData%OutDisWindZ, kind=B8Ki)) - call RegPack(Buf, InData%OutDisWindZ) - end if - call RegPack(Buf, InData%NOutDisWindYZ) - call RegPack(Buf, allocated(InData%OutDisWindX)) - if (allocated(InData%OutDisWindX)) then - call RegPackBounds(Buf, 1, lbound(InData%OutDisWindX, kind=B8Ki), ubound(InData%OutDisWindX, kind=B8Ki)) - call RegPack(Buf, InData%OutDisWindX) - end if - call RegPack(Buf, InData%NOutDisWindXZ) - call RegPack(Buf, allocated(InData%OutDisWindY)) - if (allocated(InData%OutDisWindY)) then - call RegPackBounds(Buf, 1, lbound(InData%OutDisWindY, kind=B8Ki), ubound(InData%OutDisWindY, kind=B8Ki)) - call RegPack(Buf, InData%OutDisWindY) - end if - call RegPack(Buf, InData%WrDisDT) - call RegPack(Buf, InData%ChkWndFiles) - call RegPack(Buf, InData%Mod_Meander) - call RegPack(Buf, InData%C_Meander) - call RegPack(Buf, InData%Mod_AmbWind) - call RegPack(Buf, InData%InflowFile) - call RegPack(Buf, InData%dt_high) - call RegPack(Buf, allocated(InData%X0_high)) - if (allocated(InData%X0_high)) then - call RegPackBounds(Buf, 1, lbound(InData%X0_high, kind=B8Ki), ubound(InData%X0_high, kind=B8Ki)) - call RegPack(Buf, InData%X0_high) - end if - call RegPack(Buf, allocated(InData%Y0_high)) - if (allocated(InData%Y0_high)) then - call RegPackBounds(Buf, 1, lbound(InData%Y0_high, kind=B8Ki), ubound(InData%Y0_high, kind=B8Ki)) - call RegPack(Buf, InData%Y0_high) - end if - call RegPack(Buf, allocated(InData%Z0_high)) - if (allocated(InData%Z0_high)) then - call RegPackBounds(Buf, 1, lbound(InData%Z0_high, kind=B8Ki), ubound(InData%Z0_high, kind=B8Ki)) - call RegPack(Buf, InData%Z0_high) - end if - call RegPack(Buf, allocated(InData%dX_high)) - if (allocated(InData%dX_high)) then - call RegPackBounds(Buf, 1, lbound(InData%dX_high, kind=B8Ki), ubound(InData%dX_high, kind=B8Ki)) - call RegPack(Buf, InData%dX_high) - end if - call RegPack(Buf, allocated(InData%dY_high)) - if (allocated(InData%dY_high)) then - call RegPackBounds(Buf, 1, lbound(InData%dY_high, kind=B8Ki), ubound(InData%dY_high, kind=B8Ki)) - call RegPack(Buf, InData%dY_high) - end if - call RegPack(Buf, allocated(InData%dZ_high)) - if (allocated(InData%dZ_high)) then - call RegPackBounds(Buf, 1, lbound(InData%dZ_high, kind=B8Ki), ubound(InData%dZ_high, kind=B8Ki)) - call RegPack(Buf, InData%dZ_high) - end if - call RegPack(Buf, InData%nX_high) - call RegPack(Buf, InData%nY_high) - call RegPack(Buf, InData%nZ_high) - call RegPack(Buf, InData%dX_low) - call RegPack(Buf, InData%dY_low) - call RegPack(Buf, InData%dZ_low) - call RegPack(Buf, InData%nX_low) - call RegPack(Buf, InData%nY_low) - call RegPack(Buf, InData%nZ_low) - call RegPack(Buf, InData%X0_low) - call RegPack(Buf, InData%Y0_low) - call RegPack(Buf, InData%Z0_low) - call RegPack(Buf, allocated(InData%WT_Position)) - if (allocated(InData%WT_Position)) then - call RegPackBounds(Buf, 2, lbound(InData%WT_Position, kind=B8Ki), ubound(InData%WT_Position, kind=B8Ki)) - call RegPack(Buf, InData%WT_Position) - end if - call RegPack(Buf, InData%Mod_Projection) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%dr) + call RegPack(RF, InData%dt_low) + call RegPack(RF, InData%NumTurbines) + call RegPack(RF, InData%NumRadii) + call RegPack(RF, InData%NumPlanes) + call RegPack(RF, InData%WindFilePath) + call RegPack(RF, InData%WrDisWind) + call RegPack(RF, InData%NOutDisWindXY) + call RegPackAlloc(RF, InData%OutDisWindZ) + call RegPack(RF, InData%NOutDisWindYZ) + call RegPackAlloc(RF, InData%OutDisWindX) + call RegPack(RF, InData%NOutDisWindXZ) + call RegPackAlloc(RF, InData%OutDisWindY) + call RegPack(RF, InData%WrDisDT) + call RegPack(RF, InData%ChkWndFiles) + call RegPack(RF, InData%Mod_Meander) + call RegPack(RF, InData%C_Meander) + call RegPack(RF, InData%Mod_AmbWind) + call RegPack(RF, InData%InflowFile) + call RegPack(RF, InData%dt_high) + call RegPackAlloc(RF, InData%X0_high) + call RegPackAlloc(RF, InData%Y0_high) + call RegPackAlloc(RF, InData%Z0_high) + call RegPackAlloc(RF, InData%dX_high) + call RegPackAlloc(RF, InData%dY_high) + call RegPackAlloc(RF, InData%dZ_high) + call RegPack(RF, InData%nX_high) + call RegPack(RF, InData%nY_high) + call RegPack(RF, InData%nZ_high) + call RegPack(RF, InData%dX_low) + call RegPack(RF, InData%dY_low) + call RegPack(RF, InData%dZ_low) + call RegPack(RF, InData%nX_low) + call RegPack(RF, InData%nY_low) + call RegPack(RF, InData%nZ_low) + call RegPack(RF, InData%X0_low) + call RegPack(RF, InData%Y0_low) + call RegPack(RF, InData%Z0_low) + call RegPackAlloc(RF, InData%WT_Position) + call RegPack(RF, InData%Mod_Projection) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AWAE_UnPackInputFileType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_UnPackInputFileType(RF, OutData) + type(RegFile), intent(inout) :: RF type(AWAE_InputFileType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AWAE_UnPackInputFileType' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%dr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dt_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumTurbines) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumRadii) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumPlanes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WindFilePath) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WrDisWind) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NOutDisWindXY) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutDisWindZ)) deallocate(OutData%OutDisWindZ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutDisWindZ(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutDisWindZ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutDisWindZ) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NOutDisWindYZ) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutDisWindX)) deallocate(OutData%OutDisWindX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutDisWindX(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutDisWindX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutDisWindX) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NOutDisWindXZ) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutDisWindY)) deallocate(OutData%OutDisWindY) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutDisWindY(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutDisWindY.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutDisWindY) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%WrDisDT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ChkWndFiles) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Mod_Meander) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_Meander) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Mod_AmbWind) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InflowFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dt_high) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%X0_high)) deallocate(OutData%X0_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%X0_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%X0_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%X0_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Y0_high)) deallocate(OutData%Y0_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Y0_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Y0_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Y0_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Z0_high)) deallocate(OutData%Z0_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Z0_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Z0_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Z0_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dX_high)) deallocate(OutData%dX_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dX_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dX_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dX_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dY_high)) deallocate(OutData%dY_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dY_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dY_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dY_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dZ_high)) deallocate(OutData%dZ_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dZ_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dZ_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dZ_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%nX_high) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nY_high) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nZ_high) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dX_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dY_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dZ_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nX_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nY_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nZ_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%X0_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Y0_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Z0_low) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WT_Position)) deallocate(OutData%WT_Position) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WT_Position(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WT_Position.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WT_Position) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Mod_Projection) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%dr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dt_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumTurbines); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumRadii); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumPlanes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WindFilePath); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrDisWind); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NOutDisWindXY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutDisWindZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NOutDisWindYZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutDisWindX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NOutDisWindXZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutDisWindY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrDisDT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ChkWndFiles); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Mod_Meander); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_Meander); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Mod_AmbWind); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InflowFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dt_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%X0_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Y0_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Z0_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dX_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dY_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dZ_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nX_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nY_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nZ_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dX_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dY_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dZ_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nX_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nY_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nZ_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%X0_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Y0_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Z0_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WT_Position); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Mod_Projection); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AWAE_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -947,30 +687,27 @@ subroutine AWAE_DestroyInitInput(InitInputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AWAE_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AWAE_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AWAE_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call AWAE_PackInputFileType(Buf, InData%InputFileData) - call RegPack(Buf, InData%n_high_low) - call RegPack(Buf, InData%NumDT) - call RegPack(Buf, InData%OutFileRoot) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call AWAE_PackInputFileType(RF, InData%InputFileData) + call RegPack(RF, InData%n_high_low) + call RegPack(RF, InData%NumDT) + call RegPack(RF, InData%OutFileRoot) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AWAE_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AWAE_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AWAE_UnPackInitInput' - if (Buf%ErrStat /= ErrID_None) return - call AWAE_UnpackInputFileType(Buf, OutData%InputFileData) ! InputFileData - call RegUnpack(Buf, OutData%n_high_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumDT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFileRoot) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call AWAE_UnpackInputFileType(RF, OutData%InputFileData) ! InputFileData + call RegUnpack(RF, OutData%n_high_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumDT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFileRoot); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AWAE_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -1133,199 +870,83 @@ subroutine AWAE_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine AWAE_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AWAE_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AWAE_PackInitOutput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call RegPack(Buf, allocated(InData%X0_high)) - if (allocated(InData%X0_high)) then - call RegPackBounds(Buf, 1, lbound(InData%X0_high, kind=B8Ki), ubound(InData%X0_high, kind=B8Ki)) - call RegPack(Buf, InData%X0_high) - end if - call RegPack(Buf, allocated(InData%Y0_high)) - if (allocated(InData%Y0_high)) then - call RegPackBounds(Buf, 1, lbound(InData%Y0_high, kind=B8Ki), ubound(InData%Y0_high, kind=B8Ki)) - call RegPack(Buf, InData%Y0_high) - end if - call RegPack(Buf, allocated(InData%Z0_high)) - if (allocated(InData%Z0_high)) then - call RegPackBounds(Buf, 1, lbound(InData%Z0_high, kind=B8Ki), ubound(InData%Z0_high, kind=B8Ki)) - call RegPack(Buf, InData%Z0_high) - end if - call RegPack(Buf, allocated(InData%dX_high)) - if (allocated(InData%dX_high)) then - call RegPackBounds(Buf, 1, lbound(InData%dX_high, kind=B8Ki), ubound(InData%dX_high, kind=B8Ki)) - call RegPack(Buf, InData%dX_high) - end if - call RegPack(Buf, allocated(InData%dY_high)) - if (allocated(InData%dY_high)) then - call RegPackBounds(Buf, 1, lbound(InData%dY_high, kind=B8Ki), ubound(InData%dY_high, kind=B8Ki)) - call RegPack(Buf, InData%dY_high) - end if - call RegPack(Buf, allocated(InData%dZ_high)) - if (allocated(InData%dZ_high)) then - call RegPackBounds(Buf, 1, lbound(InData%dZ_high, kind=B8Ki), ubound(InData%dZ_high, kind=B8Ki)) - call RegPack(Buf, InData%dZ_high) - end if - call RegPack(Buf, InData%nX_high) - call RegPack(Buf, InData%nY_high) - call RegPack(Buf, InData%nZ_high) - call RegPack(Buf, InData%dX_low) - call RegPack(Buf, InData%dY_low) - call RegPack(Buf, InData%dZ_low) - call RegPack(Buf, InData%nX_low) - call RegPack(Buf, InData%nY_low) - call RegPack(Buf, InData%nZ_low) - call RegPack(Buf, InData%X0_low) - call RegPack(Buf, InData%Y0_low) - call RegPack(Buf, InData%Z0_low) - call RegPack(Buf, allocated(InData%Vdist_High)) + if (RF%ErrStat >= AbortErrLev) return + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call RegPackAlloc(RF, InData%X0_high) + call RegPackAlloc(RF, InData%Y0_high) + call RegPackAlloc(RF, InData%Z0_high) + call RegPackAlloc(RF, InData%dX_high) + call RegPackAlloc(RF, InData%dY_high) + call RegPackAlloc(RF, InData%dZ_high) + call RegPack(RF, InData%nX_high) + call RegPack(RF, InData%nY_high) + call RegPack(RF, InData%nZ_high) + call RegPack(RF, InData%dX_low) + call RegPack(RF, InData%dY_low) + call RegPack(RF, InData%dZ_low) + call RegPack(RF, InData%nX_low) + call RegPack(RF, InData%nY_low) + call RegPack(RF, InData%nZ_low) + call RegPack(RF, InData%X0_low) + call RegPack(RF, InData%Y0_low) + call RegPack(RF, InData%Z0_low) + call RegPack(RF, allocated(InData%Vdist_High)) if (allocated(InData%Vdist_High)) then - call RegPackBounds(Buf, 1, lbound(InData%Vdist_High, kind=B8Ki), ubound(InData%Vdist_High, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Vdist_High, kind=B8Ki), ubound(InData%Vdist_High, kind=B8Ki)) LB(1:1) = lbound(InData%Vdist_High, kind=B8Ki) UB(1:1) = ubound(InData%Vdist_High, kind=B8Ki) do i1 = LB(1), UB(1) - call AWAE_PackHighWindGridPtr(Buf, InData%Vdist_High(i1)) + call AWAE_PackHighWindGridPtr(RF, InData%Vdist_High(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AWAE_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AWAE_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AWAE_UnPackInitOutput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver - if (allocated(OutData%X0_high)) deallocate(OutData%X0_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%X0_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%X0_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%X0_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Y0_high)) deallocate(OutData%Y0_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Y0_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Y0_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Y0_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Z0_high)) deallocate(OutData%Z0_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Z0_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Z0_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Z0_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dX_high)) deallocate(OutData%dX_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dX_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dX_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dX_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dY_high)) deallocate(OutData%dY_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dY_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dY_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dY_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dZ_high)) deallocate(OutData%dZ_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dZ_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dZ_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dZ_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%nX_high) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nY_high) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nZ_high) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dX_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dY_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dZ_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nX_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nY_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nZ_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%X0_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Y0_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Z0_low) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver + call RegUnpackAlloc(RF, OutData%X0_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Y0_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Z0_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dX_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dY_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dZ_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nX_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nY_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nZ_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dX_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dY_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dZ_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nX_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nY_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nZ_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%X0_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Y0_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Z0_low); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%Vdist_High)) deallocate(OutData%Vdist_High) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Vdist_High(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vdist_High.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vdist_High.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AWAE_UnpackHighWindGridPtr(Buf, OutData%Vdist_High(i1)) ! Vdist_High + call AWAE_UnpackHighWindGridPtr(RF, OutData%Vdist_High(i1)) ! Vdist_High end do end if end subroutine @@ -1383,47 +1004,45 @@ subroutine AWAE_DestroyContState(ContStateData, ErrStat, ErrMsg) end if end subroutine -subroutine AWAE_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(AWAE_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AWAE_PackContState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%IfW)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%IfW)) if (allocated(InData%IfW)) then - call RegPackBounds(Buf, 1, lbound(InData%IfW, kind=B8Ki), ubound(InData%IfW, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%IfW, kind=B8Ki), ubound(InData%IfW, kind=B8Ki)) LB(1:1) = lbound(InData%IfW, kind=B8Ki) UB(1:1) = ubound(InData%IfW, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_PackContState(Buf, InData%IfW(i1)) + call InflowWind_PackContState(RF, InData%IfW(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AWAE_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(AWAE_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AWAE_UnPackContState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%IfW)) deallocate(OutData%IfW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%IfW(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IfW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IfW.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call InflowWind_UnpackContState(Buf, OutData%IfW(i1)) ! IfW + call InflowWind_UnpackContState(RF, OutData%IfW(i1)) ! IfW end do end if end subroutine @@ -1481,47 +1100,45 @@ subroutine AWAE_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) end if end subroutine -subroutine AWAE_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(AWAE_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AWAE_PackDiscState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%IfW)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%IfW)) if (allocated(InData%IfW)) then - call RegPackBounds(Buf, 1, lbound(InData%IfW, kind=B8Ki), ubound(InData%IfW, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%IfW, kind=B8Ki), ubound(InData%IfW, kind=B8Ki)) LB(1:1) = lbound(InData%IfW, kind=B8Ki) UB(1:1) = ubound(InData%IfW, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_PackDiscState(Buf, InData%IfW(i1)) + call InflowWind_PackDiscState(RF, InData%IfW(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AWAE_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(AWAE_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AWAE_UnPackDiscState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%IfW)) deallocate(OutData%IfW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%IfW(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IfW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IfW.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call InflowWind_UnpackDiscState(Buf, OutData%IfW(i1)) ! IfW + call InflowWind_UnpackDiscState(RF, OutData%IfW(i1)) ! IfW end do end if end subroutine @@ -1579,47 +1196,45 @@ subroutine AWAE_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) end if end subroutine -subroutine AWAE_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(AWAE_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AWAE_PackConstrState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%IfW)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%IfW)) if (allocated(InData%IfW)) then - call RegPackBounds(Buf, 1, lbound(InData%IfW, kind=B8Ki), ubound(InData%IfW, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%IfW, kind=B8Ki), ubound(InData%IfW, kind=B8Ki)) LB(1:1) = lbound(InData%IfW, kind=B8Ki) UB(1:1) = ubound(InData%IfW, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_PackConstrState(Buf, InData%IfW(i1)) + call InflowWind_PackConstrState(RF, InData%IfW(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AWAE_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(AWAE_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AWAE_UnPackConstrState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%IfW)) deallocate(OutData%IfW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%IfW(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IfW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IfW.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call InflowWind_UnpackConstrState(Buf, OutData%IfW(i1)) ! IfW + call InflowWind_UnpackConstrState(RF, OutData%IfW(i1)) ! IfW end do end if end subroutine @@ -1677,47 +1292,45 @@ subroutine AWAE_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) end if end subroutine -subroutine AWAE_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(AWAE_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'AWAE_PackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%IfW)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%IfW)) if (allocated(InData%IfW)) then - call RegPackBounds(Buf, 1, lbound(InData%IfW, kind=B8Ki), ubound(InData%IfW, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%IfW, kind=B8Ki), ubound(InData%IfW, kind=B8Ki)) LB(1:1) = lbound(InData%IfW, kind=B8Ki) UB(1:1) = ubound(InData%IfW, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_PackOtherState(Buf, InData%IfW(i1)) + call InflowWind_PackOtherState(RF, InData%IfW(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AWAE_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(AWAE_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AWAE_UnPackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%IfW)) deallocate(OutData%IfW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%IfW(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IfW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IfW.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call InflowWind_UnpackOtherState(Buf, OutData%IfW(i1)) ! IfW + call InflowWind_UnpackOtherState(RF, OutData%IfW(i1)) ! IfW end do end if end subroutine @@ -2030,347 +1643,105 @@ subroutine AWAE_DestroyMisc(MiscData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine AWAE_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(AWAE_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'AWAE_PackMisc' integer(B8Ki) :: i1, i2, i3, i4 integer(B8Ki) :: LB(4), UB(4) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Vamb_low)) - if (allocated(InData%Vamb_low)) then - call RegPackBounds(Buf, 4, lbound(InData%Vamb_low, kind=B8Ki), ubound(InData%Vamb_low, kind=B8Ki)) - call RegPack(Buf, InData%Vamb_low) - end if - call RegPack(Buf, allocated(InData%Vamb_lowpol)) - if (allocated(InData%Vamb_lowpol)) then - call RegPackBounds(Buf, 2, lbound(InData%Vamb_lowpol, kind=B8Ki), ubound(InData%Vamb_lowpol, kind=B8Ki)) - call RegPack(Buf, InData%Vamb_lowpol) - end if - call RegPack(Buf, allocated(InData%Vdist_low)) - if (allocated(InData%Vdist_low)) then - call RegPackBounds(Buf, 4, lbound(InData%Vdist_low, kind=B8Ki), ubound(InData%Vdist_low, kind=B8Ki)) - call RegPack(Buf, InData%Vdist_low) - end if - call RegPack(Buf, allocated(InData%Vdist_low_full)) - if (allocated(InData%Vdist_low_full)) then - call RegPackBounds(Buf, 4, lbound(InData%Vdist_low_full, kind=B8Ki), ubound(InData%Vdist_low_full, kind=B8Ki)) - call RegPack(Buf, InData%Vdist_low_full) - end if - call RegPack(Buf, allocated(InData%Vamb_High)) + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%Vamb_low) + call RegPackAlloc(RF, InData%Vamb_lowpol) + call RegPackAlloc(RF, InData%Vdist_low) + call RegPackAlloc(RF, InData%Vdist_low_full) + call RegPack(RF, allocated(InData%Vamb_High)) if (allocated(InData%Vamb_High)) then - call RegPackBounds(Buf, 1, lbound(InData%Vamb_High, kind=B8Ki), ubound(InData%Vamb_High, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Vamb_High, kind=B8Ki), ubound(InData%Vamb_High, kind=B8Ki)) LB(1:1) = lbound(InData%Vamb_High, kind=B8Ki) UB(1:1) = ubound(InData%Vamb_High, kind=B8Ki) do i1 = LB(1), UB(1) - call AWAE_PackHighWindGrid(Buf, InData%Vamb_High(i1)) + call AWAE_PackHighWindGrid(RF, InData%Vamb_High(i1)) end do end if - call RegPack(Buf, allocated(InData%parallelFlag)) - if (allocated(InData%parallelFlag)) then - call RegPackBounds(Buf, 2, lbound(InData%parallelFlag, kind=B8Ki), ubound(InData%parallelFlag, kind=B8Ki)) - call RegPack(Buf, InData%parallelFlag) - end if - call RegPack(Buf, allocated(InData%r_s)) - if (allocated(InData%r_s)) then - call RegPackBounds(Buf, 2, lbound(InData%r_s, kind=B8Ki), ubound(InData%r_s, kind=B8Ki)) - call RegPack(Buf, InData%r_s) - end if - call RegPack(Buf, allocated(InData%r_e)) - if (allocated(InData%r_e)) then - call RegPackBounds(Buf, 2, lbound(InData%r_e, kind=B8Ki), ubound(InData%r_e, kind=B8Ki)) - call RegPack(Buf, InData%r_e) - end if - call RegPack(Buf, allocated(InData%rhat_s)) - if (allocated(InData%rhat_s)) then - call RegPackBounds(Buf, 3, lbound(InData%rhat_s, kind=B8Ki), ubound(InData%rhat_s, kind=B8Ki)) - call RegPack(Buf, InData%rhat_s) - end if - call RegPack(Buf, allocated(InData%rhat_e)) - if (allocated(InData%rhat_e)) then - call RegPackBounds(Buf, 3, lbound(InData%rhat_e, kind=B8Ki), ubound(InData%rhat_e, kind=B8Ki)) - call RegPack(Buf, InData%rhat_e) - end if - call RegPack(Buf, allocated(InData%pvec_cs)) - if (allocated(InData%pvec_cs)) then - call RegPackBounds(Buf, 3, lbound(InData%pvec_cs, kind=B8Ki), ubound(InData%pvec_cs, kind=B8Ki)) - call RegPack(Buf, InData%pvec_cs) - end if - call RegPack(Buf, allocated(InData%pvec_ce)) - if (allocated(InData%pvec_ce)) then - call RegPackBounds(Buf, 3, lbound(InData%pvec_ce, kind=B8Ki), ubound(InData%pvec_ce, kind=B8Ki)) - call RegPack(Buf, InData%pvec_ce) - end if - call RegPack(Buf, allocated(InData%outVizXYPlane)) - if (allocated(InData%outVizXYPlane)) then - call RegPackBounds(Buf, 4, lbound(InData%outVizXYPlane, kind=B8Ki), ubound(InData%outVizXYPlane, kind=B8Ki)) - call RegPack(Buf, InData%outVizXYPlane) - end if - call RegPack(Buf, allocated(InData%outVizYZPlane)) - if (allocated(InData%outVizYZPlane)) then - call RegPackBounds(Buf, 4, lbound(InData%outVizYZPlane, kind=B8Ki), ubound(InData%outVizYZPlane, kind=B8Ki)) - call RegPack(Buf, InData%outVizYZPlane) - end if - call RegPack(Buf, allocated(InData%outVizXZPlane)) - if (allocated(InData%outVizXZPlane)) then - call RegPackBounds(Buf, 4, lbound(InData%outVizXZPlane, kind=B8Ki), ubound(InData%outVizXZPlane, kind=B8Ki)) - call RegPack(Buf, InData%outVizXZPlane) - end if - call RegPack(Buf, allocated(InData%IfW)) + call RegPackAlloc(RF, InData%parallelFlag) + call RegPackAlloc(RF, InData%r_s) + call RegPackAlloc(RF, InData%r_e) + call RegPackAlloc(RF, InData%rhat_s) + call RegPackAlloc(RF, InData%rhat_e) + call RegPackAlloc(RF, InData%pvec_cs) + call RegPackAlloc(RF, InData%pvec_ce) + call RegPackAlloc(RF, InData%outVizXYPlane) + call RegPackAlloc(RF, InData%outVizYZPlane) + call RegPackAlloc(RF, InData%outVizXZPlane) + call RegPack(RF, allocated(InData%IfW)) if (allocated(InData%IfW)) then - call RegPackBounds(Buf, 1, lbound(InData%IfW, kind=B8Ki), ubound(InData%IfW, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%IfW, kind=B8Ki), ubound(InData%IfW, kind=B8Ki)) LB(1:1) = lbound(InData%IfW, kind=B8Ki) UB(1:1) = ubound(InData%IfW, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_PackMisc(Buf, InData%IfW(i1)) + call InflowWind_PackMisc(RF, InData%IfW(i1)) end do end if - call InflowWind_PackInput(Buf, InData%u_IfW_Low) - call InflowWind_PackInput(Buf, InData%u_IfW_High) - call InflowWind_PackOutput(Buf, InData%y_IfW_Low) - call InflowWind_PackOutput(Buf, InData%y_IfW_High) - if (RegCheckErr(Buf, RoutineName)) return + call InflowWind_PackInput(RF, InData%u_IfW_Low) + call InflowWind_PackInput(RF, InData%u_IfW_High) + call InflowWind_PackOutput(RF, InData%y_IfW_Low) + call InflowWind_PackOutput(RF, InData%y_IfW_High) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AWAE_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(AWAE_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AWAE_UnPackMisc' integer(B8Ki) :: i1, i2, i3, i4 integer(B8Ki) :: LB(4), UB(4) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%Vamb_low)) deallocate(OutData%Vamb_low) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vamb_low(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vamb_low.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vamb_low) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vamb_lowpol)) deallocate(OutData%Vamb_lowpol) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vamb_lowpol(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vamb_lowpol.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vamb_lowpol) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vdist_low)) deallocate(OutData%Vdist_low) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vdist_low(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vdist_low.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vdist_low) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vdist_low_full)) deallocate(OutData%Vdist_low_full) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vdist_low_full(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vdist_low_full.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vdist_low_full) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%Vamb_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vamb_lowpol); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vdist_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vdist_low_full); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%Vamb_High)) deallocate(OutData%Vamb_High) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Vamb_High(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vamb_High.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vamb_High.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AWAE_UnpackHighWindGrid(Buf, OutData%Vamb_High(i1)) ! Vamb_High + call AWAE_UnpackHighWindGrid(RF, OutData%Vamb_High(i1)) ! Vamb_High end do end if - if (allocated(OutData%parallelFlag)) deallocate(OutData%parallelFlag) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%parallelFlag(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%parallelFlag.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%parallelFlag) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%r_s)) deallocate(OutData%r_s) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%r_s(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%r_s.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%r_s) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%r_e)) deallocate(OutData%r_e) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%r_e(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%r_e.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%r_e) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rhat_s)) deallocate(OutData%rhat_s) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rhat_s(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rhat_s.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rhat_s) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rhat_e)) deallocate(OutData%rhat_e) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rhat_e(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rhat_e.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rhat_e) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%pvec_cs)) deallocate(OutData%pvec_cs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%pvec_cs(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%pvec_cs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%pvec_cs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%pvec_ce)) deallocate(OutData%pvec_ce) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%pvec_ce(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%pvec_ce.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%pvec_ce) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%outVizXYPlane)) deallocate(OutData%outVizXYPlane) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%outVizXYPlane(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%outVizXYPlane.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%outVizXYPlane) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%outVizYZPlane)) deallocate(OutData%outVizYZPlane) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%outVizYZPlane(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%outVizYZPlane.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%outVizYZPlane) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%outVizXZPlane)) deallocate(OutData%outVizXZPlane) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%outVizXZPlane(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%outVizXZPlane.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%outVizXZPlane) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%parallelFlag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%r_s); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%r_e); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rhat_s); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rhat_e); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%pvec_cs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%pvec_ce); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%outVizXYPlane); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%outVizYZPlane); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%outVizXZPlane); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%IfW)) deallocate(OutData%IfW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%IfW(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IfW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IfW.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call InflowWind_UnpackMisc(Buf, OutData%IfW(i1)) ! IfW + call InflowWind_UnpackMisc(RF, OutData%IfW(i1)) ! IfW end do end if - call InflowWind_UnpackInput(Buf, OutData%u_IfW_Low) ! u_IfW_Low - call InflowWind_UnpackInput(Buf, OutData%u_IfW_High) ! u_IfW_High - call InflowWind_UnpackOutput(Buf, OutData%y_IfW_Low) ! y_IfW_Low - call InflowWind_UnpackOutput(Buf, OutData%y_IfW_High) ! y_IfW_High + call InflowWind_UnpackInput(RF, OutData%u_IfW_Low) ! u_IfW_Low + call InflowWind_UnpackInput(RF, OutData%u_IfW_High) ! u_IfW_High + call InflowWind_UnpackOutput(RF, OutData%y_IfW_Low) ! y_IfW_Low + call InflowWind_UnpackOutput(RF, OutData%y_IfW_High) ! y_IfW_High end subroutine subroutine AWAE_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -2673,426 +2044,149 @@ subroutine AWAE_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine AWAE_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(AWAE_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'AWAE_PackParam' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%WindFilePath) - call RegPack(Buf, InData%NumTurbines) - call RegPack(Buf, InData%NumRadii) - call RegPack(Buf, InData%NumPlanes) - call RegPack(Buf, allocated(InData%y)) - if (allocated(InData%y)) then - call RegPackBounds(Buf, 1, lbound(InData%y, kind=B8Ki), ubound(InData%y, kind=B8Ki)) - call RegPack(Buf, InData%y) - end if - call RegPack(Buf, allocated(InData%z)) - if (allocated(InData%z)) then - call RegPackBounds(Buf, 1, lbound(InData%z, kind=B8Ki), ubound(InData%z, kind=B8Ki)) - call RegPack(Buf, InData%z) - end if - call RegPack(Buf, InData%Mod_AmbWind) - call RegPack(Buf, InData%nX_low) - call RegPack(Buf, InData%nY_low) - call RegPack(Buf, InData%nZ_low) - call RegPack(Buf, InData%NumGrid_low) - call RegPack(Buf, InData%n_rp_max) - call RegPack(Buf, InData%dpol) - call RegPack(Buf, InData%dXYZ_low) - call RegPack(Buf, InData%dX_low) - call RegPack(Buf, InData%dY_low) - call RegPack(Buf, InData%dZ_low) - call RegPack(Buf, InData%X0_low) - call RegPack(Buf, InData%Y0_low) - call RegPack(Buf, InData%Z0_low) - call RegPack(Buf, allocated(InData%X0_high)) - if (allocated(InData%X0_high)) then - call RegPackBounds(Buf, 1, lbound(InData%X0_high, kind=B8Ki), ubound(InData%X0_high, kind=B8Ki)) - call RegPack(Buf, InData%X0_high) - end if - call RegPack(Buf, allocated(InData%Y0_high)) - if (allocated(InData%Y0_high)) then - call RegPackBounds(Buf, 1, lbound(InData%Y0_high, kind=B8Ki), ubound(InData%Y0_high, kind=B8Ki)) - call RegPack(Buf, InData%Y0_high) - end if - call RegPack(Buf, allocated(InData%Z0_high)) - if (allocated(InData%Z0_high)) then - call RegPackBounds(Buf, 1, lbound(InData%Z0_high, kind=B8Ki), ubound(InData%Z0_high, kind=B8Ki)) - call RegPack(Buf, InData%Z0_high) - end if - call RegPack(Buf, allocated(InData%dX_high)) - if (allocated(InData%dX_high)) then - call RegPackBounds(Buf, 1, lbound(InData%dX_high, kind=B8Ki), ubound(InData%dX_high, kind=B8Ki)) - call RegPack(Buf, InData%dX_high) - end if - call RegPack(Buf, allocated(InData%dY_high)) - if (allocated(InData%dY_high)) then - call RegPackBounds(Buf, 1, lbound(InData%dY_high, kind=B8Ki), ubound(InData%dY_high, kind=B8Ki)) - call RegPack(Buf, InData%dY_high) - end if - call RegPack(Buf, allocated(InData%dZ_high)) - if (allocated(InData%dZ_high)) then - call RegPackBounds(Buf, 1, lbound(InData%dZ_high, kind=B8Ki), ubound(InData%dZ_high, kind=B8Ki)) - call RegPack(Buf, InData%dZ_high) - end if - call RegPack(Buf, InData%nX_high) - call RegPack(Buf, InData%nY_high) - call RegPack(Buf, InData%nZ_high) - call RegPack(Buf, allocated(InData%Grid_low)) - if (allocated(InData%Grid_low)) then - call RegPackBounds(Buf, 2, lbound(InData%Grid_low, kind=B8Ki), ubound(InData%Grid_low, kind=B8Ki)) - call RegPack(Buf, InData%Grid_low) - end if - call RegPack(Buf, allocated(InData%Grid_high)) - if (allocated(InData%Grid_high)) then - call RegPackBounds(Buf, 3, lbound(InData%Grid_high, kind=B8Ki), ubound(InData%Grid_high, kind=B8Ki)) - call RegPack(Buf, InData%Grid_high) - end if - call RegPack(Buf, allocated(InData%WT_Position)) - if (allocated(InData%WT_Position)) then - call RegPackBounds(Buf, 2, lbound(InData%WT_Position, kind=B8Ki), ubound(InData%WT_Position, kind=B8Ki)) - call RegPack(Buf, InData%WT_Position) - end if - call RegPack(Buf, InData%n_high_low) - call RegPack(Buf, InData%dt_low) - call RegPack(Buf, InData%dt_high) - call RegPack(Buf, InData%NumDT) - call RegPack(Buf, InData%Mod_Meander) - call RegPack(Buf, InData%C_Meander) - call RegPack(Buf, InData%C_ScaleDiam) - call RegPack(Buf, InData%Mod_Projection) - call RegPack(Buf, allocated(InData%IfW)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%WindFilePath) + call RegPack(RF, InData%NumTurbines) + call RegPack(RF, InData%NumRadii) + call RegPack(RF, InData%NumPlanes) + call RegPackAlloc(RF, InData%y) + call RegPackAlloc(RF, InData%z) + call RegPack(RF, InData%Mod_AmbWind) + call RegPack(RF, InData%nX_low) + call RegPack(RF, InData%nY_low) + call RegPack(RF, InData%nZ_low) + call RegPack(RF, InData%NumGrid_low) + call RegPack(RF, InData%n_rp_max) + call RegPack(RF, InData%dpol) + call RegPack(RF, InData%dXYZ_low) + call RegPack(RF, InData%dX_low) + call RegPack(RF, InData%dY_low) + call RegPack(RF, InData%dZ_low) + call RegPack(RF, InData%X0_low) + call RegPack(RF, InData%Y0_low) + call RegPack(RF, InData%Z0_low) + call RegPackAlloc(RF, InData%X0_high) + call RegPackAlloc(RF, InData%Y0_high) + call RegPackAlloc(RF, InData%Z0_high) + call RegPackAlloc(RF, InData%dX_high) + call RegPackAlloc(RF, InData%dY_high) + call RegPackAlloc(RF, InData%dZ_high) + call RegPack(RF, InData%nX_high) + call RegPack(RF, InData%nY_high) + call RegPack(RF, InData%nZ_high) + call RegPackAlloc(RF, InData%Grid_low) + call RegPackAlloc(RF, InData%Grid_high) + call RegPackAlloc(RF, InData%WT_Position) + call RegPack(RF, InData%n_high_low) + call RegPack(RF, InData%dt_low) + call RegPack(RF, InData%dt_high) + call RegPack(RF, InData%NumDT) + call RegPack(RF, InData%Mod_Meander) + call RegPack(RF, InData%C_Meander) + call RegPack(RF, InData%C_ScaleDiam) + call RegPack(RF, InData%Mod_Projection) + call RegPack(RF, allocated(InData%IfW)) if (allocated(InData%IfW)) then - call RegPackBounds(Buf, 1, lbound(InData%IfW, kind=B8Ki), ubound(InData%IfW, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%IfW, kind=B8Ki), ubound(InData%IfW, kind=B8Ki)) LB(1:1) = lbound(InData%IfW, kind=B8Ki) UB(1:1) = ubound(InData%IfW, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_PackParam(Buf, InData%IfW(i1)) + call InflowWind_PackParam(RF, InData%IfW(i1)) end do end if - call RegPack(Buf, InData%WrDisSkp1) - call RegPack(Buf, InData%WrDisWind) - call RegPack(Buf, InData%NOutDisWindXY) - call RegPack(Buf, allocated(InData%OutDisWindZ)) - if (allocated(InData%OutDisWindZ)) then - call RegPackBounds(Buf, 1, lbound(InData%OutDisWindZ, kind=B8Ki), ubound(InData%OutDisWindZ, kind=B8Ki)) - call RegPack(Buf, InData%OutDisWindZ) - end if - call RegPack(Buf, InData%NOutDisWindYZ) - call RegPack(Buf, allocated(InData%OutDisWindX)) - if (allocated(InData%OutDisWindX)) then - call RegPackBounds(Buf, 1, lbound(InData%OutDisWindX, kind=B8Ki), ubound(InData%OutDisWindX, kind=B8Ki)) - call RegPack(Buf, InData%OutDisWindX) - end if - call RegPack(Buf, InData%NOutDisWindXZ) - call RegPack(Buf, allocated(InData%OutDisWindY)) - if (allocated(InData%OutDisWindY)) then - call RegPackBounds(Buf, 1, lbound(InData%OutDisWindY, kind=B8Ki), ubound(InData%OutDisWindY, kind=B8Ki)) - call RegPack(Buf, InData%OutDisWindY) - end if - call RegPack(Buf, InData%OutFileRoot) - call RegPack(Buf, InData%OutFileVTKRoot) - call RegPack(Buf, InData%VTK_tWidth) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%WrDisSkp1) + call RegPack(RF, InData%WrDisWind) + call RegPack(RF, InData%NOutDisWindXY) + call RegPackAlloc(RF, InData%OutDisWindZ) + call RegPack(RF, InData%NOutDisWindYZ) + call RegPackAlloc(RF, InData%OutDisWindX) + call RegPack(RF, InData%NOutDisWindXZ) + call RegPackAlloc(RF, InData%OutDisWindY) + call RegPack(RF, InData%OutFileRoot) + call RegPack(RF, InData%OutFileVTKRoot) + call RegPack(RF, InData%VTK_tWidth) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AWAE_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(AWAE_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AWAE_UnPackParam' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%WindFilePath) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumTurbines) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumRadii) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumPlanes) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%y)) deallocate(OutData%y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%z)) deallocate(OutData%z) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%z(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%z) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Mod_AmbWind) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nX_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nY_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nZ_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumGrid_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%n_rp_max) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dpol) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dXYZ_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dX_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dY_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dZ_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%X0_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Y0_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Z0_low) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%X0_high)) deallocate(OutData%X0_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%X0_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%X0_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%X0_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Y0_high)) deallocate(OutData%Y0_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Y0_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Y0_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Y0_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Z0_high)) deallocate(OutData%Z0_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Z0_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Z0_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Z0_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dX_high)) deallocate(OutData%dX_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dX_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dX_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dX_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dY_high)) deallocate(OutData%dY_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dY_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dY_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dY_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dZ_high)) deallocate(OutData%dZ_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dZ_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dZ_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dZ_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%nX_high) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nY_high) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nZ_high) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Grid_low)) deallocate(OutData%Grid_low) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Grid_low(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Grid_low.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Grid_low) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Grid_high)) deallocate(OutData%Grid_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Grid_high(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Grid_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Grid_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WT_Position)) deallocate(OutData%WT_Position) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WT_Position(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WT_Position.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WT_Position) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%n_high_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dt_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dt_high) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumDT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Mod_Meander) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_Meander) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_ScaleDiam) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Mod_Projection) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%WindFilePath); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumTurbines); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumRadii); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumPlanes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%z); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Mod_AmbWind); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nX_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nY_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nZ_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumGrid_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%n_rp_max); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dpol); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dXYZ_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dX_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dY_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dZ_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%X0_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Y0_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Z0_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%X0_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Y0_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Z0_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dX_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dY_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dZ_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nX_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nY_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nZ_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Grid_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Grid_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WT_Position); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%n_high_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dt_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dt_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumDT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Mod_Meander); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_Meander); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_ScaleDiam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Mod_Projection); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%IfW)) deallocate(OutData%IfW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%IfW(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IfW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IfW.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call InflowWind_UnpackParam(Buf, OutData%IfW(i1)) ! IfW + call InflowWind_UnpackParam(RF, OutData%IfW(i1)) ! IfW end do end if - call RegUnpack(Buf, OutData%WrDisSkp1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WrDisWind) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NOutDisWindXY) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutDisWindZ)) deallocate(OutData%OutDisWindZ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutDisWindZ(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutDisWindZ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutDisWindZ) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NOutDisWindYZ) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutDisWindX)) deallocate(OutData%OutDisWindX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutDisWindX(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutDisWindX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutDisWindX) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NOutDisWindXZ) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutDisWindY)) deallocate(OutData%OutDisWindY) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutDisWindY(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutDisWindY.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutDisWindY) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%OutFileRoot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFileVTKRoot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTK_tWidth) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%WrDisSkp1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrDisWind); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NOutDisWindXY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutDisWindZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NOutDisWindYZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutDisWindX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NOutDisWindXZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutDisWindY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFileRoot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFileVTKRoot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTK_tWidth); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AWAE_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -3193,106 +2287,53 @@ subroutine AWAE_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine AWAE_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AWAE_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AWAE_PackOutput' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Vdist_High)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%Vdist_High)) if (allocated(InData%Vdist_High)) then - call RegPackBounds(Buf, 1, lbound(InData%Vdist_High, kind=B8Ki), ubound(InData%Vdist_High, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Vdist_High, kind=B8Ki), ubound(InData%Vdist_High, kind=B8Ki)) LB(1:1) = lbound(InData%Vdist_High, kind=B8Ki) UB(1:1) = ubound(InData%Vdist_High, kind=B8Ki) do i1 = LB(1), UB(1) - call AWAE_PackHighWindGrid(Buf, InData%Vdist_High(i1)) + call AWAE_PackHighWindGrid(RF, InData%Vdist_High(i1)) end do end if - call RegPack(Buf, allocated(InData%V_plane)) - if (allocated(InData%V_plane)) then - call RegPackBounds(Buf, 3, lbound(InData%V_plane, kind=B8Ki), ubound(InData%V_plane, kind=B8Ki)) - call RegPack(Buf, InData%V_plane) - end if - call RegPack(Buf, allocated(InData%TI_amb)) - if (allocated(InData%TI_amb)) then - call RegPackBounds(Buf, 1, lbound(InData%TI_amb, kind=B8Ki), ubound(InData%TI_amb, kind=B8Ki)) - call RegPack(Buf, InData%TI_amb) - end if - call RegPack(Buf, allocated(InData%Vx_wind_disk)) - if (allocated(InData%Vx_wind_disk)) then - call RegPackBounds(Buf, 1, lbound(InData%Vx_wind_disk, kind=B8Ki), ubound(InData%Vx_wind_disk, kind=B8Ki)) - call RegPack(Buf, InData%Vx_wind_disk) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%V_plane) + call RegPackAlloc(RF, InData%TI_amb) + call RegPackAlloc(RF, InData%Vx_wind_disk) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AWAE_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AWAE_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AWAE_UnPackOutput' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%Vdist_High)) deallocate(OutData%Vdist_High) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Vdist_High(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vdist_High.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vdist_High.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AWAE_UnpackHighWindGrid(Buf, OutData%Vdist_High(i1)) ! Vdist_High + call AWAE_UnpackHighWindGrid(RF, OutData%Vdist_High(i1)) ! Vdist_High end do end if - if (allocated(OutData%V_plane)) deallocate(OutData%V_plane) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%V_plane(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%V_plane.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%V_plane) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TI_amb)) deallocate(OutData%TI_amb) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TI_amb(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TI_amb.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TI_amb) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vx_wind_disk)) deallocate(OutData%Vx_wind_disk) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vx_wind_disk(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vx_wind_disk.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vx_wind_disk) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%V_plane); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TI_amb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vx_wind_disk); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine AWAE_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -3422,155 +2463,36 @@ subroutine AWAE_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine AWAE_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(AWAE_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'AWAE_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%xhat_plane)) - if (allocated(InData%xhat_plane)) then - call RegPackBounds(Buf, 3, lbound(InData%xhat_plane, kind=B8Ki), ubound(InData%xhat_plane, kind=B8Ki)) - call RegPack(Buf, InData%xhat_plane) - end if - call RegPack(Buf, allocated(InData%p_plane)) - if (allocated(InData%p_plane)) then - call RegPackBounds(Buf, 3, lbound(InData%p_plane, kind=B8Ki), ubound(InData%p_plane, kind=B8Ki)) - call RegPack(Buf, InData%p_plane) - end if - call RegPack(Buf, allocated(InData%Vx_wake)) - if (allocated(InData%Vx_wake)) then - call RegPackBounds(Buf, 4, lbound(InData%Vx_wake, kind=B8Ki), ubound(InData%Vx_wake, kind=B8Ki)) - call RegPack(Buf, InData%Vx_wake) - end if - call RegPack(Buf, allocated(InData%Vy_wake)) - if (allocated(InData%Vy_wake)) then - call RegPackBounds(Buf, 4, lbound(InData%Vy_wake, kind=B8Ki), ubound(InData%Vy_wake, kind=B8Ki)) - call RegPack(Buf, InData%Vy_wake) - end if - call RegPack(Buf, allocated(InData%Vz_wake)) - if (allocated(InData%Vz_wake)) then - call RegPackBounds(Buf, 4, lbound(InData%Vz_wake, kind=B8Ki), ubound(InData%Vz_wake, kind=B8Ki)) - call RegPack(Buf, InData%Vz_wake) - end if - call RegPack(Buf, allocated(InData%D_wake)) - if (allocated(InData%D_wake)) then - call RegPackBounds(Buf, 2, lbound(InData%D_wake, kind=B8Ki), ubound(InData%D_wake, kind=B8Ki)) - call RegPack(Buf, InData%D_wake) - end if - call RegPack(Buf, allocated(InData%WAT_k_mt)) - if (allocated(InData%WAT_k_mt)) then - call RegPackBounds(Buf, 3, lbound(InData%WAT_k_mt, kind=B8Ki), ubound(InData%WAT_k_mt, kind=B8Ki)) - call RegPack(Buf, InData%WAT_k_mt) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%xhat_plane) + call RegPackAlloc(RF, InData%p_plane) + call RegPackAlloc(RF, InData%Vx_wake) + call RegPackAlloc(RF, InData%Vy_wake) + call RegPackAlloc(RF, InData%Vz_wake) + call RegPackAlloc(RF, InData%D_wake) + call RegPackAlloc(RF, InData%WAT_k_mt) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine AWAE_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine AWAE_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(AWAE_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'AWAE_UnPackInput' integer(B8Ki) :: LB(4), UB(4) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%xhat_plane)) deallocate(OutData%xhat_plane) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%xhat_plane(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xhat_plane.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%xhat_plane) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%p_plane)) deallocate(OutData%p_plane) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%p_plane(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%p_plane.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%p_plane) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vx_wake)) deallocate(OutData%Vx_wake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vx_wake(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vx_wake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vx_wake) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vy_wake)) deallocate(OutData%Vy_wake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vy_wake(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vy_wake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vy_wake) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vz_wake)) deallocate(OutData%Vz_wake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vz_wake(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vz_wake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vz_wake) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%D_wake)) deallocate(OutData%D_wake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%D_wake(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%D_wake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%D_wake) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WAT_k_mt)) deallocate(OutData%WAT_k_mt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WAT_k_mt(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAT_k_mt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WAT_k_mt) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%xhat_plane); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%p_plane); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vx_wake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vy_wake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vz_wake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%D_wake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WAT_k_mt); if (RegCheckErr(RF, RoutineName)) return end subroutine END MODULE AWAE_Types !ENDOFREGISTRYGENERATEDFILE diff --git a/modules/beamdyn/src/BeamDyn_Types.f90 b/modules/beamdyn/src/BeamDyn_Types.f90 index 6e3e5b9acf..305961ca01 100644 --- a/modules/beamdyn/src/BeamDyn_Types.f90 +++ b/modules/beamdyn/src/BeamDyn_Types.f90 @@ -370,58 +370,45 @@ subroutine BD_DestroyInitInput(InitInputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine BD_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(BD_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'BD_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%InputFile) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, InData%gravity) - call RegPack(Buf, InData%GlbPos) - call RegPack(Buf, InData%GlbRot) - call RegPack(Buf, InData%RootDisp) - call RegPack(Buf, InData%RootOri) - call RegPack(Buf, InData%RootVel) - call RegPack(Buf, InData%HubPos) - call RegPack(Buf, InData%HubRot) - call RegPack(Buf, InData%Linearize) - call RegPack(Buf, InData%DynamicSolve) - call RegPack(Buf, InData%CompAeroMaps) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%InputFile) + call RegPack(RF, InData%RootName) + call RegPack(RF, InData%gravity) + call RegPack(RF, InData%GlbPos) + call RegPack(RF, InData%GlbRot) + call RegPack(RF, InData%RootDisp) + call RegPack(RF, InData%RootOri) + call RegPack(RF, InData%RootVel) + call RegPack(RF, InData%HubPos) + call RegPack(RF, InData%HubRot) + call RegPack(RF, InData%Linearize) + call RegPack(RF, InData%DynamicSolve) + call RegPack(RF, InData%CompAeroMaps) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BD_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(BD_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BD_UnPackInitInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%InputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GlbPos) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GlbRot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootDisp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootOri) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootVel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubPos) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubRot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Linearize) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DynamicSolve) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompAeroMaps) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%InputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GlbPos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GlbRot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootDisp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootOri); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubPos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubRot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Linearize); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DynamicSolve); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompAeroMaps); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BD_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -620,236 +607,48 @@ subroutine BD_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine BD_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(BD_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'BD_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call RegPack(Buf, allocated(InData%kp_coordinate)) - if (allocated(InData%kp_coordinate)) then - call RegPackBounds(Buf, 2, lbound(InData%kp_coordinate, kind=B8Ki), ubound(InData%kp_coordinate, kind=B8Ki)) - call RegPack(Buf, InData%kp_coordinate) - end if - call RegPack(Buf, InData%kp_total) - call RegPack(Buf, allocated(InData%LinNames_y)) - if (allocated(InData%LinNames_y)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_y, kind=B8Ki), ubound(InData%LinNames_y, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_y) - end if - call RegPack(Buf, allocated(InData%LinNames_x)) - if (allocated(InData%LinNames_x)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_x, kind=B8Ki), ubound(InData%LinNames_x, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_x) - end if - call RegPack(Buf, allocated(InData%LinNames_u)) - if (allocated(InData%LinNames_u)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_u, kind=B8Ki), ubound(InData%LinNames_u, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_u) - end if - call RegPack(Buf, allocated(InData%RotFrame_y)) - if (allocated(InData%RotFrame_y)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_y, kind=B8Ki), ubound(InData%RotFrame_y, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_y) - end if - call RegPack(Buf, allocated(InData%RotFrame_x)) - if (allocated(InData%RotFrame_x)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_x, kind=B8Ki), ubound(InData%RotFrame_x, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_x) - end if - call RegPack(Buf, allocated(InData%RotFrame_u)) - if (allocated(InData%RotFrame_u)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_u, kind=B8Ki), ubound(InData%RotFrame_u, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_u) - end if - call RegPack(Buf, allocated(InData%IsLoad_u)) - if (allocated(InData%IsLoad_u)) then - call RegPackBounds(Buf, 1, lbound(InData%IsLoad_u, kind=B8Ki), ubound(InData%IsLoad_u, kind=B8Ki)) - call RegPack(Buf, InData%IsLoad_u) - end if - call RegPack(Buf, allocated(InData%DerivOrder_x)) - if (allocated(InData%DerivOrder_x)) then - call RegPackBounds(Buf, 1, lbound(InData%DerivOrder_x, kind=B8Ki), ubound(InData%DerivOrder_x, kind=B8Ki)) - call RegPack(Buf, InData%DerivOrder_x) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call RegPackAlloc(RF, InData%kp_coordinate) + call RegPack(RF, InData%kp_total) + call RegPackAlloc(RF, InData%LinNames_y) + call RegPackAlloc(RF, InData%LinNames_x) + call RegPackAlloc(RF, InData%LinNames_u) + call RegPackAlloc(RF, InData%RotFrame_y) + call RegPackAlloc(RF, InData%RotFrame_x) + call RegPackAlloc(RF, InData%RotFrame_u) + call RegPackAlloc(RF, InData%IsLoad_u) + call RegPackAlloc(RF, InData%DerivOrder_x) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BD_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(BD_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BD_UnPackInitOutput' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver - if (allocated(OutData%kp_coordinate)) deallocate(OutData%kp_coordinate) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%kp_coordinate(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%kp_coordinate.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%kp_coordinate) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%kp_total) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%LinNames_y)) deallocate(OutData%LinNames_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_x)) deallocate(OutData%LinNames_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_u)) deallocate(OutData%LinNames_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_y)) deallocate(OutData%RotFrame_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_x)) deallocate(OutData%RotFrame_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_u)) deallocate(OutData%RotFrame_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IsLoad_u)) deallocate(OutData%IsLoad_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IsLoad_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IsLoad_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IsLoad_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DerivOrder_x)) deallocate(OutData%DerivOrder_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DerivOrder_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DerivOrder_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DerivOrder_x) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver + call RegUnpackAlloc(RF, OutData%kp_coordinate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%kp_total); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IsLoad_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DerivOrder_x); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BD_CopyBladeInputData(SrcBladeInputDataData, DstBladeInputDataData, CtrlCode, ErrStat, ErrMsg) @@ -923,91 +722,36 @@ subroutine BD_DestroyBladeInputData(BladeInputDataData, ErrStat, ErrMsg) end if end subroutine -subroutine BD_PackBladeInputData(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_PackBladeInputData(RF, Indata) + type(RegFile), intent(inout) :: RF type(BladeInputData), intent(in) :: InData character(*), parameter :: RoutineName = 'BD_PackBladeInputData' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%station_total) - call RegPack(Buf, InData%format_index) - call RegPack(Buf, allocated(InData%station_eta)) - if (allocated(InData%station_eta)) then - call RegPackBounds(Buf, 1, lbound(InData%station_eta, kind=B8Ki), ubound(InData%station_eta, kind=B8Ki)) - call RegPack(Buf, InData%station_eta) - end if - call RegPack(Buf, allocated(InData%stiff0)) - if (allocated(InData%stiff0)) then - call RegPackBounds(Buf, 3, lbound(InData%stiff0, kind=B8Ki), ubound(InData%stiff0, kind=B8Ki)) - call RegPack(Buf, InData%stiff0) - end if - call RegPack(Buf, allocated(InData%mass0)) - if (allocated(InData%mass0)) then - call RegPackBounds(Buf, 3, lbound(InData%mass0, kind=B8Ki), ubound(InData%mass0, kind=B8Ki)) - call RegPack(Buf, InData%mass0) - end if - call RegPack(Buf, InData%beta) - call RegPack(Buf, InData%damp_flag) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%station_total) + call RegPack(RF, InData%format_index) + call RegPackAlloc(RF, InData%station_eta) + call RegPackAlloc(RF, InData%stiff0) + call RegPackAlloc(RF, InData%mass0) + call RegPack(RF, InData%beta) + call RegPack(RF, InData%damp_flag) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BD_UnPackBladeInputData(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_UnPackBladeInputData(RF, OutData) + type(RegFile), intent(inout) :: RF type(BladeInputData), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BD_UnPackBladeInputData' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%station_total) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%format_index) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%station_eta)) deallocate(OutData%station_eta) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%station_eta(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%station_eta.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%station_eta) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%stiff0)) deallocate(OutData%stiff0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%stiff0(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%stiff0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%stiff0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%mass0)) deallocate(OutData%mass0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%mass0(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%mass0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%mass0) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%beta) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%damp_flag) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%station_total); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%format_index); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%station_eta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%stiff0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%mass0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%beta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%damp_flag); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BD_CopyInputFile(SrcInputFileData, DstInputFileData, CtrlCode, ErrStat, ErrMsg) @@ -1146,212 +890,96 @@ subroutine BD_DestroyInputFile(InputFileData, ErrStat, ErrMsg) end if end subroutine -subroutine BD_PackInputFile(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_PackInputFile(RF, Indata) + type(RegFile), intent(inout) :: RF type(BD_InputFile), intent(in) :: InData character(*), parameter :: RoutineName = 'BD_PackInputFile' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%member_total) - call RegPack(Buf, InData%kp_total) - call RegPack(Buf, allocated(InData%kp_member)) - if (allocated(InData%kp_member)) then - call RegPackBounds(Buf, 1, lbound(InData%kp_member, kind=B8Ki), ubound(InData%kp_member, kind=B8Ki)) - call RegPack(Buf, InData%kp_member) - end if - call RegPack(Buf, InData%order_elem) - call RegPack(Buf, InData%load_retries) - call RegPack(Buf, InData%NRMax) - call RegPack(Buf, InData%quadrature) - call RegPack(Buf, InData%n_fact) - call RegPack(Buf, InData%refine) - call RegPack(Buf, InData%rhoinf) - call RegPack(Buf, InData%DTBeam) - call BD_PackBladeInputData(Buf, InData%InpBl) - call RegPack(Buf, InData%BldFile) - call RegPack(Buf, InData%UsePitchAct) - call RegPack(Buf, InData%QuasiStaticInit) - call RegPack(Buf, InData%stop_tol) - call RegPack(Buf, InData%tngt_stf_pert) - call RegPack(Buf, InData%tngt_stf_difftol) - call RegPack(Buf, allocated(InData%kp_coordinate)) - if (allocated(InData%kp_coordinate)) then - call RegPackBounds(Buf, 2, lbound(InData%kp_coordinate, kind=B8Ki), ubound(InData%kp_coordinate, kind=B8Ki)) - call RegPack(Buf, InData%kp_coordinate) - end if - call RegPack(Buf, InData%pitchJ) - call RegPack(Buf, InData%pitchK) - call RegPack(Buf, InData%pitchC) - call RegPack(Buf, InData%Echo) - call RegPack(Buf, InData%RotStates) - call RegPack(Buf, InData%RelStates) - call RegPack(Buf, InData%tngt_stf_fd) - call RegPack(Buf, InData%tngt_stf_comp) - call RegPack(Buf, InData%NNodeOuts) - call RegPack(Buf, InData%OutNd) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, allocated(InData%OutList)) - if (allocated(InData%OutList)) then - call RegPackBounds(Buf, 1, lbound(InData%OutList, kind=B8Ki), ubound(InData%OutList, kind=B8Ki)) - call RegPack(Buf, InData%OutList) - end if - call RegPack(Buf, InData%SumPrint) - call RegPack(Buf, InData%OutFmt) - call RegPack(Buf, InData%BldNd_NumOuts) - call RegPack(Buf, allocated(InData%BldNd_OutList)) - if (allocated(InData%BldNd_OutList)) then - call RegPackBounds(Buf, 1, lbound(InData%BldNd_OutList, kind=B8Ki), ubound(InData%BldNd_OutList, kind=B8Ki)) - call RegPack(Buf, InData%BldNd_OutList) - end if - call RegPack(Buf, allocated(InData%BldNd_BlOutNd)) - if (allocated(InData%BldNd_BlOutNd)) then - call RegPackBounds(Buf, 1, lbound(InData%BldNd_BlOutNd, kind=B8Ki), ubound(InData%BldNd_BlOutNd, kind=B8Ki)) - call RegPack(Buf, InData%BldNd_BlOutNd) - end if - call RegPack(Buf, InData%BldNd_BlOutNd_Str) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%member_total) + call RegPack(RF, InData%kp_total) + call RegPackAlloc(RF, InData%kp_member) + call RegPack(RF, InData%order_elem) + call RegPack(RF, InData%load_retries) + call RegPack(RF, InData%NRMax) + call RegPack(RF, InData%quadrature) + call RegPack(RF, InData%n_fact) + call RegPack(RF, InData%refine) + call RegPack(RF, InData%rhoinf) + call RegPack(RF, InData%DTBeam) + call BD_PackBladeInputData(RF, InData%InpBl) + call RegPack(RF, InData%BldFile) + call RegPack(RF, InData%UsePitchAct) + call RegPack(RF, InData%QuasiStaticInit) + call RegPack(RF, InData%stop_tol) + call RegPack(RF, InData%tngt_stf_pert) + call RegPack(RF, InData%tngt_stf_difftol) + call RegPackAlloc(RF, InData%kp_coordinate) + call RegPack(RF, InData%pitchJ) + call RegPack(RF, InData%pitchK) + call RegPack(RF, InData%pitchC) + call RegPack(RF, InData%Echo) + call RegPack(RF, InData%RotStates) + call RegPack(RF, InData%RelStates) + call RegPack(RF, InData%tngt_stf_fd) + call RegPack(RF, InData%tngt_stf_comp) + call RegPack(RF, InData%NNodeOuts) + call RegPack(RF, InData%OutNd) + call RegPack(RF, InData%NumOuts) + call RegPackAlloc(RF, InData%OutList) + call RegPack(RF, InData%SumPrint) + call RegPack(RF, InData%OutFmt) + call RegPack(RF, InData%BldNd_NumOuts) + call RegPackAlloc(RF, InData%BldNd_OutList) + call RegPackAlloc(RF, InData%BldNd_BlOutNd) + call RegPack(RF, InData%BldNd_BlOutNd_Str) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BD_UnPackInputFile(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_UnPackInputFile(RF, OutData) + type(RegFile), intent(inout) :: RF type(BD_InputFile), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BD_UnPackInputFile' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%member_total) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%kp_total) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%kp_member)) deallocate(OutData%kp_member) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%kp_member(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%kp_member.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%kp_member) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%order_elem) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%load_retries) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NRMax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%quadrature) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%n_fact) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%refine) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rhoinf) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DTBeam) - if (RegCheckErr(Buf, RoutineName)) return - call BD_UnpackBladeInputData(Buf, OutData%InpBl) ! InpBl - call RegUnpack(Buf, OutData%BldFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UsePitchAct) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%QuasiStaticInit) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%stop_tol) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tngt_stf_pert) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tngt_stf_difftol) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%kp_coordinate)) deallocate(OutData%kp_coordinate) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%kp_coordinate(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%kp_coordinate.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%kp_coordinate) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%pitchJ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pitchK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pitchC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Echo) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotStates) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RelStates) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tngt_stf_fd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tngt_stf_comp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NNodeOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutNd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutList)) deallocate(OutData%OutList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutList) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%SumPrint) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BldNd_NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BldNd_OutList)) deallocate(OutData%BldNd_OutList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldNd_OutList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldNd_OutList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldNd_OutList) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BldNd_BlOutNd)) deallocate(OutData%BldNd_BlOutNd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldNd_BlOutNd(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldNd_BlOutNd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldNd_BlOutNd) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%BldNd_BlOutNd_Str) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%member_total); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%kp_total); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%kp_member); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%order_elem); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%load_retries); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NRMax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%quadrature); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%n_fact); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%refine); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rhoinf); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DTBeam); if (RegCheckErr(RF, RoutineName)) return + call BD_UnpackBladeInputData(RF, OutData%InpBl) ! InpBl + call RegUnpack(RF, OutData%BldFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UsePitchAct); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%QuasiStaticInit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%stop_tol); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tngt_stf_pert); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tngt_stf_difftol); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%kp_coordinate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pitchJ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pitchK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pitchC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Echo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotStates); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RelStates); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tngt_stf_fd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tngt_stf_comp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NNodeOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutNd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SumPrint); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldNd_NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldNd_OutList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldNd_BlOutNd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldNd_BlOutNd_Str); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BD_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -1406,60 +1034,26 @@ subroutine BD_DestroyContState(ContStateData, ErrStat, ErrMsg) end if end subroutine -subroutine BD_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(BD_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'BD_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%q)) - if (allocated(InData%q)) then - call RegPackBounds(Buf, 2, lbound(InData%q, kind=B8Ki), ubound(InData%q, kind=B8Ki)) - call RegPack(Buf, InData%q) - end if - call RegPack(Buf, allocated(InData%dqdt)) - if (allocated(InData%dqdt)) then - call RegPackBounds(Buf, 2, lbound(InData%dqdt, kind=B8Ki), ubound(InData%dqdt, kind=B8Ki)) - call RegPack(Buf, InData%dqdt) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%q) + call RegPackAlloc(RF, InData%dqdt) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BD_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(BD_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BD_UnPackContState' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%q)) deallocate(OutData%q) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%q(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%q.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%q) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dqdt)) deallocate(OutData%dqdt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dqdt(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dqdt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dqdt) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%q); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dqdt); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BD_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -1484,25 +1078,23 @@ subroutine BD_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine BD_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(BD_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'BD_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%thetaP) - call RegPack(Buf, InData%thetaPD) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%thetaP) + call RegPack(RF, InData%thetaPD) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BD_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(BD_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BD_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%thetaP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%thetaPD) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%thetaP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%thetaPD); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BD_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -1526,22 +1118,21 @@ subroutine BD_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine BD_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(BD_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'BD_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstrState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BD_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(BD_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BD_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstrState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BD_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -1601,75 +1192,36 @@ subroutine BD_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) end if end subroutine -subroutine BD_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(BD_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'BD_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%acc)) - if (allocated(InData%acc)) then - call RegPackBounds(Buf, 2, lbound(InData%acc, kind=B8Ki), ubound(InData%acc, kind=B8Ki)) - call RegPack(Buf, InData%acc) - end if - call RegPack(Buf, allocated(InData%xcc)) - if (allocated(InData%xcc)) then - call RegPackBounds(Buf, 2, lbound(InData%xcc, kind=B8Ki), ubound(InData%xcc, kind=B8Ki)) - call RegPack(Buf, InData%xcc) - end if - call RegPack(Buf, InData%InitAcc) - call RegPack(Buf, InData%RunQuasiStaticInit) - call RegPack(Buf, InData%GlbPos) - call RegPack(Buf, InData%GlbRot) - call RegPack(Buf, InData%Glb_crv) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%acc) + call RegPackAlloc(RF, InData%xcc) + call RegPack(RF, InData%InitAcc) + call RegPack(RF, InData%RunQuasiStaticInit) + call RegPack(RF, InData%GlbPos) + call RegPack(RF, InData%GlbRot) + call RegPack(RF, InData%Glb_crv) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BD_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(BD_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BD_UnPackOtherState' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%acc)) deallocate(OutData%acc) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%acc(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%acc.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%acc) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%xcc)) deallocate(OutData%xcc) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%xcc(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xcc.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%xcc) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%InitAcc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RunQuasiStaticInit) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GlbPos) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GlbRot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Glb_crv) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%acc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%xcc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InitAcc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RunQuasiStaticInit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GlbPos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GlbRot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Glb_crv); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BD_CopyqpParam(SrcqpParamData, DstqpParamData, CtrlCode, ErrStat, ErrMsg) @@ -1724,60 +1276,26 @@ subroutine BD_DestroyqpParam(qpParamData, ErrStat, ErrMsg) end if end subroutine -subroutine BD_PackqpParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_PackqpParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(qpParam), intent(in) :: InData character(*), parameter :: RoutineName = 'BD_PackqpParam' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%mmm)) - if (allocated(InData%mmm)) then - call RegPackBounds(Buf, 2, lbound(InData%mmm, kind=B8Ki), ubound(InData%mmm, kind=B8Ki)) - call RegPack(Buf, InData%mmm) - end if - call RegPack(Buf, allocated(InData%mEta)) - if (allocated(InData%mEta)) then - call RegPackBounds(Buf, 3, lbound(InData%mEta, kind=B8Ki), ubound(InData%mEta, kind=B8Ki)) - call RegPack(Buf, InData%mEta) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%mmm) + call RegPackAlloc(RF, InData%mEta) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BD_UnPackqpParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_UnPackqpParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(qpParam), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BD_UnPackqpParam' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%mmm)) deallocate(OutData%mmm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%mmm(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%mmm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%mmm) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%mEta)) deallocate(OutData%mEta) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%mEta(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%mEta.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%mEta) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%mmm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%mEta); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BD_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -2302,716 +1820,221 @@ subroutine BD_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine BD_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(BD_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'BD_PackParam' integer(B8Ki) :: i1, i2, i3, i4 integer(B8Ki) :: LB(4), UB(4) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%dt) - call RegPack(Buf, InData%coef) - call RegPack(Buf, InData%rhoinf) - call RegPack(Buf, allocated(InData%uuN0)) - if (allocated(InData%uuN0)) then - call RegPackBounds(Buf, 3, lbound(InData%uuN0, kind=B8Ki), ubound(InData%uuN0, kind=B8Ki)) - call RegPack(Buf, InData%uuN0) - end if - call RegPack(Buf, allocated(InData%twN0)) - if (allocated(InData%twN0)) then - call RegPackBounds(Buf, 2, lbound(InData%twN0, kind=B8Ki), ubound(InData%twN0, kind=B8Ki)) - call RegPack(Buf, InData%twN0) - end if - call RegPack(Buf, allocated(InData%Stif0_QP)) - if (allocated(InData%Stif0_QP)) then - call RegPackBounds(Buf, 3, lbound(InData%Stif0_QP, kind=B8Ki), ubound(InData%Stif0_QP, kind=B8Ki)) - call RegPack(Buf, InData%Stif0_QP) - end if - call RegPack(Buf, allocated(InData%Mass0_QP)) - if (allocated(InData%Mass0_QP)) then - call RegPackBounds(Buf, 3, lbound(InData%Mass0_QP, kind=B8Ki), ubound(InData%Mass0_QP, kind=B8Ki)) - call RegPack(Buf, InData%Mass0_QP) - end if - call RegPack(Buf, InData%gravity) - call RegPack(Buf, allocated(InData%segment_eta)) - if (allocated(InData%segment_eta)) then - call RegPackBounds(Buf, 1, lbound(InData%segment_eta, kind=B8Ki), ubound(InData%segment_eta, kind=B8Ki)) - call RegPack(Buf, InData%segment_eta) - end if - call RegPack(Buf, allocated(InData%member_eta)) - if (allocated(InData%member_eta)) then - call RegPackBounds(Buf, 1, lbound(InData%member_eta, kind=B8Ki), ubound(InData%member_eta, kind=B8Ki)) - call RegPack(Buf, InData%member_eta) - end if - call RegPack(Buf, InData%blade_length) - call RegPack(Buf, InData%blade_mass) - call RegPack(Buf, InData%blade_CG) - call RegPack(Buf, InData%blade_IN) - call RegPack(Buf, InData%beta) - call RegPack(Buf, InData%tol) - call RegPack(Buf, allocated(InData%QPtN)) - if (allocated(InData%QPtN)) then - call RegPackBounds(Buf, 1, lbound(InData%QPtN, kind=B8Ki), ubound(InData%QPtN, kind=B8Ki)) - call RegPack(Buf, InData%QPtN) - end if - call RegPack(Buf, allocated(InData%QPtWeight)) - if (allocated(InData%QPtWeight)) then - call RegPackBounds(Buf, 1, lbound(InData%QPtWeight, kind=B8Ki), ubound(InData%QPtWeight, kind=B8Ki)) - call RegPack(Buf, InData%QPtWeight) - end if - call RegPack(Buf, allocated(InData%Shp)) - if (allocated(InData%Shp)) then - call RegPackBounds(Buf, 2, lbound(InData%Shp, kind=B8Ki), ubound(InData%Shp, kind=B8Ki)) - call RegPack(Buf, InData%Shp) - end if - call RegPack(Buf, allocated(InData%ShpDer)) - if (allocated(InData%ShpDer)) then - call RegPackBounds(Buf, 2, lbound(InData%ShpDer, kind=B8Ki), ubound(InData%ShpDer, kind=B8Ki)) - call RegPack(Buf, InData%ShpDer) - end if - call RegPack(Buf, allocated(InData%Jacobian)) - if (allocated(InData%Jacobian)) then - call RegPackBounds(Buf, 2, lbound(InData%Jacobian, kind=B8Ki), ubound(InData%Jacobian, kind=B8Ki)) - call RegPack(Buf, InData%Jacobian) - end if - call RegPack(Buf, allocated(InData%uu0)) - if (allocated(InData%uu0)) then - call RegPackBounds(Buf, 3, lbound(InData%uu0, kind=B8Ki), ubound(InData%uu0, kind=B8Ki)) - call RegPack(Buf, InData%uu0) - end if - call RegPack(Buf, allocated(InData%E10)) - if (allocated(InData%E10)) then - call RegPackBounds(Buf, 3, lbound(InData%E10, kind=B8Ki), ubound(InData%E10, kind=B8Ki)) - call RegPack(Buf, InData%E10) - end if - call RegPack(Buf, InData%nodes_per_elem) - call RegPack(Buf, allocated(InData%node_elem_idx)) - if (allocated(InData%node_elem_idx)) then - call RegPackBounds(Buf, 2, lbound(InData%node_elem_idx, kind=B8Ki), ubound(InData%node_elem_idx, kind=B8Ki)) - call RegPack(Buf, InData%node_elem_idx) - end if - call RegPack(Buf, InData%refine) - call RegPack(Buf, InData%dof_node) - call RegPack(Buf, InData%dof_elem) - call RegPack(Buf, InData%rot_elem) - call RegPack(Buf, InData%elem_total) - call RegPack(Buf, InData%node_total) - call RegPack(Buf, InData%dof_total) - call RegPack(Buf, InData%nqp) - call RegPack(Buf, InData%analysis_type) - call RegPack(Buf, InData%damp_flag) - call RegPack(Buf, InData%ld_retries) - call RegPack(Buf, InData%niter) - call RegPack(Buf, InData%quadrature) - call RegPack(Buf, InData%n_fact) - call RegPack(Buf, InData%OutInputs) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, allocated(InData%OutParam)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%dt) + call RegPack(RF, InData%coef) + call RegPack(RF, InData%rhoinf) + call RegPackAlloc(RF, InData%uuN0) + call RegPackAlloc(RF, InData%twN0) + call RegPackAlloc(RF, InData%Stif0_QP) + call RegPackAlloc(RF, InData%Mass0_QP) + call RegPack(RF, InData%gravity) + call RegPackAlloc(RF, InData%segment_eta) + call RegPackAlloc(RF, InData%member_eta) + call RegPack(RF, InData%blade_length) + call RegPack(RF, InData%blade_mass) + call RegPack(RF, InData%blade_CG) + call RegPack(RF, InData%blade_IN) + call RegPack(RF, InData%beta) + call RegPack(RF, InData%tol) + call RegPackAlloc(RF, InData%QPtN) + call RegPackAlloc(RF, InData%QPtWeight) + call RegPackAlloc(RF, InData%Shp) + call RegPackAlloc(RF, InData%ShpDer) + call RegPackAlloc(RF, InData%Jacobian) + call RegPackAlloc(RF, InData%uu0) + call RegPackAlloc(RF, InData%E10) + call RegPack(RF, InData%nodes_per_elem) + call RegPackAlloc(RF, InData%node_elem_idx) + call RegPack(RF, InData%refine) + call RegPack(RF, InData%dof_node) + call RegPack(RF, InData%dof_elem) + call RegPack(RF, InData%rot_elem) + call RegPack(RF, InData%elem_total) + call RegPack(RF, InData%node_total) + call RegPack(RF, InData%dof_total) + call RegPack(RF, InData%nqp) + call RegPack(RF, InData%analysis_type) + call RegPack(RF, InData%damp_flag) + call RegPack(RF, InData%ld_retries) + call RegPack(RF, InData%niter) + call RegPack(RF, InData%quadrature) + call RegPack(RF, InData%n_fact) + call RegPack(RF, InData%OutInputs) + call RegPack(RF, InData%NumOuts) + call RegPack(RF, allocated(InData%OutParam)) if (allocated(InData%OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) LB(1:1) = lbound(InData%OutParam, kind=B8Ki) UB(1:1) = ubound(InData%OutParam, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackOutParmType(Buf, InData%OutParam(i1)) + call NWTC_Library_PackOutParmType(RF, InData%OutParam(i1)) end do end if - call RegPack(Buf, InData%NNodeOuts) - call RegPack(Buf, InData%OutNd) - call RegPack(Buf, allocated(InData%NdIndx)) - if (allocated(InData%NdIndx)) then - call RegPackBounds(Buf, 1, lbound(InData%NdIndx, kind=B8Ki), ubound(InData%NdIndx, kind=B8Ki)) - call RegPack(Buf, InData%NdIndx) - end if - call RegPack(Buf, allocated(InData%NdIndxInverse)) - if (allocated(InData%NdIndxInverse)) then - call RegPackBounds(Buf, 1, lbound(InData%NdIndxInverse, kind=B8Ki), ubound(InData%NdIndxInverse, kind=B8Ki)) - call RegPack(Buf, InData%NdIndxInverse) - end if - call RegPack(Buf, allocated(InData%OutNd2NdElem)) - if (allocated(InData%OutNd2NdElem)) then - call RegPackBounds(Buf, 2, lbound(InData%OutNd2NdElem, kind=B8Ki), ubound(InData%OutNd2NdElem, kind=B8Ki)) - call RegPack(Buf, InData%OutNd2NdElem) - end if - call RegPack(Buf, InData%OutFmt) - call RegPack(Buf, InData%UsePitchAct) - call RegPack(Buf, InData%pitchJ) - call RegPack(Buf, InData%pitchK) - call RegPack(Buf, InData%pitchC) - call RegPack(Buf, InData%torqM) - call BD_PackqpParam(Buf, InData%qp) - call RegPack(Buf, InData%qp_indx_offset) - call RegPack(Buf, InData%BldMotionNodeLoc) - call RegPack(Buf, InData%tngt_stf_fd) - call RegPack(Buf, InData%tngt_stf_comp) - call RegPack(Buf, InData%tngt_stf_pert) - call RegPack(Buf, InData%tngt_stf_difftol) - call RegPack(Buf, InData%BldNd_NumOuts) - call RegPack(Buf, InData%BldNd_TotNumOuts) - call RegPack(Buf, allocated(InData%BldNd_OutParam)) + call RegPack(RF, InData%NNodeOuts) + call RegPack(RF, InData%OutNd) + call RegPackAlloc(RF, InData%NdIndx) + call RegPackAlloc(RF, InData%NdIndxInverse) + call RegPackAlloc(RF, InData%OutNd2NdElem) + call RegPack(RF, InData%OutFmt) + call RegPack(RF, InData%UsePitchAct) + call RegPack(RF, InData%pitchJ) + call RegPack(RF, InData%pitchK) + call RegPack(RF, InData%pitchC) + call RegPack(RF, InData%torqM) + call BD_PackqpParam(RF, InData%qp) + call RegPack(RF, InData%qp_indx_offset) + call RegPack(RF, InData%BldMotionNodeLoc) + call RegPack(RF, InData%tngt_stf_fd) + call RegPack(RF, InData%tngt_stf_comp) + call RegPack(RF, InData%tngt_stf_pert) + call RegPack(RF, InData%tngt_stf_difftol) + call RegPack(RF, InData%BldNd_NumOuts) + call RegPack(RF, InData%BldNd_TotNumOuts) + call RegPack(RF, allocated(InData%BldNd_OutParam)) if (allocated(InData%BldNd_OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%BldNd_OutParam, kind=B8Ki), ubound(InData%BldNd_OutParam, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BldNd_OutParam, kind=B8Ki), ubound(InData%BldNd_OutParam, kind=B8Ki)) LB(1:1) = lbound(InData%BldNd_OutParam, kind=B8Ki) UB(1:1) = ubound(InData%BldNd_OutParam, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackOutParmType(Buf, InData%BldNd_OutParam(i1)) + call NWTC_Library_PackOutParmType(RF, InData%BldNd_OutParam(i1)) end do end if - call RegPack(Buf, allocated(InData%BldNd_BlOutNd)) - if (allocated(InData%BldNd_BlOutNd)) then - call RegPackBounds(Buf, 1, lbound(InData%BldNd_BlOutNd, kind=B8Ki), ubound(InData%BldNd_BlOutNd, kind=B8Ki)) - call RegPack(Buf, InData%BldNd_BlOutNd) - end if - call RegPack(Buf, allocated(InData%QPtw_Shp_Shp_Jac)) - if (allocated(InData%QPtw_Shp_Shp_Jac)) then - call RegPackBounds(Buf, 4, lbound(InData%QPtw_Shp_Shp_Jac, kind=B8Ki), ubound(InData%QPtw_Shp_Shp_Jac, kind=B8Ki)) - call RegPack(Buf, InData%QPtw_Shp_Shp_Jac) - end if - call RegPack(Buf, allocated(InData%QPtw_Shp_ShpDer)) - if (allocated(InData%QPtw_Shp_ShpDer)) then - call RegPackBounds(Buf, 3, lbound(InData%QPtw_Shp_ShpDer, kind=B8Ki), ubound(InData%QPtw_Shp_ShpDer, kind=B8Ki)) - call RegPack(Buf, InData%QPtw_Shp_ShpDer) - end if - call RegPack(Buf, allocated(InData%QPtw_ShpDer_ShpDer_Jac)) - if (allocated(InData%QPtw_ShpDer_ShpDer_Jac)) then - call RegPackBounds(Buf, 4, lbound(InData%QPtw_ShpDer_ShpDer_Jac, kind=B8Ki), ubound(InData%QPtw_ShpDer_ShpDer_Jac, kind=B8Ki)) - call RegPack(Buf, InData%QPtw_ShpDer_ShpDer_Jac) - end if - call RegPack(Buf, allocated(InData%QPtw_Shp_Jac)) - if (allocated(InData%QPtw_Shp_Jac)) then - call RegPackBounds(Buf, 3, lbound(InData%QPtw_Shp_Jac, kind=B8Ki), ubound(InData%QPtw_Shp_Jac, kind=B8Ki)) - call RegPack(Buf, InData%QPtw_Shp_Jac) - end if - call RegPack(Buf, allocated(InData%QPtw_ShpDer)) - if (allocated(InData%QPtw_ShpDer)) then - call RegPackBounds(Buf, 2, lbound(InData%QPtw_ShpDer, kind=B8Ki), ubound(InData%QPtw_ShpDer, kind=B8Ki)) - call RegPack(Buf, InData%QPtw_ShpDer) - end if - call RegPack(Buf, allocated(InData%FEweight)) - if (allocated(InData%FEweight)) then - call RegPackBounds(Buf, 2, lbound(InData%FEweight, kind=B8Ki), ubound(InData%FEweight, kind=B8Ki)) - call RegPack(Buf, InData%FEweight) - end if - call RegPack(Buf, allocated(InData%Jac_u_indx)) - if (allocated(InData%Jac_u_indx)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_u_indx, kind=B8Ki), ubound(InData%Jac_u_indx, kind=B8Ki)) - call RegPack(Buf, InData%Jac_u_indx) - end if - call RegPack(Buf, allocated(InData%du)) - if (allocated(InData%du)) then - call RegPackBounds(Buf, 1, lbound(InData%du, kind=B8Ki), ubound(InData%du, kind=B8Ki)) - call RegPack(Buf, InData%du) - end if - call RegPack(Buf, InData%dx) - call RegPack(Buf, InData%Jac_ny) - call RegPack(Buf, InData%Jac_nx) - call RegPack(Buf, InData%RotStates) - call RegPack(Buf, InData%RelStates) - call RegPack(Buf, InData%CompAeroMaps) - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%BldNd_BlOutNd) + call RegPackAlloc(RF, InData%QPtw_Shp_Shp_Jac) + call RegPackAlloc(RF, InData%QPtw_Shp_ShpDer) + call RegPackAlloc(RF, InData%QPtw_ShpDer_ShpDer_Jac) + call RegPackAlloc(RF, InData%QPtw_Shp_Jac) + call RegPackAlloc(RF, InData%QPtw_ShpDer) + call RegPackAlloc(RF, InData%FEweight) + call RegPackAlloc(RF, InData%Jac_u_indx) + call RegPackAlloc(RF, InData%du) + call RegPack(RF, InData%dx) + call RegPack(RF, InData%Jac_ny) + call RegPack(RF, InData%Jac_nx) + call RegPack(RF, InData%RotStates) + call RegPack(RF, InData%RelStates) + call RegPack(RF, InData%CompAeroMaps) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BD_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(BD_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BD_UnPackParam' integer(B8Ki) :: i1, i2, i3, i4 integer(B8Ki) :: LB(4), UB(4) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%dt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%coef) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rhoinf) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%uuN0)) deallocate(OutData%uuN0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%uuN0(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%uuN0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%uuN0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%twN0)) deallocate(OutData%twN0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%twN0(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%twN0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%twN0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Stif0_QP)) deallocate(OutData%Stif0_QP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Stif0_QP(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Stif0_QP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Stif0_QP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Mass0_QP)) deallocate(OutData%Mass0_QP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Mass0_QP(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Mass0_QP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Mass0_QP) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%gravity) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%segment_eta)) deallocate(OutData%segment_eta) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%segment_eta(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%segment_eta.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%segment_eta) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%member_eta)) deallocate(OutData%member_eta) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%member_eta(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%member_eta.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%member_eta) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%blade_length) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%blade_mass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%blade_CG) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%blade_IN) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%beta) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tol) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%QPtN)) deallocate(OutData%QPtN) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%QPtN(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%QPtN.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%QPtN) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%QPtWeight)) deallocate(OutData%QPtWeight) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%QPtWeight(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%QPtWeight.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%QPtWeight) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Shp)) deallocate(OutData%Shp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Shp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Shp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Shp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ShpDer)) deallocate(OutData%ShpDer) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ShpDer(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ShpDer.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ShpDer) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Jacobian)) deallocate(OutData%Jacobian) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jacobian(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jacobian.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jacobian) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%uu0)) deallocate(OutData%uu0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%uu0(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%uu0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%uu0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%E10)) deallocate(OutData%E10) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%E10(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%E10.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%E10) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%nodes_per_elem) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%node_elem_idx)) deallocate(OutData%node_elem_idx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%node_elem_idx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%node_elem_idx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%node_elem_idx) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%refine) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dof_node) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dof_elem) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rot_elem) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%elem_total) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%node_total) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dof_total) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nqp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%analysis_type) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%damp_flag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ld_retries) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%niter) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%quadrature) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%n_fact) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutInputs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%dt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%coef); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rhoinf); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%uuN0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%twN0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Stif0_QP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Mass0_QP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%segment_eta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%member_eta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%blade_length); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%blade_mass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%blade_CG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%blade_IN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%beta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tol); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%QPtN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%QPtWeight); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Shp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ShpDer); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jacobian); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%uu0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%E10); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nodes_per_elem); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%node_elem_idx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%refine); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dof_node); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dof_elem); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rot_elem); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%elem_total); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%node_total); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dof_total); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nqp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%analysis_type); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%damp_flag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ld_retries); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%niter); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%quadrature); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%n_fact); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutInputs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%OutParam)) deallocate(OutData%OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackOutParmType(Buf, OutData%OutParam(i1)) ! OutParam + call NWTC_Library_UnpackOutParmType(RF, OutData%OutParam(i1)) ! OutParam end do end if - call RegUnpack(Buf, OutData%NNodeOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutNd) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%NdIndx)) deallocate(OutData%NdIndx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NdIndx(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NdIndx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NdIndx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%NdIndxInverse)) deallocate(OutData%NdIndxInverse) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NdIndxInverse(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NdIndxInverse.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NdIndxInverse) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OutNd2NdElem)) deallocate(OutData%OutNd2NdElem) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutNd2NdElem(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutNd2NdElem.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutNd2NdElem) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%OutFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UsePitchAct) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pitchJ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pitchK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pitchC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%torqM) - if (RegCheckErr(Buf, RoutineName)) return - call BD_UnpackqpParam(Buf, OutData%qp) ! qp - call RegUnpack(Buf, OutData%qp_indx_offset) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BldMotionNodeLoc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tngt_stf_fd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tngt_stf_comp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tngt_stf_pert) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tngt_stf_difftol) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BldNd_NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BldNd_TotNumOuts) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NNodeOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutNd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NdIndx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NdIndxInverse); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutNd2NdElem); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UsePitchAct); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pitchJ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pitchK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pitchC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%torqM); if (RegCheckErr(RF, RoutineName)) return + call BD_UnpackqpParam(RF, OutData%qp) ! qp + call RegUnpack(RF, OutData%qp_indx_offset); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldMotionNodeLoc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tngt_stf_fd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tngt_stf_comp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tngt_stf_pert); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tngt_stf_difftol); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldNd_NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldNd_TotNumOuts); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%BldNd_OutParam)) deallocate(OutData%BldNd_OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BldNd_OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldNd_OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldNd_OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackOutParmType(Buf, OutData%BldNd_OutParam(i1)) ! BldNd_OutParam + call NWTC_Library_UnpackOutParmType(RF, OutData%BldNd_OutParam(i1)) ! BldNd_OutParam end do end if - if (allocated(OutData%BldNd_BlOutNd)) deallocate(OutData%BldNd_BlOutNd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldNd_BlOutNd(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldNd_BlOutNd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldNd_BlOutNd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%QPtw_Shp_Shp_Jac)) deallocate(OutData%QPtw_Shp_Shp_Jac) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%QPtw_Shp_Shp_Jac(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%QPtw_Shp_Shp_Jac.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%QPtw_Shp_Shp_Jac) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%QPtw_Shp_ShpDer)) deallocate(OutData%QPtw_Shp_ShpDer) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%QPtw_Shp_ShpDer(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%QPtw_Shp_ShpDer.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%QPtw_Shp_ShpDer) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%QPtw_ShpDer_ShpDer_Jac)) deallocate(OutData%QPtw_ShpDer_ShpDer_Jac) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%QPtw_ShpDer_ShpDer_Jac(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%QPtw_ShpDer_ShpDer_Jac.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%QPtw_ShpDer_ShpDer_Jac) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%QPtw_Shp_Jac)) deallocate(OutData%QPtw_Shp_Jac) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%QPtw_Shp_Jac(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%QPtw_Shp_Jac.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%QPtw_Shp_Jac) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%QPtw_ShpDer)) deallocate(OutData%QPtw_ShpDer) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%QPtw_ShpDer(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%QPtw_ShpDer.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%QPtw_ShpDer) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FEweight)) deallocate(OutData%FEweight) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FEweight(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FEweight.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FEweight) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Jac_u_indx)) deallocate(OutData%Jac_u_indx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_u_indx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_u_indx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_u_indx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%du)) deallocate(OutData%du) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%du(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%du.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%du) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%dx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Jac_ny) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Jac_nx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotStates) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RelStates) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompAeroMaps) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldNd_BlOutNd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%QPtw_Shp_Shp_Jac); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%QPtw_Shp_ShpDer); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%QPtw_ShpDer_ShpDer_Jac); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%QPtw_Shp_Jac); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%QPtw_ShpDer); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FEweight); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_u_indx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%du); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Jac_ny); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Jac_nx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotStates); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RelStates); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompAeroMaps); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BD_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -3058,27 +2081,27 @@ subroutine BD_DestroyInput(InputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine BD_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(BD_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'BD_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%RootMotion) - call MeshPack(Buf, InData%PointLoad) - call MeshPack(Buf, InData%DistrLoad) - call MeshPack(Buf, InData%HubMotion) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%RootMotion) + call MeshPack(RF, InData%PointLoad) + call MeshPack(RF, InData%DistrLoad) + call MeshPack(RF, InData%HubMotion) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BD_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(BD_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BD_UnPackInput' - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%RootMotion) ! RootMotion - call MeshUnpack(Buf, OutData%PointLoad) ! PointLoad - call MeshUnpack(Buf, OutData%DistrLoad) ! DistrLoad - call MeshUnpack(Buf, OutData%HubMotion) ! HubMotion + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%RootMotion) ! RootMotion + call MeshUnpack(RF, OutData%PointLoad) ! PointLoad + call MeshUnpack(RF, OutData%DistrLoad) ! DistrLoad + call MeshUnpack(RF, OutData%HubMotion) ! HubMotion end subroutine subroutine BD_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -3133,51 +2156,32 @@ subroutine BD_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine BD_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(BD_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'BD_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%ReactionForce) - call MeshPack(Buf, InData%BldMotion) - call RegPack(Buf, InData%RootMxr) - call RegPack(Buf, InData%RootMyr) - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%ReactionForce) + call MeshPack(RF, InData%BldMotion) + call RegPack(RF, InData%RootMxr) + call RegPack(RF, InData%RootMyr) + call RegPackAlloc(RF, InData%WriteOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BD_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(BD_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BD_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%ReactionForce) ! ReactionForce - call MeshUnpack(Buf, OutData%BldMotion) ! BldMotion - call RegUnpack(Buf, OutData%RootMxr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootMyr) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%ReactionForce) ! ReactionForce + call MeshUnpack(RF, OutData%BldMotion) ! BldMotion + call RegUnpack(RF, OutData%RootMxr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootMyr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BD_CopyEqMotionQP(SrcEqMotionQPData, DstEqMotionQPData, CtrlCode, ErrStat, ErrMsg) @@ -3667,611 +2671,84 @@ subroutine BD_DestroyEqMotionQP(EqMotionQPData, ErrStat, ErrMsg) end if end subroutine -subroutine BD_PackEqMotionQP(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_PackEqMotionQP(RF, Indata) + type(RegFile), intent(inout) :: RF type(EqMotionQP), intent(in) :: InData character(*), parameter :: RoutineName = 'BD_PackEqMotionQP' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%uuu)) - if (allocated(InData%uuu)) then - call RegPackBounds(Buf, 3, lbound(InData%uuu, kind=B8Ki), ubound(InData%uuu, kind=B8Ki)) - call RegPack(Buf, InData%uuu) - end if - call RegPack(Buf, allocated(InData%uup)) - if (allocated(InData%uup)) then - call RegPackBounds(Buf, 3, lbound(InData%uup, kind=B8Ki), ubound(InData%uup, kind=B8Ki)) - call RegPack(Buf, InData%uup) - end if - call RegPack(Buf, allocated(InData%vvv)) - if (allocated(InData%vvv)) then - call RegPackBounds(Buf, 3, lbound(InData%vvv, kind=B8Ki), ubound(InData%vvv, kind=B8Ki)) - call RegPack(Buf, InData%vvv) - end if - call RegPack(Buf, allocated(InData%vvp)) - if (allocated(InData%vvp)) then - call RegPackBounds(Buf, 3, lbound(InData%vvp, kind=B8Ki), ubound(InData%vvp, kind=B8Ki)) - call RegPack(Buf, InData%vvp) - end if - call RegPack(Buf, allocated(InData%aaa)) - if (allocated(InData%aaa)) then - call RegPackBounds(Buf, 3, lbound(InData%aaa, kind=B8Ki), ubound(InData%aaa, kind=B8Ki)) - call RegPack(Buf, InData%aaa) - end if - call RegPack(Buf, allocated(InData%RR0)) - if (allocated(InData%RR0)) then - call RegPackBounds(Buf, 4, lbound(InData%RR0, kind=B8Ki), ubound(InData%RR0, kind=B8Ki)) - call RegPack(Buf, InData%RR0) - end if - call RegPack(Buf, allocated(InData%kappa)) - if (allocated(InData%kappa)) then - call RegPackBounds(Buf, 3, lbound(InData%kappa, kind=B8Ki), ubound(InData%kappa, kind=B8Ki)) - call RegPack(Buf, InData%kappa) - end if - call RegPack(Buf, allocated(InData%E1)) - if (allocated(InData%E1)) then - call RegPackBounds(Buf, 3, lbound(InData%E1, kind=B8Ki), ubound(InData%E1, kind=B8Ki)) - call RegPack(Buf, InData%E1) - end if - call RegPack(Buf, allocated(InData%Stif)) - if (allocated(InData%Stif)) then - call RegPackBounds(Buf, 4, lbound(InData%Stif, kind=B8Ki), ubound(InData%Stif, kind=B8Ki)) - call RegPack(Buf, InData%Stif) - end if - call RegPack(Buf, allocated(InData%Fb)) - if (allocated(InData%Fb)) then - call RegPackBounds(Buf, 3, lbound(InData%Fb, kind=B8Ki), ubound(InData%Fb, kind=B8Ki)) - call RegPack(Buf, InData%Fb) - end if - call RegPack(Buf, allocated(InData%Fc)) - if (allocated(InData%Fc)) then - call RegPackBounds(Buf, 3, lbound(InData%Fc, kind=B8Ki), ubound(InData%Fc, kind=B8Ki)) - call RegPack(Buf, InData%Fc) - end if - call RegPack(Buf, allocated(InData%Fd)) - if (allocated(InData%Fd)) then - call RegPackBounds(Buf, 3, lbound(InData%Fd, kind=B8Ki), ubound(InData%Fd, kind=B8Ki)) - call RegPack(Buf, InData%Fd) - end if - call RegPack(Buf, allocated(InData%Fg)) - if (allocated(InData%Fg)) then - call RegPackBounds(Buf, 3, lbound(InData%Fg, kind=B8Ki), ubound(InData%Fg, kind=B8Ki)) - call RegPack(Buf, InData%Fg) - end if - call RegPack(Buf, allocated(InData%Fi)) - if (allocated(InData%Fi)) then - call RegPackBounds(Buf, 3, lbound(InData%Fi, kind=B8Ki), ubound(InData%Fi, kind=B8Ki)) - call RegPack(Buf, InData%Fi) - end if - call RegPack(Buf, allocated(InData%Ftemp)) - if (allocated(InData%Ftemp)) then - call RegPackBounds(Buf, 3, lbound(InData%Ftemp, kind=B8Ki), ubound(InData%Ftemp, kind=B8Ki)) - call RegPack(Buf, InData%Ftemp) - end if - call RegPack(Buf, allocated(InData%RR0mEta)) - if (allocated(InData%RR0mEta)) then - call RegPackBounds(Buf, 3, lbound(InData%RR0mEta, kind=B8Ki), ubound(InData%RR0mEta, kind=B8Ki)) - call RegPack(Buf, InData%RR0mEta) - end if - call RegPack(Buf, allocated(InData%rho)) - if (allocated(InData%rho)) then - call RegPackBounds(Buf, 4, lbound(InData%rho, kind=B8Ki), ubound(InData%rho, kind=B8Ki)) - call RegPack(Buf, InData%rho) - end if - call RegPack(Buf, allocated(InData%betaC)) - if (allocated(InData%betaC)) then - call RegPackBounds(Buf, 4, lbound(InData%betaC, kind=B8Ki), ubound(InData%betaC, kind=B8Ki)) - call RegPack(Buf, InData%betaC) - end if - call RegPack(Buf, allocated(InData%Gi)) - if (allocated(InData%Gi)) then - call RegPackBounds(Buf, 4, lbound(InData%Gi, kind=B8Ki), ubound(InData%Gi, kind=B8Ki)) - call RegPack(Buf, InData%Gi) - end if - call RegPack(Buf, allocated(InData%Ki)) - if (allocated(InData%Ki)) then - call RegPackBounds(Buf, 4, lbound(InData%Ki, kind=B8Ki), ubound(InData%Ki, kind=B8Ki)) - call RegPack(Buf, InData%Ki) - end if - call RegPack(Buf, allocated(InData%Mi)) - if (allocated(InData%Mi)) then - call RegPackBounds(Buf, 4, lbound(InData%Mi, kind=B8Ki), ubound(InData%Mi, kind=B8Ki)) - call RegPack(Buf, InData%Mi) - end if - call RegPack(Buf, allocated(InData%Oe)) - if (allocated(InData%Oe)) then - call RegPackBounds(Buf, 4, lbound(InData%Oe, kind=B8Ki), ubound(InData%Oe, kind=B8Ki)) - call RegPack(Buf, InData%Oe) - end if - call RegPack(Buf, allocated(InData%Pe)) - if (allocated(InData%Pe)) then - call RegPackBounds(Buf, 4, lbound(InData%Pe, kind=B8Ki), ubound(InData%Pe, kind=B8Ki)) - call RegPack(Buf, InData%Pe) - end if - call RegPack(Buf, allocated(InData%Qe)) - if (allocated(InData%Qe)) then - call RegPackBounds(Buf, 4, lbound(InData%Qe, kind=B8Ki), ubound(InData%Qe, kind=B8Ki)) - call RegPack(Buf, InData%Qe) - end if - call RegPack(Buf, allocated(InData%Gd)) - if (allocated(InData%Gd)) then - call RegPackBounds(Buf, 4, lbound(InData%Gd, kind=B8Ki), ubound(InData%Gd, kind=B8Ki)) - call RegPack(Buf, InData%Gd) - end if - call RegPack(Buf, allocated(InData%Od)) - if (allocated(InData%Od)) then - call RegPackBounds(Buf, 4, lbound(InData%Od, kind=B8Ki), ubound(InData%Od, kind=B8Ki)) - call RegPack(Buf, InData%Od) - end if - call RegPack(Buf, allocated(InData%Pd)) - if (allocated(InData%Pd)) then - call RegPackBounds(Buf, 4, lbound(InData%Pd, kind=B8Ki), ubound(InData%Pd, kind=B8Ki)) - call RegPack(Buf, InData%Pd) - end if - call RegPack(Buf, allocated(InData%Qd)) - if (allocated(InData%Qd)) then - call RegPackBounds(Buf, 4, lbound(InData%Qd, kind=B8Ki), ubound(InData%Qd, kind=B8Ki)) - call RegPack(Buf, InData%Qd) - end if - call RegPack(Buf, allocated(InData%Sd)) - if (allocated(InData%Sd)) then - call RegPackBounds(Buf, 4, lbound(InData%Sd, kind=B8Ki), ubound(InData%Sd, kind=B8Ki)) - call RegPack(Buf, InData%Sd) - end if - call RegPack(Buf, allocated(InData%Xd)) - if (allocated(InData%Xd)) then - call RegPackBounds(Buf, 4, lbound(InData%Xd, kind=B8Ki), ubound(InData%Xd, kind=B8Ki)) - call RegPack(Buf, InData%Xd) - end if - call RegPack(Buf, allocated(InData%Yd)) - if (allocated(InData%Yd)) then - call RegPackBounds(Buf, 4, lbound(InData%Yd, kind=B8Ki), ubound(InData%Yd, kind=B8Ki)) - call RegPack(Buf, InData%Yd) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%uuu) + call RegPackAlloc(RF, InData%uup) + call RegPackAlloc(RF, InData%vvv) + call RegPackAlloc(RF, InData%vvp) + call RegPackAlloc(RF, InData%aaa) + call RegPackAlloc(RF, InData%RR0) + call RegPackAlloc(RF, InData%kappa) + call RegPackAlloc(RF, InData%E1) + call RegPackAlloc(RF, InData%Stif) + call RegPackAlloc(RF, InData%Fb) + call RegPackAlloc(RF, InData%Fc) + call RegPackAlloc(RF, InData%Fd) + call RegPackAlloc(RF, InData%Fg) + call RegPackAlloc(RF, InData%Fi) + call RegPackAlloc(RF, InData%Ftemp) + call RegPackAlloc(RF, InData%RR0mEta) + call RegPackAlloc(RF, InData%rho) + call RegPackAlloc(RF, InData%betaC) + call RegPackAlloc(RF, InData%Gi) + call RegPackAlloc(RF, InData%Ki) + call RegPackAlloc(RF, InData%Mi) + call RegPackAlloc(RF, InData%Oe) + call RegPackAlloc(RF, InData%Pe) + call RegPackAlloc(RF, InData%Qe) + call RegPackAlloc(RF, InData%Gd) + call RegPackAlloc(RF, InData%Od) + call RegPackAlloc(RF, InData%Pd) + call RegPackAlloc(RF, InData%Qd) + call RegPackAlloc(RF, InData%Sd) + call RegPackAlloc(RF, InData%Xd) + call RegPackAlloc(RF, InData%Yd) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BD_UnPackEqMotionQP(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_UnPackEqMotionQP(RF, OutData) + type(RegFile), intent(inout) :: RF type(EqMotionQP), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BD_UnPackEqMotionQP' integer(B8Ki) :: LB(4), UB(4) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%uuu)) deallocate(OutData%uuu) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%uuu(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%uuu.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%uuu) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%uup)) deallocate(OutData%uup) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%uup(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%uup.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%uup) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%vvv)) deallocate(OutData%vvv) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%vvv(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%vvv.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%vvv) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%vvp)) deallocate(OutData%vvp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%vvp(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%vvp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%vvp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%aaa)) deallocate(OutData%aaa) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%aaa(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%aaa.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%aaa) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RR0)) deallocate(OutData%RR0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RR0(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RR0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RR0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%kappa)) deallocate(OutData%kappa) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%kappa(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%kappa.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%kappa) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%E1)) deallocate(OutData%E1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%E1(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%E1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%E1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Stif)) deallocate(OutData%Stif) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Stif(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Stif.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Stif) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Fb)) deallocate(OutData%Fb) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Fb(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fb.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Fb) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Fc)) deallocate(OutData%Fc) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Fc(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fc.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Fc) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Fd)) deallocate(OutData%Fd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Fd(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Fd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Fg)) deallocate(OutData%Fg) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Fg(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fg.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Fg) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Fi)) deallocate(OutData%Fi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Fi(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Fi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Ftemp)) deallocate(OutData%Ftemp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Ftemp(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Ftemp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Ftemp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RR0mEta)) deallocate(OutData%RR0mEta) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RR0mEta(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RR0mEta.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RR0mEta) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rho)) deallocate(OutData%rho) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rho(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rho.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rho) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%betaC)) deallocate(OutData%betaC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%betaC(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%betaC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%betaC) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Gi)) deallocate(OutData%Gi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Gi(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Gi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Gi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Ki)) deallocate(OutData%Ki) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Ki(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Ki.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Ki) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Mi)) deallocate(OutData%Mi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Mi(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Mi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Mi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Oe)) deallocate(OutData%Oe) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Oe(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Oe.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Oe) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Pe)) deallocate(OutData%Pe) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Pe(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Pe.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Pe) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Qe)) deallocate(OutData%Qe) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Qe(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Qe.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Qe) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Gd)) deallocate(OutData%Gd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Gd(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Gd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Gd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Od)) deallocate(OutData%Od) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Od(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Od.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Od) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Pd)) deallocate(OutData%Pd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Pd(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Pd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Pd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Qd)) deallocate(OutData%Qd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Qd(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Qd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Qd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Sd)) deallocate(OutData%Sd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Sd(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Sd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Sd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Xd)) deallocate(OutData%Xd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Xd(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Xd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Xd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Yd)) deallocate(OutData%Yd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Yd(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Yd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Yd) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%uuu); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%uup); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%vvv); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%vvp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%aaa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RR0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%kappa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%E1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Stif); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Fb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Fc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Fd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Fg); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Fi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Ftemp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RR0mEta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rho); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%betaC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Gi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Ki); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Mi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Oe); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Pe); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Qe); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Gd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Od); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Pd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Qd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Sd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Xd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Yd); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine BD_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -4785,609 +3262,98 @@ subroutine BD_DestroyMisc(MiscData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine BD_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(BD_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'BD_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%u_DistrLoad_at_y) - call MeshPack(Buf, InData%y_BldMotion_at_u) - call NWTC_Library_PackMeshMapType(Buf, InData%Map_u_DistrLoad_to_y) - call NWTC_Library_PackMeshMapType(Buf, InData%Map_y_BldMotion_to_u) - call RegPack(Buf, InData%Un_Sum) - call BD_PackEqMotionQP(Buf, InData%qp) - call RegPack(Buf, allocated(InData%lin_A)) - if (allocated(InData%lin_A)) then - call RegPackBounds(Buf, 2, lbound(InData%lin_A, kind=B8Ki), ubound(InData%lin_A, kind=B8Ki)) - call RegPack(Buf, InData%lin_A) - end if - call RegPack(Buf, allocated(InData%lin_C)) - if (allocated(InData%lin_C)) then - call RegPackBounds(Buf, 2, lbound(InData%lin_C, kind=B8Ki), ubound(InData%lin_C, kind=B8Ki)) - call RegPack(Buf, InData%lin_C) - end if - call RegPack(Buf, allocated(InData%Nrrr)) - if (allocated(InData%Nrrr)) then - call RegPackBounds(Buf, 3, lbound(InData%Nrrr, kind=B8Ki), ubound(InData%Nrrr, kind=B8Ki)) - call RegPack(Buf, InData%Nrrr) - end if - call RegPack(Buf, allocated(InData%elf)) - if (allocated(InData%elf)) then - call RegPackBounds(Buf, 2, lbound(InData%elf, kind=B8Ki), ubound(InData%elf, kind=B8Ki)) - call RegPack(Buf, InData%elf) - end if - call RegPack(Buf, allocated(InData%EFint)) - if (allocated(InData%EFint)) then - call RegPackBounds(Buf, 3, lbound(InData%EFint, kind=B8Ki), ubound(InData%EFint, kind=B8Ki)) - call RegPack(Buf, InData%EFint) - end if - call RegPack(Buf, allocated(InData%elk)) - if (allocated(InData%elk)) then - call RegPackBounds(Buf, 4, lbound(InData%elk, kind=B8Ki), ubound(InData%elk, kind=B8Ki)) - call RegPack(Buf, InData%elk) - end if - call RegPack(Buf, allocated(InData%elg)) - if (allocated(InData%elg)) then - call RegPackBounds(Buf, 4, lbound(InData%elg, kind=B8Ki), ubound(InData%elg, kind=B8Ki)) - call RegPack(Buf, InData%elg) - end if - call RegPack(Buf, allocated(InData%elm)) - if (allocated(InData%elm)) then - call RegPackBounds(Buf, 4, lbound(InData%elm, kind=B8Ki), ubound(InData%elm, kind=B8Ki)) - call RegPack(Buf, InData%elm) - end if - call RegPack(Buf, allocated(InData%DistrLoad_QP)) - if (allocated(InData%DistrLoad_QP)) then - call RegPackBounds(Buf, 3, lbound(InData%DistrLoad_QP, kind=B8Ki), ubound(InData%DistrLoad_QP, kind=B8Ki)) - call RegPack(Buf, InData%DistrLoad_QP) - end if - call RegPack(Buf, allocated(InData%PointLoadLcl)) - if (allocated(InData%PointLoadLcl)) then - call RegPackBounds(Buf, 2, lbound(InData%PointLoadLcl, kind=B8Ki), ubound(InData%PointLoadLcl, kind=B8Ki)) - call RegPack(Buf, InData%PointLoadLcl) - end if - call RegPack(Buf, allocated(InData%StifK)) - if (allocated(InData%StifK)) then - call RegPackBounds(Buf, 4, lbound(InData%StifK, kind=B8Ki), ubound(InData%StifK, kind=B8Ki)) - call RegPack(Buf, InData%StifK) - end if - call RegPack(Buf, allocated(InData%MassM)) - if (allocated(InData%MassM)) then - call RegPackBounds(Buf, 4, lbound(InData%MassM, kind=B8Ki), ubound(InData%MassM, kind=B8Ki)) - call RegPack(Buf, InData%MassM) - end if - call RegPack(Buf, allocated(InData%DampG)) - if (allocated(InData%DampG)) then - call RegPackBounds(Buf, 4, lbound(InData%DampG, kind=B8Ki), ubound(InData%DampG, kind=B8Ki)) - call RegPack(Buf, InData%DampG) - end if - call RegPack(Buf, allocated(InData%StifK_fd)) - if (allocated(InData%StifK_fd)) then - call RegPackBounds(Buf, 4, lbound(InData%StifK_fd, kind=B8Ki), ubound(InData%StifK_fd, kind=B8Ki)) - call RegPack(Buf, InData%StifK_fd) - end if - call RegPack(Buf, allocated(InData%MassM_fd)) - if (allocated(InData%MassM_fd)) then - call RegPackBounds(Buf, 4, lbound(InData%MassM_fd, kind=B8Ki), ubound(InData%MassM_fd, kind=B8Ki)) - call RegPack(Buf, InData%MassM_fd) - end if - call RegPack(Buf, allocated(InData%DampG_fd)) - if (allocated(InData%DampG_fd)) then - call RegPackBounds(Buf, 4, lbound(InData%DampG_fd, kind=B8Ki), ubound(InData%DampG_fd, kind=B8Ki)) - call RegPack(Buf, InData%DampG_fd) - end if - call RegPack(Buf, allocated(InData%RHS)) - if (allocated(InData%RHS)) then - call RegPackBounds(Buf, 2, lbound(InData%RHS, kind=B8Ki), ubound(InData%RHS, kind=B8Ki)) - call RegPack(Buf, InData%RHS) - end if - call RegPack(Buf, allocated(InData%RHS_p)) - if (allocated(InData%RHS_p)) then - call RegPackBounds(Buf, 2, lbound(InData%RHS_p, kind=B8Ki), ubound(InData%RHS_p, kind=B8Ki)) - call RegPack(Buf, InData%RHS_p) - end if - call RegPack(Buf, allocated(InData%RHS_m)) - if (allocated(InData%RHS_m)) then - call RegPackBounds(Buf, 2, lbound(InData%RHS_m, kind=B8Ki), ubound(InData%RHS_m, kind=B8Ki)) - call RegPack(Buf, InData%RHS_m) - end if - call RegPack(Buf, allocated(InData%BldInternalForceFE)) - if (allocated(InData%BldInternalForceFE)) then - call RegPackBounds(Buf, 2, lbound(InData%BldInternalForceFE, kind=B8Ki), ubound(InData%BldInternalForceFE, kind=B8Ki)) - call RegPack(Buf, InData%BldInternalForceFE) - end if - call RegPack(Buf, allocated(InData%BldInternalForceQP)) - if (allocated(InData%BldInternalForceQP)) then - call RegPackBounds(Buf, 2, lbound(InData%BldInternalForceQP, kind=B8Ki), ubound(InData%BldInternalForceQP, kind=B8Ki)) - call RegPack(Buf, InData%BldInternalForceQP) - end if - call RegPack(Buf, allocated(InData%FirstNodeReactionLclForceMoment)) - if (allocated(InData%FirstNodeReactionLclForceMoment)) then - call RegPackBounds(Buf, 1, lbound(InData%FirstNodeReactionLclForceMoment, kind=B8Ki), ubound(InData%FirstNodeReactionLclForceMoment, kind=B8Ki)) - call RegPack(Buf, InData%FirstNodeReactionLclForceMoment) - end if - call RegPack(Buf, allocated(InData%Solution)) - if (allocated(InData%Solution)) then - call RegPackBounds(Buf, 2, lbound(InData%Solution, kind=B8Ki), ubound(InData%Solution, kind=B8Ki)) - call RegPack(Buf, InData%Solution) - end if - call RegPack(Buf, allocated(InData%LP_StifK)) - if (allocated(InData%LP_StifK)) then - call RegPackBounds(Buf, 2, lbound(InData%LP_StifK, kind=B8Ki), ubound(InData%LP_StifK, kind=B8Ki)) - call RegPack(Buf, InData%LP_StifK) - end if - call RegPack(Buf, allocated(InData%LP_MassM)) - if (allocated(InData%LP_MassM)) then - call RegPackBounds(Buf, 2, lbound(InData%LP_MassM, kind=B8Ki), ubound(InData%LP_MassM, kind=B8Ki)) - call RegPack(Buf, InData%LP_MassM) - end if - call RegPack(Buf, allocated(InData%LP_MassM_LU)) - if (allocated(InData%LP_MassM_LU)) then - call RegPackBounds(Buf, 2, lbound(InData%LP_MassM_LU, kind=B8Ki), ubound(InData%LP_MassM_LU, kind=B8Ki)) - call RegPack(Buf, InData%LP_MassM_LU) - end if - call RegPack(Buf, allocated(InData%LP_RHS)) - if (allocated(InData%LP_RHS)) then - call RegPackBounds(Buf, 1, lbound(InData%LP_RHS, kind=B8Ki), ubound(InData%LP_RHS, kind=B8Ki)) - call RegPack(Buf, InData%LP_RHS) - end if - call RegPack(Buf, allocated(InData%LP_StifK_LU)) - if (allocated(InData%LP_StifK_LU)) then - call RegPackBounds(Buf, 2, lbound(InData%LP_StifK_LU, kind=B8Ki), ubound(InData%LP_StifK_LU, kind=B8Ki)) - call RegPack(Buf, InData%LP_StifK_LU) - end if - call RegPack(Buf, allocated(InData%LP_RHS_LU)) - if (allocated(InData%LP_RHS_LU)) then - call RegPackBounds(Buf, 1, lbound(InData%LP_RHS_LU, kind=B8Ki), ubound(InData%LP_RHS_LU, kind=B8Ki)) - call RegPack(Buf, InData%LP_RHS_LU) - end if - call RegPack(Buf, allocated(InData%LP_indx)) - if (allocated(InData%LP_indx)) then - call RegPackBounds(Buf, 1, lbound(InData%LP_indx, kind=B8Ki), ubound(InData%LP_indx, kind=B8Ki)) - call RegPack(Buf, InData%LP_indx) - end if - call BD_PackInput(Buf, InData%u) - call BD_PackInput(Buf, InData%u2) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%u_DistrLoad_at_y) + call MeshPack(RF, InData%y_BldMotion_at_u) + call NWTC_Library_PackMeshMapType(RF, InData%Map_u_DistrLoad_to_y) + call NWTC_Library_PackMeshMapType(RF, InData%Map_y_BldMotion_to_u) + call RegPack(RF, InData%Un_Sum) + call BD_PackEqMotionQP(RF, InData%qp) + call RegPackAlloc(RF, InData%lin_A) + call RegPackAlloc(RF, InData%lin_C) + call RegPackAlloc(RF, InData%Nrrr) + call RegPackAlloc(RF, InData%elf) + call RegPackAlloc(RF, InData%EFint) + call RegPackAlloc(RF, InData%elk) + call RegPackAlloc(RF, InData%elg) + call RegPackAlloc(RF, InData%elm) + call RegPackAlloc(RF, InData%DistrLoad_QP) + call RegPackAlloc(RF, InData%PointLoadLcl) + call RegPackAlloc(RF, InData%StifK) + call RegPackAlloc(RF, InData%MassM) + call RegPackAlloc(RF, InData%DampG) + call RegPackAlloc(RF, InData%StifK_fd) + call RegPackAlloc(RF, InData%MassM_fd) + call RegPackAlloc(RF, InData%DampG_fd) + call RegPackAlloc(RF, InData%RHS) + call RegPackAlloc(RF, InData%RHS_p) + call RegPackAlloc(RF, InData%RHS_m) + call RegPackAlloc(RF, InData%BldInternalForceFE) + call RegPackAlloc(RF, InData%BldInternalForceQP) + call RegPackAlloc(RF, InData%FirstNodeReactionLclForceMoment) + call RegPackAlloc(RF, InData%Solution) + call RegPackAlloc(RF, InData%LP_StifK) + call RegPackAlloc(RF, InData%LP_MassM) + call RegPackAlloc(RF, InData%LP_MassM_LU) + call RegPackAlloc(RF, InData%LP_RHS) + call RegPackAlloc(RF, InData%LP_StifK_LU) + call RegPackAlloc(RF, InData%LP_RHS_LU) + call RegPackAlloc(RF, InData%LP_indx) + call BD_PackInput(RF, InData%u) + call BD_PackInput(RF, InData%u2) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine BD_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine BD_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(BD_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'BD_UnPackMisc' integer(B8Ki) :: LB(4), UB(4) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%u_DistrLoad_at_y) ! u_DistrLoad_at_y - call MeshUnpack(Buf, OutData%y_BldMotion_at_u) ! y_BldMotion_at_u - call NWTC_Library_UnpackMeshMapType(Buf, OutData%Map_u_DistrLoad_to_y) ! Map_u_DistrLoad_to_y - call NWTC_Library_UnpackMeshMapType(Buf, OutData%Map_y_BldMotion_to_u) ! Map_y_BldMotion_to_u - call RegUnpack(Buf, OutData%Un_Sum) - if (RegCheckErr(Buf, RoutineName)) return - call BD_UnpackEqMotionQP(Buf, OutData%qp) ! qp - if (allocated(OutData%lin_A)) deallocate(OutData%lin_A) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%lin_A(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%lin_A.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%lin_A) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%lin_C)) deallocate(OutData%lin_C) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%lin_C(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%lin_C.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%lin_C) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Nrrr)) deallocate(OutData%Nrrr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Nrrr(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Nrrr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Nrrr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%elf)) deallocate(OutData%elf) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%elf(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%elf.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%elf) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%EFint)) deallocate(OutData%EFint) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%EFint(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%EFint.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%EFint) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%elk)) deallocate(OutData%elk) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%elk(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%elk.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%elk) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%elg)) deallocate(OutData%elg) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%elg(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%elg.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%elg) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%elm)) deallocate(OutData%elm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%elm(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%elm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%elm) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DistrLoad_QP)) deallocate(OutData%DistrLoad_QP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DistrLoad_QP(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DistrLoad_QP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DistrLoad_QP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PointLoadLcl)) deallocate(OutData%PointLoadLcl) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PointLoadLcl(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PointLoadLcl.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PointLoadLcl) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%StifK)) deallocate(OutData%StifK) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StifK(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StifK.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StifK) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MassM)) deallocate(OutData%MassM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MassM(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MassM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MassM) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DampG)) deallocate(OutData%DampG) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DampG(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DampG.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DampG) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%StifK_fd)) deallocate(OutData%StifK_fd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StifK_fd(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StifK_fd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StifK_fd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MassM_fd)) deallocate(OutData%MassM_fd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MassM_fd(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MassM_fd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MassM_fd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DampG_fd)) deallocate(OutData%DampG_fd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DampG_fd(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DampG_fd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DampG_fd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RHS)) deallocate(OutData%RHS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RHS(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RHS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RHS) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RHS_p)) deallocate(OutData%RHS_p) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RHS_p(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RHS_p.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RHS_p) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RHS_m)) deallocate(OutData%RHS_m) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RHS_m(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RHS_m.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RHS_m) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BldInternalForceFE)) deallocate(OutData%BldInternalForceFE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldInternalForceFE(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldInternalForceFE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldInternalForceFE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BldInternalForceQP)) deallocate(OutData%BldInternalForceQP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldInternalForceQP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldInternalForceQP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldInternalForceQP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FirstNodeReactionLclForceMoment)) deallocate(OutData%FirstNodeReactionLclForceMoment) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FirstNodeReactionLclForceMoment(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FirstNodeReactionLclForceMoment.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FirstNodeReactionLclForceMoment) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Solution)) deallocate(OutData%Solution) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Solution(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Solution.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Solution) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LP_StifK)) deallocate(OutData%LP_StifK) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LP_StifK(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LP_StifK.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LP_StifK) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LP_MassM)) deallocate(OutData%LP_MassM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LP_MassM(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LP_MassM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LP_MassM) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LP_MassM_LU)) deallocate(OutData%LP_MassM_LU) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LP_MassM_LU(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LP_MassM_LU.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LP_MassM_LU) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LP_RHS)) deallocate(OutData%LP_RHS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LP_RHS(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LP_RHS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LP_RHS) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LP_StifK_LU)) deallocate(OutData%LP_StifK_LU) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LP_StifK_LU(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LP_StifK_LU.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LP_StifK_LU) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LP_RHS_LU)) deallocate(OutData%LP_RHS_LU) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LP_RHS_LU(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LP_RHS_LU.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LP_RHS_LU) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LP_indx)) deallocate(OutData%LP_indx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LP_indx(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LP_indx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LP_indx) - if (RegCheckErr(Buf, RoutineName)) return - end if - call BD_UnpackInput(Buf, OutData%u) ! u - call BD_UnpackInput(Buf, OutData%u2) ! u2 + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%u_DistrLoad_at_y) ! u_DistrLoad_at_y + call MeshUnpack(RF, OutData%y_BldMotion_at_u) ! y_BldMotion_at_u + call NWTC_Library_UnpackMeshMapType(RF, OutData%Map_u_DistrLoad_to_y) ! Map_u_DistrLoad_to_y + call NWTC_Library_UnpackMeshMapType(RF, OutData%Map_y_BldMotion_to_u) ! Map_y_BldMotion_to_u + call RegUnpack(RF, OutData%Un_Sum); if (RegCheckErr(RF, RoutineName)) return + call BD_UnpackEqMotionQP(RF, OutData%qp) ! qp + call RegUnpackAlloc(RF, OutData%lin_A); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%lin_C); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Nrrr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%elf); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%EFint); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%elk); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%elg); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%elm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DistrLoad_QP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PointLoadLcl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StifK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MassM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DampG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StifK_fd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MassM_fd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DampG_fd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RHS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RHS_p); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RHS_m); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldInternalForceFE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldInternalForceQP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FirstNodeReactionLclForceMoment); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Solution); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LP_StifK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LP_MassM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LP_MassM_LU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LP_RHS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LP_StifK_LU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LP_RHS_LU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LP_indx); if (RegCheckErr(RF, RoutineName)) return + call BD_UnpackInput(RF, OutData%u) ! u + call BD_UnpackInput(RF, OutData%u2) ! u2 end subroutine subroutine BD_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/elastodyn/src/ElastoDyn_Types.f90 b/modules/elastodyn/src/ElastoDyn_Types.f90 index 563fd371c6..e6d3309010 100644 --- a/modules/elastodyn/src/ElastoDyn_Types.f90 +++ b/modules/elastodyn/src/ElastoDyn_Types.f90 @@ -854,49 +854,39 @@ subroutine ED_DestroyInitInput(InitInputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine ED_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(ED_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'ED_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%InputFile) - call RegPack(Buf, InData%Linearize) - call RegPack(Buf, InData%ADInputFile) - call RegPack(Buf, InData%CompElast) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, InData%MHK) - call RegPack(Buf, InData%WtrDpth) - call RegPack(Buf, InData%CompAeroMaps) - call RegPack(Buf, InData%RotSpeed) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%InputFile) + call RegPack(RF, InData%Linearize) + call RegPack(RF, InData%ADInputFile) + call RegPack(RF, InData%CompElast) + call RegPack(RF, InData%RootName) + call RegPack(RF, InData%Gravity) + call RegPack(RF, InData%MHK) + call RegPack(RF, InData%WtrDpth) + call RegPack(RF, InData%CompAeroMaps) + call RegPack(RF, InData%RotSpeed) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ED_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(ED_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ED_UnPackInitInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%InputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Linearize) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ADInputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompElast) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MHK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDpth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompAeroMaps) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotSpeed) - if (RegCheckErr(Buf, RoutineName)) return + 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%ADInputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompElast); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MHK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDpth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompAeroMaps); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotSpeed); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ED_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -1138,313 +1128,78 @@ subroutine ED_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine ED_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(ED_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'ED_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call RegPack(Buf, InData%NumBl) - call RegPack(Buf, allocated(InData%BlPitch)) - if (allocated(InData%BlPitch)) then - call RegPackBounds(Buf, 1, lbound(InData%BlPitch, kind=B8Ki), ubound(InData%BlPitch, kind=B8Ki)) - call RegPack(Buf, InData%BlPitch) - end if - call RegPack(Buf, InData%BladeLength) - call RegPack(Buf, InData%TowerHeight) - call RegPack(Buf, InData%TowerBaseHeight) - call RegPack(Buf, InData%HubHt) - call RegPack(Buf, allocated(InData%BldRNodes)) - if (allocated(InData%BldRNodes)) then - call RegPackBounds(Buf, 1, lbound(InData%BldRNodes, kind=B8Ki), ubound(InData%BldRNodes, kind=B8Ki)) - call RegPack(Buf, InData%BldRNodes) - end if - call RegPack(Buf, allocated(InData%TwrHNodes)) - if (allocated(InData%TwrHNodes)) then - call RegPackBounds(Buf, 1, lbound(InData%TwrHNodes, kind=B8Ki), ubound(InData%TwrHNodes, kind=B8Ki)) - call RegPack(Buf, InData%TwrHNodes) - end if - call RegPack(Buf, InData%PlatformPos) - call RegPack(Buf, InData%TwrBaseRefPos) - call RegPack(Buf, InData%TwrBaseTransDisp) - call RegPack(Buf, InData%TwrBaseRefOrient) - call RegPack(Buf, InData%TwrBaseOrient) - call RegPack(Buf, InData%HubRad) - call RegPack(Buf, InData%RotSpeed) - call RegPack(Buf, InData%isFixed_GenDOF) - call RegPack(Buf, allocated(InData%LinNames_y)) - if (allocated(InData%LinNames_y)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_y, kind=B8Ki), ubound(InData%LinNames_y, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_y) - end if - call RegPack(Buf, allocated(InData%LinNames_x)) - if (allocated(InData%LinNames_x)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_x, kind=B8Ki), ubound(InData%LinNames_x, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_x) - end if - call RegPack(Buf, allocated(InData%LinNames_u)) - if (allocated(InData%LinNames_u)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_u, kind=B8Ki), ubound(InData%LinNames_u, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_u) - end if - call RegPack(Buf, allocated(InData%RotFrame_y)) - if (allocated(InData%RotFrame_y)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_y, kind=B8Ki), ubound(InData%RotFrame_y, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_y) - end if - call RegPack(Buf, allocated(InData%RotFrame_x)) - if (allocated(InData%RotFrame_x)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_x, kind=B8Ki), ubound(InData%RotFrame_x, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_x) - end if - call RegPack(Buf, allocated(InData%DerivOrder_x)) - if (allocated(InData%DerivOrder_x)) then - call RegPackBounds(Buf, 1, lbound(InData%DerivOrder_x, kind=B8Ki), ubound(InData%DerivOrder_x, kind=B8Ki)) - call RegPack(Buf, InData%DerivOrder_x) - end if - call RegPack(Buf, allocated(InData%RotFrame_u)) - if (allocated(InData%RotFrame_u)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_u, kind=B8Ki), ubound(InData%RotFrame_u, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_u) - end if - call RegPack(Buf, allocated(InData%IsLoad_u)) - if (allocated(InData%IsLoad_u)) then - call RegPackBounds(Buf, 1, lbound(InData%IsLoad_u, kind=B8Ki), ubound(InData%IsLoad_u, kind=B8Ki)) - call RegPack(Buf, InData%IsLoad_u) - end if - call RegPack(Buf, InData%GearBox_index) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call RegPack(RF, InData%NumBl) + call RegPackAlloc(RF, InData%BlPitch) + call RegPack(RF, InData%BladeLength) + call RegPack(RF, InData%TowerHeight) + call RegPack(RF, InData%TowerBaseHeight) + call RegPack(RF, InData%HubHt) + call RegPackAlloc(RF, InData%BldRNodes) + call RegPackAlloc(RF, InData%TwrHNodes) + call RegPack(RF, InData%PlatformPos) + call RegPack(RF, InData%TwrBaseRefPos) + call RegPack(RF, InData%TwrBaseTransDisp) + call RegPack(RF, InData%TwrBaseRefOrient) + call RegPack(RF, InData%TwrBaseOrient) + call RegPack(RF, InData%HubRad) + call RegPack(RF, InData%RotSpeed) + call RegPack(RF, InData%isFixed_GenDOF) + call RegPackAlloc(RF, InData%LinNames_y) + call RegPackAlloc(RF, InData%LinNames_x) + call RegPackAlloc(RF, InData%LinNames_u) + call RegPackAlloc(RF, InData%RotFrame_y) + call RegPackAlloc(RF, InData%RotFrame_x) + call RegPackAlloc(RF, InData%DerivOrder_x) + call RegPackAlloc(RF, InData%RotFrame_u) + call RegPackAlloc(RF, InData%IsLoad_u) + call RegPack(RF, InData%GearBox_index) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ED_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(ED_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ED_UnPackInitOutput' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver - call RegUnpack(Buf, OutData%NumBl) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BlPitch)) deallocate(OutData%BlPitch) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlPitch(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlPitch.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlPitch) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%BladeLength) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TowerHeight) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TowerBaseHeight) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubHt) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BldRNodes)) deallocate(OutData%BldRNodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldRNodes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldRNodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldRNodes) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrHNodes)) deallocate(OutData%TwrHNodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrHNodes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrHNodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrHNodes) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%PlatformPos) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrBaseRefPos) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrBaseTransDisp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrBaseRefOrient) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrBaseOrient) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubRad) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%isFixed_GenDOF) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%LinNames_y)) deallocate(OutData%LinNames_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_x)) deallocate(OutData%LinNames_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_u)) deallocate(OutData%LinNames_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_y)) deallocate(OutData%RotFrame_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_x)) deallocate(OutData%RotFrame_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DerivOrder_x)) deallocate(OutData%DerivOrder_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DerivOrder_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DerivOrder_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DerivOrder_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_u)) deallocate(OutData%RotFrame_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IsLoad_u)) deallocate(OutData%IsLoad_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IsLoad_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IsLoad_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IsLoad_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%GearBox_index) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver + call RegUnpack(RF, OutData%NumBl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlPitch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BladeLength); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TowerHeight); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TowerBaseHeight); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubHt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldRNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrHNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PlatformPos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrBaseRefPos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrBaseTransDisp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrBaseRefOrient); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrBaseOrient); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubRad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%isFixed_GenDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DerivOrder_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IsLoad_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GearBox_index); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ED_CopyBladeInputData(SrcBladeInputDataData, DstBladeInputDataData, CtrlCode, ErrStat, ErrMsg) @@ -1608,205 +1363,48 @@ subroutine ED_DestroyBladeInputData(BladeInputDataData, ErrStat, ErrMsg) end if end subroutine -subroutine ED_PackBladeInputData(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_PackBladeInputData(RF, Indata) + type(RegFile), intent(inout) :: RF type(BladeInputData), intent(in) :: InData character(*), parameter :: RoutineName = 'ED_PackBladeInputData' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%NBlInpSt) - call RegPack(Buf, allocated(InData%BlFract)) - if (allocated(InData%BlFract)) then - call RegPackBounds(Buf, 1, lbound(InData%BlFract, kind=B8Ki), ubound(InData%BlFract, kind=B8Ki)) - call RegPack(Buf, InData%BlFract) - end if - call RegPack(Buf, allocated(InData%PitchAx)) - if (allocated(InData%PitchAx)) then - call RegPackBounds(Buf, 1, lbound(InData%PitchAx, kind=B8Ki), ubound(InData%PitchAx, kind=B8Ki)) - call RegPack(Buf, InData%PitchAx) - end if - call RegPack(Buf, allocated(InData%StrcTwst)) - if (allocated(InData%StrcTwst)) then - call RegPackBounds(Buf, 1, lbound(InData%StrcTwst, kind=B8Ki), ubound(InData%StrcTwst, kind=B8Ki)) - call RegPack(Buf, InData%StrcTwst) - end if - call RegPack(Buf, allocated(InData%BMassDen)) - if (allocated(InData%BMassDen)) then - call RegPackBounds(Buf, 1, lbound(InData%BMassDen, kind=B8Ki), ubound(InData%BMassDen, kind=B8Ki)) - call RegPack(Buf, InData%BMassDen) - end if - call RegPack(Buf, allocated(InData%FlpStff)) - if (allocated(InData%FlpStff)) then - call RegPackBounds(Buf, 1, lbound(InData%FlpStff, kind=B8Ki), ubound(InData%FlpStff, kind=B8Ki)) - call RegPack(Buf, InData%FlpStff) - end if - call RegPack(Buf, allocated(InData%EdgStff)) - if (allocated(InData%EdgStff)) then - call RegPackBounds(Buf, 1, lbound(InData%EdgStff, kind=B8Ki), ubound(InData%EdgStff, kind=B8Ki)) - call RegPack(Buf, InData%EdgStff) - end if - call RegPack(Buf, InData%BldFlDmp) - call RegPack(Buf, InData%BldEdDmp) - call RegPack(Buf, InData%FlStTunr) - call RegPack(Buf, allocated(InData%BldFl1Sh)) - if (allocated(InData%BldFl1Sh)) then - call RegPackBounds(Buf, 1, lbound(InData%BldFl1Sh, kind=B8Ki), ubound(InData%BldFl1Sh, kind=B8Ki)) - call RegPack(Buf, InData%BldFl1Sh) - end if - call RegPack(Buf, allocated(InData%BldFl2Sh)) - if (allocated(InData%BldFl2Sh)) then - call RegPackBounds(Buf, 1, lbound(InData%BldFl2Sh, kind=B8Ki), ubound(InData%BldFl2Sh, kind=B8Ki)) - call RegPack(Buf, InData%BldFl2Sh) - end if - call RegPack(Buf, allocated(InData%BldEdgSh)) - if (allocated(InData%BldEdgSh)) then - call RegPackBounds(Buf, 1, lbound(InData%BldEdgSh, kind=B8Ki), ubound(InData%BldEdgSh, kind=B8Ki)) - call RegPack(Buf, InData%BldEdgSh) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%NBlInpSt) + call RegPackAlloc(RF, InData%BlFract) + call RegPackAlloc(RF, InData%PitchAx) + call RegPackAlloc(RF, InData%StrcTwst) + call RegPackAlloc(RF, InData%BMassDen) + call RegPackAlloc(RF, InData%FlpStff) + call RegPackAlloc(RF, InData%EdgStff) + call RegPack(RF, InData%BldFlDmp) + call RegPack(RF, InData%BldEdDmp) + call RegPack(RF, InData%FlStTunr) + call RegPackAlloc(RF, InData%BldFl1Sh) + call RegPackAlloc(RF, InData%BldFl2Sh) + call RegPackAlloc(RF, InData%BldEdgSh) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ED_UnPackBladeInputData(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_UnPackBladeInputData(RF, OutData) + type(RegFile), intent(inout) :: RF type(BladeInputData), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ED_UnPackBladeInputData' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%NBlInpSt) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BlFract)) deallocate(OutData%BlFract) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlFract(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlFract.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlFract) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PitchAx)) deallocate(OutData%PitchAx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PitchAx(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PitchAx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PitchAx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%StrcTwst)) deallocate(OutData%StrcTwst) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StrcTwst(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StrcTwst.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StrcTwst) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BMassDen)) deallocate(OutData%BMassDen) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BMassDen(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BMassDen.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BMassDen) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FlpStff)) deallocate(OutData%FlpStff) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FlpStff(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FlpStff.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FlpStff) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%EdgStff)) deallocate(OutData%EdgStff) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%EdgStff(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%EdgStff.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%EdgStff) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%BldFlDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BldEdDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FlStTunr) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BldFl1Sh)) deallocate(OutData%BldFl1Sh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldFl1Sh(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldFl1Sh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldFl1Sh) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BldFl2Sh)) deallocate(OutData%BldFl2Sh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldFl2Sh(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldFl2Sh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldFl2Sh) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BldEdgSh)) deallocate(OutData%BldEdgSh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldEdgSh(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldEdgSh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldEdgSh) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%NBlInpSt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlFract); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PitchAx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StrcTwst); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BMassDen); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FlpStff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%EdgStff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldFlDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldEdDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FlStTunr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldFl1Sh); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldFl2Sh); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldEdgSh); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ED_CopyBladeMeshInputData(SrcBladeMeshInputDataData, DstBladeMeshInputDataData, CtrlCode, ErrStat, ErrMsg) @@ -1877,82 +1475,30 @@ subroutine ED_DestroyBladeMeshInputData(BladeMeshInputDataData, ErrStat, ErrMsg) end if end subroutine -subroutine ED_PackBladeMeshInputData(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_PackBladeMeshInputData(RF, Indata) + type(RegFile), intent(inout) :: RF type(ED_BladeMeshInputData), intent(in) :: InData character(*), parameter :: RoutineName = 'ED_PackBladeMeshInputData' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%BldNodes) - call RegPack(Buf, allocated(InData%RNodes)) - if (allocated(InData%RNodes)) then - call RegPackBounds(Buf, 1, lbound(InData%RNodes, kind=B8Ki), ubound(InData%RNodes, kind=B8Ki)) - call RegPack(Buf, InData%RNodes) - end if - call RegPack(Buf, allocated(InData%AeroTwst)) - if (allocated(InData%AeroTwst)) then - call RegPackBounds(Buf, 1, lbound(InData%AeroTwst, kind=B8Ki), ubound(InData%AeroTwst, kind=B8Ki)) - call RegPack(Buf, InData%AeroTwst) - end if - call RegPack(Buf, allocated(InData%Chord)) - if (allocated(InData%Chord)) then - call RegPackBounds(Buf, 1, lbound(InData%Chord, kind=B8Ki), ubound(InData%Chord, kind=B8Ki)) - call RegPack(Buf, InData%Chord) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%BldNodes) + call RegPackAlloc(RF, InData%RNodes) + call RegPackAlloc(RF, InData%AeroTwst) + call RegPackAlloc(RF, InData%Chord) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ED_UnPackBladeMeshInputData(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_UnPackBladeMeshInputData(RF, OutData) + type(RegFile), intent(inout) :: RF type(ED_BladeMeshInputData), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ED_UnPackBladeMeshInputData' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%BldNodes) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%RNodes)) deallocate(OutData%RNodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RNodes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RNodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RNodes) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AeroTwst)) deallocate(OutData%AeroTwst) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AeroTwst(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AeroTwst.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AeroTwst) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Chord)) deallocate(OutData%Chord) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Chord(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Chord.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Chord) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%BldNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AeroTwst); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Chord); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ED_CopyInputFile(SrcInputFileData, DstInputFileData, CtrlCode, ErrStat, ErrMsg) @@ -2370,746 +1916,379 @@ subroutine ED_DestroyInputFile(InputFileData, ErrStat, ErrMsg) end if end subroutine -subroutine ED_PackInputFile(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_PackInputFile(RF, Indata) + type(RegFile), intent(inout) :: RF type(ED_InputFile), intent(in) :: InData character(*), parameter :: RoutineName = 'ED_PackInputFile' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT) - call RegPack(Buf, InData%FlapDOF1) - call RegPack(Buf, InData%FlapDOF2) - call RegPack(Buf, InData%EdgeDOF) - call RegPack(Buf, InData%TeetDOF) - call RegPack(Buf, InData%DrTrDOF) - call RegPack(Buf, InData%GenDOF) - call RegPack(Buf, InData%YawDOF) - call RegPack(Buf, InData%TwFADOF1) - call RegPack(Buf, InData%TwFADOF2) - call RegPack(Buf, InData%TwSSDOF1) - call RegPack(Buf, InData%TwSSDOF2) - call RegPack(Buf, InData%PtfmSgDOF) - call RegPack(Buf, InData%PtfmSwDOF) - call RegPack(Buf, InData%PtfmHvDOF) - call RegPack(Buf, InData%PtfmRDOF) - call RegPack(Buf, InData%PtfmPDOF) - call RegPack(Buf, InData%PtfmYDOF) - call RegPack(Buf, InData%OoPDefl) - call RegPack(Buf, InData%IPDefl) - call RegPack(Buf, allocated(InData%BlPitch)) - if (allocated(InData%BlPitch)) then - call RegPackBounds(Buf, 1, lbound(InData%BlPitch, kind=B8Ki), ubound(InData%BlPitch, kind=B8Ki)) - call RegPack(Buf, InData%BlPitch) - end if - call RegPack(Buf, InData%TeetDefl) - call RegPack(Buf, InData%Azimuth) - call RegPack(Buf, InData%RotSpeed) - call RegPack(Buf, InData%NacYaw) - call RegPack(Buf, InData%TTDspFA) - call RegPack(Buf, InData%TTDspSS) - call RegPack(Buf, InData%PtfmSurge) - call RegPack(Buf, InData%PtfmSway) - call RegPack(Buf, InData%PtfmHeave) - call RegPack(Buf, InData%PtfmRoll) - call RegPack(Buf, InData%PtfmPitch) - call RegPack(Buf, InData%PtfmYaw) - call RegPack(Buf, InData%NumBl) - call RegPack(Buf, InData%TipRad) - call RegPack(Buf, InData%HubRad) - call RegPack(Buf, allocated(InData%PreCone)) - if (allocated(InData%PreCone)) then - call RegPackBounds(Buf, 1, lbound(InData%PreCone, kind=B8Ki), ubound(InData%PreCone, kind=B8Ki)) - call RegPack(Buf, InData%PreCone) - end if - call RegPack(Buf, InData%HubCM) - call RegPack(Buf, InData%UndSling) - call RegPack(Buf, InData%Delta3) - call RegPack(Buf, InData%AzimB1Up) - call RegPack(Buf, InData%OverHang) - call RegPack(Buf, InData%ShftGagL) - call RegPack(Buf, InData%ShftTilt) - call RegPack(Buf, InData%NacCMxn) - call RegPack(Buf, InData%NacCMyn) - call RegPack(Buf, InData%NacCMzn) - call RegPack(Buf, InData%NcIMUxn) - call RegPack(Buf, InData%NcIMUyn) - call RegPack(Buf, InData%NcIMUzn) - call RegPack(Buf, InData%Twr2Shft) - call RegPack(Buf, InData%TowerHt) - call RegPack(Buf, InData%TowerBsHt) - call RegPack(Buf, InData%PtfmCMxt) - call RegPack(Buf, InData%PtfmCMyt) - call RegPack(Buf, InData%PtfmCMzt) - call RegPack(Buf, InData%PtfmRefzt) - call RegPack(Buf, allocated(InData%TipMass)) - if (allocated(InData%TipMass)) then - call RegPackBounds(Buf, 1, lbound(InData%TipMass, kind=B8Ki), ubound(InData%TipMass, kind=B8Ki)) - call RegPack(Buf, InData%TipMass) - end if - call RegPack(Buf, InData%HubMass) - call RegPack(Buf, InData%HubIner) - call RegPack(Buf, InData%GenIner) - call RegPack(Buf, InData%NacMass) - call RegPack(Buf, InData%NacYIner) - call RegPack(Buf, InData%YawBrMass) - call RegPack(Buf, InData%PtfmMass) - call RegPack(Buf, InData%PtfmRIner) - call RegPack(Buf, InData%PtfmPIner) - call RegPack(Buf, InData%PtfmYIner) - call RegPack(Buf, InData%BldNodes) - call RegPack(Buf, allocated(InData%InpBlMesh)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT) + call RegPack(RF, InData%FlapDOF1) + call RegPack(RF, InData%FlapDOF2) + call RegPack(RF, InData%EdgeDOF) + call RegPack(RF, InData%TeetDOF) + call RegPack(RF, InData%DrTrDOF) + call RegPack(RF, InData%GenDOF) + call RegPack(RF, InData%YawDOF) + call RegPack(RF, InData%TwFADOF1) + call RegPack(RF, InData%TwFADOF2) + call RegPack(RF, InData%TwSSDOF1) + call RegPack(RF, InData%TwSSDOF2) + call RegPack(RF, InData%PtfmSgDOF) + call RegPack(RF, InData%PtfmSwDOF) + call RegPack(RF, InData%PtfmHvDOF) + call RegPack(RF, InData%PtfmRDOF) + call RegPack(RF, InData%PtfmPDOF) + call RegPack(RF, InData%PtfmYDOF) + call RegPack(RF, InData%OoPDefl) + call RegPack(RF, InData%IPDefl) + call RegPackAlloc(RF, InData%BlPitch) + call RegPack(RF, InData%TeetDefl) + call RegPack(RF, InData%Azimuth) + call RegPack(RF, InData%RotSpeed) + call RegPack(RF, InData%NacYaw) + call RegPack(RF, InData%TTDspFA) + call RegPack(RF, InData%TTDspSS) + call RegPack(RF, InData%PtfmSurge) + call RegPack(RF, InData%PtfmSway) + call RegPack(RF, InData%PtfmHeave) + call RegPack(RF, InData%PtfmRoll) + call RegPack(RF, InData%PtfmPitch) + call RegPack(RF, InData%PtfmYaw) + call RegPack(RF, InData%NumBl) + call RegPack(RF, InData%TipRad) + call RegPack(RF, InData%HubRad) + call RegPackAlloc(RF, InData%PreCone) + call RegPack(RF, InData%HubCM) + call RegPack(RF, InData%UndSling) + call RegPack(RF, InData%Delta3) + call RegPack(RF, InData%AzimB1Up) + call RegPack(RF, InData%OverHang) + call RegPack(RF, InData%ShftGagL) + call RegPack(RF, InData%ShftTilt) + call RegPack(RF, InData%NacCMxn) + call RegPack(RF, InData%NacCMyn) + call RegPack(RF, InData%NacCMzn) + call RegPack(RF, InData%NcIMUxn) + call RegPack(RF, InData%NcIMUyn) + call RegPack(RF, InData%NcIMUzn) + call RegPack(RF, InData%Twr2Shft) + call RegPack(RF, InData%TowerHt) + call RegPack(RF, InData%TowerBsHt) + call RegPack(RF, InData%PtfmCMxt) + call RegPack(RF, InData%PtfmCMyt) + call RegPack(RF, InData%PtfmCMzt) + call RegPack(RF, InData%PtfmRefzt) + call RegPackAlloc(RF, InData%TipMass) + call RegPack(RF, InData%HubMass) + call RegPack(RF, InData%HubIner) + call RegPack(RF, InData%GenIner) + call RegPack(RF, InData%NacMass) + call RegPack(RF, InData%NacYIner) + call RegPack(RF, InData%YawBrMass) + call RegPack(RF, InData%PtfmMass) + call RegPack(RF, InData%PtfmRIner) + call RegPack(RF, InData%PtfmPIner) + call RegPack(RF, InData%PtfmYIner) + call RegPack(RF, InData%BldNodes) + call RegPack(RF, allocated(InData%InpBlMesh)) if (allocated(InData%InpBlMesh)) then - call RegPackBounds(Buf, 1, lbound(InData%InpBlMesh, kind=B8Ki), ubound(InData%InpBlMesh, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%InpBlMesh, kind=B8Ki), ubound(InData%InpBlMesh, kind=B8Ki)) LB(1:1) = lbound(InData%InpBlMesh, kind=B8Ki) UB(1:1) = ubound(InData%InpBlMesh, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_PackBladeMeshInputData(Buf, InData%InpBlMesh(i1)) + call ED_PackBladeMeshInputData(RF, InData%InpBlMesh(i1)) end do end if - call RegPack(Buf, allocated(InData%InpBl)) + call RegPack(RF, allocated(InData%InpBl)) if (allocated(InData%InpBl)) then - call RegPackBounds(Buf, 1, lbound(InData%InpBl, kind=B8Ki), ubound(InData%InpBl, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%InpBl, kind=B8Ki), ubound(InData%InpBl, kind=B8Ki)) LB(1:1) = lbound(InData%InpBl, kind=B8Ki) UB(1:1) = ubound(InData%InpBl, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_PackBladeInputData(Buf, InData%InpBl(i1)) + call ED_PackBladeInputData(RF, InData%InpBl(i1)) end do end if - call RegPack(Buf, InData%TeetMod) - call RegPack(Buf, InData%TeetDmpP) - call RegPack(Buf, InData%TeetDmp) - call RegPack(Buf, InData%TeetCDmp) - call RegPack(Buf, InData%TeetSStP) - call RegPack(Buf, InData%TeetHStP) - call RegPack(Buf, InData%TeetSSSp) - call RegPack(Buf, InData%TeetHSSp) - call RegPack(Buf, InData%GBoxEff) - call RegPack(Buf, InData%GBRatio) - call RegPack(Buf, InData%DTTorSpr) - call RegPack(Buf, InData%DTTorDmp) - call RegPack(Buf, InData%Furling) - call RegPack(Buf, InData%TwrNodes) - call RegPack(Buf, InData%SumPrint) - call RegPack(Buf, InData%OutFile) - call RegPack(Buf, InData%TabDelim) - call RegPack(Buf, InData%OutFmt) - call RegPack(Buf, InData%Tstart) - call RegPack(Buf, InData%DecFact) - call RegPack(Buf, InData%NTwGages) - call RegPack(Buf, InData%TwrGagNd) - call RegPack(Buf, InData%NBlGages) - call RegPack(Buf, InData%BldGagNd) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, allocated(InData%OutList)) - if (allocated(InData%OutList)) then - call RegPackBounds(Buf, 1, lbound(InData%OutList, kind=B8Ki), ubound(InData%OutList, kind=B8Ki)) - call RegPack(Buf, InData%OutList) - end if - call RegPack(Buf, InData%NTwInpSt) - call RegPack(Buf, InData%TwrFADmp) - call RegPack(Buf, InData%TwrSSDmp) - call RegPack(Buf, InData%FAStTunr) - call RegPack(Buf, InData%SSStTunr) - call RegPack(Buf, allocated(InData%HtFract)) - if (allocated(InData%HtFract)) then - call RegPackBounds(Buf, 1, lbound(InData%HtFract, kind=B8Ki), ubound(InData%HtFract, kind=B8Ki)) - call RegPack(Buf, InData%HtFract) - end if - call RegPack(Buf, allocated(InData%TMassDen)) - if (allocated(InData%TMassDen)) then - call RegPackBounds(Buf, 1, lbound(InData%TMassDen, kind=B8Ki), ubound(InData%TMassDen, kind=B8Ki)) - call RegPack(Buf, InData%TMassDen) - end if - call RegPack(Buf, allocated(InData%TwFAStif)) - if (allocated(InData%TwFAStif)) then - call RegPackBounds(Buf, 1, lbound(InData%TwFAStif, kind=B8Ki), ubound(InData%TwFAStif, kind=B8Ki)) - call RegPack(Buf, InData%TwFAStif) - end if - call RegPack(Buf, allocated(InData%TwSSStif)) - if (allocated(InData%TwSSStif)) then - call RegPackBounds(Buf, 1, lbound(InData%TwSSStif, kind=B8Ki), ubound(InData%TwSSStif, kind=B8Ki)) - call RegPack(Buf, InData%TwSSStif) - end if - call RegPack(Buf, allocated(InData%TwFAM1Sh)) - if (allocated(InData%TwFAM1Sh)) then - call RegPackBounds(Buf, 1, lbound(InData%TwFAM1Sh, kind=B8Ki), ubound(InData%TwFAM1Sh, kind=B8Ki)) - call RegPack(Buf, InData%TwFAM1Sh) - end if - call RegPack(Buf, allocated(InData%TwFAM2Sh)) - if (allocated(InData%TwFAM2Sh)) then - call RegPackBounds(Buf, 1, lbound(InData%TwFAM2Sh, kind=B8Ki), ubound(InData%TwFAM2Sh, kind=B8Ki)) - call RegPack(Buf, InData%TwFAM2Sh) - end if - call RegPack(Buf, allocated(InData%TwSSM1Sh)) - if (allocated(InData%TwSSM1Sh)) then - call RegPackBounds(Buf, 1, lbound(InData%TwSSM1Sh, kind=B8Ki), ubound(InData%TwSSM1Sh, kind=B8Ki)) - call RegPack(Buf, InData%TwSSM1Sh) - end if - call RegPack(Buf, allocated(InData%TwSSM2Sh)) - if (allocated(InData%TwSSM2Sh)) then - call RegPackBounds(Buf, 1, lbound(InData%TwSSM2Sh, kind=B8Ki), ubound(InData%TwSSM2Sh, kind=B8Ki)) - call RegPack(Buf, InData%TwSSM2Sh) - end if - call RegPack(Buf, InData%RFrlDOF) - call RegPack(Buf, InData%TFrlDOF) - call RegPack(Buf, InData%RotFurl) - call RegPack(Buf, InData%TailFurl) - call RegPack(Buf, InData%Yaw2Shft) - call RegPack(Buf, InData%ShftSkew) - call RegPack(Buf, InData%RFrlCM_n) - call RegPack(Buf, InData%BoomCM_n) - call RegPack(Buf, InData%TFinCM_n) - call RegPack(Buf, InData%RFrlPnt_n) - call RegPack(Buf, InData%RFrlSkew) - call RegPack(Buf, InData%RFrlTilt) - call RegPack(Buf, InData%TFrlPnt_n) - call RegPack(Buf, InData%TFrlSkew) - call RegPack(Buf, InData%TFrlTilt) - call RegPack(Buf, InData%RFrlMass) - call RegPack(Buf, InData%BoomMass) - call RegPack(Buf, InData%TFinMass) - call RegPack(Buf, InData%RFrlIner) - call RegPack(Buf, InData%TFrlIner) - call RegPack(Buf, InData%RFrlMod) - call RegPack(Buf, InData%RFrlSpr) - call RegPack(Buf, InData%RFrlDmp) - call RegPack(Buf, InData%RFrlUSSP) - call RegPack(Buf, InData%RFrlDSSP) - call RegPack(Buf, InData%RFrlUSSpr) - call RegPack(Buf, InData%RFrlDSSpr) - call RegPack(Buf, InData%RFrlUSDP) - call RegPack(Buf, InData%RFrlDSDP) - call RegPack(Buf, InData%RFrlUSDmp) - call RegPack(Buf, InData%RFrlDSDmp) - call RegPack(Buf, InData%TFrlMod) - call RegPack(Buf, InData%TFrlSpr) - call RegPack(Buf, InData%TFrlDmp) - call RegPack(Buf, InData%TFrlUSSP) - call RegPack(Buf, InData%TFrlDSSP) - call RegPack(Buf, InData%TFrlUSSpr) - call RegPack(Buf, InData%TFrlDSSpr) - call RegPack(Buf, InData%TFrlUSDP) - call RegPack(Buf, InData%TFrlDSDP) - call RegPack(Buf, InData%TFrlUSDmp) - call RegPack(Buf, InData%TFrlDSDmp) - call RegPack(Buf, InData%method) - call RegPack(Buf, InData%BldNd_NumOuts) - call RegPack(Buf, allocated(InData%BldNd_OutList)) - if (allocated(InData%BldNd_OutList)) then - call RegPackBounds(Buf, 1, lbound(InData%BldNd_OutList, kind=B8Ki), ubound(InData%BldNd_OutList, kind=B8Ki)) - call RegPack(Buf, InData%BldNd_OutList) - end if - call RegPack(Buf, InData%BldNd_BlOutNd_Str) - call RegPack(Buf, InData%BldNd_BladesOut) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%TeetMod) + call RegPack(RF, InData%TeetDmpP) + call RegPack(RF, InData%TeetDmp) + call RegPack(RF, InData%TeetCDmp) + call RegPack(RF, InData%TeetSStP) + call RegPack(RF, InData%TeetHStP) + call RegPack(RF, InData%TeetSSSp) + call RegPack(RF, InData%TeetHSSp) + call RegPack(RF, InData%GBoxEff) + call RegPack(RF, InData%GBRatio) + call RegPack(RF, InData%DTTorSpr) + call RegPack(RF, InData%DTTorDmp) + call RegPack(RF, InData%Furling) + call RegPack(RF, InData%TwrNodes) + call RegPack(RF, InData%SumPrint) + call RegPack(RF, InData%OutFile) + call RegPack(RF, InData%TabDelim) + call RegPack(RF, InData%OutFmt) + call RegPack(RF, InData%Tstart) + call RegPack(RF, InData%DecFact) + call RegPack(RF, InData%NTwGages) + call RegPack(RF, InData%TwrGagNd) + call RegPack(RF, InData%NBlGages) + call RegPack(RF, InData%BldGagNd) + call RegPack(RF, InData%NumOuts) + call RegPackAlloc(RF, InData%OutList) + call RegPack(RF, InData%NTwInpSt) + call RegPack(RF, InData%TwrFADmp) + call RegPack(RF, InData%TwrSSDmp) + call RegPack(RF, InData%FAStTunr) + call RegPack(RF, InData%SSStTunr) + call RegPackAlloc(RF, InData%HtFract) + call RegPackAlloc(RF, InData%TMassDen) + call RegPackAlloc(RF, InData%TwFAStif) + call RegPackAlloc(RF, InData%TwSSStif) + call RegPackAlloc(RF, InData%TwFAM1Sh) + call RegPackAlloc(RF, InData%TwFAM2Sh) + call RegPackAlloc(RF, InData%TwSSM1Sh) + call RegPackAlloc(RF, InData%TwSSM2Sh) + call RegPack(RF, InData%RFrlDOF) + call RegPack(RF, InData%TFrlDOF) + call RegPack(RF, InData%RotFurl) + call RegPack(RF, InData%TailFurl) + call RegPack(RF, InData%Yaw2Shft) + call RegPack(RF, InData%ShftSkew) + call RegPack(RF, InData%RFrlCM_n) + call RegPack(RF, InData%BoomCM_n) + call RegPack(RF, InData%TFinCM_n) + call RegPack(RF, InData%RFrlPnt_n) + call RegPack(RF, InData%RFrlSkew) + call RegPack(RF, InData%RFrlTilt) + call RegPack(RF, InData%TFrlPnt_n) + call RegPack(RF, InData%TFrlSkew) + call RegPack(RF, InData%TFrlTilt) + call RegPack(RF, InData%RFrlMass) + call RegPack(RF, InData%BoomMass) + call RegPack(RF, InData%TFinMass) + call RegPack(RF, InData%RFrlIner) + call RegPack(RF, InData%TFrlIner) + call RegPack(RF, InData%RFrlMod) + call RegPack(RF, InData%RFrlSpr) + call RegPack(RF, InData%RFrlDmp) + call RegPack(RF, InData%RFrlUSSP) + call RegPack(RF, InData%RFrlDSSP) + call RegPack(RF, InData%RFrlUSSpr) + call RegPack(RF, InData%RFrlDSSpr) + call RegPack(RF, InData%RFrlUSDP) + call RegPack(RF, InData%RFrlDSDP) + call RegPack(RF, InData%RFrlUSDmp) + call RegPack(RF, InData%RFrlDSDmp) + call RegPack(RF, InData%TFrlMod) + call RegPack(RF, InData%TFrlSpr) + call RegPack(RF, InData%TFrlDmp) + call RegPack(RF, InData%TFrlUSSP) + call RegPack(RF, InData%TFrlDSSP) + call RegPack(RF, InData%TFrlUSSpr) + call RegPack(RF, InData%TFrlDSSpr) + call RegPack(RF, InData%TFrlUSDP) + call RegPack(RF, InData%TFrlDSDP) + call RegPack(RF, InData%TFrlUSDmp) + call RegPack(RF, InData%TFrlDSDmp) + call RegPack(RF, InData%method) + call RegPack(RF, InData%BldNd_NumOuts) + call RegPackAlloc(RF, InData%BldNd_OutList) + call RegPack(RF, InData%BldNd_BlOutNd_Str) + call RegPack(RF, InData%BldNd_BladesOut) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ED_UnPackInputFile(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_UnPackInputFile(RF, OutData) + type(RegFile), intent(inout) :: RF type(ED_InputFile), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ED_UnPackInputFile' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FlapDOF1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FlapDOF2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EdgeDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DrTrDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwFADOF1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwFADOF2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwSSDOF1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwSSDOF2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmSgDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmSwDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmHvDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmRDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmPDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmYDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OoPDefl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%IPDefl) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BlPitch)) deallocate(OutData%BlPitch) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlPitch(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlPitch.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlPitch) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%TeetDefl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Azimuth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacYaw) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TTDspFA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TTDspSS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmSurge) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmSway) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmHeave) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmRoll) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmPitch) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmYaw) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TipRad) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubRad) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PreCone)) deallocate(OutData%PreCone) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PreCone(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PreCone.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PreCone) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%HubCM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UndSling) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Delta3) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AzimB1Up) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OverHang) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ShftGagL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ShftTilt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacCMxn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacCMyn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacCMzn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NcIMUxn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NcIMUyn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NcIMUzn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Twr2Shft) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TowerHt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TowerBsHt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmCMxt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmCMyt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmCMzt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmRefzt) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TipMass)) deallocate(OutData%TipMass) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TipMass(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TipMass.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TipMass) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%HubMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubIner) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenIner) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacYIner) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawBrMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmRIner) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmPIner) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmYIner) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BldNodes) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FlapDOF1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FlapDOF2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EdgeDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DrTrDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwFADOF1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwFADOF2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwSSDOF1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwSSDOF2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmSgDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmSwDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmHvDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmRDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmPDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmYDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OoPDefl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IPDefl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlPitch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetDefl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Azimuth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacYaw); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TTDspFA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TTDspSS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmSurge); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmSway); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmHeave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmRoll); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmPitch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmYaw); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TipRad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubRad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PreCone); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubCM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UndSling); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Delta3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AzimB1Up); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OverHang); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ShftGagL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ShftTilt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacCMxn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacCMyn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacCMzn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NcIMUxn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NcIMUyn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NcIMUzn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Twr2Shft); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TowerHt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TowerBsHt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmCMxt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmCMyt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmCMzt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmRefzt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TipMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubIner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenIner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacYIner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawBrMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmRIner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmPIner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmYIner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldNodes); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%InpBlMesh)) deallocate(OutData%InpBlMesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%InpBlMesh(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InpBlMesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InpBlMesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ED_UnpackBladeMeshInputData(Buf, OutData%InpBlMesh(i1)) ! InpBlMesh + call ED_UnpackBladeMeshInputData(RF, OutData%InpBlMesh(i1)) ! InpBlMesh end do end if if (allocated(OutData%InpBl)) deallocate(OutData%InpBl) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%InpBl(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InpBl.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InpBl.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ED_UnpackBladeInputData(Buf, OutData%InpBl(i1)) ! InpBl + call ED_UnpackBladeInputData(RF, OutData%InpBl(i1)) ! InpBl end do end if - call RegUnpack(Buf, OutData%TeetMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetDmpP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetCDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetSStP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetHStP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetSSSp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetHSSp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GBoxEff) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GBRatio) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DTTorSpr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DTTorDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Furling) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrNodes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SumPrint) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TabDelim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Tstart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DecFact) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NTwGages) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrGagNd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NBlGages) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BldGagNd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutList)) deallocate(OutData%OutList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutList) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NTwInpSt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrFADmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrSSDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FAStTunr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SSStTunr) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%HtFract)) deallocate(OutData%HtFract) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%HtFract(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%HtFract.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%HtFract) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TMassDen)) deallocate(OutData%TMassDen) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TMassDen(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TMassDen.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TMassDen) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwFAStif)) deallocate(OutData%TwFAStif) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwFAStif(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwFAStif.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwFAStif) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwSSStif)) deallocate(OutData%TwSSStif) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwSSStif(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwSSStif.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwSSStif) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwFAM1Sh)) deallocate(OutData%TwFAM1Sh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwFAM1Sh(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwFAM1Sh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwFAM1Sh) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwFAM2Sh)) deallocate(OutData%TwFAM2Sh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwFAM2Sh(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwFAM2Sh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwFAM2Sh) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwSSM1Sh)) deallocate(OutData%TwSSM1Sh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwSSM1Sh(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwSSM1Sh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwSSM1Sh) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwSSM2Sh)) deallocate(OutData%TwSSM2Sh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwSSM2Sh(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwSSM2Sh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwSSM2Sh) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%RFrlDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotFurl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TailFurl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Yaw2Shft) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ShftSkew) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlCM_n) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BoomCM_n) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinCM_n) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlPnt_n) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlSkew) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlTilt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlPnt_n) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlSkew) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlTilt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BoomMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFinMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlIner) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlIner) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlSpr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlUSSP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlDSSP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlUSSpr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlDSSpr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlUSDP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlDSDP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlUSDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlDSDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlSpr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlUSSP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlDSSP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlUSSpr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlDSSpr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlUSDP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlDSDP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlUSDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlDSDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%method) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BldNd_NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BldNd_OutList)) deallocate(OutData%BldNd_OutList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldNd_OutList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldNd_OutList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldNd_OutList) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%BldNd_BlOutNd_Str) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BldNd_BladesOut) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%TeetMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetDmpP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetCDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetSStP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetHStP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetSSSp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetHSSp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GBoxEff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GBRatio); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DTTorSpr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DTTorDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Furling); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrNodes); 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 + call RegUnpack(RF, OutData%OutFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Tstart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DecFact); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NTwGages); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrGagNd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NBlGages); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldGagNd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NTwInpSt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrFADmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrSSDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FAStTunr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SSStTunr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%HtFract); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TMassDen); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwFAStif); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwSSStif); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwFAM1Sh); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwFAM2Sh); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwSSM1Sh); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwSSM2Sh); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotFurl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TailFurl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Yaw2Shft); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ShftSkew); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlCM_n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BoomCM_n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinCM_n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlPnt_n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlSkew); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlTilt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlPnt_n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlSkew); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlTilt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BoomMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlIner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlIner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlSpr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlUSSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlDSSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlUSSpr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlDSSpr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlUSDP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlDSDP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlUSDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlDSDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlSpr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlUSSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlDSSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlUSSpr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlDSSpr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlUSDP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlDSDP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlUSDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlDSDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%method); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldNd_NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldNd_OutList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldNd_BlOutNd_Str); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldNd_BladesOut); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ED_CopyCoordSys(SrcCoordSysData, DstCoordSysData, CtrlCode, ErrStat, ErrMsg) @@ -3436,528 +2615,190 @@ subroutine ED_DestroyCoordSys(CoordSysData, ErrStat, ErrMsg) end if end subroutine -subroutine ED_PackCoordSys(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_PackCoordSys(RF, Indata) + type(RegFile), intent(inout) :: RF type(ED_CoordSys), intent(in) :: InData character(*), parameter :: RoutineName = 'ED_PackCoordSys' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%a1) - call RegPack(Buf, InData%a2) - call RegPack(Buf, InData%a3) - call RegPack(Buf, InData%b1) - call RegPack(Buf, InData%b2) - call RegPack(Buf, InData%b3) - call RegPack(Buf, InData%c1) - call RegPack(Buf, InData%c2) - call RegPack(Buf, InData%c3) - call RegPack(Buf, InData%d1) - call RegPack(Buf, InData%d2) - call RegPack(Buf, InData%d3) - call RegPack(Buf, InData%e1) - call RegPack(Buf, InData%e2) - call RegPack(Buf, InData%e3) - call RegPack(Buf, InData%f1) - call RegPack(Buf, InData%f2) - call RegPack(Buf, InData%f3) - call RegPack(Buf, InData%g1) - call RegPack(Buf, InData%g2) - call RegPack(Buf, InData%g3) - call RegPack(Buf, allocated(InData%i1)) - if (allocated(InData%i1)) then - call RegPackBounds(Buf, 2, lbound(InData%i1, kind=B8Ki), ubound(InData%i1, kind=B8Ki)) - call RegPack(Buf, InData%i1) - end if - call RegPack(Buf, allocated(InData%i2)) - if (allocated(InData%i2)) then - call RegPackBounds(Buf, 2, lbound(InData%i2, kind=B8Ki), ubound(InData%i2, kind=B8Ki)) - call RegPack(Buf, InData%i2) - end if - call RegPack(Buf, allocated(InData%i3)) - if (allocated(InData%i3)) then - call RegPackBounds(Buf, 2, lbound(InData%i3, kind=B8Ki), ubound(InData%i3, kind=B8Ki)) - call RegPack(Buf, InData%i3) - end if - call RegPack(Buf, allocated(InData%j1)) - if (allocated(InData%j1)) then - call RegPackBounds(Buf, 2, lbound(InData%j1, kind=B8Ki), ubound(InData%j1, kind=B8Ki)) - call RegPack(Buf, InData%j1) - end if - call RegPack(Buf, allocated(InData%j2)) - if (allocated(InData%j2)) then - call RegPackBounds(Buf, 2, lbound(InData%j2, kind=B8Ki), ubound(InData%j2, kind=B8Ki)) - call RegPack(Buf, InData%j2) - end if - call RegPack(Buf, allocated(InData%j3)) - if (allocated(InData%j3)) then - call RegPackBounds(Buf, 2, lbound(InData%j3, kind=B8Ki), ubound(InData%j3, kind=B8Ki)) - call RegPack(Buf, InData%j3) - end if - call RegPack(Buf, allocated(InData%m1)) - if (allocated(InData%m1)) then - call RegPackBounds(Buf, 3, lbound(InData%m1, kind=B8Ki), ubound(InData%m1, kind=B8Ki)) - call RegPack(Buf, InData%m1) - end if - call RegPack(Buf, allocated(InData%m2)) - if (allocated(InData%m2)) then - call RegPackBounds(Buf, 3, lbound(InData%m2, kind=B8Ki), ubound(InData%m2, kind=B8Ki)) - call RegPack(Buf, InData%m2) - end if - call RegPack(Buf, allocated(InData%m3)) - if (allocated(InData%m3)) then - call RegPackBounds(Buf, 3, lbound(InData%m3, kind=B8Ki), ubound(InData%m3, kind=B8Ki)) - call RegPack(Buf, InData%m3) - end if - call RegPack(Buf, allocated(InData%n1)) - if (allocated(InData%n1)) then - call RegPackBounds(Buf, 3, lbound(InData%n1, kind=B8Ki), ubound(InData%n1, kind=B8Ki)) - call RegPack(Buf, InData%n1) - end if - call RegPack(Buf, allocated(InData%n2)) - if (allocated(InData%n2)) then - call RegPackBounds(Buf, 3, lbound(InData%n2, kind=B8Ki), ubound(InData%n2, kind=B8Ki)) - call RegPack(Buf, InData%n2) - end if - call RegPack(Buf, allocated(InData%n3)) - if (allocated(InData%n3)) then - call RegPackBounds(Buf, 3, lbound(InData%n3, kind=B8Ki), ubound(InData%n3, kind=B8Ki)) - call RegPack(Buf, InData%n3) - end if - call RegPack(Buf, InData%rf1) - call RegPack(Buf, InData%rf2) - call RegPack(Buf, InData%rf3) - call RegPack(Buf, InData%rfa) - call RegPack(Buf, allocated(InData%t1)) - if (allocated(InData%t1)) then - call RegPackBounds(Buf, 2, lbound(InData%t1, kind=B8Ki), ubound(InData%t1, kind=B8Ki)) - call RegPack(Buf, InData%t1) - end if - call RegPack(Buf, allocated(InData%t2)) - if (allocated(InData%t2)) then - call RegPackBounds(Buf, 2, lbound(InData%t2, kind=B8Ki), ubound(InData%t2, kind=B8Ki)) - call RegPack(Buf, InData%t2) - end if - call RegPack(Buf, allocated(InData%t3)) - if (allocated(InData%t3)) then - call RegPackBounds(Buf, 2, lbound(InData%t3, kind=B8Ki), ubound(InData%t3, kind=B8Ki)) - call RegPack(Buf, InData%t3) - end if - call RegPack(Buf, allocated(InData%te1)) - if (allocated(InData%te1)) then - call RegPackBounds(Buf, 3, lbound(InData%te1, kind=B8Ki), ubound(InData%te1, kind=B8Ki)) - call RegPack(Buf, InData%te1) - end if - call RegPack(Buf, allocated(InData%te2)) - if (allocated(InData%te2)) then - call RegPackBounds(Buf, 3, lbound(InData%te2, kind=B8Ki), ubound(InData%te2, kind=B8Ki)) - call RegPack(Buf, InData%te2) - end if - call RegPack(Buf, allocated(InData%te3)) - if (allocated(InData%te3)) then - call RegPackBounds(Buf, 3, lbound(InData%te3, kind=B8Ki), ubound(InData%te3, kind=B8Ki)) - call RegPack(Buf, InData%te3) - end if - call RegPack(Buf, InData%tf1) - call RegPack(Buf, InData%tf2) - call RegPack(Buf, InData%tf3) - call RegPack(Buf, InData%tfa) - call RegPack(Buf, InData%z1) - call RegPack(Buf, InData%z2) - call RegPack(Buf, InData%z3) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%a1) + call RegPack(RF, InData%a2) + call RegPack(RF, InData%a3) + call RegPack(RF, InData%b1) + call RegPack(RF, InData%b2) + call RegPack(RF, InData%b3) + call RegPack(RF, InData%c1) + call RegPack(RF, InData%c2) + call RegPack(RF, InData%c3) + call RegPack(RF, InData%d1) + call RegPack(RF, InData%d2) + call RegPack(RF, InData%d3) + call RegPack(RF, InData%e1) + call RegPack(RF, InData%e2) + call RegPack(RF, InData%e3) + call RegPack(RF, InData%f1) + call RegPack(RF, InData%f2) + call RegPack(RF, InData%f3) + call RegPack(RF, InData%g1) + call RegPack(RF, InData%g2) + call RegPack(RF, InData%g3) + call RegPackAlloc(RF, InData%i1) + call RegPackAlloc(RF, InData%i2) + call RegPackAlloc(RF, InData%i3) + call RegPackAlloc(RF, InData%j1) + call RegPackAlloc(RF, InData%j2) + call RegPackAlloc(RF, InData%j3) + call RegPackAlloc(RF, InData%m1) + call RegPackAlloc(RF, InData%m2) + call RegPackAlloc(RF, InData%m3) + call RegPackAlloc(RF, InData%n1) + call RegPackAlloc(RF, InData%n2) + call RegPackAlloc(RF, InData%n3) + call RegPack(RF, InData%rf1) + call RegPack(RF, InData%rf2) + call RegPack(RF, InData%rf3) + call RegPack(RF, InData%rfa) + call RegPackAlloc(RF, InData%t1) + call RegPackAlloc(RF, InData%t2) + call RegPackAlloc(RF, InData%t3) + call RegPackAlloc(RF, InData%te1) + call RegPackAlloc(RF, InData%te2) + call RegPackAlloc(RF, InData%te3) + call RegPack(RF, InData%tf1) + call RegPack(RF, InData%tf2) + call RegPack(RF, InData%tf3) + call RegPack(RF, InData%tfa) + call RegPack(RF, InData%z1) + call RegPack(RF, InData%z2) + call RegPack(RF, InData%z3) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ED_UnPackCoordSys(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_UnPackCoordSys(RF, OutData) + type(RegFile), intent(inout) :: RF type(ED_CoordSys), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ED_UnPackCoordSys' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%a1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%a2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%a3) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%b1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%b2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%b3) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%c1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%c2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%c3) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%d1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%d2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%d3) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%e1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%e2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%e3) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%f1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%f2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%f3) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%g1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%g2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%g3) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%i1)) deallocate(OutData%i1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%i1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%i1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%a1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%a2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%a3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%b1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%b2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%b3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%c1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%c2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%c3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%d1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%d2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%d3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%e1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%e2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%e3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%f1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%f2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%f3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%g1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%g2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%g3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%i1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%i2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%i3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%j1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%j2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%j3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%m1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%m2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%m3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%n1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%n2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%n3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rf1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rf2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rf3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rfa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%t1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%t2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%t3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%te1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%te2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%te3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tf1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tf2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tf3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tfa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%z1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%z2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%z3); if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine ED_CopyActiveDOFs(SrcActiveDOFsData, DstActiveDOFsData, CtrlCode, ErrStat, ErrMsg) + type(ED_ActiveDOFs), intent(in) :: SrcActiveDOFsData + type(ED_ActiveDOFs), intent(inout) :: DstActiveDOFsData + integer(IntKi), intent(in ) :: CtrlCode + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + integer(B8Ki) :: LB(2), UB(2) + integer(IntKi) :: ErrStat2 + character(*), parameter :: RoutineName = 'ED_CopyActiveDOFs' + ErrStat = ErrID_None + ErrMsg = '' + DstActiveDOFsData%NActvDOF = SrcActiveDOFsData%NActvDOF + DstActiveDOFsData%NPCE = SrcActiveDOFsData%NPCE + DstActiveDOFsData%NPDE = SrcActiveDOFsData%NPDE + DstActiveDOFsData%NPIE = SrcActiveDOFsData%NPIE + DstActiveDOFsData%NPTE = SrcActiveDOFsData%NPTE + DstActiveDOFsData%NPTTE = SrcActiveDOFsData%NPTTE + if (allocated(SrcActiveDOFsData%NPSBE)) then + LB(1:1) = lbound(SrcActiveDOFsData%NPSBE, kind=B8Ki) + UB(1:1) = ubound(SrcActiveDOFsData%NPSBE, kind=B8Ki) + if (.not. allocated(DstActiveDOFsData%NPSBE)) then + allocate(DstActiveDOFsData%NPSBE(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstActiveDOFsData%NPSBE.', ErrStat, ErrMsg, RoutineName) + return + end if end if - call RegUnpack(Buf, OutData%i1) - if (RegCheckErr(Buf, RoutineName)) return + DstActiveDOFsData%NPSBE = SrcActiveDOFsData%NPSBE end if - if (allocated(OutData%i2)) deallocate(OutData%i2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%i2(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%i2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return + if (allocated(SrcActiveDOFsData%NPSE)) then + LB(1:1) = lbound(SrcActiveDOFsData%NPSE, kind=B8Ki) + UB(1:1) = ubound(SrcActiveDOFsData%NPSE, kind=B8Ki) + if (.not. allocated(DstActiveDOFsData%NPSE)) then + allocate(DstActiveDOFsData%NPSE(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstActiveDOFsData%NPSE.', ErrStat, ErrMsg, RoutineName) + return + end if end if - call RegUnpack(Buf, OutData%i2) - if (RegCheckErr(Buf, RoutineName)) return + DstActiveDOFsData%NPSE = SrcActiveDOFsData%NPSE end if - if (allocated(OutData%i3)) deallocate(OutData%i3) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%i3(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%i3.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return + DstActiveDOFsData%NPUE = SrcActiveDOFsData%NPUE + DstActiveDOFsData%NPYE = SrcActiveDOFsData%NPYE + if (allocated(SrcActiveDOFsData%PCE)) then + LB(1:1) = lbound(SrcActiveDOFsData%PCE, kind=B8Ki) + UB(1:1) = ubound(SrcActiveDOFsData%PCE, kind=B8Ki) + if (.not. allocated(DstActiveDOFsData%PCE)) then + allocate(DstActiveDOFsData%PCE(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstActiveDOFsData%PCE.', ErrStat, ErrMsg, RoutineName) + return + end if end if - call RegUnpack(Buf, OutData%i3) - if (RegCheckErr(Buf, RoutineName)) return + DstActiveDOFsData%PCE = SrcActiveDOFsData%PCE end if - if (allocated(OutData%j1)) deallocate(OutData%j1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%j1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%j1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return + if (allocated(SrcActiveDOFsData%PDE)) then + LB(1:1) = lbound(SrcActiveDOFsData%PDE, kind=B8Ki) + UB(1:1) = ubound(SrcActiveDOFsData%PDE, kind=B8Ki) + if (.not. allocated(DstActiveDOFsData%PDE)) then + allocate(DstActiveDOFsData%PDE(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstActiveDOFsData%PDE.', ErrStat, ErrMsg, RoutineName) + return + end if end if - call RegUnpack(Buf, OutData%j1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%j2)) deallocate(OutData%j2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%j2(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%j2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%j2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%j3)) deallocate(OutData%j3) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%j3(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%j3.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%j3) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%m1)) deallocate(OutData%m1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%m1(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%m1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%m1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%m2)) deallocate(OutData%m2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%m2(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%m2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%m2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%m3)) deallocate(OutData%m3) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%m3(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%m3.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%m3) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%n1)) deallocate(OutData%n1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%n1(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%n1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%n1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%n2)) deallocate(OutData%n2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%n2(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%n2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%n2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%n3)) deallocate(OutData%n3) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%n3(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%n3.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%n3) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%rf1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rf2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rf3) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rfa) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%t1)) deallocate(OutData%t1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%t1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%t1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%t1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%t2)) deallocate(OutData%t2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%t2(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%t2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%t2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%t3)) deallocate(OutData%t3) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%t3(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%t3.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%t3) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%te1)) deallocate(OutData%te1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%te1(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%te1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%te1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%te2)) deallocate(OutData%te2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%te2(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%te2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%te2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%te3)) deallocate(OutData%te3) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%te3(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%te3.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%te3) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%tf1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tf2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tf3) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tfa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%z1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%z2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%z3) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine ED_CopyActiveDOFs(SrcActiveDOFsData, DstActiveDOFsData, CtrlCode, ErrStat, ErrMsg) - type(ED_ActiveDOFs), intent(in) :: SrcActiveDOFsData - type(ED_ActiveDOFs), intent(inout) :: DstActiveDOFsData - integer(IntKi), intent(in ) :: CtrlCode - integer(IntKi), intent( out) :: ErrStat - character(*), intent( out) :: ErrMsg - integer(B8Ki) :: LB(2), UB(2) - integer(IntKi) :: ErrStat2 - character(*), parameter :: RoutineName = 'ED_CopyActiveDOFs' - ErrStat = ErrID_None - ErrMsg = '' - DstActiveDOFsData%NActvDOF = SrcActiveDOFsData%NActvDOF - DstActiveDOFsData%NPCE = SrcActiveDOFsData%NPCE - DstActiveDOFsData%NPDE = SrcActiveDOFsData%NPDE - DstActiveDOFsData%NPIE = SrcActiveDOFsData%NPIE - DstActiveDOFsData%NPTE = SrcActiveDOFsData%NPTE - DstActiveDOFsData%NPTTE = SrcActiveDOFsData%NPTTE - if (allocated(SrcActiveDOFsData%NPSBE)) then - LB(1:1) = lbound(SrcActiveDOFsData%NPSBE, kind=B8Ki) - UB(1:1) = ubound(SrcActiveDOFsData%NPSBE, kind=B8Ki) - if (.not. allocated(DstActiveDOFsData%NPSBE)) then - allocate(DstActiveDOFsData%NPSBE(LB(1):UB(1)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstActiveDOFsData%NPSBE.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstActiveDOFsData%NPSBE = SrcActiveDOFsData%NPSBE - end if - if (allocated(SrcActiveDOFsData%NPSE)) then - LB(1:1) = lbound(SrcActiveDOFsData%NPSE, kind=B8Ki) - UB(1:1) = ubound(SrcActiveDOFsData%NPSE, kind=B8Ki) - if (.not. allocated(DstActiveDOFsData%NPSE)) then - allocate(DstActiveDOFsData%NPSE(LB(1):UB(1)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstActiveDOFsData%NPSE.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstActiveDOFsData%NPSE = SrcActiveDOFsData%NPSE - end if - DstActiveDOFsData%NPUE = SrcActiveDOFsData%NPUE - DstActiveDOFsData%NPYE = SrcActiveDOFsData%NPYE - if (allocated(SrcActiveDOFsData%PCE)) then - LB(1:1) = lbound(SrcActiveDOFsData%PCE, kind=B8Ki) - UB(1:1) = ubound(SrcActiveDOFsData%PCE, kind=B8Ki) - if (.not. allocated(DstActiveDOFsData%PCE)) then - allocate(DstActiveDOFsData%PCE(LB(1):UB(1)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstActiveDOFsData%PCE.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstActiveDOFsData%PCE = SrcActiveDOFsData%PCE - end if - if (allocated(SrcActiveDOFsData%PDE)) then - LB(1:1) = lbound(SrcActiveDOFsData%PDE, kind=B8Ki) - UB(1:1) = ubound(SrcActiveDOFsData%PDE, kind=B8Ki) - if (.not. allocated(DstActiveDOFsData%PDE)) then - allocate(DstActiveDOFsData%PDE(LB(1):UB(1)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstActiveDOFsData%PDE.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstActiveDOFsData%PDE = SrcActiveDOFsData%PDE + DstActiveDOFsData%PDE = SrcActiveDOFsData%PDE end if if (allocated(SrcActiveDOFsData%PIE)) then LB(1:1) = lbound(SrcActiveDOFsData%PIE, kind=B8Ki) @@ -4147,331 +2988,68 @@ subroutine ED_DestroyActiveDOFs(ActiveDOFsData, ErrStat, ErrMsg) end if end subroutine -subroutine ED_PackActiveDOFs(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_PackActiveDOFs(RF, Indata) + type(RegFile), intent(inout) :: RF type(ED_ActiveDOFs), intent(in) :: InData character(*), parameter :: RoutineName = 'ED_PackActiveDOFs' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%NActvDOF) - call RegPack(Buf, InData%NPCE) - call RegPack(Buf, InData%NPDE) - call RegPack(Buf, InData%NPIE) - call RegPack(Buf, InData%NPTE) - call RegPack(Buf, InData%NPTTE) - call RegPack(Buf, allocated(InData%NPSBE)) - if (allocated(InData%NPSBE)) then - call RegPackBounds(Buf, 1, lbound(InData%NPSBE, kind=B8Ki), ubound(InData%NPSBE, kind=B8Ki)) - call RegPack(Buf, InData%NPSBE) - end if - call RegPack(Buf, allocated(InData%NPSE)) - if (allocated(InData%NPSE)) then - call RegPackBounds(Buf, 1, lbound(InData%NPSE, kind=B8Ki), ubound(InData%NPSE, kind=B8Ki)) - call RegPack(Buf, InData%NPSE) - end if - call RegPack(Buf, InData%NPUE) - call RegPack(Buf, InData%NPYE) - call RegPack(Buf, allocated(InData%PCE)) - if (allocated(InData%PCE)) then - call RegPackBounds(Buf, 1, lbound(InData%PCE, kind=B8Ki), ubound(InData%PCE, kind=B8Ki)) - call RegPack(Buf, InData%PCE) - end if - call RegPack(Buf, allocated(InData%PDE)) - if (allocated(InData%PDE)) then - call RegPackBounds(Buf, 1, lbound(InData%PDE, kind=B8Ki), ubound(InData%PDE, kind=B8Ki)) - call RegPack(Buf, InData%PDE) - end if - call RegPack(Buf, allocated(InData%PIE)) - if (allocated(InData%PIE)) then - call RegPackBounds(Buf, 1, lbound(InData%PIE, kind=B8Ki), ubound(InData%PIE, kind=B8Ki)) - call RegPack(Buf, InData%PIE) - end if - call RegPack(Buf, allocated(InData%PTE)) - if (allocated(InData%PTE)) then - call RegPackBounds(Buf, 1, lbound(InData%PTE, kind=B8Ki), ubound(InData%PTE, kind=B8Ki)) - call RegPack(Buf, InData%PTE) - end if - call RegPack(Buf, allocated(InData%PTTE)) - if (allocated(InData%PTTE)) then - call RegPackBounds(Buf, 1, lbound(InData%PTTE, kind=B8Ki), ubound(InData%PTTE, kind=B8Ki)) - call RegPack(Buf, InData%PTTE) - end if - call RegPack(Buf, allocated(InData%PS)) - if (allocated(InData%PS)) then - call RegPackBounds(Buf, 1, lbound(InData%PS, kind=B8Ki), ubound(InData%PS, kind=B8Ki)) - call RegPack(Buf, InData%PS) - end if - call RegPack(Buf, allocated(InData%PSBE)) - if (allocated(InData%PSBE)) then - call RegPackBounds(Buf, 2, lbound(InData%PSBE, kind=B8Ki), ubound(InData%PSBE, kind=B8Ki)) - call RegPack(Buf, InData%PSBE) - end if - call RegPack(Buf, allocated(InData%PSE)) - if (allocated(InData%PSE)) then - call RegPackBounds(Buf, 2, lbound(InData%PSE, kind=B8Ki), ubound(InData%PSE, kind=B8Ki)) - call RegPack(Buf, InData%PSE) - end if - call RegPack(Buf, allocated(InData%PUE)) - if (allocated(InData%PUE)) then - call RegPackBounds(Buf, 1, lbound(InData%PUE, kind=B8Ki), ubound(InData%PUE, kind=B8Ki)) - call RegPack(Buf, InData%PUE) - end if - call RegPack(Buf, allocated(InData%PYE)) - if (allocated(InData%PYE)) then - call RegPackBounds(Buf, 1, lbound(InData%PYE, kind=B8Ki), ubound(InData%PYE, kind=B8Ki)) - call RegPack(Buf, InData%PYE) - end if - call RegPack(Buf, allocated(InData%SrtPS)) - if (allocated(InData%SrtPS)) then - call RegPackBounds(Buf, 1, lbound(InData%SrtPS, kind=B8Ki), ubound(InData%SrtPS, kind=B8Ki)) - call RegPack(Buf, InData%SrtPS) - end if - call RegPack(Buf, allocated(InData%SrtPSNAUG)) - if (allocated(InData%SrtPSNAUG)) then - call RegPackBounds(Buf, 1, lbound(InData%SrtPSNAUG, kind=B8Ki), ubound(InData%SrtPSNAUG, kind=B8Ki)) - call RegPack(Buf, InData%SrtPSNAUG) - end if - call RegPack(Buf, allocated(InData%Diag)) - if (allocated(InData%Diag)) then - call RegPackBounds(Buf, 1, lbound(InData%Diag, kind=B8Ki), ubound(InData%Diag, kind=B8Ki)) - call RegPack(Buf, InData%Diag) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%NActvDOF) + call RegPack(RF, InData%NPCE) + call RegPack(RF, InData%NPDE) + call RegPack(RF, InData%NPIE) + call RegPack(RF, InData%NPTE) + call RegPack(RF, InData%NPTTE) + call RegPackAlloc(RF, InData%NPSBE) + call RegPackAlloc(RF, InData%NPSE) + call RegPack(RF, InData%NPUE) + call RegPack(RF, InData%NPYE) + call RegPackAlloc(RF, InData%PCE) + call RegPackAlloc(RF, InData%PDE) + call RegPackAlloc(RF, InData%PIE) + call RegPackAlloc(RF, InData%PTE) + call RegPackAlloc(RF, InData%PTTE) + call RegPackAlloc(RF, InData%PS) + call RegPackAlloc(RF, InData%PSBE) + call RegPackAlloc(RF, InData%PSE) + call RegPackAlloc(RF, InData%PUE) + call RegPackAlloc(RF, InData%PYE) + call RegPackAlloc(RF, InData%SrtPS) + call RegPackAlloc(RF, InData%SrtPSNAUG) + call RegPackAlloc(RF, InData%Diag) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ED_UnPackActiveDOFs(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_UnPackActiveDOFs(RF, OutData) + type(RegFile), intent(inout) :: RF type(ED_ActiveDOFs), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ED_UnPackActiveDOFs' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%NActvDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NPCE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NPDE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NPIE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NPTE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NPTTE) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%NPSBE)) deallocate(OutData%NPSBE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NPSBE(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NPSBE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NPSBE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%NPSE)) deallocate(OutData%NPSE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NPSE(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NPSE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NPSE) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NPUE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NPYE) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PCE)) deallocate(OutData%PCE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PCE(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PCE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PCE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PDE)) deallocate(OutData%PDE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PDE(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PDE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PDE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PIE)) deallocate(OutData%PIE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PIE(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PIE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PIE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PTE)) deallocate(OutData%PTE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PTE(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PTE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PTE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PTTE)) deallocate(OutData%PTTE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PTTE(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PTTE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PTTE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PS)) deallocate(OutData%PS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PS(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PS) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PSBE)) deallocate(OutData%PSBE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PSBE(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PSBE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PSBE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PSE)) deallocate(OutData%PSE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PSE(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PSE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PSE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PUE)) deallocate(OutData%PUE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PUE(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PUE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PUE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PYE)) deallocate(OutData%PYE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PYE(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PYE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PYE) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SrtPS)) deallocate(OutData%SrtPS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SrtPS(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SrtPS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SrtPS) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SrtPSNAUG)) deallocate(OutData%SrtPSNAUG) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SrtPSNAUG(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SrtPSNAUG.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SrtPSNAUG) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Diag)) deallocate(OutData%Diag) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Diag(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Diag.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Diag) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%NActvDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NPCE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NPDE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NPIE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NPTE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NPTTE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NPSBE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NPSE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NPUE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NPYE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PCE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PDE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PIE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PTE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PTTE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PSBE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PSE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PUE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PYE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SrtPS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SrtPSNAUG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Diag); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ED_CopyRtHndSide(SrcRtHndSideData, DstRtHndSideData, CtrlCode, ErrStat, ErrMsg) @@ -5605,1591 +4183,344 @@ subroutine ED_DestroyRtHndSide(RtHndSideData, ErrStat, ErrMsg) end if end subroutine -subroutine ED_PackRtHndSide(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_PackRtHndSide(RF, Indata) + type(RegFile), intent(inout) :: RF type(ED_RtHndSide), intent(in) :: InData character(*), parameter :: RoutineName = 'ED_PackRtHndSide' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%rO) - call RegPack(Buf, allocated(InData%rQS)) - if (allocated(InData%rQS)) then - call RegPackBounds(Buf, 3, lbound(InData%rQS, kind=B8Ki), ubound(InData%rQS, kind=B8Ki)) - call RegPack(Buf, InData%rQS) - end if - call RegPack(Buf, allocated(InData%rS)) - if (allocated(InData%rS)) then - call RegPackBounds(Buf, 3, lbound(InData%rS, kind=B8Ki), ubound(InData%rS, kind=B8Ki)) - call RegPack(Buf, InData%rS) - end if - call RegPack(Buf, allocated(InData%rS0S)) - if (allocated(InData%rS0S)) then - call RegPackBounds(Buf, 3, lbound(InData%rS0S, kind=B8Ki), ubound(InData%rS0S, kind=B8Ki)) - call RegPack(Buf, InData%rS0S) - end if - call RegPack(Buf, allocated(InData%rT)) - if (allocated(InData%rT)) then - call RegPackBounds(Buf, 2, lbound(InData%rT, kind=B8Ki), ubound(InData%rT, kind=B8Ki)) - call RegPack(Buf, InData%rT) - end if - call RegPack(Buf, InData%rT0O) - call RegPack(Buf, allocated(InData%rT0T)) - if (allocated(InData%rT0T)) then - call RegPackBounds(Buf, 2, lbound(InData%rT0T, kind=B8Ki), ubound(InData%rT0T, kind=B8Ki)) - call RegPack(Buf, InData%rT0T) - end if - call RegPack(Buf, InData%rZ) - call RegPack(Buf, InData%rZO) - call RegPack(Buf, allocated(InData%rZT)) - if (allocated(InData%rZT)) then - call RegPackBounds(Buf, 2, lbound(InData%rZT, kind=B8Ki), ubound(InData%rZT, kind=B8Ki)) - call RegPack(Buf, InData%rZT) - end if - call RegPack(Buf, InData%rPQ) - call RegPack(Buf, InData%rP) - call RegPack(Buf, InData%rV) - call RegPack(Buf, InData%rJ) - call RegPack(Buf, InData%rZY) - call RegPack(Buf, InData%rOU) - call RegPack(Buf, InData%rOV) - call RegPack(Buf, InData%rVD) - call RegPack(Buf, InData%rOW) - call RegPack(Buf, InData%rPC) - call RegPack(Buf, allocated(InData%rPS0)) - if (allocated(InData%rPS0)) then - call RegPackBounds(Buf, 2, lbound(InData%rPS0, kind=B8Ki), ubound(InData%rPS0, kind=B8Ki)) - call RegPack(Buf, InData%rPS0) - end if - call RegPack(Buf, InData%rQ) - call RegPack(Buf, InData%rQC) - call RegPack(Buf, InData%rVIMU) - call RegPack(Buf, InData%rVP) - call RegPack(Buf, InData%rWI) - call RegPack(Buf, InData%rWJ) - call RegPack(Buf, InData%rZT0) - call RegPack(Buf, allocated(InData%AngPosEF)) - if (allocated(InData%AngPosEF)) then - call RegPackBounds(Buf, 2, lbound(InData%AngPosEF, kind=B8Ki), ubound(InData%AngPosEF, kind=B8Ki)) - call RegPack(Buf, InData%AngPosEF) - end if - call RegPack(Buf, allocated(InData%AngPosXF)) - if (allocated(InData%AngPosXF)) then - call RegPackBounds(Buf, 2, lbound(InData%AngPosXF, kind=B8Ki), ubound(InData%AngPosXF, kind=B8Ki)) - call RegPack(Buf, InData%AngPosXF) - end if - call RegPack(Buf, allocated(InData%AngPosHM)) - if (allocated(InData%AngPosHM)) then - call RegPackBounds(Buf, 3, lbound(InData%AngPosHM, kind=B8Ki), ubound(InData%AngPosHM, kind=B8Ki)) - call RegPack(Buf, InData%AngPosHM) - end if - call RegPack(Buf, InData%AngPosXB) - call RegPack(Buf, InData%AngPosEX) - call RegPack(Buf, allocated(InData%PAngVelEA)) - if (allocated(InData%PAngVelEA)) then - call RegPackBounds(Buf, 3, lbound(InData%PAngVelEA, kind=B8Ki), ubound(InData%PAngVelEA, kind=B8Ki)) - call RegPack(Buf, InData%PAngVelEA) - end if - call RegPack(Buf, allocated(InData%PAngVelEF)) - if (allocated(InData%PAngVelEF)) then - call RegPackBounds(Buf, 4, lbound(InData%PAngVelEF, kind=B8Ki), ubound(InData%PAngVelEF, kind=B8Ki)) - call RegPack(Buf, InData%PAngVelEF) - end if - call RegPack(Buf, allocated(InData%PAngVelEG)) - if (allocated(InData%PAngVelEG)) then - call RegPackBounds(Buf, 3, lbound(InData%PAngVelEG, kind=B8Ki), ubound(InData%PAngVelEG, kind=B8Ki)) - call RegPack(Buf, InData%PAngVelEG) - end if - call RegPack(Buf, allocated(InData%PAngVelEH)) - if (allocated(InData%PAngVelEH)) then - call RegPackBounds(Buf, 3, lbound(InData%PAngVelEH, kind=B8Ki), ubound(InData%PAngVelEH, kind=B8Ki)) - call RegPack(Buf, InData%PAngVelEH) - end if - call RegPack(Buf, allocated(InData%PAngVelEL)) - if (allocated(InData%PAngVelEL)) then - call RegPackBounds(Buf, 3, lbound(InData%PAngVelEL, kind=B8Ki), ubound(InData%PAngVelEL, kind=B8Ki)) - call RegPack(Buf, InData%PAngVelEL) - end if - call RegPack(Buf, allocated(InData%PAngVelEM)) - if (allocated(InData%PAngVelEM)) then - call RegPackBounds(Buf, 5, lbound(InData%PAngVelEM, kind=B8Ki), ubound(InData%PAngVelEM, kind=B8Ki)) - call RegPack(Buf, InData%PAngVelEM) - end if - call RegPack(Buf, allocated(InData%AngVelEM)) - if (allocated(InData%AngVelEM)) then - call RegPackBounds(Buf, 3, lbound(InData%AngVelEM, kind=B8Ki), ubound(InData%AngVelEM, kind=B8Ki)) - call RegPack(Buf, InData%AngVelEM) - end if - call RegPack(Buf, allocated(InData%PAngVelEN)) - if (allocated(InData%PAngVelEN)) then - call RegPackBounds(Buf, 3, lbound(InData%PAngVelEN, kind=B8Ki), ubound(InData%PAngVelEN, kind=B8Ki)) - call RegPack(Buf, InData%PAngVelEN) - end if - call RegPack(Buf, InData%AngVelEA) - call RegPack(Buf, allocated(InData%PAngVelEB)) - if (allocated(InData%PAngVelEB)) then - call RegPackBounds(Buf, 3, lbound(InData%PAngVelEB, kind=B8Ki), ubound(InData%PAngVelEB, kind=B8Ki)) - call RegPack(Buf, InData%PAngVelEB) - end if - call RegPack(Buf, allocated(InData%PAngVelER)) - if (allocated(InData%PAngVelER)) then - call RegPackBounds(Buf, 3, lbound(InData%PAngVelER, kind=B8Ki), ubound(InData%PAngVelER, kind=B8Ki)) - call RegPack(Buf, InData%PAngVelER) - end if - call RegPack(Buf, allocated(InData%PAngVelEX)) - if (allocated(InData%PAngVelEX)) then - call RegPackBounds(Buf, 3, lbound(InData%PAngVelEX, kind=B8Ki), ubound(InData%PAngVelEX, kind=B8Ki)) - call RegPack(Buf, InData%PAngVelEX) - end if - call RegPack(Buf, InData%AngVelEG) - call RegPack(Buf, InData%AngVelEH) - call RegPack(Buf, InData%AngVelEL) - call RegPack(Buf, InData%AngVelEN) - call RegPack(Buf, InData%AngVelEB) - call RegPack(Buf, InData%AngVelER) - call RegPack(Buf, InData%AngVelEX) - call RegPack(Buf, InData%TeetAngVel) - call RegPack(Buf, InData%AngAccEBt) - call RegPack(Buf, InData%AngAccERt) - call RegPack(Buf, InData%AngAccEXt) - call RegPack(Buf, allocated(InData%AngAccEFt)) - if (allocated(InData%AngAccEFt)) then - call RegPackBounds(Buf, 2, lbound(InData%AngAccEFt, kind=B8Ki), ubound(InData%AngAccEFt, kind=B8Ki)) - call RegPack(Buf, InData%AngAccEFt) - end if - call RegPack(Buf, allocated(InData%AngVelEF)) - if (allocated(InData%AngVelEF)) then - call RegPackBounds(Buf, 2, lbound(InData%AngVelEF, kind=B8Ki), ubound(InData%AngVelEF, kind=B8Ki)) - call RegPack(Buf, InData%AngVelEF) - end if - call RegPack(Buf, allocated(InData%AngVelHM)) - if (allocated(InData%AngVelHM)) then - call RegPackBounds(Buf, 3, lbound(InData%AngVelHM, kind=B8Ki), ubound(InData%AngVelHM, kind=B8Ki)) - call RegPack(Buf, InData%AngVelHM) - end if - call RegPack(Buf, InData%AngAccEAt) - call RegPack(Buf, InData%AngAccEGt) - call RegPack(Buf, InData%AngAccEHt) - call RegPack(Buf, allocated(InData%AngAccEKt)) - if (allocated(InData%AngAccEKt)) then - call RegPackBounds(Buf, 3, lbound(InData%AngAccEKt, kind=B8Ki), ubound(InData%AngAccEKt, kind=B8Ki)) - call RegPack(Buf, InData%AngAccEKt) - end if - call RegPack(Buf, InData%AngAccENt) - call RegPack(Buf, InData%LinAccECt) - call RegPack(Buf, InData%LinAccEDt) - call RegPack(Buf, InData%LinAccEIt) - call RegPack(Buf, InData%LinAccEJt) - call RegPack(Buf, InData%LinAccEUt) - call RegPack(Buf, InData%LinAccEYt) - call RegPack(Buf, allocated(InData%LinVelES)) - if (allocated(InData%LinVelES)) then - call RegPackBounds(Buf, 3, lbound(InData%LinVelES, kind=B8Ki), ubound(InData%LinVelES, kind=B8Ki)) - call RegPack(Buf, InData%LinVelES) - end if - call RegPack(Buf, InData%LinVelEQ) - call RegPack(Buf, allocated(InData%LinVelET)) - if (allocated(InData%LinVelET)) then - call RegPackBounds(Buf, 2, lbound(InData%LinVelET, kind=B8Ki), ubound(InData%LinVelET, kind=B8Ki)) - call RegPack(Buf, InData%LinVelET) - end if - call RegPack(Buf, allocated(InData%LinVelESm2)) - if (allocated(InData%LinVelESm2)) then - call RegPackBounds(Buf, 1, lbound(InData%LinVelESm2, kind=B8Ki), ubound(InData%LinVelESm2, kind=B8Ki)) - call RegPack(Buf, InData%LinVelESm2) - end if - call RegPack(Buf, allocated(InData%PLinVelEIMU)) - if (allocated(InData%PLinVelEIMU)) then - call RegPackBounds(Buf, 3, lbound(InData%PLinVelEIMU, kind=B8Ki), ubound(InData%PLinVelEIMU, kind=B8Ki)) - call RegPack(Buf, InData%PLinVelEIMU) - end if - call RegPack(Buf, allocated(InData%PLinVelEO)) - if (allocated(InData%PLinVelEO)) then - call RegPackBounds(Buf, 3, lbound(InData%PLinVelEO, kind=B8Ki), ubound(InData%PLinVelEO, kind=B8Ki)) - call RegPack(Buf, InData%PLinVelEO) - end if - call RegPack(Buf, allocated(InData%PLinVelES)) - if (allocated(InData%PLinVelES)) then - call RegPackBounds(Buf, 5, lbound(InData%PLinVelES, kind=B8Ki), ubound(InData%PLinVelES, kind=B8Ki)) - call RegPack(Buf, InData%PLinVelES) - end if - call RegPack(Buf, allocated(InData%PLinVelET)) - if (allocated(InData%PLinVelET)) then - call RegPackBounds(Buf, 4, lbound(InData%PLinVelET, kind=B8Ki), ubound(InData%PLinVelET, kind=B8Ki)) - call RegPack(Buf, InData%PLinVelET) - end if - call RegPack(Buf, allocated(InData%PLinVelEZ)) - if (allocated(InData%PLinVelEZ)) then - call RegPackBounds(Buf, 3, lbound(InData%PLinVelEZ, kind=B8Ki), ubound(InData%PLinVelEZ, kind=B8Ki)) - call RegPack(Buf, InData%PLinVelEZ) - end if - call RegPack(Buf, allocated(InData%PLinVelEC)) - if (allocated(InData%PLinVelEC)) then - call RegPackBounds(Buf, 3, lbound(InData%PLinVelEC, kind=B8Ki), ubound(InData%PLinVelEC, kind=B8Ki)) - call RegPack(Buf, InData%PLinVelEC) - end if - call RegPack(Buf, allocated(InData%PLinVelED)) - if (allocated(InData%PLinVelED)) then - call RegPackBounds(Buf, 3, lbound(InData%PLinVelED, kind=B8Ki), ubound(InData%PLinVelED, kind=B8Ki)) - call RegPack(Buf, InData%PLinVelED) - end if - call RegPack(Buf, allocated(InData%PLinVelEI)) - if (allocated(InData%PLinVelEI)) then - call RegPackBounds(Buf, 3, lbound(InData%PLinVelEI, kind=B8Ki), ubound(InData%PLinVelEI, kind=B8Ki)) - call RegPack(Buf, InData%PLinVelEI) - end if - call RegPack(Buf, allocated(InData%PLinVelEJ)) - if (allocated(InData%PLinVelEJ)) then - call RegPackBounds(Buf, 3, lbound(InData%PLinVelEJ, kind=B8Ki), ubound(InData%PLinVelEJ, kind=B8Ki)) - call RegPack(Buf, InData%PLinVelEJ) - end if - call RegPack(Buf, allocated(InData%PLinVelEP)) - if (allocated(InData%PLinVelEP)) then - call RegPackBounds(Buf, 3, lbound(InData%PLinVelEP, kind=B8Ki), ubound(InData%PLinVelEP, kind=B8Ki)) - call RegPack(Buf, InData%PLinVelEP) - end if - call RegPack(Buf, allocated(InData%PLinVelEQ)) - if (allocated(InData%PLinVelEQ)) then - call RegPackBounds(Buf, 3, lbound(InData%PLinVelEQ, kind=B8Ki), ubound(InData%PLinVelEQ, kind=B8Ki)) - call RegPack(Buf, InData%PLinVelEQ) - end if - call RegPack(Buf, allocated(InData%PLinVelEU)) - if (allocated(InData%PLinVelEU)) then - call RegPackBounds(Buf, 3, lbound(InData%PLinVelEU, kind=B8Ki), ubound(InData%PLinVelEU, kind=B8Ki)) - call RegPack(Buf, InData%PLinVelEU) - end if - call RegPack(Buf, allocated(InData%PLinVelEV)) - if (allocated(InData%PLinVelEV)) then - call RegPackBounds(Buf, 3, lbound(InData%PLinVelEV, kind=B8Ki), ubound(InData%PLinVelEV, kind=B8Ki)) - call RegPack(Buf, InData%PLinVelEV) - end if - call RegPack(Buf, allocated(InData%PLinVelEW)) - if (allocated(InData%PLinVelEW)) then - call RegPackBounds(Buf, 3, lbound(InData%PLinVelEW, kind=B8Ki), ubound(InData%PLinVelEW, kind=B8Ki)) - call RegPack(Buf, InData%PLinVelEW) - end if - call RegPack(Buf, allocated(InData%PLinVelEY)) - if (allocated(InData%PLinVelEY)) then - call RegPackBounds(Buf, 3, lbound(InData%PLinVelEY, kind=B8Ki), ubound(InData%PLinVelEY, kind=B8Ki)) - call RegPack(Buf, InData%PLinVelEY) - end if - call RegPack(Buf, InData%LinAccEIMUt) - call RegPack(Buf, InData%LinAccEOt) - call RegPack(Buf, allocated(InData%LinAccESt)) - if (allocated(InData%LinAccESt)) then - call RegPackBounds(Buf, 3, lbound(InData%LinAccESt, kind=B8Ki), ubound(InData%LinAccESt, kind=B8Ki)) - call RegPack(Buf, InData%LinAccESt) - end if - call RegPack(Buf, allocated(InData%LinAccETt)) - if (allocated(InData%LinAccETt)) then - call RegPackBounds(Buf, 2, lbound(InData%LinAccETt, kind=B8Ki), ubound(InData%LinAccETt, kind=B8Ki)) - call RegPack(Buf, InData%LinAccETt) - end if - call RegPack(Buf, InData%LinAccEZt) - call RegPack(Buf, InData%LinVelEIMU) - call RegPack(Buf, InData%LinVelEZ) - call RegPack(Buf, InData%LinVelEO) - call RegPack(Buf, InData%LinVelEJ) - call RegPack(Buf, InData%FrcONcRtt) - call RegPack(Buf, InData%FrcPRott) - call RegPack(Buf, allocated(InData%FrcS0Bt)) - if (allocated(InData%FrcS0Bt)) then - call RegPackBounds(Buf, 2, lbound(InData%FrcS0Bt, kind=B8Ki), ubound(InData%FrcS0Bt, kind=B8Ki)) - call RegPack(Buf, InData%FrcS0Bt) - end if - call RegPack(Buf, InData%FrcT0Trbt) - call RegPack(Buf, allocated(InData%FSAero)) - if (allocated(InData%FSAero)) then - call RegPackBounds(Buf, 3, lbound(InData%FSAero, kind=B8Ki), ubound(InData%FSAero, kind=B8Ki)) - call RegPack(Buf, InData%FSAero) - end if - call RegPack(Buf, allocated(InData%FSTipDrag)) - if (allocated(InData%FSTipDrag)) then - call RegPackBounds(Buf, 2, lbound(InData%FSTipDrag, kind=B8Ki), ubound(InData%FSTipDrag, kind=B8Ki)) - call RegPack(Buf, InData%FSTipDrag) - end if - call RegPack(Buf, allocated(InData%FTHydrot)) - if (allocated(InData%FTHydrot)) then - call RegPackBounds(Buf, 2, lbound(InData%FTHydrot, kind=B8Ki), ubound(InData%FTHydrot, kind=B8Ki)) - call RegPack(Buf, InData%FTHydrot) - end if - call RegPack(Buf, InData%FZHydrot) - call RegPack(Buf, allocated(InData%MFHydrot)) - if (allocated(InData%MFHydrot)) then - call RegPackBounds(Buf, 2, lbound(InData%MFHydrot, kind=B8Ki), ubound(InData%MFHydrot, kind=B8Ki)) - call RegPack(Buf, InData%MFHydrot) - end if - call RegPack(Buf, InData%MomBNcRtt) - call RegPack(Buf, allocated(InData%MomH0Bt)) - if (allocated(InData%MomH0Bt)) then - call RegPackBounds(Buf, 2, lbound(InData%MomH0Bt, kind=B8Ki), ubound(InData%MomH0Bt, kind=B8Ki)) - call RegPack(Buf, InData%MomH0Bt) - end if - call RegPack(Buf, InData%MomLPRott) - call RegPack(Buf, InData%MomNGnRtt) - call RegPack(Buf, InData%MomNTailt) - call RegPack(Buf, InData%MomX0Trbt) - call RegPack(Buf, allocated(InData%MMAero)) - if (allocated(InData%MMAero)) then - call RegPackBounds(Buf, 3, lbound(InData%MMAero, kind=B8Ki), ubound(InData%MMAero, kind=B8Ki)) - call RegPack(Buf, InData%MMAero) - end if - call RegPack(Buf, InData%MXHydrot) - call RegPack(Buf, allocated(InData%PFrcONcRt)) - if (allocated(InData%PFrcONcRt)) then - call RegPackBounds(Buf, 2, lbound(InData%PFrcONcRt, kind=B8Ki), ubound(InData%PFrcONcRt, kind=B8Ki)) - call RegPack(Buf, InData%PFrcONcRt) - end if - call RegPack(Buf, allocated(InData%PFrcPRot)) - if (allocated(InData%PFrcPRot)) then - call RegPackBounds(Buf, 2, lbound(InData%PFrcPRot, kind=B8Ki), ubound(InData%PFrcPRot, kind=B8Ki)) - call RegPack(Buf, InData%PFrcPRot) - end if - call RegPack(Buf, allocated(InData%PFrcS0B)) - if (allocated(InData%PFrcS0B)) then - call RegPackBounds(Buf, 3, lbound(InData%PFrcS0B, kind=B8Ki), ubound(InData%PFrcS0B, kind=B8Ki)) - call RegPack(Buf, InData%PFrcS0B) - end if - call RegPack(Buf, allocated(InData%PFrcT0Trb)) - if (allocated(InData%PFrcT0Trb)) then - call RegPackBounds(Buf, 2, lbound(InData%PFrcT0Trb, kind=B8Ki), ubound(InData%PFrcT0Trb, kind=B8Ki)) - call RegPack(Buf, InData%PFrcT0Trb) - end if - call RegPack(Buf, allocated(InData%PFTHydro)) - if (allocated(InData%PFTHydro)) then - call RegPackBounds(Buf, 3, lbound(InData%PFTHydro, kind=B8Ki), ubound(InData%PFTHydro, kind=B8Ki)) - call RegPack(Buf, InData%PFTHydro) - end if - call RegPack(Buf, InData%PFZHydro) - call RegPack(Buf, allocated(InData%PMFHydro)) - if (allocated(InData%PMFHydro)) then - call RegPackBounds(Buf, 3, lbound(InData%PMFHydro, kind=B8Ki), ubound(InData%PMFHydro, kind=B8Ki)) - call RegPack(Buf, InData%PMFHydro) - end if - call RegPack(Buf, allocated(InData%PMomBNcRt)) - if (allocated(InData%PMomBNcRt)) then - call RegPackBounds(Buf, 2, lbound(InData%PMomBNcRt, kind=B8Ki), ubound(InData%PMomBNcRt, kind=B8Ki)) - call RegPack(Buf, InData%PMomBNcRt) - end if - call RegPack(Buf, allocated(InData%PMomH0B)) - if (allocated(InData%PMomH0B)) then - call RegPackBounds(Buf, 3, lbound(InData%PMomH0B, kind=B8Ki), ubound(InData%PMomH0B, kind=B8Ki)) - call RegPack(Buf, InData%PMomH0B) - end if - call RegPack(Buf, allocated(InData%PMomLPRot)) - if (allocated(InData%PMomLPRot)) then - call RegPackBounds(Buf, 2, lbound(InData%PMomLPRot, kind=B8Ki), ubound(InData%PMomLPRot, kind=B8Ki)) - call RegPack(Buf, InData%PMomLPRot) - end if - call RegPack(Buf, allocated(InData%PMomNGnRt)) - if (allocated(InData%PMomNGnRt)) then - call RegPackBounds(Buf, 2, lbound(InData%PMomNGnRt, kind=B8Ki), ubound(InData%PMomNGnRt, kind=B8Ki)) - call RegPack(Buf, InData%PMomNGnRt) - end if - call RegPack(Buf, allocated(InData%PMomNTail)) - if (allocated(InData%PMomNTail)) then - call RegPackBounds(Buf, 2, lbound(InData%PMomNTail, kind=B8Ki), ubound(InData%PMomNTail, kind=B8Ki)) - call RegPack(Buf, InData%PMomNTail) - end if - call RegPack(Buf, allocated(InData%PMomX0Trb)) - if (allocated(InData%PMomX0Trb)) then - call RegPackBounds(Buf, 2, lbound(InData%PMomX0Trb, kind=B8Ki), ubound(InData%PMomX0Trb, kind=B8Ki)) - call RegPack(Buf, InData%PMomX0Trb) - end if - call RegPack(Buf, InData%PMXHydro) - call RegPack(Buf, InData%TeetAng) - call RegPack(Buf, InData%FrcVGnRtt) - call RegPack(Buf, InData%FrcWTailt) - call RegPack(Buf, InData%FrcZAllt) - call RegPack(Buf, InData%MomXAllt) - call RegPack(Buf, allocated(InData%PFrcVGnRt)) - if (allocated(InData%PFrcVGnRt)) then - call RegPackBounds(Buf, 2, lbound(InData%PFrcVGnRt, kind=B8Ki), ubound(InData%PFrcVGnRt, kind=B8Ki)) - call RegPack(Buf, InData%PFrcVGnRt) - end if - call RegPack(Buf, allocated(InData%PFrcWTail)) - if (allocated(InData%PFrcWTail)) then - call RegPackBounds(Buf, 2, lbound(InData%PFrcWTail, kind=B8Ki), ubound(InData%PFrcWTail, kind=B8Ki)) - call RegPack(Buf, InData%PFrcWTail) - end if - call RegPack(Buf, allocated(InData%PFrcZAll)) - if (allocated(InData%PFrcZAll)) then - call RegPackBounds(Buf, 2, lbound(InData%PFrcZAll, kind=B8Ki), ubound(InData%PFrcZAll, kind=B8Ki)) - call RegPack(Buf, InData%PFrcZAll) - end if - call RegPack(Buf, allocated(InData%PMomXAll)) - if (allocated(InData%PMomXAll)) then - call RegPackBounds(Buf, 2, lbound(InData%PMomXAll, kind=B8Ki), ubound(InData%PMomXAll, kind=B8Ki)) - call RegPack(Buf, InData%PMomXAll) - end if - call RegPack(Buf, InData%TeetMom) - call RegPack(Buf, InData%TFrlMom) - call RegPack(Buf, InData%RFrlMom) - call RegPack(Buf, InData%GBoxEffFac) - call RegPack(Buf, allocated(InData%rSAerCen)) - if (allocated(InData%rSAerCen)) then - call RegPackBounds(Buf, 3, lbound(InData%rSAerCen, kind=B8Ki), ubound(InData%rSAerCen, kind=B8Ki)) - call RegPack(Buf, InData%rSAerCen) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%rO) + call RegPackAlloc(RF, InData%rQS) + call RegPackAlloc(RF, InData%rS) + call RegPackAlloc(RF, InData%rS0S) + call RegPackAlloc(RF, InData%rT) + call RegPack(RF, InData%rT0O) + call RegPackAlloc(RF, InData%rT0T) + call RegPack(RF, InData%rZ) + call RegPack(RF, InData%rZO) + call RegPackAlloc(RF, InData%rZT) + call RegPack(RF, InData%rPQ) + call RegPack(RF, InData%rP) + call RegPack(RF, InData%rV) + call RegPack(RF, InData%rJ) + call RegPack(RF, InData%rZY) + call RegPack(RF, InData%rOU) + call RegPack(RF, InData%rOV) + call RegPack(RF, InData%rVD) + call RegPack(RF, InData%rOW) + call RegPack(RF, InData%rPC) + call RegPackAlloc(RF, InData%rPS0) + call RegPack(RF, InData%rQ) + call RegPack(RF, InData%rQC) + call RegPack(RF, InData%rVIMU) + call RegPack(RF, InData%rVP) + call RegPack(RF, InData%rWI) + call RegPack(RF, InData%rWJ) + call RegPack(RF, InData%rZT0) + call RegPackAlloc(RF, InData%AngPosEF) + call RegPackAlloc(RF, InData%AngPosXF) + call RegPackAlloc(RF, InData%AngPosHM) + call RegPack(RF, InData%AngPosXB) + call RegPack(RF, InData%AngPosEX) + call RegPackAlloc(RF, InData%PAngVelEA) + call RegPackAlloc(RF, InData%PAngVelEF) + call RegPackAlloc(RF, InData%PAngVelEG) + call RegPackAlloc(RF, InData%PAngVelEH) + call RegPackAlloc(RF, InData%PAngVelEL) + call RegPackAlloc(RF, InData%PAngVelEM) + call RegPackAlloc(RF, InData%AngVelEM) + call RegPackAlloc(RF, InData%PAngVelEN) + call RegPack(RF, InData%AngVelEA) + call RegPackAlloc(RF, InData%PAngVelEB) + call RegPackAlloc(RF, InData%PAngVelER) + call RegPackAlloc(RF, InData%PAngVelEX) + call RegPack(RF, InData%AngVelEG) + call RegPack(RF, InData%AngVelEH) + call RegPack(RF, InData%AngVelEL) + call RegPack(RF, InData%AngVelEN) + call RegPack(RF, InData%AngVelEB) + call RegPack(RF, InData%AngVelER) + call RegPack(RF, InData%AngVelEX) + call RegPack(RF, InData%TeetAngVel) + call RegPack(RF, InData%AngAccEBt) + call RegPack(RF, InData%AngAccERt) + call RegPack(RF, InData%AngAccEXt) + call RegPackAlloc(RF, InData%AngAccEFt) + call RegPackAlloc(RF, InData%AngVelEF) + call RegPackAlloc(RF, InData%AngVelHM) + call RegPack(RF, InData%AngAccEAt) + call RegPack(RF, InData%AngAccEGt) + call RegPack(RF, InData%AngAccEHt) + call RegPackAlloc(RF, InData%AngAccEKt) + call RegPack(RF, InData%AngAccENt) + call RegPack(RF, InData%LinAccECt) + call RegPack(RF, InData%LinAccEDt) + call RegPack(RF, InData%LinAccEIt) + call RegPack(RF, InData%LinAccEJt) + call RegPack(RF, InData%LinAccEUt) + call RegPack(RF, InData%LinAccEYt) + call RegPackAlloc(RF, InData%LinVelES) + call RegPack(RF, InData%LinVelEQ) + call RegPackAlloc(RF, InData%LinVelET) + call RegPackAlloc(RF, InData%LinVelESm2) + call RegPackAlloc(RF, InData%PLinVelEIMU) + call RegPackAlloc(RF, InData%PLinVelEO) + call RegPackAlloc(RF, InData%PLinVelES) + call RegPackAlloc(RF, InData%PLinVelET) + call RegPackAlloc(RF, InData%PLinVelEZ) + call RegPackAlloc(RF, InData%PLinVelEC) + call RegPackAlloc(RF, InData%PLinVelED) + call RegPackAlloc(RF, InData%PLinVelEI) + call RegPackAlloc(RF, InData%PLinVelEJ) + call RegPackAlloc(RF, InData%PLinVelEP) + call RegPackAlloc(RF, InData%PLinVelEQ) + call RegPackAlloc(RF, InData%PLinVelEU) + call RegPackAlloc(RF, InData%PLinVelEV) + call RegPackAlloc(RF, InData%PLinVelEW) + call RegPackAlloc(RF, InData%PLinVelEY) + call RegPack(RF, InData%LinAccEIMUt) + call RegPack(RF, InData%LinAccEOt) + call RegPackAlloc(RF, InData%LinAccESt) + call RegPackAlloc(RF, InData%LinAccETt) + call RegPack(RF, InData%LinAccEZt) + call RegPack(RF, InData%LinVelEIMU) + call RegPack(RF, InData%LinVelEZ) + call RegPack(RF, InData%LinVelEO) + call RegPack(RF, InData%LinVelEJ) + call RegPack(RF, InData%FrcONcRtt) + call RegPack(RF, InData%FrcPRott) + call RegPackAlloc(RF, InData%FrcS0Bt) + call RegPack(RF, InData%FrcT0Trbt) + call RegPackAlloc(RF, InData%FSAero) + call RegPackAlloc(RF, InData%FSTipDrag) + call RegPackAlloc(RF, InData%FTHydrot) + call RegPack(RF, InData%FZHydrot) + call RegPackAlloc(RF, InData%MFHydrot) + call RegPack(RF, InData%MomBNcRtt) + call RegPackAlloc(RF, InData%MomH0Bt) + call RegPack(RF, InData%MomLPRott) + call RegPack(RF, InData%MomNGnRtt) + call RegPack(RF, InData%MomNTailt) + call RegPack(RF, InData%MomX0Trbt) + call RegPackAlloc(RF, InData%MMAero) + call RegPack(RF, InData%MXHydrot) + call RegPackAlloc(RF, InData%PFrcONcRt) + call RegPackAlloc(RF, InData%PFrcPRot) + call RegPackAlloc(RF, InData%PFrcS0B) + call RegPackAlloc(RF, InData%PFrcT0Trb) + call RegPackAlloc(RF, InData%PFTHydro) + call RegPack(RF, InData%PFZHydro) + call RegPackAlloc(RF, InData%PMFHydro) + call RegPackAlloc(RF, InData%PMomBNcRt) + call RegPackAlloc(RF, InData%PMomH0B) + call RegPackAlloc(RF, InData%PMomLPRot) + call RegPackAlloc(RF, InData%PMomNGnRt) + call RegPackAlloc(RF, InData%PMomNTail) + call RegPackAlloc(RF, InData%PMomX0Trb) + call RegPack(RF, InData%PMXHydro) + call RegPack(RF, InData%TeetAng) + call RegPack(RF, InData%FrcVGnRtt) + call RegPack(RF, InData%FrcWTailt) + call RegPack(RF, InData%FrcZAllt) + call RegPack(RF, InData%MomXAllt) + call RegPackAlloc(RF, InData%PFrcVGnRt) + call RegPackAlloc(RF, InData%PFrcWTail) + call RegPackAlloc(RF, InData%PFrcZAll) + call RegPackAlloc(RF, InData%PMomXAll) + call RegPack(RF, InData%TeetMom) + call RegPack(RF, InData%TFrlMom) + call RegPack(RF, InData%RFrlMom) + call RegPack(RF, InData%GBoxEffFac) + call RegPackAlloc(RF, InData%rSAerCen) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ED_UnPackRtHndSide(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_UnPackRtHndSide(RF, OutData) + type(RegFile), intent(inout) :: RF type(ED_RtHndSide), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ED_UnPackRtHndSide' integer(B8Ki) :: LB(5), UB(5) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%rO) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%rQS)) deallocate(OutData%rQS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rQS(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rQS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rQS) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rS)) deallocate(OutData%rS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rS(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%rO); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rQS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rS0S); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rT0O); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rT0T); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rZO); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rZT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rPQ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rJ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rZY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rOU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rOV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rVD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rOW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rPC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rPS0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rQ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rQC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rVIMU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rVP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rWI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rWJ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rZT0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AngPosEF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AngPosXF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AngPosHM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngPosXB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngPosEX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PAngVelEA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PAngVelEF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PAngVelEG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PAngVelEH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PAngVelEL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PAngVelEM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AngVelEM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PAngVelEN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngVelEA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PAngVelEB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PAngVelER); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PAngVelEX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngVelEG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngVelEH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngVelEL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngVelEN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngVelEB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngVelER); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngVelEX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetAngVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngAccEBt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngAccERt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngAccEXt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AngAccEFt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AngVelEF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AngVelHM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngAccEAt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngAccEGt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngAccEHt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AngAccEKt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngAccENt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinAccECt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinAccEDt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinAccEIt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinAccEJt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinAccEUt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinAccEYt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinVelES); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinVelEQ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinVelET); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinVelESm2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PLinVelEIMU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PLinVelEO); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PLinVelES); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PLinVelET); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PLinVelEZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PLinVelEC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PLinVelED); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PLinVelEI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PLinVelEJ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PLinVelEP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PLinVelEQ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PLinVelEU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PLinVelEV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PLinVelEW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PLinVelEY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinAccEIMUt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinAccEOt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinAccESt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinAccETt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinAccEZt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinVelEIMU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinVelEZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinVelEO); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinVelEJ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FrcONcRtt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FrcPRott); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FrcS0Bt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FrcT0Trbt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FSAero); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FSTipDrag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FTHydrot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FZHydrot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MFHydrot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MomBNcRtt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MomH0Bt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MomLPRott); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MomNGnRtt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MomNTailt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MomX0Trbt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MMAero); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MXHydrot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PFrcONcRt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PFrcPRot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PFrcS0B); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PFrcT0Trb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PFTHydro); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PFZHydro); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PMFHydro); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PMomBNcRt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PMomH0B); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PMomLPRot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PMomNGnRt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PMomNTail); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PMomX0Trb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PMXHydro); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetAng); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FrcVGnRtt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FrcWTailt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FrcZAllt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MomXAllt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PFrcVGnRt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PFrcWTail); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PFrcZAll); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PMomXAll); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetMom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlMom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlMom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GBoxEffFac); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rSAerCen); if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine ED_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) + type(ED_ContinuousStateType), intent(in) :: SrcContStateData + type(ED_ContinuousStateType), intent(inout) :: DstContStateData + integer(IntKi), intent(in ) :: CtrlCode + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + integer(B8Ki) :: LB(1), UB(1) + integer(IntKi) :: ErrStat2 + character(*), parameter :: RoutineName = 'ED_CopyContState' + ErrStat = ErrID_None + ErrMsg = '' + if (allocated(SrcContStateData%QT)) then + LB(1:1) = lbound(SrcContStateData%QT, kind=B8Ki) + UB(1:1) = ubound(SrcContStateData%QT, kind=B8Ki) + if (.not. allocated(DstContStateData%QT)) then + allocate(DstContStateData%QT(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstContStateData%QT.', ErrStat, ErrMsg, RoutineName) + return + end if end if - call RegUnpack(Buf, OutData%rS) - if (RegCheckErr(Buf, RoutineName)) return + DstContStateData%QT = SrcContStateData%QT end if - if (allocated(OutData%rS0S)) deallocate(OutData%rS0S) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rS0S(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rS0S.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return + if (allocated(SrcContStateData%QDT)) then + LB(1:1) = lbound(SrcContStateData%QDT, kind=B8Ki) + UB(1:1) = ubound(SrcContStateData%QDT, kind=B8Ki) + if (.not. allocated(DstContStateData%QDT)) then + allocate(DstContStateData%QDT(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstContStateData%QDT.', ErrStat, ErrMsg, RoutineName) + return + end if end if - call RegUnpack(Buf, OutData%rS0S) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rT)) deallocate(OutData%rT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rT(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rT) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%rT0O) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%rT0T)) deallocate(OutData%rT0T) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rT0T(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rT0T.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rT0T) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%rZ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rZO) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%rZT)) deallocate(OutData%rZT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rZT(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rZT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rZT) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%rPQ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rJ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rZY) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rOU) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rOV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rVD) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rOW) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rPC) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%rPS0)) deallocate(OutData%rPS0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rPS0(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rPS0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rPS0) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%rQ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rQC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rVIMU) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rVP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rWI) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rWJ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rZT0) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%AngPosEF)) deallocate(OutData%AngPosEF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AngPosEF(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AngPosEF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AngPosEF) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AngPosXF)) deallocate(OutData%AngPosXF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AngPosXF(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AngPosXF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AngPosXF) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AngPosHM)) deallocate(OutData%AngPosHM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AngPosHM(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AngPosHM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AngPosHM) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%AngPosXB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AngPosEX) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PAngVelEA)) deallocate(OutData%PAngVelEA) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PAngVelEA(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PAngVelEA.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PAngVelEA) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PAngVelEF)) deallocate(OutData%PAngVelEF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PAngVelEF(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PAngVelEF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PAngVelEF) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PAngVelEG)) deallocate(OutData%PAngVelEG) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PAngVelEG(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PAngVelEG.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PAngVelEG) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PAngVelEH)) deallocate(OutData%PAngVelEH) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PAngVelEH(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PAngVelEH.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PAngVelEH) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PAngVelEL)) deallocate(OutData%PAngVelEL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PAngVelEL(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PAngVelEL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PAngVelEL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PAngVelEM)) deallocate(OutData%PAngVelEM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 5, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PAngVelEM(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PAngVelEM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PAngVelEM) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AngVelEM)) deallocate(OutData%AngVelEM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AngVelEM(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AngVelEM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AngVelEM) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PAngVelEN)) deallocate(OutData%PAngVelEN) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PAngVelEN(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PAngVelEN.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PAngVelEN) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%AngVelEA) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PAngVelEB)) deallocate(OutData%PAngVelEB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PAngVelEB(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PAngVelEB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PAngVelEB) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PAngVelER)) deallocate(OutData%PAngVelER) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PAngVelER(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PAngVelER.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PAngVelER) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PAngVelEX)) deallocate(OutData%PAngVelEX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PAngVelEX(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PAngVelEX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PAngVelEX) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%AngVelEG) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AngVelEH) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AngVelEL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AngVelEN) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AngVelEB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AngVelER) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AngVelEX) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetAngVel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AngAccEBt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AngAccERt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AngAccEXt) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%AngAccEFt)) deallocate(OutData%AngAccEFt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AngAccEFt(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AngAccEFt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AngAccEFt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AngVelEF)) deallocate(OutData%AngVelEF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AngVelEF(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AngVelEF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AngVelEF) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AngVelHM)) deallocate(OutData%AngVelHM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AngVelHM(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AngVelHM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AngVelHM) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%AngAccEAt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AngAccEGt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AngAccEHt) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%AngAccEKt)) deallocate(OutData%AngAccEKt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AngAccEKt(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AngAccEKt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AngAccEKt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%AngAccENt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinAccECt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinAccEDt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinAccEIt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinAccEJt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinAccEUt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinAccEYt) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%LinVelES)) deallocate(OutData%LinVelES) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinVelES(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinVelES.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinVelES) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%LinVelEQ) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%LinVelET)) deallocate(OutData%LinVelET) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinVelET(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinVelET.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinVelET) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinVelESm2)) deallocate(OutData%LinVelESm2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinVelESm2(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinVelESm2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinVelESm2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PLinVelEIMU)) deallocate(OutData%PLinVelEIMU) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PLinVelEIMU(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PLinVelEIMU.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PLinVelEIMU) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PLinVelEO)) deallocate(OutData%PLinVelEO) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PLinVelEO(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PLinVelEO.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PLinVelEO) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PLinVelES)) deallocate(OutData%PLinVelES) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 5, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PLinVelES(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PLinVelES.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PLinVelES) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PLinVelET)) deallocate(OutData%PLinVelET) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PLinVelET(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PLinVelET.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PLinVelET) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PLinVelEZ)) deallocate(OutData%PLinVelEZ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PLinVelEZ(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PLinVelEZ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PLinVelEZ) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PLinVelEC)) deallocate(OutData%PLinVelEC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PLinVelEC(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PLinVelEC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PLinVelEC) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PLinVelED)) deallocate(OutData%PLinVelED) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PLinVelED(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PLinVelED.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PLinVelED) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PLinVelEI)) deallocate(OutData%PLinVelEI) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PLinVelEI(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PLinVelEI.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PLinVelEI) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PLinVelEJ)) deallocate(OutData%PLinVelEJ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PLinVelEJ(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PLinVelEJ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PLinVelEJ) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PLinVelEP)) deallocate(OutData%PLinVelEP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PLinVelEP(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PLinVelEP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PLinVelEP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PLinVelEQ)) deallocate(OutData%PLinVelEQ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PLinVelEQ(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PLinVelEQ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PLinVelEQ) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PLinVelEU)) deallocate(OutData%PLinVelEU) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PLinVelEU(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PLinVelEU.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PLinVelEU) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PLinVelEV)) deallocate(OutData%PLinVelEV) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PLinVelEV(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PLinVelEV.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PLinVelEV) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PLinVelEW)) deallocate(OutData%PLinVelEW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PLinVelEW(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PLinVelEW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PLinVelEW) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PLinVelEY)) deallocate(OutData%PLinVelEY) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PLinVelEY(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PLinVelEY.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PLinVelEY) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%LinAccEIMUt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinAccEOt) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%LinAccESt)) deallocate(OutData%LinAccESt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinAccESt(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinAccESt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinAccESt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinAccETt)) deallocate(OutData%LinAccETt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinAccETt(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinAccETt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinAccETt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%LinAccEZt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinVelEIMU) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinVelEZ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinVelEO) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinVelEJ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FrcONcRtt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FrcPRott) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%FrcS0Bt)) deallocate(OutData%FrcS0Bt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FrcS0Bt(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FrcS0Bt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FrcS0Bt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%FrcT0Trbt) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%FSAero)) deallocate(OutData%FSAero) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FSAero(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FSAero.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FSAero) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FSTipDrag)) deallocate(OutData%FSTipDrag) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FSTipDrag(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FSTipDrag.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FSTipDrag) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FTHydrot)) deallocate(OutData%FTHydrot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FTHydrot(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FTHydrot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FTHydrot) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%FZHydrot) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%MFHydrot)) deallocate(OutData%MFHydrot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MFHydrot(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MFHydrot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MFHydrot) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%MomBNcRtt) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%MomH0Bt)) deallocate(OutData%MomH0Bt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MomH0Bt(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MomH0Bt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MomH0Bt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%MomLPRott) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MomNGnRtt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MomNTailt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MomX0Trbt) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%MMAero)) deallocate(OutData%MMAero) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MMAero(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MMAero.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MMAero) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%MXHydrot) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PFrcONcRt)) deallocate(OutData%PFrcONcRt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PFrcONcRt(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PFrcONcRt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PFrcONcRt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PFrcPRot)) deallocate(OutData%PFrcPRot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PFrcPRot(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PFrcPRot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PFrcPRot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PFrcS0B)) deallocate(OutData%PFrcS0B) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PFrcS0B(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PFrcS0B.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PFrcS0B) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PFrcT0Trb)) deallocate(OutData%PFrcT0Trb) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PFrcT0Trb(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PFrcT0Trb.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PFrcT0Trb) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PFTHydro)) deallocate(OutData%PFTHydro) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PFTHydro(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PFTHydro.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PFTHydro) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%PFZHydro) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PMFHydro)) deallocate(OutData%PMFHydro) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PMFHydro(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PMFHydro.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PMFHydro) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PMomBNcRt)) deallocate(OutData%PMomBNcRt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PMomBNcRt(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PMomBNcRt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PMomBNcRt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PMomH0B)) deallocate(OutData%PMomH0B) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PMomH0B(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PMomH0B.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PMomH0B) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PMomLPRot)) deallocate(OutData%PMomLPRot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PMomLPRot(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PMomLPRot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PMomLPRot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PMomNGnRt)) deallocate(OutData%PMomNGnRt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PMomNGnRt(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PMomNGnRt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PMomNGnRt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PMomNTail)) deallocate(OutData%PMomNTail) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PMomNTail(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PMomNTail.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PMomNTail) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PMomX0Trb)) deallocate(OutData%PMomX0Trb) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PMomX0Trb(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PMomX0Trb.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PMomX0Trb) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%PMXHydro) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetAng) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FrcVGnRtt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FrcWTailt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FrcZAllt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MomXAllt) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PFrcVGnRt)) deallocate(OutData%PFrcVGnRt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PFrcVGnRt(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PFrcVGnRt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PFrcVGnRt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PFrcWTail)) deallocate(OutData%PFrcWTail) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PFrcWTail(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PFrcWTail.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PFrcWTail) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PFrcZAll)) deallocate(OutData%PFrcZAll) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PFrcZAll(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PFrcZAll.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PFrcZAll) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PMomXAll)) deallocate(OutData%PMomXAll) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PMomXAll(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PMomXAll.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PMomXAll) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%TeetMom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlMom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlMom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GBoxEffFac) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%rSAerCen)) deallocate(OutData%rSAerCen) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rSAerCen(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rSAerCen.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rSAerCen) - if (RegCheckErr(Buf, RoutineName)) return - end if -end subroutine - -subroutine ED_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) - type(ED_ContinuousStateType), intent(in) :: SrcContStateData - type(ED_ContinuousStateType), intent(inout) :: DstContStateData - integer(IntKi), intent(in ) :: CtrlCode - integer(IntKi), intent( out) :: ErrStat - character(*), intent( out) :: ErrMsg - integer(B8Ki) :: LB(1), UB(1) - integer(IntKi) :: ErrStat2 - character(*), parameter :: RoutineName = 'ED_CopyContState' - ErrStat = ErrID_None - ErrMsg = '' - if (allocated(SrcContStateData%QT)) then - LB(1:1) = lbound(SrcContStateData%QT, kind=B8Ki) - UB(1:1) = ubound(SrcContStateData%QT, kind=B8Ki) - if (.not. allocated(DstContStateData%QT)) then - allocate(DstContStateData%QT(LB(1):UB(1)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstContStateData%QT.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstContStateData%QT = SrcContStateData%QT - end if - if (allocated(SrcContStateData%QDT)) then - LB(1:1) = lbound(SrcContStateData%QDT, kind=B8Ki) - UB(1:1) = ubound(SrcContStateData%QDT, kind=B8Ki) - if (.not. allocated(DstContStateData%QDT)) then - allocate(DstContStateData%QDT(LB(1):UB(1)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstContStateData%QDT.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstContStateData%QDT = SrcContStateData%QDT + DstContStateData%QDT = SrcContStateData%QDT end if end subroutine @@ -7208,60 +4539,26 @@ subroutine ED_DestroyContState(ContStateData, ErrStat, ErrMsg) end if end subroutine -subroutine ED_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(ED_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'ED_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%QT)) - if (allocated(InData%QT)) then - call RegPackBounds(Buf, 1, lbound(InData%QT, kind=B8Ki), ubound(InData%QT, kind=B8Ki)) - call RegPack(Buf, InData%QT) - end if - call RegPack(Buf, allocated(InData%QDT)) - if (allocated(InData%QDT)) then - call RegPackBounds(Buf, 1, lbound(InData%QDT, kind=B8Ki), ubound(InData%QDT, kind=B8Ki)) - call RegPack(Buf, InData%QDT) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%QT) + call RegPackAlloc(RF, InData%QDT) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ED_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(ED_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ED_UnPackContState' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%QT)) deallocate(OutData%QT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%QT(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%QT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%QT) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%QDT)) deallocate(OutData%QDT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%QDT(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%QDT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%QDT) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%QT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%QDT); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ED_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -7285,22 +4582,21 @@ subroutine ED_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine ED_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(ED_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'ED_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyDiscState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ED_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(ED_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ED_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyDiscState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ED_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -7324,22 +4620,21 @@ subroutine ED_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine ED_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(ED_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'ED_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstrState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ED_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(ED_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ED_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstrState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ED_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -7403,69 +4698,47 @@ subroutine ED_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) end if end subroutine -subroutine ED_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(ED_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'ED_PackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%n) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%n) LB(1:1) = lbound(InData%xdot, kind=B8Ki) UB(1:1) = ubound(InData%xdot, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_PackContState(Buf, InData%xdot(i1)) + call ED_PackContState(RF, InData%xdot(i1)) end do - call RegPack(Buf, allocated(InData%IC)) - if (allocated(InData%IC)) then - call RegPackBounds(Buf, 1, lbound(InData%IC, kind=B8Ki), ubound(InData%IC, kind=B8Ki)) - call RegPack(Buf, InData%IC) - end if - call RegPack(Buf, InData%HSSBrTrq) - call RegPack(Buf, InData%HSSBrTrqC) - call RegPack(Buf, InData%SgnPrvLSTQ) - call RegPack(Buf, InData%SgnLSTQ) - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%IC) + call RegPack(RF, InData%HSSBrTrq) + call RegPack(RF, InData%HSSBrTrqC) + call RegPack(RF, InData%SgnPrvLSTQ) + call RegPack(RF, InData%SgnLSTQ) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ED_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(ED_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ED_UnPackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%n) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%n); if (RegCheckErr(RF, RoutineName)) return LB(1:1) = lbound(OutData%xdot, kind=B8Ki) UB(1:1) = ubound(OutData%xdot, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_UnpackContState(Buf, OutData%xdot(i1)) ! xdot + call ED_UnpackContState(RF, OutData%xdot(i1)) ! xdot end do - if (allocated(OutData%IC)) deallocate(OutData%IC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IC(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IC) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%HSSBrTrq) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HSSBrTrqC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SgnPrvLSTQ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SgnLSTQ) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HSSBrTrq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HSSBrTrqC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SgnPrvLSTQ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SgnLSTQ); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ED_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -7595,176 +4868,56 @@ subroutine ED_DestroyMisc(MiscData, ErrStat, ErrMsg) if (allocated(MiscData%AugMat_factor)) then deallocate(MiscData%AugMat_factor) end if - if (allocated(MiscData%SolnVec)) then - deallocate(MiscData%SolnVec) - end if - if (allocated(MiscData%AugMat_pivot)) then - deallocate(MiscData%AugMat_pivot) - end if - if (allocated(MiscData%OgnlGeAzRo)) then - deallocate(MiscData%OgnlGeAzRo) - end if - if (allocated(MiscData%QD2T)) then - deallocate(MiscData%QD2T) - end if -end subroutine - -subroutine ED_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf - type(ED_MiscVarType), intent(in) :: InData - character(*), parameter :: RoutineName = 'ED_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call ED_PackCoordSys(Buf, InData%CoordSys) - call ED_PackRtHndSide(Buf, InData%RtHS) - call RegPack(Buf, allocated(InData%AllOuts)) - if (allocated(InData%AllOuts)) then - call RegPackBounds(Buf, 1, lbound(InData%AllOuts, kind=B8Ki), ubound(InData%AllOuts, kind=B8Ki)) - call RegPack(Buf, InData%AllOuts) - end if - call RegPack(Buf, allocated(InData%AugMat)) - if (allocated(InData%AugMat)) then - call RegPackBounds(Buf, 2, lbound(InData%AugMat, kind=B8Ki), ubound(InData%AugMat, kind=B8Ki)) - call RegPack(Buf, InData%AugMat) - end if - call RegPack(Buf, allocated(InData%AugMat_factor)) - if (allocated(InData%AugMat_factor)) then - call RegPackBounds(Buf, 2, lbound(InData%AugMat_factor, kind=B8Ki), ubound(InData%AugMat_factor, kind=B8Ki)) - call RegPack(Buf, InData%AugMat_factor) - end if - call RegPack(Buf, allocated(InData%SolnVec)) - if (allocated(InData%SolnVec)) then - call RegPackBounds(Buf, 1, lbound(InData%SolnVec, kind=B8Ki), ubound(InData%SolnVec, kind=B8Ki)) - call RegPack(Buf, InData%SolnVec) - end if - call RegPack(Buf, allocated(InData%AugMat_pivot)) - if (allocated(InData%AugMat_pivot)) then - call RegPackBounds(Buf, 1, lbound(InData%AugMat_pivot, kind=B8Ki), ubound(InData%AugMat_pivot, kind=B8Ki)) - call RegPack(Buf, InData%AugMat_pivot) - end if - call RegPack(Buf, allocated(InData%OgnlGeAzRo)) - if (allocated(InData%OgnlGeAzRo)) then - call RegPackBounds(Buf, 1, lbound(InData%OgnlGeAzRo, kind=B8Ki), ubound(InData%OgnlGeAzRo, kind=B8Ki)) - call RegPack(Buf, InData%OgnlGeAzRo) - end if - call RegPack(Buf, allocated(InData%QD2T)) - if (allocated(InData%QD2T)) then - call RegPackBounds(Buf, 1, lbound(InData%QD2T, kind=B8Ki), ubound(InData%QD2T, kind=B8Ki)) - call RegPack(Buf, InData%QD2T) - end if - call RegPack(Buf, InData%IgnoreMod) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine ED_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf - type(ED_MiscVarType), intent(inout) :: OutData - character(*), parameter :: RoutineName = 'ED_UnPackMisc' - integer(B8Ki) :: LB(2), UB(2) - integer(IntKi) :: stat - logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call ED_UnpackCoordSys(Buf, OutData%CoordSys) ! CoordSys - call ED_UnpackRtHndSide(Buf, OutData%RtHS) ! RtHS - if (allocated(OutData%AllOuts)) deallocate(OutData%AllOuts) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AllOuts(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AllOuts.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AllOuts) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AugMat)) deallocate(OutData%AugMat) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AugMat(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AugMat.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AugMat) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AugMat_factor)) deallocate(OutData%AugMat_factor) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AugMat_factor(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AugMat_factor.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AugMat_factor) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SolnVec)) deallocate(OutData%SolnVec) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SolnVec(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SolnVec.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SolnVec) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AugMat_pivot)) deallocate(OutData%AugMat_pivot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AugMat_pivot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AugMat_pivot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AugMat_pivot) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(MiscData%SolnVec)) then + deallocate(MiscData%SolnVec) end if - if (allocated(OutData%OgnlGeAzRo)) deallocate(OutData%OgnlGeAzRo) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OgnlGeAzRo(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OgnlGeAzRo.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OgnlGeAzRo) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(MiscData%AugMat_pivot)) then + deallocate(MiscData%AugMat_pivot) end if - if (allocated(OutData%QD2T)) deallocate(OutData%QD2T) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%QD2T(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%QD2T.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%QD2T) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(MiscData%OgnlGeAzRo)) then + deallocate(MiscData%OgnlGeAzRo) + end if + if (allocated(MiscData%QD2T)) then + deallocate(MiscData%QD2T) end if - call RegUnpack(Buf, OutData%IgnoreMod) - if (RegCheckErr(Buf, RoutineName)) return +end subroutine + +subroutine ED_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF + type(ED_MiscVarType), intent(in) :: InData + character(*), parameter :: RoutineName = 'ED_PackMisc' + if (RF%ErrStat >= AbortErrLev) return + call ED_PackCoordSys(RF, InData%CoordSys) + call ED_PackRtHndSide(RF, InData%RtHS) + call RegPackAlloc(RF, InData%AllOuts) + call RegPackAlloc(RF, InData%AugMat) + call RegPackAlloc(RF, InData%AugMat_factor) + call RegPackAlloc(RF, InData%SolnVec) + call RegPackAlloc(RF, InData%AugMat_pivot) + call RegPackAlloc(RF, InData%OgnlGeAzRo) + call RegPackAlloc(RF, InData%QD2T) + call RegPack(RF, InData%IgnoreMod) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine ED_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF + type(ED_MiscVarType), intent(inout) :: OutData + character(*), parameter :: RoutineName = 'ED_UnPackMisc' + integer(B8Ki) :: LB(2), UB(2) + integer(IntKi) :: stat + logical :: IsAllocAssoc + if (RF%ErrStat /= ErrID_None) return + call ED_UnpackCoordSys(RF, OutData%CoordSys) ! CoordSys + call ED_UnpackRtHndSide(RF, OutData%RtHS) ! RtHS + call RegUnpackAlloc(RF, OutData%AllOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AugMat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AugMat_factor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SolnVec); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AugMat_pivot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OgnlGeAzRo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%QD2T); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IgnoreMod); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ED_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -8758,1731 +5911,610 @@ subroutine ED_DestroyParam(ParamData, ErrStat, ErrMsg) deallocate(ParamData%CAeroTwst) end if if (allocated(ParamData%CBE)) then - deallocate(ParamData%CBE) - end if - if (allocated(ParamData%CBF)) then - deallocate(ParamData%CBF) - end if - if (allocated(ParamData%Chord)) then - deallocate(ParamData%Chord) - end if - if (allocated(ParamData%CThetaS)) then - deallocate(ParamData%CThetaS) - end if - if (allocated(ParamData%DRNodes)) then - deallocate(ParamData%DRNodes) - end if - if (allocated(ParamData%FStTunr)) then - deallocate(ParamData%FStTunr) - end if - if (allocated(ParamData%KBE)) then - deallocate(ParamData%KBE) - end if - if (allocated(ParamData%KBF)) then - deallocate(ParamData%KBF) - end if - if (allocated(ParamData%MassB)) then - deallocate(ParamData%MassB) - end if - if (allocated(ParamData%RNodes)) then - deallocate(ParamData%RNodes) - end if - if (allocated(ParamData%RNodesNorm)) then - deallocate(ParamData%RNodesNorm) - end if - if (allocated(ParamData%rSAerCenn1)) then - deallocate(ParamData%rSAerCenn1) - end if - if (allocated(ParamData%rSAerCenn2)) then - deallocate(ParamData%rSAerCenn2) - end if - if (allocated(ParamData%SAeroTwst)) then - deallocate(ParamData%SAeroTwst) - end if - if (allocated(ParamData%StiffBE)) then - deallocate(ParamData%StiffBE) - end if - if (allocated(ParamData%StiffBF)) then - deallocate(ParamData%StiffBF) - end if - if (allocated(ParamData%SThetaS)) then - deallocate(ParamData%SThetaS) - end if - if (allocated(ParamData%ThetaS)) then - deallocate(ParamData%ThetaS) - end if - if (allocated(ParamData%TwistedSF)) then - deallocate(ParamData%TwistedSF) - end if - if (allocated(ParamData%BldFl1Sh)) then - deallocate(ParamData%BldFl1Sh) - end if - if (allocated(ParamData%BldFl2Sh)) then - deallocate(ParamData%BldFl2Sh) - end if - if (allocated(ParamData%BldEdgSh)) then - deallocate(ParamData%BldEdgSh) - end if - if (allocated(ParamData%FreqBE)) then - deallocate(ParamData%FreqBE) - end if - if (allocated(ParamData%FreqBF)) then - deallocate(ParamData%FreqBF) - end if - if (allocated(ParamData%BElmntMass)) then - deallocate(ParamData%BElmntMass) - end if - if (allocated(ParamData%TElmntMass)) then - deallocate(ParamData%TElmntMass) - end if - if (allocated(ParamData%BldNd_OutParam)) then - LB(1:1) = lbound(ParamData%BldNd_OutParam, kind=B8Ki) - UB(1:1) = ubound(ParamData%BldNd_OutParam, kind=B8Ki) - do i1 = LB(1), UB(1) - call NWTC_Library_DestroyOutParmType(ParamData%BldNd_OutParam(i1), ErrStat2, ErrMsg2) - call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) - end do - deallocate(ParamData%BldNd_OutParam) - end if - if (allocated(ParamData%Jac_u_indx)) then - deallocate(ParamData%Jac_u_indx) - end if - if (allocated(ParamData%du)) then - deallocate(ParamData%du) - end if - if (allocated(ParamData%dx)) then - deallocate(ParamData%dx) - end if -end subroutine - -subroutine ED_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf - type(ED_ParameterType), intent(in) :: InData - character(*), parameter :: RoutineName = 'ED_PackParam' - integer(B8Ki) :: i1, i2, i3, i4, i5 - integer(B8Ki) :: LB(5), UB(5) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT) - call RegPack(Buf, InData%DT24) - call RegPack(Buf, InData%BldNodes) - call RegPack(Buf, InData%TipNode) - call RegPack(Buf, InData%NDOF) - call RegPack(Buf, InData%TwoPiNB) - call RegPack(Buf, InData%NAug) - call RegPack(Buf, InData%NPH) - call RegPack(Buf, allocated(InData%PH)) - if (allocated(InData%PH)) then - call RegPackBounds(Buf, 1, lbound(InData%PH, kind=B8Ki), ubound(InData%PH, kind=B8Ki)) - call RegPack(Buf, InData%PH) - end if - call RegPack(Buf, InData%NPM) - call RegPack(Buf, allocated(InData%PM)) - if (allocated(InData%PM)) then - call RegPackBounds(Buf, 2, lbound(InData%PM, kind=B8Ki), ubound(InData%PM, kind=B8Ki)) - call RegPack(Buf, InData%PM) - end if - call RegPack(Buf, allocated(InData%DOF_Flag)) - if (allocated(InData%DOF_Flag)) then - call RegPackBounds(Buf, 1, lbound(InData%DOF_Flag, kind=B8Ki), ubound(InData%DOF_Flag, kind=B8Ki)) - call RegPack(Buf, InData%DOF_Flag) - end if - call RegPack(Buf, allocated(InData%DOF_Desc)) - if (allocated(InData%DOF_Desc)) then - call RegPackBounds(Buf, 1, lbound(InData%DOF_Desc, kind=B8Ki), ubound(InData%DOF_Desc, kind=B8Ki)) - call RegPack(Buf, InData%DOF_Desc) - end if - call ED_PackActiveDOFs(Buf, InData%DOFs) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, InData%OutFmt) - call RegPack(Buf, InData%NBlGages) - call RegPack(Buf, InData%NTwGages) - call RegPack(Buf, allocated(InData%OutParam)) - if (allocated(InData%OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) - LB(1:1) = lbound(InData%OutParam, kind=B8Ki) - UB(1:1) = ubound(InData%OutParam, kind=B8Ki) - do i1 = LB(1), UB(1) - call NWTC_Library_PackOutParmType(Buf, InData%OutParam(i1)) - end do - end if - call RegPack(Buf, InData%Delim) - call RegPack(Buf, InData%AvgNrmTpRd) - call RegPack(Buf, InData%AzimB1Up) - call RegPack(Buf, InData%CosDel3) - call RegPack(Buf, allocated(InData%CosPreC)) - if (allocated(InData%CosPreC)) then - call RegPackBounds(Buf, 1, lbound(InData%CosPreC, kind=B8Ki), ubound(InData%CosPreC, kind=B8Ki)) - call RegPack(Buf, InData%CosPreC) - end if - call RegPack(Buf, InData%CRFrlSkew) - call RegPack(Buf, InData%CRFrlSkw2) - call RegPack(Buf, InData%CRFrlTilt) - call RegPack(Buf, InData%CRFrlTlt2) - call RegPack(Buf, InData%CShftSkew) - call RegPack(Buf, InData%CShftTilt) - call RegPack(Buf, InData%CSRFrlSkw) - call RegPack(Buf, InData%CSRFrlTlt) - call RegPack(Buf, InData%CSTFrlSkw) - call RegPack(Buf, InData%CSTFrlTlt) - call RegPack(Buf, InData%CTFrlSkew) - call RegPack(Buf, InData%CTFrlSkw2) - call RegPack(Buf, InData%CTFrlTilt) - call RegPack(Buf, InData%CTFrlTlt2) - call RegPack(Buf, InData%HubHt) - call RegPack(Buf, InData%HubCM) - call RegPack(Buf, InData%HubRad) - call RegPack(Buf, InData%NacCMxn) - call RegPack(Buf, InData%NacCMyn) - call RegPack(Buf, InData%NacCMzn) - call RegPack(Buf, InData%OverHang) - call RegPack(Buf, InData%ProjArea) - call RegPack(Buf, InData%PtfmRefzt) - call RegPack(Buf, InData%RefTwrHt) - call RegPack(Buf, InData%RFrlPnt_n) - call RegPack(Buf, InData%rVDxn) - call RegPack(Buf, InData%rVDyn) - call RegPack(Buf, InData%rVDzn) - call RegPack(Buf, InData%rVIMUxn) - call RegPack(Buf, InData%rVIMUyn) - call RegPack(Buf, InData%rVIMUzn) - call RegPack(Buf, InData%rVPxn) - call RegPack(Buf, InData%rVPyn) - call RegPack(Buf, InData%rVPzn) - call RegPack(Buf, InData%rWIxn) - call RegPack(Buf, InData%rWIyn) - call RegPack(Buf, InData%rWIzn) - call RegPack(Buf, InData%rWJxn) - call RegPack(Buf, InData%rWJyn) - call RegPack(Buf, InData%rWJzn) - call RegPack(Buf, InData%rZT0zt) - call RegPack(Buf, InData%rZYzt) - call RegPack(Buf, InData%SinDel3) - call RegPack(Buf, allocated(InData%SinPreC)) - if (allocated(InData%SinPreC)) then - call RegPackBounds(Buf, 1, lbound(InData%SinPreC, kind=B8Ki), ubound(InData%SinPreC, kind=B8Ki)) - call RegPack(Buf, InData%SinPreC) - end if - call RegPack(Buf, InData%SRFrlSkew) - call RegPack(Buf, InData%SRFrlSkw2) - call RegPack(Buf, InData%SRFrlTilt) - call RegPack(Buf, InData%SRFrlTlt2) - call RegPack(Buf, InData%SShftSkew) - call RegPack(Buf, InData%SShftTilt) - call RegPack(Buf, InData%STFrlSkew) - call RegPack(Buf, InData%STFrlSkw2) - call RegPack(Buf, InData%STFrlTilt) - call RegPack(Buf, InData%STFrlTlt2) - call RegPack(Buf, InData%TFrlPnt_n) - call RegPack(Buf, InData%TipRad) - call RegPack(Buf, InData%TowerHt) - call RegPack(Buf, InData%TowerBsHt) - call RegPack(Buf, InData%UndSling) - call RegPack(Buf, InData%NumBl) - call RegPack(Buf, allocated(InData%AxRedTFA)) - if (allocated(InData%AxRedTFA)) then - call RegPackBounds(Buf, 3, lbound(InData%AxRedTFA, kind=B8Ki), ubound(InData%AxRedTFA, kind=B8Ki)) - call RegPack(Buf, InData%AxRedTFA) - end if - call RegPack(Buf, allocated(InData%AxRedTSS)) - if (allocated(InData%AxRedTSS)) then - call RegPackBounds(Buf, 3, lbound(InData%AxRedTSS, kind=B8Ki), ubound(InData%AxRedTSS, kind=B8Ki)) - call RegPack(Buf, InData%AxRedTSS) - end if - call RegPack(Buf, InData%CTFA) - call RegPack(Buf, InData%CTSS) - call RegPack(Buf, allocated(InData%DHNodes)) - if (allocated(InData%DHNodes)) then - call RegPackBounds(Buf, 1, lbound(InData%DHNodes, kind=B8Ki), ubound(InData%DHNodes, kind=B8Ki)) - call RegPack(Buf, InData%DHNodes) - end if - call RegPack(Buf, allocated(InData%HNodes)) - if (allocated(InData%HNodes)) then - call RegPackBounds(Buf, 1, lbound(InData%HNodes, kind=B8Ki), ubound(InData%HNodes, kind=B8Ki)) - call RegPack(Buf, InData%HNodes) - end if - call RegPack(Buf, allocated(InData%HNodesNorm)) - if (allocated(InData%HNodesNorm)) then - call RegPackBounds(Buf, 1, lbound(InData%HNodesNorm, kind=B8Ki), ubound(InData%HNodesNorm, kind=B8Ki)) - call RegPack(Buf, InData%HNodesNorm) - end if - call RegPack(Buf, InData%KTFA) - call RegPack(Buf, InData%KTSS) - call RegPack(Buf, allocated(InData%MassT)) - if (allocated(InData%MassT)) then - call RegPackBounds(Buf, 1, lbound(InData%MassT, kind=B8Ki), ubound(InData%MassT, kind=B8Ki)) - call RegPack(Buf, InData%MassT) - end if - call RegPack(Buf, allocated(InData%StiffTSS)) - if (allocated(InData%StiffTSS)) then - call RegPackBounds(Buf, 1, lbound(InData%StiffTSS, kind=B8Ki), ubound(InData%StiffTSS, kind=B8Ki)) - call RegPack(Buf, InData%StiffTSS) - end if - call RegPack(Buf, allocated(InData%TwrFASF)) - if (allocated(InData%TwrFASF)) then - call RegPackBounds(Buf, 3, lbound(InData%TwrFASF, kind=B8Ki), ubound(InData%TwrFASF, kind=B8Ki)) - call RegPack(Buf, InData%TwrFASF) - end if - call RegPack(Buf, InData%TwrFlexL) - call RegPack(Buf, allocated(InData%TwrSSSF)) - if (allocated(InData%TwrSSSF)) then - call RegPackBounds(Buf, 3, lbound(InData%TwrSSSF, kind=B8Ki), ubound(InData%TwrSSSF, kind=B8Ki)) - call RegPack(Buf, InData%TwrSSSF) - end if - call RegPack(Buf, InData%TTopNode) - call RegPack(Buf, InData%TwrNodes) - call RegPack(Buf, InData%MHK) - call RegPack(Buf, allocated(InData%StiffTFA)) - if (allocated(InData%StiffTFA)) then - call RegPackBounds(Buf, 1, lbound(InData%StiffTFA, kind=B8Ki), ubound(InData%StiffTFA, kind=B8Ki)) - call RegPack(Buf, InData%StiffTFA) - end if - call RegPack(Buf, InData%AtfaIner) - call RegPack(Buf, allocated(InData%BldCG)) - if (allocated(InData%BldCG)) then - call RegPackBounds(Buf, 1, lbound(InData%BldCG, kind=B8Ki), ubound(InData%BldCG, kind=B8Ki)) - call RegPack(Buf, InData%BldCG) - end if - call RegPack(Buf, allocated(InData%BldMass)) - if (allocated(InData%BldMass)) then - call RegPackBounds(Buf, 1, lbound(InData%BldMass, kind=B8Ki), ubound(InData%BldMass, kind=B8Ki)) - call RegPack(Buf, InData%BldMass) - end if - call RegPack(Buf, InData%BoomMass) - call RegPack(Buf, allocated(InData%FirstMom)) - if (allocated(InData%FirstMom)) then - call RegPackBounds(Buf, 1, lbound(InData%FirstMom, kind=B8Ki), ubound(InData%FirstMom, kind=B8Ki)) - call RegPack(Buf, InData%FirstMom) - end if - call RegPack(Buf, InData%GenIner) - call RegPack(Buf, InData%Hubg1Iner) - call RegPack(Buf, InData%Hubg2Iner) - call RegPack(Buf, InData%HubMass) - call RegPack(Buf, InData%Nacd2Iner) - call RegPack(Buf, InData%NacMass) - call RegPack(Buf, InData%PtfmMass) - call RegPack(Buf, InData%PtfmPIner) - call RegPack(Buf, InData%PtfmRIner) - call RegPack(Buf, InData%PtfmYIner) - call RegPack(Buf, InData%RFrlMass) - call RegPack(Buf, InData%RotIner) - call RegPack(Buf, InData%RotMass) - call RegPack(Buf, InData%RrfaIner) - call RegPack(Buf, allocated(InData%SecondMom)) - if (allocated(InData%SecondMom)) then - call RegPackBounds(Buf, 1, lbound(InData%SecondMom, kind=B8Ki), ubound(InData%SecondMom, kind=B8Ki)) - call RegPack(Buf, InData%SecondMom) - end if - call RegPack(Buf, InData%TFinMass) - call RegPack(Buf, InData%TFrlIner) - call RegPack(Buf, allocated(InData%TipMass)) - if (allocated(InData%TipMass)) then - call RegPackBounds(Buf, 1, lbound(InData%TipMass, kind=B8Ki), ubound(InData%TipMass, kind=B8Ki)) - call RegPack(Buf, InData%TipMass) - end if - call RegPack(Buf, InData%TurbMass) - call RegPack(Buf, InData%TwrMass) - call RegPack(Buf, InData%TwrTpMass) - call RegPack(Buf, InData%YawBrMass) - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, allocated(InData%PitchAxis)) - if (allocated(InData%PitchAxis)) then - call RegPackBounds(Buf, 2, lbound(InData%PitchAxis, kind=B8Ki), ubound(InData%PitchAxis, kind=B8Ki)) - call RegPack(Buf, InData%PitchAxis) - end if - call RegPack(Buf, allocated(InData%AeroTwst)) - if (allocated(InData%AeroTwst)) then - call RegPackBounds(Buf, 1, lbound(InData%AeroTwst, kind=B8Ki), ubound(InData%AeroTwst, kind=B8Ki)) - call RegPack(Buf, InData%AeroTwst) - end if - call RegPack(Buf, allocated(InData%AxRedBld)) - if (allocated(InData%AxRedBld)) then - call RegPackBounds(Buf, 4, lbound(InData%AxRedBld, kind=B8Ki), ubound(InData%AxRedBld, kind=B8Ki)) - call RegPack(Buf, InData%AxRedBld) - end if - call RegPack(Buf, allocated(InData%BldEDamp)) - if (allocated(InData%BldEDamp)) then - call RegPackBounds(Buf, 2, lbound(InData%BldEDamp, kind=B8Ki), ubound(InData%BldEDamp, kind=B8Ki)) - call RegPack(Buf, InData%BldEDamp) - end if - call RegPack(Buf, allocated(InData%BldFDamp)) - if (allocated(InData%BldFDamp)) then - call RegPackBounds(Buf, 2, lbound(InData%BldFDamp, kind=B8Ki), ubound(InData%BldFDamp, kind=B8Ki)) - call RegPack(Buf, InData%BldFDamp) - end if - call RegPack(Buf, InData%BldFlexL) - call RegPack(Buf, allocated(InData%CAeroTwst)) - if (allocated(InData%CAeroTwst)) then - call RegPackBounds(Buf, 1, lbound(InData%CAeroTwst, kind=B8Ki), ubound(InData%CAeroTwst, kind=B8Ki)) - call RegPack(Buf, InData%CAeroTwst) - end if - call RegPack(Buf, allocated(InData%CBE)) - if (allocated(InData%CBE)) then - call RegPackBounds(Buf, 3, lbound(InData%CBE, kind=B8Ki), ubound(InData%CBE, kind=B8Ki)) - call RegPack(Buf, InData%CBE) - end if - call RegPack(Buf, allocated(InData%CBF)) - if (allocated(InData%CBF)) then - call RegPackBounds(Buf, 3, lbound(InData%CBF, kind=B8Ki), ubound(InData%CBF, kind=B8Ki)) - call RegPack(Buf, InData%CBF) - end if - call RegPack(Buf, allocated(InData%Chord)) - if (allocated(InData%Chord)) then - call RegPackBounds(Buf, 1, lbound(InData%Chord, kind=B8Ki), ubound(InData%Chord, kind=B8Ki)) - call RegPack(Buf, InData%Chord) - end if - call RegPack(Buf, allocated(InData%CThetaS)) - if (allocated(InData%CThetaS)) then - call RegPackBounds(Buf, 2, lbound(InData%CThetaS, kind=B8Ki), ubound(InData%CThetaS, kind=B8Ki)) - call RegPack(Buf, InData%CThetaS) - end if - call RegPack(Buf, allocated(InData%DRNodes)) - if (allocated(InData%DRNodes)) then - call RegPackBounds(Buf, 1, lbound(InData%DRNodes, kind=B8Ki), ubound(InData%DRNodes, kind=B8Ki)) - call RegPack(Buf, InData%DRNodes) - end if - call RegPack(Buf, allocated(InData%FStTunr)) - if (allocated(InData%FStTunr)) then - call RegPackBounds(Buf, 2, lbound(InData%FStTunr, kind=B8Ki), ubound(InData%FStTunr, kind=B8Ki)) - call RegPack(Buf, InData%FStTunr) - end if - call RegPack(Buf, allocated(InData%KBE)) - if (allocated(InData%KBE)) then - call RegPackBounds(Buf, 3, lbound(InData%KBE, kind=B8Ki), ubound(InData%KBE, kind=B8Ki)) - call RegPack(Buf, InData%KBE) - end if - call RegPack(Buf, allocated(InData%KBF)) - if (allocated(InData%KBF)) then - call RegPackBounds(Buf, 3, lbound(InData%KBF, kind=B8Ki), ubound(InData%KBF, kind=B8Ki)) - call RegPack(Buf, InData%KBF) - end if - call RegPack(Buf, allocated(InData%MassB)) - if (allocated(InData%MassB)) then - call RegPackBounds(Buf, 2, lbound(InData%MassB, kind=B8Ki), ubound(InData%MassB, kind=B8Ki)) - call RegPack(Buf, InData%MassB) - end if - call RegPack(Buf, allocated(InData%RNodes)) - if (allocated(InData%RNodes)) then - call RegPackBounds(Buf, 1, lbound(InData%RNodes, kind=B8Ki), ubound(InData%RNodes, kind=B8Ki)) - call RegPack(Buf, InData%RNodes) - end if - call RegPack(Buf, allocated(InData%RNodesNorm)) - if (allocated(InData%RNodesNorm)) then - call RegPackBounds(Buf, 1, lbound(InData%RNodesNorm, kind=B8Ki), ubound(InData%RNodesNorm, kind=B8Ki)) - call RegPack(Buf, InData%RNodesNorm) - end if - call RegPack(Buf, allocated(InData%rSAerCenn1)) - if (allocated(InData%rSAerCenn1)) then - call RegPackBounds(Buf, 2, lbound(InData%rSAerCenn1, kind=B8Ki), ubound(InData%rSAerCenn1, kind=B8Ki)) - call RegPack(Buf, InData%rSAerCenn1) - end if - call RegPack(Buf, allocated(InData%rSAerCenn2)) - if (allocated(InData%rSAerCenn2)) then - call RegPackBounds(Buf, 2, lbound(InData%rSAerCenn2, kind=B8Ki), ubound(InData%rSAerCenn2, kind=B8Ki)) - call RegPack(Buf, InData%rSAerCenn2) - end if - call RegPack(Buf, allocated(InData%SAeroTwst)) - if (allocated(InData%SAeroTwst)) then - call RegPackBounds(Buf, 1, lbound(InData%SAeroTwst, kind=B8Ki), ubound(InData%SAeroTwst, kind=B8Ki)) - call RegPack(Buf, InData%SAeroTwst) - end if - call RegPack(Buf, allocated(InData%StiffBE)) - if (allocated(InData%StiffBE)) then - call RegPackBounds(Buf, 2, lbound(InData%StiffBE, kind=B8Ki), ubound(InData%StiffBE, kind=B8Ki)) - call RegPack(Buf, InData%StiffBE) - end if - call RegPack(Buf, allocated(InData%StiffBF)) - if (allocated(InData%StiffBF)) then - call RegPackBounds(Buf, 2, lbound(InData%StiffBF, kind=B8Ki), ubound(InData%StiffBF, kind=B8Ki)) - call RegPack(Buf, InData%StiffBF) - end if - call RegPack(Buf, allocated(InData%SThetaS)) - if (allocated(InData%SThetaS)) then - call RegPackBounds(Buf, 2, lbound(InData%SThetaS, kind=B8Ki), ubound(InData%SThetaS, kind=B8Ki)) - call RegPack(Buf, InData%SThetaS) - end if - call RegPack(Buf, allocated(InData%ThetaS)) - if (allocated(InData%ThetaS)) then - call RegPackBounds(Buf, 2, lbound(InData%ThetaS, kind=B8Ki), ubound(InData%ThetaS, kind=B8Ki)) - call RegPack(Buf, InData%ThetaS) - end if - call RegPack(Buf, allocated(InData%TwistedSF)) - if (allocated(InData%TwistedSF)) then - call RegPackBounds(Buf, 5, lbound(InData%TwistedSF, kind=B8Ki), ubound(InData%TwistedSF, kind=B8Ki)) - call RegPack(Buf, InData%TwistedSF) - end if - call RegPack(Buf, allocated(InData%BldFl1Sh)) - if (allocated(InData%BldFl1Sh)) then - call RegPackBounds(Buf, 2, lbound(InData%BldFl1Sh, kind=B8Ki), ubound(InData%BldFl1Sh, kind=B8Ki)) - call RegPack(Buf, InData%BldFl1Sh) - end if - call RegPack(Buf, allocated(InData%BldFl2Sh)) - if (allocated(InData%BldFl2Sh)) then - call RegPackBounds(Buf, 2, lbound(InData%BldFl2Sh, kind=B8Ki), ubound(InData%BldFl2Sh, kind=B8Ki)) - call RegPack(Buf, InData%BldFl2Sh) - end if - call RegPack(Buf, allocated(InData%BldEdgSh)) - if (allocated(InData%BldEdgSh)) then - call RegPackBounds(Buf, 2, lbound(InData%BldEdgSh, kind=B8Ki), ubound(InData%BldEdgSh, kind=B8Ki)) - call RegPack(Buf, InData%BldEdgSh) - end if - call RegPack(Buf, allocated(InData%FreqBE)) - if (allocated(InData%FreqBE)) then - call RegPackBounds(Buf, 3, lbound(InData%FreqBE, kind=B8Ki), ubound(InData%FreqBE, kind=B8Ki)) - call RegPack(Buf, InData%FreqBE) - end if - call RegPack(Buf, allocated(InData%FreqBF)) - if (allocated(InData%FreqBF)) then - call RegPackBounds(Buf, 3, lbound(InData%FreqBF, kind=B8Ki), ubound(InData%FreqBF, kind=B8Ki)) - call RegPack(Buf, InData%FreqBF) - end if - call RegPack(Buf, InData%FreqTFA) - call RegPack(Buf, InData%FreqTSS) - call RegPack(Buf, InData%TeetCDmp) - call RegPack(Buf, InData%TeetDmp) - call RegPack(Buf, InData%TeetDmpP) - call RegPack(Buf, InData%TeetHSSp) - call RegPack(Buf, InData%TeetHStP) - call RegPack(Buf, InData%TeetSSSp) - call RegPack(Buf, InData%TeetSStP) - call RegPack(Buf, InData%TeetMod) - call RegPack(Buf, InData%TFrlDmp) - call RegPack(Buf, InData%TFrlDSDmp) - call RegPack(Buf, InData%TFrlDSDP) - call RegPack(Buf, InData%TFrlDSSP) - call RegPack(Buf, InData%TFrlDSSpr) - call RegPack(Buf, InData%TFrlSpr) - call RegPack(Buf, InData%TFrlUSDmp) - call RegPack(Buf, InData%TFrlUSDP) - call RegPack(Buf, InData%TFrlUSSP) - call RegPack(Buf, InData%TFrlUSSpr) - call RegPack(Buf, InData%TFrlMod) - call RegPack(Buf, InData%RFrlDmp) - call RegPack(Buf, InData%RFrlDSDmp) - call RegPack(Buf, InData%RFrlDSDP) - call RegPack(Buf, InData%RFrlDSSP) - call RegPack(Buf, InData%RFrlDSSpr) - call RegPack(Buf, InData%RFrlSpr) - call RegPack(Buf, InData%RFrlUSDmp) - call RegPack(Buf, InData%RFrlUSDP) - call RegPack(Buf, InData%RFrlUSSP) - call RegPack(Buf, InData%RFrlUSSpr) - call RegPack(Buf, InData%RFrlMod) - call RegPack(Buf, InData%ShftGagL) - call RegPack(Buf, InData%BldGagNd) - call RegPack(Buf, InData%TwrGagNd) - call RegPack(Buf, InData%TStart) - call RegPack(Buf, InData%DTTorDmp) - call RegPack(Buf, InData%DTTorSpr) - call RegPack(Buf, InData%GBRatio) - call RegPack(Buf, InData%GBoxEff) - call RegPack(Buf, InData%RotSpeed) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, allocated(InData%BElmntMass)) - if (allocated(InData%BElmntMass)) then - call RegPackBounds(Buf, 2, lbound(InData%BElmntMass, kind=B8Ki), ubound(InData%BElmntMass, kind=B8Ki)) - call RegPack(Buf, InData%BElmntMass) - end if - call RegPack(Buf, allocated(InData%TElmntMass)) - if (allocated(InData%TElmntMass)) then - call RegPackBounds(Buf, 1, lbound(InData%TElmntMass, kind=B8Ki), ubound(InData%TElmntMass, kind=B8Ki)) - call RegPack(Buf, InData%TElmntMass) - end if - call RegPack(Buf, InData%method) - call RegPack(Buf, InData%PtfmCMxt) - call RegPack(Buf, InData%PtfmCMyt) - call RegPack(Buf, InData%BD4Blades) - call RegPack(Buf, InData%UseAD14) - call RegPack(Buf, InData%BldNd_NumOuts) - call RegPack(Buf, InData%BldNd_TotNumOuts) - call RegPack(Buf, allocated(InData%BldNd_OutParam)) - if (allocated(InData%BldNd_OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%BldNd_OutParam, kind=B8Ki), ubound(InData%BldNd_OutParam, kind=B8Ki)) - LB(1:1) = lbound(InData%BldNd_OutParam, kind=B8Ki) - UB(1:1) = ubound(InData%BldNd_OutParam, kind=B8Ki) - do i1 = LB(1), UB(1) - call NWTC_Library_PackOutParmType(Buf, InData%BldNd_OutParam(i1)) - end do - end if - call RegPack(Buf, InData%BldNd_BladesOut) - call RegPack(Buf, allocated(InData%Jac_u_indx)) - if (allocated(InData%Jac_u_indx)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_u_indx, kind=B8Ki), ubound(InData%Jac_u_indx, kind=B8Ki)) - call RegPack(Buf, InData%Jac_u_indx) - end if - call RegPack(Buf, allocated(InData%du)) - if (allocated(InData%du)) then - call RegPackBounds(Buf, 1, lbound(InData%du, kind=B8Ki), ubound(InData%du, kind=B8Ki)) - call RegPack(Buf, InData%du) - end if - call RegPack(Buf, allocated(InData%dx)) - if (allocated(InData%dx)) then - call RegPackBounds(Buf, 1, lbound(InData%dx, kind=B8Ki), ubound(InData%dx, kind=B8Ki)) - call RegPack(Buf, InData%dx) - end if - call RegPack(Buf, InData%Jac_ny) - call RegPack(Buf, InData%CompAeroMaps) - call RegPack(Buf, InData%NumExtendedInputs) - call RegPack(Buf, InData%NumBl_Lin) - call RegPack(Buf, InData%NActvVelDOF_Lin) - call RegPack(Buf, InData%NActvDOF_Lin) - call RegPack(Buf, InData%NActvDOF_Stride) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine ED_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf - type(ED_ParameterType), intent(inout) :: OutData - character(*), parameter :: RoutineName = 'ED_UnPackParam' - integer(B8Ki) :: i1, i2, i3, i4, i5 - integer(B8Ki) :: LB(5), UB(5) - integer(IntKi) :: stat - logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DT24) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BldNodes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TipNode) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwoPiNB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NAug) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NPH) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PH)) deallocate(OutData%PH) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PH(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PH.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PH) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NPM) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PM)) deallocate(OutData%PM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PM(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PM) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DOF_Flag)) deallocate(OutData%DOF_Flag) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DOF_Flag(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DOF_Flag.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DOF_Flag) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DOF_Desc)) deallocate(OutData%DOF_Desc) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DOF_Desc(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DOF_Desc.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DOF_Desc) - if (RegCheckErr(Buf, RoutineName)) return - end if - call ED_UnpackActiveDOFs(Buf, OutData%DOFs) ! DOFs - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NBlGages) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NTwGages) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutParam)) deallocate(OutData%OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutParam(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - do i1 = LB(1), UB(1) - call NWTC_Library_UnpackOutParmType(Buf, OutData%OutParam(i1)) ! OutParam - end do - end if - call RegUnpack(Buf, OutData%Delim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AvgNrmTpRd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AzimB1Up) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CosDel3) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%CosPreC)) deallocate(OutData%CosPreC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CosPreC(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CosPreC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CosPreC) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%CRFrlSkew) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CRFrlSkw2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CRFrlTilt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CRFrlTlt2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CShftSkew) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CShftTilt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CSRFrlSkw) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CSRFrlTlt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CSTFrlSkw) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CSTFrlTlt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CTFrlSkew) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CTFrlSkw2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CTFrlTilt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CTFrlTlt2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubHt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubCM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubRad) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacCMxn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacCMyn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacCMzn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OverHang) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ProjArea) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmRefzt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RefTwrHt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlPnt_n) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rVDxn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rVDyn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rVDzn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rVIMUxn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rVIMUyn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rVIMUzn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rVPxn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rVPyn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rVPzn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rWIxn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rWIyn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rWIzn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rWJxn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rWJyn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rWJzn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rZT0zt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rZYzt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SinDel3) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%SinPreC)) deallocate(OutData%SinPreC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SinPreC(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SinPreC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SinPreC) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%SRFrlSkew) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SRFrlSkw2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SRFrlTilt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SRFrlTlt2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SShftSkew) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SShftTilt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%STFrlSkew) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%STFrlSkw2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%STFrlTilt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%STFrlTlt2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlPnt_n) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TipRad) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TowerHt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TowerBsHt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UndSling) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBl) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%AxRedTFA)) deallocate(OutData%AxRedTFA) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AxRedTFA(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AxRedTFA.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AxRedTFA) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AxRedTSS)) deallocate(OutData%AxRedTSS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AxRedTSS(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AxRedTSS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AxRedTSS) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%CTFA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CTSS) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%DHNodes)) deallocate(OutData%DHNodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DHNodes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DHNodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DHNodes) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%HNodes)) deallocate(OutData%HNodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%HNodes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%HNodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%HNodes) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%HNodesNorm)) deallocate(OutData%HNodesNorm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%HNodesNorm(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%HNodesNorm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%HNodesNorm) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%KTFA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%KTSS) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%MassT)) deallocate(OutData%MassT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MassT(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MassT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MassT) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%StiffTSS)) deallocate(OutData%StiffTSS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StiffTSS(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StiffTSS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StiffTSS) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TwrFASF)) deallocate(OutData%TwrFASF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrFASF(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrFASF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrFASF) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%TwrFlexL) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TwrSSSF)) deallocate(OutData%TwrSSSF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrSSSF(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrSSSF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrSSSF) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%TTopNode) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrNodes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MHK) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%StiffTFA)) deallocate(OutData%StiffTFA) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StiffTFA(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StiffTFA.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StiffTFA) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%AtfaIner) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BldCG)) deallocate(OutData%BldCG) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldCG(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldCG.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldCG) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BldMass)) deallocate(OutData%BldMass) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldMass(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldMass.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldMass) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%BoomMass) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%FirstMom)) deallocate(OutData%FirstMom) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FirstMom(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FirstMom.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FirstMom) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%GenIner) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Hubg1Iner) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Hubg2Iner) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Nacd2Iner) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmPIner) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmRIner) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmYIner) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotIner) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RrfaIner) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%SecondMom)) deallocate(OutData%SecondMom) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SecondMom(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SecondMom.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SecondMom) - if (RegCheckErr(Buf, RoutineName)) return + deallocate(ParamData%CBE) end if - call RegUnpack(Buf, OutData%TFinMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlIner) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TipMass)) deallocate(OutData%TipMass) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TipMass(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TipMass.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TipMass) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%TurbMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrTpMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawBrMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PitchAxis)) deallocate(OutData%PitchAxis) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PitchAxis(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PitchAxis.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PitchAxis) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%CBF)) then + deallocate(ParamData%CBF) end if - if (allocated(OutData%AeroTwst)) deallocate(OutData%AeroTwst) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AeroTwst(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AeroTwst.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AeroTwst) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%Chord)) then + deallocate(ParamData%Chord) end if - if (allocated(OutData%AxRedBld)) deallocate(OutData%AxRedBld) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AxRedBld(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AxRedBld.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AxRedBld) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%CThetaS)) then + deallocate(ParamData%CThetaS) end if - if (allocated(OutData%BldEDamp)) deallocate(OutData%BldEDamp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldEDamp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldEDamp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldEDamp) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%DRNodes)) then + deallocate(ParamData%DRNodes) end if - if (allocated(OutData%BldFDamp)) deallocate(OutData%BldFDamp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldFDamp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldFDamp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldFDamp) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%FStTunr)) then + deallocate(ParamData%FStTunr) end if - call RegUnpack(Buf, OutData%BldFlexL) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%CAeroTwst)) deallocate(OutData%CAeroTwst) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CAeroTwst(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CAeroTwst.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CAeroTwst) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%KBE)) then + deallocate(ParamData%KBE) end if - if (allocated(OutData%CBE)) deallocate(OutData%CBE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CBE(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CBE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CBE) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%KBF)) then + deallocate(ParamData%KBF) end if - if (allocated(OutData%CBF)) deallocate(OutData%CBF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CBF(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CBF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CBF) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%MassB)) then + deallocate(ParamData%MassB) end if - if (allocated(OutData%Chord)) deallocate(OutData%Chord) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Chord(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Chord.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Chord) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%RNodes)) then + deallocate(ParamData%RNodes) end if - if (allocated(OutData%CThetaS)) deallocate(OutData%CThetaS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CThetaS(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CThetaS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CThetaS) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%RNodesNorm)) then + deallocate(ParamData%RNodesNorm) end if - if (allocated(OutData%DRNodes)) deallocate(OutData%DRNodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DRNodes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DRNodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DRNodes) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%rSAerCenn1)) then + deallocate(ParamData%rSAerCenn1) end if - if (allocated(OutData%FStTunr)) deallocate(OutData%FStTunr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FStTunr(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FStTunr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FStTunr) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%rSAerCenn2)) then + deallocate(ParamData%rSAerCenn2) end if - if (allocated(OutData%KBE)) deallocate(OutData%KBE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%KBE(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%KBE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%KBE) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%SAeroTwst)) then + deallocate(ParamData%SAeroTwst) end if - if (allocated(OutData%KBF)) deallocate(OutData%KBF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%KBF(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%KBF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%KBF) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%StiffBE)) then + deallocate(ParamData%StiffBE) end if - if (allocated(OutData%MassB)) deallocate(OutData%MassB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MassB(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MassB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MassB) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%StiffBF)) then + deallocate(ParamData%StiffBF) end if - if (allocated(OutData%RNodes)) deallocate(OutData%RNodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RNodes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RNodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RNodes) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%SThetaS)) then + deallocate(ParamData%SThetaS) end if - if (allocated(OutData%RNodesNorm)) deallocate(OutData%RNodesNorm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RNodesNorm(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RNodesNorm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RNodesNorm) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%ThetaS)) then + deallocate(ParamData%ThetaS) end if - if (allocated(OutData%rSAerCenn1)) deallocate(OutData%rSAerCenn1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rSAerCenn1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rSAerCenn1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rSAerCenn1) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%TwistedSF)) then + deallocate(ParamData%TwistedSF) end if - if (allocated(OutData%rSAerCenn2)) deallocate(OutData%rSAerCenn2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rSAerCenn2(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rSAerCenn2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rSAerCenn2) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%BldFl1Sh)) then + deallocate(ParamData%BldFl1Sh) end if - if (allocated(OutData%SAeroTwst)) deallocate(OutData%SAeroTwst) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SAeroTwst(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SAeroTwst.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SAeroTwst) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%BldFl2Sh)) then + deallocate(ParamData%BldFl2Sh) end if - if (allocated(OutData%StiffBE)) deallocate(OutData%StiffBE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StiffBE(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StiffBE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StiffBE) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%BldEdgSh)) then + deallocate(ParamData%BldEdgSh) end if - if (allocated(OutData%StiffBF)) deallocate(OutData%StiffBF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StiffBF(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StiffBF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StiffBF) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%FreqBE)) then + deallocate(ParamData%FreqBE) end if - if (allocated(OutData%SThetaS)) deallocate(OutData%SThetaS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SThetaS(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SThetaS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SThetaS) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%FreqBF)) then + deallocate(ParamData%FreqBF) end if - if (allocated(OutData%ThetaS)) deallocate(OutData%ThetaS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ThetaS(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ThetaS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ThetaS) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%BElmntMass)) then + deallocate(ParamData%BElmntMass) end if - if (allocated(OutData%TwistedSF)) deallocate(OutData%TwistedSF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 5, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwistedSF(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwistedSF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwistedSF) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%TElmntMass)) then + deallocate(ParamData%TElmntMass) end if - if (allocated(OutData%BldFl1Sh)) deallocate(OutData%BldFl1Sh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldFl1Sh(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldFl1Sh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldFl1Sh) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%BldNd_OutParam)) then + LB(1:1) = lbound(ParamData%BldNd_OutParam, kind=B8Ki) + UB(1:1) = ubound(ParamData%BldNd_OutParam, kind=B8Ki) + do i1 = LB(1), UB(1) + call NWTC_Library_DestroyOutParmType(ParamData%BldNd_OutParam(i1), ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + end do + deallocate(ParamData%BldNd_OutParam) end if - if (allocated(OutData%BldFl2Sh)) deallocate(OutData%BldFl2Sh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldFl2Sh(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldFl2Sh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldFl2Sh) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%Jac_u_indx)) then + deallocate(ParamData%Jac_u_indx) end if - if (allocated(OutData%BldEdgSh)) deallocate(OutData%BldEdgSh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldEdgSh(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldEdgSh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BldEdgSh) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%du)) then + deallocate(ParamData%du) end if - if (allocated(OutData%FreqBE)) deallocate(OutData%FreqBE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FreqBE(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FreqBE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FreqBE) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ParamData%dx)) then + deallocate(ParamData%dx) end if - if (allocated(OutData%FreqBF)) deallocate(OutData%FreqBF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FreqBF(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FreqBF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FreqBF) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%FreqTFA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FreqTSS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetCDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetDmpP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetHSSp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetHStP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetSSSp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetSStP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TeetMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlDSDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlDSDP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlDSSP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlDSSpr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlSpr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlUSDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlUSDP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlUSSP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlUSSpr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TFrlMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlDSDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlDSDP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlDSSP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlDSSpr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlSpr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlUSDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlUSDP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlUSSP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlUSSpr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RFrlMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ShftGagL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BldGagNd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrGagNd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TStart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DTTorDmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DTTorSpr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GBRatio) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GBoxEff) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BElmntMass)) deallocate(OutData%BElmntMass) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BElmntMass(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BElmntMass.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BElmntMass) - if (RegCheckErr(Buf, RoutineName)) return +end subroutine + +subroutine ED_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF + type(ED_ParameterType), intent(in) :: InData + character(*), parameter :: RoutineName = 'ED_PackParam' + integer(B8Ki) :: i1, i2, i3, i4, i5 + integer(B8Ki) :: LB(5), UB(5) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT) + call RegPack(RF, InData%DT24) + call RegPack(RF, InData%BldNodes) + call RegPack(RF, InData%TipNode) + call RegPack(RF, InData%NDOF) + call RegPack(RF, InData%TwoPiNB) + call RegPack(RF, InData%NAug) + call RegPack(RF, InData%NPH) + call RegPackAlloc(RF, InData%PH) + call RegPack(RF, InData%NPM) + call RegPackAlloc(RF, InData%PM) + call RegPackAlloc(RF, InData%DOF_Flag) + call RegPackAlloc(RF, InData%DOF_Desc) + call ED_PackActiveDOFs(RF, InData%DOFs) + call RegPack(RF, InData%NumOuts) + call RegPack(RF, InData%OutFmt) + call RegPack(RF, InData%NBlGages) + call RegPack(RF, InData%NTwGages) + call RegPack(RF, allocated(InData%OutParam)) + if (allocated(InData%OutParam)) then + call RegPackBounds(RF, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) + LB(1:1) = lbound(InData%OutParam, kind=B8Ki) + UB(1:1) = ubound(InData%OutParam, kind=B8Ki) + do i1 = LB(1), UB(1) + call NWTC_Library_PackOutParmType(RF, InData%OutParam(i1)) + end do end if - if (allocated(OutData%TElmntMass)) deallocate(OutData%TElmntMass) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TElmntMass(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TElmntMass.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TElmntMass) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%method) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmCMxt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmCMyt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BD4Blades) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UseAD14) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BldNd_NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BldNd_TotNumOuts) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BldNd_OutParam)) deallocate(OutData%BldNd_OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BldNd_OutParam(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldNd_OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if + call RegPack(RF, InData%Delim) + call RegPack(RF, InData%AvgNrmTpRd) + call RegPack(RF, InData%AzimB1Up) + call RegPack(RF, InData%CosDel3) + call RegPackAlloc(RF, InData%CosPreC) + call RegPack(RF, InData%CRFrlSkew) + call RegPack(RF, InData%CRFrlSkw2) + call RegPack(RF, InData%CRFrlTilt) + call RegPack(RF, InData%CRFrlTlt2) + call RegPack(RF, InData%CShftSkew) + call RegPack(RF, InData%CShftTilt) + call RegPack(RF, InData%CSRFrlSkw) + call RegPack(RF, InData%CSRFrlTlt) + call RegPack(RF, InData%CSTFrlSkw) + call RegPack(RF, InData%CSTFrlTlt) + call RegPack(RF, InData%CTFrlSkew) + call RegPack(RF, InData%CTFrlSkw2) + call RegPack(RF, InData%CTFrlTilt) + call RegPack(RF, InData%CTFrlTlt2) + call RegPack(RF, InData%HubHt) + call RegPack(RF, InData%HubCM) + call RegPack(RF, InData%HubRad) + call RegPack(RF, InData%NacCMxn) + call RegPack(RF, InData%NacCMyn) + call RegPack(RF, InData%NacCMzn) + call RegPack(RF, InData%OverHang) + call RegPack(RF, InData%ProjArea) + call RegPack(RF, InData%PtfmRefzt) + call RegPack(RF, InData%RefTwrHt) + call RegPack(RF, InData%RFrlPnt_n) + call RegPack(RF, InData%rVDxn) + call RegPack(RF, InData%rVDyn) + call RegPack(RF, InData%rVDzn) + call RegPack(RF, InData%rVIMUxn) + call RegPack(RF, InData%rVIMUyn) + call RegPack(RF, InData%rVIMUzn) + call RegPack(RF, InData%rVPxn) + call RegPack(RF, InData%rVPyn) + call RegPack(RF, InData%rVPzn) + call RegPack(RF, InData%rWIxn) + call RegPack(RF, InData%rWIyn) + call RegPack(RF, InData%rWIzn) + call RegPack(RF, InData%rWJxn) + call RegPack(RF, InData%rWJyn) + call RegPack(RF, InData%rWJzn) + call RegPack(RF, InData%rZT0zt) + call RegPack(RF, InData%rZYzt) + call RegPack(RF, InData%SinDel3) + call RegPackAlloc(RF, InData%SinPreC) + call RegPack(RF, InData%SRFrlSkew) + call RegPack(RF, InData%SRFrlSkw2) + call RegPack(RF, InData%SRFrlTilt) + call RegPack(RF, InData%SRFrlTlt2) + call RegPack(RF, InData%SShftSkew) + call RegPack(RF, InData%SShftTilt) + call RegPack(RF, InData%STFrlSkew) + call RegPack(RF, InData%STFrlSkw2) + call RegPack(RF, InData%STFrlTilt) + call RegPack(RF, InData%STFrlTlt2) + call RegPack(RF, InData%TFrlPnt_n) + call RegPack(RF, InData%TipRad) + call RegPack(RF, InData%TowerHt) + call RegPack(RF, InData%TowerBsHt) + call RegPack(RF, InData%UndSling) + call RegPack(RF, InData%NumBl) + call RegPackAlloc(RF, InData%AxRedTFA) + call RegPackAlloc(RF, InData%AxRedTSS) + call RegPack(RF, InData%CTFA) + call RegPack(RF, InData%CTSS) + call RegPackAlloc(RF, InData%DHNodes) + call RegPackAlloc(RF, InData%HNodes) + call RegPackAlloc(RF, InData%HNodesNorm) + call RegPack(RF, InData%KTFA) + call RegPack(RF, InData%KTSS) + call RegPackAlloc(RF, InData%MassT) + call RegPackAlloc(RF, InData%StiffTSS) + call RegPackAlloc(RF, InData%TwrFASF) + call RegPack(RF, InData%TwrFlexL) + call RegPackAlloc(RF, InData%TwrSSSF) + call RegPack(RF, InData%TTopNode) + call RegPack(RF, InData%TwrNodes) + call RegPack(RF, InData%MHK) + call RegPackAlloc(RF, InData%StiffTFA) + call RegPack(RF, InData%AtfaIner) + call RegPackAlloc(RF, InData%BldCG) + call RegPackAlloc(RF, InData%BldMass) + call RegPack(RF, InData%BoomMass) + call RegPackAlloc(RF, InData%FirstMom) + call RegPack(RF, InData%GenIner) + call RegPack(RF, InData%Hubg1Iner) + call RegPack(RF, InData%Hubg2Iner) + call RegPack(RF, InData%HubMass) + call RegPack(RF, InData%Nacd2Iner) + call RegPack(RF, InData%NacMass) + call RegPack(RF, InData%PtfmMass) + call RegPack(RF, InData%PtfmPIner) + call RegPack(RF, InData%PtfmRIner) + call RegPack(RF, InData%PtfmYIner) + call RegPack(RF, InData%RFrlMass) + call RegPack(RF, InData%RotIner) + call RegPack(RF, InData%RotMass) + call RegPack(RF, InData%RrfaIner) + call RegPackAlloc(RF, InData%SecondMom) + call RegPack(RF, InData%TFinMass) + call RegPack(RF, InData%TFrlIner) + call RegPackAlloc(RF, InData%TipMass) + call RegPack(RF, InData%TurbMass) + call RegPack(RF, InData%TwrMass) + call RegPack(RF, InData%TwrTpMass) + call RegPack(RF, InData%YawBrMass) + call RegPack(RF, InData%Gravity) + call RegPackAlloc(RF, InData%PitchAxis) + call RegPackAlloc(RF, InData%AeroTwst) + call RegPackAlloc(RF, InData%AxRedBld) + call RegPackAlloc(RF, InData%BldEDamp) + call RegPackAlloc(RF, InData%BldFDamp) + call RegPack(RF, InData%BldFlexL) + call RegPackAlloc(RF, InData%CAeroTwst) + call RegPackAlloc(RF, InData%CBE) + call RegPackAlloc(RF, InData%CBF) + call RegPackAlloc(RF, InData%Chord) + call RegPackAlloc(RF, InData%CThetaS) + call RegPackAlloc(RF, InData%DRNodes) + call RegPackAlloc(RF, InData%FStTunr) + call RegPackAlloc(RF, InData%KBE) + call RegPackAlloc(RF, InData%KBF) + call RegPackAlloc(RF, InData%MassB) + call RegPackAlloc(RF, InData%RNodes) + call RegPackAlloc(RF, InData%RNodesNorm) + call RegPackAlloc(RF, InData%rSAerCenn1) + call RegPackAlloc(RF, InData%rSAerCenn2) + call RegPackAlloc(RF, InData%SAeroTwst) + call RegPackAlloc(RF, InData%StiffBE) + call RegPackAlloc(RF, InData%StiffBF) + call RegPackAlloc(RF, InData%SThetaS) + call RegPackAlloc(RF, InData%ThetaS) + call RegPackAlloc(RF, InData%TwistedSF) + call RegPackAlloc(RF, InData%BldFl1Sh) + call RegPackAlloc(RF, InData%BldFl2Sh) + call RegPackAlloc(RF, InData%BldEdgSh) + call RegPackAlloc(RF, InData%FreqBE) + call RegPackAlloc(RF, InData%FreqBF) + call RegPack(RF, InData%FreqTFA) + call RegPack(RF, InData%FreqTSS) + call RegPack(RF, InData%TeetCDmp) + call RegPack(RF, InData%TeetDmp) + call RegPack(RF, InData%TeetDmpP) + call RegPack(RF, InData%TeetHSSp) + call RegPack(RF, InData%TeetHStP) + call RegPack(RF, InData%TeetSSSp) + call RegPack(RF, InData%TeetSStP) + call RegPack(RF, InData%TeetMod) + call RegPack(RF, InData%TFrlDmp) + call RegPack(RF, InData%TFrlDSDmp) + call RegPack(RF, InData%TFrlDSDP) + call RegPack(RF, InData%TFrlDSSP) + call RegPack(RF, InData%TFrlDSSpr) + call RegPack(RF, InData%TFrlSpr) + call RegPack(RF, InData%TFrlUSDmp) + call RegPack(RF, InData%TFrlUSDP) + call RegPack(RF, InData%TFrlUSSP) + call RegPack(RF, InData%TFrlUSSpr) + call RegPack(RF, InData%TFrlMod) + call RegPack(RF, InData%RFrlDmp) + call RegPack(RF, InData%RFrlDSDmp) + call RegPack(RF, InData%RFrlDSDP) + call RegPack(RF, InData%RFrlDSSP) + call RegPack(RF, InData%RFrlDSSpr) + call RegPack(RF, InData%RFrlSpr) + call RegPack(RF, InData%RFrlUSDmp) + call RegPack(RF, InData%RFrlUSDP) + call RegPack(RF, InData%RFrlUSSP) + call RegPack(RF, InData%RFrlUSSpr) + call RegPack(RF, InData%RFrlMod) + call RegPack(RF, InData%ShftGagL) + call RegPack(RF, InData%BldGagNd) + call RegPack(RF, InData%TwrGagNd) + call RegPack(RF, InData%TStart) + call RegPack(RF, InData%DTTorDmp) + call RegPack(RF, InData%DTTorSpr) + call RegPack(RF, InData%GBRatio) + call RegPack(RF, InData%GBoxEff) + call RegPack(RF, InData%RotSpeed) + call RegPack(RF, InData%RootName) + call RegPackAlloc(RF, InData%BElmntMass) + call RegPackAlloc(RF, InData%TElmntMass) + call RegPack(RF, InData%method) + call RegPack(RF, InData%PtfmCMxt) + call RegPack(RF, InData%PtfmCMyt) + call RegPack(RF, InData%BD4Blades) + call RegPack(RF, InData%UseAD14) + call RegPack(RF, InData%BldNd_NumOuts) + call RegPack(RF, InData%BldNd_TotNumOuts) + call RegPack(RF, allocated(InData%BldNd_OutParam)) + if (allocated(InData%BldNd_OutParam)) then + call RegPackBounds(RF, 1, lbound(InData%BldNd_OutParam, kind=B8Ki), ubound(InData%BldNd_OutParam, kind=B8Ki)) + LB(1:1) = lbound(InData%BldNd_OutParam, kind=B8Ki) + UB(1:1) = ubound(InData%BldNd_OutParam, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_UnpackOutParmType(Buf, OutData%BldNd_OutParam(i1)) ! BldNd_OutParam + call NWTC_Library_PackOutParmType(RF, InData%BldNd_OutParam(i1)) end do end if - call RegUnpack(Buf, OutData%BldNd_BladesOut) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Jac_u_indx)) deallocate(OutData%Jac_u_indx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%BldNd_BladesOut) + call RegPackAlloc(RF, InData%Jac_u_indx) + call RegPackAlloc(RF, InData%du) + call RegPackAlloc(RF, InData%dx) + call RegPack(RF, InData%Jac_ny) + call RegPack(RF, InData%CompAeroMaps) + call RegPack(RF, InData%NumExtendedInputs) + call RegPack(RF, InData%NumBl_Lin) + call RegPack(RF, InData%NActvVelDOF_Lin) + call RegPack(RF, InData%NActvDOF_Lin) + call RegPack(RF, InData%NActvDOF_Stride) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine ED_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF + type(ED_ParameterType), intent(inout) :: OutData + character(*), parameter :: RoutineName = 'ED_UnPackParam' + integer(B8Ki) :: i1, i2, i3, i4, i5 + integer(B8Ki) :: LB(5), UB(5) + integer(IntKi) :: stat + logical :: IsAllocAssoc + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DT24); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TipNode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwoPiNB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NAug); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NPH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NPM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DOF_Flag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DOF_Desc); if (RegCheckErr(RF, RoutineName)) return + call ED_UnpackActiveDOFs(RF, OutData%DOFs) ! DOFs + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NBlGages); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NTwGages); if (RegCheckErr(RF, RoutineName)) return + if (allocated(OutData%OutParam)) deallocate(OutData%OutParam) + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_u_indx(LB(1):UB(1),LB(2):UB(2)),stat=stat) + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return + allocate(OutData%OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_u_indx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegUnpack(Buf, OutData%Jac_u_indx) - if (RegCheckErr(Buf, RoutineName)) return + do i1 = LB(1), UB(1) + call NWTC_Library_UnpackOutParmType(RF, OutData%OutParam(i1)) ! OutParam + end do end if - if (allocated(OutData%du)) deallocate(OutData%du) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%Delim); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AvgNrmTpRd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AzimB1Up); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CosDel3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CosPreC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CRFrlSkew); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CRFrlSkw2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CRFrlTilt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CRFrlTlt2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CShftSkew); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CShftTilt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CSRFrlSkw); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CSRFrlTlt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CSTFrlSkw); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CSTFrlTlt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CTFrlSkew); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CTFrlSkw2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CTFrlTilt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CTFrlTlt2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubHt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubCM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubRad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacCMxn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacCMyn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacCMzn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OverHang); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ProjArea); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmRefzt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RefTwrHt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlPnt_n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rVDxn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rVDyn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rVDzn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rVIMUxn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rVIMUyn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rVIMUzn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rVPxn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rVPyn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rVPzn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rWIxn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rWIyn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rWIzn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rWJxn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rWJyn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rWJzn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rZT0zt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rZYzt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SinDel3); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SinPreC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SRFrlSkew); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SRFrlSkw2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SRFrlTilt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SRFrlTlt2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SShftSkew); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SShftTilt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%STFrlSkew); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%STFrlSkw2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%STFrlTilt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%STFrlTlt2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlPnt_n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TipRad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TowerHt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TowerBsHt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UndSling); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AxRedTFA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AxRedTSS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CTFA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CTSS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DHNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%HNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%HNodesNorm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%KTFA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%KTSS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MassT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StiffTSS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrFASF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrFlexL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwrSSSF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TTopNode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MHK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StiffTFA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AtfaIner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldCG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BoomMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FirstMom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenIner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Hubg1Iner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Hubg2Iner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Nacd2Iner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmPIner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmRIner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmYIner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotIner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RrfaIner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SecondMom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFinMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlIner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TipMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TurbMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrTpMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawBrMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PitchAxis); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AeroTwst); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AxRedBld); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldEDamp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldFDamp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldFlexL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CAeroTwst); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CBE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CBF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Chord); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CThetaS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DRNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FStTunr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%KBE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%KBF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MassB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RNodesNorm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rSAerCenn1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rSAerCenn2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SAeroTwst); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StiffBE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StiffBF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SThetaS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ThetaS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TwistedSF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldFl1Sh); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldFl2Sh); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BldEdgSh); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FreqBE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FreqBF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FreqTFA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FreqTSS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetCDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetDmpP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetHSSp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetHStP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetSSSp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetSStP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TeetMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlDSDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlDSDP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlDSSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlDSSpr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlSpr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlUSDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlUSDP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlUSSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlUSSpr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TFrlMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlDSDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlDSDP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlDSSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlDSSpr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlSpr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlUSDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlUSDP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlUSSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlUSSpr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RFrlMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ShftGagL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldGagNd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrGagNd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TStart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DTTorDmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DTTorSpr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GBRatio); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GBoxEff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BElmntMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TElmntMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%method); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmCMxt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmCMyt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BD4Blades); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseAD14); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldNd_NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BldNd_TotNumOuts); if (RegCheckErr(RF, RoutineName)) return + if (allocated(OutData%BldNd_OutParam)) deallocate(OutData%BldNd_OutParam) + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%du(LB(1):UB(1)),stat=stat) + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return + allocate(OutData%BldNd_OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%du.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BldNd_OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegUnpack(Buf, OutData%du) - if (RegCheckErr(Buf, RoutineName)) return + do i1 = LB(1), UB(1) + call NWTC_Library_UnpackOutParmType(RF, OutData%BldNd_OutParam(i1)) ! BldNd_OutParam + end do end if - if (allocated(OutData%dx)) deallocate(OutData%dx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dx(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dx) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Jac_ny) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompAeroMaps) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumExtendedInputs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBl_Lin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NActvVelDOF_Lin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NActvDOF_Lin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NActvDOF_Stride) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%BldNd_BladesOut); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_u_indx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%du); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Jac_ny); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompAeroMaps); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumExtendedInputs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBl_Lin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NActvVelDOF_Lin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NActvDOF_Lin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NActvDOF_Stride); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ED_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -10597,109 +6629,69 @@ subroutine ED_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine ED_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(ED_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'ED_PackInput' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%BladePtLoads)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%BladePtLoads)) if (allocated(InData%BladePtLoads)) then - call RegPackBounds(Buf, 1, lbound(InData%BladePtLoads, kind=B8Ki), ubound(InData%BladePtLoads, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BladePtLoads, kind=B8Ki), ubound(InData%BladePtLoads, kind=B8Ki)) LB(1:1) = lbound(InData%BladePtLoads, kind=B8Ki) UB(1:1) = ubound(InData%BladePtLoads, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%BladePtLoads(i1)) + call MeshPack(RF, InData%BladePtLoads(i1)) end do end if - call MeshPack(Buf, InData%PlatformPtMesh) - call MeshPack(Buf, InData%TowerPtLoads) - call MeshPack(Buf, InData%HubPtLoad) - call MeshPack(Buf, InData%NacelleLoads) - call MeshPack(Buf, InData%TFinCMLoads) - call RegPack(Buf, allocated(InData%TwrAddedMass)) - if (allocated(InData%TwrAddedMass)) then - call RegPackBounds(Buf, 3, lbound(InData%TwrAddedMass, kind=B8Ki), ubound(InData%TwrAddedMass, kind=B8Ki)) - call RegPack(Buf, InData%TwrAddedMass) - end if - call RegPack(Buf, InData%PtfmAddedMass) - call RegPack(Buf, allocated(InData%BlPitchCom)) - if (allocated(InData%BlPitchCom)) then - call RegPackBounds(Buf, 1, lbound(InData%BlPitchCom, kind=B8Ki), ubound(InData%BlPitchCom, kind=B8Ki)) - call RegPack(Buf, InData%BlPitchCom) - end if - call RegPack(Buf, InData%YawMom) - call RegPack(Buf, InData%GenTrq) - call RegPack(Buf, InData%HSSBrTrqC) - if (RegCheckErr(Buf, RoutineName)) return + call MeshPack(RF, InData%PlatformPtMesh) + call MeshPack(RF, InData%TowerPtLoads) + call MeshPack(RF, InData%HubPtLoad) + call MeshPack(RF, InData%NacelleLoads) + call MeshPack(RF, InData%TFinCMLoads) + call RegPackAlloc(RF, InData%TwrAddedMass) + call RegPack(RF, InData%PtfmAddedMass) + call RegPackAlloc(RF, InData%BlPitchCom) + call RegPack(RF, InData%YawMom) + call RegPack(RF, InData%GenTrq) + call RegPack(RF, InData%HSSBrTrqC) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ED_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(ED_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ED_UnPackInput' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%BladePtLoads)) deallocate(OutData%BladePtLoads) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BladePtLoads(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladePtLoads.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladePtLoads.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%BladePtLoads(i1)) ! BladePtLoads + call MeshUnpack(RF, OutData%BladePtLoads(i1)) ! BladePtLoads end do end if - call MeshUnpack(Buf, OutData%PlatformPtMesh) ! PlatformPtMesh - call MeshUnpack(Buf, OutData%TowerPtLoads) ! TowerPtLoads - call MeshUnpack(Buf, OutData%HubPtLoad) ! HubPtLoad - call MeshUnpack(Buf, OutData%NacelleLoads) ! NacelleLoads - call MeshUnpack(Buf, OutData%TFinCMLoads) ! TFinCMLoads - if (allocated(OutData%TwrAddedMass)) deallocate(OutData%TwrAddedMass) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TwrAddedMass(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TwrAddedMass.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TwrAddedMass) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%PtfmAddedMass) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BlPitchCom)) deallocate(OutData%BlPitchCom) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlPitchCom(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlPitchCom.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlPitchCom) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%YawMom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenTrq) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HSSBrTrqC) - if (RegCheckErr(Buf, RoutineName)) return + call MeshUnpack(RF, OutData%PlatformPtMesh) ! PlatformPtMesh + call MeshUnpack(RF, OutData%TowerPtLoads) ! TowerPtLoads + call MeshUnpack(RF, OutData%HubPtLoad) ! HubPtLoad + call MeshUnpack(RF, OutData%NacelleLoads) ! NacelleLoads + call MeshUnpack(RF, OutData%TFinCMLoads) ! TFinCMLoads + call RegUnpackAlloc(RF, OutData%TwrAddedMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmAddedMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlPitchCom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawMom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenTrq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HSSBrTrqC); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ED_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -10881,207 +6873,143 @@ subroutine ED_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine ED_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(ED_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'ED_PackOutput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%BladeLn2Mesh)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%BladeLn2Mesh)) if (allocated(InData%BladeLn2Mesh)) then - call RegPackBounds(Buf, 1, lbound(InData%BladeLn2Mesh, kind=B8Ki), ubound(InData%BladeLn2Mesh, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BladeLn2Mesh, kind=B8Ki), ubound(InData%BladeLn2Mesh, kind=B8Ki)) LB(1:1) = lbound(InData%BladeLn2Mesh, kind=B8Ki) UB(1:1) = ubound(InData%BladeLn2Mesh, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%BladeLn2Mesh(i1)) + call MeshPack(RF, InData%BladeLn2Mesh(i1)) end do end if - call MeshPack(Buf, InData%PlatformPtMesh) - call MeshPack(Buf, InData%TowerLn2Mesh) - call MeshPack(Buf, InData%HubPtMotion14) - call MeshPack(Buf, InData%HubPtMotion) - call MeshPack(Buf, InData%BladeRootMotion14) - call RegPack(Buf, allocated(InData%BladeRootMotion)) + call MeshPack(RF, InData%PlatformPtMesh) + call MeshPack(RF, InData%TowerLn2Mesh) + call MeshPack(RF, InData%HubPtMotion14) + call MeshPack(RF, InData%HubPtMotion) + call MeshPack(RF, InData%BladeRootMotion14) + call RegPack(RF, allocated(InData%BladeRootMotion)) if (allocated(InData%BladeRootMotion)) then - call RegPackBounds(Buf, 1, lbound(InData%BladeRootMotion, kind=B8Ki), ubound(InData%BladeRootMotion, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BladeRootMotion, kind=B8Ki), ubound(InData%BladeRootMotion, kind=B8Ki)) LB(1:1) = lbound(InData%BladeRootMotion, kind=B8Ki) UB(1:1) = ubound(InData%BladeRootMotion, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%BladeRootMotion(i1)) + call MeshPack(RF, InData%BladeRootMotion(i1)) end do end if - call MeshPack(Buf, InData%RotorFurlMotion14) - call MeshPack(Buf, InData%NacelleMotion) - call MeshPack(Buf, InData%TowerBaseMotion14) - call MeshPack(Buf, InData%TFinCMMotion) - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - call RegPack(Buf, allocated(InData%BlPitch)) - if (allocated(InData%BlPitch)) then - call RegPackBounds(Buf, 1, lbound(InData%BlPitch, kind=B8Ki), ubound(InData%BlPitch, kind=B8Ki)) - call RegPack(Buf, InData%BlPitch) - end if - call RegPack(Buf, InData%Yaw) - call RegPack(Buf, InData%YawRate) - call RegPack(Buf, InData%LSS_Spd) - call RegPack(Buf, InData%HSS_Spd) - call RegPack(Buf, InData%RotSpeed) - call RegPack(Buf, InData%TwrAccel) - call RegPack(Buf, InData%YawAngle) - call RegPack(Buf, InData%RootMyc) - call RegPack(Buf, InData%YawBrTAxp) - call RegPack(Buf, InData%YawBrTAyp) - call RegPack(Buf, InData%LSSTipPxa) - call RegPack(Buf, InData%RootMxc) - call RegPack(Buf, InData%LSSTipMxa) - call RegPack(Buf, InData%LSSTipMya) - call RegPack(Buf, InData%LSSTipMza) - call RegPack(Buf, InData%LSSTipMys) - call RegPack(Buf, InData%LSSTipMzs) - call RegPack(Buf, InData%YawBrMyn) - call RegPack(Buf, InData%YawBrMzn) - call RegPack(Buf, InData%NcIMURAxs) - call RegPack(Buf, InData%NcIMURAys) - call RegPack(Buf, InData%NcIMURAzs) - call RegPack(Buf, InData%RotPwr) - call RegPack(Buf, InData%LSShftFxa) - call RegPack(Buf, InData%LSShftFys) - call RegPack(Buf, InData%LSShftFzs) - if (RegCheckErr(Buf, RoutineName)) return + call MeshPack(RF, InData%RotorFurlMotion14) + call MeshPack(RF, InData%NacelleMotion) + call MeshPack(RF, InData%TowerBaseMotion14) + call MeshPack(RF, InData%TFinCMMotion) + call RegPackAlloc(RF, InData%WriteOutput) + call RegPackAlloc(RF, InData%BlPitch) + call RegPack(RF, InData%Yaw) + call RegPack(RF, InData%YawRate) + call RegPack(RF, InData%LSS_Spd) + call RegPack(RF, InData%HSS_Spd) + call RegPack(RF, InData%RotSpeed) + call RegPack(RF, InData%TwrAccel) + call RegPack(RF, InData%YawAngle) + call RegPack(RF, InData%RootMyc) + call RegPack(RF, InData%YawBrTAxp) + call RegPack(RF, InData%YawBrTAyp) + call RegPack(RF, InData%LSSTipPxa) + call RegPack(RF, InData%RootMxc) + call RegPack(RF, InData%LSSTipMxa) + call RegPack(RF, InData%LSSTipMya) + call RegPack(RF, InData%LSSTipMza) + call RegPack(RF, InData%LSSTipMys) + call RegPack(RF, InData%LSSTipMzs) + call RegPack(RF, InData%YawBrMyn) + call RegPack(RF, InData%YawBrMzn) + call RegPack(RF, InData%NcIMURAxs) + call RegPack(RF, InData%NcIMURAys) + call RegPack(RF, InData%NcIMURAzs) + call RegPack(RF, InData%RotPwr) + call RegPack(RF, InData%LSShftFxa) + call RegPack(RF, InData%LSShftFys) + call RegPack(RF, InData%LSShftFzs) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ED_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ED_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(ED_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ED_UnPackOutput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%BladeLn2Mesh)) deallocate(OutData%BladeLn2Mesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BladeLn2Mesh(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeLn2Mesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeLn2Mesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%BladeLn2Mesh(i1)) ! BladeLn2Mesh + call MeshUnpack(RF, OutData%BladeLn2Mesh(i1)) ! BladeLn2Mesh end do end if - call MeshUnpack(Buf, OutData%PlatformPtMesh) ! PlatformPtMesh - call MeshUnpack(Buf, OutData%TowerLn2Mesh) ! TowerLn2Mesh - call MeshUnpack(Buf, OutData%HubPtMotion14) ! HubPtMotion14 - call MeshUnpack(Buf, OutData%HubPtMotion) ! HubPtMotion - call MeshUnpack(Buf, OutData%BladeRootMotion14) ! BladeRootMotion14 + call MeshUnpack(RF, OutData%PlatformPtMesh) ! PlatformPtMesh + call MeshUnpack(RF, OutData%TowerLn2Mesh) ! TowerLn2Mesh + call MeshUnpack(RF, OutData%HubPtMotion14) ! HubPtMotion14 + call MeshUnpack(RF, OutData%HubPtMotion) ! HubPtMotion + call MeshUnpack(RF, OutData%BladeRootMotion14) ! BladeRootMotion14 if (allocated(OutData%BladeRootMotion)) deallocate(OutData%BladeRootMotion) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BladeRootMotion(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeRootMotion.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeRootMotion.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%BladeRootMotion(i1)) ! BladeRootMotion + call MeshUnpack(RF, OutData%BladeRootMotion(i1)) ! BladeRootMotion end do end if - call MeshUnpack(Buf, OutData%RotorFurlMotion14) ! RotorFurlMotion14 - call MeshUnpack(Buf, OutData%NacelleMotion) ! NacelleMotion - call MeshUnpack(Buf, OutData%TowerBaseMotion14) ! TowerBaseMotion14 - call MeshUnpack(Buf, OutData%TFinCMMotion) ! TFinCMMotion - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlPitch)) deallocate(OutData%BlPitch) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlPitch(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlPitch.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlPitch) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Yaw) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawRate) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSS_Spd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HSS_Spd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrAccel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawAngle) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootMyc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawBrTAxp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawBrTAyp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipPxa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootMxc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipMxa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipMya) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipMza) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipMys) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipMzs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawBrMyn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawBrMzn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NcIMURAxs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NcIMURAys) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NcIMURAzs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotPwr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSShftFxa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSShftFys) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSShftFzs) - if (RegCheckErr(Buf, RoutineName)) return + call MeshUnpack(RF, OutData%RotorFurlMotion14) ! RotorFurlMotion14 + call MeshUnpack(RF, OutData%NacelleMotion) ! NacelleMotion + call MeshUnpack(RF, OutData%TowerBaseMotion14) ! TowerBaseMotion14 + call MeshUnpack(RF, OutData%TFinCMMotion) ! TFinCMMotion + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlPitch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Yaw); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawRate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSS_Spd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HSS_Spd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrAccel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawAngle); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootMyc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawBrTAxp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawBrTAyp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipPxa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootMxc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipMxa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipMya); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipMza); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipMys); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipMzs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawBrMyn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawBrMzn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NcIMURAxs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NcIMURAys); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NcIMURAzs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotPwr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSShftFxa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSShftFys); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSShftFzs); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ED_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/externalinflow/src/ExternalInflow_Types.f90 b/modules/externalinflow/src/ExternalInflow_Types.f90 index 64783b1eb5..b2abf20b7e 100644 --- a/modules/externalinflow/src/ExternalInflow_Types.f90 +++ b/modules/externalinflow/src/ExternalInflow_Types.f90 @@ -282,43 +282,29 @@ subroutine ExtInfw_DestroyInitInput(InitInputData, ErrStat, ErrMsg) end if end subroutine -subroutine ExtInfw_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtInfw_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtInfw_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'ExtInfw_PackInitInput' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, InData%NumActForcePtsBlade) - call RegPack(Buf, InData%NumActForcePtsTower) - call RegPack(Buf, associated(InData%StructBldRNodes)) - if (associated(InData%StructBldRNodes)) then - call RegPackBounds(Buf, 1, lbound(InData%StructBldRNodes, kind=B8Ki), ubound(InData%StructBldRNodes, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%StructBldRNodes), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%StructBldRNodes) - end if - end if - call RegPack(Buf, associated(InData%StructTwrHNodes)) - if (associated(InData%StructTwrHNodes)) then - call RegPackBounds(Buf, 1, lbound(InData%StructTwrHNodes, kind=B8Ki), ubound(InData%StructTwrHNodes, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%StructTwrHNodes), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%StructTwrHNodes) - end if - end if - call RegPack(Buf, InData%BladeLength) - call RegPack(Buf, InData%TowerHeight) - call RegPack(Buf, InData%TowerBaseHeight) - call RegPack(Buf, InData%NodeClusterType) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%NumActForcePtsBlade) + call RegPack(RF, InData%NumActForcePtsTower) + call RegPackPtr(RF, InData%StructBldRNodes) + call RegPackPtr(RF, InData%StructTwrHNodes) + call RegPack(RF, InData%BladeLength) + call RegPack(RF, InData%TowerHeight) + call RegPack(RF, InData%TowerBaseHeight) + call RegPack(RF, InData%NodeClusterType) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ExtInfw_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtInfw_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtInfw_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtInfw_UnPackInitInput' integer(B8Ki) :: LB(1), UB(1) @@ -326,76 +312,20 @@ subroutine ExtInfw_UnPackInitInput(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%NumActForcePtsBlade) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%NumActForcePtsBlade); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NumActForcePtsBlade = OutData%NumActForcePtsBlade - call RegUnpack(Buf, OutData%NumActForcePtsTower) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NumActForcePtsTower); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NumActForcePtsTower = OutData%NumActForcePtsTower - if (associated(OutData%StructBldRNodes)) deallocate(OutData%StructBldRNodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%StructBldRNodes, UB(1:1)-LB(1:1)) - OutData%StructBldRNodes(LB(1):) => OutData%StructBldRNodes - else - allocate(OutData%StructBldRNodes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StructBldRNodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%StructBldRNodes) - OutData%C_obj%StructBldRNodes_Len = size(OutData%StructBldRNodes) - if (OutData%C_obj%StructBldRNodes_Len > 0) OutData%C_obj%StructBldRNodes = c_loc(OutData%StructBldRNodes(LB(1))) - call RegUnpack(Buf, OutData%StructBldRNodes) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%StructBldRNodes => null() - end if - if (associated(OutData%StructTwrHNodes)) deallocate(OutData%StructTwrHNodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%StructTwrHNodes, UB(1:1)-LB(1:1)) - OutData%StructTwrHNodes(LB(1):) => OutData%StructTwrHNodes - else - allocate(OutData%StructTwrHNodes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StructTwrHNodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%StructTwrHNodes) - OutData%C_obj%StructTwrHNodes_Len = size(OutData%StructTwrHNodes) - if (OutData%C_obj%StructTwrHNodes_Len > 0) OutData%C_obj%StructTwrHNodes = c_loc(OutData%StructTwrHNodes(LB(1))) - call RegUnpack(Buf, OutData%StructTwrHNodes) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%StructTwrHNodes => null() - end if - call RegUnpack(Buf, OutData%BladeLength) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPtr(RF, OutData%StructBldRNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%StructTwrHNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BladeLength); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%BladeLength = OutData%BladeLength - call RegUnpack(Buf, OutData%TowerHeight) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%TowerHeight); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%TowerHeight = OutData%TowerHeight - call RegUnpack(Buf, OutData%TowerBaseHeight) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%TowerBaseHeight); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%TowerBaseHeight = OutData%TowerBaseHeight - call RegUnpack(Buf, OutData%NodeClusterType) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NodeClusterType); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NodeClusterType = OutData%NodeClusterType end subroutine @@ -549,39 +479,31 @@ subroutine ExtInfw_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) nullify(InitOutputData%FlowField) end subroutine -subroutine ExtInfw_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtInfw_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtInfw_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'ExtInfw_PackInitOutput' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call RegPack(Buf, associated(InData%FlowField)) + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call RegPack(RF, associated(InData%FlowField)) if (associated(InData%FlowField)) then - call RegPackPointer(Buf, c_loc(InData%FlowField), PtrInIndex) + call RegPackPointer(RF, c_loc(InData%FlowField), PtrInIndex) if (.not. PtrInIndex) then - call IfW_FlowField_PackFlowFieldType(Buf, InData%FlowField) + call IfW_FlowField_PackFlowFieldType(RF, InData%FlowField) end if end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ExtInfw_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtInfw_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtInfw_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtInfw_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) @@ -589,52 +511,24 @@ subroutine ExtInfw_UnPackInitOutput(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver if (associated(OutData%FlowField)) deallocate(OutData%FlowField) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPointer(RF, Ptr, PtrIdx); if (RegCheckErr(RF, RoutineName)) return if (c_associated(Ptr)) then call c_f_pointer(Ptr, OutData%FlowField) else allocate(OutData%FlowField,stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FlowField.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FlowField.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - Buf%Pointers(PtrIdx) = c_loc(OutData%FlowField) - call IfW_FlowField_UnpackFlowFieldType(Buf, OutData%FlowField) ! FlowField + RF%Pointers(PtrIdx) = c_loc(OutData%FlowField) + call IfW_FlowField_UnpackFlowFieldType(RF, OutData%FlowField) ! FlowField end if else OutData%FlowField => null() @@ -821,66 +715,66 @@ subroutine ExtInfw_DestroyMisc(MiscData, ErrStat, ErrMsg) end if end subroutine -subroutine ExtInfw_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtInfw_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtInfw_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'ExtInfw_PackMisc' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, allocated(InData%ActForceMotionsPoints)) + call RegPack(RF, allocated(InData%ActForceMotionsPoints)) if (allocated(InData%ActForceMotionsPoints)) then - call RegPackBounds(Buf, 1, lbound(InData%ActForceMotionsPoints, kind=B8Ki), ubound(InData%ActForceMotionsPoints, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%ActForceMotionsPoints, kind=B8Ki), ubound(InData%ActForceMotionsPoints, kind=B8Ki)) LB(1:1) = lbound(InData%ActForceMotionsPoints, kind=B8Ki) UB(1:1) = ubound(InData%ActForceMotionsPoints, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%ActForceMotionsPoints(i1)) + call MeshPack(RF, InData%ActForceMotionsPoints(i1)) end do end if - call RegPack(Buf, allocated(InData%ActForceLoadsPoints)) + call RegPack(RF, allocated(InData%ActForceLoadsPoints)) if (allocated(InData%ActForceLoadsPoints)) then - call RegPackBounds(Buf, 1, lbound(InData%ActForceLoadsPoints, kind=B8Ki), ubound(InData%ActForceLoadsPoints, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%ActForceLoadsPoints, kind=B8Ki), ubound(InData%ActForceLoadsPoints, kind=B8Ki)) LB(1:1) = lbound(InData%ActForceLoadsPoints, kind=B8Ki) UB(1:1) = ubound(InData%ActForceLoadsPoints, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%ActForceLoadsPoints(i1)) + call MeshPack(RF, InData%ActForceLoadsPoints(i1)) end do end if - call RegPack(Buf, allocated(InData%Line2_to_Point_Loads)) + call RegPack(RF, allocated(InData%Line2_to_Point_Loads)) if (allocated(InData%Line2_to_Point_Loads)) then - call RegPackBounds(Buf, 1, lbound(InData%Line2_to_Point_Loads, kind=B8Ki), ubound(InData%Line2_to_Point_Loads, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Line2_to_Point_Loads, kind=B8Ki), ubound(InData%Line2_to_Point_Loads, kind=B8Ki)) LB(1:1) = lbound(InData%Line2_to_Point_Loads, kind=B8Ki) UB(1:1) = ubound(InData%Line2_to_Point_Loads, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%Line2_to_Point_Loads(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%Line2_to_Point_Loads(i1)) end do end if - call RegPack(Buf, allocated(InData%Line2_to_Point_Motions)) + call RegPack(RF, allocated(InData%Line2_to_Point_Motions)) if (allocated(InData%Line2_to_Point_Motions)) then - call RegPackBounds(Buf, 1, lbound(InData%Line2_to_Point_Motions, kind=B8Ki), ubound(InData%Line2_to_Point_Motions, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Line2_to_Point_Motions, kind=B8Ki), ubound(InData%Line2_to_Point_Motions, kind=B8Ki)) LB(1:1) = lbound(InData%Line2_to_Point_Motions, kind=B8Ki) UB(1:1) = ubound(InData%Line2_to_Point_Motions, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%Line2_to_Point_Motions(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%Line2_to_Point_Motions(i1)) end do end if - call RegPack(Buf, associated(InData%FlowField)) + call RegPack(RF, associated(InData%FlowField)) if (associated(InData%FlowField)) then - call RegPackPointer(Buf, c_loc(InData%FlowField), PtrInIndex) + call RegPackPointer(RF, c_loc(InData%FlowField), PtrInIndex) if (.not. PtrInIndex) then - call IfW_FlowField_PackFlowFieldType(Buf, InData%FlowField) + call IfW_FlowField_PackFlowFieldType(RF, InData%FlowField) end if end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ExtInfw_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtInfw_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtInfw_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtInfw_UnPackMisc' integer(B8Ki) :: i1 @@ -889,83 +783,73 @@ subroutine ExtInfw_UnPackMisc(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%ActForceMotionsPoints)) deallocate(OutData%ActForceMotionsPoints) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%ActForceMotionsPoints(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ActForceMotionsPoints.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ActForceMotionsPoints.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%ActForceMotionsPoints(i1)) ! ActForceMotionsPoints + call MeshUnpack(RF, OutData%ActForceMotionsPoints(i1)) ! ActForceMotionsPoints end do end if if (allocated(OutData%ActForceLoadsPoints)) deallocate(OutData%ActForceLoadsPoints) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%ActForceLoadsPoints(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ActForceLoadsPoints.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ActForceLoadsPoints.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%ActForceLoadsPoints(i1)) ! ActForceLoadsPoints + call MeshUnpack(RF, OutData%ActForceLoadsPoints(i1)) ! ActForceLoadsPoints end do end if if (allocated(OutData%Line2_to_Point_Loads)) deallocate(OutData%Line2_to_Point_Loads) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Line2_to_Point_Loads(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Line2_to_Point_Loads.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Line2_to_Point_Loads.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%Line2_to_Point_Loads(i1)) ! Line2_to_Point_Loads + call NWTC_Library_UnpackMeshMapType(RF, OutData%Line2_to_Point_Loads(i1)) ! Line2_to_Point_Loads end do end if if (allocated(OutData%Line2_to_Point_Motions)) deallocate(OutData%Line2_to_Point_Motions) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Line2_to_Point_Motions(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Line2_to_Point_Motions.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Line2_to_Point_Motions.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%Line2_to_Point_Motions(i1)) ! Line2_to_Point_Motions + call NWTC_Library_UnpackMeshMapType(RF, OutData%Line2_to_Point_Motions(i1)) ! Line2_to_Point_Motions end do end if if (associated(OutData%FlowField)) deallocate(OutData%FlowField) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPointer(RF, Ptr, PtrIdx); if (RegCheckErr(RF, RoutineName)) return if (c_associated(Ptr)) then call c_f_pointer(Ptr, OutData%FlowField) else allocate(OutData%FlowField,stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FlowField.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FlowField.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - Buf%Pointers(PtrIdx) = c_loc(OutData%FlowField) - call IfW_FlowField_UnpackFlowFieldType(Buf, OutData%FlowField) ! FlowField + RF%Pointers(PtrIdx) = c_loc(OutData%FlowField) + call IfW_FlowField_UnpackFlowFieldType(RF, OutData%FlowField) ! FlowField end if else OutData%FlowField => null() @@ -1092,48 +976,34 @@ subroutine ExtInfw_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine ExtInfw_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtInfw_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtInfw_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'ExtInfw_PackParam' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, InData%AirDens) - call RegPack(Buf, InData%NumBl) - call RegPack(Buf, InData%NMappings) - call RegPack(Buf, InData%NnodesVel) - call RegPack(Buf, InData%NnodesForce) - call RegPack(Buf, InData%NnodesForceBlade) - call RegPack(Buf, InData%NnodesForceTower) - call RegPack(Buf, associated(InData%forceBldRnodes)) - if (associated(InData%forceBldRnodes)) then - call RegPackBounds(Buf, 1, lbound(InData%forceBldRnodes, kind=B8Ki), ubound(InData%forceBldRnodes, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%forceBldRnodes), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%forceBldRnodes) - end if - end if - call RegPack(Buf, associated(InData%forceTwrHnodes)) - if (associated(InData%forceTwrHnodes)) then - call RegPackBounds(Buf, 1, lbound(InData%forceTwrHnodes, kind=B8Ki), ubound(InData%forceTwrHnodes, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%forceTwrHnodes), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%forceTwrHnodes) - end if - end if - call RegPack(Buf, InData%BladeLength) - call RegPack(Buf, InData%TowerHeight) - call RegPack(Buf, InData%TowerBaseHeight) - call RegPack(Buf, InData%NodeClusterType) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%AirDens) + call RegPack(RF, InData%NumBl) + call RegPack(RF, InData%NMappings) + call RegPack(RF, InData%NnodesVel) + call RegPack(RF, InData%NnodesForce) + call RegPack(RF, InData%NnodesForceBlade) + call RegPack(RF, InData%NnodesForceTower) + call RegPackPtr(RF, InData%forceBldRnodes) + call RegPackPtr(RF, InData%forceTwrHnodes) + call RegPack(RF, InData%BladeLength) + call RegPack(RF, InData%TowerHeight) + call RegPack(RF, InData%TowerBaseHeight) + call RegPack(RF, InData%NodeClusterType) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ExtInfw_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtInfw_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtInfw_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtInfw_UnPackParam' integer(B8Ki) :: LB(1), UB(1) @@ -1141,91 +1011,30 @@ subroutine ExtInfw_UnPackParam(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%AirDens) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%AirDens); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%AirDens = OutData%AirDens - call RegUnpack(Buf, OutData%NumBl) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NumBl); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NumBl = OutData%NumBl - call RegUnpack(Buf, OutData%NMappings) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NMappings); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NMappings = OutData%NMappings - call RegUnpack(Buf, OutData%NnodesVel) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NnodesVel); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NnodesVel = OutData%NnodesVel - call RegUnpack(Buf, OutData%NnodesForce) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NnodesForce); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NnodesForce = OutData%NnodesForce - call RegUnpack(Buf, OutData%NnodesForceBlade) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NnodesForceBlade); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NnodesForceBlade = OutData%NnodesForceBlade - call RegUnpack(Buf, OutData%NnodesForceTower) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NnodesForceTower); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NnodesForceTower = OutData%NnodesForceTower - if (associated(OutData%forceBldRnodes)) deallocate(OutData%forceBldRnodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%forceBldRnodes, UB(1:1)-LB(1:1)) - OutData%forceBldRnodes(LB(1):) => OutData%forceBldRnodes - else - allocate(OutData%forceBldRnodes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%forceBldRnodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%forceBldRnodes) - OutData%C_obj%forceBldRnodes_Len = size(OutData%forceBldRnodes) - if (OutData%C_obj%forceBldRnodes_Len > 0) OutData%C_obj%forceBldRnodes = c_loc(OutData%forceBldRnodes(LB(1))) - call RegUnpack(Buf, OutData%forceBldRnodes) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%forceBldRnodes => null() - end if - if (associated(OutData%forceTwrHnodes)) deallocate(OutData%forceTwrHnodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%forceTwrHnodes, UB(1:1)-LB(1:1)) - OutData%forceTwrHnodes(LB(1):) => OutData%forceTwrHnodes - else - allocate(OutData%forceTwrHnodes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%forceTwrHnodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%forceTwrHnodes) - OutData%C_obj%forceTwrHnodes_Len = size(OutData%forceTwrHnodes) - if (OutData%C_obj%forceTwrHnodes_Len > 0) OutData%C_obj%forceTwrHnodes = c_loc(OutData%forceTwrHnodes(LB(1))) - call RegUnpack(Buf, OutData%forceTwrHnodes) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%forceTwrHnodes => null() - end if - call RegUnpack(Buf, OutData%BladeLength) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPtr(RF, OutData%forceBldRnodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%forceTwrHnodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BladeLength); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%BladeLength = OutData%BladeLength - call RegUnpack(Buf, OutData%TowerHeight) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%TowerHeight); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%TowerHeight = OutData%TowerHeight - call RegUnpack(Buf, OutData%TowerBaseHeight) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%TowerBaseHeight); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%TowerBaseHeight = OutData%TowerBaseHeight - call RegUnpack(Buf, OutData%NodeClusterType) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NodeClusterType); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NodeClusterType = OutData%NodeClusterType end subroutine @@ -1706,157 +1515,38 @@ subroutine ExtInfw_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine ExtInfw_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtInfw_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtInfw_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'ExtInfw_PackInput' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, associated(InData%pxVel)) - if (associated(InData%pxVel)) then - call RegPackBounds(Buf, 1, lbound(InData%pxVel, kind=B8Ki), ubound(InData%pxVel, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%pxVel), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%pxVel) - end if - end if - call RegPack(Buf, associated(InData%pyVel)) - if (associated(InData%pyVel)) then - call RegPackBounds(Buf, 1, lbound(InData%pyVel, kind=B8Ki), ubound(InData%pyVel, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%pyVel), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%pyVel) - end if - end if - call RegPack(Buf, associated(InData%pzVel)) - if (associated(InData%pzVel)) then - call RegPackBounds(Buf, 1, lbound(InData%pzVel, kind=B8Ki), ubound(InData%pzVel, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%pzVel), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%pzVel) - end if - end if - call RegPack(Buf, associated(InData%pxForce)) - if (associated(InData%pxForce)) then - call RegPackBounds(Buf, 1, lbound(InData%pxForce, kind=B8Ki), ubound(InData%pxForce, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%pxForce), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%pxForce) - end if - end if - call RegPack(Buf, associated(InData%pyForce)) - if (associated(InData%pyForce)) then - call RegPackBounds(Buf, 1, lbound(InData%pyForce, kind=B8Ki), ubound(InData%pyForce, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%pyForce), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%pyForce) - end if - end if - call RegPack(Buf, associated(InData%pzForce)) - if (associated(InData%pzForce)) then - call RegPackBounds(Buf, 1, lbound(InData%pzForce, kind=B8Ki), ubound(InData%pzForce, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%pzForce), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%pzForce) - end if - end if - call RegPack(Buf, associated(InData%xdotForce)) - if (associated(InData%xdotForce)) then - call RegPackBounds(Buf, 1, lbound(InData%xdotForce, kind=B8Ki), ubound(InData%xdotForce, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%xdotForce), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%xdotForce) - end if - end if - call RegPack(Buf, associated(InData%ydotForce)) - if (associated(InData%ydotForce)) then - call RegPackBounds(Buf, 1, lbound(InData%ydotForce, kind=B8Ki), ubound(InData%ydotForce, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%ydotForce), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%ydotForce) - end if - end if - call RegPack(Buf, associated(InData%zdotForce)) - if (associated(InData%zdotForce)) then - call RegPackBounds(Buf, 1, lbound(InData%zdotForce, kind=B8Ki), ubound(InData%zdotForce, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%zdotForce), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%zdotForce) - end if - end if - call RegPack(Buf, associated(InData%pOrientation)) - if (associated(InData%pOrientation)) then - call RegPackBounds(Buf, 1, lbound(InData%pOrientation, kind=B8Ki), ubound(InData%pOrientation, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%pOrientation), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%pOrientation) - end if - end if - call RegPack(Buf, associated(InData%fx)) - if (associated(InData%fx)) then - call RegPackBounds(Buf, 1, lbound(InData%fx, kind=B8Ki), ubound(InData%fx, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%fx), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%fx) - end if - end if - call RegPack(Buf, associated(InData%fy)) - if (associated(InData%fy)) then - call RegPackBounds(Buf, 1, lbound(InData%fy, kind=B8Ki), ubound(InData%fy, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%fy), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%fy) - end if - end if - call RegPack(Buf, associated(InData%fz)) - if (associated(InData%fz)) then - call RegPackBounds(Buf, 1, lbound(InData%fz, kind=B8Ki), ubound(InData%fz, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%fz), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%fz) - end if - end if - call RegPack(Buf, associated(InData%momentx)) - if (associated(InData%momentx)) then - call RegPackBounds(Buf, 1, lbound(InData%momentx, kind=B8Ki), ubound(InData%momentx, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%momentx), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%momentx) - end if - end if - call RegPack(Buf, associated(InData%momenty)) - if (associated(InData%momenty)) then - call RegPackBounds(Buf, 1, lbound(InData%momenty, kind=B8Ki), ubound(InData%momenty, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%momenty), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%momenty) - end if - end if - call RegPack(Buf, associated(InData%momentz)) - if (associated(InData%momentz)) then - call RegPackBounds(Buf, 1, lbound(InData%momentz, kind=B8Ki), ubound(InData%momentz, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%momentz), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%momentz) - end if - end if - call RegPack(Buf, associated(InData%forceNodesChord)) - if (associated(InData%forceNodesChord)) then - call RegPackBounds(Buf, 1, lbound(InData%forceNodesChord, kind=B8Ki), ubound(InData%forceNodesChord, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%forceNodesChord), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%forceNodesChord) - end if - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackPtr(RF, InData%pxVel) + call RegPackPtr(RF, InData%pyVel) + call RegPackPtr(RF, InData%pzVel) + call RegPackPtr(RF, InData%pxForce) + call RegPackPtr(RF, InData%pyForce) + call RegPackPtr(RF, InData%pzForce) + call RegPackPtr(RF, InData%xdotForce) + call RegPackPtr(RF, InData%ydotForce) + call RegPackPtr(RF, InData%zdotForce) + call RegPackPtr(RF, InData%pOrientation) + call RegPackPtr(RF, InData%fx) + call RegPackPtr(RF, InData%fy) + call RegPackPtr(RF, InData%fz) + call RegPackPtr(RF, InData%momentx) + call RegPackPtr(RF, InData%momenty) + call RegPackPtr(RF, InData%momentz) + call RegPackPtr(RF, InData%forceNodesChord) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ExtInfw_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtInfw_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtInfw_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtInfw_UnPackInput' integer(B8Ki) :: LB(1), UB(1) @@ -1864,449 +1554,24 @@ subroutine ExtInfw_UnPackInput(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - if (associated(OutData%pxVel)) deallocate(OutData%pxVel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%pxVel, UB(1:1)-LB(1:1)) - OutData%pxVel(LB(1):) => OutData%pxVel - else - allocate(OutData%pxVel(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%pxVel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%pxVel) - OutData%C_obj%pxVel_Len = size(OutData%pxVel) - if (OutData%C_obj%pxVel_Len > 0) OutData%C_obj%pxVel = c_loc(OutData%pxVel(LB(1))) - call RegUnpack(Buf, OutData%pxVel) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%pxVel => null() - end if - if (associated(OutData%pyVel)) deallocate(OutData%pyVel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%pyVel, UB(1:1)-LB(1:1)) - OutData%pyVel(LB(1):) => OutData%pyVel - else - allocate(OutData%pyVel(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%pyVel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%pyVel) - OutData%C_obj%pyVel_Len = size(OutData%pyVel) - if (OutData%C_obj%pyVel_Len > 0) OutData%C_obj%pyVel = c_loc(OutData%pyVel(LB(1))) - call RegUnpack(Buf, OutData%pyVel) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%pyVel => null() - end if - if (associated(OutData%pzVel)) deallocate(OutData%pzVel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%pzVel, UB(1:1)-LB(1:1)) - OutData%pzVel(LB(1):) => OutData%pzVel - else - allocate(OutData%pzVel(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%pzVel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%pzVel) - OutData%C_obj%pzVel_Len = size(OutData%pzVel) - if (OutData%C_obj%pzVel_Len > 0) OutData%C_obj%pzVel = c_loc(OutData%pzVel(LB(1))) - call RegUnpack(Buf, OutData%pzVel) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%pzVel => null() - end if - if (associated(OutData%pxForce)) deallocate(OutData%pxForce) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%pxForce, UB(1:1)-LB(1:1)) - OutData%pxForce(LB(1):) => OutData%pxForce - else - allocate(OutData%pxForce(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%pxForce.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%pxForce) - OutData%C_obj%pxForce_Len = size(OutData%pxForce) - if (OutData%C_obj%pxForce_Len > 0) OutData%C_obj%pxForce = c_loc(OutData%pxForce(LB(1))) - call RegUnpack(Buf, OutData%pxForce) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%pxForce => null() - end if - if (associated(OutData%pyForce)) deallocate(OutData%pyForce) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%pyForce, UB(1:1)-LB(1:1)) - OutData%pyForce(LB(1):) => OutData%pyForce - else - allocate(OutData%pyForce(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%pyForce.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%pyForce) - OutData%C_obj%pyForce_Len = size(OutData%pyForce) - if (OutData%C_obj%pyForce_Len > 0) OutData%C_obj%pyForce = c_loc(OutData%pyForce(LB(1))) - call RegUnpack(Buf, OutData%pyForce) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%pyForce => null() - end if - if (associated(OutData%pzForce)) deallocate(OutData%pzForce) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%pzForce, UB(1:1)-LB(1:1)) - OutData%pzForce(LB(1):) => OutData%pzForce - else - allocate(OutData%pzForce(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%pzForce.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%pzForce) - OutData%C_obj%pzForce_Len = size(OutData%pzForce) - if (OutData%C_obj%pzForce_Len > 0) OutData%C_obj%pzForce = c_loc(OutData%pzForce(LB(1))) - call RegUnpack(Buf, OutData%pzForce) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%pzForce => null() - end if - if (associated(OutData%xdotForce)) deallocate(OutData%xdotForce) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%xdotForce, UB(1:1)-LB(1:1)) - OutData%xdotForce(LB(1):) => OutData%xdotForce - else - allocate(OutData%xdotForce(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xdotForce.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%xdotForce) - OutData%C_obj%xdotForce_Len = size(OutData%xdotForce) - if (OutData%C_obj%xdotForce_Len > 0) OutData%C_obj%xdotForce = c_loc(OutData%xdotForce(LB(1))) - call RegUnpack(Buf, OutData%xdotForce) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%xdotForce => null() - end if - if (associated(OutData%ydotForce)) deallocate(OutData%ydotForce) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%ydotForce, UB(1:1)-LB(1:1)) - OutData%ydotForce(LB(1):) => OutData%ydotForce - else - allocate(OutData%ydotForce(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ydotForce.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%ydotForce) - OutData%C_obj%ydotForce_Len = size(OutData%ydotForce) - if (OutData%C_obj%ydotForce_Len > 0) OutData%C_obj%ydotForce = c_loc(OutData%ydotForce(LB(1))) - call RegUnpack(Buf, OutData%ydotForce) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%ydotForce => null() - end if - if (associated(OutData%zdotForce)) deallocate(OutData%zdotForce) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%zdotForce, UB(1:1)-LB(1:1)) - OutData%zdotForce(LB(1):) => OutData%zdotForce - else - allocate(OutData%zdotForce(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%zdotForce.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%zdotForce) - OutData%C_obj%zdotForce_Len = size(OutData%zdotForce) - if (OutData%C_obj%zdotForce_Len > 0) OutData%C_obj%zdotForce = c_loc(OutData%zdotForce(LB(1))) - call RegUnpack(Buf, OutData%zdotForce) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%zdotForce => null() - end if - if (associated(OutData%pOrientation)) deallocate(OutData%pOrientation) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%pOrientation, UB(1:1)-LB(1:1)) - OutData%pOrientation(LB(1):) => OutData%pOrientation - else - allocate(OutData%pOrientation(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%pOrientation.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%pOrientation) - OutData%C_obj%pOrientation_Len = size(OutData%pOrientation) - if (OutData%C_obj%pOrientation_Len > 0) OutData%C_obj%pOrientation = c_loc(OutData%pOrientation(LB(1))) - call RegUnpack(Buf, OutData%pOrientation) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%pOrientation => null() - end if - if (associated(OutData%fx)) deallocate(OutData%fx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%fx, UB(1:1)-LB(1:1)) - OutData%fx(LB(1):) => OutData%fx - else - allocate(OutData%fx(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%fx) - OutData%C_obj%fx_Len = size(OutData%fx) - if (OutData%C_obj%fx_Len > 0) OutData%C_obj%fx = c_loc(OutData%fx(LB(1))) - call RegUnpack(Buf, OutData%fx) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%fx => null() - end if - if (associated(OutData%fy)) deallocate(OutData%fy) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%fy, UB(1:1)-LB(1:1)) - OutData%fy(LB(1):) => OutData%fy - else - allocate(OutData%fy(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fy.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%fy) - OutData%C_obj%fy_Len = size(OutData%fy) - if (OutData%C_obj%fy_Len > 0) OutData%C_obj%fy = c_loc(OutData%fy(LB(1))) - call RegUnpack(Buf, OutData%fy) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%fy => null() - end if - if (associated(OutData%fz)) deallocate(OutData%fz) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%fz, UB(1:1)-LB(1:1)) - OutData%fz(LB(1):) => OutData%fz - else - allocate(OutData%fz(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fz.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%fz) - OutData%C_obj%fz_Len = size(OutData%fz) - if (OutData%C_obj%fz_Len > 0) OutData%C_obj%fz = c_loc(OutData%fz(LB(1))) - call RegUnpack(Buf, OutData%fz) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%fz => null() - end if - if (associated(OutData%momentx)) deallocate(OutData%momentx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%momentx, UB(1:1)-LB(1:1)) - OutData%momentx(LB(1):) => OutData%momentx - else - allocate(OutData%momentx(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%momentx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%momentx) - OutData%C_obj%momentx_Len = size(OutData%momentx) - if (OutData%C_obj%momentx_Len > 0) OutData%C_obj%momentx = c_loc(OutData%momentx(LB(1))) - call RegUnpack(Buf, OutData%momentx) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%momentx => null() - end if - if (associated(OutData%momenty)) deallocate(OutData%momenty) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%momenty, UB(1:1)-LB(1:1)) - OutData%momenty(LB(1):) => OutData%momenty - else - allocate(OutData%momenty(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%momenty.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%momenty) - OutData%C_obj%momenty_Len = size(OutData%momenty) - if (OutData%C_obj%momenty_Len > 0) OutData%C_obj%momenty = c_loc(OutData%momenty(LB(1))) - call RegUnpack(Buf, OutData%momenty) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%momenty => null() - end if - if (associated(OutData%momentz)) deallocate(OutData%momentz) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%momentz, UB(1:1)-LB(1:1)) - OutData%momentz(LB(1):) => OutData%momentz - else - allocate(OutData%momentz(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%momentz.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%momentz) - OutData%C_obj%momentz_Len = size(OutData%momentz) - if (OutData%C_obj%momentz_Len > 0) OutData%C_obj%momentz = c_loc(OutData%momentz(LB(1))) - call RegUnpack(Buf, OutData%momentz) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%momentz => null() - end if - if (associated(OutData%forceNodesChord)) deallocate(OutData%forceNodesChord) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%forceNodesChord, UB(1:1)-LB(1:1)) - OutData%forceNodesChord(LB(1):) => OutData%forceNodesChord - else - allocate(OutData%forceNodesChord(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%forceNodesChord.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%forceNodesChord) - OutData%C_obj%forceNodesChord_Len = size(OutData%forceNodesChord) - if (OutData%C_obj%forceNodesChord_Len > 0) OutData%C_obj%forceNodesChord = c_loc(OutData%forceNodesChord(LB(1))) - call RegUnpack(Buf, OutData%forceNodesChord) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%forceNodesChord => null() - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackPtr(RF, OutData%pxVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%pyVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%pzVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%pxForce); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%pyForce); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%pzForce); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%xdotForce); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%ydotForce); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%zdotForce); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%pOrientation); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%fx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%fy); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%fz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%momentx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%momenty); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%momentz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%forceNodesChord); if (RegCheckErr(RF, RoutineName)) return end subroutine SUBROUTINE ExtInfw_C2Fary_CopyInput(InputData, ErrStat, ErrMsg, SkipPointers) @@ -2800,50 +2065,25 @@ subroutine ExtInfw_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine ExtInfw_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtInfw_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtInfw_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'ExtInfw_PackOutput' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, associated(InData%u)) - if (associated(InData%u)) then - call RegPackBounds(Buf, 1, lbound(InData%u, kind=B8Ki), ubound(InData%u, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%u), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%u) - end if - end if - call RegPack(Buf, associated(InData%v)) - if (associated(InData%v)) then - call RegPackBounds(Buf, 1, lbound(InData%v, kind=B8Ki), ubound(InData%v, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%v), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%v) - end if - end if - call RegPack(Buf, associated(InData%w)) - if (associated(InData%w)) then - call RegPackBounds(Buf, 1, lbound(InData%w, kind=B8Ki), ubound(InData%w, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%w), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%w) - end if - end if - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackPtr(RF, InData%u) + call RegPackPtr(RF, InData%v) + call RegPackPtr(RF, InData%w) + call RegPackAlloc(RF, InData%WriteOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ExtInfw_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtInfw_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtInfw_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtInfw_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) @@ -2851,99 +2091,11 @@ subroutine ExtInfw_UnPackOutput(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - if (associated(OutData%u)) deallocate(OutData%u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%u, UB(1:1)-LB(1:1)) - OutData%u(LB(1):) => OutData%u - else - allocate(OutData%u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%u) - OutData%C_obj%u_Len = size(OutData%u) - if (OutData%C_obj%u_Len > 0) OutData%C_obj%u = c_loc(OutData%u(LB(1))) - call RegUnpack(Buf, OutData%u) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%u => null() - end if - if (associated(OutData%v)) deallocate(OutData%v) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%v, UB(1:1)-LB(1:1)) - OutData%v(LB(1):) => OutData%v - else - allocate(OutData%v(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%v.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%v) - OutData%C_obj%v_Len = size(OutData%v) - if (OutData%C_obj%v_Len > 0) OutData%C_obj%v = c_loc(OutData%v(LB(1))) - call RegUnpack(Buf, OutData%v) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%v => null() - end if - if (associated(OutData%w)) deallocate(OutData%w) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%w, UB(1:1)-LB(1:1)) - OutData%w(LB(1):) => OutData%w - else - allocate(OutData%w(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%w.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%w) - OutData%C_obj%w_Len = size(OutData%w) - if (OutData%C_obj%w_Len > 0) OutData%C_obj%w = c_loc(OutData%w(LB(1))) - call RegUnpack(Buf, OutData%w) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%w => null() - end if - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackPtr(RF, OutData%u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%v); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%w); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine SUBROUTINE ExtInfw_C2Fary_CopyOutput(OutputData, ErrStat, ErrMsg, SkipPointers) diff --git a/modules/extptfm/src/ExtPtfm_MCKF_Types.f90 b/modules/extptfm/src/ExtPtfm_MCKF_Types.f90 index 9ca5ac7425..17debf3902 100644 --- a/modules/extptfm/src/ExtPtfm_MCKF_Types.f90 +++ b/modules/extptfm/src/ExtPtfm_MCKF_Types.f90 @@ -180,31 +180,27 @@ subroutine ExtPtfm_DestroyInitInput(InitInputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine ExtPtfm_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtPtfm_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'ExtPtfm_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%InputFile) - call RegPack(Buf, InData%Linearize) - call RegPack(Buf, InData%PtfmRefzt) - call RegPack(Buf, InData%RootName) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%InputFile) + call RegPack(RF, InData%Linearize) + call RegPack(RF, InData%PtfmRefzt) + call RegPack(RF, InData%RootName) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ExtPtfm_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtPtfm_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtPtfm_UnPackInitInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%InputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Linearize) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmRefzt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return + 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%PtfmRefzt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ExtPtfm_CopyInputFile(SrcInputFileData, DstInputFileData, CtrlCode, ErrStat, ErrMsg) @@ -301,134 +297,54 @@ subroutine ExtPtfm_DestroyInputFile(InputFileData, ErrStat, ErrMsg) end if end subroutine -subroutine ExtPtfm_PackInputFile(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_PackInputFile(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtPtfm_InputFile), intent(in) :: InData character(*), parameter :: RoutineName = 'ExtPtfm_PackInputFile' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT) - call RegPack(Buf, InData%IntMethod) - call RegPack(Buf, InData%FileFormat) - call RegPack(Buf, InData%RedFile) - call RegPack(Buf, InData%RedFileCst) - call RegPack(Buf, InData%EquilStart) - call RegPack(Buf, allocated(InData%ActiveCBDOF)) - if (allocated(InData%ActiveCBDOF)) then - call RegPackBounds(Buf, 1, lbound(InData%ActiveCBDOF, kind=B8Ki), ubound(InData%ActiveCBDOF, kind=B8Ki)) - call RegPack(Buf, InData%ActiveCBDOF) - end if - call RegPack(Buf, allocated(InData%InitPosList)) - if (allocated(InData%InitPosList)) then - call RegPackBounds(Buf, 1, lbound(InData%InitPosList, kind=B8Ki), ubound(InData%InitPosList, kind=B8Ki)) - call RegPack(Buf, InData%InitPosList) - end if - call RegPack(Buf, allocated(InData%InitVelList)) - if (allocated(InData%InitVelList)) then - call RegPackBounds(Buf, 1, lbound(InData%InitVelList, kind=B8Ki), ubound(InData%InitVelList, kind=B8Ki)) - call RegPack(Buf, InData%InitVelList) - end if - call RegPack(Buf, InData%SumPrint) - call RegPack(Buf, InData%OutFile) - call RegPack(Buf, InData%TabDelim) - call RegPack(Buf, InData%OutFmt) - call RegPack(Buf, InData%Tstart) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, allocated(InData%OutList)) - if (allocated(InData%OutList)) then - call RegPackBounds(Buf, 1, lbound(InData%OutList, kind=B8Ki), ubound(InData%OutList, kind=B8Ki)) - call RegPack(Buf, InData%OutList) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT) + call RegPack(RF, InData%IntMethod) + call RegPack(RF, InData%FileFormat) + 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%SumPrint) + call RegPack(RF, InData%OutFile) + call RegPack(RF, InData%TabDelim) + call RegPack(RF, InData%OutFmt) + call RegPack(RF, InData%Tstart) + call RegPack(RF, InData%NumOuts) + call RegPackAlloc(RF, InData%OutList) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ExtPtfm_UnPackInputFile(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_UnPackInputFile(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtPtfm_InputFile), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtPtfm_UnPackInputFile' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%IntMethod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FileFormat) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RedFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RedFileCst) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EquilStart) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%ActiveCBDOF)) deallocate(OutData%ActiveCBDOF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ActiveCBDOF(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ActiveCBDOF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ActiveCBDOF) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%InitPosList)) deallocate(OutData%InitPosList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InitPosList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InitPosList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InitPosList) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%InitVelList)) deallocate(OutData%InitVelList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InitVelList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InitVelList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InitVelList) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%SumPrint) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TabDelim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Tstart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutList)) deallocate(OutData%OutList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutList) - if (RegCheckErr(Buf, RoutineName)) return - end if + 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%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%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 + call RegUnpack(RF, OutData%OutFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Tstart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutList); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ExtPtfm_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -611,214 +527,44 @@ subroutine ExtPtfm_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine ExtPtfm_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtPtfm_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'ExtPtfm_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - call RegPack(Buf, allocated(InData%LinNames_y)) - if (allocated(InData%LinNames_y)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_y, kind=B8Ki), ubound(InData%LinNames_y, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_y) - end if - call RegPack(Buf, allocated(InData%LinNames_x)) - if (allocated(InData%LinNames_x)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_x, kind=B8Ki), ubound(InData%LinNames_x, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_x) - end if - call RegPack(Buf, allocated(InData%LinNames_u)) - if (allocated(InData%LinNames_u)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_u, kind=B8Ki), ubound(InData%LinNames_u, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_u) - end if - call RegPack(Buf, allocated(InData%RotFrame_y)) - if (allocated(InData%RotFrame_y)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_y, kind=B8Ki), ubound(InData%RotFrame_y, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_y) - end if - call RegPack(Buf, allocated(InData%RotFrame_x)) - if (allocated(InData%RotFrame_x)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_x, kind=B8Ki), ubound(InData%RotFrame_x, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_x) - end if - call RegPack(Buf, allocated(InData%RotFrame_u)) - if (allocated(InData%RotFrame_u)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_u, kind=B8Ki), ubound(InData%RotFrame_u, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_u) - end if - call RegPack(Buf, allocated(InData%IsLoad_u)) - if (allocated(InData%IsLoad_u)) then - call RegPackBounds(Buf, 1, lbound(InData%IsLoad_u, kind=B8Ki), ubound(InData%IsLoad_u, kind=B8Ki)) - call RegPack(Buf, InData%IsLoad_u) - end if - call RegPack(Buf, allocated(InData%DerivOrder_x)) - if (allocated(InData%DerivOrder_x)) then - call RegPackBounds(Buf, 1, lbound(InData%DerivOrder_x, kind=B8Ki), ubound(InData%DerivOrder_x, kind=B8Ki)) - call RegPack(Buf, InData%DerivOrder_x) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + call RegPackAlloc(RF, InData%LinNames_y) + call RegPackAlloc(RF, InData%LinNames_x) + call RegPackAlloc(RF, InData%LinNames_u) + call RegPackAlloc(RF, InData%RotFrame_y) + call RegPackAlloc(RF, InData%RotFrame_x) + call RegPackAlloc(RF, InData%RotFrame_u) + call RegPackAlloc(RF, InData%IsLoad_u) + call RegPackAlloc(RF, InData%DerivOrder_x) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ExtPtfm_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtPtfm_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtPtfm_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_y)) deallocate(OutData%LinNames_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_x)) deallocate(OutData%LinNames_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_u)) deallocate(OutData%LinNames_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_y)) deallocate(OutData%RotFrame_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_x)) deallocate(OutData%RotFrame_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_u)) deallocate(OutData%RotFrame_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IsLoad_u)) deallocate(OutData%IsLoad_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IsLoad_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IsLoad_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IsLoad_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DerivOrder_x)) deallocate(OutData%DerivOrder_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DerivOrder_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DerivOrder_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DerivOrder_x) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IsLoad_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DerivOrder_x); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ExtPtfm_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -873,60 +619,26 @@ subroutine ExtPtfm_DestroyContState(ContStateData, ErrStat, ErrMsg) end if end subroutine -subroutine ExtPtfm_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtPtfm_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'ExtPtfm_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%qm)) - if (allocated(InData%qm)) then - call RegPackBounds(Buf, 1, lbound(InData%qm, kind=B8Ki), ubound(InData%qm, kind=B8Ki)) - call RegPack(Buf, InData%qm) - end if - call RegPack(Buf, allocated(InData%qmdot)) - if (allocated(InData%qmdot)) then - call RegPackBounds(Buf, 1, lbound(InData%qmdot, kind=B8Ki), ubound(InData%qmdot, kind=B8Ki)) - call RegPack(Buf, InData%qmdot) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%qm) + call RegPackAlloc(RF, InData%qmdot) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ExtPtfm_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtPtfm_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtPtfm_UnPackContState' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%qm)) deallocate(OutData%qm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%qm(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%qm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%qm) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%qmdot)) deallocate(OutData%qmdot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%qmdot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%qmdot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%qmdot) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%qm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%qmdot); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ExtPtfm_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -950,22 +662,21 @@ subroutine ExtPtfm_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine ExtPtfm_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtPtfm_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'ExtPtfm_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyDiscState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ExtPtfm_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtPtfm_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtPtfm_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyDiscState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ExtPtfm_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -989,22 +700,21 @@ subroutine ExtPtfm_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine ExtPtfm_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtPtfm_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'ExtPtfm_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstrState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ExtPtfm_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtPtfm_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtPtfm_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstrState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ExtPtfm_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -1061,52 +771,49 @@ subroutine ExtPtfm_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) end if end subroutine -subroutine ExtPtfm_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtPtfm_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'ExtPtfm_PackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%xdot)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%xdot)) if (allocated(InData%xdot)) then - call RegPackBounds(Buf, 1, lbound(InData%xdot, kind=B8Ki), ubound(InData%xdot, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%xdot, kind=B8Ki), ubound(InData%xdot, kind=B8Ki)) LB(1:1) = lbound(InData%xdot, kind=B8Ki) UB(1:1) = ubound(InData%xdot, kind=B8Ki) do i1 = LB(1), UB(1) - call ExtPtfm_PackContState(Buf, InData%xdot(i1)) + call ExtPtfm_PackContState(RF, InData%xdot(i1)) end do end if - call RegPack(Buf, InData%n) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%n) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ExtPtfm_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtPtfm_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtPtfm_UnPackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%xdot)) deallocate(OutData%xdot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xdot(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xdot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xdot.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ExtPtfm_UnpackContState(Buf, OutData%xdot(i1)) ! xdot + call ExtPtfm_UnpackContState(RF, OutData%xdot(i1)) ! xdot end do end if - call RegUnpack(Buf, OutData%n) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%n); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ExtPtfm_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -1179,88 +886,34 @@ subroutine ExtPtfm_DestroyMisc(MiscData, ErrStat, ErrMsg) end if end subroutine -subroutine ExtPtfm_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtPtfm_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'ExtPtfm_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%xFlat)) - if (allocated(InData%xFlat)) then - call RegPackBounds(Buf, 1, lbound(InData%xFlat, kind=B8Ki), ubound(InData%xFlat, kind=B8Ki)) - call RegPack(Buf, InData%xFlat) - end if - call RegPack(Buf, InData%uFlat) - call RegPack(Buf, allocated(InData%F_at_t)) - if (allocated(InData%F_at_t)) then - call RegPackBounds(Buf, 1, lbound(InData%F_at_t, kind=B8Ki), ubound(InData%F_at_t, kind=B8Ki)) - call RegPack(Buf, InData%F_at_t) - end if - call RegPack(Buf, InData%Indx) - call RegPack(Buf, InData%EquilStart) - call RegPack(Buf, allocated(InData%AllOuts)) - if (allocated(InData%AllOuts)) then - call RegPackBounds(Buf, 1, lbound(InData%AllOuts, kind=B8Ki), ubound(InData%AllOuts, kind=B8Ki)) - call RegPack(Buf, InData%AllOuts) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%xFlat) + call RegPack(RF, InData%uFlat) + call RegPackAlloc(RF, InData%F_at_t) + call RegPack(RF, InData%Indx) + call RegPack(RF, InData%EquilStart) + call RegPackAlloc(RF, InData%AllOuts) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ExtPtfm_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtPtfm_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtPtfm_UnPackMisc' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%xFlat)) deallocate(OutData%xFlat) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%xFlat(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xFlat.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%xFlat) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%uFlat) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%F_at_t)) deallocate(OutData%F_at_t) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_at_t(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_at_t.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_at_t) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Indx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EquilStart) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%AllOuts)) deallocate(OutData%AllOuts) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AllOuts(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AllOuts.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AllOuts) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + 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 RegUnpack(RF, OutData%EquilStart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AllOuts); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ExtPtfm_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -1668,507 +1321,107 @@ subroutine ExtPtfm_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine ExtPtfm_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtPtfm_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'ExtPtfm_PackParam' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Mass)) - if (allocated(InData%Mass)) then - call RegPackBounds(Buf, 2, lbound(InData%Mass, kind=B8Ki), ubound(InData%Mass, kind=B8Ki)) - call RegPack(Buf, InData%Mass) - end if - call RegPack(Buf, allocated(InData%Damp)) - if (allocated(InData%Damp)) then - call RegPackBounds(Buf, 2, lbound(InData%Damp, kind=B8Ki), ubound(InData%Damp, kind=B8Ki)) - call RegPack(Buf, InData%Damp) - end if - call RegPack(Buf, allocated(InData%Stff)) - if (allocated(InData%Stff)) then - call RegPackBounds(Buf, 2, lbound(InData%Stff, kind=B8Ki), ubound(InData%Stff, kind=B8Ki)) - call RegPack(Buf, InData%Stff) - end if - call RegPack(Buf, allocated(InData%Forces)) - if (allocated(InData%Forces)) then - call RegPackBounds(Buf, 2, lbound(InData%Forces, kind=B8Ki), ubound(InData%Forces, kind=B8Ki)) - call RegPack(Buf, InData%Forces) - end if - call RegPack(Buf, allocated(InData%times)) - if (allocated(InData%times)) then - call RegPackBounds(Buf, 1, lbound(InData%times, kind=B8Ki), ubound(InData%times, kind=B8Ki)) - call RegPack(Buf, InData%times) - end if - call RegPack(Buf, allocated(InData%AMat)) - if (allocated(InData%AMat)) then - call RegPackBounds(Buf, 2, lbound(InData%AMat, kind=B8Ki), ubound(InData%AMat, kind=B8Ki)) - call RegPack(Buf, InData%AMat) - end if - call RegPack(Buf, allocated(InData%BMat)) - if (allocated(InData%BMat)) then - call RegPackBounds(Buf, 2, lbound(InData%BMat, kind=B8Ki), ubound(InData%BMat, kind=B8Ki)) - call RegPack(Buf, InData%BMat) - end if - call RegPack(Buf, allocated(InData%CMat)) - if (allocated(InData%CMat)) then - call RegPackBounds(Buf, 2, lbound(InData%CMat, kind=B8Ki), ubound(InData%CMat, kind=B8Ki)) - call RegPack(Buf, InData%CMat) - end if - call RegPack(Buf, allocated(InData%DMat)) - if (allocated(InData%DMat)) then - call RegPackBounds(Buf, 2, lbound(InData%DMat, kind=B8Ki), ubound(InData%DMat, kind=B8Ki)) - call RegPack(Buf, InData%DMat) - end if - call RegPack(Buf, allocated(InData%FX)) - if (allocated(InData%FX)) then - call RegPackBounds(Buf, 1, lbound(InData%FX, kind=B8Ki), ubound(InData%FX, kind=B8Ki)) - call RegPack(Buf, InData%FX) - end if - call RegPack(Buf, allocated(InData%FY)) - if (allocated(InData%FY)) then - call RegPackBounds(Buf, 1, lbound(InData%FY, kind=B8Ki), ubound(InData%FY, kind=B8Ki)) - call RegPack(Buf, InData%FY) - end if - call RegPack(Buf, allocated(InData%M11)) - if (allocated(InData%M11)) then - call RegPackBounds(Buf, 2, lbound(InData%M11, kind=B8Ki), ubound(InData%M11, kind=B8Ki)) - call RegPack(Buf, InData%M11) - end if - call RegPack(Buf, allocated(InData%M12)) - if (allocated(InData%M12)) then - call RegPackBounds(Buf, 2, lbound(InData%M12, kind=B8Ki), ubound(InData%M12, kind=B8Ki)) - call RegPack(Buf, InData%M12) - end if - call RegPack(Buf, allocated(InData%M22)) - if (allocated(InData%M22)) then - call RegPackBounds(Buf, 2, lbound(InData%M22, kind=B8Ki), ubound(InData%M22, kind=B8Ki)) - call RegPack(Buf, InData%M22) - end if - call RegPack(Buf, allocated(InData%M21)) - if (allocated(InData%M21)) then - call RegPackBounds(Buf, 2, lbound(InData%M21, kind=B8Ki), ubound(InData%M21, kind=B8Ki)) - call RegPack(Buf, InData%M21) - end if - call RegPack(Buf, allocated(InData%K11)) - if (allocated(InData%K11)) then - call RegPackBounds(Buf, 2, lbound(InData%K11, kind=B8Ki), ubound(InData%K11, kind=B8Ki)) - call RegPack(Buf, InData%K11) - end if - call RegPack(Buf, allocated(InData%K22)) - if (allocated(InData%K22)) then - call RegPackBounds(Buf, 2, lbound(InData%K22, kind=B8Ki), ubound(InData%K22, kind=B8Ki)) - call RegPack(Buf, InData%K22) - end if - call RegPack(Buf, allocated(InData%C11)) - if (allocated(InData%C11)) then - call RegPackBounds(Buf, 2, lbound(InData%C11, kind=B8Ki), ubound(InData%C11, kind=B8Ki)) - call RegPack(Buf, InData%C11) - end if - call RegPack(Buf, allocated(InData%C12)) - if (allocated(InData%C12)) then - call RegPackBounds(Buf, 2, lbound(InData%C12, kind=B8Ki), ubound(InData%C12, kind=B8Ki)) - call RegPack(Buf, InData%C12) - end if - call RegPack(Buf, allocated(InData%C22)) - if (allocated(InData%C22)) then - call RegPackBounds(Buf, 2, lbound(InData%C22, kind=B8Ki), ubound(InData%C22, kind=B8Ki)) - call RegPack(Buf, InData%C22) - end if - call RegPack(Buf, allocated(InData%C21)) - if (allocated(InData%C21)) then - call RegPackBounds(Buf, 2, lbound(InData%C21, kind=B8Ki), ubound(InData%C21, kind=B8Ki)) - call RegPack(Buf, InData%C21) - end if - call RegPack(Buf, InData%EP_DeltaT) - call RegPack(Buf, InData%nTimeSteps) - call RegPack(Buf, InData%nCB) - call RegPack(Buf, InData%nCBFull) - call RegPack(Buf, InData%nTot) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, InData%IntMethod) - call RegPack(Buf, allocated(InData%ActiveCBDOF)) - if (allocated(InData%ActiveCBDOF)) then - call RegPackBounds(Buf, 1, lbound(InData%ActiveCBDOF, kind=B8Ki), ubound(InData%ActiveCBDOF, kind=B8Ki)) - call RegPack(Buf, InData%ActiveCBDOF) - end if - call RegPack(Buf, allocated(InData%OutParam)) + if (RF%ErrStat >= AbortErrLev) return + 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%M11) + call RegPackAlloc(RF, InData%M12) + call RegPackAlloc(RF, InData%M22) + call RegPackAlloc(RF, InData%M21) + call RegPackAlloc(RF, InData%K11) + 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 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%NumOuts) + call RegPack(RF, InData%IntMethod) + call RegPackAlloc(RF, InData%ActiveCBDOF) + call RegPack(RF, allocated(InData%OutParam)) if (allocated(InData%OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) LB(1:1) = lbound(InData%OutParam, kind=B8Ki) UB(1:1) = ubound(InData%OutParam, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackOutParmType(Buf, InData%OutParam(i1)) + call NWTC_Library_PackOutParmType(RF, InData%OutParam(i1)) end do end if - call RegPack(Buf, allocated(InData%OutParamLinIndx)) - if (allocated(InData%OutParamLinIndx)) then - call RegPackBounds(Buf, 2, lbound(InData%OutParamLinIndx, kind=B8Ki), ubound(InData%OutParamLinIndx, kind=B8Ki)) - call RegPack(Buf, InData%OutParamLinIndx) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%OutParamLinIndx) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ExtPtfm_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtPtfm_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtPtfm_UnPackParam' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%Mass)) deallocate(OutData%Mass) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Mass(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Mass.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Mass) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Damp)) deallocate(OutData%Damp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Damp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Damp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Damp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Stff)) deallocate(OutData%Stff) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Stff(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Stff.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Stff) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Forces)) deallocate(OutData%Forces) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Forces(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Forces.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Forces) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%times)) deallocate(OutData%times) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%times(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%times.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%times) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AMat)) deallocate(OutData%AMat) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AMat(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AMat.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AMat) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BMat)) deallocate(OutData%BMat) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BMat(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BMat.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BMat) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CMat)) deallocate(OutData%CMat) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CMat(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CMat.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CMat) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DMat)) deallocate(OutData%DMat) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DMat(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DMat.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DMat) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FX)) deallocate(OutData%FX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FX(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FX) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FY)) deallocate(OutData%FY) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FY(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FY.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FY) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%M11)) deallocate(OutData%M11) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%M11(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%M11.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%M11) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%M12)) deallocate(OutData%M12) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%M12(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%M12.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%M12) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%M22)) deallocate(OutData%M22) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%M22(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%M22.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%M22) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%M21)) deallocate(OutData%M21) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%M21(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%M21.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%M21) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%K11)) deallocate(OutData%K11) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%K11(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%K11.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%K11) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%K22)) deallocate(OutData%K22) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%K22(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%K22.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%K22) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%C11)) deallocate(OutData%C11) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%C11(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%C11.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%C11) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%C12)) deallocate(OutData%C12) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%C12(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%C12.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%C12) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%C22)) deallocate(OutData%C22) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%C22(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%C22.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%C22) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%C21)) deallocate(OutData%C21) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%C21(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%C21.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%C21) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%EP_DeltaT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nTimeSteps) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nCB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nCBFull) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nTot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%IntMethod) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%ActiveCBDOF)) deallocate(OutData%ActiveCBDOF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ActiveCBDOF(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ActiveCBDOF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ActiveCBDOF) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) 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%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%K11); 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 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%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 if (allocated(OutData%OutParam)) deallocate(OutData%OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackOutParmType(Buf, OutData%OutParam(i1)) ! OutParam + call NWTC_Library_UnpackOutParmType(RF, OutData%OutParam(i1)) ! OutParam end do end if - if (allocated(OutData%OutParamLinIndx)) deallocate(OutData%OutParamLinIndx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutParamLinIndx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParamLinIndx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutParamLinIndx) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%OutParamLinIndx); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ExtPtfm_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -2200,21 +1453,21 @@ subroutine ExtPtfm_DestroyInput(InputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine ExtPtfm_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtPtfm_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'ExtPtfm_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%PtfmMesh) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%PtfmMesh) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ExtPtfm_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtPtfm_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtPtfm_UnPackInput' - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%PtfmMesh) ! PtfmMesh + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%PtfmMesh) ! PtfmMesh end subroutine subroutine ExtPtfm_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -2262,43 +1515,26 @@ subroutine ExtPtfm_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine ExtPtfm_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtPtfm_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'ExtPtfm_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%PtfmMesh) - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%PtfmMesh) + call RegPackAlloc(RF, InData%WriteOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine ExtPtfm_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine ExtPtfm_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtPtfm_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'ExtPtfm_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%PtfmMesh) ! PtfmMesh - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%PtfmMesh) ! PtfmMesh + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine ExtPtfm_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/feamooring/src/FEAMooring_Types.f90 b/modules/feamooring/src/FEAMooring_Types.f90 index 70dbe328be..a96fa832aa 100644 --- a/modules/feamooring/src/FEAMooring_Types.f90 +++ b/modules/feamooring/src/FEAMooring_Types.f90 @@ -530,403 +530,84 @@ subroutine FEAM_DestroyInputFile(InputFileData, ErrStat, ErrMsg) end if end subroutine -subroutine FEAM_PackInputFile(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_PackInputFile(RF, Indata) + type(RegFile), intent(inout) :: RF type(FEAM_InputFile), intent(in) :: InData character(*), parameter :: RoutineName = 'FEAM_PackInputFile' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT) - call RegPack(Buf, allocated(InData%LineCI)) - if (allocated(InData%LineCI)) then - call RegPackBounds(Buf, 1, lbound(InData%LineCI, kind=B8Ki), ubound(InData%LineCI, kind=B8Ki)) - call RegPack(Buf, InData%LineCI) - end if - call RegPack(Buf, allocated(InData%LineCD)) - if (allocated(InData%LineCD)) then - call RegPackBounds(Buf, 1, lbound(InData%LineCD, kind=B8Ki), ubound(InData%LineCD, kind=B8Ki)) - call RegPack(Buf, InData%LineCD) - end if - call RegPack(Buf, allocated(InData%LEAStiff)) - if (allocated(InData%LEAStiff)) then - call RegPackBounds(Buf, 1, lbound(InData%LEAStiff, kind=B8Ki), ubound(InData%LEAStiff, kind=B8Ki)) - call RegPack(Buf, InData%LEAStiff) - end if - call RegPack(Buf, allocated(InData%LMassDen)) - if (allocated(InData%LMassDen)) then - call RegPackBounds(Buf, 1, lbound(InData%LMassDen, kind=B8Ki), ubound(InData%LMassDen, kind=B8Ki)) - call RegPack(Buf, InData%LMassDen) - end if - call RegPack(Buf, allocated(InData%LDMassDen)) - if (allocated(InData%LDMassDen)) then - call RegPackBounds(Buf, 1, lbound(InData%LDMassDen, kind=B8Ki), ubound(InData%LDMassDen, kind=B8Ki)) - call RegPack(Buf, InData%LDMassDen) - end if - call RegPack(Buf, allocated(InData%BottmStiff)) - if (allocated(InData%BottmStiff)) then - call RegPackBounds(Buf, 1, lbound(InData%BottmStiff, kind=B8Ki), ubound(InData%BottmStiff, kind=B8Ki)) - call RegPack(Buf, InData%BottmStiff) - end if - call RegPack(Buf, allocated(InData%LRadAnch)) - if (allocated(InData%LRadAnch)) then - call RegPackBounds(Buf, 1, lbound(InData%LRadAnch, kind=B8Ki), ubound(InData%LRadAnch, kind=B8Ki)) - call RegPack(Buf, InData%LRadAnch) - end if - call RegPack(Buf, allocated(InData%LAngAnch)) - if (allocated(InData%LAngAnch)) then - call RegPackBounds(Buf, 1, lbound(InData%LAngAnch, kind=B8Ki), ubound(InData%LAngAnch, kind=B8Ki)) - call RegPack(Buf, InData%LAngAnch) - end if - call RegPack(Buf, allocated(InData%LDpthAnch)) - if (allocated(InData%LDpthAnch)) then - call RegPackBounds(Buf, 1, lbound(InData%LDpthAnch, kind=B8Ki), ubound(InData%LDpthAnch, kind=B8Ki)) - call RegPack(Buf, InData%LDpthAnch) - end if - call RegPack(Buf, allocated(InData%LRadFair)) - if (allocated(InData%LRadFair)) then - call RegPackBounds(Buf, 1, lbound(InData%LRadFair, kind=B8Ki), ubound(InData%LRadFair, kind=B8Ki)) - call RegPack(Buf, InData%LRadFair) - end if - call RegPack(Buf, allocated(InData%LAngFair)) - if (allocated(InData%LAngFair)) then - call RegPackBounds(Buf, 1, lbound(InData%LAngFair, kind=B8Ki), ubound(InData%LAngFair, kind=B8Ki)) - call RegPack(Buf, InData%LAngFair) - end if - call RegPack(Buf, allocated(InData%LDrftFair)) - if (allocated(InData%LDrftFair)) then - call RegPackBounds(Buf, 1, lbound(InData%LDrftFair, kind=B8Ki), ubound(InData%LDrftFair, kind=B8Ki)) - call RegPack(Buf, InData%LDrftFair) - end if - call RegPack(Buf, allocated(InData%LUnstrLen)) - if (allocated(InData%LUnstrLen)) then - call RegPackBounds(Buf, 1, lbound(InData%LUnstrLen, kind=B8Ki), ubound(InData%LUnstrLen, kind=B8Ki)) - call RegPack(Buf, InData%LUnstrLen) - end if - call RegPack(Buf, allocated(InData%Tension)) - if (allocated(InData%Tension)) then - call RegPackBounds(Buf, 1, lbound(InData%Tension, kind=B8Ki), ubound(InData%Tension, kind=B8Ki)) - call RegPack(Buf, InData%Tension) - end if - call RegPack(Buf, allocated(InData%GSL)) - if (allocated(InData%GSL)) then - call RegPackBounds(Buf, 3, lbound(InData%GSL, kind=B8Ki), ubound(InData%GSL, kind=B8Ki)) - call RegPack(Buf, InData%GSL) - end if - call RegPack(Buf, allocated(InData%GSR)) - if (allocated(InData%GSR)) then - call RegPackBounds(Buf, 2, lbound(InData%GSR, kind=B8Ki), ubound(InData%GSR, kind=B8Ki)) - call RegPack(Buf, InData%GSR) - end if - call RegPack(Buf, allocated(InData%GE)) - if (allocated(InData%GE)) then - call RegPackBounds(Buf, 3, lbound(InData%GE, kind=B8Ki), ubound(InData%GE, kind=B8Ki)) - call RegPack(Buf, InData%GE) - end if - call RegPack(Buf, InData%NumLines) - call RegPack(Buf, InData%NumElems) - call RegPack(Buf, InData%Eps) - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, InData%WtrDens) - call RegPack(Buf, InData%MaxIter) - call RegPack(Buf, InData%SumPrint) - call RegPack(Buf, InData%OutFile) - call RegPack(Buf, InData%TabDelim) - call RegPack(Buf, InData%OutFmt) - call RegPack(Buf, InData%Tstart) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, allocated(InData%OutList)) - if (allocated(InData%OutList)) then - call RegPackBounds(Buf, 1, lbound(InData%OutList, kind=B8Ki), ubound(InData%OutList, kind=B8Ki)) - call RegPack(Buf, InData%OutList) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT) + call RegPackAlloc(RF, InData%LineCI) + call RegPackAlloc(RF, InData%LineCD) + call RegPackAlloc(RF, InData%LEAStiff) + call RegPackAlloc(RF, InData%LMassDen) + call RegPackAlloc(RF, InData%LDMassDen) + call RegPackAlloc(RF, InData%BottmStiff) + call RegPackAlloc(RF, InData%LRadAnch) + call RegPackAlloc(RF, InData%LAngAnch) + call RegPackAlloc(RF, InData%LDpthAnch) + call RegPackAlloc(RF, InData%LRadFair) + call RegPackAlloc(RF, InData%LAngFair) + call RegPackAlloc(RF, InData%LDrftFair) + call RegPackAlloc(RF, InData%LUnstrLen) + call RegPackAlloc(RF, InData%Tension) + call RegPackAlloc(RF, InData%GSL) + call RegPackAlloc(RF, InData%GSR) + call RegPackAlloc(RF, InData%GE) + call RegPack(RF, InData%NumLines) + call RegPack(RF, InData%NumElems) + call RegPack(RF, InData%Eps) + call RegPack(RF, InData%Gravity) + call RegPack(RF, InData%WtrDens) + call RegPack(RF, InData%MaxIter) + call RegPack(RF, InData%SumPrint) + call RegPack(RF, InData%OutFile) + call RegPack(RF, InData%TabDelim) + call RegPack(RF, InData%OutFmt) + call RegPack(RF, InData%Tstart) + call RegPack(RF, InData%NumOuts) + call RegPackAlloc(RF, InData%OutList) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FEAM_UnPackInputFile(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_UnPackInputFile(RF, OutData) + type(RegFile), intent(inout) :: RF type(FEAM_InputFile), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FEAM_UnPackInputFile' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%LineCI)) deallocate(OutData%LineCI) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LineCI(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LineCI.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LineCI) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LineCD)) deallocate(OutData%LineCD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LineCD(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LineCD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LineCD) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LEAStiff)) deallocate(OutData%LEAStiff) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LEAStiff(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LEAStiff.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LEAStiff) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LMassDen)) deallocate(OutData%LMassDen) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LMassDen(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LMassDen.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LMassDen) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LDMassDen)) deallocate(OutData%LDMassDen) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LDMassDen(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LDMassDen.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LDMassDen) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BottmStiff)) deallocate(OutData%BottmStiff) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BottmStiff(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BottmStiff.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BottmStiff) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LRadAnch)) deallocate(OutData%LRadAnch) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LRadAnch(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LRadAnch.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LRadAnch) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LAngAnch)) deallocate(OutData%LAngAnch) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LAngAnch(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LAngAnch.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LAngAnch) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LDpthAnch)) deallocate(OutData%LDpthAnch) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LDpthAnch(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LDpthAnch.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LDpthAnch) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LRadFair)) deallocate(OutData%LRadFair) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LRadFair(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LRadFair.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LRadFair) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LAngFair)) deallocate(OutData%LAngFair) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LAngFair(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LAngFair.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LAngFair) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LDrftFair)) deallocate(OutData%LDrftFair) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LDrftFair(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LDrftFair.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LDrftFair) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LUnstrLen)) deallocate(OutData%LUnstrLen) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LUnstrLen(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LUnstrLen.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LUnstrLen) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Tension)) deallocate(OutData%Tension) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Tension(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Tension.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Tension) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%GSL)) deallocate(OutData%GSL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GSL(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GSL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GSL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%GSR)) deallocate(OutData%GSR) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GSR(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GSR.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GSR) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%GE)) deallocate(OutData%GE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GE(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GE) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NumLines) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumElems) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Eps) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MaxIter) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SumPrint) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TabDelim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Tstart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutList)) deallocate(OutData%OutList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutList) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LineCI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LineCD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LEAStiff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LMassDen); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LDMassDen); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BottmStiff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LRadAnch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LAngAnch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LDpthAnch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LRadFair); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LAngFair); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LDrftFair); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LUnstrLen); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Tension); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%GSL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%GSR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%GE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumLines); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumElems); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Eps); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MaxIter); 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 + call RegUnpack(RF, OutData%OutFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Tstart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutList); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FEAM_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -1002,97 +683,40 @@ subroutine FEAM_DestroyInitInput(InitInputData, ErrStat, ErrMsg) end if end subroutine -subroutine FEAM_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(FEAM_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'FEAM_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%InputFile) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, InData%PtfmInit) - call RegPack(Buf, InData%NStepWave) - call RegPack(Buf, allocated(InData%WaveAcc0)) - if (allocated(InData%WaveAcc0)) then - call RegPackBounds(Buf, 3, lbound(InData%WaveAcc0, kind=B8Ki), ubound(InData%WaveAcc0, kind=B8Ki)) - call RegPack(Buf, InData%WaveAcc0) - end if - call RegPack(Buf, allocated(InData%WaveTime)) - if (allocated(InData%WaveTime)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveTime, kind=B8Ki), ubound(InData%WaveTime, kind=B8Ki)) - call RegPack(Buf, InData%WaveTime) - end if - call RegPack(Buf, allocated(InData%WaveVel0)) - if (allocated(InData%WaveVel0)) then - call RegPackBounds(Buf, 3, lbound(InData%WaveVel0, kind=B8Ki), ubound(InData%WaveVel0, kind=B8Ki)) - call RegPack(Buf, InData%WaveVel0) - end if - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, InData%WtrDens) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%InputFile) + call RegPack(RF, InData%RootName) + call RegPack(RF, InData%PtfmInit) + call RegPack(RF, InData%NStepWave) + call RegPackAlloc(RF, InData%WaveAcc0) + call RegPackAlloc(RF, InData%WaveTime) + call RegPackAlloc(RF, InData%WaveVel0) + call RegPack(RF, InData%Gravity) + call RegPack(RF, InData%WtrDens) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FEAM_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(FEAM_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FEAM_UnPackInitInput' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%InputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmInit) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NStepWave) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WaveAcc0)) deallocate(OutData%WaveAcc0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveAcc0(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveAcc0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveAcc0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveTime)) deallocate(OutData%WaveTime) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveTime(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveTime.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveTime) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveVel0)) deallocate(OutData%WaveVel0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveVel0(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveVel0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveVel0) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDens) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%InputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmInit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NStepWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveAcc0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveVel0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDens); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FEAM_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -1245,176 +869,40 @@ subroutine FEAM_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine FEAM_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(FEAM_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'FEAM_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call RegPack(Buf, allocated(InData%LAnchxi)) - if (allocated(InData%LAnchxi)) then - call RegPackBounds(Buf, 1, lbound(InData%LAnchxi, kind=B8Ki), ubound(InData%LAnchxi, kind=B8Ki)) - call RegPack(Buf, InData%LAnchxi) - end if - call RegPack(Buf, allocated(InData%LAnchyi)) - if (allocated(InData%LAnchyi)) then - call RegPackBounds(Buf, 1, lbound(InData%LAnchyi, kind=B8Ki), ubound(InData%LAnchyi, kind=B8Ki)) - call RegPack(Buf, InData%LAnchyi) - end if - call RegPack(Buf, allocated(InData%LAnchzi)) - if (allocated(InData%LAnchzi)) then - call RegPackBounds(Buf, 1, lbound(InData%LAnchzi, kind=B8Ki), ubound(InData%LAnchzi, kind=B8Ki)) - call RegPack(Buf, InData%LAnchzi) - end if - call RegPack(Buf, allocated(InData%LFairxt)) - if (allocated(InData%LFairxt)) then - call RegPackBounds(Buf, 1, lbound(InData%LFairxt, kind=B8Ki), ubound(InData%LFairxt, kind=B8Ki)) - call RegPack(Buf, InData%LFairxt) - end if - call RegPack(Buf, allocated(InData%LFairyt)) - if (allocated(InData%LFairyt)) then - call RegPackBounds(Buf, 1, lbound(InData%LFairyt, kind=B8Ki), ubound(InData%LFairyt, kind=B8Ki)) - call RegPack(Buf, InData%LFairyt) - end if - call RegPack(Buf, allocated(InData%LFairzt)) - if (allocated(InData%LFairzt)) then - call RegPackBounds(Buf, 1, lbound(InData%LFairzt, kind=B8Ki), ubound(InData%LFairzt, kind=B8Ki)) - call RegPack(Buf, InData%LFairzt) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call RegPackAlloc(RF, InData%LAnchxi) + call RegPackAlloc(RF, InData%LAnchyi) + call RegPackAlloc(RF, InData%LAnchzi) + call RegPackAlloc(RF, InData%LFairxt) + call RegPackAlloc(RF, InData%LFairyt) + call RegPackAlloc(RF, InData%LFairzt) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FEAM_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(FEAM_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FEAM_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver - if (allocated(OutData%LAnchxi)) deallocate(OutData%LAnchxi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LAnchxi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LAnchxi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LAnchxi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LAnchyi)) deallocate(OutData%LAnchyi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LAnchyi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LAnchyi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LAnchyi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LAnchzi)) deallocate(OutData%LAnchzi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LAnchzi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LAnchzi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LAnchzi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LFairxt)) deallocate(OutData%LFairxt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LFairxt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LFairxt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LFairxt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LFairyt)) deallocate(OutData%LFairyt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LFairyt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LFairyt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LFairyt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LFairzt)) deallocate(OutData%LFairzt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LFairzt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LFairzt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LFairzt) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver + call RegUnpackAlloc(RF, OutData%LAnchxi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LAnchyi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LAnchzi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LFairxt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LFairyt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LFairzt); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FEAM_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -1469,60 +957,26 @@ subroutine FEAM_DestroyContState(ContStateData, ErrStat, ErrMsg) end if end subroutine -subroutine FEAM_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(FEAM_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'FEAM_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%GLU)) - if (allocated(InData%GLU)) then - call RegPackBounds(Buf, 2, lbound(InData%GLU, kind=B8Ki), ubound(InData%GLU, kind=B8Ki)) - call RegPack(Buf, InData%GLU) - end if - call RegPack(Buf, allocated(InData%GLDU)) - if (allocated(InData%GLDU)) then - call RegPackBounds(Buf, 2, lbound(InData%GLDU, kind=B8Ki), ubound(InData%GLDU, kind=B8Ki)) - call RegPack(Buf, InData%GLDU) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%GLU) + call RegPackAlloc(RF, InData%GLDU) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FEAM_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(FEAM_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FEAM_UnPackContState' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%GLU)) deallocate(OutData%GLU) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GLU(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GLU.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GLU) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%GLDU)) deallocate(OutData%GLDU) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GLDU(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GLDU.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GLDU) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%GLU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%GLDU); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FEAM_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -1546,22 +1000,21 @@ subroutine FEAM_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine FEAM_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(FEAM_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'FEAM_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyDiscState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FEAM_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(FEAM_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FEAM_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyDiscState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FEAM_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -1586,25 +1039,23 @@ subroutine FEAM_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine FEAM_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(FEAM_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'FEAM_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%TSN) - call RegPack(Buf, InData%TZER) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%TSN) + call RegPack(RF, InData%TZER) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FEAM_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(FEAM_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FEAM_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%TSN) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TZER) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%TSN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TZER); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FEAM_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -1724,151 +1175,44 @@ subroutine FEAM_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) end if end subroutine -subroutine FEAM_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(FEAM_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'FEAM_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%GLU0)) - if (allocated(InData%GLU0)) then - call RegPackBounds(Buf, 2, lbound(InData%GLU0, kind=B8Ki), ubound(InData%GLU0, kind=B8Ki)) - call RegPack(Buf, InData%GLU0) - end if - call RegPack(Buf, allocated(InData%GLDDU)) - if (allocated(InData%GLDDU)) then - call RegPackBounds(Buf, 2, lbound(InData%GLDDU, kind=B8Ki), ubound(InData%GLDDU, kind=B8Ki)) - call RegPack(Buf, InData%GLDDU) - end if - call RegPack(Buf, InData%BottomTouch) - call RegPack(Buf, allocated(InData%GFORC0)) - if (allocated(InData%GFORC0)) then - call RegPackBounds(Buf, 3, lbound(InData%GFORC0, kind=B8Ki), ubound(InData%GFORC0, kind=B8Ki)) - call RegPack(Buf, InData%GFORC0) - end if - call RegPack(Buf, allocated(InData%GMASS0)) - if (allocated(InData%GMASS0)) then - call RegPackBounds(Buf, 4, lbound(InData%GMASS0, kind=B8Ki), ubound(InData%GMASS0, kind=B8Ki)) - call RegPack(Buf, InData%GMASS0) - end if - call RegPack(Buf, allocated(InData%FAST_FPA)) - if (allocated(InData%FAST_FPA)) then - call RegPackBounds(Buf, 2, lbound(InData%FAST_FPA, kind=B8Ki), ubound(InData%FAST_FPA, kind=B8Ki)) - call RegPack(Buf, InData%FAST_FPA) - end if - call RegPack(Buf, allocated(InData%FAST_RP)) - if (allocated(InData%FAST_RP)) then - call RegPackBounds(Buf, 2, lbound(InData%FAST_RP, kind=B8Ki), ubound(InData%FAST_RP, kind=B8Ki)) - call RegPack(Buf, InData%FAST_RP) - end if - call RegPack(Buf, InData%INCR) - call RegPack(Buf, InData%RSDF) - call RegPack(Buf, InData%FORC0) - call RegPack(Buf, InData%EMAS0) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%GLU0) + call RegPackAlloc(RF, InData%GLDDU) + call RegPack(RF, InData%BottomTouch) + call RegPackAlloc(RF, InData%GFORC0) + call RegPackAlloc(RF, InData%GMASS0) + call RegPackAlloc(RF, InData%FAST_FPA) + call RegPackAlloc(RF, InData%FAST_RP) + call RegPack(RF, InData%INCR) + call RegPack(RF, InData%RSDF) + call RegPack(RF, InData%FORC0) + call RegPack(RF, InData%EMAS0) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FEAM_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(FEAM_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FEAM_UnPackOtherState' integer(B8Ki) :: LB(4), UB(4) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%GLU0)) deallocate(OutData%GLU0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GLU0(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GLU0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GLU0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%GLDDU)) deallocate(OutData%GLDDU) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GLDDU(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GLDDU.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GLDDU) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%BottomTouch) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%GFORC0)) deallocate(OutData%GFORC0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GFORC0(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GFORC0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GFORC0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%GMASS0)) deallocate(OutData%GMASS0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GMASS0(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GMASS0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GMASS0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FAST_FPA)) deallocate(OutData%FAST_FPA) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FAST_FPA(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FAST_FPA.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FAST_FPA) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FAST_RP)) deallocate(OutData%FAST_RP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FAST_RP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FAST_RP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FAST_RP) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%INCR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RSDF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FORC0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EMAS0) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%GLU0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%GLDDU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BottomTouch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%GFORC0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%GMASS0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FAST_FPA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FAST_RP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%INCR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RSDF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FORC0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EMAS0); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FEAM_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -2057,254 +1401,70 @@ subroutine FEAM_DestroyMisc(MiscData, ErrStat, ErrMsg) end if end subroutine -subroutine FEAM_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(FEAM_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'FEAM_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%GLF)) - if (allocated(InData%GLF)) then - call RegPackBounds(Buf, 2, lbound(InData%GLF, kind=B8Ki), ubound(InData%GLF, kind=B8Ki)) - call RegPack(Buf, InData%GLF) - end if - call RegPack(Buf, allocated(InData%GLK)) - if (allocated(InData%GLK)) then - call RegPackBounds(Buf, 3, lbound(InData%GLK, kind=B8Ki), ubound(InData%GLK, kind=B8Ki)) - call RegPack(Buf, InData%GLK) - end if - call RegPack(Buf, InData%EMASS) - call RegPack(Buf, InData%ESTIF) - call RegPack(Buf, allocated(InData%FAST_FP)) - if (allocated(InData%FAST_FP)) then - call RegPackBounds(Buf, 2, lbound(InData%FAST_FP, kind=B8Ki), ubound(InData%FAST_FP, kind=B8Ki)) - call RegPack(Buf, InData%FAST_FP) - end if - call RegPack(Buf, InData%FORCE) - call RegPack(Buf, InData%FP) - call RegPack(Buf, InData%U) - call RegPack(Buf, InData%U0) - call RegPack(Buf, InData%DU) - call RegPack(Buf, InData%DDU) - call RegPack(Buf, InData%R) - call RegPack(Buf, InData%RP) - call RegPack(Buf, InData%RHSR) - call RegPack(Buf, InData%SLIN) - call RegPack(Buf, InData%STIFR) - call RegPack(Buf, allocated(InData%FAIR_ANG)) - if (allocated(InData%FAIR_ANG)) then - call RegPackBounds(Buf, 2, lbound(InData%FAIR_ANG, kind=B8Ki), ubound(InData%FAIR_ANG, kind=B8Ki)) - call RegPack(Buf, InData%FAIR_ANG) - end if - call RegPack(Buf, allocated(InData%FAIR_T)) - if (allocated(InData%FAIR_T)) then - call RegPackBounds(Buf, 1, lbound(InData%FAIR_T, kind=B8Ki), ubound(InData%FAIR_T, kind=B8Ki)) - call RegPack(Buf, InData%FAIR_T) - end if - call RegPack(Buf, allocated(InData%ANCH_ANG)) - if (allocated(InData%ANCH_ANG)) then - call RegPackBounds(Buf, 2, lbound(InData%ANCH_ANG, kind=B8Ki), ubound(InData%ANCH_ANG, kind=B8Ki)) - call RegPack(Buf, InData%ANCH_ANG) - end if - call RegPack(Buf, allocated(InData%ANCH_T)) - if (allocated(InData%ANCH_T)) then - call RegPackBounds(Buf, 1, lbound(InData%ANCH_T, kind=B8Ki), ubound(InData%ANCH_T, kind=B8Ki)) - call RegPack(Buf, InData%ANCH_T) - end if - call RegPack(Buf, allocated(InData%Line_Coordinate)) - if (allocated(InData%Line_Coordinate)) then - call RegPackBounds(Buf, 3, lbound(InData%Line_Coordinate, kind=B8Ki), ubound(InData%Line_Coordinate, kind=B8Ki)) - call RegPack(Buf, InData%Line_Coordinate) - end if - call RegPack(Buf, allocated(InData%Line_Tangent)) - if (allocated(InData%Line_Tangent)) then - call RegPackBounds(Buf, 3, lbound(InData%Line_Tangent, kind=B8Ki), ubound(InData%Line_Tangent, kind=B8Ki)) - call RegPack(Buf, InData%Line_Tangent) - end if - call RegPack(Buf, allocated(InData%F_Lines)) - if (allocated(InData%F_Lines)) then - call RegPackBounds(Buf, 2, lbound(InData%F_Lines, kind=B8Ki), ubound(InData%F_Lines, kind=B8Ki)) - call RegPack(Buf, InData%F_Lines) - end if - call RegPack(Buf, InData%LastIndWave) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%GLF) + call RegPackAlloc(RF, InData%GLK) + call RegPack(RF, InData%EMASS) + call RegPack(RF, InData%ESTIF) + call RegPackAlloc(RF, InData%FAST_FP) + call RegPack(RF, InData%FORCE) + call RegPack(RF, InData%FP) + call RegPack(RF, InData%U) + call RegPack(RF, InData%U0) + call RegPack(RF, InData%DU) + call RegPack(RF, InData%DDU) + call RegPack(RF, InData%R) + call RegPack(RF, InData%RP) + call RegPack(RF, InData%RHSR) + call RegPack(RF, InData%SLIN) + call RegPack(RF, InData%STIFR) + call RegPackAlloc(RF, InData%FAIR_ANG) + call RegPackAlloc(RF, InData%FAIR_T) + call RegPackAlloc(RF, InData%ANCH_ANG) + call RegPackAlloc(RF, InData%ANCH_T) + call RegPackAlloc(RF, InData%Line_Coordinate) + call RegPackAlloc(RF, InData%Line_Tangent) + call RegPackAlloc(RF, InData%F_Lines) + call RegPack(RF, InData%LastIndWave) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FEAM_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(FEAM_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FEAM_UnPackMisc' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%GLF)) deallocate(OutData%GLF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GLF(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GLF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GLF) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%GLK)) deallocate(OutData%GLK) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GLK(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GLK.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GLK) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%EMASS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ESTIF) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%FAST_FP)) deallocate(OutData%FAST_FP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FAST_FP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FAST_FP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FAST_FP) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%FORCE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%U) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%U0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DU) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DDU) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%R) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RHSR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SLIN) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%STIFR) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%FAIR_ANG)) deallocate(OutData%FAIR_ANG) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FAIR_ANG(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FAIR_ANG.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FAIR_ANG) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FAIR_T)) deallocate(OutData%FAIR_T) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FAIR_T(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FAIR_T.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FAIR_T) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ANCH_ANG)) deallocate(OutData%ANCH_ANG) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ANCH_ANG(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ANCH_ANG.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ANCH_ANG) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ANCH_T)) deallocate(OutData%ANCH_T) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ANCH_T(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ANCH_T.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ANCH_T) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Line_Coordinate)) deallocate(OutData%Line_Coordinate) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Line_Coordinate(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Line_Coordinate.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Line_Coordinate) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Line_Tangent)) deallocate(OutData%Line_Tangent) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Line_Tangent(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Line_Tangent.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Line_Tangent) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_Lines)) deallocate(OutData%F_Lines) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_Lines(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_Lines.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_Lines) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%LastIndWave) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%GLF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%GLK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EMASS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ESTIF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FAST_FP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FORCE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%U); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%U0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DDU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%R); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RHSR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SLIN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%STIFR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FAIR_ANG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FAIR_T); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ANCH_ANG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ANCH_T); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Line_Coordinate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Line_Tangent); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_Lines); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LastIndWave); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FEAM_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -2649,474 +1809,149 @@ subroutine FEAM_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine FEAM_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(FEAM_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'FEAM_PackParam' integer(B8Ki) :: i1, i2, i3, i4 integer(B8Ki) :: LB(4), UB(4) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT) - call RegPack(Buf, InData%GRAV) - call RegPack(Buf, InData%Eps) - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, InData%WtrDens) - call RegPack(Buf, InData%MaxIter) - call RegPack(Buf, InData%NHBD) - call RegPack(Buf, InData%NDIM) - call RegPack(Buf, allocated(InData%NEQ)) - if (allocated(InData%NEQ)) then - call RegPackBounds(Buf, 1, lbound(InData%NEQ, kind=B8Ki), ubound(InData%NEQ, kind=B8Ki)) - call RegPack(Buf, InData%NEQ) - end if - call RegPack(Buf, InData%NBAND) - call RegPack(Buf, InData%NumLines) - call RegPack(Buf, InData%NumElems) - call RegPack(Buf, InData%NumNodes) - call RegPack(Buf, allocated(InData%GSL)) - if (allocated(InData%GSL)) then - call RegPackBounds(Buf, 3, lbound(InData%GSL, kind=B8Ki), ubound(InData%GSL, kind=B8Ki)) - call RegPack(Buf, InData%GSL) - end if - call RegPack(Buf, allocated(InData%GP)) - if (allocated(InData%GP)) then - call RegPackBounds(Buf, 2, lbound(InData%GP, kind=B8Ki), ubound(InData%GP, kind=B8Ki)) - call RegPack(Buf, InData%GP) - end if - call RegPack(Buf, allocated(InData%Elength)) - if (allocated(InData%Elength)) then - call RegPackBounds(Buf, 1, lbound(InData%Elength, kind=B8Ki), ubound(InData%Elength, kind=B8Ki)) - call RegPack(Buf, InData%Elength) - end if - call RegPack(Buf, allocated(InData%BottmElev)) - if (allocated(InData%BottmElev)) then - call RegPackBounds(Buf, 1, lbound(InData%BottmElev, kind=B8Ki), ubound(InData%BottmElev, kind=B8Ki)) - call RegPack(Buf, InData%BottmElev) - end if - call RegPack(Buf, allocated(InData%BottmStiff)) - if (allocated(InData%BottmStiff)) then - call RegPackBounds(Buf, 1, lbound(InData%BottmStiff, kind=B8Ki), ubound(InData%BottmStiff, kind=B8Ki)) - call RegPack(Buf, InData%BottmStiff) - end if - call RegPack(Buf, allocated(InData%LMassDen)) - if (allocated(InData%LMassDen)) then - call RegPackBounds(Buf, 1, lbound(InData%LMassDen, kind=B8Ki), ubound(InData%LMassDen, kind=B8Ki)) - call RegPack(Buf, InData%LMassDen) - end if - call RegPack(Buf, allocated(InData%LDMassDen)) - if (allocated(InData%LDMassDen)) then - call RegPackBounds(Buf, 1, lbound(InData%LDMassDen, kind=B8Ki), ubound(InData%LDMassDen, kind=B8Ki)) - call RegPack(Buf, InData%LDMassDen) - end if - call RegPack(Buf, allocated(InData%LEAStiff)) - if (allocated(InData%LEAStiff)) then - call RegPackBounds(Buf, 1, lbound(InData%LEAStiff, kind=B8Ki), ubound(InData%LEAStiff, kind=B8Ki)) - call RegPack(Buf, InData%LEAStiff) - end if - call RegPack(Buf, allocated(InData%LineCI)) - if (allocated(InData%LineCI)) then - call RegPackBounds(Buf, 1, lbound(InData%LineCI, kind=B8Ki), ubound(InData%LineCI, kind=B8Ki)) - call RegPack(Buf, InData%LineCI) - end if - call RegPack(Buf, allocated(InData%LineCD)) - if (allocated(InData%LineCD)) then - call RegPackBounds(Buf, 1, lbound(InData%LineCD, kind=B8Ki), ubound(InData%LineCD, kind=B8Ki)) - call RegPack(Buf, InData%LineCD) - end if - call RegPack(Buf, allocated(InData%Bvp)) - if (allocated(InData%Bvp)) then - call RegPackBounds(Buf, 2, lbound(InData%Bvp, kind=B8Ki), ubound(InData%Bvp, kind=B8Ki)) - call RegPack(Buf, InData%Bvp) - end if - call RegPack(Buf, allocated(InData%WaveAcc0)) - if (allocated(InData%WaveAcc0)) then - call RegPackBounds(Buf, 3, lbound(InData%WaveAcc0, kind=B8Ki), ubound(InData%WaveAcc0, kind=B8Ki)) - call RegPack(Buf, InData%WaveAcc0) - end if - call RegPack(Buf, allocated(InData%WaveTime)) - if (allocated(InData%WaveTime)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveTime, kind=B8Ki), ubound(InData%WaveTime, kind=B8Ki)) - call RegPack(Buf, InData%WaveTime) - end if - call RegPack(Buf, allocated(InData%WaveVel0)) - if (allocated(InData%WaveVel0)) then - call RegPackBounds(Buf, 3, lbound(InData%WaveVel0, kind=B8Ki), ubound(InData%WaveVel0, kind=B8Ki)) - call RegPack(Buf, InData%WaveVel0) - end if - call RegPack(Buf, InData%NStepWave) - call RegPack(Buf, InData%SHAP) - call RegPack(Buf, InData%SHAPS) - call RegPack(Buf, InData%GAUSSW) - call RegPack(Buf, InData%NGAUSS) - call RegPack(Buf, InData%SHAPT) - call RegPack(Buf, InData%SHAPTS) - call RegPack(Buf, InData%NTRAP) - call RegPack(Buf, InData%SBEND) - call RegPack(Buf, InData%STEN) - call RegPack(Buf, InData%RMASS) - call RegPack(Buf, InData%RADDM) - call RegPack(Buf, InData%PMPN) - call RegPack(Buf, InData%AM) - call RegPack(Buf, InData%PM) - call RegPack(Buf, InData%IDOF) - call RegPack(Buf, InData%JDOF) - call RegPack(Buf, InData%PPA) - call RegPack(Buf, InData%PtfmRefzt) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, allocated(InData%OutParam)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT) + call RegPack(RF, InData%GRAV) + call RegPack(RF, InData%Eps) + call RegPack(RF, InData%Gravity) + call RegPack(RF, InData%WtrDens) + call RegPack(RF, InData%MaxIter) + call RegPack(RF, InData%NHBD) + call RegPack(RF, InData%NDIM) + call RegPackAlloc(RF, InData%NEQ) + call RegPack(RF, InData%NBAND) + call RegPack(RF, InData%NumLines) + call RegPack(RF, InData%NumElems) + call RegPack(RF, InData%NumNodes) + call RegPackAlloc(RF, InData%GSL) + call RegPackAlloc(RF, InData%GP) + call RegPackAlloc(RF, InData%Elength) + call RegPackAlloc(RF, InData%BottmElev) + call RegPackAlloc(RF, InData%BottmStiff) + call RegPackAlloc(RF, InData%LMassDen) + call RegPackAlloc(RF, InData%LDMassDen) + call RegPackAlloc(RF, InData%LEAStiff) + call RegPackAlloc(RF, InData%LineCI) + call RegPackAlloc(RF, InData%LineCD) + call RegPackAlloc(RF, InData%Bvp) + call RegPackAlloc(RF, InData%WaveAcc0) + call RegPackAlloc(RF, InData%WaveTime) + call RegPackAlloc(RF, InData%WaveVel0) + call RegPack(RF, InData%NStepWave) + call RegPack(RF, InData%SHAP) + call RegPack(RF, InData%SHAPS) + call RegPack(RF, InData%GAUSSW) + call RegPack(RF, InData%NGAUSS) + call RegPack(RF, InData%SHAPT) + call RegPack(RF, InData%SHAPTS) + call RegPack(RF, InData%NTRAP) + call RegPack(RF, InData%SBEND) + call RegPack(RF, InData%STEN) + call RegPack(RF, InData%RMASS) + call RegPack(RF, InData%RADDM) + call RegPack(RF, InData%PMPN) + call RegPack(RF, InData%AM) + call RegPack(RF, InData%PM) + call RegPack(RF, InData%IDOF) + call RegPack(RF, InData%JDOF) + call RegPack(RF, InData%PPA) + call RegPack(RF, InData%PtfmRefzt) + call RegPack(RF, InData%NumOuts) + call RegPack(RF, InData%RootName) + call RegPack(RF, allocated(InData%OutParam)) if (allocated(InData%OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) LB(1:1) = lbound(InData%OutParam, kind=B8Ki) UB(1:1) = ubound(InData%OutParam, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackOutParmType(Buf, InData%OutParam(i1)) + call NWTC_Library_PackOutParmType(RF, InData%OutParam(i1)) end do end if - call RegPack(Buf, InData%Delim) - call RegPack(Buf, allocated(InData%GLUZR)) - if (allocated(InData%GLUZR)) then - call RegPackBounds(Buf, 3, lbound(InData%GLUZR, kind=B8Ki), ubound(InData%GLUZR, kind=B8Ki)) - call RegPack(Buf, InData%GLUZR) - end if - call RegPack(Buf, allocated(InData%GTZER)) - if (allocated(InData%GTZER)) then - call RegPackBounds(Buf, 2, lbound(InData%GTZER, kind=B8Ki), ubound(InData%GTZER, kind=B8Ki)) - call RegPack(Buf, InData%GTZER) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%Delim) + call RegPackAlloc(RF, InData%GLUZR) + call RegPackAlloc(RF, InData%GTZER) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FEAM_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(FEAM_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FEAM_UnPackParam' integer(B8Ki) :: i1, i2, i3, i4 integer(B8Ki) :: LB(4), UB(4) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GRAV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Eps) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MaxIter) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NHBD) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NDIM) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%NEQ)) deallocate(OutData%NEQ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NEQ(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NEQ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NEQ) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NBAND) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumLines) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumElems) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumNodes) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%GSL)) deallocate(OutData%GSL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GSL(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GSL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GSL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%GP)) deallocate(OutData%GP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Elength)) deallocate(OutData%Elength) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Elength(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Elength.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Elength) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BottmElev)) deallocate(OutData%BottmElev) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BottmElev(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BottmElev.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BottmElev) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BottmStiff)) deallocate(OutData%BottmStiff) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BottmStiff(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BottmStiff.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BottmStiff) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LMassDen)) deallocate(OutData%LMassDen) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LMassDen(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LMassDen.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LMassDen) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LDMassDen)) deallocate(OutData%LDMassDen) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LDMassDen(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LDMassDen.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LDMassDen) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LEAStiff)) deallocate(OutData%LEAStiff) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LEAStiff(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LEAStiff.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LEAStiff) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LineCI)) deallocate(OutData%LineCI) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LineCI(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LineCI.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LineCI) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LineCD)) deallocate(OutData%LineCD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LineCD(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LineCD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LineCD) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Bvp)) deallocate(OutData%Bvp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Bvp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Bvp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Bvp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveAcc0)) deallocate(OutData%WaveAcc0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveAcc0(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveAcc0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveAcc0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveTime)) deallocate(OutData%WaveTime) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveTime(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveTime.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveTime) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveVel0)) deallocate(OutData%WaveVel0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveVel0(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveVel0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveVel0) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NStepWave) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SHAP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SHAPS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GAUSSW) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NGAUSS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SHAPT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SHAPTS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NTRAP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SBEND) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%STEN) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RMASS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RADDM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PMPN) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%IDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%JDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PPA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmRefzt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GRAV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Eps); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MaxIter); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NHBD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NDIM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NEQ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NBAND); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumLines); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumElems); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%GSL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%GP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Elength); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BottmElev); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BottmStiff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LMassDen); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LDMassDen); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LEAStiff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LineCI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LineCD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Bvp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveAcc0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveVel0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NStepWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SHAP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SHAPS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GAUSSW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NGAUSS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SHAPT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SHAPTS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NTRAP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SBEND); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%STEN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RMASS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RADDM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PMPN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%JDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PPA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmRefzt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%OutParam)) deallocate(OutData%OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackOutParmType(Buf, OutData%OutParam(i1)) ! OutParam + call NWTC_Library_UnpackOutParmType(RF, OutData%OutParam(i1)) ! OutParam end do end if - call RegUnpack(Buf, OutData%Delim) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%GLUZR)) deallocate(OutData%GLUZR) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GLUZR(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GLUZR.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GLUZR) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%GTZER)) deallocate(OutData%GTZER) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GTZER(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GTZER.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GTZER) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpack(RF, OutData%Delim); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%GLUZR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%GTZER); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FEAM_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -3153,23 +1988,23 @@ subroutine FEAM_DestroyInput(InputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine FEAM_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(FEAM_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'FEAM_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%HydroForceLineMesh) - call MeshPack(Buf, InData%PtFairleadDisplacement) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%HydroForceLineMesh) + call MeshPack(RF, InData%PtFairleadDisplacement) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FEAM_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(FEAM_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FEAM_UnPackInput' - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%HydroForceLineMesh) ! HydroForceLineMesh - call MeshUnpack(Buf, OutData%PtFairleadDisplacement) ! PtFairleadDisplacement + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%HydroForceLineMesh) ! HydroForceLineMesh + call MeshUnpack(RF, OutData%PtFairleadDisplacement) ! PtFairleadDisplacement end subroutine subroutine FEAM_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -3222,45 +2057,28 @@ subroutine FEAM_DestroyOutput(OutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine FEAM_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(FEAM_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'FEAM_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - call MeshPack(Buf, InData%PtFairleadLoad) - call MeshPack(Buf, InData%LineMeshPosition) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WriteOutput) + call MeshPack(RF, InData%PtFairleadLoad) + call MeshPack(RF, InData%LineMeshPosition) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FEAM_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FEAM_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(FEAM_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FEAM_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if - call MeshUnpack(Buf, OutData%PtFairleadLoad) ! PtFairleadLoad - call MeshUnpack(Buf, OutData%LineMeshPosition) ! LineMeshPosition + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return + call MeshUnpack(RF, OutData%PtFairleadLoad) ! PtFairleadLoad + call MeshUnpack(RF, OutData%LineMeshPosition) ! LineMeshPosition end subroutine subroutine FEAM_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/hydrodyn/src/Conv_Radiation_Types.f90 b/modules/hydrodyn/src/Conv_Radiation_Types.f90 index 88f18e81de..4b47ee2a95 100644 --- a/modules/hydrodyn/src/Conv_Radiation_Types.f90 +++ b/modules/hydrodyn/src/Conv_Radiation_Types.f90 @@ -174,100 +174,42 @@ subroutine Conv_Rdtn_DestroyInitInput(InitInputData, ErrStat, ErrMsg) end if end subroutine -subroutine Conv_Rdtn_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Conv_Rdtn_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%RdtnDT) - call RegPack(Buf, InData%RdtnDTChr) - call RegPack(Buf, InData%NBody) - call RegPack(Buf, InData%HighFreq) - call RegPack(Buf, InData%WAMITFile) - call RegPack(Buf, allocated(InData%HdroAddMs)) - if (allocated(InData%HdroAddMs)) then - call RegPackBounds(Buf, 3, lbound(InData%HdroAddMs, kind=B8Ki), ubound(InData%HdroAddMs, kind=B8Ki)) - call RegPack(Buf, InData%HdroAddMs) - end if - call RegPack(Buf, allocated(InData%HdroFreq)) - if (allocated(InData%HdroFreq)) then - call RegPackBounds(Buf, 1, lbound(InData%HdroFreq, kind=B8Ki), ubound(InData%HdroFreq, kind=B8Ki)) - call RegPack(Buf, InData%HdroFreq) - end if - call RegPack(Buf, allocated(InData%HdroDmpng)) - if (allocated(InData%HdroDmpng)) then - call RegPackBounds(Buf, 3, lbound(InData%HdroDmpng, kind=B8Ki), ubound(InData%HdroDmpng, kind=B8Ki)) - call RegPack(Buf, InData%HdroDmpng) - end if - call RegPack(Buf, InData%NInpFreq) - call RegPack(Buf, InData%RdtnTMax) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine Conv_Rdtn_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%RdtnDT) + call RegPack(RF, InData%RdtnDTChr) + call RegPack(RF, InData%NBody) + call RegPack(RF, InData%HighFreq) + call RegPack(RF, InData%WAMITFile) + call RegPackAlloc(RF, InData%HdroAddMs) + call RegPackAlloc(RF, InData%HdroFreq) + call RegPackAlloc(RF, InData%HdroDmpng) + call RegPack(RF, InData%NInpFreq) + call RegPack(RF, InData%RdtnTMax) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine Conv_Rdtn_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Conv_Rdtn_UnPackInitInput' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%RdtnDT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RdtnDTChr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NBody) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HighFreq) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WAMITFile) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%HdroAddMs)) deallocate(OutData%HdroAddMs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%HdroAddMs(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%HdroAddMs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%HdroAddMs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%HdroFreq)) deallocate(OutData%HdroFreq) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%HdroFreq(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%HdroFreq.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%HdroFreq) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%HdroDmpng)) deallocate(OutData%HdroDmpng) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%HdroDmpng(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%HdroDmpng.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%HdroDmpng) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NInpFreq) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RdtnTMax) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + 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%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 + call RegUnpackAlloc(RF, OutData%HdroFreq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%HdroDmpng); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NInpFreq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RdtnTMax); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Conv_Rdtn_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -291,22 +233,21 @@ subroutine Conv_Rdtn_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Conv_Rdtn_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Conv_Rdtn_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyInitOut) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyInitOut) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Conv_Rdtn_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Conv_Rdtn_UnPackInitOutput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyInitOut) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyInitOut); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Conv_Rdtn_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -330,22 +271,21 @@ subroutine Conv_Rdtn_DestroyContState(ContStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Conv_Rdtn_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'Conv_Rdtn_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyContState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyContState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Conv_Rdtn_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Conv_Rdtn_UnPackContState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyContState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyContState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Conv_Rdtn_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -386,44 +326,26 @@ subroutine Conv_Rdtn_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) end if end subroutine -subroutine Conv_Rdtn_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'Conv_Rdtn_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%XDHistory)) - if (allocated(InData%XDHistory)) then - call RegPackBounds(Buf, 2, lbound(InData%XDHistory, kind=B8Ki), ubound(InData%XDHistory, kind=B8Ki)) - call RegPack(Buf, InData%XDHistory) - end if - call RegPack(Buf, InData%LastTime) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%XDHistory) + call RegPack(RF, InData%LastTime) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Conv_Rdtn_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Conv_Rdtn_UnPackDiscState' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%XDHistory)) deallocate(OutData%XDHistory) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%XDHistory(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%XDHistory.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%XDHistory) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%LastTime) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%XDHistory); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LastTime); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Conv_Rdtn_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -447,22 +369,21 @@ subroutine Conv_Rdtn_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Conv_Rdtn_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'Conv_Rdtn_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstrState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Conv_Rdtn_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Conv_Rdtn_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstrState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Conv_Rdtn_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -486,22 +407,21 @@ subroutine Conv_Rdtn_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Conv_Rdtn_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'Conv_Rdtn_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%IndRdtn) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%IndRdtn) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Conv_Rdtn_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Conv_Rdtn_UnPackOtherState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%IndRdtn) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%IndRdtn); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Conv_Rdtn_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -525,22 +445,21 @@ subroutine Conv_Rdtn_DestroyMisc(MiscData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Conv_Rdtn_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'Conv_Rdtn_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%LastIndRdtn) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%LastIndRdtn) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Conv_Rdtn_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Conv_Rdtn_UnPackMisc' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%LastIndRdtn) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%LastIndRdtn); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Conv_Rdtn_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -585,56 +504,34 @@ subroutine Conv_Rdtn_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine Conv_Rdtn_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'Conv_Rdtn_PackParam' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT) - call RegPack(Buf, InData%RdtnDT) - call RegPack(Buf, InData%NBody) - call RegPack(Buf, allocated(InData%RdtnKrnl)) - if (allocated(InData%RdtnKrnl)) then - call RegPackBounds(Buf, 3, lbound(InData%RdtnKrnl, kind=B8Ki), ubound(InData%RdtnKrnl, kind=B8Ki)) - call RegPack(Buf, InData%RdtnKrnl) - end if - call RegPack(Buf, InData%NStepRdtn) - call RegPack(Buf, InData%NStepRdtn1) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine Conv_Rdtn_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT) + call RegPack(RF, InData%RdtnDT) + call RegPack(RF, InData%NBody) + call RegPackAlloc(RF, InData%RdtnKrnl) + call RegPack(RF, InData%NStepRdtn) + call RegPack(RF, InData%NStepRdtn1) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine Conv_Rdtn_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Conv_Rdtn_UnPackParam' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RdtnDT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NBody) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%RdtnKrnl)) deallocate(OutData%RdtnKrnl) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RdtnKrnl(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RdtnKrnl.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RdtnKrnl) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NStepRdtn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NStepRdtn1) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + 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 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 end subroutine subroutine Conv_Rdtn_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -674,41 +571,24 @@ subroutine Conv_Rdtn_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine Conv_Rdtn_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Conv_Rdtn_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Velocity)) - if (allocated(InData%Velocity)) then - call RegPackBounds(Buf, 1, lbound(InData%Velocity, kind=B8Ki), ubound(InData%Velocity, kind=B8Ki)) - call RegPack(Buf, InData%Velocity) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%Velocity) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Conv_Rdtn_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Conv_Rdtn_UnPackInput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%Velocity)) deallocate(OutData%Velocity) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Velocity(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Velocity.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Velocity) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%Velocity); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Conv_Rdtn_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -748,41 +628,24 @@ subroutine Conv_Rdtn_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine Conv_Rdtn_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Conv_Rdtn_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%F_Rdtn)) - if (allocated(InData%F_Rdtn)) then - call RegPackBounds(Buf, 1, lbound(InData%F_Rdtn, kind=B8Ki), ubound(InData%F_Rdtn, kind=B8Ki)) - call RegPack(Buf, InData%F_Rdtn) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%F_Rdtn) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Conv_Rdtn_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Conv_Rdtn_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Conv_Rdtn_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Conv_Rdtn_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%F_Rdtn)) deallocate(OutData%F_Rdtn) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_Rdtn(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_Rdtn.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_Rdtn) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%F_Rdtn); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Conv_Rdtn_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/hydrodyn/src/HydroDyn_Types.f90 b/modules/hydrodyn/src/HydroDyn_Types.f90 index 54102ff6d8..d0c6fac27f 100644 --- a/modules/hydrodyn/src/HydroDyn_Types.f90 +++ b/modules/hydrodyn/src/HydroDyn_Types.f90 @@ -487,361 +487,90 @@ subroutine HydroDyn_DestroyInputFile(InputFileData, ErrStat, ErrMsg) end if end subroutine -subroutine HydroDyn_PackInputFile(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_PackInputFile(RF, Indata) + type(RegFile), intent(inout) :: RF type(HydroDyn_InputFile), intent(in) :: InData character(*), parameter :: RoutineName = 'HydroDyn_PackInputFile' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%EchoFlag) - call RegPack(Buf, allocated(InData%AddF0)) - if (allocated(InData%AddF0)) then - call RegPackBounds(Buf, 2, lbound(InData%AddF0, kind=B8Ki), ubound(InData%AddF0, kind=B8Ki)) - call RegPack(Buf, InData%AddF0) - end if - call RegPack(Buf, allocated(InData%AddCLin)) - if (allocated(InData%AddCLin)) then - call RegPackBounds(Buf, 3, lbound(InData%AddCLin, kind=B8Ki), ubound(InData%AddCLin, kind=B8Ki)) - call RegPack(Buf, InData%AddCLin) - end if - call RegPack(Buf, allocated(InData%AddBLin)) - if (allocated(InData%AddBLin)) then - call RegPackBounds(Buf, 3, lbound(InData%AddBLin, kind=B8Ki), ubound(InData%AddBLin, kind=B8Ki)) - call RegPack(Buf, InData%AddBLin) - end if - call RegPack(Buf, allocated(InData%AddBQuad)) - if (allocated(InData%AddBQuad)) then - call RegPackBounds(Buf, 3, lbound(InData%AddBQuad, kind=B8Ki), ubound(InData%AddBQuad, kind=B8Ki)) - call RegPack(Buf, InData%AddBQuad) - end if - call RegPack(Buf, allocated(InData%PotFile)) - if (allocated(InData%PotFile)) then - call RegPackBounds(Buf, 1, lbound(InData%PotFile, kind=B8Ki), ubound(InData%PotFile, kind=B8Ki)) - call RegPack(Buf, InData%PotFile) - end if - call RegPack(Buf, InData%nWAMITObj) - call RegPack(Buf, InData%vecMultiplier) - call RegPack(Buf, InData%NBody) - call RegPack(Buf, InData%NBodyMod) - call RegPack(Buf, allocated(InData%PtfmVol0)) - if (allocated(InData%PtfmVol0)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmVol0, kind=B8Ki), ubound(InData%PtfmVol0, kind=B8Ki)) - call RegPack(Buf, InData%PtfmVol0) - end if - call RegPack(Buf, InData%HasWAMIT) - call RegPack(Buf, allocated(InData%WAMITULEN)) - if (allocated(InData%WAMITULEN)) then - call RegPackBounds(Buf, 1, lbound(InData%WAMITULEN, kind=B8Ki), ubound(InData%WAMITULEN, kind=B8Ki)) - call RegPack(Buf, InData%WAMITULEN) - end if - call RegPack(Buf, allocated(InData%PtfmRefxt)) - if (allocated(InData%PtfmRefxt)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmRefxt, kind=B8Ki), ubound(InData%PtfmRefxt, kind=B8Ki)) - call RegPack(Buf, InData%PtfmRefxt) - end if - call RegPack(Buf, allocated(InData%PtfmRefyt)) - if (allocated(InData%PtfmRefyt)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmRefyt, kind=B8Ki), ubound(InData%PtfmRefyt, kind=B8Ki)) - call RegPack(Buf, InData%PtfmRefyt) - end if - call RegPack(Buf, allocated(InData%PtfmRefzt)) - if (allocated(InData%PtfmRefzt)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmRefzt, kind=B8Ki), ubound(InData%PtfmRefzt, kind=B8Ki)) - call RegPack(Buf, InData%PtfmRefzt) - end if - call RegPack(Buf, allocated(InData%PtfmRefztRot)) - if (allocated(InData%PtfmRefztRot)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmRefztRot, kind=B8Ki), ubound(InData%PtfmRefztRot, kind=B8Ki)) - call RegPack(Buf, InData%PtfmRefztRot) - end if - call RegPack(Buf, allocated(InData%PtfmCOBxt)) - if (allocated(InData%PtfmCOBxt)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmCOBxt, kind=B8Ki), ubound(InData%PtfmCOBxt, kind=B8Ki)) - call RegPack(Buf, InData%PtfmCOBxt) - end if - call RegPack(Buf, allocated(InData%PtfmCOByt)) - if (allocated(InData%PtfmCOByt)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmCOByt, kind=B8Ki), ubound(InData%PtfmCOByt, kind=B8Ki)) - call RegPack(Buf, InData%PtfmCOByt) - end if - call WAMIT_PackInitInput(Buf, InData%WAMIT) - call WAMIT2_PackInitInput(Buf, InData%WAMIT2) - call Morison_PackInitInput(Buf, InData%Morison) - call RegPack(Buf, InData%Echo) - call RegPack(Buf, InData%PotMod) - call RegPack(Buf, InData%NUserOutputs) - call RegPack(Buf, allocated(InData%UserOutputs)) - if (allocated(InData%UserOutputs)) then - call RegPackBounds(Buf, 1, lbound(InData%UserOutputs, kind=B8Ki), ubound(InData%UserOutputs, kind=B8Ki)) - call RegPack(Buf, InData%UserOutputs) - end if - call RegPack(Buf, InData%OutSwtch) - call RegPack(Buf, InData%OutAll) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, allocated(InData%OutList)) - if (allocated(InData%OutList)) then - call RegPackBounds(Buf, 1, lbound(InData%OutList, kind=B8Ki), ubound(InData%OutList, kind=B8Ki)) - call RegPack(Buf, InData%OutList) - end if - call RegPack(Buf, InData%HDSum) - call RegPack(Buf, InData%UnSum) - call RegPack(Buf, InData%OutFmt) - call RegPack(Buf, InData%OutSFmt) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%EchoFlag) + call RegPackAlloc(RF, InData%AddF0) + call RegPackAlloc(RF, InData%AddCLin) + call RegPackAlloc(RF, InData%AddBLin) + call RegPackAlloc(RF, InData%AddBQuad) + call RegPackAlloc(RF, InData%PotFile) + call RegPack(RF, InData%nWAMITObj) + call RegPack(RF, InData%vecMultiplier) + call RegPack(RF, InData%NBody) + call RegPack(RF, InData%NBodyMod) + call RegPackAlloc(RF, InData%PtfmVol0) + call RegPack(RF, InData%HasWAMIT) + call RegPackAlloc(RF, InData%WAMITULEN) + call RegPackAlloc(RF, InData%PtfmRefxt) + call RegPackAlloc(RF, InData%PtfmRefyt) + call RegPackAlloc(RF, InData%PtfmRefzt) + call RegPackAlloc(RF, InData%PtfmRefztRot) + call RegPackAlloc(RF, InData%PtfmCOBxt) + call RegPackAlloc(RF, InData%PtfmCOByt) + call WAMIT_PackInitInput(RF, InData%WAMIT) + call WAMIT2_PackInitInput(RF, InData%WAMIT2) + call Morison_PackInitInput(RF, InData%Morison) + call RegPack(RF, InData%Echo) + call RegPack(RF, InData%PotMod) + call RegPack(RF, InData%NUserOutputs) + call RegPackAlloc(RF, InData%UserOutputs) + call RegPack(RF, InData%OutSwtch) + call RegPack(RF, InData%OutAll) + call RegPack(RF, InData%NumOuts) + call RegPackAlloc(RF, InData%OutList) + call RegPack(RF, InData%HDSum) + call RegPack(RF, InData%UnSum) + call RegPack(RF, InData%OutFmt) + call RegPack(RF, InData%OutSFmt) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine HydroDyn_UnPackInputFile(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_UnPackInputFile(RF, OutData) + type(RegFile), intent(inout) :: RF type(HydroDyn_InputFile), intent(inout) :: OutData character(*), parameter :: RoutineName = 'HydroDyn_UnPackInputFile' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%EchoFlag) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%AddF0)) deallocate(OutData%AddF0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AddF0(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AddF0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AddF0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AddCLin)) deallocate(OutData%AddCLin) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AddCLin(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AddCLin.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AddCLin) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AddBLin)) deallocate(OutData%AddBLin) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AddBLin(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AddBLin.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AddBLin) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AddBQuad)) deallocate(OutData%AddBQuad) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AddBQuad(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AddBQuad.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AddBQuad) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PotFile)) deallocate(OutData%PotFile) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PotFile(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PotFile.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PotFile) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%nWAMITObj) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%vecMultiplier) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NBody) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NBodyMod) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PtfmVol0)) deallocate(OutData%PtfmVol0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmVol0(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmVol0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmVol0) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%HasWAMIT) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WAMITULEN)) deallocate(OutData%WAMITULEN) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WAMITULEN(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMITULEN.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WAMITULEN) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PtfmRefxt)) deallocate(OutData%PtfmRefxt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmRefxt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmRefxt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmRefxt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PtfmRefyt)) deallocate(OutData%PtfmRefyt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmRefyt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmRefyt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmRefyt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PtfmRefzt)) deallocate(OutData%PtfmRefzt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmRefzt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmRefzt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmRefzt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PtfmRefztRot)) deallocate(OutData%PtfmRefztRot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmRefztRot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmRefztRot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmRefztRot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PtfmCOBxt)) deallocate(OutData%PtfmCOBxt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmCOBxt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmCOBxt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmCOBxt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PtfmCOByt)) deallocate(OutData%PtfmCOByt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmCOByt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmCOByt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmCOByt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call WAMIT_UnpackInitInput(Buf, OutData%WAMIT) ! WAMIT - call WAMIT2_UnpackInitInput(Buf, OutData%WAMIT2) ! WAMIT2 - call Morison_UnpackInitInput(Buf, OutData%Morison) ! Morison - call RegUnpack(Buf, OutData%Echo) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PotMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NUserOutputs) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%UserOutputs)) deallocate(OutData%UserOutputs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%UserOutputs(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UserOutputs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%UserOutputs) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%OutSwtch) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutAll) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutList)) deallocate(OutData%OutList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutList) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%HDSum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UnSum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutSFmt) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%EchoFlag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AddF0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AddCLin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AddBLin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AddBQuad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PotFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nWAMITObj); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%vecMultiplier); 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 RegUnpackAlloc(RF, OutData%PtfmVol0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HasWAMIT); 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 + call RegUnpackAlloc(RF, OutData%PtfmRefzt); if (RegCheckErr(RF, RoutineName)) return + 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 WAMIT_UnpackInitInput(RF, OutData%WAMIT) ! WAMIT + call WAMIT2_UnpackInitInput(RF, OutData%WAMIT2) ! WAMIT2 + call Morison_UnpackInitInput(RF, OutData%Morison) ! Morison + call RegUnpack(RF, OutData%Echo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PotMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NUserOutputs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%UserOutputs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutSwtch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutAll); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HDSum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UnSum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutSFmt); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine HydroDyn_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -884,33 +613,33 @@ subroutine HydroDyn_DestroyInitInput(InitInputData, ErrStat, ErrMsg) nullify(InitInputData%WaveField) end subroutine -subroutine HydroDyn_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(HydroDyn_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'HydroDyn_PackInitInput' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%InputFile) - call RegPack(Buf, InData%UseInputFile) - call NWTC_Library_PackFileInfoType(Buf, InData%PassedFileData) - call RegPack(Buf, InData%OutRootName) - call RegPack(Buf, InData%Linearize) - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, InData%TMax) - call RegPack(Buf, InData%VisMeshes) - call RegPack(Buf, InData%InvalidWithSSExctn) - call RegPack(Buf, associated(InData%WaveField)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%InputFile) + call RegPack(RF, InData%UseInputFile) + call NWTC_Library_PackFileInfoType(RF, InData%PassedFileData) + call RegPack(RF, InData%OutRootName) + call RegPack(RF, InData%Linearize) + call RegPack(RF, InData%Gravity) + call RegPack(RF, InData%TMax) + call RegPack(RF, InData%VisMeshes) + call RegPack(RF, InData%InvalidWithSSExctn) + call RegPack(RF, associated(InData%WaveField)) if (associated(InData%WaveField)) then - call RegPackPointer(Buf, c_loc(InData%WaveField), PtrInIndex) + call RegPackPointer(RF, c_loc(InData%WaveField), PtrInIndex) if (.not. PtrInIndex) then - call SeaSt_WaveField_PackSeaSt_WaveFieldType(Buf, InData%WaveField) + call SeaSt_WaveField_PackSeaSt_WaveFieldType(RF, InData%WaveField) end if end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine HydroDyn_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(HydroDyn_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'HydroDyn_UnPackInitInput' integer(B8Ki) :: LB(0), UB(0) @@ -918,40 +647,30 @@ subroutine HydroDyn_UnPackInitInput(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%InputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UseInputFile) - if (RegCheckErr(Buf, RoutineName)) return - call NWTC_Library_UnpackFileInfoType(Buf, OutData%PassedFileData) ! PassedFileData - call RegUnpack(Buf, OutData%OutRootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Linearize) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TMax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VisMeshes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InvalidWithSSExctn) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%InputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseInputFile); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackFileInfoType(RF, OutData%PassedFileData) ! PassedFileData + call RegUnpack(RF, OutData%OutRootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Linearize); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TMax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VisMeshes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InvalidWithSSExctn); if (RegCheckErr(RF, RoutineName)) return if (associated(OutData%WaveField)) deallocate(OutData%WaveField) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPointer(RF, Ptr, PtrIdx); if (RegCheckErr(RF, RoutineName)) return if (c_associated(Ptr)) then call c_f_pointer(Ptr, OutData%WaveField) else allocate(OutData%WaveField,stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - Buf%Pointers(PtrIdx) = c_loc(OutData%WaveField) - call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(Buf, OutData%WaveField) ! WaveField + RF%Pointers(PtrIdx) = c_loc(OutData%WaveField) + call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(RF, OutData%WaveField) ! WaveField end if else OutData%WaveField => null() @@ -1098,159 +817,40 @@ subroutine HydroDyn_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine HydroDyn_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(HydroDyn_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'HydroDyn_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call Morison_PackInitOutput(Buf, InData%Morison) - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call RegPack(Buf, allocated(InData%LinNames_y)) - if (allocated(InData%LinNames_y)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_y, kind=B8Ki), ubound(InData%LinNames_y, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_y) - end if - call RegPack(Buf, allocated(InData%LinNames_x)) - if (allocated(InData%LinNames_x)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_x, kind=B8Ki), ubound(InData%LinNames_x, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_x) - end if - call RegPack(Buf, allocated(InData%LinNames_u)) - if (allocated(InData%LinNames_u)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_u, kind=B8Ki), ubound(InData%LinNames_u, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_u) - end if - call RegPack(Buf, allocated(InData%DerivOrder_x)) - if (allocated(InData%DerivOrder_x)) then - call RegPackBounds(Buf, 1, lbound(InData%DerivOrder_x, kind=B8Ki), ubound(InData%DerivOrder_x, kind=B8Ki)) - call RegPack(Buf, InData%DerivOrder_x) - end if - call RegPack(Buf, allocated(InData%IsLoad_u)) - if (allocated(InData%IsLoad_u)) then - call RegPackBounds(Buf, 1, lbound(InData%IsLoad_u, kind=B8Ki), ubound(InData%IsLoad_u, kind=B8Ki)) - call RegPack(Buf, InData%IsLoad_u) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call Morison_PackInitOutput(RF, InData%Morison) + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call RegPackAlloc(RF, InData%LinNames_y) + call RegPackAlloc(RF, InData%LinNames_x) + call RegPackAlloc(RF, InData%LinNames_u) + call RegPackAlloc(RF, InData%DerivOrder_x) + call RegPackAlloc(RF, InData%IsLoad_u) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine HydroDyn_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(HydroDyn_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'HydroDyn_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call Morison_UnpackInitOutput(Buf, OutData%Morison) ! Morison - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver - if (allocated(OutData%LinNames_y)) deallocate(OutData%LinNames_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_x)) deallocate(OutData%LinNames_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_u)) deallocate(OutData%LinNames_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DerivOrder_x)) deallocate(OutData%DerivOrder_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DerivOrder_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DerivOrder_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DerivOrder_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IsLoad_u)) deallocate(OutData%IsLoad_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IsLoad_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IsLoad_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IsLoad_u) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call Morison_UnpackInitOutput(RF, OutData%Morison) ! Morison + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver + call RegUnpackAlloc(RF, OutData%LinNames_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DerivOrder_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IsLoad_u); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine HydroDyn_CopyHD_ModuleMapType(SrcHD_ModuleMapTypeData, DstHD_ModuleMapTypeData, CtrlCode, ErrStat, ErrMsg) @@ -1292,25 +892,25 @@ subroutine HydroDyn_DestroyHD_ModuleMapType(HD_ModuleMapTypeData, ErrStat, ErrMs call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine HydroDyn_PackHD_ModuleMapType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_PackHD_ModuleMapType(RF, Indata) + type(RegFile), intent(inout) :: RF type(HD_ModuleMapType), intent(in) :: InData character(*), parameter :: RoutineName = 'HydroDyn_PackHD_ModuleMapType' - if (Buf%ErrStat >= AbortErrLev) return - call NWTC_Library_PackMeshMapType(Buf, InData%uW_P_2_PRP_P) - call NWTC_Library_PackMeshMapType(Buf, InData%W_P_2_PRP_P) - call NWTC_Library_PackMeshMapType(Buf, InData%M_P_2_PRP_P) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call NWTC_Library_PackMeshMapType(RF, InData%uW_P_2_PRP_P) + call NWTC_Library_PackMeshMapType(RF, InData%W_P_2_PRP_P) + call NWTC_Library_PackMeshMapType(RF, InData%M_P_2_PRP_P) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine HydroDyn_UnPackHD_ModuleMapType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_UnPackHD_ModuleMapType(RF, OutData) + type(RegFile), intent(inout) :: RF type(HD_ModuleMapType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'HydroDyn_UnPackHD_ModuleMapType' - if (Buf%ErrStat /= ErrID_None) return - call NWTC_Library_UnpackMeshMapType(Buf, OutData%uW_P_2_PRP_P) ! uW_P_2_PRP_P - call NWTC_Library_UnpackMeshMapType(Buf, OutData%W_P_2_PRP_P) ! W_P_2_PRP_P - call NWTC_Library_UnpackMeshMapType(Buf, OutData%M_P_2_PRP_P) ! M_P_2_PRP_P + if (RF%ErrStat /= ErrID_None) return + call NWTC_Library_UnpackMeshMapType(RF, OutData%uW_P_2_PRP_P) ! uW_P_2_PRP_P + call NWTC_Library_UnpackMeshMapType(RF, OutData%W_P_2_PRP_P) ! W_P_2_PRP_P + call NWTC_Library_UnpackMeshMapType(RF, OutData%M_P_2_PRP_P) ! M_P_2_PRP_P end subroutine subroutine HydroDyn_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -1371,51 +971,49 @@ subroutine HydroDyn_DestroyContState(ContStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine HydroDyn_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(HydroDyn_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'HydroDyn_PackContState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WAMIT)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%WAMIT)) if (allocated(InData%WAMIT)) then - call RegPackBounds(Buf, 1, lbound(InData%WAMIT, kind=B8Ki), ubound(InData%WAMIT, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%WAMIT, kind=B8Ki), ubound(InData%WAMIT, kind=B8Ki)) LB(1:1) = lbound(InData%WAMIT, kind=B8Ki) UB(1:1) = ubound(InData%WAMIT, kind=B8Ki) do i1 = LB(1), UB(1) - call WAMIT_PackContState(Buf, InData%WAMIT(i1)) + call WAMIT_PackContState(RF, InData%WAMIT(i1)) end do end if - call Morison_PackContState(Buf, InData%Morison) - if (RegCheckErr(Buf, RoutineName)) return + call Morison_PackContState(RF, InData%Morison) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine HydroDyn_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(HydroDyn_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'HydroDyn_UnPackContState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%WAMIT)) deallocate(OutData%WAMIT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%WAMIT(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call WAMIT_UnpackContState(Buf, OutData%WAMIT(i1)) ! WAMIT + call WAMIT_UnpackContState(RF, OutData%WAMIT(i1)) ! WAMIT end do end if - call Morison_UnpackContState(Buf, OutData%Morison) ! Morison + call Morison_UnpackContState(RF, OutData%Morison) ! Morison end subroutine subroutine HydroDyn_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -1476,51 +1074,49 @@ subroutine HydroDyn_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine HydroDyn_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(HydroDyn_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'HydroDyn_PackDiscState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WAMIT)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%WAMIT)) if (allocated(InData%WAMIT)) then - call RegPackBounds(Buf, 1, lbound(InData%WAMIT, kind=B8Ki), ubound(InData%WAMIT, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%WAMIT, kind=B8Ki), ubound(InData%WAMIT, kind=B8Ki)) LB(1:1) = lbound(InData%WAMIT, kind=B8Ki) UB(1:1) = ubound(InData%WAMIT, kind=B8Ki) do i1 = LB(1), UB(1) - call WAMIT_PackDiscState(Buf, InData%WAMIT(i1)) + call WAMIT_PackDiscState(RF, InData%WAMIT(i1)) end do end if - call Morison_PackDiscState(Buf, InData%Morison) - if (RegCheckErr(Buf, RoutineName)) return + call Morison_PackDiscState(RF, InData%Morison) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine HydroDyn_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(HydroDyn_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'HydroDyn_UnPackDiscState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%WAMIT)) deallocate(OutData%WAMIT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%WAMIT(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call WAMIT_UnpackDiscState(Buf, OutData%WAMIT(i1)) ! WAMIT + call WAMIT_UnpackDiscState(RF, OutData%WAMIT(i1)) ! WAMIT end do end if - call Morison_UnpackDiscState(Buf, OutData%Morison) ! Morison + call Morison_UnpackDiscState(RF, OutData%Morison) ! Morison end subroutine subroutine HydroDyn_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -1557,23 +1153,23 @@ subroutine HydroDyn_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine HydroDyn_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(HydroDyn_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'HydroDyn_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call WAMIT_PackConstrState(Buf, InData%WAMIT) - call Morison_PackConstrState(Buf, InData%Morison) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call WAMIT_PackConstrState(RF, InData%WAMIT) + call Morison_PackConstrState(RF, InData%Morison) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine HydroDyn_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(HydroDyn_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'HydroDyn_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call WAMIT_UnpackConstrState(Buf, OutData%WAMIT) ! WAMIT - call Morison_UnpackConstrState(Buf, OutData%Morison) ! Morison + if (RF%ErrStat /= ErrID_None) return + call WAMIT_UnpackConstrState(RF, OutData%WAMIT) ! WAMIT + call Morison_UnpackConstrState(RF, OutData%Morison) ! Morison end subroutine subroutine HydroDyn_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -1634,51 +1230,49 @@ subroutine HydroDyn_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine HydroDyn_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(HydroDyn_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'HydroDyn_PackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WAMIT)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%WAMIT)) if (allocated(InData%WAMIT)) then - call RegPackBounds(Buf, 1, lbound(InData%WAMIT, kind=B8Ki), ubound(InData%WAMIT, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%WAMIT, kind=B8Ki), ubound(InData%WAMIT, kind=B8Ki)) LB(1:1) = lbound(InData%WAMIT, kind=B8Ki) UB(1:1) = ubound(InData%WAMIT, kind=B8Ki) do i1 = LB(1), UB(1) - call WAMIT_PackOtherState(Buf, InData%WAMIT(i1)) + call WAMIT_PackOtherState(RF, InData%WAMIT(i1)) end do end if - call Morison_PackOtherState(Buf, InData%Morison) - if (RegCheckErr(Buf, RoutineName)) return + call Morison_PackOtherState(RF, InData%Morison) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine HydroDyn_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(HydroDyn_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'HydroDyn_UnPackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%WAMIT)) deallocate(OutData%WAMIT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%WAMIT(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call WAMIT_UnpackOtherState(Buf, OutData%WAMIT(i1)) ! WAMIT + call WAMIT_UnpackOtherState(RF, OutData%WAMIT(i1)) ! WAMIT end do end if - call Morison_UnpackOtherState(Buf, OutData%Morison) ! Morison + call Morison_UnpackOtherState(RF, OutData%Morison) ! Morison end subroutine subroutine HydroDyn_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -1832,148 +1426,105 @@ subroutine HydroDyn_DestroyMisc(MiscData, ErrStat, ErrMsg) end if end subroutine -subroutine HydroDyn_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(HydroDyn_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'HydroDyn_PackMisc' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%AllHdroOrigin) - call HydroDyn_PackHD_ModuleMapType(Buf, InData%HD_MeshMap) - call RegPack(Buf, InData%Decimate) - call RegPack(Buf, InData%LastOutTime) - call RegPack(Buf, allocated(InData%F_PtfmAdd)) - if (allocated(InData%F_PtfmAdd)) then - call RegPackBounds(Buf, 1, lbound(InData%F_PtfmAdd, kind=B8Ki), ubound(InData%F_PtfmAdd, kind=B8Ki)) - call RegPack(Buf, InData%F_PtfmAdd) - end if - call RegPack(Buf, InData%F_Hydro) - call RegPack(Buf, allocated(InData%F_Waves)) - if (allocated(InData%F_Waves)) then - call RegPackBounds(Buf, 1, lbound(InData%F_Waves, kind=B8Ki), ubound(InData%F_Waves, kind=B8Ki)) - call RegPack(Buf, InData%F_Waves) - end if - call RegPack(Buf, allocated(InData%WAMIT)) + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%AllHdroOrigin) + call HydroDyn_PackHD_ModuleMapType(RF, InData%HD_MeshMap) + call RegPack(RF, InData%Decimate) + call RegPack(RF, InData%LastOutTime) + call RegPackAlloc(RF, InData%F_PtfmAdd) + call RegPack(RF, InData%F_Hydro) + call RegPackAlloc(RF, InData%F_Waves) + call RegPack(RF, allocated(InData%WAMIT)) if (allocated(InData%WAMIT)) then - call RegPackBounds(Buf, 1, lbound(InData%WAMIT, kind=B8Ki), ubound(InData%WAMIT, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%WAMIT, kind=B8Ki), ubound(InData%WAMIT, kind=B8Ki)) LB(1:1) = lbound(InData%WAMIT, kind=B8Ki) UB(1:1) = ubound(InData%WAMIT, kind=B8Ki) do i1 = LB(1), UB(1) - call WAMIT_PackMisc(Buf, InData%WAMIT(i1)) + call WAMIT_PackMisc(RF, InData%WAMIT(i1)) end do end if - call RegPack(Buf, allocated(InData%WAMIT2)) + call RegPack(RF, allocated(InData%WAMIT2)) if (allocated(InData%WAMIT2)) then - call RegPackBounds(Buf, 1, lbound(InData%WAMIT2, kind=B8Ki), ubound(InData%WAMIT2, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%WAMIT2, kind=B8Ki), ubound(InData%WAMIT2, kind=B8Ki)) LB(1:1) = lbound(InData%WAMIT2, kind=B8Ki) UB(1:1) = ubound(InData%WAMIT2, kind=B8Ki) do i1 = LB(1), UB(1) - call WAMIT2_PackMisc(Buf, InData%WAMIT2(i1)) + call WAMIT2_PackMisc(RF, InData%WAMIT2(i1)) end do end if - call Morison_PackMisc(Buf, InData%Morison) - call RegPack(Buf, allocated(InData%u_WAMIT)) + call Morison_PackMisc(RF, InData%Morison) + call RegPack(RF, allocated(InData%u_WAMIT)) if (allocated(InData%u_WAMIT)) then - call RegPackBounds(Buf, 1, lbound(InData%u_WAMIT, kind=B8Ki), ubound(InData%u_WAMIT, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_WAMIT, kind=B8Ki), ubound(InData%u_WAMIT, kind=B8Ki)) LB(1:1) = lbound(InData%u_WAMIT, kind=B8Ki) UB(1:1) = ubound(InData%u_WAMIT, kind=B8Ki) do i1 = LB(1), UB(1) - call WAMIT_PackInput(Buf, InData%u_WAMIT(i1)) + call WAMIT_PackInput(RF, InData%u_WAMIT(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine HydroDyn_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(HydroDyn_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'HydroDyn_UnPackMisc' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%AllHdroOrigin) ! AllHdroOrigin - call HydroDyn_UnpackHD_ModuleMapType(Buf, OutData%HD_MeshMap) ! HD_MeshMap - call RegUnpack(Buf, OutData%Decimate) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LastOutTime) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%F_PtfmAdd)) deallocate(OutData%F_PtfmAdd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_PtfmAdd(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_PtfmAdd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_PtfmAdd) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%F_Hydro) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%F_Waves)) deallocate(OutData%F_Waves) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_Waves(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_Waves.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_Waves) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%AllHdroOrigin) ! AllHdroOrigin + call HydroDyn_UnpackHD_ModuleMapType(RF, OutData%HD_MeshMap) ! HD_MeshMap + call RegUnpack(RF, OutData%Decimate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LastOutTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_PtfmAdd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%F_Hydro); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_Waves); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%WAMIT)) deallocate(OutData%WAMIT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%WAMIT(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call WAMIT_UnpackMisc(Buf, OutData%WAMIT(i1)) ! WAMIT + call WAMIT_UnpackMisc(RF, OutData%WAMIT(i1)) ! WAMIT end do end if if (allocated(OutData%WAMIT2)) deallocate(OutData%WAMIT2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%WAMIT2(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT2.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call WAMIT2_UnpackMisc(Buf, OutData%WAMIT2(i1)) ! WAMIT2 + call WAMIT2_UnpackMisc(RF, OutData%WAMIT2(i1)) ! WAMIT2 end do end if - call Morison_UnpackMisc(Buf, OutData%Morison) ! Morison + call Morison_UnpackMisc(RF, OutData%Morison) ! Morison if (allocated(OutData%u_WAMIT)) deallocate(OutData%u_WAMIT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_WAMIT(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_WAMIT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_WAMIT.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call WAMIT_UnpackInput(Buf, OutData%u_WAMIT(i1)) ! u_WAMIT + call WAMIT_UnpackInput(RF, OutData%u_WAMIT(i1)) ! u_WAMIT end do end if end subroutine @@ -2213,109 +1764,81 @@ subroutine HydroDyn_DestroyParam(ParamData, ErrStat, ErrMsg) nullify(ParamData%WaveField) end subroutine -subroutine HydroDyn_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(HydroDyn_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'HydroDyn_PackParam' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%nWAMITObj) - call RegPack(Buf, InData%vecMultiplier) - call RegPack(Buf, allocated(InData%WAMIT)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%nWAMITObj) + call RegPack(RF, InData%vecMultiplier) + call RegPack(RF, allocated(InData%WAMIT)) if (allocated(InData%WAMIT)) then - call RegPackBounds(Buf, 1, lbound(InData%WAMIT, kind=B8Ki), ubound(InData%WAMIT, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%WAMIT, kind=B8Ki), ubound(InData%WAMIT, kind=B8Ki)) LB(1:1) = lbound(InData%WAMIT, kind=B8Ki) UB(1:1) = ubound(InData%WAMIT, kind=B8Ki) do i1 = LB(1), UB(1) - call WAMIT_PackParam(Buf, InData%WAMIT(i1)) + call WAMIT_PackParam(RF, InData%WAMIT(i1)) end do end if - call RegPack(Buf, allocated(InData%WAMIT2)) + call RegPack(RF, allocated(InData%WAMIT2)) if (allocated(InData%WAMIT2)) then - call RegPackBounds(Buf, 1, lbound(InData%WAMIT2, kind=B8Ki), ubound(InData%WAMIT2, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%WAMIT2, kind=B8Ki), ubound(InData%WAMIT2, kind=B8Ki)) LB(1:1) = lbound(InData%WAMIT2, kind=B8Ki) UB(1:1) = ubound(InData%WAMIT2, kind=B8Ki) do i1 = LB(1), UB(1) - call WAMIT2_PackParam(Buf, InData%WAMIT2(i1)) + call WAMIT2_PackParam(RF, InData%WAMIT2(i1)) end do end if - call RegPack(Buf, InData%WAMIT2used) - call Morison_PackParam(Buf, InData%Morison) - call RegPack(Buf, InData%PotMod) - call RegPack(Buf, InData%NBody) - call RegPack(Buf, InData%NBodyMod) - call RegPack(Buf, InData%totalStates) - call RegPack(Buf, InData%totalExctnStates) - call RegPack(Buf, InData%totalRdtnStates) - call RegPack(Buf, allocated(InData%AddF0)) - if (allocated(InData%AddF0)) then - call RegPackBounds(Buf, 2, lbound(InData%AddF0, kind=B8Ki), ubound(InData%AddF0, kind=B8Ki)) - call RegPack(Buf, InData%AddF0) - end if - call RegPack(Buf, allocated(InData%AddCLin)) - if (allocated(InData%AddCLin)) then - call RegPackBounds(Buf, 3, lbound(InData%AddCLin, kind=B8Ki), ubound(InData%AddCLin, kind=B8Ki)) - call RegPack(Buf, InData%AddCLin) - end if - call RegPack(Buf, allocated(InData%AddBLin)) - if (allocated(InData%AddBLin)) then - call RegPackBounds(Buf, 3, lbound(InData%AddBLin, kind=B8Ki), ubound(InData%AddBLin, kind=B8Ki)) - call RegPack(Buf, InData%AddBLin) - end if - call RegPack(Buf, allocated(InData%AddBQuad)) - if (allocated(InData%AddBQuad)) then - call RegPackBounds(Buf, 3, lbound(InData%AddBQuad, kind=B8Ki), ubound(InData%AddBQuad, kind=B8Ki)) - call RegPack(Buf, InData%AddBQuad) - end if - call RegPack(Buf, InData%DT) - call RegPack(Buf, allocated(InData%OutParam)) + call RegPack(RF, InData%WAMIT2used) + call Morison_PackParam(RF, InData%Morison) + call RegPack(RF, InData%PotMod) + call RegPack(RF, InData%NBody) + call RegPack(RF, InData%NBodyMod) + call RegPack(RF, InData%totalStates) + call RegPack(RF, InData%totalExctnStates) + call RegPack(RF, InData%totalRdtnStates) + call RegPackAlloc(RF, InData%AddF0) + call RegPackAlloc(RF, InData%AddCLin) + call RegPackAlloc(RF, InData%AddBLin) + call RegPackAlloc(RF, InData%AddBQuad) + call RegPack(RF, InData%DT) + call RegPack(RF, allocated(InData%OutParam)) if (allocated(InData%OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) LB(1:1) = lbound(InData%OutParam, kind=B8Ki) UB(1:1) = ubound(InData%OutParam, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackOutParmType(Buf, InData%OutParam(i1)) + call NWTC_Library_PackOutParmType(RF, InData%OutParam(i1)) end do end if - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, InData%NumTotalOuts) - call RegPack(Buf, InData%OutSwtch) - call RegPack(Buf, InData%OutFmt) - call RegPack(Buf, InData%OutSFmt) - call RegPack(Buf, InData%Delim) - call RegPack(Buf, InData%UnOutFile) - call RegPack(Buf, InData%OutDec) - call RegPack(Buf, allocated(InData%Jac_u_indx)) - if (allocated(InData%Jac_u_indx)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_u_indx, kind=B8Ki), ubound(InData%Jac_u_indx, kind=B8Ki)) - call RegPack(Buf, InData%Jac_u_indx) - end if - call RegPack(Buf, allocated(InData%du)) - if (allocated(InData%du)) then - call RegPackBounds(Buf, 1, lbound(InData%du, kind=B8Ki), ubound(InData%du, kind=B8Ki)) - call RegPack(Buf, InData%du) - end if - call RegPack(Buf, allocated(InData%dx)) - if (allocated(InData%dx)) then - call RegPackBounds(Buf, 1, lbound(InData%dx, kind=B8Ki), ubound(InData%dx, kind=B8Ki)) - call RegPack(Buf, InData%dx) - end if - call RegPack(Buf, InData%Jac_ny) - call RegPack(Buf, InData%VisMeshes) - call RegPack(Buf, associated(InData%WaveField)) + call RegPack(RF, InData%NumOuts) + call RegPack(RF, InData%NumTotalOuts) + call RegPack(RF, InData%OutSwtch) + call RegPack(RF, InData%OutFmt) + call RegPack(RF, InData%OutSFmt) + call RegPack(RF, InData%Delim) + call RegPack(RF, InData%UnOutFile) + call RegPack(RF, InData%OutDec) + call RegPackAlloc(RF, InData%Jac_u_indx) + call RegPackAlloc(RF, InData%du) + call RegPackAlloc(RF, InData%dx) + call RegPack(RF, InData%Jac_ny) + call RegPack(RF, InData%VisMeshes) + call RegPack(RF, associated(InData%WaveField)) if (associated(InData%WaveField)) then - call RegPackPointer(Buf, c_loc(InData%WaveField), PtrInIndex) + call RegPackPointer(RF, c_loc(InData%WaveField), PtrInIndex) if (.not. PtrInIndex) then - call SeaSt_WaveField_PackSeaSt_WaveFieldType(Buf, InData%WaveField) + call SeaSt_WaveField_PackSeaSt_WaveFieldType(RF, InData%WaveField) end if end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine HydroDyn_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(HydroDyn_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'HydroDyn_UnPackParam' integer(B8Ki) :: i1, i2, i3 @@ -2324,207 +1847,88 @@ subroutine HydroDyn_UnPackParam(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%nWAMITObj) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%vecMultiplier) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%nWAMITObj); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%vecMultiplier); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%WAMIT)) deallocate(OutData%WAMIT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%WAMIT(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call WAMIT_UnpackParam(Buf, OutData%WAMIT(i1)) ! WAMIT + call WAMIT_UnpackParam(RF, OutData%WAMIT(i1)) ! WAMIT end do end if if (allocated(OutData%WAMIT2)) deallocate(OutData%WAMIT2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%WAMIT2(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT2.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call WAMIT2_UnpackParam(Buf, OutData%WAMIT2(i1)) ! WAMIT2 + call WAMIT2_UnpackParam(RF, OutData%WAMIT2(i1)) ! WAMIT2 end do end if - call RegUnpack(Buf, OutData%WAMIT2used) - if (RegCheckErr(Buf, RoutineName)) return - call Morison_UnpackParam(Buf, OutData%Morison) ! Morison - call RegUnpack(Buf, OutData%PotMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NBody) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NBodyMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%totalStates) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%totalExctnStates) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%totalRdtnStates) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%AddF0)) deallocate(OutData%AddF0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AddF0(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AddF0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AddF0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AddCLin)) deallocate(OutData%AddCLin) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AddCLin(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AddCLin.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AddCLin) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AddBLin)) deallocate(OutData%AddBLin) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AddBLin(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AddBLin.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AddBLin) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AddBQuad)) deallocate(OutData%AddBQuad) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AddBQuad(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AddBQuad.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AddBQuad) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%WAMIT2used); if (RegCheckErr(RF, RoutineName)) return + call Morison_UnpackParam(RF, OutData%Morison) ! Morison + 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%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 + call RegUnpackAlloc(RF, OutData%AddF0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AddCLin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AddBLin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AddBQuad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%OutParam)) deallocate(OutData%OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackOutParmType(Buf, OutData%OutParam(i1)) ! OutParam + call NWTC_Library_UnpackOutParmType(RF, OutData%OutParam(i1)) ! OutParam end do end if - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumTotalOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutSwtch) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutSFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Delim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UnOutFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutDec) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Jac_u_indx)) deallocate(OutData%Jac_u_indx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_u_indx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_u_indx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_u_indx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%du)) deallocate(OutData%du) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%du(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%du.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%du) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dx)) deallocate(OutData%dx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dx(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dx) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Jac_ny) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VisMeshes) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumTotalOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutSwtch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutSFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Delim); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UnOutFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutDec); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_u_indx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%du); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Jac_ny); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VisMeshes); if (RegCheckErr(RF, RoutineName)) return if (associated(OutData%WaveField)) deallocate(OutData%WaveField) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPointer(RF, Ptr, PtrIdx); if (RegCheckErr(RF, RoutineName)) return if (c_associated(Ptr)) then call c_f_pointer(Ptr, OutData%WaveField) else allocate(OutData%WaveField,stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - Buf%Pointers(PtrIdx) = c_loc(OutData%WaveField) - call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(Buf, OutData%WaveField) ! WaveField + RF%Pointers(PtrIdx) = c_loc(OutData%WaveField) + call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(RF, OutData%WaveField) ! WaveField end if else OutData%WaveField => null() @@ -2570,25 +1974,25 @@ subroutine HydroDyn_DestroyInput(InputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine HydroDyn_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(HydroDyn_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'HydroDyn_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call Morison_PackInput(Buf, InData%Morison) - call MeshPack(Buf, InData%WAMITMesh) - call MeshPack(Buf, InData%PRPMesh) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call Morison_PackInput(RF, InData%Morison) + call MeshPack(RF, InData%WAMITMesh) + call MeshPack(RF, InData%PRPMesh) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine HydroDyn_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(HydroDyn_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'HydroDyn_UnPackInput' - if (Buf%ErrStat /= ErrID_None) return - call Morison_UnpackInput(Buf, OutData%Morison) ! Morison - call MeshUnpack(Buf, OutData%WAMITMesh) ! WAMITMesh - call MeshUnpack(Buf, OutData%PRPMesh) ! PRPMesh + 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 end subroutine subroutine HydroDyn_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -2694,96 +2098,75 @@ subroutine HydroDyn_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine HydroDyn_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(HydroDyn_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'HydroDyn_PackOutput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WAMIT)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%WAMIT)) if (allocated(InData%WAMIT)) then - call RegPackBounds(Buf, 1, lbound(InData%WAMIT, kind=B8Ki), ubound(InData%WAMIT, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%WAMIT, kind=B8Ki), ubound(InData%WAMIT, kind=B8Ki)) LB(1:1) = lbound(InData%WAMIT, kind=B8Ki) UB(1:1) = ubound(InData%WAMIT, kind=B8Ki) do i1 = LB(1), UB(1) - call WAMIT_PackOutput(Buf, InData%WAMIT(i1)) + call WAMIT_PackOutput(RF, InData%WAMIT(i1)) end do end if - call RegPack(Buf, allocated(InData%WAMIT2)) + call RegPack(RF, allocated(InData%WAMIT2)) if (allocated(InData%WAMIT2)) then - call RegPackBounds(Buf, 1, lbound(InData%WAMIT2, kind=B8Ki), ubound(InData%WAMIT2, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%WAMIT2, kind=B8Ki), ubound(InData%WAMIT2, kind=B8Ki)) LB(1:1) = lbound(InData%WAMIT2, kind=B8Ki) UB(1:1) = ubound(InData%WAMIT2, kind=B8Ki) do i1 = LB(1), UB(1) - call WAMIT2_PackOutput(Buf, InData%WAMIT2(i1)) + call WAMIT2_PackOutput(RF, InData%WAMIT2(i1)) end do end if - call Morison_PackOutput(Buf, InData%Morison) - call MeshPack(Buf, InData%WAMITMesh) - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - if (RegCheckErr(Buf, RoutineName)) return + call Morison_PackOutput(RF, InData%Morison) + call MeshPack(RF, InData%WAMITMesh) + call RegPackAlloc(RF, InData%WriteOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine HydroDyn_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine HydroDyn_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(HydroDyn_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'HydroDyn_UnPackOutput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%WAMIT)) deallocate(OutData%WAMIT) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%WAMIT(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call WAMIT_UnpackOutput(Buf, OutData%WAMIT(i1)) ! WAMIT + call WAMIT_UnpackOutput(RF, OutData%WAMIT(i1)) ! WAMIT end do end if if (allocated(OutData%WAMIT2)) deallocate(OutData%WAMIT2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%WAMIT2(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAMIT2.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call WAMIT2_UnpackOutput(Buf, OutData%WAMIT2(i1)) ! WAMIT2 + call WAMIT2_UnpackOutput(RF, OutData%WAMIT2(i1)) ! WAMIT2 end do end if - call Morison_UnpackOutput(Buf, OutData%Morison) ! Morison - call MeshUnpack(Buf, OutData%WAMITMesh) ! WAMITMesh - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + call Morison_UnpackOutput(RF, OutData%Morison) ! Morison + call MeshUnpack(RF, OutData%WAMITMesh) ! WAMITMesh + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine HydroDyn_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/hydrodyn/src/Morison_Types.f90 b/modules/hydrodyn/src/Morison_Types.f90 index 024346ed79..d63aaef883 100644 --- a/modules/hydrodyn/src/Morison_Types.f90 +++ b/modules/hydrodyn/src/Morison_Types.f90 @@ -460,40 +460,33 @@ subroutine Morison_DestroyJointType(JointTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Morison_PackJointType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackJointType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_JointType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackJointType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%JointID) - call RegPack(Buf, InData%Position) - call RegPack(Buf, InData%JointAxID) - call RegPack(Buf, InData%JointAxIDIndx) - call RegPack(Buf, InData%JointOvrlp) - call RegPack(Buf, InData%NConnections) - call RegPack(Buf, InData%ConnectionList) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%JointID) + call RegPack(RF, InData%Position) + call RegPack(RF, InData%JointAxID) + call RegPack(RF, InData%JointAxIDIndx) + call RegPack(RF, InData%JointOvrlp) + call RegPack(RF, InData%NConnections) + call RegPack(RF, InData%ConnectionList) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackJointType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackJointType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_JointType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackJointType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%JointID) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Position) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%JointAxID) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%JointAxIDIndx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%JointOvrlp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NConnections) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ConnectionList) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%JointID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Position); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%JointAxID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%JointAxIDIndx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%JointOvrlp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NConnections); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ConnectionList); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyMemberPropType(SrcMemberPropTypeData, DstMemberPropTypeData, CtrlCode, ErrStat, ErrMsg) @@ -519,28 +512,25 @@ subroutine Morison_DestroyMemberPropType(MemberPropTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Morison_PackMemberPropType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackMemberPropType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_MemberPropType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackMemberPropType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%PropSetID) - call RegPack(Buf, InData%PropD) - call RegPack(Buf, InData%PropThck) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%PropSetID) + call RegPack(RF, InData%PropD) + call RegPack(RF, InData%PropThck) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackMemberPropType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackMemberPropType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_MemberPropType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackMemberPropType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%PropSetID) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PropD) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PropThck) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%PropSetID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PropD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PropThck); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyFilledGroupType(SrcFilledGroupTypeData, DstFilledGroupTypeData, CtrlCode, ErrStat, ErrMsg) @@ -584,53 +574,32 @@ subroutine Morison_DestroyFilledGroupType(FilledGroupTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine Morison_PackFilledGroupType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackFilledGroupType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_FilledGroupType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackFilledGroupType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%FillNumM) - call RegPack(Buf, allocated(InData%FillMList)) - if (allocated(InData%FillMList)) then - call RegPackBounds(Buf, 1, lbound(InData%FillMList, kind=B8Ki), ubound(InData%FillMList, kind=B8Ki)) - call RegPack(Buf, InData%FillMList) - end if - call RegPack(Buf, InData%FillFSLoc) - call RegPack(Buf, InData%FillDensChr) - call RegPack(Buf, InData%FillDens) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%FillNumM) + call RegPackAlloc(RF, InData%FillMList) + call RegPack(RF, InData%FillFSLoc) + call RegPack(RF, InData%FillDensChr) + call RegPack(RF, InData%FillDens) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackFilledGroupType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackFilledGroupType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_FilledGroupType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackFilledGroupType' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%FillNumM) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%FillMList)) deallocate(OutData%FillMList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FillMList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FillMList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FillMList) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%FillFSLoc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FillDensChr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FillDens) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%FillNumM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FillMList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FillFSLoc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FillDensChr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FillDens); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyCoefDpths(SrcCoefDpthsData, DstCoefDpthsData, CtrlCode, ErrStat, ErrMsg) @@ -669,67 +638,51 @@ subroutine Morison_DestroyCoefDpths(CoefDpthsData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Morison_PackCoefDpths(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackCoefDpths(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_CoefDpths), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackCoefDpths' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Dpth) - call RegPack(Buf, InData%DpthCd) - call RegPack(Buf, InData%DpthCdMG) - call RegPack(Buf, InData%DpthCa) - call RegPack(Buf, InData%DpthCaMG) - call RegPack(Buf, InData%DpthCp) - call RegPack(Buf, InData%DpthCpMG) - call RegPack(Buf, InData%DpthAxCd) - call RegPack(Buf, InData%DpthAxCdMG) - call RegPack(Buf, InData%DpthAxCa) - call RegPack(Buf, InData%DpthAxCaMG) - call RegPack(Buf, InData%DpthAxCp) - call RegPack(Buf, InData%DpthAxCpMG) - call RegPack(Buf, InData%DpthCb) - call RegPack(Buf, InData%DpthCbMg) - call RegPack(Buf, InData%DpthMCF) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Dpth) + call RegPack(RF, InData%DpthCd) + call RegPack(RF, InData%DpthCdMG) + call RegPack(RF, InData%DpthCa) + call RegPack(RF, InData%DpthCaMG) + call RegPack(RF, InData%DpthCp) + call RegPack(RF, InData%DpthCpMG) + call RegPack(RF, InData%DpthAxCd) + call RegPack(RF, InData%DpthAxCdMG) + call RegPack(RF, InData%DpthAxCa) + call RegPack(RF, InData%DpthAxCaMG) + call RegPack(RF, InData%DpthAxCp) + call RegPack(RF, InData%DpthAxCpMG) + call RegPack(RF, InData%DpthCb) + call RegPack(RF, InData%DpthCbMg) + call RegPack(RF, InData%DpthMCF) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackCoefDpths(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackCoefDpths(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_CoefDpths), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackCoefDpths' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Dpth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DpthCd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DpthCdMG) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DpthCa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DpthCaMG) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DpthCp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DpthCpMG) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DpthAxCd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DpthAxCdMG) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DpthAxCa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DpthAxCaMG) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DpthAxCp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DpthAxCpMG) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DpthCb) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DpthCbMg) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DpthMCF) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Dpth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DpthCd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DpthCdMG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DpthCa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DpthCaMG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DpthCp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DpthCpMG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DpthAxCd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DpthAxCdMG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DpthAxCa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DpthAxCaMG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DpthAxCp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DpthAxCpMG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DpthCb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DpthCbMg); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DpthMCF); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyAxialCoefType(SrcAxialCoefTypeData, DstAxialCoefTypeData, CtrlCode, ErrStat, ErrMsg) @@ -759,40 +712,33 @@ subroutine Morison_DestroyAxialCoefType(AxialCoefTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Morison_PackAxialCoefType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackAxialCoefType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_AxialCoefType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackAxialCoefType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%AxCoefID) - call RegPack(Buf, InData%AxCd) - call RegPack(Buf, InData%AxCa) - call RegPack(Buf, InData%AxCp) - call RegPack(Buf, InData%AxVnCOff) - call RegPack(Buf, InData%AxFDLoFSc) - call RegPack(Buf, InData%AxFDMod) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%AxCoefID) + call RegPack(RF, InData%AxCd) + call RegPack(RF, InData%AxCa) + call RegPack(RF, InData%AxCp) + call RegPack(RF, InData%AxVnCOff) + call RegPack(RF, InData%AxFDLoFSc) + call RegPack(RF, InData%AxFDMod) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackAxialCoefType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackAxialCoefType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_AxialCoefType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackAxialCoefType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%AxCoefID) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AxCd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AxCa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AxCp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AxVnCOff) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AxFDLoFSc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AxFDMod) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%AxCoefID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AxCd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AxCa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AxCp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AxVnCOff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AxFDLoFSc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AxFDMod); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyMemberInputType(SrcMemberInputTypeData, DstMemberInputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -851,98 +797,62 @@ subroutine Morison_DestroyMemberInputType(MemberInputTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine Morison_PackMemberInputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackMemberInputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_MemberInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackMemberInputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%MemberID) - call RegPack(Buf, allocated(InData%NodeIndx)) - if (allocated(InData%NodeIndx)) then - call RegPackBounds(Buf, 1, lbound(InData%NodeIndx, kind=B8Ki), ubound(InData%NodeIndx, kind=B8Ki)) - call RegPack(Buf, InData%NodeIndx) - end if - call RegPack(Buf, InData%MJointID1) - call RegPack(Buf, InData%MJointID2) - call RegPack(Buf, InData%MJointID1Indx) - call RegPack(Buf, InData%MJointID2Indx) - call RegPack(Buf, InData%MPropSetID1) - call RegPack(Buf, InData%MPropSetID2) - call RegPack(Buf, InData%MPropSetID1Indx) - call RegPack(Buf, InData%MPropSetID2Indx) - call RegPack(Buf, InData%MDivSize) - call RegPack(Buf, InData%MCoefMod) - call RegPack(Buf, InData%MHstLMod) - call RegPack(Buf, InData%MmbrCoefIDIndx) - call RegPack(Buf, InData%MmbrFilledIDIndx) - call RegPack(Buf, InData%PropPot) - call RegPack(Buf, InData%PropMCF) - call RegPack(Buf, InData%NElements) - call RegPack(Buf, InData%RefLength) - call RegPack(Buf, InData%dl) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%MemberID) + call RegPackAlloc(RF, InData%NodeIndx) + call RegPack(RF, InData%MJointID1) + call RegPack(RF, InData%MJointID2) + call RegPack(RF, InData%MJointID1Indx) + call RegPack(RF, InData%MJointID2Indx) + call RegPack(RF, InData%MPropSetID1) + call RegPack(RF, InData%MPropSetID2) + call RegPack(RF, InData%MPropSetID1Indx) + call RegPack(RF, InData%MPropSetID2Indx) + call RegPack(RF, InData%MDivSize) + call RegPack(RF, InData%MCoefMod) + call RegPack(RF, InData%MHstLMod) + call RegPack(RF, InData%MmbrCoefIDIndx) + call RegPack(RF, InData%MmbrFilledIDIndx) + call RegPack(RF, InData%PropPot) + call RegPack(RF, InData%PropMCF) + call RegPack(RF, InData%NElements) + call RegPack(RF, InData%RefLength) + call RegPack(RF, InData%dl) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackMemberInputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackMemberInputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_MemberInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackMemberInputType' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%MemberID) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%NodeIndx)) deallocate(OutData%NodeIndx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NodeIndx(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NodeIndx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NodeIndx) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%MJointID1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MJointID2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MJointID1Indx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MJointID2Indx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MPropSetID1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MPropSetID2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MPropSetID1Indx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MPropSetID2Indx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MDivSize) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MCoefMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MHstLMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MmbrCoefIDIndx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MmbrFilledIDIndx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PropPot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PropMCF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NElements) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RefLength) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dl) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%MemberID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NodeIndx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MJointID1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MJointID2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MJointID1Indx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MJointID2Indx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MPropSetID1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MPropSetID2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MPropSetID1Indx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MPropSetID2Indx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MDivSize); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MCoefMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MHstLMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MmbrCoefIDIndx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MmbrFilledIDIndx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PropPot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PropMCF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NElements); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RefLength); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dl); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyNodeType(SrcNodeTypeData, DstNodeTypeData, CtrlCode, ErrStat, ErrMsg) @@ -980,64 +890,49 @@ subroutine Morison_DestroyNodeType(NodeTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Morison_PackNodeType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackNodeType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_NodeType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackNodeType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%JointIndx) - call RegPack(Buf, InData%Position) - call RegPack(Buf, InData%JointOvrlp) - call RegPack(Buf, InData%JointAxIDIndx) - call RegPack(Buf, InData%NConnections) - call RegPack(Buf, InData%ConnectionList) - call RegPack(Buf, InData%JAxCd) - call RegPack(Buf, InData%JAxCa) - call RegPack(Buf, InData%JAxCp) - call RegPack(Buf, InData%JAxVnCOff) - call RegPack(Buf, InData%JAxFDLoFSc) - call RegPack(Buf, InData%JAxFDMod) - call RegPack(Buf, InData%FillDensity) - call RegPack(Buf, InData%tMG) - call RegPack(Buf, InData%MGdensity) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%JointIndx) + call RegPack(RF, InData%Position) + call RegPack(RF, InData%JointOvrlp) + call RegPack(RF, InData%JointAxIDIndx) + call RegPack(RF, InData%NConnections) + call RegPack(RF, InData%ConnectionList) + call RegPack(RF, InData%JAxCd) + call RegPack(RF, InData%JAxCa) + call RegPack(RF, InData%JAxCp) + call RegPack(RF, InData%JAxVnCOff) + call RegPack(RF, InData%JAxFDLoFSc) + call RegPack(RF, InData%JAxFDMod) + call RegPack(RF, InData%FillDensity) + call RegPack(RF, InData%tMG) + call RegPack(RF, InData%MGdensity) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackNodeType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackNodeType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_NodeType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackNodeType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%JointIndx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Position) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%JointOvrlp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%JointAxIDIndx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NConnections) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ConnectionList) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%JAxCd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%JAxCa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%JAxCp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%JAxVnCOff) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%JAxFDLoFSc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%JAxFDMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FillDensity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tMG) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MGdensity) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%JointIndx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Position); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%JointOvrlp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%JointAxIDIndx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NConnections); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ConnectionList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%JAxCd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%JAxCa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%JAxCp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%JAxVnCOff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%JAxFDLoFSc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%JAxFDMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FillDensity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tMG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MGdensity); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyMemberType(SrcMemberTypeData, DstMemberTypeData, CtrlCode, ErrStat, ErrMsg) @@ -1692,872 +1587,162 @@ subroutine Morison_DestroyMemberType(MemberTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine Morison_PackMemberType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackMemberType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_MemberType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackMemberType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%NodeIndx)) - if (allocated(InData%NodeIndx)) then - call RegPackBounds(Buf, 1, lbound(InData%NodeIndx, kind=B8Ki), ubound(InData%NodeIndx, kind=B8Ki)) - call RegPack(Buf, InData%NodeIndx) - end if - call RegPack(Buf, InData%MemberID) - call RegPack(Buf, InData%NElements) - call RegPack(Buf, InData%RefLength) - call RegPack(Buf, InData%cosPhi_ref) - call RegPack(Buf, InData%dl) - call RegPack(Buf, InData%k) - call RegPack(Buf, InData%kkt) - call RegPack(Buf, InData%Ak) - call RegPack(Buf, allocated(InData%R)) - if (allocated(InData%R)) then - call RegPackBounds(Buf, 1, lbound(InData%R, kind=B8Ki), ubound(InData%R, kind=B8Ki)) - call RegPack(Buf, InData%R) - end if - call RegPack(Buf, allocated(InData%RMG)) - if (allocated(InData%RMG)) then - call RegPackBounds(Buf, 1, lbound(InData%RMG, kind=B8Ki), ubound(InData%RMG, kind=B8Ki)) - call RegPack(Buf, InData%RMG) - end if - call RegPack(Buf, allocated(InData%RMGB)) - if (allocated(InData%RMGB)) then - call RegPackBounds(Buf, 1, lbound(InData%RMGB, kind=B8Ki), ubound(InData%RMGB, kind=B8Ki)) - call RegPack(Buf, InData%RMGB) - end if - call RegPack(Buf, allocated(InData%Rin)) - if (allocated(InData%Rin)) then - call RegPackBounds(Buf, 1, lbound(InData%Rin, kind=B8Ki), ubound(InData%Rin, kind=B8Ki)) - call RegPack(Buf, InData%Rin) - end if - call RegPack(Buf, allocated(InData%tMG)) - if (allocated(InData%tMG)) then - call RegPackBounds(Buf, 1, lbound(InData%tMG, kind=B8Ki), ubound(InData%tMG, kind=B8Ki)) - call RegPack(Buf, InData%tMG) - end if - call RegPack(Buf, allocated(InData%MGdensity)) - if (allocated(InData%MGdensity)) then - call RegPackBounds(Buf, 1, lbound(InData%MGdensity, kind=B8Ki), ubound(InData%MGdensity, kind=B8Ki)) - call RegPack(Buf, InData%MGdensity) - end if - call RegPack(Buf, allocated(InData%dRdl_mg)) - if (allocated(InData%dRdl_mg)) then - call RegPackBounds(Buf, 1, lbound(InData%dRdl_mg, kind=B8Ki), ubound(InData%dRdl_mg, kind=B8Ki)) - call RegPack(Buf, InData%dRdl_mg) - end if - call RegPack(Buf, allocated(InData%dRdl_mg_b)) - if (allocated(InData%dRdl_mg_b)) then - call RegPackBounds(Buf, 1, lbound(InData%dRdl_mg_b, kind=B8Ki), ubound(InData%dRdl_mg_b, kind=B8Ki)) - call RegPack(Buf, InData%dRdl_mg_b) - end if - call RegPack(Buf, allocated(InData%dRdl_in)) - if (allocated(InData%dRdl_in)) then - call RegPackBounds(Buf, 1, lbound(InData%dRdl_in, kind=B8Ki), ubound(InData%dRdl_in, kind=B8Ki)) - call RegPack(Buf, InData%dRdl_in) - end if - call RegPack(Buf, InData%Vinner) - call RegPack(Buf, InData%Vouter) - call RegPack(Buf, InData%Vballast) - call RegPack(Buf, InData%Vsubmerged) - call RegPack(Buf, InData%l_fill) - call RegPack(Buf, InData%h_fill) - call RegPack(Buf, InData%z_overfill) - call RegPack(Buf, InData%h_floor) - call RegPack(Buf, InData%i_floor) - call RegPack(Buf, InData%doEndBuoyancy) - call RegPack(Buf, InData%memfloodstatus) - call RegPack(Buf, allocated(InData%floodstatus)) - if (allocated(InData%floodstatus)) then - call RegPackBounds(Buf, 1, lbound(InData%floodstatus, kind=B8Ki), ubound(InData%floodstatus, kind=B8Ki)) - call RegPack(Buf, InData%floodstatus) - end if - call RegPack(Buf, allocated(InData%alpha)) - if (allocated(InData%alpha)) then - call RegPackBounds(Buf, 1, lbound(InData%alpha, kind=B8Ki), ubound(InData%alpha, kind=B8Ki)) - call RegPack(Buf, InData%alpha) - end if - call RegPack(Buf, allocated(InData%alpha_fb)) - if (allocated(InData%alpha_fb)) then - call RegPackBounds(Buf, 1, lbound(InData%alpha_fb, kind=B8Ki), ubound(InData%alpha_fb, kind=B8Ki)) - call RegPack(Buf, InData%alpha_fb) - end if - call RegPack(Buf, allocated(InData%alpha_fb_star)) - if (allocated(InData%alpha_fb_star)) then - call RegPackBounds(Buf, 1, lbound(InData%alpha_fb_star, kind=B8Ki), ubound(InData%alpha_fb_star, kind=B8Ki)) - call RegPack(Buf, InData%alpha_fb_star) - end if - call RegPack(Buf, allocated(InData%Cd)) - if (allocated(InData%Cd)) then - call RegPackBounds(Buf, 1, lbound(InData%Cd, kind=B8Ki), ubound(InData%Cd, kind=B8Ki)) - call RegPack(Buf, InData%Cd) - end if - call RegPack(Buf, allocated(InData%Ca)) - if (allocated(InData%Ca)) then - call RegPackBounds(Buf, 1, lbound(InData%Ca, kind=B8Ki), ubound(InData%Ca, kind=B8Ki)) - call RegPack(Buf, InData%Ca) - end if - call RegPack(Buf, allocated(InData%Cp)) - if (allocated(InData%Cp)) then - call RegPackBounds(Buf, 1, lbound(InData%Cp, kind=B8Ki), ubound(InData%Cp, kind=B8Ki)) - call RegPack(Buf, InData%Cp) - end if - call RegPack(Buf, allocated(InData%AxCd)) - if (allocated(InData%AxCd)) then - call RegPackBounds(Buf, 1, lbound(InData%AxCd, kind=B8Ki), ubound(InData%AxCd, kind=B8Ki)) - call RegPack(Buf, InData%AxCd) - end if - call RegPack(Buf, allocated(InData%AxCa)) - if (allocated(InData%AxCa)) then - call RegPackBounds(Buf, 1, lbound(InData%AxCa, kind=B8Ki), ubound(InData%AxCa, kind=B8Ki)) - call RegPack(Buf, InData%AxCa) - end if - call RegPack(Buf, allocated(InData%AxCp)) - if (allocated(InData%AxCp)) then - call RegPackBounds(Buf, 1, lbound(InData%AxCp, kind=B8Ki), ubound(InData%AxCp, kind=B8Ki)) - call RegPack(Buf, InData%AxCp) - end if - call RegPack(Buf, allocated(InData%Cb)) - if (allocated(InData%Cb)) then - call RegPackBounds(Buf, 1, lbound(InData%Cb, kind=B8Ki), ubound(InData%Cb, kind=B8Ki)) - call RegPack(Buf, InData%Cb) - end if - call RegPack(Buf, allocated(InData%m_fb_l)) - if (allocated(InData%m_fb_l)) then - call RegPackBounds(Buf, 1, lbound(InData%m_fb_l, kind=B8Ki), ubound(InData%m_fb_l, kind=B8Ki)) - call RegPack(Buf, InData%m_fb_l) - end if - call RegPack(Buf, allocated(InData%m_fb_u)) - if (allocated(InData%m_fb_u)) then - call RegPackBounds(Buf, 1, lbound(InData%m_fb_u, kind=B8Ki), ubound(InData%m_fb_u, kind=B8Ki)) - call RegPack(Buf, InData%m_fb_u) - end if - call RegPack(Buf, allocated(InData%h_cfb_l)) - if (allocated(InData%h_cfb_l)) then - call RegPackBounds(Buf, 1, lbound(InData%h_cfb_l, kind=B8Ki), ubound(InData%h_cfb_l, kind=B8Ki)) - call RegPack(Buf, InData%h_cfb_l) - end if - call RegPack(Buf, allocated(InData%h_cfb_u)) - if (allocated(InData%h_cfb_u)) then - call RegPackBounds(Buf, 1, lbound(InData%h_cfb_u, kind=B8Ki), ubound(InData%h_cfb_u, kind=B8Ki)) - call RegPack(Buf, InData%h_cfb_u) - end if - call RegPack(Buf, allocated(InData%I_lfb_l)) - if (allocated(InData%I_lfb_l)) then - call RegPackBounds(Buf, 1, lbound(InData%I_lfb_l, kind=B8Ki), ubound(InData%I_lfb_l, kind=B8Ki)) - call RegPack(Buf, InData%I_lfb_l) - end if - call RegPack(Buf, allocated(InData%I_lfb_u)) - if (allocated(InData%I_lfb_u)) then - call RegPackBounds(Buf, 1, lbound(InData%I_lfb_u, kind=B8Ki), ubound(InData%I_lfb_u, kind=B8Ki)) - call RegPack(Buf, InData%I_lfb_u) - end if - call RegPack(Buf, allocated(InData%I_rfb_l)) - if (allocated(InData%I_rfb_l)) then - call RegPackBounds(Buf, 1, lbound(InData%I_rfb_l, kind=B8Ki), ubound(InData%I_rfb_l, kind=B8Ki)) - call RegPack(Buf, InData%I_rfb_l) - end if - call RegPack(Buf, allocated(InData%I_rfb_u)) - if (allocated(InData%I_rfb_u)) then - call RegPackBounds(Buf, 1, lbound(InData%I_rfb_u, kind=B8Ki), ubound(InData%I_rfb_u, kind=B8Ki)) - call RegPack(Buf, InData%I_rfb_u) - end if - call RegPack(Buf, allocated(InData%m_mg_l)) - if (allocated(InData%m_mg_l)) then - call RegPackBounds(Buf, 1, lbound(InData%m_mg_l, kind=B8Ki), ubound(InData%m_mg_l, kind=B8Ki)) - call RegPack(Buf, InData%m_mg_l) - end if - call RegPack(Buf, allocated(InData%m_mg_u)) - if (allocated(InData%m_mg_u)) then - call RegPackBounds(Buf, 1, lbound(InData%m_mg_u, kind=B8Ki), ubound(InData%m_mg_u, kind=B8Ki)) - call RegPack(Buf, InData%m_mg_u) - end if - call RegPack(Buf, allocated(InData%h_cmg_l)) - if (allocated(InData%h_cmg_l)) then - call RegPackBounds(Buf, 1, lbound(InData%h_cmg_l, kind=B8Ki), ubound(InData%h_cmg_l, kind=B8Ki)) - call RegPack(Buf, InData%h_cmg_l) - end if - call RegPack(Buf, allocated(InData%h_cmg_u)) - if (allocated(InData%h_cmg_u)) then - call RegPackBounds(Buf, 1, lbound(InData%h_cmg_u, kind=B8Ki), ubound(InData%h_cmg_u, kind=B8Ki)) - call RegPack(Buf, InData%h_cmg_u) - end if - call RegPack(Buf, allocated(InData%I_lmg_l)) - if (allocated(InData%I_lmg_l)) then - call RegPackBounds(Buf, 1, lbound(InData%I_lmg_l, kind=B8Ki), ubound(InData%I_lmg_l, kind=B8Ki)) - call RegPack(Buf, InData%I_lmg_l) - end if - call RegPack(Buf, allocated(InData%I_lmg_u)) - if (allocated(InData%I_lmg_u)) then - call RegPackBounds(Buf, 1, lbound(InData%I_lmg_u, kind=B8Ki), ubound(InData%I_lmg_u, kind=B8Ki)) - call RegPack(Buf, InData%I_lmg_u) - end if - call RegPack(Buf, allocated(InData%I_rmg_l)) - if (allocated(InData%I_rmg_l)) then - call RegPackBounds(Buf, 1, lbound(InData%I_rmg_l, kind=B8Ki), ubound(InData%I_rmg_l, kind=B8Ki)) - call RegPack(Buf, InData%I_rmg_l) - end if - call RegPack(Buf, allocated(InData%I_rmg_u)) - if (allocated(InData%I_rmg_u)) then - call RegPackBounds(Buf, 1, lbound(InData%I_rmg_u, kind=B8Ki), ubound(InData%I_rmg_u, kind=B8Ki)) - call RegPack(Buf, InData%I_rmg_u) - end if - call RegPack(Buf, allocated(InData%Cfl_fb)) - if (allocated(InData%Cfl_fb)) then - call RegPackBounds(Buf, 1, lbound(InData%Cfl_fb, kind=B8Ki), ubound(InData%Cfl_fb, kind=B8Ki)) - call RegPack(Buf, InData%Cfl_fb) - end if - call RegPack(Buf, allocated(InData%Cfr_fb)) - if (allocated(InData%Cfr_fb)) then - call RegPackBounds(Buf, 1, lbound(InData%Cfr_fb, kind=B8Ki), ubound(InData%Cfr_fb, kind=B8Ki)) - call RegPack(Buf, InData%Cfr_fb) - end if - call RegPack(Buf, allocated(InData%CM0_fb)) - if (allocated(InData%CM0_fb)) then - call RegPackBounds(Buf, 1, lbound(InData%CM0_fb, kind=B8Ki), ubound(InData%CM0_fb, kind=B8Ki)) - call RegPack(Buf, InData%CM0_fb) - end if - call RegPack(Buf, InData%MGvolume) - call RegPack(Buf, InData%MDivSize) - call RegPack(Buf, InData%MCoefMod) - call RegPack(Buf, InData%MmbrCoefIDIndx) - call RegPack(Buf, InData%MmbrFilledIDIndx) - call RegPack(Buf, InData%MHstLMod) - call RegPack(Buf, InData%FillFSLoc) - call RegPack(Buf, InData%FillDens) - call RegPack(Buf, InData%PropPot) - call RegPack(Buf, InData%PropMCF) - call RegPack(Buf, InData%Flipped) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%NodeIndx) + call RegPack(RF, InData%MemberID) + call RegPack(RF, InData%NElements) + call RegPack(RF, InData%RefLength) + call RegPack(RF, InData%cosPhi_ref) + call RegPack(RF, InData%dl) + call RegPack(RF, InData%k) + call RegPack(RF, InData%kkt) + call RegPack(RF, InData%Ak) + call RegPackAlloc(RF, InData%R) + call RegPackAlloc(RF, InData%RMG) + call RegPackAlloc(RF, InData%RMGB) + call RegPackAlloc(RF, InData%Rin) + call RegPackAlloc(RF, InData%tMG) + call RegPackAlloc(RF, InData%MGdensity) + call RegPackAlloc(RF, InData%dRdl_mg) + call RegPackAlloc(RF, InData%dRdl_mg_b) + call RegPackAlloc(RF, InData%dRdl_in) + call RegPack(RF, InData%Vinner) + call RegPack(RF, InData%Vouter) + call RegPack(RF, InData%Vballast) + call RegPack(RF, InData%Vsubmerged) + call RegPack(RF, InData%l_fill) + call RegPack(RF, InData%h_fill) + call RegPack(RF, InData%z_overfill) + call RegPack(RF, InData%h_floor) + call RegPack(RF, InData%i_floor) + call RegPack(RF, InData%doEndBuoyancy) + call RegPack(RF, InData%memfloodstatus) + call RegPackAlloc(RF, InData%floodstatus) + call RegPackAlloc(RF, InData%alpha) + call RegPackAlloc(RF, InData%alpha_fb) + call RegPackAlloc(RF, InData%alpha_fb_star) + call RegPackAlloc(RF, InData%Cd) + call RegPackAlloc(RF, InData%Ca) + call RegPackAlloc(RF, InData%Cp) + call RegPackAlloc(RF, InData%AxCd) + call RegPackAlloc(RF, InData%AxCa) + call RegPackAlloc(RF, InData%AxCp) + call RegPackAlloc(RF, InData%Cb) + call RegPackAlloc(RF, InData%m_fb_l) + call RegPackAlloc(RF, InData%m_fb_u) + call RegPackAlloc(RF, InData%h_cfb_l) + call RegPackAlloc(RF, InData%h_cfb_u) + call RegPackAlloc(RF, InData%I_lfb_l) + call RegPackAlloc(RF, InData%I_lfb_u) + call RegPackAlloc(RF, InData%I_rfb_l) + call RegPackAlloc(RF, InData%I_rfb_u) + call RegPackAlloc(RF, InData%m_mg_l) + call RegPackAlloc(RF, InData%m_mg_u) + call RegPackAlloc(RF, InData%h_cmg_l) + call RegPackAlloc(RF, InData%h_cmg_u) + call RegPackAlloc(RF, InData%I_lmg_l) + call RegPackAlloc(RF, InData%I_lmg_u) + call RegPackAlloc(RF, InData%I_rmg_l) + call RegPackAlloc(RF, InData%I_rmg_u) + call RegPackAlloc(RF, InData%Cfl_fb) + call RegPackAlloc(RF, InData%Cfr_fb) + call RegPackAlloc(RF, InData%CM0_fb) + call RegPack(RF, InData%MGvolume) + call RegPack(RF, InData%MDivSize) + call RegPack(RF, InData%MCoefMod) + call RegPack(RF, InData%MmbrCoefIDIndx) + call RegPack(RF, InData%MmbrFilledIDIndx) + call RegPack(RF, InData%MHstLMod) + call RegPack(RF, InData%FillFSLoc) + call RegPack(RF, InData%FillDens) + call RegPack(RF, InData%PropPot) + call RegPack(RF, InData%PropMCF) + call RegPack(RF, InData%Flipped) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackMemberType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackMemberType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_MemberType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackMemberType' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%NodeIndx)) deallocate(OutData%NodeIndx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NodeIndx(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NodeIndx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NodeIndx) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%MemberID) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NElements) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RefLength) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%cosPhi_ref) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%kkt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Ak) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%R)) deallocate(OutData%R) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%R(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%R.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%R) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RMG)) deallocate(OutData%RMG) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RMG(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RMG.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RMG) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RMGB)) deallocate(OutData%RMGB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RMGB(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RMGB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RMGB) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Rin)) deallocate(OutData%Rin) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Rin(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Rin.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Rin) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%tMG)) deallocate(OutData%tMG) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%tMG(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%tMG.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%tMG) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MGdensity)) deallocate(OutData%MGdensity) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MGdensity(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MGdensity.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MGdensity) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dRdl_mg)) deallocate(OutData%dRdl_mg) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dRdl_mg(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dRdl_mg.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dRdl_mg) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dRdl_mg_b)) deallocate(OutData%dRdl_mg_b) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dRdl_mg_b(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dRdl_mg_b.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dRdl_mg_b) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dRdl_in)) deallocate(OutData%dRdl_in) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dRdl_in(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dRdl_in.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dRdl_in) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Vinner) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Vouter) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Vballast) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Vsubmerged) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%l_fill) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%h_fill) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%z_overfill) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%h_floor) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%i_floor) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%doEndBuoyancy) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%memfloodstatus) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%floodstatus)) deallocate(OutData%floodstatus) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%floodstatus(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%floodstatus.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%floodstatus) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%alpha)) deallocate(OutData%alpha) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%alpha(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%alpha.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%alpha) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%alpha_fb)) deallocate(OutData%alpha_fb) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%alpha_fb(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%alpha_fb.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%alpha_fb) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%alpha_fb_star)) deallocate(OutData%alpha_fb_star) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%alpha_fb_star(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%alpha_fb_star.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%alpha_fb_star) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cd)) deallocate(OutData%Cd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cd(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Ca)) deallocate(OutData%Ca) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Ca(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Ca.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Ca) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cp)) deallocate(OutData%Cp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cp(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AxCd)) deallocate(OutData%AxCd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AxCd(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AxCd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AxCd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AxCa)) deallocate(OutData%AxCa) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AxCa(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AxCa.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AxCa) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AxCp)) deallocate(OutData%AxCp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AxCp(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AxCp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AxCp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cb)) deallocate(OutData%Cb) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cb(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cb.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cb) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%m_fb_l)) deallocate(OutData%m_fb_l) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%m_fb_l(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%m_fb_l.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%m_fb_l) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%m_fb_u)) deallocate(OutData%m_fb_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%m_fb_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%m_fb_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%m_fb_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%h_cfb_l)) deallocate(OutData%h_cfb_l) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%h_cfb_l(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%h_cfb_l.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%h_cfb_l) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%h_cfb_u)) deallocate(OutData%h_cfb_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%h_cfb_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%h_cfb_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%h_cfb_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%I_lfb_l)) deallocate(OutData%I_lfb_l) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%I_lfb_l(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%I_lfb_l.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%I_lfb_l) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%I_lfb_u)) deallocate(OutData%I_lfb_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%I_lfb_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%I_lfb_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%I_lfb_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%I_rfb_l)) deallocate(OutData%I_rfb_l) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%I_rfb_l(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%I_rfb_l.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%I_rfb_l) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%I_rfb_u)) deallocate(OutData%I_rfb_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%I_rfb_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%I_rfb_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%I_rfb_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%m_mg_l)) deallocate(OutData%m_mg_l) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%m_mg_l(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%m_mg_l.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%m_mg_l) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%m_mg_u)) deallocate(OutData%m_mg_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%m_mg_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%m_mg_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%m_mg_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%h_cmg_l)) deallocate(OutData%h_cmg_l) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%h_cmg_l(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%h_cmg_l.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%h_cmg_l) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%h_cmg_u)) deallocate(OutData%h_cmg_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%h_cmg_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%h_cmg_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%h_cmg_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%I_lmg_l)) deallocate(OutData%I_lmg_l) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%I_lmg_l(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%I_lmg_l.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%I_lmg_l) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%I_lmg_u)) deallocate(OutData%I_lmg_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%I_lmg_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%I_lmg_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%I_lmg_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%I_rmg_l)) deallocate(OutData%I_rmg_l) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%I_rmg_l(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%I_rmg_l.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%I_rmg_l) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%I_rmg_u)) deallocate(OutData%I_rmg_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%I_rmg_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%I_rmg_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%I_rmg_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cfl_fb)) deallocate(OutData%Cfl_fb) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cfl_fb(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cfl_fb.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cfl_fb) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cfr_fb)) deallocate(OutData%Cfr_fb) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cfr_fb(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cfr_fb.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cfr_fb) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CM0_fb)) deallocate(OutData%CM0_fb) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CM0_fb(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CM0_fb.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CM0_fb) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%MGvolume) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MDivSize) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MCoefMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MmbrCoefIDIndx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MmbrFilledIDIndx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MHstLMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FillFSLoc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FillDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PropPot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PropMCF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Flipped) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%NodeIndx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NElements); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RefLength); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%cosPhi_ref); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%kkt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ak); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%R); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RMG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RMGB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Rin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%tMG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MGdensity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dRdl_mg); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dRdl_mg_b); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dRdl_in); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Vinner); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Vouter); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Vballast); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Vsubmerged); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%l_fill); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%h_fill); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%z_overfill); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%h_floor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%i_floor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%doEndBuoyancy); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%memfloodstatus); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%floodstatus); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%alpha); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%alpha_fb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%alpha_fb_star); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Ca); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AxCd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AxCa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AxCp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%m_fb_l); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%m_fb_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%h_cfb_l); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%h_cfb_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%I_lfb_l); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%I_lfb_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%I_rfb_l); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%I_rfb_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%m_mg_l); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%m_mg_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%h_cmg_l); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%h_cmg_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%I_lmg_l); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%I_lmg_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%I_rmg_l); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%I_rmg_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cfl_fb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cfr_fb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CM0_fb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MGvolume); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MDivSize); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MCoefMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MmbrCoefIDIndx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MmbrFilledIDIndx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MHstLMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FillFSLoc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FillDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PropPot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PropMCF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Flipped); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyMemberLoads(SrcMemberLoadsData, DstMemberLoadsData, CtrlCode, ErrStat, ErrMsg) @@ -2747,231 +1932,44 @@ subroutine Morison_DestroyMemberLoads(MemberLoadsData, ErrStat, ErrMsg) end if end subroutine -subroutine Morison_PackMemberLoads(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackMemberLoads(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_MemberLoads), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackMemberLoads' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%F_D)) - if (allocated(InData%F_D)) then - call RegPackBounds(Buf, 2, lbound(InData%F_D, kind=B8Ki), ubound(InData%F_D, kind=B8Ki)) - call RegPack(Buf, InData%F_D) - end if - call RegPack(Buf, allocated(InData%F_I)) - if (allocated(InData%F_I)) then - call RegPackBounds(Buf, 2, lbound(InData%F_I, kind=B8Ki), ubound(InData%F_I, kind=B8Ki)) - call RegPack(Buf, InData%F_I) - end if - call RegPack(Buf, allocated(InData%F_A)) - if (allocated(InData%F_A)) then - call RegPackBounds(Buf, 2, lbound(InData%F_A, kind=B8Ki), ubound(InData%F_A, kind=B8Ki)) - call RegPack(Buf, InData%F_A) - end if - call RegPack(Buf, allocated(InData%F_B)) - if (allocated(InData%F_B)) then - call RegPackBounds(Buf, 2, lbound(InData%F_B, kind=B8Ki), ubound(InData%F_B, kind=B8Ki)) - call RegPack(Buf, InData%F_B) - end if - call RegPack(Buf, allocated(InData%F_BF)) - if (allocated(InData%F_BF)) then - call RegPackBounds(Buf, 2, lbound(InData%F_BF, kind=B8Ki), ubound(InData%F_BF, kind=B8Ki)) - call RegPack(Buf, InData%F_BF) - end if - call RegPack(Buf, allocated(InData%F_If)) - if (allocated(InData%F_If)) then - call RegPackBounds(Buf, 2, lbound(InData%F_If, kind=B8Ki), ubound(InData%F_If, kind=B8Ki)) - call RegPack(Buf, InData%F_If) - end if - call RegPack(Buf, allocated(InData%F_WMG)) - if (allocated(InData%F_WMG)) then - call RegPackBounds(Buf, 2, lbound(InData%F_WMG, kind=B8Ki), ubound(InData%F_WMG, kind=B8Ki)) - call RegPack(Buf, InData%F_WMG) - end if - call RegPack(Buf, allocated(InData%F_IMG)) - if (allocated(InData%F_IMG)) then - call RegPackBounds(Buf, 2, lbound(InData%F_IMG, kind=B8Ki), ubound(InData%F_IMG, kind=B8Ki)) - call RegPack(Buf, InData%F_IMG) - end if - call RegPack(Buf, allocated(InData%FV)) - if (allocated(InData%FV)) then - call RegPackBounds(Buf, 2, lbound(InData%FV, kind=B8Ki), ubound(InData%FV, kind=B8Ki)) - call RegPack(Buf, InData%FV) - end if - call RegPack(Buf, allocated(InData%FA)) - if (allocated(InData%FA)) then - call RegPackBounds(Buf, 2, lbound(InData%FA, kind=B8Ki), ubound(InData%FA, kind=B8Ki)) - call RegPack(Buf, InData%FA) - end if - call RegPack(Buf, allocated(InData%F_DP)) - if (allocated(InData%F_DP)) then - call RegPackBounds(Buf, 2, lbound(InData%F_DP, kind=B8Ki), ubound(InData%F_DP, kind=B8Ki)) - call RegPack(Buf, InData%F_DP) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%F_D) + call RegPackAlloc(RF, InData%F_I) + call RegPackAlloc(RF, InData%F_A) + call RegPackAlloc(RF, InData%F_B) + call RegPackAlloc(RF, InData%F_BF) + call RegPackAlloc(RF, InData%F_If) + call RegPackAlloc(RF, InData%F_WMG) + call RegPackAlloc(RF, InData%F_IMG) + call RegPackAlloc(RF, InData%FV) + call RegPackAlloc(RF, InData%FA) + call RegPackAlloc(RF, InData%F_DP) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackMemberLoads(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackMemberLoads(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_MemberLoads), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackMemberLoads' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%F_D)) deallocate(OutData%F_D) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_D(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_D.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_D) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_I)) deallocate(OutData%F_I) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_I(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_I.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_I) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_A)) deallocate(OutData%F_A) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_A(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_A.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_A) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_B)) deallocate(OutData%F_B) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_B(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_B.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_B) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_BF)) deallocate(OutData%F_BF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_BF(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_BF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_BF) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_If)) deallocate(OutData%F_If) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_If(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_If.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_If) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_WMG)) deallocate(OutData%F_WMG) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_WMG(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_WMG.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_WMG) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_IMG)) deallocate(OutData%F_IMG) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_IMG(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_IMG.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_IMG) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FV)) deallocate(OutData%FV) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FV(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FV.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FV) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FA)) deallocate(OutData%FA) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FA(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FA.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FA) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_DP)) deallocate(OutData%F_DP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_DP(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_DP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_DP) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%F_D); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_I); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_A); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_B); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_BF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_If); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_WMG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_IMG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_DP); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyCoefMembers(SrcCoefMembersData, DstCoefMembersData, CtrlCode, ErrStat, ErrMsg) @@ -3024,109 +2022,79 @@ subroutine Morison_DestroyCoefMembers(CoefMembersData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Morison_PackCoefMembers(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackCoefMembers(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_CoefMembers), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackCoefMembers' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%MemberID) - call RegPack(Buf, InData%MemberCd1) - call RegPack(Buf, InData%MemberCd2) - call RegPack(Buf, InData%MemberCdMG1) - call RegPack(Buf, InData%MemberCdMG2) - call RegPack(Buf, InData%MemberCa1) - call RegPack(Buf, InData%MemberCa2) - call RegPack(Buf, InData%MemberCaMG1) - call RegPack(Buf, InData%MemberCaMG2) - call RegPack(Buf, InData%MemberCp1) - call RegPack(Buf, InData%MemberCp2) - call RegPack(Buf, InData%MemberCpMG1) - call RegPack(Buf, InData%MemberCpMG2) - call RegPack(Buf, InData%MemberAxCd1) - call RegPack(Buf, InData%MemberAxCd2) - call RegPack(Buf, InData%MemberAxCdMG1) - call RegPack(Buf, InData%MemberAxCdMG2) - call RegPack(Buf, InData%MemberAxCa1) - call RegPack(Buf, InData%MemberAxCa2) - call RegPack(Buf, InData%MemberAxCaMG1) - call RegPack(Buf, InData%MemberAxCaMG2) - call RegPack(Buf, InData%MemberAxCp1) - call RegPack(Buf, InData%MemberAxCp2) - call RegPack(Buf, InData%MemberAxCpMG1) - call RegPack(Buf, InData%MemberAxCpMG2) - call RegPack(Buf, InData%MemberCb1) - call RegPack(Buf, InData%MemberCb2) - call RegPack(Buf, InData%MemberCbMG1) - call RegPack(Buf, InData%MemberCbMG2) - call RegPack(Buf, InData%MemberMCF) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%MemberID) + call RegPack(RF, InData%MemberCd1) + call RegPack(RF, InData%MemberCd2) + call RegPack(RF, InData%MemberCdMG1) + call RegPack(RF, InData%MemberCdMG2) + call RegPack(RF, InData%MemberCa1) + call RegPack(RF, InData%MemberCa2) + call RegPack(RF, InData%MemberCaMG1) + call RegPack(RF, InData%MemberCaMG2) + call RegPack(RF, InData%MemberCp1) + call RegPack(RF, InData%MemberCp2) + call RegPack(RF, InData%MemberCpMG1) + call RegPack(RF, InData%MemberCpMG2) + call RegPack(RF, InData%MemberAxCd1) + call RegPack(RF, InData%MemberAxCd2) + call RegPack(RF, InData%MemberAxCdMG1) + call RegPack(RF, InData%MemberAxCdMG2) + call RegPack(RF, InData%MemberAxCa1) + call RegPack(RF, InData%MemberAxCa2) + call RegPack(RF, InData%MemberAxCaMG1) + call RegPack(RF, InData%MemberAxCaMG2) + call RegPack(RF, InData%MemberAxCp1) + call RegPack(RF, InData%MemberAxCp2) + call RegPack(RF, InData%MemberAxCpMG1) + call RegPack(RF, InData%MemberAxCpMG2) + call RegPack(RF, InData%MemberCb1) + call RegPack(RF, InData%MemberCb2) + call RegPack(RF, InData%MemberCbMG1) + call RegPack(RF, InData%MemberCbMG2) + call RegPack(RF, InData%MemberMCF) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackCoefMembers(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackCoefMembers(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_CoefMembers), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackCoefMembers' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%MemberID) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberCd1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberCd2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberCdMG1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberCdMG2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberCa1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberCa2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberCaMG1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberCaMG2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberCp1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberCp2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberCpMG1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberCpMG2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberAxCd1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberAxCd2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberAxCdMG1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberAxCdMG2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberAxCa1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberAxCa2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberAxCaMG1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberAxCaMG2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberAxCp1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberAxCp2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberAxCpMG1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberAxCpMG2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberCb1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberCb2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberCbMG1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberCbMG2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MemberMCF) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%MemberID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberCd1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberCd2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberCdMG1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberCdMG2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberCa1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberCa2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberCaMG1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberCaMG2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberCp1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberCp2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberCpMG1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberCpMG2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberAxCd1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberAxCd2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberAxCdMG1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberAxCdMG2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberAxCa1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberAxCa2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberAxCaMG1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberAxCaMG2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberAxCp1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberAxCp2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberAxCpMG1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberAxCpMG2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberCb1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberCb2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberCbMG1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberCbMG2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberMCF); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyMGDepthsType(SrcMGDepthsTypeData, DstMGDepthsTypeData, CtrlCode, ErrStat, ErrMsg) @@ -3152,28 +2120,25 @@ subroutine Morison_DestroyMGDepthsType(MGDepthsTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Morison_PackMGDepthsType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackMGDepthsType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_MGDepthsType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackMGDepthsType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%MGDpth) - call RegPack(Buf, InData%MGThck) - call RegPack(Buf, InData%MGDens) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%MGDpth) + call RegPack(RF, InData%MGThck) + call RegPack(RF, InData%MGDens) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackMGDepthsType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackMGDepthsType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_MGDepthsType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackMGDepthsType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%MGDpth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MGThck) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MGDens) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%MGDpth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MGThck); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MGDens); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyMOutput(SrcMOutputData, DstMOutputData, CtrlCode, ErrStat, ErrMsg) @@ -3291,145 +2256,40 @@ subroutine Morison_DestroyMOutput(MOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine Morison_PackMOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackMOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_MOutput), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackMOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%MemberID) - call RegPack(Buf, InData%NOutLoc) - call RegPack(Buf, allocated(InData%NodeLocs)) - if (allocated(InData%NodeLocs)) then - call RegPackBounds(Buf, 1, lbound(InData%NodeLocs, kind=B8Ki), ubound(InData%NodeLocs, kind=B8Ki)) - call RegPack(Buf, InData%NodeLocs) - end if - call RegPack(Buf, InData%MemberIDIndx) - call RegPack(Buf, allocated(InData%MeshIndx1)) - if (allocated(InData%MeshIndx1)) then - call RegPackBounds(Buf, 1, lbound(InData%MeshIndx1, kind=B8Ki), ubound(InData%MeshIndx1, kind=B8Ki)) - call RegPack(Buf, InData%MeshIndx1) - end if - call RegPack(Buf, allocated(InData%MeshIndx2)) - if (allocated(InData%MeshIndx2)) then - call RegPackBounds(Buf, 1, lbound(InData%MeshIndx2, kind=B8Ki), ubound(InData%MeshIndx2, kind=B8Ki)) - call RegPack(Buf, InData%MeshIndx2) - end if - call RegPack(Buf, allocated(InData%MemberIndx1)) - if (allocated(InData%MemberIndx1)) then - call RegPackBounds(Buf, 1, lbound(InData%MemberIndx1, kind=B8Ki), ubound(InData%MemberIndx1, kind=B8Ki)) - call RegPack(Buf, InData%MemberIndx1) - end if - call RegPack(Buf, allocated(InData%MemberIndx2)) - if (allocated(InData%MemberIndx2)) then - call RegPackBounds(Buf, 1, lbound(InData%MemberIndx2, kind=B8Ki), ubound(InData%MemberIndx2, kind=B8Ki)) - call RegPack(Buf, InData%MemberIndx2) - end if - call RegPack(Buf, allocated(InData%s)) - if (allocated(InData%s)) then - call RegPackBounds(Buf, 1, lbound(InData%s, kind=B8Ki), ubound(InData%s, kind=B8Ki)) - call RegPack(Buf, InData%s) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%MemberID) + call RegPack(RF, InData%NOutLoc) + call RegPackAlloc(RF, InData%NodeLocs) + call RegPack(RF, InData%MemberIDIndx) + call RegPackAlloc(RF, InData%MeshIndx1) + call RegPackAlloc(RF, InData%MeshIndx2) + call RegPackAlloc(RF, InData%MemberIndx1) + call RegPackAlloc(RF, InData%MemberIndx2) + call RegPackAlloc(RF, InData%s) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackMOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackMOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_MOutput), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackMOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%MemberID) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NOutLoc) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%NodeLocs)) deallocate(OutData%NodeLocs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NodeLocs(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NodeLocs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NodeLocs) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%MemberIDIndx) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%MeshIndx1)) deallocate(OutData%MeshIndx1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MeshIndx1(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MeshIndx1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MeshIndx1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MeshIndx2)) deallocate(OutData%MeshIndx2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MeshIndx2(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MeshIndx2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MeshIndx2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MemberIndx1)) deallocate(OutData%MemberIndx1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MemberIndx1(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MemberIndx1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MemberIndx1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MemberIndx2)) deallocate(OutData%MemberIndx2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MemberIndx2(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MemberIndx2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MemberIndx2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%s)) deallocate(OutData%s) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%s(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%s.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%s) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%MemberID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NOutLoc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NodeLocs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MemberIDIndx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MeshIndx1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MeshIndx2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MemberIndx1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MemberIndx2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%s); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyJOutput(SrcJOutputData, DstJOutputData, CtrlCode, ErrStat, ErrMsg) @@ -3454,25 +2314,23 @@ subroutine Morison_DestroyJOutput(JOutputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Morison_PackJOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackJOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_JOutput), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackJOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%JointID) - call RegPack(Buf, InData%JointIDIndx) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%JointID) + call RegPack(RF, InData%JointIDIndx) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackJOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackJOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_JOutput), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackJOutput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%JointID) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%JointIDIndx) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%JointID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%JointIDIndx); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -3829,164 +2687,160 @@ subroutine Morison_DestroyInitInput(InitInputData, ErrStat, ErrMsg) nullify(InitInputData%WaveField) end subroutine -subroutine Morison_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackInitInput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, InData%WaveDisp) - call RegPack(Buf, InData%AMMod) - call RegPack(Buf, InData%NJoints) - call RegPack(Buf, InData%NNodes) - call RegPack(Buf, allocated(InData%InpJoints)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Gravity) + call RegPack(RF, InData%WaveDisp) + call RegPack(RF, InData%AMMod) + call RegPack(RF, InData%NJoints) + call RegPack(RF, InData%NNodes) + call RegPack(RF, allocated(InData%InpJoints)) if (allocated(InData%InpJoints)) then - call RegPackBounds(Buf, 1, lbound(InData%InpJoints, kind=B8Ki), ubound(InData%InpJoints, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%InpJoints, kind=B8Ki), ubound(InData%InpJoints, kind=B8Ki)) LB(1:1) = lbound(InData%InpJoints, kind=B8Ki) UB(1:1) = ubound(InData%InpJoints, kind=B8Ki) do i1 = LB(1), UB(1) - call Morison_PackJointType(Buf, InData%InpJoints(i1)) + call Morison_PackJointType(RF, InData%InpJoints(i1)) end do end if - call RegPack(Buf, allocated(InData%Nodes)) + call RegPack(RF, allocated(InData%Nodes)) if (allocated(InData%Nodes)) then - call RegPackBounds(Buf, 1, lbound(InData%Nodes, kind=B8Ki), ubound(InData%Nodes, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Nodes, kind=B8Ki), ubound(InData%Nodes, kind=B8Ki)) LB(1:1) = lbound(InData%Nodes, kind=B8Ki) UB(1:1) = ubound(InData%Nodes, kind=B8Ki) do i1 = LB(1), UB(1) - call Morison_PackNodeType(Buf, InData%Nodes(i1)) + call Morison_PackNodeType(RF, InData%Nodes(i1)) end do end if - call RegPack(Buf, InData%NAxCoefs) - call RegPack(Buf, allocated(InData%AxialCoefs)) + call RegPack(RF, InData%NAxCoefs) + call RegPack(RF, allocated(InData%AxialCoefs)) if (allocated(InData%AxialCoefs)) then - call RegPackBounds(Buf, 1, lbound(InData%AxialCoefs, kind=B8Ki), ubound(InData%AxialCoefs, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%AxialCoefs, kind=B8Ki), ubound(InData%AxialCoefs, kind=B8Ki)) LB(1:1) = lbound(InData%AxialCoefs, kind=B8Ki) UB(1:1) = ubound(InData%AxialCoefs, kind=B8Ki) do i1 = LB(1), UB(1) - call Morison_PackAxialCoefType(Buf, InData%AxialCoefs(i1)) + call Morison_PackAxialCoefType(RF, InData%AxialCoefs(i1)) end do end if - call RegPack(Buf, InData%NPropSets) - call RegPack(Buf, allocated(InData%MPropSets)) + call RegPack(RF, InData%NPropSets) + call RegPack(RF, allocated(InData%MPropSets)) if (allocated(InData%MPropSets)) then - call RegPackBounds(Buf, 1, lbound(InData%MPropSets, kind=B8Ki), ubound(InData%MPropSets, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%MPropSets, kind=B8Ki), ubound(InData%MPropSets, kind=B8Ki)) LB(1:1) = lbound(InData%MPropSets, kind=B8Ki) UB(1:1) = ubound(InData%MPropSets, kind=B8Ki) do i1 = LB(1), UB(1) - call Morison_PackMemberPropType(Buf, InData%MPropSets(i1)) + call Morison_PackMemberPropType(RF, InData%MPropSets(i1)) end do end if - call RegPack(Buf, InData%SimplCd) - call RegPack(Buf, InData%SimplCdMG) - call RegPack(Buf, InData%SimplCa) - call RegPack(Buf, InData%SimplCaMG) - call RegPack(Buf, InData%SimplCp) - call RegPack(Buf, InData%SimplCpMG) - call RegPack(Buf, InData%SimplAxCd) - call RegPack(Buf, InData%SimplAxCdMG) - call RegPack(Buf, InData%SimplAxCa) - call RegPack(Buf, InData%SimplAxCaMG) - call RegPack(Buf, InData%SimplAxCp) - call RegPack(Buf, InData%SimplAxCpMG) - call RegPack(Buf, InData%SimplCb) - call RegPack(Buf, InData%SimplCbMg) - call RegPack(Buf, InData%SimplMCF) - call RegPack(Buf, InData%NCoefDpth) - call RegPack(Buf, allocated(InData%CoefDpths)) + call RegPack(RF, InData%SimplCd) + call RegPack(RF, InData%SimplCdMG) + call RegPack(RF, InData%SimplCa) + call RegPack(RF, InData%SimplCaMG) + call RegPack(RF, InData%SimplCp) + call RegPack(RF, InData%SimplCpMG) + call RegPack(RF, InData%SimplAxCd) + call RegPack(RF, InData%SimplAxCdMG) + call RegPack(RF, InData%SimplAxCa) + call RegPack(RF, InData%SimplAxCaMG) + call RegPack(RF, InData%SimplAxCp) + call RegPack(RF, InData%SimplAxCpMG) + call RegPack(RF, InData%SimplCb) + call RegPack(RF, InData%SimplCbMg) + call RegPack(RF, InData%SimplMCF) + call RegPack(RF, InData%NCoefDpth) + call RegPack(RF, allocated(InData%CoefDpths)) if (allocated(InData%CoefDpths)) then - call RegPackBounds(Buf, 1, lbound(InData%CoefDpths, kind=B8Ki), ubound(InData%CoefDpths, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%CoefDpths, kind=B8Ki), ubound(InData%CoefDpths, kind=B8Ki)) LB(1:1) = lbound(InData%CoefDpths, kind=B8Ki) UB(1:1) = ubound(InData%CoefDpths, kind=B8Ki) do i1 = LB(1), UB(1) - call Morison_PackCoefDpths(Buf, InData%CoefDpths(i1)) + call Morison_PackCoefDpths(RF, InData%CoefDpths(i1)) end do end if - call RegPack(Buf, InData%NCoefMembers) - call RegPack(Buf, allocated(InData%CoefMembers)) + call RegPack(RF, InData%NCoefMembers) + call RegPack(RF, allocated(InData%CoefMembers)) if (allocated(InData%CoefMembers)) then - call RegPackBounds(Buf, 1, lbound(InData%CoefMembers, kind=B8Ki), ubound(InData%CoefMembers, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%CoefMembers, kind=B8Ki), ubound(InData%CoefMembers, kind=B8Ki)) LB(1:1) = lbound(InData%CoefMembers, kind=B8Ki) UB(1:1) = ubound(InData%CoefMembers, kind=B8Ki) do i1 = LB(1), UB(1) - call Morison_PackCoefMembers(Buf, InData%CoefMembers(i1)) + call Morison_PackCoefMembers(RF, InData%CoefMembers(i1)) end do end if - call RegPack(Buf, InData%NMembers) - call RegPack(Buf, allocated(InData%InpMembers)) + call RegPack(RF, InData%NMembers) + call RegPack(RF, allocated(InData%InpMembers)) if (allocated(InData%InpMembers)) then - call RegPackBounds(Buf, 1, lbound(InData%InpMembers, kind=B8Ki), ubound(InData%InpMembers, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%InpMembers, kind=B8Ki), ubound(InData%InpMembers, kind=B8Ki)) LB(1:1) = lbound(InData%InpMembers, kind=B8Ki) UB(1:1) = ubound(InData%InpMembers, kind=B8Ki) do i1 = LB(1), UB(1) - call Morison_PackMemberInputType(Buf, InData%InpMembers(i1)) + call Morison_PackMemberInputType(RF, InData%InpMembers(i1)) end do end if - call RegPack(Buf, InData%NFillGroups) - call RegPack(Buf, allocated(InData%FilledGroups)) + call RegPack(RF, InData%NFillGroups) + call RegPack(RF, allocated(InData%FilledGroups)) if (allocated(InData%FilledGroups)) then - call RegPackBounds(Buf, 1, lbound(InData%FilledGroups, kind=B8Ki), ubound(InData%FilledGroups, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%FilledGroups, kind=B8Ki), ubound(InData%FilledGroups, kind=B8Ki)) LB(1:1) = lbound(InData%FilledGroups, kind=B8Ki) UB(1:1) = ubound(InData%FilledGroups, kind=B8Ki) do i1 = LB(1), UB(1) - call Morison_PackFilledGroupType(Buf, InData%FilledGroups(i1)) + call Morison_PackFilledGroupType(RF, InData%FilledGroups(i1)) end do end if - call RegPack(Buf, InData%NMGDepths) - call RegPack(Buf, allocated(InData%MGDepths)) + call RegPack(RF, InData%NMGDepths) + call RegPack(RF, allocated(InData%MGDepths)) if (allocated(InData%MGDepths)) then - call RegPackBounds(Buf, 1, lbound(InData%MGDepths, kind=B8Ki), ubound(InData%MGDepths, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%MGDepths, kind=B8Ki), ubound(InData%MGDepths, kind=B8Ki)) LB(1:1) = lbound(InData%MGDepths, kind=B8Ki) UB(1:1) = ubound(InData%MGDepths, kind=B8Ki) do i1 = LB(1), UB(1) - call Morison_PackMGDepthsType(Buf, InData%MGDepths(i1)) + call Morison_PackMGDepthsType(RF, InData%MGDepths(i1)) end do end if - call RegPack(Buf, InData%MGTop) - call RegPack(Buf, InData%MGBottom) - call RegPack(Buf, InData%NMOutputs) - call RegPack(Buf, allocated(InData%MOutLst)) + call RegPack(RF, InData%MGTop) + call RegPack(RF, InData%MGBottom) + call RegPack(RF, InData%NMOutputs) + call RegPack(RF, allocated(InData%MOutLst)) if (allocated(InData%MOutLst)) then - call RegPackBounds(Buf, 1, lbound(InData%MOutLst, kind=B8Ki), ubound(InData%MOutLst, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%MOutLst, kind=B8Ki), ubound(InData%MOutLst, kind=B8Ki)) LB(1:1) = lbound(InData%MOutLst, kind=B8Ki) UB(1:1) = ubound(InData%MOutLst, kind=B8Ki) do i1 = LB(1), UB(1) - call Morison_PackMOutput(Buf, InData%MOutLst(i1)) + call Morison_PackMOutput(RF, InData%MOutLst(i1)) end do end if - call RegPack(Buf, InData%NJOutputs) - call RegPack(Buf, allocated(InData%JOutLst)) + call RegPack(RF, InData%NJOutputs) + call RegPack(RF, allocated(InData%JOutLst)) if (allocated(InData%JOutLst)) then - call RegPackBounds(Buf, 1, lbound(InData%JOutLst, kind=B8Ki), ubound(InData%JOutLst, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%JOutLst, kind=B8Ki), ubound(InData%JOutLst, kind=B8Ki)) LB(1:1) = lbound(InData%JOutLst, kind=B8Ki) UB(1:1) = ubound(InData%JOutLst, kind=B8Ki) do i1 = LB(1), UB(1) - call Morison_PackJOutput(Buf, InData%JOutLst(i1)) + call Morison_PackJOutput(RF, InData%JOutLst(i1)) end do end if - call RegPack(Buf, allocated(InData%OutList)) - if (allocated(InData%OutList)) then - call RegPackBounds(Buf, 1, lbound(InData%OutList, kind=B8Ki), ubound(InData%OutList, kind=B8Ki)) - call RegPack(Buf, InData%OutList) - end if - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, InData%UnSum) - call RegPack(Buf, associated(InData%WaveField)) + call RegPackAlloc(RF, InData%OutList) + call RegPack(RF, InData%NumOuts) + call RegPack(RF, InData%UnSum) + call RegPack(RF, associated(InData%WaveField)) if (associated(InData%WaveField)) then - call RegPackPointer(Buf, c_loc(InData%WaveField), PtrInIndex) + call RegPackPointer(RF, c_loc(InData%WaveField), PtrInIndex) if (.not. PtrInIndex) then - call SeaSt_WaveField_PackSeaSt_WaveFieldType(Buf, InData%WaveField) + call SeaSt_WaveField_PackSeaSt_WaveFieldType(RF, InData%WaveField) end if end if - call RegPack(Buf, InData%VisMeshes) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%VisMeshes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackInitInput' integer(B8Ki) :: i1 @@ -3995,274 +2849,203 @@ subroutine Morison_UnPackInitInput(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveDisp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AMMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NJoints) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NNodes) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveDisp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AMMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NJoints); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NNodes); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%InpJoints)) deallocate(OutData%InpJoints) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%InpJoints(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InpJoints.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InpJoints.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call Morison_UnpackJointType(Buf, OutData%InpJoints(i1)) ! InpJoints + call Morison_UnpackJointType(RF, OutData%InpJoints(i1)) ! InpJoints end do end if if (allocated(OutData%Nodes)) deallocate(OutData%Nodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Nodes(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Nodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Nodes.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call Morison_UnpackNodeType(Buf, OutData%Nodes(i1)) ! Nodes + call Morison_UnpackNodeType(RF, OutData%Nodes(i1)) ! Nodes end do end if - call RegUnpack(Buf, OutData%NAxCoefs) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NAxCoefs); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%AxialCoefs)) deallocate(OutData%AxialCoefs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%AxialCoefs(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AxialCoefs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AxialCoefs.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call Morison_UnpackAxialCoefType(Buf, OutData%AxialCoefs(i1)) ! AxialCoefs + call Morison_UnpackAxialCoefType(RF, OutData%AxialCoefs(i1)) ! AxialCoefs end do end if - call RegUnpack(Buf, OutData%NPropSets) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NPropSets); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%MPropSets)) deallocate(OutData%MPropSets) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%MPropSets(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MPropSets.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MPropSets.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call Morison_UnpackMemberPropType(Buf, OutData%MPropSets(i1)) ! MPropSets + call Morison_UnpackMemberPropType(RF, OutData%MPropSets(i1)) ! MPropSets end do end if - call RegUnpack(Buf, OutData%SimplCd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SimplCdMG) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SimplCa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SimplCaMG) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SimplCp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SimplCpMG) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SimplAxCd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SimplAxCdMG) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SimplAxCa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SimplAxCaMG) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SimplAxCp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SimplAxCpMG) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SimplCb) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SimplCbMg) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SimplMCF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NCoefDpth) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%SimplCd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SimplCdMG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SimplCa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SimplCaMG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SimplCp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SimplCpMG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SimplAxCd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SimplAxCdMG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SimplAxCa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SimplAxCaMG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SimplAxCp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SimplAxCpMG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SimplCb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SimplCbMg); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SimplMCF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NCoefDpth); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%CoefDpths)) deallocate(OutData%CoefDpths) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%CoefDpths(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CoefDpths.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CoefDpths.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call Morison_UnpackCoefDpths(Buf, OutData%CoefDpths(i1)) ! CoefDpths + call Morison_UnpackCoefDpths(RF, OutData%CoefDpths(i1)) ! CoefDpths end do end if - call RegUnpack(Buf, OutData%NCoefMembers) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NCoefMembers); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%CoefMembers)) deallocate(OutData%CoefMembers) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%CoefMembers(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CoefMembers.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CoefMembers.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call Morison_UnpackCoefMembers(Buf, OutData%CoefMembers(i1)) ! CoefMembers + call Morison_UnpackCoefMembers(RF, OutData%CoefMembers(i1)) ! CoefMembers end do end if - call RegUnpack(Buf, OutData%NMembers) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NMembers); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%InpMembers)) deallocate(OutData%InpMembers) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%InpMembers(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InpMembers.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InpMembers.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call Morison_UnpackMemberInputType(Buf, OutData%InpMembers(i1)) ! InpMembers + call Morison_UnpackMemberInputType(RF, OutData%InpMembers(i1)) ! InpMembers end do end if - call RegUnpack(Buf, OutData%NFillGroups) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NFillGroups); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%FilledGroups)) deallocate(OutData%FilledGroups) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%FilledGroups(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FilledGroups.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FilledGroups.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call Morison_UnpackFilledGroupType(Buf, OutData%FilledGroups(i1)) ! FilledGroups + call Morison_UnpackFilledGroupType(RF, OutData%FilledGroups(i1)) ! FilledGroups end do end if - call RegUnpack(Buf, OutData%NMGDepths) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NMGDepths); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%MGDepths)) deallocate(OutData%MGDepths) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%MGDepths(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MGDepths.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MGDepths.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call Morison_UnpackMGDepthsType(Buf, OutData%MGDepths(i1)) ! MGDepths + call Morison_UnpackMGDepthsType(RF, OutData%MGDepths(i1)) ! MGDepths end do end if - call RegUnpack(Buf, OutData%MGTop) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MGBottom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NMOutputs) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%MGTop); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MGBottom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NMOutputs); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%MOutLst)) deallocate(OutData%MOutLst) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%MOutLst(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MOutLst.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MOutLst.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call Morison_UnpackMOutput(Buf, OutData%MOutLst(i1)) ! MOutLst + call Morison_UnpackMOutput(RF, OutData%MOutLst(i1)) ! MOutLst end do end if - call RegUnpack(Buf, OutData%NJOutputs) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NJOutputs); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%JOutLst)) deallocate(OutData%JOutLst) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%JOutLst(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%JOutLst.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%JOutLst.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call Morison_UnpackJOutput(Buf, OutData%JOutLst(i1)) ! JOutLst + call Morison_UnpackJOutput(RF, OutData%JOutLst(i1)) ! JOutLst end do end if - if (allocated(OutData%OutList)) deallocate(OutData%OutList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutList) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UnSum) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UnSum); if (RegCheckErr(RF, RoutineName)) return if (associated(OutData%WaveField)) deallocate(OutData%WaveField) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPointer(RF, Ptr, PtrIdx); if (RegCheckErr(RF, RoutineName)) return if (c_associated(Ptr)) then call c_f_pointer(Ptr, OutData%WaveField) else allocate(OutData%WaveField,stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - Buf%Pointers(PtrIdx) = c_loc(OutData%WaveField) - call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(Buf, OutData%WaveField) ! WaveField + RF%Pointers(PtrIdx) = c_loc(OutData%WaveField) + call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(RF, OutData%WaveField) ! WaveField end if else OutData%WaveField => null() end if - call RegUnpack(Buf, OutData%VisMeshes) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%VisMeshes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -4332,79 +3115,28 @@ subroutine Morison_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine Morison_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%MorisonVisRad)) - if (allocated(InData%MorisonVisRad)) then - call RegPackBounds(Buf, 1, lbound(InData%MorisonVisRad, kind=B8Ki), ubound(InData%MorisonVisRad, kind=B8Ki)) - call RegPack(Buf, InData%MorisonVisRad) - end if - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%MorisonVisRad) + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%MorisonVisRad)) deallocate(OutData%MorisonVisRad) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MorisonVisRad(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MorisonVisRad.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MorisonVisRad) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%MorisonVisRad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -4428,22 +3160,21 @@ subroutine Morison_DestroyContState(ContStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Morison_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyContState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyContState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackContState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyContState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyContState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -4483,41 +3214,24 @@ subroutine Morison_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) end if end subroutine -subroutine Morison_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%V_rel_n_FiltStat)) - if (allocated(InData%V_rel_n_FiltStat)) then - call RegPackBounds(Buf, 1, lbound(InData%V_rel_n_FiltStat, kind=B8Ki), ubound(InData%V_rel_n_FiltStat, kind=B8Ki)) - call RegPack(Buf, InData%V_rel_n_FiltStat) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%V_rel_n_FiltStat) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackDiscState' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%V_rel_n_FiltStat)) deallocate(OutData%V_rel_n_FiltStat) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%V_rel_n_FiltStat(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%V_rel_n_FiltStat.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%V_rel_n_FiltStat) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%V_rel_n_FiltStat); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -4541,22 +3255,21 @@ subroutine Morison_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Morison_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstrState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstrState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -4580,22 +3293,21 @@ subroutine Morison_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Morison_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyOtherState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyOtherState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackOtherState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyOtherState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyOtherState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -4946,414 +3658,89 @@ subroutine Morison_DestroyMisc(MiscData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine Morison_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackMisc' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%DispNodePosHdn)) - if (allocated(InData%DispNodePosHdn)) then - call RegPackBounds(Buf, 2, lbound(InData%DispNodePosHdn, kind=B8Ki), ubound(InData%DispNodePosHdn, kind=B8Ki)) - call RegPack(Buf, InData%DispNodePosHdn) - end if - call RegPack(Buf, allocated(InData%DispNodePosHst)) - if (allocated(InData%DispNodePosHst)) then - call RegPackBounds(Buf, 2, lbound(InData%DispNodePosHst, kind=B8Ki), ubound(InData%DispNodePosHst, kind=B8Ki)) - call RegPack(Buf, InData%DispNodePosHst) - end if - call RegPack(Buf, allocated(InData%FV)) - if (allocated(InData%FV)) then - call RegPackBounds(Buf, 2, lbound(InData%FV, kind=B8Ki), ubound(InData%FV, kind=B8Ki)) - call RegPack(Buf, InData%FV) - end if - call RegPack(Buf, allocated(InData%FA)) - if (allocated(InData%FA)) then - call RegPackBounds(Buf, 2, lbound(InData%FA, kind=B8Ki), ubound(InData%FA, kind=B8Ki)) - call RegPack(Buf, InData%FA) - end if - call RegPack(Buf, allocated(InData%FAMCF)) - if (allocated(InData%FAMCF)) then - call RegPackBounds(Buf, 2, lbound(InData%FAMCF, kind=B8Ki), ubound(InData%FAMCF, kind=B8Ki)) - call RegPack(Buf, InData%FAMCF) - end if - call RegPack(Buf, allocated(InData%FDynP)) - if (allocated(InData%FDynP)) then - call RegPackBounds(Buf, 1, lbound(InData%FDynP, kind=B8Ki), ubound(InData%FDynP, kind=B8Ki)) - call RegPack(Buf, InData%FDynP) - end if - call RegPack(Buf, allocated(InData%WaveElev)) - if (allocated(InData%WaveElev)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveElev, kind=B8Ki), ubound(InData%WaveElev, kind=B8Ki)) - call RegPack(Buf, InData%WaveElev) - end if - call RegPack(Buf, allocated(InData%WaveElev1)) - if (allocated(InData%WaveElev1)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveElev1, kind=B8Ki), ubound(InData%WaveElev1, kind=B8Ki)) - call RegPack(Buf, InData%WaveElev1) - end if - call RegPack(Buf, allocated(InData%WaveElev2)) - if (allocated(InData%WaveElev2)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveElev2, kind=B8Ki), ubound(InData%WaveElev2, kind=B8Ki)) - call RegPack(Buf, InData%WaveElev2) - end if - call RegPack(Buf, allocated(InData%vrel)) - if (allocated(InData%vrel)) then - call RegPackBounds(Buf, 2, lbound(InData%vrel, kind=B8Ki), ubound(InData%vrel, kind=B8Ki)) - call RegPack(Buf, InData%vrel) - end if - call RegPack(Buf, allocated(InData%nodeInWater)) - if (allocated(InData%nodeInWater)) then - call RegPackBounds(Buf, 1, lbound(InData%nodeInWater, kind=B8Ki), ubound(InData%nodeInWater, kind=B8Ki)) - call RegPack(Buf, InData%nodeInWater) - end if - call RegPack(Buf, allocated(InData%memberLoads)) + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%DispNodePosHdn) + call RegPackAlloc(RF, InData%DispNodePosHst) + call RegPackAlloc(RF, InData%FV) + call RegPackAlloc(RF, InData%FA) + call RegPackAlloc(RF, InData%FAMCF) + call RegPackAlloc(RF, InData%FDynP) + call RegPackAlloc(RF, InData%WaveElev) + call RegPackAlloc(RF, InData%WaveElev1) + call RegPackAlloc(RF, InData%WaveElev2) + call RegPackAlloc(RF, InData%vrel) + call RegPackAlloc(RF, InData%nodeInWater) + call RegPack(RF, allocated(InData%memberLoads)) if (allocated(InData%memberLoads)) then - call RegPackBounds(Buf, 1, lbound(InData%memberLoads, kind=B8Ki), ubound(InData%memberLoads, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%memberLoads, kind=B8Ki), ubound(InData%memberLoads, kind=B8Ki)) LB(1:1) = lbound(InData%memberLoads, kind=B8Ki) UB(1:1) = ubound(InData%memberLoads, kind=B8Ki) do i1 = LB(1), UB(1) - call Morison_PackMemberLoads(Buf, InData%memberLoads(i1)) + call Morison_PackMemberLoads(RF, InData%memberLoads(i1)) end do end if - call RegPack(Buf, allocated(InData%F_B_End)) - if (allocated(InData%F_B_End)) then - call RegPackBounds(Buf, 2, lbound(InData%F_B_End, kind=B8Ki), ubound(InData%F_B_End, kind=B8Ki)) - call RegPack(Buf, InData%F_B_End) - end if - call RegPack(Buf, allocated(InData%F_D_End)) - if (allocated(InData%F_D_End)) then - call RegPackBounds(Buf, 2, lbound(InData%F_D_End, kind=B8Ki), ubound(InData%F_D_End, kind=B8Ki)) - call RegPack(Buf, InData%F_D_End) - end if - call RegPack(Buf, allocated(InData%F_I_End)) - if (allocated(InData%F_I_End)) then - call RegPackBounds(Buf, 2, lbound(InData%F_I_End, kind=B8Ki), ubound(InData%F_I_End, kind=B8Ki)) - call RegPack(Buf, InData%F_I_End) - end if - call RegPack(Buf, allocated(InData%F_IMG_End)) - if (allocated(InData%F_IMG_End)) then - call RegPackBounds(Buf, 2, lbound(InData%F_IMG_End, kind=B8Ki), ubound(InData%F_IMG_End, kind=B8Ki)) - call RegPack(Buf, InData%F_IMG_End) - end if - call RegPack(Buf, allocated(InData%F_A_End)) - if (allocated(InData%F_A_End)) then - call RegPackBounds(Buf, 2, lbound(InData%F_A_End, kind=B8Ki), ubound(InData%F_A_End, kind=B8Ki)) - call RegPack(Buf, InData%F_A_End) - end if - call RegPack(Buf, allocated(InData%F_BF_End)) - if (allocated(InData%F_BF_End)) then - call RegPackBounds(Buf, 2, lbound(InData%F_BF_End, kind=B8Ki), ubound(InData%F_BF_End, kind=B8Ki)) - call RegPack(Buf, InData%F_BF_End) - end if - call RegPack(Buf, allocated(InData%V_rel_n)) - if (allocated(InData%V_rel_n)) then - call RegPackBounds(Buf, 1, lbound(InData%V_rel_n, kind=B8Ki), ubound(InData%V_rel_n, kind=B8Ki)) - call RegPack(Buf, InData%V_rel_n) - end if - call RegPack(Buf, allocated(InData%V_rel_n_HiPass)) - if (allocated(InData%V_rel_n_HiPass)) then - call RegPackBounds(Buf, 1, lbound(InData%V_rel_n_HiPass, kind=B8Ki), ubound(InData%V_rel_n_HiPass, kind=B8Ki)) - call RegPack(Buf, InData%V_rel_n_HiPass) - end if - call NWTC_Library_PackMeshMapType(Buf, InData%VisMeshMap) - call SeaSt_Interp_PackMisc(Buf, InData%SeaSt_Interp_m) - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%F_B_End) + call RegPackAlloc(RF, InData%F_D_End) + call RegPackAlloc(RF, InData%F_I_End) + call RegPackAlloc(RF, InData%F_IMG_End) + call RegPackAlloc(RF, InData%F_A_End) + call RegPackAlloc(RF, InData%F_BF_End) + call RegPackAlloc(RF, InData%V_rel_n) + call RegPackAlloc(RF, InData%V_rel_n_HiPass) + call NWTC_Library_PackMeshMapType(RF, InData%VisMeshMap) + call SeaSt_Interp_PackMisc(RF, InData%SeaSt_Interp_m) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackMisc' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%DispNodePosHdn)) deallocate(OutData%DispNodePosHdn) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DispNodePosHdn(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DispNodePosHdn.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DispNodePosHdn) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DispNodePosHst)) deallocate(OutData%DispNodePosHst) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DispNodePosHst(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DispNodePosHst.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DispNodePosHst) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FV)) deallocate(OutData%FV) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FV(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FV.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FV) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FA)) deallocate(OutData%FA) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FA(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FA.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FA) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FAMCF)) deallocate(OutData%FAMCF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FAMCF(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FAMCF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FAMCF) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FDynP)) deallocate(OutData%FDynP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FDynP(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FDynP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FDynP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveElev)) deallocate(OutData%WaveElev) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveElev(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveElev.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveElev) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveElev1)) deallocate(OutData%WaveElev1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveElev1(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveElev1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveElev1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveElev2)) deallocate(OutData%WaveElev2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveElev2(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveElev2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveElev2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%vrel)) deallocate(OutData%vrel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%vrel(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%vrel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%vrel) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%nodeInWater)) deallocate(OutData%nodeInWater) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%nodeInWater(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%nodeInWater.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%nodeInWater) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%DispNodePosHdn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DispNodePosHst); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FAMCF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FDynP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveElev); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveElev1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveElev2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%vrel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%nodeInWater); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%memberLoads)) deallocate(OutData%memberLoads) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%memberLoads(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%memberLoads.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%memberLoads.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call Morison_UnpackMemberLoads(Buf, OutData%memberLoads(i1)) ! memberLoads + call Morison_UnpackMemberLoads(RF, OutData%memberLoads(i1)) ! memberLoads end do end if - if (allocated(OutData%F_B_End)) deallocate(OutData%F_B_End) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_B_End(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_B_End.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_B_End) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_D_End)) deallocate(OutData%F_D_End) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_D_End(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_D_End.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_D_End) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_I_End)) deallocate(OutData%F_I_End) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_I_End(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_I_End.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_I_End) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_IMG_End)) deallocate(OutData%F_IMG_End) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_IMG_End(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_IMG_End.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_IMG_End) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_A_End)) deallocate(OutData%F_A_End) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_A_End(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_A_End.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_A_End) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_BF_End)) deallocate(OutData%F_BF_End) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_BF_End(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_BF_End.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_BF_End) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%V_rel_n)) deallocate(OutData%V_rel_n) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%V_rel_n(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%V_rel_n.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%V_rel_n) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%V_rel_n_HiPass)) deallocate(OutData%V_rel_n_HiPass) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%V_rel_n_HiPass(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%V_rel_n_HiPass.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%V_rel_n_HiPass) - if (RegCheckErr(Buf, RoutineName)) return - end if - call NWTC_Library_UnpackMeshMapType(Buf, OutData%VisMeshMap) ! VisMeshMap - call SeaSt_Interp_UnpackMisc(Buf, OutData%SeaSt_Interp_m) ! SeaSt_Interp_m + call RegUnpackAlloc(RF, OutData%F_B_End); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_D_End); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_I_End); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_IMG_End); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_A_End); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_BF_End); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%V_rel_n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%V_rel_n_HiPass); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackMeshMapType(RF, OutData%VisMeshMap) ! VisMeshMap + call SeaSt_Interp_UnpackMisc(RF, OutData%SeaSt_Interp_m) ! SeaSt_Interp_m end subroutine subroutine Morison_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -5647,123 +4034,83 @@ subroutine Morison_DestroyParam(ParamData, ErrStat, ErrMsg) nullify(ParamData%WaveField) end subroutine -subroutine Morison_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackParam' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT) - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, InData%WaveDisp) - call RegPack(Buf, InData%AMMod) - call RegPack(Buf, InData%NMembers) - call RegPack(Buf, allocated(InData%Members)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT) + call RegPack(RF, InData%Gravity) + call RegPack(RF, InData%WaveDisp) + call RegPack(RF, InData%AMMod) + call RegPack(RF, InData%NMembers) + call RegPack(RF, allocated(InData%Members)) if (allocated(InData%Members)) then - call RegPackBounds(Buf, 1, lbound(InData%Members, kind=B8Ki), ubound(InData%Members, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Members, kind=B8Ki), ubound(InData%Members, kind=B8Ki)) LB(1:1) = lbound(InData%Members, kind=B8Ki) UB(1:1) = ubound(InData%Members, kind=B8Ki) do i1 = LB(1), UB(1) - call Morison_PackMemberType(Buf, InData%Members(i1)) + call Morison_PackMemberType(RF, InData%Members(i1)) end do end if - call RegPack(Buf, InData%NNodes) - call RegPack(Buf, InData%NJoints) - call RegPack(Buf, allocated(InData%I_MG_End)) - if (allocated(InData%I_MG_End)) then - call RegPackBounds(Buf, 3, lbound(InData%I_MG_End, kind=B8Ki), ubound(InData%I_MG_End, kind=B8Ki)) - call RegPack(Buf, InData%I_MG_End) - end if - call RegPack(Buf, allocated(InData%An_End)) - if (allocated(InData%An_End)) then - call RegPackBounds(Buf, 2, lbound(InData%An_End, kind=B8Ki), ubound(InData%An_End, kind=B8Ki)) - call RegPack(Buf, InData%An_End) - end if - call RegPack(Buf, allocated(InData%DragConst_End)) - if (allocated(InData%DragConst_End)) then - call RegPackBounds(Buf, 1, lbound(InData%DragConst_End, kind=B8Ki), ubound(InData%DragConst_End, kind=B8Ki)) - call RegPack(Buf, InData%DragConst_End) - end if - call RegPack(Buf, allocated(InData%VRelNFiltConst)) - if (allocated(InData%VRelNFiltConst)) then - call RegPackBounds(Buf, 1, lbound(InData%VRelNFiltConst, kind=B8Ki), ubound(InData%VRelNFiltConst, kind=B8Ki)) - call RegPack(Buf, InData%VRelNFiltConst) - end if - call RegPack(Buf, allocated(InData%DragMod_End)) - if (allocated(InData%DragMod_End)) then - call RegPackBounds(Buf, 1, lbound(InData%DragMod_End, kind=B8Ki), ubound(InData%DragMod_End, kind=B8Ki)) - call RegPack(Buf, InData%DragMod_End) - end if - call RegPack(Buf, allocated(InData%DragLoFSc_End)) - if (allocated(InData%DragLoFSc_End)) then - call RegPackBounds(Buf, 1, lbound(InData%DragLoFSc_End, kind=B8Ki), ubound(InData%DragLoFSc_End, kind=B8Ki)) - call RegPack(Buf, InData%DragLoFSc_End) - end if - call RegPack(Buf, allocated(InData%F_WMG_End)) - if (allocated(InData%F_WMG_End)) then - call RegPackBounds(Buf, 2, lbound(InData%F_WMG_End, kind=B8Ki), ubound(InData%F_WMG_End, kind=B8Ki)) - call RegPack(Buf, InData%F_WMG_End) - end if - call RegPack(Buf, allocated(InData%DP_Const_End)) - if (allocated(InData%DP_Const_End)) then - call RegPackBounds(Buf, 2, lbound(InData%DP_Const_End, kind=B8Ki), ubound(InData%DP_Const_End, kind=B8Ki)) - call RegPack(Buf, InData%DP_Const_End) - end if - call RegPack(Buf, allocated(InData%Mass_MG_End)) - if (allocated(InData%Mass_MG_End)) then - call RegPackBounds(Buf, 1, lbound(InData%Mass_MG_End, kind=B8Ki), ubound(InData%Mass_MG_End, kind=B8Ki)) - call RegPack(Buf, InData%Mass_MG_End) - end if - call RegPack(Buf, allocated(InData%AM_End)) - if (allocated(InData%AM_End)) then - call RegPackBounds(Buf, 3, lbound(InData%AM_End, kind=B8Ki), ubound(InData%AM_End, kind=B8Ki)) - call RegPack(Buf, InData%AM_End) - end if - call RegPack(Buf, InData%NMOutputs) - call RegPack(Buf, allocated(InData%MOutLst)) + call RegPack(RF, InData%NNodes) + call RegPack(RF, InData%NJoints) + call RegPackAlloc(RF, InData%I_MG_End) + call RegPackAlloc(RF, InData%An_End) + call RegPackAlloc(RF, InData%DragConst_End) + call RegPackAlloc(RF, InData%VRelNFiltConst) + call RegPackAlloc(RF, InData%DragMod_End) + call RegPackAlloc(RF, InData%DragLoFSc_End) + call RegPackAlloc(RF, InData%F_WMG_End) + call RegPackAlloc(RF, InData%DP_Const_End) + call RegPackAlloc(RF, InData%Mass_MG_End) + call RegPackAlloc(RF, InData%AM_End) + call RegPack(RF, InData%NMOutputs) + call RegPack(RF, allocated(InData%MOutLst)) if (allocated(InData%MOutLst)) then - call RegPackBounds(Buf, 1, lbound(InData%MOutLst, kind=B8Ki), ubound(InData%MOutLst, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%MOutLst, kind=B8Ki), ubound(InData%MOutLst, kind=B8Ki)) LB(1:1) = lbound(InData%MOutLst, kind=B8Ki) UB(1:1) = ubound(InData%MOutLst, kind=B8Ki) do i1 = LB(1), UB(1) - call Morison_PackMOutput(Buf, InData%MOutLst(i1)) + call Morison_PackMOutput(RF, InData%MOutLst(i1)) end do end if - call RegPack(Buf, InData%NJOutputs) - call RegPack(Buf, allocated(InData%JOutLst)) + call RegPack(RF, InData%NJOutputs) + call RegPack(RF, allocated(InData%JOutLst)) if (allocated(InData%JOutLst)) then - call RegPackBounds(Buf, 1, lbound(InData%JOutLst, kind=B8Ki), ubound(InData%JOutLst, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%JOutLst, kind=B8Ki), ubound(InData%JOutLst, kind=B8Ki)) LB(1:1) = lbound(InData%JOutLst, kind=B8Ki) UB(1:1) = ubound(InData%JOutLst, kind=B8Ki) do i1 = LB(1), UB(1) - call Morison_PackJOutput(Buf, InData%JOutLst(i1)) + call Morison_PackJOutput(RF, InData%JOutLst(i1)) end do end if - call RegPack(Buf, allocated(InData%OutParam)) + call RegPack(RF, allocated(InData%OutParam)) if (allocated(InData%OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) LB(1:1) = lbound(InData%OutParam, kind=B8Ki) UB(1:1) = ubound(InData%OutParam, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackOutParmType(Buf, InData%OutParam(i1)) + call NWTC_Library_PackOutParmType(RF, InData%OutParam(i1)) end do end if - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, associated(InData%WaveField)) + call RegPack(RF, InData%NumOuts) + call RegPack(RF, associated(InData%WaveField)) if (associated(InData%WaveField)) then - call RegPackPointer(Buf, c_loc(InData%WaveField), PtrInIndex) + call RegPackPointer(RF, c_loc(InData%WaveField), PtrInIndex) if (.not. PtrInIndex) then - call SeaSt_WaveField_PackSeaSt_WaveFieldType(Buf, InData%WaveField) + call SeaSt_WaveField_PackSeaSt_WaveFieldType(RF, InData%WaveField) end if end if - call RegPack(Buf, InData%VisMeshes) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%VisMeshes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackParam' integer(B8Ki) :: i1, i2, i3 @@ -5772,249 +4119,98 @@ subroutine Morison_UnPackParam(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveDisp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AMMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NMembers) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveDisp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AMMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NMembers); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%Members)) deallocate(OutData%Members) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Members(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Members.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Members.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call Morison_UnpackMemberType(Buf, OutData%Members(i1)) ! Members + call Morison_UnpackMemberType(RF, OutData%Members(i1)) ! Members end do end if - call RegUnpack(Buf, OutData%NNodes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NJoints) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%I_MG_End)) deallocate(OutData%I_MG_End) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%I_MG_End(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%I_MG_End.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%I_MG_End) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%An_End)) deallocate(OutData%An_End) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%An_End(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%An_End.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%An_End) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DragConst_End)) deallocate(OutData%DragConst_End) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DragConst_End(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DragConst_End.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DragConst_End) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%VRelNFiltConst)) deallocate(OutData%VRelNFiltConst) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%VRelNFiltConst(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VRelNFiltConst.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%VRelNFiltConst) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DragMod_End)) deallocate(OutData%DragMod_End) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DragMod_End(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DragMod_End.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DragMod_End) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DragLoFSc_End)) deallocate(OutData%DragLoFSc_End) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DragLoFSc_End(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DragLoFSc_End.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DragLoFSc_End) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_WMG_End)) deallocate(OutData%F_WMG_End) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_WMG_End(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_WMG_End.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_WMG_End) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DP_Const_End)) deallocate(OutData%DP_Const_End) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DP_Const_End(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DP_Const_End.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DP_Const_End) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Mass_MG_End)) deallocate(OutData%Mass_MG_End) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Mass_MG_End(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Mass_MG_End.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Mass_MG_End) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AM_End)) deallocate(OutData%AM_End) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AM_End(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AM_End.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AM_End) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NMOutputs) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NJoints); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%I_MG_End); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%An_End); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DragConst_End); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%VRelNFiltConst); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DragMod_End); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DragLoFSc_End); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_WMG_End); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DP_Const_End); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Mass_MG_End); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AM_End); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NMOutputs); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%MOutLst)) deallocate(OutData%MOutLst) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%MOutLst(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MOutLst.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MOutLst.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call Morison_UnpackMOutput(Buf, OutData%MOutLst(i1)) ! MOutLst + call Morison_UnpackMOutput(RF, OutData%MOutLst(i1)) ! MOutLst end do end if - call RegUnpack(Buf, OutData%NJOutputs) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NJOutputs); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%JOutLst)) deallocate(OutData%JOutLst) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%JOutLst(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%JOutLst.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%JOutLst.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call Morison_UnpackJOutput(Buf, OutData%JOutLst(i1)) ! JOutLst + call Morison_UnpackJOutput(RF, OutData%JOutLst(i1)) ! JOutLst end do end if if (allocated(OutData%OutParam)) deallocate(OutData%OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackOutParmType(Buf, OutData%OutParam(i1)) ! OutParam + call NWTC_Library_UnpackOutParmType(RF, OutData%OutParam(i1)) ! OutParam end do end if - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return if (associated(OutData%WaveField)) deallocate(OutData%WaveField) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPointer(RF, Ptr, PtrIdx); if (RegCheckErr(RF, RoutineName)) return if (c_associated(Ptr)) then call c_f_pointer(Ptr, OutData%WaveField) else allocate(OutData%WaveField,stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - Buf%Pointers(PtrIdx) = c_loc(OutData%WaveField) - call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(Buf, OutData%WaveField) ! WaveField + RF%Pointers(PtrIdx) = c_loc(OutData%WaveField) + call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(RF, OutData%WaveField) ! WaveField end if else OutData%WaveField => null() end if - call RegUnpack(Buf, OutData%VisMeshes) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%VisMeshes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -6046,21 +4242,21 @@ subroutine Morison_DestroyInput(InputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine Morison_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%Mesh) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%Mesh) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackInput' - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%Mesh) ! Mesh + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%Mesh) ! Mesh end subroutine subroutine Morison_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -6113,45 +4309,28 @@ subroutine Morison_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine Morison_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Morison_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Morison_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%Mesh) - call MeshPack(Buf, InData%VisMesh) - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%Mesh) + call MeshPack(RF, InData%VisMesh) + call RegPackAlloc(RF, InData%WriteOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Morison_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Morison_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Morison_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Morison_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%Mesh) ! Mesh - call MeshUnpack(Buf, OutData%VisMesh) ! VisMesh - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%Mesh) ! Mesh + call MeshUnpack(RF, OutData%VisMesh) ! VisMesh + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Morison_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/hydrodyn/src/SS_Excitation_Types.f90 b/modules/hydrodyn/src/SS_Excitation_Types.f90 index ba09d27160..08bfc7e05f 100644 --- a/modules/hydrodyn/src/SS_Excitation_Types.f90 +++ b/modules/hydrodyn/src/SS_Excitation_Types.f90 @@ -149,32 +149,28 @@ subroutine SS_Exc_DestroyInitInput(InitInputData, ErrStat, ErrMsg) nullify(InitInputData%WaveField) end subroutine -subroutine SS_Exc_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Exc_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Exc_PackInitInput' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%InputFile) - call RegPack(Buf, InData%NBody) - call RegPack(Buf, InData%ExctnDisp) - call RegPack(Buf, allocated(InData%PtfmRefztRot)) - if (allocated(InData%PtfmRefztRot)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmRefztRot, kind=B8Ki), ubound(InData%PtfmRefztRot, kind=B8Ki)) - call RegPack(Buf, InData%PtfmRefztRot) - end if - call RegPack(Buf, associated(InData%WaveField)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%InputFile) + call RegPack(RF, InData%NBody) + call RegPack(RF, InData%ExctnDisp) + call RegPackAlloc(RF, InData%PtfmRefztRot) + call RegPack(RF, associated(InData%WaveField)) if (associated(InData%WaveField)) then - call RegPackPointer(Buf, c_loc(InData%WaveField), PtrInIndex) + call RegPackPointer(RF, c_loc(InData%WaveField), PtrInIndex) if (.not. PtrInIndex) then - call SeaSt_WaveField_PackSeaSt_WaveFieldType(Buf, InData%WaveField) + call SeaSt_WaveField_PackSeaSt_WaveFieldType(RF, InData%WaveField) end if end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Exc_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Exc_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Exc_UnPackInitInput' integer(B8Ki) :: LB(1), UB(1) @@ -182,43 +178,25 @@ subroutine SS_Exc_UnPackInitInput(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%InputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NBody) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ExctnDisp) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PtfmRefztRot)) deallocate(OutData%PtfmRefztRot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmRefztRot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmRefztRot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmRefztRot) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%InputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NBody); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ExctnDisp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PtfmRefztRot); if (RegCheckErr(RF, RoutineName)) return if (associated(OutData%WaveField)) deallocate(OutData%WaveField) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPointer(RF, Ptr, PtrIdx); if (RegCheckErr(RF, RoutineName)) return if (c_associated(Ptr)) then call c_f_pointer(Ptr, OutData%WaveField) else allocate(OutData%WaveField,stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - Buf%Pointers(PtrIdx) = c_loc(OutData%WaveField) - call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(Buf, OutData%WaveField) ! WaveField + RF%Pointers(PtrIdx) = c_loc(OutData%WaveField) + call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(RF, OutData%WaveField) ! WaveField end if else OutData%WaveField => null() @@ -277,60 +255,26 @@ subroutine SS_Exc_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine SS_Exc_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Exc_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Exc_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Exc_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Exc_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Exc_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SS_Exc_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -370,41 +314,24 @@ subroutine SS_Exc_DestroyContState(ContStateData, ErrStat, ErrMsg) end if end subroutine -subroutine SS_Exc_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Exc_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Exc_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%x)) - if (allocated(InData%x)) then - call RegPackBounds(Buf, 1, lbound(InData%x, kind=B8Ki), ubound(InData%x, kind=B8Ki)) - call RegPack(Buf, InData%x) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%x) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Exc_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Exc_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Exc_UnPackContState' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%x)) deallocate(OutData%x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%x) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%x); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SS_Exc_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -428,22 +355,21 @@ subroutine SS_Exc_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SS_Exc_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Exc_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Exc_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyDiscState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Exc_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Exc_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Exc_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyDiscState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SS_Exc_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -467,22 +393,21 @@ subroutine SS_Exc_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SS_Exc_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Exc_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Exc_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstrState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Exc_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Exc_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Exc_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstrState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SS_Exc_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -527,35 +452,34 @@ subroutine SS_Exc_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) end do end subroutine -subroutine SS_Exc_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Exc_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Exc_PackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%n) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%n) LB(1:1) = lbound(InData%xdot, kind=B8Ki) UB(1:1) = ubound(InData%xdot, kind=B8Ki) do i1 = LB(1), UB(1) - call SS_Exc_PackContState(Buf, InData%xdot(i1)) + call SS_Exc_PackContState(RF, InData%xdot(i1)) end do - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Exc_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Exc_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Exc_UnPackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%n) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%n); if (RegCheckErr(RF, RoutineName)) return LB(1:1) = lbound(OutData%xdot, kind=B8Ki) UB(1:1) = ubound(OutData%xdot, kind=B8Ki) do i1 = LB(1), UB(1) - call SS_Exc_UnpackContState(Buf, OutData%xdot(i1)) ! xdot + call SS_Exc_UnpackContState(RF, OutData%xdot(i1)) ! xdot end do end subroutine @@ -589,24 +513,23 @@ subroutine SS_Exc_DestroyMisc(MiscData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine SS_Exc_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Exc_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Exc_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%LastIndWave) - call SeaSt_Interp_PackMisc(Buf, InData%SeaSt_Interp_m) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%LastIndWave) + call SeaSt_Interp_PackMisc(RF, InData%SeaSt_Interp_m) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Exc_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Exc_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Exc_UnPackMisc' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%LastIndWave) - if (RegCheckErr(Buf, RoutineName)) return - call SeaSt_Interp_UnpackMisc(Buf, OutData%SeaSt_Interp_m) ! SeaSt_Interp_m + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%LastIndWave); if (RegCheckErr(RF, RoutineName)) return + call SeaSt_Interp_UnpackMisc(RF, OutData%SeaSt_Interp_m) ! SeaSt_Interp_m end subroutine subroutine SS_Exc_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -701,49 +624,33 @@ subroutine SS_Exc_DestroyParam(ParamData, ErrStat, ErrMsg) nullify(ParamData%WaveField) end subroutine -subroutine SS_Exc_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Exc_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Exc_PackParam' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT) - call RegPack(Buf, InData%NBody) - call RegPack(Buf, InData%ExctnDisp) - call RegPack(Buf, allocated(InData%spDOF)) - if (allocated(InData%spDOF)) then - call RegPackBounds(Buf, 1, lbound(InData%spDOF, kind=B8Ki), ubound(InData%spDOF, kind=B8Ki)) - call RegPack(Buf, InData%spDOF) - end if - call RegPack(Buf, allocated(InData%A)) - if (allocated(InData%A)) then - call RegPackBounds(Buf, 2, lbound(InData%A, kind=B8Ki), ubound(InData%A, kind=B8Ki)) - call RegPack(Buf, InData%A) - end if - call RegPack(Buf, allocated(InData%B)) - if (allocated(InData%B)) then - call RegPackBounds(Buf, 1, lbound(InData%B, kind=B8Ki), ubound(InData%B, kind=B8Ki)) - call RegPack(Buf, InData%B) - end if - call RegPack(Buf, allocated(InData%C)) - if (allocated(InData%C)) then - call RegPackBounds(Buf, 2, lbound(InData%C, kind=B8Ki), ubound(InData%C, kind=B8Ki)) - call RegPack(Buf, InData%C) - end if - call RegPack(Buf, InData%numStates) - call RegPack(Buf, InData%Tc) - call RegPack(Buf, associated(InData%WaveField)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT) + call RegPack(RF, InData%NBody) + call RegPack(RF, InData%ExctnDisp) + call RegPackAlloc(RF, InData%spDOF) + call RegPackAlloc(RF, InData%A) + call RegPackAlloc(RF, InData%B) + call RegPackAlloc(RF, InData%C) + call RegPack(RF, InData%numStates) + call RegPack(RF, InData%Tc) + call RegPack(RF, associated(InData%WaveField)) if (associated(InData%WaveField)) then - call RegPackPointer(Buf, c_loc(InData%WaveField), PtrInIndex) + call RegPackPointer(RF, c_loc(InData%WaveField), PtrInIndex) if (.not. PtrInIndex) then - call SeaSt_WaveField_PackSeaSt_WaveFieldType(Buf, InData%WaveField) + call SeaSt_WaveField_PackSeaSt_WaveFieldType(RF, InData%WaveField) end if end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Exc_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Exc_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Exc_UnPackParam' integer(B8Ki) :: LB(2), UB(2) @@ -751,89 +658,30 @@ subroutine SS_Exc_UnPackParam(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NBody) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ExctnDisp) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%spDOF)) deallocate(OutData%spDOF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%spDOF(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%spDOF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%spDOF) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%A)) deallocate(OutData%A) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%A(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%A.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%A) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%B)) deallocate(OutData%B) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%B(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%B.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%B) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%C)) deallocate(OutData%C) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%C(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%C.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%C) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%numStates) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Tc) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NBody); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ExctnDisp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%spDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%A); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%B); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%C); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numStates); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Tc); if (RegCheckErr(RF, RoutineName)) return if (associated(OutData%WaveField)) deallocate(OutData%WaveField) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPointer(RF, Ptr, PtrIdx); if (RegCheckErr(RF, RoutineName)) return if (c_associated(Ptr)) then call c_f_pointer(Ptr, OutData%WaveField) else allocate(OutData%WaveField,stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - Buf%Pointers(PtrIdx) = c_loc(OutData%WaveField) - call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(Buf, OutData%WaveField) ! WaveField + RF%Pointers(PtrIdx) = c_loc(OutData%WaveField) + call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(RF, OutData%WaveField) ! WaveField end if else OutData%WaveField => null() @@ -877,41 +725,24 @@ subroutine SS_Exc_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine SS_Exc_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Exc_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Exc_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%PtfmPos)) - if (allocated(InData%PtfmPos)) then - call RegPackBounds(Buf, 2, lbound(InData%PtfmPos, kind=B8Ki), ubound(InData%PtfmPos, kind=B8Ki)) - call RegPack(Buf, InData%PtfmPos) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%PtfmPos) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Exc_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Exc_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Exc_UnPackInput' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%PtfmPos)) deallocate(OutData%PtfmPos) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmPos(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmPos.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmPos) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%PtfmPos); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SS_Exc_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -966,60 +797,26 @@ subroutine SS_Exc_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine SS_Exc_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Exc_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Exc_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%y)) - if (allocated(InData%y)) then - call RegPackBounds(Buf, 1, lbound(InData%y, kind=B8Ki), ubound(InData%y, kind=B8Ki)) - call RegPack(Buf, InData%y) - end if - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%y) + call RegPackAlloc(RF, InData%WriteOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Exc_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Exc_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Exc_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Exc_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%y)) deallocate(OutData%y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SS_Exc_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/hydrodyn/src/SS_Radiation_Types.f90 b/modules/hydrodyn/src/SS_Radiation_Types.f90 index 1c07721d8a..1c91b852e4 100644 --- a/modules/hydrodyn/src/SS_Radiation_Types.f90 +++ b/modules/hydrodyn/src/SS_Radiation_Types.f90 @@ -151,66 +151,30 @@ subroutine SS_Rad_DestroyInitInput(InitInputData, ErrStat, ErrMsg) end if end subroutine -subroutine SS_Rad_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Rad_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Rad_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%InputFile) - call RegPack(Buf, allocated(InData%enabledDOFs)) - if (allocated(InData%enabledDOFs)) then - call RegPackBounds(Buf, 1, lbound(InData%enabledDOFs, kind=B8Ki), ubound(InData%enabledDOFs, kind=B8Ki)) - call RegPack(Buf, InData%enabledDOFs) - end if - call RegPack(Buf, InData%NBody) - call RegPack(Buf, allocated(InData%PtfmRefztRot)) - if (allocated(InData%PtfmRefztRot)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmRefztRot, kind=B8Ki), ubound(InData%PtfmRefztRot, kind=B8Ki)) - call RegPack(Buf, InData%PtfmRefztRot) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%InputFile) + call RegPackAlloc(RF, InData%enabledDOFs) + call RegPack(RF, InData%NBody) + call RegPackAlloc(RF, InData%PtfmRefztRot) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Rad_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Rad_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Rad_UnPackInitInput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%InputFile) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%enabledDOFs)) deallocate(OutData%enabledDOFs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%enabledDOFs(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%enabledDOFs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%enabledDOFs) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NBody) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PtfmRefztRot)) deallocate(OutData%PtfmRefztRot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmRefztRot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmRefztRot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmRefztRot) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%InputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%enabledDOFs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NBody); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PtfmRefztRot); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SS_Rad_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -265,60 +229,26 @@ subroutine SS_Rad_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine SS_Rad_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Rad_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Rad_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Rad_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Rad_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Rad_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SS_Rad_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -358,41 +288,24 @@ subroutine SS_Rad_DestroyContState(ContStateData, ErrStat, ErrMsg) end if end subroutine -subroutine SS_Rad_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Rad_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Rad_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%x)) - if (allocated(InData%x)) then - call RegPackBounds(Buf, 1, lbound(InData%x, kind=B8Ki), ubound(InData%x, kind=B8Ki)) - call RegPack(Buf, InData%x) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%x) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Rad_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Rad_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Rad_UnPackContState' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%x)) deallocate(OutData%x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%x) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%x); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SS_Rad_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -416,22 +329,21 @@ subroutine SS_Rad_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SS_Rad_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Rad_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Rad_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyDiscState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Rad_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Rad_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Rad_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyDiscState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SS_Rad_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -455,22 +367,21 @@ subroutine SS_Rad_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SS_Rad_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Rad_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Rad_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstrState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Rad_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Rad_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Rad_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstrState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SS_Rad_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -515,35 +426,34 @@ subroutine SS_Rad_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) end do end subroutine -subroutine SS_Rad_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Rad_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Rad_PackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%n) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%n) LB(1:1) = lbound(InData%xdot, kind=B8Ki) UB(1:1) = ubound(InData%xdot, kind=B8Ki) do i1 = LB(1), UB(1) - call SS_Rad_PackContState(Buf, InData%xdot(i1)) + call SS_Rad_PackContState(RF, InData%xdot(i1)) end do - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Rad_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Rad_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Rad_UnPackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%n) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%n); if (RegCheckErr(RF, RoutineName)) return LB(1:1) = lbound(OutData%xdot, kind=B8Ki) UB(1:1) = ubound(OutData%xdot, kind=B8Ki) do i1 = LB(1), UB(1) - call SS_Rad_UnpackContState(Buf, OutData%xdot(i1)) ! xdot + call SS_Rad_UnpackContState(RF, OutData%xdot(i1)) ! xdot end do end subroutine @@ -568,22 +478,21 @@ subroutine SS_Rad_DestroyMisc(MiscData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SS_Rad_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Rad_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Rad_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyMiscVar) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyMiscVar) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Rad_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Rad_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Rad_UnPackMisc' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyMiscVar) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyMiscVar); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SS_Rad_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -671,107 +580,36 @@ subroutine SS_Rad_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine SS_Rad_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Rad_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Rad_PackParam' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT) - call RegPack(Buf, allocated(InData%A)) - if (allocated(InData%A)) then - call RegPackBounds(Buf, 2, lbound(InData%A, kind=B8Ki), ubound(InData%A, kind=B8Ki)) - call RegPack(Buf, InData%A) - end if - call RegPack(Buf, allocated(InData%B)) - if (allocated(InData%B)) then - call RegPackBounds(Buf, 2, lbound(InData%B, kind=B8Ki), ubound(InData%B, kind=B8Ki)) - call RegPack(Buf, InData%B) - end if - call RegPack(Buf, allocated(InData%C)) - if (allocated(InData%C)) then - call RegPackBounds(Buf, 2, lbound(InData%C, kind=B8Ki), ubound(InData%C, kind=B8Ki)) - call RegPack(Buf, InData%C) - end if - call RegPack(Buf, InData%numStates) - call RegPack(Buf, allocated(InData%spdof)) - if (allocated(InData%spdof)) then - call RegPackBounds(Buf, 1, lbound(InData%spdof, kind=B8Ki), ubound(InData%spdof, kind=B8Ki)) - call RegPack(Buf, InData%spdof) - end if - call RegPack(Buf, InData%NBody) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT) + call RegPackAlloc(RF, InData%A) + call RegPackAlloc(RF, InData%B) + call RegPackAlloc(RF, InData%C) + call RegPack(RF, InData%numStates) + call RegPackAlloc(RF, InData%spdof) + call RegPack(RF, InData%NBody) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Rad_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Rad_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Rad_UnPackParam' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%A)) deallocate(OutData%A) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%A(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%A.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%A) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%B)) deallocate(OutData%B) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%B(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%B.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%B) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%C)) deallocate(OutData%C) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%C(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%C.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%C) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%numStates) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%spdof)) deallocate(OutData%spdof) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%spdof(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%spdof.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%spdof) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NBody) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%A); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%B); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%C); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numStates); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%spdof); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NBody); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SS_Rad_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -811,41 +649,24 @@ subroutine SS_Rad_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine SS_Rad_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Rad_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Rad_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%dq)) - if (allocated(InData%dq)) then - call RegPackBounds(Buf, 1, lbound(InData%dq, kind=B8Ki), ubound(InData%dq, kind=B8Ki)) - call RegPack(Buf, InData%dq) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%dq) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Rad_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Rad_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Rad_UnPackInput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%dq)) deallocate(OutData%dq) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dq(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dq.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dq) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%dq); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SS_Rad_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -900,60 +721,26 @@ subroutine SS_Rad_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine SS_Rad_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SS_Rad_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SS_Rad_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%y)) - if (allocated(InData%y)) then - call RegPackBounds(Buf, 1, lbound(InData%y, kind=B8Ki), ubound(InData%y, kind=B8Ki)) - call RegPack(Buf, InData%y) - end if - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%y) + call RegPackAlloc(RF, InData%WriteOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SS_Rad_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SS_Rad_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SS_Rad_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SS_Rad_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%y)) deallocate(OutData%y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SS_Rad_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/hydrodyn/src/WAMIT2_Types.f90 b/modules/hydrodyn/src/WAMIT2_Types.f90 index 3a25ad9a6b..c2b6e5baeb 100644 --- a/modules/hydrodyn/src/WAMIT2_Types.f90 +++ b/modules/hydrodyn/src/WAMIT2_Types.f90 @@ -187,58 +187,42 @@ subroutine WAMIT2_DestroyInitInput(InitInputData, ErrStat, ErrMsg) nullify(InitInputData%WaveField) end subroutine -subroutine WAMIT2_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT2_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(WAMIT2_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'WAMIT2_PackInitInput' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%HasWAMIT) - call RegPack(Buf, InData%WAMITFile) - call RegPack(Buf, InData%NBody) - call RegPack(Buf, InData%NBodyMod) - call RegPack(Buf, allocated(InData%PtfmRefxt)) - if (allocated(InData%PtfmRefxt)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmRefxt, kind=B8Ki), ubound(InData%PtfmRefxt, kind=B8Ki)) - call RegPack(Buf, InData%PtfmRefxt) - end if - call RegPack(Buf, allocated(InData%PtfmRefyt)) - if (allocated(InData%PtfmRefyt)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmRefyt, kind=B8Ki), ubound(InData%PtfmRefyt, kind=B8Ki)) - call RegPack(Buf, InData%PtfmRefyt) - end if - call RegPack(Buf, allocated(InData%PtfmRefzt)) - if (allocated(InData%PtfmRefzt)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmRefzt, kind=B8Ki), ubound(InData%PtfmRefzt, kind=B8Ki)) - call RegPack(Buf, InData%PtfmRefzt) - end if - call RegPack(Buf, allocated(InData%PtfmRefztRot)) - if (allocated(InData%PtfmRefztRot)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmRefztRot, kind=B8Ki), ubound(InData%PtfmRefztRot, kind=B8Ki)) - call RegPack(Buf, InData%PtfmRefztRot) - end if - call RegPack(Buf, InData%WAMITULEN) - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, associated(InData%WaveField)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%HasWAMIT) + call RegPack(RF, InData%WAMITFile) + call RegPack(RF, InData%NBody) + call RegPack(RF, InData%NBodyMod) + call RegPackAlloc(RF, InData%PtfmRefxt) + call RegPackAlloc(RF, InData%PtfmRefyt) + call RegPackAlloc(RF, InData%PtfmRefzt) + call RegPackAlloc(RF, InData%PtfmRefztRot) + call RegPack(RF, InData%WAMITULEN) + call RegPack(RF, InData%Gravity) + call RegPack(RF, associated(InData%WaveField)) if (associated(InData%WaveField)) then - call RegPackPointer(Buf, c_loc(InData%WaveField), PtrInIndex) + call RegPackPointer(RF, c_loc(InData%WaveField), PtrInIndex) if (.not. PtrInIndex) then - call SeaSt_WaveField_PackSeaSt_WaveFieldType(Buf, InData%WaveField) + call SeaSt_WaveField_PackSeaSt_WaveFieldType(RF, InData%WaveField) end if end if - call RegPack(Buf, InData%MnDrift) - call RegPack(Buf, InData%NewmanApp) - call RegPack(Buf, InData%DiffQTF) - call RegPack(Buf, InData%SumQTF) - call RegPack(Buf, InData%MnDriftF) - call RegPack(Buf, InData%NewmanAppF) - call RegPack(Buf, InData%DiffQTFF) - call RegPack(Buf, InData%SumQTFF) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%MnDrift) + call RegPack(RF, InData%NewmanApp) + call RegPack(RF, InData%DiffQTF) + call RegPack(RF, InData%SumQTF) + call RegPack(RF, InData%MnDriftF) + call RegPack(RF, InData%NewmanAppF) + call RegPack(RF, InData%DiffQTFF) + call RegPack(RF, InData%SumQTFF) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WAMIT2_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT2_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(WAMIT2_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WAMIT2_UnPackInitInput' integer(B8Ki) :: LB(1), UB(1) @@ -246,111 +230,43 @@ subroutine WAMIT2_UnPackInitInput(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%HasWAMIT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WAMITFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NBody) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NBodyMod) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PtfmRefxt)) deallocate(OutData%PtfmRefxt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmRefxt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmRefxt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmRefxt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PtfmRefyt)) deallocate(OutData%PtfmRefyt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmRefyt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmRefyt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmRefyt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PtfmRefzt)) deallocate(OutData%PtfmRefzt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmRefzt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmRefzt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmRefzt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PtfmRefztRot)) deallocate(OutData%PtfmRefztRot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmRefztRot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmRefztRot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmRefztRot) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%WAMITULEN) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%HasWAMIT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WAMITFile); 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 RegUnpackAlloc(RF, OutData%PtfmRefxt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PtfmRefyt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PtfmRefzt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PtfmRefztRot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WAMITULEN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return if (associated(OutData%WaveField)) deallocate(OutData%WaveField) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPointer(RF, Ptr, PtrIdx); if (RegCheckErr(RF, RoutineName)) return if (c_associated(Ptr)) then call c_f_pointer(Ptr, OutData%WaveField) else allocate(OutData%WaveField,stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - Buf%Pointers(PtrIdx) = c_loc(OutData%WaveField) - call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(Buf, OutData%WaveField) ! WaveField + RF%Pointers(PtrIdx) = c_loc(OutData%WaveField) + call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(RF, OutData%WaveField) ! WaveField end if else OutData%WaveField => null() end if - call RegUnpack(Buf, OutData%MnDrift) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NewmanApp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DiffQTF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SumQTF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MnDriftF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NewmanAppF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DiffQTFF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SumQTFF) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%MnDrift); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NewmanApp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DiffQTF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SumQTF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MnDriftF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NewmanAppF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DiffQTFF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SumQTFF); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine WAMIT2_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -405,60 +321,26 @@ subroutine WAMIT2_DestroyMisc(MiscData, ErrStat, ErrMsg) end if end subroutine -subroutine WAMIT2_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT2_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(WAMIT2_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'WAMIT2_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%LastIndWave)) - if (allocated(InData%LastIndWave)) then - call RegPackBounds(Buf, 1, lbound(InData%LastIndWave, kind=B8Ki), ubound(InData%LastIndWave, kind=B8Ki)) - call RegPack(Buf, InData%LastIndWave) - end if - call RegPack(Buf, allocated(InData%F_Waves2)) - if (allocated(InData%F_Waves2)) then - call RegPackBounds(Buf, 1, lbound(InData%F_Waves2, kind=B8Ki), ubound(InData%F_Waves2, kind=B8Ki)) - call RegPack(Buf, InData%F_Waves2) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%LastIndWave) + call RegPackAlloc(RF, InData%F_Waves2) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WAMIT2_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT2_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(WAMIT2_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WAMIT2_UnPackMisc' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%LastIndWave)) deallocate(OutData%LastIndWave) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LastIndWave(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LastIndWave.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LastIndWave) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_Waves2)) deallocate(OutData%F_Waves2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_Waves2(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_Waves2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_Waves2) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%LastIndWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_Waves2); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine WAMIT2_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -508,71 +390,44 @@ subroutine WAMIT2_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine WAMIT2_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT2_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(WAMIT2_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'WAMIT2_PackParam' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%NBody) - call RegPack(Buf, InData%NBodyMod) - call RegPack(Buf, allocated(InData%WaveExctn2)) - if (allocated(InData%WaveExctn2)) then - call RegPackBounds(Buf, 2, lbound(InData%WaveExctn2, kind=B8Ki), ubound(InData%WaveExctn2, kind=B8Ki)) - call RegPack(Buf, InData%WaveExctn2) - end if - call RegPack(Buf, InData%MnDriftDims) - call RegPack(Buf, InData%NewmanAppDims) - call RegPack(Buf, InData%DiffQTFDims) - call RegPack(Buf, InData%SumQTFDims) - call RegPack(Buf, InData%MnDriftF) - call RegPack(Buf, InData%NewmanAppF) - call RegPack(Buf, InData%DiffQTFF) - call RegPack(Buf, InData%SumQTFF) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%NBody) + call RegPack(RF, InData%NBodyMod) + call RegPackAlloc(RF, InData%WaveExctn2) + call RegPack(RF, InData%MnDriftDims) + call RegPack(RF, InData%NewmanAppDims) + call RegPack(RF, InData%DiffQTFDims) + call RegPack(RF, InData%SumQTFDims) + call RegPack(RF, InData%MnDriftF) + call RegPack(RF, InData%NewmanAppF) + call RegPack(RF, InData%DiffQTFF) + call RegPack(RF, InData%SumQTFF) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WAMIT2_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT2_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(WAMIT2_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WAMIT2_UnPackParam' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%NBody) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NBodyMod) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WaveExctn2)) deallocate(OutData%WaveExctn2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveExctn2(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveExctn2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveExctn2) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%MnDriftDims) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NewmanAppDims) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DiffQTFDims) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SumQTFDims) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MnDriftF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NewmanAppF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DiffQTFF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SumQTFF) - if (RegCheckErr(Buf, RoutineName)) return + 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 RegUnpackAlloc(RF, OutData%WaveExctn2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MnDriftDims); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NewmanAppDims); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DiffQTFDims); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SumQTFDims); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MnDriftF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NewmanAppF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DiffQTFF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SumQTFF); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine WAMIT2_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -604,21 +459,21 @@ subroutine WAMIT2_DestroyOutput(OutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine WAMIT2_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT2_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(WAMIT2_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'WAMIT2_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%Mesh) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%Mesh) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WAMIT2_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT2_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(WAMIT2_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WAMIT2_UnPackOutput' - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%Mesh) ! Mesh + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%Mesh) ! Mesh end subroutine subroutine WAMIT2_Output_ExtrapInterp(y, t, y_out, t_out, ErrStat, ErrMsg) diff --git a/modules/hydrodyn/src/WAMIT_Types.f90 b/modules/hydrodyn/src/WAMIT_Types.f90 index d801d3ad76..0c82e5c2d8 100644 --- a/modules/hydrodyn/src/WAMIT_Types.f90 +++ b/modules/hydrodyn/src/WAMIT_Types.f90 @@ -289,71 +289,43 @@ subroutine WAMIT_DestroyInitInput(InitInputData, ErrStat, ErrMsg) nullify(InitInputData%WaveField) end subroutine -subroutine WAMIT_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(WAMIT_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'WAMIT_PackInitInput' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%NBody) - call RegPack(Buf, InData%NBodyMod) - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, allocated(InData%PtfmVol0)) - if (allocated(InData%PtfmVol0)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmVol0, kind=B8Ki), ubound(InData%PtfmVol0, kind=B8Ki)) - call RegPack(Buf, InData%PtfmVol0) - end if - call RegPack(Buf, InData%HasWAMIT) - call RegPack(Buf, InData%WAMITULEN) - call RegPack(Buf, allocated(InData%PtfmRefxt)) - if (allocated(InData%PtfmRefxt)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmRefxt, kind=B8Ki), ubound(InData%PtfmRefxt, kind=B8Ki)) - call RegPack(Buf, InData%PtfmRefxt) - end if - call RegPack(Buf, allocated(InData%PtfmRefyt)) - if (allocated(InData%PtfmRefyt)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmRefyt, kind=B8Ki), ubound(InData%PtfmRefyt, kind=B8Ki)) - call RegPack(Buf, InData%PtfmRefyt) - end if - call RegPack(Buf, allocated(InData%PtfmRefzt)) - if (allocated(InData%PtfmRefzt)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmRefzt, kind=B8Ki), ubound(InData%PtfmRefzt, kind=B8Ki)) - call RegPack(Buf, InData%PtfmRefzt) - end if - call RegPack(Buf, allocated(InData%PtfmRefztRot)) - if (allocated(InData%PtfmRefztRot)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmRefztRot, kind=B8Ki), ubound(InData%PtfmRefztRot, kind=B8Ki)) - call RegPack(Buf, InData%PtfmRefztRot) - end if - call RegPack(Buf, allocated(InData%PtfmCOBxt)) - if (allocated(InData%PtfmCOBxt)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmCOBxt, kind=B8Ki), ubound(InData%PtfmCOBxt, kind=B8Ki)) - call RegPack(Buf, InData%PtfmCOBxt) - end if - call RegPack(Buf, allocated(InData%PtfmCOByt)) - if (allocated(InData%PtfmCOByt)) then - call RegPackBounds(Buf, 1, lbound(InData%PtfmCOByt, kind=B8Ki), ubound(InData%PtfmCOByt, kind=B8Ki)) - call RegPack(Buf, InData%PtfmCOByt) - end if - call RegPack(Buf, InData%RdtnMod) - call RegPack(Buf, InData%ExctnMod) - call RegPack(Buf, InData%ExctnDisp) - call RegPack(Buf, InData%ExctnCutOff) - call RegPack(Buf, InData%RdtnTMax) - call RegPack(Buf, InData%WAMITFile) - call Conv_Rdtn_PackInitInput(Buf, InData%Conv_Rdtn) - call RegPack(Buf, associated(InData%WaveField)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%NBody) + call RegPack(RF, InData%NBodyMod) + call RegPack(RF, InData%Gravity) + call RegPackAlloc(RF, InData%PtfmVol0) + call RegPack(RF, InData%HasWAMIT) + call RegPack(RF, InData%WAMITULEN) + call RegPackAlloc(RF, InData%PtfmRefxt) + call RegPackAlloc(RF, InData%PtfmRefyt) + call RegPackAlloc(RF, InData%PtfmRefzt) + call RegPackAlloc(RF, InData%PtfmRefztRot) + call RegPackAlloc(RF, InData%PtfmCOBxt) + call RegPackAlloc(RF, InData%PtfmCOByt) + call RegPack(RF, InData%RdtnMod) + call RegPack(RF, InData%ExctnMod) + call RegPack(RF, InData%ExctnDisp) + call RegPack(RF, InData%ExctnCutOff) + call RegPack(RF, InData%RdtnTMax) + call RegPack(RF, InData%WAMITFile) + call Conv_Rdtn_PackInitInput(RF, InData%Conv_Rdtn) + call RegPack(RF, associated(InData%WaveField)) if (associated(InData%WaveField)) then - call RegPackPointer(Buf, c_loc(InData%WaveField), PtrInIndex) + call RegPackPointer(RF, c_loc(InData%WaveField), PtrInIndex) if (.not. PtrInIndex) then - call SeaSt_WaveField_PackSeaSt_WaveFieldType(Buf, InData%WaveField) + call SeaSt_WaveField_PackSeaSt_WaveFieldType(RF, InData%WaveField) end if end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WAMIT_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(WAMIT_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WAMIT_UnPackInitInput' integer(B8Ki) :: LB(1), UB(1) @@ -361,144 +333,40 @@ subroutine WAMIT_UnPackInitInput(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%NBody) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NBodyMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PtfmVol0)) deallocate(OutData%PtfmVol0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmVol0(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmVol0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmVol0) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%HasWAMIT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WAMITULEN) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PtfmRefxt)) deallocate(OutData%PtfmRefxt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmRefxt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmRefxt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmRefxt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PtfmRefyt)) deallocate(OutData%PtfmRefyt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmRefyt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmRefyt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmRefyt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PtfmRefzt)) deallocate(OutData%PtfmRefzt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmRefzt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmRefzt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmRefzt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PtfmRefztRot)) deallocate(OutData%PtfmRefztRot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmRefztRot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmRefztRot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmRefztRot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PtfmCOBxt)) deallocate(OutData%PtfmCOBxt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmCOBxt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmCOBxt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmCOBxt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PtfmCOByt)) deallocate(OutData%PtfmCOByt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmCOByt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmCOByt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmCOByt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%RdtnMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ExctnMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ExctnDisp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ExctnCutOff) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RdtnTMax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WAMITFile) - if (RegCheckErr(Buf, RoutineName)) return - call Conv_Rdtn_UnpackInitInput(Buf, OutData%Conv_Rdtn) ! Conv_Rdtn + 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%Gravity); 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%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 + call RegUnpackAlloc(RF, OutData%PtfmRefzt); if (RegCheckErr(RF, RoutineName)) return + 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 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 + call RegUnpack(RF, OutData%ExctnCutOff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RdtnTMax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WAMITFile); if (RegCheckErr(RF, RoutineName)) return + call Conv_Rdtn_UnpackInitInput(RF, OutData%Conv_Rdtn) ! Conv_Rdtn if (associated(OutData%WaveField)) deallocate(OutData%WaveField) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPointer(RF, Ptr, PtrIdx); if (RegCheckErr(RF, RoutineName)) return if (c_associated(Ptr)) then call c_f_pointer(Ptr, OutData%WaveField) else allocate(OutData%WaveField,stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - Buf%Pointers(PtrIdx) = c_loc(OutData%WaveField) - call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(Buf, OutData%WaveField) ! WaveField + RF%Pointers(PtrIdx) = c_loc(OutData%WaveField) + call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(RF, OutData%WaveField) ! WaveField end if else OutData%WaveField => null() @@ -544,25 +412,25 @@ subroutine WAMIT_DestroyContState(ContStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine WAMIT_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(WAMIT_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'WAMIT_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call SS_Rad_PackContState(Buf, InData%SS_Rdtn) - call SS_Exc_PackContState(Buf, InData%SS_Exctn) - call Conv_Rdtn_PackContState(Buf, InData%Conv_Rdtn) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call SS_Rad_PackContState(RF, InData%SS_Rdtn) + call SS_Exc_PackContState(RF, InData%SS_Exctn) + call Conv_Rdtn_PackContState(RF, InData%Conv_Rdtn) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WAMIT_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(WAMIT_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WAMIT_UnPackContState' - if (Buf%ErrStat /= ErrID_None) return - call SS_Rad_UnpackContState(Buf, OutData%SS_Rdtn) ! SS_Rdtn - call SS_Exc_UnpackContState(Buf, OutData%SS_Exctn) ! SS_Exctn - call Conv_Rdtn_UnpackContState(Buf, OutData%Conv_Rdtn) ! Conv_Rdtn + if (RF%ErrStat /= ErrID_None) return + call SS_Rad_UnpackContState(RF, OutData%SS_Rdtn) ! SS_Rdtn + call SS_Exc_UnpackContState(RF, OutData%SS_Exctn) ! SS_Exctn + call Conv_Rdtn_UnpackContState(RF, OutData%Conv_Rdtn) ! Conv_Rdtn end subroutine subroutine WAMIT_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -620,47 +488,30 @@ subroutine WAMIT_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) end if end subroutine -subroutine WAMIT_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(WAMIT_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'WAMIT_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call Conv_Rdtn_PackDiscState(Buf, InData%Conv_Rdtn) - call SS_Rad_PackDiscState(Buf, InData%SS_Rdtn) - call SS_Exc_PackDiscState(Buf, InData%SS_Exctn) - call RegPack(Buf, allocated(InData%BdyPosFilt)) - if (allocated(InData%BdyPosFilt)) then - call RegPackBounds(Buf, 3, lbound(InData%BdyPosFilt, kind=B8Ki), ubound(InData%BdyPosFilt, kind=B8Ki)) - call RegPack(Buf, InData%BdyPosFilt) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call Conv_Rdtn_PackDiscState(RF, InData%Conv_Rdtn) + call SS_Rad_PackDiscState(RF, InData%SS_Rdtn) + call SS_Exc_PackDiscState(RF, InData%SS_Exctn) + call RegPackAlloc(RF, InData%BdyPosFilt) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WAMIT_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(WAMIT_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WAMIT_UnPackDiscState' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call Conv_Rdtn_UnpackDiscState(Buf, OutData%Conv_Rdtn) ! Conv_Rdtn - call SS_Rad_UnpackDiscState(Buf, OutData%SS_Rdtn) ! SS_Rdtn - call SS_Exc_UnpackDiscState(Buf, OutData%SS_Exctn) ! SS_Exctn - if (allocated(OutData%BdyPosFilt)) deallocate(OutData%BdyPosFilt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BdyPosFilt(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BdyPosFilt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BdyPosFilt) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call Conv_Rdtn_UnpackDiscState(RF, OutData%Conv_Rdtn) ! Conv_Rdtn + call SS_Rad_UnpackDiscState(RF, OutData%SS_Rdtn) ! SS_Rdtn + call SS_Exc_UnpackDiscState(RF, OutData%SS_Exctn) ! SS_Exctn + call RegUnpackAlloc(RF, OutData%BdyPosFilt); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine WAMIT_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -702,25 +553,25 @@ subroutine WAMIT_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine WAMIT_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(WAMIT_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'WAMIT_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call Conv_Rdtn_PackConstrState(Buf, InData%Conv_Rdtn) - call SS_Rad_PackConstrState(Buf, InData%SS_Rdtn) - call SS_Exc_PackConstrState(Buf, InData%SS_Exctn) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call Conv_Rdtn_PackConstrState(RF, InData%Conv_Rdtn) + call SS_Rad_PackConstrState(RF, InData%SS_Rdtn) + call SS_Exc_PackConstrState(RF, InData%SS_Exctn) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WAMIT_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(WAMIT_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WAMIT_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call Conv_Rdtn_UnpackConstrState(Buf, OutData%Conv_Rdtn) ! Conv_Rdtn - call SS_Rad_UnpackConstrState(Buf, OutData%SS_Rdtn) ! SS_Rdtn - call SS_Exc_UnpackConstrState(Buf, OutData%SS_Exctn) ! SS_Exctn + if (RF%ErrStat /= ErrID_None) return + call Conv_Rdtn_UnpackConstrState(RF, OutData%Conv_Rdtn) ! Conv_Rdtn + call SS_Rad_UnpackConstrState(RF, OutData%SS_Rdtn) ! SS_Rdtn + call SS_Exc_UnpackConstrState(RF, OutData%SS_Exctn) ! SS_Exctn end subroutine subroutine WAMIT_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -762,25 +613,25 @@ subroutine WAMIT_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine WAMIT_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(WAMIT_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'WAMIT_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return - call SS_Rad_PackOtherState(Buf, InData%SS_Rdtn) - call SS_Exc_PackOtherState(Buf, InData%SS_Exctn) - call Conv_Rdtn_PackOtherState(Buf, InData%Conv_Rdtn) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call SS_Rad_PackOtherState(RF, InData%SS_Rdtn) + call SS_Exc_PackOtherState(RF, InData%SS_Exctn) + call Conv_Rdtn_PackOtherState(RF, InData%Conv_Rdtn) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WAMIT_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(WAMIT_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WAMIT_UnPackOtherState' - if (Buf%ErrStat /= ErrID_None) return - call SS_Rad_UnpackOtherState(Buf, OutData%SS_Rdtn) ! SS_Rdtn - call SS_Exc_UnpackOtherState(Buf, OutData%SS_Exctn) ! SS_Exctn - call Conv_Rdtn_UnpackOtherState(Buf, OutData%Conv_Rdtn) ! Conv_Rdtn + if (RF%ErrStat /= ErrID_None) return + call SS_Rad_UnpackOtherState(RF, OutData%SS_Rdtn) ! SS_Rdtn + call SS_Exc_UnpackOtherState(RF, OutData%SS_Exctn) ! SS_Exctn + call Conv_Rdtn_UnpackOtherState(RF, OutData%Conv_Rdtn) ! Conv_Rdtn end subroutine subroutine WAMIT_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -919,121 +770,52 @@ subroutine WAMIT_DestroyMisc(MiscData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine WAMIT_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(WAMIT_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'WAMIT_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%LastIndWave) - call RegPack(Buf, allocated(InData%F_HS)) - if (allocated(InData%F_HS)) then - call RegPackBounds(Buf, 1, lbound(InData%F_HS, kind=B8Ki), ubound(InData%F_HS, kind=B8Ki)) - call RegPack(Buf, InData%F_HS) - end if - call RegPack(Buf, allocated(InData%F_Waves1)) - if (allocated(InData%F_Waves1)) then - call RegPackBounds(Buf, 1, lbound(InData%F_Waves1, kind=B8Ki), ubound(InData%F_Waves1, kind=B8Ki)) - call RegPack(Buf, InData%F_Waves1) - end if - call RegPack(Buf, allocated(InData%F_Rdtn)) - if (allocated(InData%F_Rdtn)) then - call RegPackBounds(Buf, 1, lbound(InData%F_Rdtn, kind=B8Ki), ubound(InData%F_Rdtn, kind=B8Ki)) - call RegPack(Buf, InData%F_Rdtn) - end if - call RegPack(Buf, allocated(InData%F_PtfmAM)) - if (allocated(InData%F_PtfmAM)) then - call RegPackBounds(Buf, 1, lbound(InData%F_PtfmAM, kind=B8Ki), ubound(InData%F_PtfmAM, kind=B8Ki)) - call RegPack(Buf, InData%F_PtfmAM) - end if - call SS_Rad_PackMisc(Buf, InData%SS_Rdtn) - call SS_Rad_PackInput(Buf, InData%SS_Rdtn_u) - call SS_Rad_PackOutput(Buf, InData%SS_Rdtn_y) - call SS_Exc_PackMisc(Buf, InData%SS_Exctn) - call SS_Exc_PackInput(Buf, InData%SS_Exctn_u) - call SS_Exc_PackOutput(Buf, InData%SS_Exctn_y) - call Conv_Rdtn_PackMisc(Buf, InData%Conv_Rdtn) - call Conv_Rdtn_PackInput(Buf, InData%Conv_Rdtn_u) - call Conv_Rdtn_PackOutput(Buf, InData%Conv_Rdtn_y) - call SeaSt_Interp_PackMisc(Buf, InData%SeaSt_Interp_m) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%LastIndWave) + call RegPackAlloc(RF, InData%F_HS) + call RegPackAlloc(RF, InData%F_Waves1) + call RegPackAlloc(RF, InData%F_Rdtn) + call RegPackAlloc(RF, InData%F_PtfmAM) + call SS_Rad_PackMisc(RF, InData%SS_Rdtn) + call SS_Rad_PackInput(RF, InData%SS_Rdtn_u) + call SS_Rad_PackOutput(RF, InData%SS_Rdtn_y) + call SS_Exc_PackMisc(RF, InData%SS_Exctn) + call SS_Exc_PackInput(RF, InData%SS_Exctn_u) + call SS_Exc_PackOutput(RF, InData%SS_Exctn_y) + call Conv_Rdtn_PackMisc(RF, InData%Conv_Rdtn) + call Conv_Rdtn_PackInput(RF, InData%Conv_Rdtn_u) + call Conv_Rdtn_PackOutput(RF, InData%Conv_Rdtn_y) + call SeaSt_Interp_PackMisc(RF, InData%SeaSt_Interp_m) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WAMIT_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(WAMIT_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WAMIT_UnPackMisc' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%LastIndWave) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%F_HS)) deallocate(OutData%F_HS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_HS(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_HS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_HS) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_Waves1)) deallocate(OutData%F_Waves1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_Waves1(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_Waves1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_Waves1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_Rdtn)) deallocate(OutData%F_Rdtn) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_Rdtn(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_Rdtn.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_Rdtn) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_PtfmAM)) deallocate(OutData%F_PtfmAM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_PtfmAM(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_PtfmAM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_PtfmAM) - if (RegCheckErr(Buf, RoutineName)) return - end if - call SS_Rad_UnpackMisc(Buf, OutData%SS_Rdtn) ! SS_Rdtn - call SS_Rad_UnpackInput(Buf, OutData%SS_Rdtn_u) ! SS_Rdtn_u - call SS_Rad_UnpackOutput(Buf, OutData%SS_Rdtn_y) ! SS_Rdtn_y - call SS_Exc_UnpackMisc(Buf, OutData%SS_Exctn) ! SS_Exctn - call SS_Exc_UnpackInput(Buf, OutData%SS_Exctn_u) ! SS_Exctn_u - call SS_Exc_UnpackOutput(Buf, OutData%SS_Exctn_y) ! SS_Exctn_y - call Conv_Rdtn_UnpackMisc(Buf, OutData%Conv_Rdtn) ! Conv_Rdtn - call Conv_Rdtn_UnpackInput(Buf, OutData%Conv_Rdtn_u) ! Conv_Rdtn_u - call Conv_Rdtn_UnpackOutput(Buf, OutData%Conv_Rdtn_y) ! Conv_Rdtn_y - call SeaSt_Interp_UnpackMisc(Buf, OutData%SeaSt_Interp_m) ! SeaSt_Interp_m + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%LastIndWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_HS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_Waves1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_Rdtn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_PtfmAM); if (RegCheckErr(RF, RoutineName)) return + call SS_Rad_UnpackMisc(RF, OutData%SS_Rdtn) ! SS_Rdtn + call SS_Rad_UnpackInput(RF, OutData%SS_Rdtn_u) ! SS_Rdtn_u + call SS_Rad_UnpackOutput(RF, OutData%SS_Rdtn_y) ! SS_Rdtn_y + call SS_Exc_UnpackMisc(RF, OutData%SS_Exctn) ! SS_Exctn + call SS_Exc_UnpackInput(RF, OutData%SS_Exctn_u) ! SS_Exctn_u + call SS_Exc_UnpackOutput(RF, OutData%SS_Exctn_y) ! SS_Exctn_y + call Conv_Rdtn_UnpackMisc(RF, OutData%Conv_Rdtn) ! Conv_Rdtn + call Conv_Rdtn_UnpackInput(RF, OutData%Conv_Rdtn_u) ! Conv_Rdtn_u + call Conv_Rdtn_UnpackOutput(RF, OutData%Conv_Rdtn_y) ! Conv_Rdtn_y + call SeaSt_Interp_UnpackMisc(RF, OutData%SeaSt_Interp_m) ! SeaSt_Interp_m end subroutine subroutine WAMIT_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -1161,60 +943,40 @@ subroutine WAMIT_DestroyParam(ParamData, ErrStat, ErrMsg) nullify(ParamData%WaveField) end subroutine -subroutine WAMIT_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(WAMIT_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'WAMIT_PackParam' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%NBody) - call RegPack(Buf, InData%NBodyMod) - call RegPack(Buf, allocated(InData%F_HS_Moment_Offset)) - if (allocated(InData%F_HS_Moment_Offset)) then - call RegPackBounds(Buf, 2, lbound(InData%F_HS_Moment_Offset, kind=B8Ki), ubound(InData%F_HS_Moment_Offset, kind=B8Ki)) - call RegPack(Buf, InData%F_HS_Moment_Offset) - end if - call RegPack(Buf, allocated(InData%HdroAdMsI)) - if (allocated(InData%HdroAdMsI)) then - call RegPackBounds(Buf, 2, lbound(InData%HdroAdMsI, kind=B8Ki), ubound(InData%HdroAdMsI, kind=B8Ki)) - call RegPack(Buf, InData%HdroAdMsI) - end if - call RegPack(Buf, allocated(InData%HdroSttc)) - if (allocated(InData%HdroSttc)) then - call RegPackBounds(Buf, 2, lbound(InData%HdroSttc, kind=B8Ki), ubound(InData%HdroSttc, kind=B8Ki)) - call RegPack(Buf, InData%HdroSttc) - end if - call RegPack(Buf, InData%RdtnMod) - call RegPack(Buf, InData%ExctnMod) - call RegPack(Buf, InData%ExctnDisp) - call RegPack(Buf, InData%ExctnCutOff) - call RegPack(Buf, InData%ExctnFiltConst) - call RegPack(Buf, allocated(InData%WaveExctn)) - if (allocated(InData%WaveExctn)) then - call RegPackBounds(Buf, 2, lbound(InData%WaveExctn, kind=B8Ki), ubound(InData%WaveExctn, kind=B8Ki)) - call RegPack(Buf, InData%WaveExctn) - end if - call RegPack(Buf, allocated(InData%WaveExctnGrid)) - if (allocated(InData%WaveExctnGrid)) then - call RegPackBounds(Buf, 4, lbound(InData%WaveExctnGrid, kind=B8Ki), ubound(InData%WaveExctnGrid, kind=B8Ki)) - call RegPack(Buf, InData%WaveExctnGrid) - end if - call Conv_Rdtn_PackParam(Buf, InData%Conv_Rdtn) - call SS_Rad_PackParam(Buf, InData%SS_Rdtn) - call SS_Exc_PackParam(Buf, InData%SS_Exctn) - call RegPack(Buf, InData%DT) - call RegPack(Buf, associated(InData%WaveField)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%NBody) + call RegPack(RF, InData%NBodyMod) + call RegPackAlloc(RF, InData%F_HS_Moment_Offset) + call RegPackAlloc(RF, InData%HdroAdMsI) + call RegPackAlloc(RF, InData%HdroSttc) + call RegPack(RF, InData%RdtnMod) + call RegPack(RF, InData%ExctnMod) + call RegPack(RF, InData%ExctnDisp) + call RegPack(RF, InData%ExctnCutOff) + call RegPack(RF, InData%ExctnFiltConst) + call RegPackAlloc(RF, InData%WaveExctn) + call RegPackAlloc(RF, InData%WaveExctnGrid) + call Conv_Rdtn_PackParam(RF, InData%Conv_Rdtn) + call SS_Rad_PackParam(RF, InData%SS_Rdtn) + call SS_Exc_PackParam(RF, InData%SS_Exctn) + call RegPack(RF, InData%DT) + call RegPack(RF, associated(InData%WaveField)) if (associated(InData%WaveField)) then - call RegPackPointer(Buf, c_loc(InData%WaveField), PtrInIndex) + call RegPackPointer(RF, c_loc(InData%WaveField), PtrInIndex) if (.not. PtrInIndex) then - call SeaSt_WaveField_PackSeaSt_WaveFieldType(Buf, InData%WaveField) + call SeaSt_WaveField_PackSeaSt_WaveFieldType(RF, InData%WaveField) end if end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WAMIT_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(WAMIT_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WAMIT_UnPackParam' integer(B8Ki) :: LB(4), UB(4) @@ -1222,112 +984,37 @@ subroutine WAMIT_UnPackParam(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%NBody) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NBodyMod) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%F_HS_Moment_Offset)) deallocate(OutData%F_HS_Moment_Offset) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_HS_Moment_Offset(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_HS_Moment_Offset.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_HS_Moment_Offset) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%HdroAdMsI)) deallocate(OutData%HdroAdMsI) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%HdroAdMsI(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%HdroAdMsI.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%HdroAdMsI) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%HdroSttc)) deallocate(OutData%HdroSttc) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%HdroSttc(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%HdroSttc.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%HdroSttc) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%RdtnMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ExctnMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ExctnDisp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ExctnCutOff) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ExctnFiltConst) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WaveExctn)) deallocate(OutData%WaveExctn) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveExctn(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveExctn.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveExctn) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveExctnGrid)) deallocate(OutData%WaveExctnGrid) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveExctnGrid(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveExctnGrid.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveExctnGrid) - if (RegCheckErr(Buf, RoutineName)) return - end if - call Conv_Rdtn_UnpackParam(Buf, OutData%Conv_Rdtn) ! Conv_Rdtn - call SS_Rad_UnpackParam(Buf, OutData%SS_Rdtn) ! SS_Rdtn - call SS_Exc_UnpackParam(Buf, OutData%SS_Exctn) ! SS_Exctn - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return + 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 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 + 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 + call RegUnpack(RF, OutData%ExctnCutOff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ExctnFiltConst); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveExctn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveExctnGrid); if (RegCheckErr(RF, RoutineName)) return + call Conv_Rdtn_UnpackParam(RF, OutData%Conv_Rdtn) ! Conv_Rdtn + call SS_Rad_UnpackParam(RF, OutData%SS_Rdtn) ! SS_Rdtn + call SS_Exc_UnpackParam(RF, OutData%SS_Exctn) ! SS_Exctn + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return if (associated(OutData%WaveField)) deallocate(OutData%WaveField) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPointer(RF, Ptr, PtrIdx); if (RegCheckErr(RF, RoutineName)) return if (c_associated(Ptr)) then call c_f_pointer(Ptr, OutData%WaveField) else allocate(OutData%WaveField,stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - Buf%Pointers(PtrIdx) = c_loc(OutData%WaveField) - call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(Buf, OutData%WaveField) ! WaveField + RF%Pointers(PtrIdx) = c_loc(OutData%WaveField) + call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(RF, OutData%WaveField) ! WaveField end if else OutData%WaveField => null() @@ -1363,21 +1050,21 @@ subroutine WAMIT_DestroyInput(InputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine WAMIT_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(WAMIT_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'WAMIT_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%Mesh) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%Mesh) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WAMIT_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(WAMIT_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WAMIT_UnPackInput' - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%Mesh) ! Mesh + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%Mesh) ! Mesh end subroutine subroutine WAMIT_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -1409,21 +1096,21 @@ subroutine WAMIT_DestroyOutput(OutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine WAMIT_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(WAMIT_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'WAMIT_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%Mesh) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%Mesh) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WAMIT_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WAMIT_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(WAMIT_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WAMIT_UnPackOutput' - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%Mesh) ! Mesh + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%Mesh) ! Mesh end subroutine subroutine WAMIT_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/icedyn/src/IceDyn_Types.f90 b/modules/icedyn/src/IceDyn_Types.f90 index 299b42c9a0..c62479cd44 100644 --- a/modules/icedyn/src/IceDyn_Types.f90 +++ b/modules/icedyn/src/IceDyn_Types.f90 @@ -350,250 +350,142 @@ subroutine IceD_DestroyInputFile(InputFileData, ErrStat, ErrMsg) end if end subroutine -subroutine IceD_PackInputFile(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_PackInputFile(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceD_InputFile), intent(in) :: InData character(*), parameter :: RoutineName = 'IceD_PackInputFile' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%IceModel) - call RegPack(Buf, InData%IceSubModel) - call RegPack(Buf, InData%h) - call RegPack(Buf, InData%v) - call RegPack(Buf, InData%InitLoc) - call RegPack(Buf, InData%t0) - call RegPack(Buf, InData%rhow) - call RegPack(Buf, InData%rhoi) - call RegPack(Buf, InData%Seed1) - call RegPack(Buf, InData%Seed2) - call RegPack(Buf, InData%NumLegs) - call RegPack(Buf, allocated(InData%LegPosX)) - if (allocated(InData%LegPosX)) then - call RegPackBounds(Buf, 1, lbound(InData%LegPosX, kind=B8Ki), ubound(InData%LegPosX, kind=B8Ki)) - call RegPack(Buf, InData%LegPosX) - end if - call RegPack(Buf, allocated(InData%LegPosY)) - if (allocated(InData%LegPosY)) then - call RegPackBounds(Buf, 1, lbound(InData%LegPosY, kind=B8Ki), ubound(InData%LegPosY, kind=B8Ki)) - call RegPack(Buf, InData%LegPosY) - end if - call RegPack(Buf, allocated(InData%StrWd)) - if (allocated(InData%StrWd)) then - call RegPackBounds(Buf, 1, lbound(InData%StrWd, kind=B8Ki), ubound(InData%StrWd, kind=B8Ki)) - call RegPack(Buf, InData%StrWd) - end if - call RegPack(Buf, InData%Ikm) - call RegPack(Buf, InData%Ag) - call RegPack(Buf, InData%Qg) - call RegPack(Buf, InData%Rg) - call RegPack(Buf, InData%Tice) - call RegPack(Buf, InData%nu) - call RegPack(Buf, InData%phi) - call RegPack(Buf, InData%SigNm) - call RegPack(Buf, InData%Eice) - call RegPack(Buf, InData%IceStr2) - call RegPack(Buf, InData%Delmax2) - call RegPack(Buf, InData%Pitch) - call RegPack(Buf, InData%miuh) - call RegPack(Buf, InData%varh) - call RegPack(Buf, InData%miuv) - call RegPack(Buf, InData%varv) - call RegPack(Buf, InData%miut) - call RegPack(Buf, InData%miubr) - call RegPack(Buf, InData%varbr) - call RegPack(Buf, InData%miuDelm) - call RegPack(Buf, InData%varDelm) - call RegPack(Buf, InData%miuP) - call RegPack(Buf, InData%varP) - call RegPack(Buf, InData%Zn1) - call RegPack(Buf, InData%Zn2) - call RegPack(Buf, InData%ZonePitch) - call RegPack(Buf, InData%PrflMean) - call RegPack(Buf, InData%PrflSig) - call RegPack(Buf, InData%IceStr) - call RegPack(Buf, InData%Delmax) - call RegPack(Buf, InData%alpha) - call RegPack(Buf, InData%Dwl) - call RegPack(Buf, InData%Dtp) - call RegPack(Buf, InData%hr) - call RegPack(Buf, InData%mu) - call RegPack(Buf, InData%sigf) - call RegPack(Buf, InData%StrLim) - call RegPack(Buf, InData%StrRtLim) - call RegPack(Buf, InData%UorD) - call RegPack(Buf, InData%Ll) - call RegPack(Buf, InData%Lw) - call RegPack(Buf, InData%Cpa) - call RegPack(Buf, InData%dpa) - call RegPack(Buf, InData%Fdr) - call RegPack(Buf, InData%Kic) - call RegPack(Buf, InData%FspN) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%IceModel) + call RegPack(RF, InData%IceSubModel) + call RegPack(RF, InData%h) + call RegPack(RF, InData%v) + call RegPack(RF, InData%InitLoc) + call RegPack(RF, InData%t0) + call RegPack(RF, InData%rhow) + call RegPack(RF, InData%rhoi) + call RegPack(RF, InData%Seed1) + call RegPack(RF, InData%Seed2) + call RegPack(RF, InData%NumLegs) + call RegPackAlloc(RF, InData%LegPosX) + call RegPackAlloc(RF, InData%LegPosY) + call RegPackAlloc(RF, InData%StrWd) + call RegPack(RF, InData%Ikm) + call RegPack(RF, InData%Ag) + call RegPack(RF, InData%Qg) + call RegPack(RF, InData%Rg) + call RegPack(RF, InData%Tice) + call RegPack(RF, InData%nu) + call RegPack(RF, InData%phi) + call RegPack(RF, InData%SigNm) + call RegPack(RF, InData%Eice) + call RegPack(RF, InData%IceStr2) + call RegPack(RF, InData%Delmax2) + call RegPack(RF, InData%Pitch) + call RegPack(RF, InData%miuh) + call RegPack(RF, InData%varh) + call RegPack(RF, InData%miuv) + call RegPack(RF, InData%varv) + call RegPack(RF, InData%miut) + call RegPack(RF, InData%miubr) + call RegPack(RF, InData%varbr) + call RegPack(RF, InData%miuDelm) + call RegPack(RF, InData%varDelm) + call RegPack(RF, InData%miuP) + call RegPack(RF, InData%varP) + call RegPack(RF, InData%Zn1) + call RegPack(RF, InData%Zn2) + call RegPack(RF, InData%ZonePitch) + call RegPack(RF, InData%PrflMean) + call RegPack(RF, InData%PrflSig) + call RegPack(RF, InData%IceStr) + call RegPack(RF, InData%Delmax) + call RegPack(RF, InData%alpha) + call RegPack(RF, InData%Dwl) + call RegPack(RF, InData%Dtp) + call RegPack(RF, InData%hr) + call RegPack(RF, InData%mu) + call RegPack(RF, InData%sigf) + call RegPack(RF, InData%StrLim) + call RegPack(RF, InData%StrRtLim) + call RegPack(RF, InData%UorD) + call RegPack(RF, InData%Ll) + call RegPack(RF, InData%Lw) + call RegPack(RF, InData%Cpa) + call RegPack(RF, InData%dpa) + call RegPack(RF, InData%Fdr) + call RegPack(RF, InData%Kic) + call RegPack(RF, InData%FspN) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceD_UnPackInputFile(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_UnPackInputFile(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceD_InputFile), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceD_UnPackInputFile' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%IceModel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%IceSubModel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%h) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%v) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InitLoc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%t0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rhow) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rhoi) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Seed1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Seed2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumLegs) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%LegPosX)) deallocate(OutData%LegPosX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LegPosX(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LegPosX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LegPosX) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LegPosY)) deallocate(OutData%LegPosY) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LegPosY(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LegPosY.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LegPosY) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%StrWd)) deallocate(OutData%StrWd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StrWd(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StrWd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StrWd) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Ikm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Ag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Qg) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Rg) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Tice) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nu) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%phi) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SigNm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Eice) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%IceStr2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Delmax2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Pitch) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%miuh) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%varh) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%miuv) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%varv) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%miut) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%miubr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%varbr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%miuDelm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%varDelm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%miuP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%varP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Zn1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Zn2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ZonePitch) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PrflMean) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PrflSig) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%IceStr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Delmax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%alpha) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Dwl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Dtp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%hr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%mu) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%sigf) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StrLim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StrRtLim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UorD) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Ll) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Lw) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cpa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dpa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Fdr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Kic) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FspN) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%IceModel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IceSubModel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%h); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%v); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InitLoc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%t0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rhow); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rhoi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Seed1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Seed2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumLegs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LegPosX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LegPosY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StrWd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ikm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Qg); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Rg); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Tice); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nu); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%phi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SigNm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Eice); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IceStr2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Delmax2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Pitch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%miuh); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%varh); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%miuv); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%varv); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%miut); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%miubr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%varbr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%miuDelm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%varDelm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%miuP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%varP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Zn1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Zn2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ZonePitch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PrflMean); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PrflSig); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IceStr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Delmax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%alpha); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Dwl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Dtp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%hr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%mu); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%sigf); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StrLim); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StrRtLim); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UorD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ll); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Lw); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cpa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dpa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Fdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Kic); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FspN); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IceD_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -623,40 +515,33 @@ subroutine IceD_DestroyInitInput(InitInputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine IceD_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceD_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceD_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%InputFile) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, InData%MSL2SWL) - call RegPack(Buf, InData%WtrDens) - call RegPack(Buf, InData%gravity) - call RegPack(Buf, InData%LegNum) - call RegPack(Buf, InData%TMax) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%InputFile) + call RegPack(RF, InData%RootName) + call RegPack(RF, InData%MSL2SWL) + call RegPack(RF, InData%WtrDens) + call RegPack(RF, InData%gravity) + call RegPack(RF, InData%LegNum) + call RegPack(RF, InData%TMax) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceD_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceD_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceD_UnPackInitInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%InputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MSL2SWL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LegNum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TMax) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%InputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MSL2SWL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LegNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TMax); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IceD_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -720,65 +605,30 @@ subroutine IceD_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine IceD_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceD_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceD_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - call RegPack(Buf, InData%numLegs) - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + call RegPack(RF, InData%numLegs) + call NWTC_Library_PackProgDesc(RF, InData%Ver) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceD_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceD_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceD_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%numLegs) - if (RegCheckErr(Buf, RoutineName)) return - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numLegs); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver end subroutine subroutine IceD_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -803,25 +653,23 @@ subroutine IceD_DestroyContState(ContStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine IceD_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceD_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceD_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%q) - call RegPack(Buf, InData%dqdt) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%q) + call RegPack(RF, InData%dqdt) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceD_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceD_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceD_UnPackContState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%q) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dqdt) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%q); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dqdt); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IceD_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -845,22 +693,21 @@ subroutine IceD_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine IceD_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceD_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceD_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyDiscState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceD_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceD_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceD_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyDiscState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IceD_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -884,22 +731,21 @@ subroutine IceD_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine IceD_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceD_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceD_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstrState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceD_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceD_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceD_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstrState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IceD_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -1006,124 +852,65 @@ subroutine IceD_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) end if end subroutine -subroutine IceD_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceD_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceD_PackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%IceTthNo2) - call RegPack(Buf, allocated(InData%Nc)) - if (allocated(InData%Nc)) then - call RegPackBounds(Buf, 1, lbound(InData%Nc, kind=B8Ki), ubound(InData%Nc, kind=B8Ki)) - call RegPack(Buf, InData%Nc) - end if - call RegPack(Buf, allocated(InData%Psum)) - if (allocated(InData%Psum)) then - call RegPackBounds(Buf, 1, lbound(InData%Psum, kind=B8Ki), ubound(InData%Psum, kind=B8Ki)) - call RegPack(Buf, InData%Psum) - end if - call RegPack(Buf, allocated(InData%IceTthNo)) - if (allocated(InData%IceTthNo)) then - call RegPackBounds(Buf, 1, lbound(InData%IceTthNo, kind=B8Ki), ubound(InData%IceTthNo, kind=B8Ki)) - call RegPack(Buf, InData%IceTthNo) - end if - call RegPack(Buf, InData%Beta) - call RegPack(Buf, InData%Tinit) - call RegPack(Buf, InData%Splitf) - call RegPack(Buf, InData%dxc) - call RegPack(Buf, allocated(InData%xdot)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%IceTthNo2) + call RegPackAlloc(RF, InData%Nc) + call RegPackAlloc(RF, InData%Psum) + call RegPackAlloc(RF, InData%IceTthNo) + call RegPack(RF, InData%Beta) + call RegPack(RF, InData%Tinit) + call RegPack(RF, InData%Splitf) + call RegPack(RF, InData%dxc) + call RegPack(RF, allocated(InData%xdot)) if (allocated(InData%xdot)) then - call RegPackBounds(Buf, 1, lbound(InData%xdot, kind=B8Ki), ubound(InData%xdot, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%xdot, kind=B8Ki), ubound(InData%xdot, kind=B8Ki)) LB(1:1) = lbound(InData%xdot, kind=B8Ki) UB(1:1) = ubound(InData%xdot, kind=B8Ki) do i1 = LB(1), UB(1) - call IceD_PackContState(Buf, InData%xdot(i1)) + call IceD_PackContState(RF, InData%xdot(i1)) end do end if - call RegPack(Buf, InData%n) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%n) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceD_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceD_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceD_UnPackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%IceTthNo2) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Nc)) deallocate(OutData%Nc) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Nc(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Nc.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Nc) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Psum)) deallocate(OutData%Psum) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Psum(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Psum.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Psum) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IceTthNo)) deallocate(OutData%IceTthNo) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IceTthNo(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IceTthNo.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IceTthNo) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Beta) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Tinit) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Splitf) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dxc) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%IceTthNo2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Nc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Psum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IceTthNo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Beta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Tinit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Splitf); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dxc); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%xdot)) deallocate(OutData%xdot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xdot(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xdot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xdot.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call IceD_UnpackContState(Buf, OutData%xdot(i1)) ! xdot + call IceD_UnpackContState(RF, OutData%xdot(i1)) ! xdot end do end if - call RegUnpack(Buf, OutData%n) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%n); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IceD_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -1147,22 +934,21 @@ subroutine IceD_DestroyMisc(MiscData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine IceD_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceD_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceD_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyMiscVar) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyMiscVar) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceD_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceD_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceD_UnPackMisc' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyMiscVar) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyMiscVar); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IceD_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -1385,356 +1171,138 @@ subroutine IceD_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine IceD_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceD_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceD_PackParam' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%h) - call RegPack(Buf, InData%v) - call RegPack(Buf, InData%t0) - call RegPack(Buf, InData%StrWd) - call RegPack(Buf, InData%dt) - call RegPack(Buf, InData%InitLoc) - call RegPack(Buf, InData%tolerance) - call RegPack(Buf, InData%Tmax) - call RegPack(Buf, InData%verif) - call RegPack(Buf, InData%ModNo) - call RegPack(Buf, InData%SubModNo) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, InData%method) - call RegPack(Buf, InData%TmStep) - call RegPack(Buf, allocated(InData%OutName)) - if (allocated(InData%OutName)) then - call RegPackBounds(Buf, 1, lbound(InData%OutName, kind=B8Ki), ubound(InData%OutName, kind=B8Ki)) - call RegPack(Buf, InData%OutName) - end if - call RegPack(Buf, allocated(InData%OutUnit)) - if (allocated(InData%OutUnit)) then - call RegPackBounds(Buf, 1, lbound(InData%OutUnit, kind=B8Ki), ubound(InData%OutUnit, kind=B8Ki)) - call RegPack(Buf, InData%OutUnit) - end if - call RegPack(Buf, InData%RootName) - call RegPack(Buf, InData%tm1a) - call RegPack(Buf, InData%tm1b) - call RegPack(Buf, InData%tm1c) - call RegPack(Buf, InData%Fmax1a) - call RegPack(Buf, InData%Fmax1b) - call RegPack(Buf, InData%Fmax1c) - call RegPack(Buf, InData%Ikm) - call RegPack(Buf, InData%Cstr) - call RegPack(Buf, InData%EiPa) - call RegPack(Buf, InData%Delmax2) - call RegPack(Buf, InData%Pitch) - call RegPack(Buf, InData%Kice2) - call RegPack(Buf, allocated(InData%rdmFm)) - if (allocated(InData%rdmFm)) then - call RegPackBounds(Buf, 1, lbound(InData%rdmFm, kind=B8Ki), ubound(InData%rdmFm, kind=B8Ki)) - call RegPack(Buf, InData%rdmFm) - end if - call RegPack(Buf, allocated(InData%rdmt0)) - if (allocated(InData%rdmt0)) then - call RegPackBounds(Buf, 1, lbound(InData%rdmt0, kind=B8Ki), ubound(InData%rdmt0, kind=B8Ki)) - call RegPack(Buf, InData%rdmt0) - end if - call RegPack(Buf, allocated(InData%rdmtm)) - if (allocated(InData%rdmtm)) then - call RegPackBounds(Buf, 1, lbound(InData%rdmtm, kind=B8Ki), ubound(InData%rdmtm, kind=B8Ki)) - call RegPack(Buf, InData%rdmtm) - end if - call RegPack(Buf, allocated(InData%rdmDm)) - if (allocated(InData%rdmDm)) then - call RegPackBounds(Buf, 1, lbound(InData%rdmDm, kind=B8Ki), ubound(InData%rdmDm, kind=B8Ki)) - call RegPack(Buf, InData%rdmDm) - end if - call RegPack(Buf, allocated(InData%rdmP)) - if (allocated(InData%rdmP)) then - call RegPackBounds(Buf, 1, lbound(InData%rdmP, kind=B8Ki), ubound(InData%rdmP, kind=B8Ki)) - call RegPack(Buf, InData%rdmP) - end if - call RegPack(Buf, allocated(InData%rdmKi)) - if (allocated(InData%rdmKi)) then - call RegPackBounds(Buf, 1, lbound(InData%rdmKi, kind=B8Ki), ubound(InData%rdmKi, kind=B8Ki)) - call RegPack(Buf, InData%rdmKi) - end if - call RegPack(Buf, InData%ZonePitch) - call RegPack(Buf, InData%Kice) - call RegPack(Buf, InData%Delmax) - call RegPack(Buf, allocated(InData%Y0)) - if (allocated(InData%Y0)) then - call RegPackBounds(Buf, 1, lbound(InData%Y0, kind=B8Ki), ubound(InData%Y0, kind=B8Ki)) - call RegPack(Buf, InData%Y0) - end if - call RegPack(Buf, allocated(InData%ContPrfl)) - if (allocated(InData%ContPrfl)) then - call RegPackBounds(Buf, 1, lbound(InData%ContPrfl, kind=B8Ki), ubound(InData%ContPrfl, kind=B8Ki)) - call RegPack(Buf, InData%ContPrfl) - end if - call RegPack(Buf, InData%Zn) - call RegPack(Buf, InData%rhoi) - call RegPack(Buf, InData%rhow) - call RegPack(Buf, InData%alphaR) - call RegPack(Buf, InData%Dwl) - call RegPack(Buf, InData%Zr) - call RegPack(Buf, InData%RHbr) - call RegPack(Buf, InData%RVbr) - call RegPack(Buf, InData%Lbr) - call RegPack(Buf, InData%LovR) - call RegPack(Buf, InData%mu) - call RegPack(Buf, InData%Wri) - call RegPack(Buf, InData%WL) - call RegPack(Buf, InData%Cpa) - call RegPack(Buf, InData%dpa) - call RegPack(Buf, InData%FdrN) - call RegPack(Buf, InData%Mice) - call RegPack(Buf, InData%Fsp) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%h) + call RegPack(RF, InData%v) + call RegPack(RF, InData%t0) + call RegPack(RF, InData%StrWd) + call RegPack(RF, InData%dt) + call RegPack(RF, InData%InitLoc) + call RegPack(RF, InData%tolerance) + call RegPack(RF, InData%Tmax) + call RegPack(RF, InData%verif) + call RegPack(RF, InData%ModNo) + call RegPack(RF, InData%SubModNo) + call RegPack(RF, InData%NumOuts) + call RegPack(RF, InData%method) + call RegPack(RF, InData%TmStep) + call RegPackAlloc(RF, InData%OutName) + call RegPackAlloc(RF, InData%OutUnit) + call RegPack(RF, InData%RootName) + call RegPack(RF, InData%tm1a) + call RegPack(RF, InData%tm1b) + call RegPack(RF, InData%tm1c) + call RegPack(RF, InData%Fmax1a) + call RegPack(RF, InData%Fmax1b) + call RegPack(RF, InData%Fmax1c) + call RegPack(RF, InData%Ikm) + call RegPack(RF, InData%Cstr) + call RegPack(RF, InData%EiPa) + call RegPack(RF, InData%Delmax2) + call RegPack(RF, InData%Pitch) + call RegPack(RF, InData%Kice2) + call RegPackAlloc(RF, InData%rdmFm) + call RegPackAlloc(RF, InData%rdmt0) + call RegPackAlloc(RF, InData%rdmtm) + call RegPackAlloc(RF, InData%rdmDm) + call RegPackAlloc(RF, InData%rdmP) + call RegPackAlloc(RF, InData%rdmKi) + call RegPack(RF, InData%ZonePitch) + call RegPack(RF, InData%Kice) + call RegPack(RF, InData%Delmax) + call RegPackAlloc(RF, InData%Y0) + call RegPackAlloc(RF, InData%ContPrfl) + call RegPack(RF, InData%Zn) + call RegPack(RF, InData%rhoi) + call RegPack(RF, InData%rhow) + call RegPack(RF, InData%alphaR) + call RegPack(RF, InData%Dwl) + call RegPack(RF, InData%Zr) + call RegPack(RF, InData%RHbr) + call RegPack(RF, InData%RVbr) + call RegPack(RF, InData%Lbr) + call RegPack(RF, InData%LovR) + call RegPack(RF, InData%mu) + call RegPack(RF, InData%Wri) + call RegPack(RF, InData%WL) + call RegPack(RF, InData%Cpa) + call RegPack(RF, InData%dpa) + call RegPack(RF, InData%FdrN) + call RegPack(RF, InData%Mice) + call RegPack(RF, InData%Fsp) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceD_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceD_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceD_UnPackParam' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%h) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%v) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%t0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StrWd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InitLoc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tolerance) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Tmax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%verif) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ModNo) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SubModNo) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%method) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TmStep) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutName)) deallocate(OutData%OutName) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutName(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutName.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutName) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OutUnit)) deallocate(OutData%OutUnit) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutUnit(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutUnit.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutUnit) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tm1a) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tm1b) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tm1c) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Fmax1a) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Fmax1b) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Fmax1c) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Ikm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cstr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EiPa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Delmax2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Pitch) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Kice2) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%rdmFm)) deallocate(OutData%rdmFm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rdmFm(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rdmFm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rdmFm) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rdmt0)) deallocate(OutData%rdmt0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rdmt0(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rdmt0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rdmt0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rdmtm)) deallocate(OutData%rdmtm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rdmtm(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rdmtm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rdmtm) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rdmDm)) deallocate(OutData%rdmDm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rdmDm(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rdmDm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rdmDm) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rdmP)) deallocate(OutData%rdmP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rdmP(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rdmP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rdmP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rdmKi)) deallocate(OutData%rdmKi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rdmKi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rdmKi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rdmKi) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%ZonePitch) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Kice) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Delmax) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Y0)) deallocate(OutData%Y0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Y0(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Y0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Y0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ContPrfl)) deallocate(OutData%ContPrfl) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ContPrfl(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ContPrfl.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ContPrfl) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Zn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rhoi) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rhow) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%alphaR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Dwl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Zr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RHbr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RVbr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Lbr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LovR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%mu) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Wri) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cpa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dpa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FdrN) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Mice) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Fsp) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%h); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%v); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%t0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StrWd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InitLoc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tolerance); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Tmax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%verif); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ModNo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SubModNo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%method); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TmStep); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutUnit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tm1a); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tm1b); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tm1c); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Fmax1a); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Fmax1b); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Fmax1c); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ikm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cstr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EiPa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Delmax2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Pitch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Kice2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rdmFm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rdmt0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rdmtm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rdmDm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rdmP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rdmKi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ZonePitch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Kice); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Delmax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Y0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ContPrfl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Zn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rhoi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rhow); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%alphaR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Dwl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Zr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RHbr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RVbr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Lbr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LovR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%mu); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Wri); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cpa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dpa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FdrN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Mice); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Fsp); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IceD_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -1766,21 +1334,21 @@ subroutine IceD_DestroyInput(InputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine IceD_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceD_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceD_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%PointMesh) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%PointMesh) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceD_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceD_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceD_UnPackInput' - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%PointMesh) ! PointMesh + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%PointMesh) ! PointMesh end subroutine subroutine IceD_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -1828,43 +1396,26 @@ subroutine IceD_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine IceD_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceD_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceD_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%PointMesh) - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%PointMesh) + call RegPackAlloc(RF, InData%WriteOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceD_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceD_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceD_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceD_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%PointMesh) ! PointMesh - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%PointMesh) ! PointMesh + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IceD_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/icefloe/src/icefloe/IceFloe_Types.f90 b/modules/icefloe/src/icefloe/IceFloe_Types.f90 index 5d53911bed..41cffbc0de 100644 --- a/modules/icefloe/src/icefloe/IceFloe_Types.f90 +++ b/modules/icefloe/src/icefloe/IceFloe_Types.f90 @@ -135,34 +135,29 @@ subroutine IceFloe_DestroyInitInput(InitInputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine IceFloe_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceFloe_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceFloe_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%InputFile) - call RegPack(Buf, InData%simLength) - call RegPack(Buf, InData%MSL2SWL) - call RegPack(Buf, InData%gravity) - call RegPack(Buf, InData%RootName) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%InputFile) + call RegPack(RF, InData%simLength) + call RegPack(RF, InData%MSL2SWL) + call RegPack(RF, InData%gravity) + call RegPack(RF, InData%RootName) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceFloe_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceFloe_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceFloe_UnPackInitInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%InputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%simLength) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MSL2SWL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%InputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%simLength); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MSL2SWL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IceFloe_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -225,62 +220,28 @@ subroutine IceFloe_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine IceFloe_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceFloe_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceFloe_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + call NWTC_Library_PackProgDesc(RF, InData%Ver) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceFloe_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceFloe_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceFloe_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver end subroutine subroutine IceFloe_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -304,22 +265,21 @@ subroutine IceFloe_DestroyContState(ContStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine IceFloe_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceFloe_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceFloe_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyContStateVar) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyContStateVar) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceFloe_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceFloe_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceFloe_UnPackContState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyContStateVar) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyContStateVar); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IceFloe_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -343,22 +303,21 @@ subroutine IceFloe_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine IceFloe_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceFloe_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceFloe_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyDiscStateVar) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyDiscStateVar) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceFloe_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceFloe_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceFloe_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyDiscStateVar) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyDiscStateVar); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IceFloe_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -382,22 +341,21 @@ subroutine IceFloe_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine IceFloe_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceFloe_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceFloe_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstrStateVar) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstrStateVar) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceFloe_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceFloe_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceFloe_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstrStateVar) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstrStateVar); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IceFloe_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -421,22 +379,21 @@ subroutine IceFloe_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine IceFloe_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceFloe_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceFloe_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyOtherState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyOtherState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceFloe_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceFloe_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceFloe_UnPackOtherState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyOtherState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyOtherState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IceFloe_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -460,22 +417,21 @@ subroutine IceFloe_DestroyMisc(MiscData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine IceFloe_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceFloe_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceFloe_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyMiscVar) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyMiscVar) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceFloe_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceFloe_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceFloe_UnPackMisc' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyMiscVar) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyMiscVar); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IceFloe_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -575,143 +531,60 @@ subroutine IceFloe_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine IceFloe_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceFloe_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceFloe_PackParam' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%loadSeries)) - if (allocated(InData%loadSeries)) then - call RegPackBounds(Buf, 2, lbound(InData%loadSeries, kind=B8Ki), ubound(InData%loadSeries, kind=B8Ki)) - call RegPack(Buf, InData%loadSeries) - end if - call RegPack(Buf, InData%iceVel) - call RegPack(Buf, InData%iceDirection) - call RegPack(Buf, InData%minStrength) - call RegPack(Buf, InData%minStrengthNegVel) - call RegPack(Buf, InData%defaultArea) - call RegPack(Buf, InData%crushArea) - call RegPack(Buf, InData%coeffStressRate) - call RegPack(Buf, InData%C(4)) - call RegPack(Buf, InData%dt) - call RegPack(Buf, InData%rampTime) - call RegPack(Buf, allocated(InData%legX)) - if (allocated(InData%legX)) then - call RegPackBounds(Buf, 1, lbound(InData%legX, kind=B8Ki), ubound(InData%legX, kind=B8Ki)) - call RegPack(Buf, InData%legX) - end if - call RegPack(Buf, allocated(InData%legY)) - if (allocated(InData%legY)) then - call RegPackBounds(Buf, 1, lbound(InData%legY, kind=B8Ki), ubound(InData%legY, kind=B8Ki)) - call RegPack(Buf, InData%legY) - end if - call RegPack(Buf, allocated(InData%ks)) - if (allocated(InData%ks)) then - call RegPackBounds(Buf, 1, lbound(InData%ks, kind=B8Ki), ubound(InData%ks, kind=B8Ki)) - call RegPack(Buf, InData%ks) - end if - call RegPack(Buf, InData%numLegs) - call RegPack(Buf, InData%iceType) - call RegPack(Buf, InData%logUnitNum) - call RegPack(Buf, InData%singleLoad) - call RegPack(Buf, InData%initFlag) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%loadSeries) + call RegPack(RF, InData%iceVel) + call RegPack(RF, InData%iceDirection) + call RegPack(RF, InData%minStrength) + call RegPack(RF, InData%minStrengthNegVel) + call RegPack(RF, InData%defaultArea) + call RegPack(RF, InData%crushArea) + call RegPack(RF, InData%coeffStressRate) + call RegPack(RF, InData%C(4)) + call RegPack(RF, InData%dt) + call RegPack(RF, InData%rampTime) + call RegPackAlloc(RF, InData%legX) + call RegPackAlloc(RF, InData%legY) + call RegPackAlloc(RF, InData%ks) + call RegPack(RF, InData%numLegs) + call RegPack(RF, InData%iceType) + call RegPack(RF, InData%logUnitNum) + call RegPack(RF, InData%singleLoad) + call RegPack(RF, InData%initFlag) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceFloe_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceFloe_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceFloe_UnPackParam' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%loadSeries)) deallocate(OutData%loadSeries) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%loadSeries(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%loadSeries.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%loadSeries) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%iceVel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%iceDirection) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%minStrength) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%minStrengthNegVel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%defaultArea) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%crushArea) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%coeffStressRate) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C(4)) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rampTime) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%legX)) deallocate(OutData%legX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%legX(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%legX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%legX) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%legY)) deallocate(OutData%legY) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%legY(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%legY.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%legY) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ks)) deallocate(OutData%ks) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ks(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ks.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ks) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%numLegs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%iceType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%logUnitNum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%singleLoad) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%initFlag) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%loadSeries); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%iceVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%iceDirection); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%minStrength); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%minStrengthNegVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%defaultArea); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%crushArea); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%coeffStressRate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C(4)); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rampTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%legX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%legY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ks); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numLegs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%iceType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%logUnitNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%singleLoad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%initFlag); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IceFloe_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -743,21 +616,21 @@ subroutine IceFloe_DestroyInput(InputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine IceFloe_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceFloe_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceFloe_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%iceMesh) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%iceMesh) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceFloe_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceFloe_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceFloe_UnPackInput' - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%iceMesh) ! iceMesh + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%iceMesh) ! iceMesh end subroutine subroutine IceFloe_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -805,43 +678,26 @@ subroutine IceFloe_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine IceFloe_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceFloe_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'IceFloe_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%iceMesh) - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%iceMesh) + call RegPackAlloc(RF, InData%WriteOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IceFloe_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IceFloe_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceFloe_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IceFloe_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%iceMesh) ! iceMesh - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%iceMesh) ! iceMesh + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IceFloe_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/inflowwind/src/IfW_FlowField_Types.f90 b/modules/inflowwind/src/IfW_FlowField_Types.f90 index 415a47a057..022bbb2cb9 100644 --- a/modules/inflowwind/src/IfW_FlowField_Types.f90 +++ b/modules/inflowwind/src/IfW_FlowField_Types.f90 @@ -446,354 +446,62 @@ subroutine IfW_FlowField_DestroyUniformFieldType(UniformFieldTypeData, ErrStat, end if end subroutine -subroutine IfW_FlowField_PackUniformFieldType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IfW_FlowField_PackUniformFieldType(RF, Indata) + type(RegFile), intent(inout) :: RF type(UniformFieldType), intent(in) :: InData character(*), parameter :: RoutineName = 'IfW_FlowField_PackUniformFieldType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%RefHeight) - call RegPack(Buf, InData%RefLength) - call RegPack(Buf, InData%DataSize) - call RegPack(Buf, allocated(InData%Time)) - if (allocated(InData%Time)) then - call RegPackBounds(Buf, 1, lbound(InData%Time, kind=B8Ki), ubound(InData%Time, kind=B8Ki)) - call RegPack(Buf, InData%Time) - end if - call RegPack(Buf, allocated(InData%VelH)) - if (allocated(InData%VelH)) then - call RegPackBounds(Buf, 1, lbound(InData%VelH, kind=B8Ki), ubound(InData%VelH, kind=B8Ki)) - call RegPack(Buf, InData%VelH) - end if - call RegPack(Buf, allocated(InData%VelHDot)) - if (allocated(InData%VelHDot)) then - call RegPackBounds(Buf, 1, lbound(InData%VelHDot, kind=B8Ki), ubound(InData%VelHDot, kind=B8Ki)) - call RegPack(Buf, InData%VelHDot) - end if - call RegPack(Buf, allocated(InData%VelV)) - if (allocated(InData%VelV)) then - call RegPackBounds(Buf, 1, lbound(InData%VelV, kind=B8Ki), ubound(InData%VelV, kind=B8Ki)) - call RegPack(Buf, InData%VelV) - end if - call RegPack(Buf, allocated(InData%VelVDot)) - if (allocated(InData%VelVDot)) then - call RegPackBounds(Buf, 1, lbound(InData%VelVDot, kind=B8Ki), ubound(InData%VelVDot, kind=B8Ki)) - call RegPack(Buf, InData%VelVDot) - end if - call RegPack(Buf, allocated(InData%VelGust)) - if (allocated(InData%VelGust)) then - call RegPackBounds(Buf, 1, lbound(InData%VelGust, kind=B8Ki), ubound(InData%VelGust, kind=B8Ki)) - call RegPack(Buf, InData%VelGust) - end if - call RegPack(Buf, allocated(InData%VelGustDot)) - if (allocated(InData%VelGustDot)) then - call RegPackBounds(Buf, 1, lbound(InData%VelGustDot, kind=B8Ki), ubound(InData%VelGustDot, kind=B8Ki)) - call RegPack(Buf, InData%VelGustDot) - end if - call RegPack(Buf, allocated(InData%AngleH)) - if (allocated(InData%AngleH)) then - call RegPackBounds(Buf, 1, lbound(InData%AngleH, kind=B8Ki), ubound(InData%AngleH, kind=B8Ki)) - call RegPack(Buf, InData%AngleH) - end if - call RegPack(Buf, allocated(InData%AngleHDot)) - if (allocated(InData%AngleHDot)) then - call RegPackBounds(Buf, 1, lbound(InData%AngleHDot, kind=B8Ki), ubound(InData%AngleHDot, kind=B8Ki)) - call RegPack(Buf, InData%AngleHDot) - end if - call RegPack(Buf, allocated(InData%AngleV)) - if (allocated(InData%AngleV)) then - call RegPackBounds(Buf, 1, lbound(InData%AngleV, kind=B8Ki), ubound(InData%AngleV, kind=B8Ki)) - call RegPack(Buf, InData%AngleV) - end if - call RegPack(Buf, allocated(InData%AngleVDot)) - if (allocated(InData%AngleVDot)) then - call RegPackBounds(Buf, 1, lbound(InData%AngleVDot, kind=B8Ki), ubound(InData%AngleVDot, kind=B8Ki)) - call RegPack(Buf, InData%AngleVDot) - end if - call RegPack(Buf, allocated(InData%ShrH)) - if (allocated(InData%ShrH)) then - call RegPackBounds(Buf, 1, lbound(InData%ShrH, kind=B8Ki), ubound(InData%ShrH, kind=B8Ki)) - call RegPack(Buf, InData%ShrH) - end if - call RegPack(Buf, allocated(InData%ShrHDot)) - if (allocated(InData%ShrHDot)) then - call RegPackBounds(Buf, 1, lbound(InData%ShrHDot, kind=B8Ki), ubound(InData%ShrHDot, kind=B8Ki)) - call RegPack(Buf, InData%ShrHDot) - end if - call RegPack(Buf, allocated(InData%ShrV)) - if (allocated(InData%ShrV)) then - call RegPackBounds(Buf, 1, lbound(InData%ShrV, kind=B8Ki), ubound(InData%ShrV, kind=B8Ki)) - call RegPack(Buf, InData%ShrV) - end if - call RegPack(Buf, allocated(InData%ShrVDot)) - if (allocated(InData%ShrVDot)) then - call RegPackBounds(Buf, 1, lbound(InData%ShrVDot, kind=B8Ki), ubound(InData%ShrVDot, kind=B8Ki)) - call RegPack(Buf, InData%ShrVDot) - end if - call RegPack(Buf, allocated(InData%LinShrV)) - if (allocated(InData%LinShrV)) then - call RegPackBounds(Buf, 1, lbound(InData%LinShrV, kind=B8Ki), ubound(InData%LinShrV, kind=B8Ki)) - call RegPack(Buf, InData%LinShrV) - end if - call RegPack(Buf, allocated(InData%LinShrVDot)) - if (allocated(InData%LinShrVDot)) then - call RegPackBounds(Buf, 1, lbound(InData%LinShrVDot, kind=B8Ki), ubound(InData%LinShrVDot, kind=B8Ki)) - call RegPack(Buf, InData%LinShrVDot) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%RefHeight) + call RegPack(RF, InData%RefLength) + call RegPack(RF, InData%DataSize) + call RegPackAlloc(RF, InData%Time) + call RegPackAlloc(RF, InData%VelH) + call RegPackAlloc(RF, InData%VelHDot) + call RegPackAlloc(RF, InData%VelV) + call RegPackAlloc(RF, InData%VelVDot) + call RegPackAlloc(RF, InData%VelGust) + call RegPackAlloc(RF, InData%VelGustDot) + call RegPackAlloc(RF, InData%AngleH) + call RegPackAlloc(RF, InData%AngleHDot) + call RegPackAlloc(RF, InData%AngleV) + call RegPackAlloc(RF, InData%AngleVDot) + call RegPackAlloc(RF, InData%ShrH) + call RegPackAlloc(RF, InData%ShrHDot) + call RegPackAlloc(RF, InData%ShrV) + call RegPackAlloc(RF, InData%ShrVDot) + call RegPackAlloc(RF, InData%LinShrV) + call RegPackAlloc(RF, InData%LinShrVDot) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IfW_FlowField_UnPackUniformFieldType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IfW_FlowField_UnPackUniformFieldType(RF, OutData) + type(RegFile), intent(inout) :: RF type(UniformFieldType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IfW_FlowField_UnPackUniformFieldType' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%RefHeight) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RefLength) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DataSize) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Time)) deallocate(OutData%Time) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Time(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Time.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Time) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%VelH)) deallocate(OutData%VelH) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%VelH(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VelH.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%VelH) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%VelHDot)) deallocate(OutData%VelHDot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%VelHDot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VelHDot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%VelHDot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%VelV)) deallocate(OutData%VelV) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%VelV(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VelV.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%VelV) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%VelVDot)) deallocate(OutData%VelVDot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%VelVDot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VelVDot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%VelVDot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%VelGust)) deallocate(OutData%VelGust) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%VelGust(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VelGust.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%VelGust) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%VelGustDot)) deallocate(OutData%VelGustDot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%VelGustDot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VelGustDot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%VelGustDot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AngleH)) deallocate(OutData%AngleH) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AngleH(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AngleH.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AngleH) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AngleHDot)) deallocate(OutData%AngleHDot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AngleHDot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AngleHDot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AngleHDot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AngleV)) deallocate(OutData%AngleV) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AngleV(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AngleV.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AngleV) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AngleVDot)) deallocate(OutData%AngleVDot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AngleVDot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AngleVDot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AngleVDot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ShrH)) deallocate(OutData%ShrH) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ShrH(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ShrH.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ShrH) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ShrHDot)) deallocate(OutData%ShrHDot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ShrHDot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ShrHDot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ShrHDot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ShrV)) deallocate(OutData%ShrV) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ShrV(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ShrV.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ShrV) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ShrVDot)) deallocate(OutData%ShrVDot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ShrVDot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ShrVDot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ShrVDot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinShrV)) deallocate(OutData%LinShrV) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinShrV(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinShrV.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinShrV) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinShrVDot)) deallocate(OutData%LinShrVDot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinShrVDot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinShrVDot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinShrVDot) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%RefHeight); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RefLength); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DataSize); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Time); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%VelH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%VelHDot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%VelV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%VelVDot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%VelGust); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%VelGustDot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AngleH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AngleHDot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AngleV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AngleVDot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ShrH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ShrHDot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ShrV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ShrVDot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinShrV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinShrVDot); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IfW_FlowField_CopyUniformField_Interp(SrcUniformField_InterpData, DstUniformField_InterpData, CtrlCode, ErrStat, ErrMsg) @@ -836,79 +544,59 @@ subroutine IfW_FlowField_DestroyUniformField_Interp(UniformField_InterpData, Err ErrMsg = '' end subroutine -subroutine IfW_FlowField_PackUniformField_Interp(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IfW_FlowField_PackUniformField_Interp(RF, Indata) + type(RegFile), intent(inout) :: RF type(UniformField_Interp), intent(in) :: InData character(*), parameter :: RoutineName = 'IfW_FlowField_PackUniformField_Interp' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%VelH) - call RegPack(Buf, InData%VelHDot) - call RegPack(Buf, InData%VelV) - call RegPack(Buf, InData%VelVDot) - call RegPack(Buf, InData%VelGust) - call RegPack(Buf, InData%VelGustDot) - call RegPack(Buf, InData%AngleH) - call RegPack(Buf, InData%AngleHDot) - call RegPack(Buf, InData%AngleV) - call RegPack(Buf, InData%AngleVDot) - call RegPack(Buf, InData%ShrH) - call RegPack(Buf, InData%ShrHDot) - call RegPack(Buf, InData%ShrV) - call RegPack(Buf, InData%ShrVDot) - call RegPack(Buf, InData%LinShrV) - call RegPack(Buf, InData%LinShrVDot) - call RegPack(Buf, InData%CosAngleH) - call RegPack(Buf, InData%SinAngleH) - call RegPack(Buf, InData%CosAngleV) - call RegPack(Buf, InData%SinAngleV) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%VelH) + call RegPack(RF, InData%VelHDot) + call RegPack(RF, InData%VelV) + call RegPack(RF, InData%VelVDot) + call RegPack(RF, InData%VelGust) + call RegPack(RF, InData%VelGustDot) + call RegPack(RF, InData%AngleH) + call RegPack(RF, InData%AngleHDot) + call RegPack(RF, InData%AngleV) + call RegPack(RF, InData%AngleVDot) + call RegPack(RF, InData%ShrH) + call RegPack(RF, InData%ShrHDot) + call RegPack(RF, InData%ShrV) + call RegPack(RF, InData%ShrVDot) + call RegPack(RF, InData%LinShrV) + call RegPack(RF, InData%LinShrVDot) + call RegPack(RF, InData%CosAngleH) + call RegPack(RF, InData%SinAngleH) + call RegPack(RF, InData%CosAngleV) + call RegPack(RF, InData%SinAngleV) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IfW_FlowField_UnPackUniformField_Interp(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IfW_FlowField_UnPackUniformField_Interp(RF, OutData) + type(RegFile), intent(inout) :: RF type(UniformField_Interp), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IfW_FlowField_UnPackUniformField_Interp' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%VelH) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VelHDot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VelV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VelVDot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VelGust) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VelGustDot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AngleH) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AngleHDot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AngleV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AngleVDot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ShrH) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ShrHDot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ShrV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ShrVDot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinShrV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinShrVDot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CosAngleH) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SinAngleH) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CosAngleV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SinAngleV) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%VelH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VelHDot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VelV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VelVDot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VelGust); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VelGustDot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngleH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngleHDot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngleV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AngleVDot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ShrH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ShrHDot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ShrV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ShrVDot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinShrV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinShrVDot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CosAngleH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SinAngleH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CosAngleV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SinAngleV); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IfW_FlowField_CopyGrid3DFieldType(SrcGrid3DFieldTypeData, DstGrid3DFieldTypeData, CtrlCode, ErrStat, ErrMsg) @@ -1052,223 +740,92 @@ subroutine IfW_FlowField_DestroyGrid3DFieldType(Grid3DFieldTypeData, ErrStat, Er end if end subroutine -subroutine IfW_FlowField_PackGrid3DFieldType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IfW_FlowField_PackGrid3DFieldType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Grid3DFieldType), intent(in) :: InData character(*), parameter :: RoutineName = 'IfW_FlowField_PackGrid3DFieldType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%WindFileFormat) - call RegPack(Buf, InData%WindProfileType) - call RegPack(Buf, InData%Periodic) - call RegPack(Buf, InData%InterpTower) - call RegPack(Buf, InData%AddMeanAfterInterp) - call RegPack(Buf, InData%RefHeight) - call RegPack(Buf, InData%RefLength) - call RegPack(Buf, allocated(InData%Vel)) - if (allocated(InData%Vel)) then - call RegPackBounds(Buf, 4, lbound(InData%Vel, kind=B8Ki), ubound(InData%Vel, kind=B8Ki)) - call RegPack(Buf, InData%Vel) - end if - call RegPack(Buf, allocated(InData%Acc)) - if (allocated(InData%Acc)) then - call RegPackBounds(Buf, 4, lbound(InData%Acc, kind=B8Ki), ubound(InData%Acc, kind=B8Ki)) - call RegPack(Buf, InData%Acc) - end if - call RegPack(Buf, allocated(InData%VelTower)) - if (allocated(InData%VelTower)) then - call RegPackBounds(Buf, 3, lbound(InData%VelTower, kind=B8Ki), ubound(InData%VelTower, kind=B8Ki)) - call RegPack(Buf, InData%VelTower) - end if - call RegPack(Buf, allocated(InData%AccTower)) - if (allocated(InData%AccTower)) then - call RegPackBounds(Buf, 3, lbound(InData%AccTower, kind=B8Ki), ubound(InData%AccTower, kind=B8Ki)) - call RegPack(Buf, InData%AccTower) - end if - call RegPack(Buf, allocated(InData%VelAvg)) - if (allocated(InData%VelAvg)) then - call RegPackBounds(Buf, 3, lbound(InData%VelAvg, kind=B8Ki), ubound(InData%VelAvg, kind=B8Ki)) - call RegPack(Buf, InData%VelAvg) - end if - call RegPack(Buf, allocated(InData%AccAvg)) - if (allocated(InData%AccAvg)) then - call RegPackBounds(Buf, 3, lbound(InData%AccAvg, kind=B8Ki), ubound(InData%AccAvg, kind=B8Ki)) - call RegPack(Buf, InData%AccAvg) - end if - call RegPack(Buf, InData%DTime) - call RegPack(Buf, InData%Rate) - call RegPack(Buf, InData%YHWid) - call RegPack(Buf, InData%ZHWid) - call RegPack(Buf, InData%GridBase) - call RegPack(Buf, InData%InitXPosition) - call RegPack(Buf, InData%InvDY) - call RegPack(Buf, InData%InvDZ) - call RegPack(Buf, InData%MeanWS) - call RegPack(Buf, InData%InvMWS) - call RegPack(Buf, InData%TotalTime) - call RegPack(Buf, InData%NComp) - call RegPack(Buf, InData%NYGrids) - call RegPack(Buf, InData%NZGrids) - call RegPack(Buf, InData%NTGrids) - call RegPack(Buf, InData%NSteps) - call RegPack(Buf, InData%PLExp) - call RegPack(Buf, InData%Z0) - call RegPack(Buf, InData%VLinShr) - call RegPack(Buf, InData%HLinShr) - call RegPack(Buf, InData%BoxExceedAllow) - call RegPack(Buf, InData%BoxExceedAllowDrv) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%WindFileFormat) + call RegPack(RF, InData%WindProfileType) + call RegPack(RF, InData%Periodic) + call RegPack(RF, InData%InterpTower) + call RegPack(RF, InData%AddMeanAfterInterp) + call RegPack(RF, InData%RefHeight) + call RegPack(RF, InData%RefLength) + call RegPackAlloc(RF, InData%Vel) + call RegPackAlloc(RF, InData%Acc) + call RegPackAlloc(RF, InData%VelTower) + call RegPackAlloc(RF, InData%AccTower) + call RegPackAlloc(RF, InData%VelAvg) + call RegPackAlloc(RF, InData%AccAvg) + call RegPack(RF, InData%DTime) + call RegPack(RF, InData%Rate) + call RegPack(RF, InData%YHWid) + call RegPack(RF, InData%ZHWid) + call RegPack(RF, InData%GridBase) + call RegPack(RF, InData%InitXPosition) + call RegPack(RF, InData%InvDY) + call RegPack(RF, InData%InvDZ) + call RegPack(RF, InData%MeanWS) + call RegPack(RF, InData%InvMWS) + call RegPack(RF, InData%TotalTime) + call RegPack(RF, InData%NComp) + call RegPack(RF, InData%NYGrids) + call RegPack(RF, InData%NZGrids) + call RegPack(RF, InData%NTGrids) + call RegPack(RF, InData%NSteps) + call RegPack(RF, InData%PLExp) + call RegPack(RF, InData%Z0) + call RegPack(RF, InData%VLinShr) + call RegPack(RF, InData%HLinShr) + call RegPack(RF, InData%BoxExceedAllow) + call RegPack(RF, InData%BoxExceedAllowDrv) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IfW_FlowField_UnPackGrid3DFieldType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IfW_FlowField_UnPackGrid3DFieldType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Grid3DFieldType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IfW_FlowField_UnPackGrid3DFieldType' integer(B8Ki) :: LB(4), UB(4) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%WindFileFormat) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WindProfileType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Periodic) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InterpTower) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AddMeanAfterInterp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RefHeight) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RefLength) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Vel)) deallocate(OutData%Vel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vel(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vel) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Acc)) deallocate(OutData%Acc) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Acc(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Acc.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Acc) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%VelTower)) deallocate(OutData%VelTower) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%VelTower(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VelTower.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%VelTower) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AccTower)) deallocate(OutData%AccTower) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AccTower(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AccTower.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AccTower) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%VelAvg)) deallocate(OutData%VelAvg) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%VelAvg(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VelAvg.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%VelAvg) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AccAvg)) deallocate(OutData%AccAvg) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AccAvg(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AccAvg.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AccAvg) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%DTime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Rate) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YHWid) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ZHWid) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GridBase) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InitXPosition) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InvDY) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InvDZ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MeanWS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InvMWS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TotalTime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NComp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NYGrids) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NZGrids) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NTGrids) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NSteps) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PLExp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Z0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VLinShr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HLinShr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BoxExceedAllow) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BoxExceedAllowDrv) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%WindFileFormat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WindProfileType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Periodic); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InterpTower); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AddMeanAfterInterp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RefHeight); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RefLength); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Acc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%VelTower); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AccTower); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%VelAvg); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AccAvg); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Rate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YHWid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ZHWid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GridBase); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InitXPosition); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InvDY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InvDZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MeanWS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InvMWS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TotalTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NComp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NYGrids); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NZGrids); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NTGrids); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NSteps); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PLExp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Z0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VLinShr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HLinShr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BoxExceedAllow); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BoxExceedAllowDrv); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IfW_FlowField_CopyGrid4DFieldType(SrcGrid4DFieldTypeData, DstGrid4DFieldTypeData, CtrlCode, ErrStat, ErrMsg) @@ -1300,30 +857,23 @@ subroutine IfW_FlowField_DestroyGrid4DFieldType(Grid4DFieldTypeData, ErrStat, Er nullify(Grid4DFieldTypeData%Vel) end subroutine -subroutine IfW_FlowField_PackGrid4DFieldType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IfW_FlowField_PackGrid4DFieldType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Grid4DFieldType), intent(in) :: InData character(*), parameter :: RoutineName = 'IfW_FlowField_PackGrid4DFieldType' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%n) - call RegPack(Buf, InData%delta) - call RegPack(Buf, InData%pZero) - call RegPack(Buf, associated(InData%Vel)) - if (associated(InData%Vel)) then - call RegPackBounds(Buf, 5, lbound(InData%Vel, kind=B8Ki), ubound(InData%Vel, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%Vel), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%Vel) - end if - end if - call RegPack(Buf, InData%TimeStart) - call RegPack(Buf, InData%RefHeight) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%n) + call RegPack(RF, InData%delta) + call RegPack(RF, InData%pZero) + call RegPackPtr(RF, InData%Vel) + call RegPack(RF, InData%TimeStart) + call RegPack(RF, InData%RefHeight) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IfW_FlowField_UnPackGrid4DFieldType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IfW_FlowField_UnPackGrid4DFieldType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Grid4DFieldType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IfW_FlowField_UnPackGrid4DFieldType' integer(B8Ki) :: LB(5), UB(5) @@ -1331,41 +881,13 @@ subroutine IfW_FlowField_UnPackGrid4DFieldType(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%n) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%delta) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pZero) - if (RegCheckErr(Buf, RoutineName)) return - if (associated(OutData%Vel)) deallocate(OutData%Vel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 5, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%Vel, UB(1:5)-LB(1:5)) - OutData%Vel(LB(1):,LB(2):,LB(3):,LB(4):,LB(5):) => OutData%Vel - else - allocate(OutData%Vel(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%Vel) - call RegUnpack(Buf, OutData%Vel) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%Vel => null() - end if - call RegUnpack(Buf, OutData%TimeStart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RefHeight) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%delta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pZero); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%Vel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TimeStart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RefHeight); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IfW_FlowField_CopyPointsFieldType(SrcPointsFieldTypeData, DstPointsFieldTypeData, CtrlCode, ErrStat, ErrMsg) @@ -1405,41 +927,24 @@ subroutine IfW_FlowField_DestroyPointsFieldType(PointsFieldTypeData, ErrStat, Er end if end subroutine -subroutine IfW_FlowField_PackPointsFieldType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IfW_FlowField_PackPointsFieldType(RF, Indata) + type(RegFile), intent(inout) :: RF type(PointsFieldType), intent(in) :: InData character(*), parameter :: RoutineName = 'IfW_FlowField_PackPointsFieldType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Vel)) - if (allocated(InData%Vel)) then - call RegPackBounds(Buf, 2, lbound(InData%Vel, kind=B8Ki), ubound(InData%Vel, kind=B8Ki)) - call RegPack(Buf, InData%Vel) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%Vel) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IfW_FlowField_UnPackPointsFieldType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IfW_FlowField_UnPackPointsFieldType(RF, OutData) + type(RegFile), intent(inout) :: RF type(PointsFieldType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IfW_FlowField_UnPackPointsFieldType' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%Vel)) deallocate(OutData%Vel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vel(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vel) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%Vel); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IfW_FlowField_CopyUserFieldType(SrcUserFieldTypeData, DstUserFieldTypeData, CtrlCode, ErrStat, ErrMsg) @@ -1463,22 +968,21 @@ subroutine IfW_FlowField_DestroyUserFieldType(UserFieldTypeData, ErrStat, ErrMsg ErrMsg = '' end subroutine -subroutine IfW_FlowField_PackUserFieldType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IfW_FlowField_PackUserFieldType(RF, Indata) + type(RegFile), intent(inout) :: RF type(UserFieldType), intent(in) :: InData character(*), parameter :: RoutineName = 'IfW_FlowField_PackUserFieldType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%RefHeight) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%RefHeight) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IfW_FlowField_UnPackUserFieldType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IfW_FlowField_UnPackUserFieldType(RF, OutData) + type(RegFile), intent(inout) :: RF type(UserFieldType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IfW_FlowField_UnPackUserFieldType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%RefHeight) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%RefHeight); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine IfW_FlowField_CopyFlowFieldType(SrcFlowFieldTypeData, DstFlowFieldTypeData, CtrlCode, ErrStat, ErrMsg) @@ -1539,56 +1043,47 @@ subroutine IfW_FlowField_DestroyFlowFieldType(FlowFieldTypeData, ErrStat, ErrMsg call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine IfW_FlowField_PackFlowFieldType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine IfW_FlowField_PackFlowFieldType(RF, Indata) + type(RegFile), intent(inout) :: RF type(FlowFieldType), intent(in) :: InData character(*), parameter :: RoutineName = 'IfW_FlowField_PackFlowFieldType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%FieldType) - call RegPack(Buf, InData%RefPosition) - call RegPack(Buf, InData%PropagationDir) - call RegPack(Buf, InData%VFlowAngle) - call RegPack(Buf, InData%VelInterpCubic) - call RegPack(Buf, InData%RotateWindBox) - call RegPack(Buf, InData%AccFieldValid) - call RegPack(Buf, InData%RotToWind) - call RegPack(Buf, InData%RotFromWind) - call IfW_FlowField_PackUniformFieldType(Buf, InData%Uniform) - call IfW_FlowField_PackGrid3DFieldType(Buf, InData%Grid3D) - call IfW_FlowField_PackGrid4DFieldType(Buf, InData%Grid4D) - call IfW_FlowField_PackPointsFieldType(Buf, InData%Points) - call IfW_FlowField_PackUserFieldType(Buf, InData%User) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%FieldType) + call RegPack(RF, InData%RefPosition) + call RegPack(RF, InData%PropagationDir) + call RegPack(RF, InData%VFlowAngle) + call RegPack(RF, InData%VelInterpCubic) + call RegPack(RF, InData%RotateWindBox) + call RegPack(RF, InData%AccFieldValid) + call RegPack(RF, InData%RotToWind) + call RegPack(RF, InData%RotFromWind) + call IfW_FlowField_PackUniformFieldType(RF, InData%Uniform) + call IfW_FlowField_PackGrid3DFieldType(RF, InData%Grid3D) + call IfW_FlowField_PackGrid4DFieldType(RF, InData%Grid4D) + call IfW_FlowField_PackPointsFieldType(RF, InData%Points) + call IfW_FlowField_PackUserFieldType(RF, InData%User) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine IfW_FlowField_UnPackFlowFieldType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine IfW_FlowField_UnPackFlowFieldType(RF, OutData) + type(RegFile), intent(inout) :: RF type(FlowFieldType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'IfW_FlowField_UnPackFlowFieldType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%FieldType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RefPosition) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PropagationDir) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VFlowAngle) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VelInterpCubic) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotateWindBox) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AccFieldValid) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotToWind) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotFromWind) - if (RegCheckErr(Buf, RoutineName)) return - call IfW_FlowField_UnpackUniformFieldType(Buf, OutData%Uniform) ! Uniform - call IfW_FlowField_UnpackGrid3DFieldType(Buf, OutData%Grid3D) ! Grid3D - call IfW_FlowField_UnpackGrid4DFieldType(Buf, OutData%Grid4D) ! Grid4D - call IfW_FlowField_UnpackPointsFieldType(Buf, OutData%Points) ! Points - call IfW_FlowField_UnpackUserFieldType(Buf, OutData%User) ! User + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%FieldType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RefPosition); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PropagationDir); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VFlowAngle); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VelInterpCubic); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotateWindBox); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AccFieldValid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotToWind); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotFromWind); if (RegCheckErr(RF, RoutineName)) return + call IfW_FlowField_UnpackUniformFieldType(RF, OutData%Uniform) ! Uniform + call IfW_FlowField_UnpackGrid3DFieldType(RF, OutData%Grid3D) ! Grid3D + call IfW_FlowField_UnpackGrid4DFieldType(RF, OutData%Grid4D) ! Grid4D + call IfW_FlowField_UnpackPointsFieldType(RF, OutData%Points) ! Points + call IfW_FlowField_UnpackUserFieldType(RF, OutData%User) ! User end subroutine END MODULE IfW_FlowField_Types !ENDOFREGISTRYGENERATEDFILE diff --git a/modules/inflowwind/src/InflowWind_IO_Types.f90 b/modules/inflowwind/src/InflowWind_IO_Types.f90 index 310d88ebc9..ef7fb7f1f5 100644 --- a/modules/inflowwind/src/InflowWind_IO_Types.f90 +++ b/modules/inflowwind/src/InflowWind_IO_Types.f90 @@ -180,73 +180,55 @@ subroutine InflowWind_IO_DestroyWindFileDat(WindFileDatData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine InflowWind_IO_PackWindFileDat(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_IO_PackWindFileDat(RF, Indata) + type(RegFile), intent(inout) :: RF type(WindFileDat), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_IO_PackWindFileDat' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%FileName) - call RegPack(Buf, InData%WindType) - call RegPack(Buf, InData%RefHt) - call RegPack(Buf, InData%RefHt_Set) - call RegPack(Buf, InData%DT) - call RegPack(Buf, InData%NumTSteps) - call RegPack(Buf, InData%ConstantDT) - call RegPack(Buf, InData%TRange) - call RegPack(Buf, InData%TRange_Limited) - call RegPack(Buf, InData%YRange) - call RegPack(Buf, InData%YRange_Limited) - call RegPack(Buf, InData%ZRange) - call RegPack(Buf, InData%ZRange_Limited) - call RegPack(Buf, InData%BinaryFormat) - call RegPack(Buf, InData%IsBinary) - call RegPack(Buf, InData%TI) - call RegPack(Buf, InData%TI_listed) - call RegPack(Buf, InData%MWS) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine InflowWind_IO_UnPackWindFileDat(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%FileName) + call RegPack(RF, InData%WindType) + call RegPack(RF, InData%RefHt) + call RegPack(RF, InData%RefHt_Set) + call RegPack(RF, InData%DT) + call RegPack(RF, InData%NumTSteps) + call RegPack(RF, InData%ConstantDT) + call RegPack(RF, InData%TRange) + call RegPack(RF, InData%TRange_Limited) + call RegPack(RF, InData%YRange) + call RegPack(RF, InData%YRange_Limited) + call RegPack(RF, InData%ZRange) + call RegPack(RF, InData%ZRange_Limited) + call RegPack(RF, InData%BinaryFormat) + call RegPack(RF, InData%IsBinary) + call RegPack(RF, InData%TI) + call RegPack(RF, InData%TI_listed) + call RegPack(RF, InData%MWS) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine InflowWind_IO_UnPackWindFileDat(RF, OutData) + type(RegFile), intent(inout) :: RF type(WindFileDat), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_IO_UnPackWindFileDat' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%FileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WindType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RefHt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RefHt_Set) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumTSteps) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ConstantDT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TRange) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TRange_Limited) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YRange) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YRange_Limited) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ZRange) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ZRange_Limited) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BinaryFormat) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%IsBinary) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TI) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TI_listed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MWS) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%FileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WindType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RefHt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RefHt_Set); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumTSteps); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ConstantDT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TRange); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TRange_Limited); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YRange); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YRange_Limited); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ZRange); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ZRange_Limited); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BinaryFormat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IsBinary); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TI_listed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MWS); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine InflowWind_IO_CopySteady_InitInputType(SrcSteady_InitInputTypeData, DstSteady_InitInputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -272,28 +254,25 @@ subroutine InflowWind_IO_DestroySteady_InitInputType(Steady_InitInputTypeData, E ErrMsg = '' end subroutine -subroutine InflowWind_IO_PackSteady_InitInputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_IO_PackSteady_InitInputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Steady_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_IO_PackSteady_InitInputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%HWindSpeed) - call RegPack(Buf, InData%RefHt) - call RegPack(Buf, InData%PLExp) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%HWindSpeed) + call RegPack(RF, InData%RefHt) + call RegPack(RF, InData%PLExp) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine InflowWind_IO_UnPackSteady_InitInputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_IO_UnPackSteady_InitInputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Steady_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_IO_UnPackSteady_InitInputType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%HWindSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RefHt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PLExp) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%HWindSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RefHt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PLExp); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine InflowWind_IO_CopyUniform_InitInputType(SrcUniform_InitInputTypeData, DstUniform_InitInputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -330,36 +309,31 @@ subroutine InflowWind_IO_DestroyUniform_InitInputType(Uniform_InitInputTypeData, call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine InflowWind_IO_PackUniform_InitInputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_IO_PackUniform_InitInputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Uniform_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_IO_PackUniform_InitInputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%WindFileName) - call RegPack(Buf, InData%RefHt) - call RegPack(Buf, InData%RefLength) - call RegPack(Buf, InData%PropagationDir) - call RegPack(Buf, InData%UseInputFile) - call NWTC_Library_PackFileInfoType(Buf, InData%PassedFileData) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine InflowWind_IO_UnPackUniform_InitInputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%WindFileName) + call RegPack(RF, InData%RefHt) + call RegPack(RF, InData%RefLength) + call RegPack(RF, InData%PropagationDir) + call RegPack(RF, InData%UseInputFile) + call NWTC_Library_PackFileInfoType(RF, InData%PassedFileData) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine InflowWind_IO_UnPackUniform_InitInputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Uniform_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_IO_UnPackUniform_InitInputType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%WindFileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RefHt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RefLength) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PropagationDir) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UseInputFile) - if (RegCheckErr(Buf, RoutineName)) return - call NWTC_Library_UnpackFileInfoType(Buf, OutData%PassedFileData) ! PassedFileData + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%WindFileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RefHt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RefLength); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PropagationDir); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseInputFile); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackFileInfoType(RF, OutData%PassedFileData) ! PassedFileData end subroutine subroutine InflowWind_IO_CopyGrid3D_InitInputType(SrcGrid3D_InitInputTypeData, DstGrid3D_InitInputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -394,55 +368,43 @@ subroutine InflowWind_IO_DestroyGrid3D_InitInputType(Grid3D_InitInputTypeData, E ErrMsg = '' end subroutine -subroutine InflowWind_IO_PackGrid3D_InitInputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_IO_PackGrid3D_InitInputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Grid3D_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_IO_PackGrid3D_InitInputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%ScaleMethod) - call RegPack(Buf, InData%SF) - call RegPack(Buf, InData%SigmaF) - call RegPack(Buf, InData%WindProfileType) - call RegPack(Buf, InData%RefHt) - call RegPack(Buf, InData%URef) - call RegPack(Buf, InData%PLExp) - call RegPack(Buf, InData%VLinShr) - call RegPack(Buf, InData%HLinShr) - call RegPack(Buf, InData%RefLength) - call RegPack(Buf, InData%Z0) - call RegPack(Buf, InData%XOffset) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine InflowWind_IO_UnPackGrid3D_InitInputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%ScaleMethod) + call RegPack(RF, InData%SF) + call RegPack(RF, InData%SigmaF) + call RegPack(RF, InData%WindProfileType) + call RegPack(RF, InData%RefHt) + call RegPack(RF, InData%URef) + call RegPack(RF, InData%PLExp) + call RegPack(RF, InData%VLinShr) + call RegPack(RF, InData%HLinShr) + call RegPack(RF, InData%RefLength) + call RegPack(RF, InData%Z0) + call RegPack(RF, InData%XOffset) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine InflowWind_IO_UnPackGrid3D_InitInputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Grid3D_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_IO_UnPackGrid3D_InitInputType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%ScaleMethod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SigmaF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WindProfileType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RefHt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%URef) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PLExp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VLinShr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HLinShr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RefLength) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Z0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%XOffset) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%ScaleMethod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SigmaF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WindProfileType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RefHt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%URef); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PLExp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VLinShr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HLinShr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RefLength); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Z0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%XOffset); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine InflowWind_IO_CopyTurbSim_InitInputType(SrcTurbSim_InitInputTypeData, DstTurbSim_InitInputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -466,22 +428,21 @@ subroutine InflowWind_IO_DestroyTurbSim_InitInputType(TurbSim_InitInputTypeData, ErrMsg = '' end subroutine -subroutine InflowWind_IO_PackTurbSim_InitInputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_IO_PackTurbSim_InitInputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(TurbSim_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_IO_PackTurbSim_InitInputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%WindFileName) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%WindFileName) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine InflowWind_IO_UnPackTurbSim_InitInputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_IO_UnPackTurbSim_InitInputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(TurbSim_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_IO_UnPackTurbSim_InitInputType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%WindFileName) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%WindFileName); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine InflowWind_IO_CopyBladed_InitInputType(SrcBladed_InitInputTypeData, DstBladed_InitInputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -510,37 +471,31 @@ subroutine InflowWind_IO_DestroyBladed_InitInputType(Bladed_InitInputTypeData, E ErrMsg = '' end subroutine -subroutine InflowWind_IO_PackBladed_InitInputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_IO_PackBladed_InitInputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Bladed_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_IO_PackBladed_InitInputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%WindFileName) - call RegPack(Buf, InData%WindType) - call RegPack(Buf, InData%NativeBladedFmt) - call RegPack(Buf, InData%TowerFileExist) - call RegPack(Buf, InData%TurbineID) - call RegPack(Buf, InData%FixedWindFileRootName) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine InflowWind_IO_UnPackBladed_InitInputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%WindFileName) + call RegPack(RF, InData%WindType) + call RegPack(RF, InData%NativeBladedFmt) + call RegPack(RF, InData%TowerFileExist) + call RegPack(RF, InData%TurbineID) + call RegPack(RF, InData%FixedWindFileRootName) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine InflowWind_IO_UnPackBladed_InitInputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Bladed_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_IO_UnPackBladed_InitInputType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%WindFileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WindType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NativeBladedFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TowerFileExist) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TurbineID) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FixedWindFileRootName) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%WindFileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WindType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NativeBladedFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TowerFileExist); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TurbineID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FixedWindFileRootName); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine InflowWind_IO_CopyBladed_InitOutputType(SrcBladed_InitOutputTypeData, DstBladed_InitOutputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -565,25 +520,23 @@ subroutine InflowWind_IO_DestroyBladed_InitOutputType(Bladed_InitOutputTypeData, ErrMsg = '' end subroutine -subroutine InflowWind_IO_PackBladed_InitOutputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_IO_PackBladed_InitOutputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Bladed_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_IO_PackBladed_InitOutputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%PropagationDir) - call RegPack(Buf, InData%VFlowAngle) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%PropagationDir) + call RegPack(RF, InData%VFlowAngle) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine InflowWind_IO_UnPackBladed_InitOutputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_IO_UnPackBladed_InitOutputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Bladed_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_IO_UnPackBladed_InitOutputType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%PropagationDir) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VFlowAngle) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%PropagationDir); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VFlowAngle); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine InflowWind_IO_CopyHAWC_InitInputType(SrcHAWC_InitInputTypeData, DstHAWC_InitInputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -622,42 +575,35 @@ subroutine InflowWind_IO_DestroyHAWC_InitInputType(HAWC_InitInputTypeData, ErrSt call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine InflowWind_IO_PackHAWC_InitInputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_IO_PackHAWC_InitInputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(HAWC_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_IO_PackHAWC_InitInputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%WindFileName) - call RegPack(Buf, InData%nx) - call RegPack(Buf, InData%ny) - call RegPack(Buf, InData%nz) - call RegPack(Buf, InData%dx) - call RegPack(Buf, InData%dy) - call RegPack(Buf, InData%dz) - call InflowWind_IO_PackGrid3D_InitInputType(Buf, InData%G3D) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine InflowWind_IO_UnPackHAWC_InitInputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%WindFileName) + call RegPack(RF, InData%nx) + call RegPack(RF, InData%ny) + call RegPack(RF, InData%nz) + call RegPack(RF, InData%dx) + call RegPack(RF, InData%dy) + call RegPack(RF, InData%dz) + call InflowWind_IO_PackGrid3D_InitInputType(RF, InData%G3D) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine InflowWind_IO_UnPackHAWC_InitInputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(HAWC_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_IO_UnPackHAWC_InitInputType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%WindFileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ny) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nz) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dy) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dz) - if (RegCheckErr(Buf, RoutineName)) return - call InflowWind_IO_UnpackGrid3D_InitInputType(Buf, OutData%G3D) ! G3D + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%WindFileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ny); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dy); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dz); if (RegCheckErr(RF, RoutineName)) return + call InflowWind_IO_UnpackGrid3D_InitInputType(RF, OutData%G3D) ! G3D end subroutine subroutine InflowWind_IO_CopyUser_InitInputType(SrcUser_InitInputTypeData, DstUser_InitInputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -681,22 +627,21 @@ subroutine InflowWind_IO_DestroyUser_InitInputType(User_InitInputTypeData, ErrSt ErrMsg = '' end subroutine -subroutine InflowWind_IO_PackUser_InitInputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_IO_PackUser_InitInputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(User_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_IO_PackUser_InitInputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Dummy) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine InflowWind_IO_UnPackUser_InitInputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_IO_UnPackUser_InitInputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(User_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_IO_UnPackUser_InitInputType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Dummy); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine InflowWind_IO_CopyGrid4D_InitInputType(SrcGrid4D_InitInputTypeData, DstGrid4D_InitInputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -726,28 +671,21 @@ subroutine InflowWind_IO_DestroyGrid4D_InitInputType(Grid4D_InitInputTypeData, E nullify(Grid4D_InitInputTypeData%Vel) end subroutine -subroutine InflowWind_IO_PackGrid4D_InitInputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_IO_PackGrid4D_InitInputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Grid4D_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_IO_PackGrid4D_InitInputType' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%n) - call RegPack(Buf, InData%delta) - call RegPack(Buf, InData%pZero) - call RegPack(Buf, associated(InData%Vel)) - if (associated(InData%Vel)) then - call RegPackBounds(Buf, 5, lbound(InData%Vel, kind=B8Ki), ubound(InData%Vel, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%Vel), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%Vel) - end if - end if - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine InflowWind_IO_UnPackGrid4D_InitInputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%n) + call RegPack(RF, InData%delta) + call RegPack(RF, InData%pZero) + call RegPackPtr(RF, InData%Vel) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine InflowWind_IO_UnPackGrid4D_InitInputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Grid4D_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_IO_UnPackGrid4D_InitInputType' integer(B8Ki) :: LB(5), UB(5) @@ -755,37 +693,11 @@ subroutine InflowWind_IO_UnPackGrid4D_InitInputType(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%n) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%delta) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pZero) - if (RegCheckErr(Buf, RoutineName)) return - if (associated(OutData%Vel)) deallocate(OutData%Vel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 5, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%Vel, UB(1:5)-LB(1:5)) - OutData%Vel(LB(1):,LB(2):,LB(3):,LB(4):,LB(5):) => OutData%Vel - else - allocate(OutData%Vel(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%Vel) - call RegUnpack(Buf, OutData%Vel) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%Vel => null() - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%delta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pZero); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%Vel); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine InflowWind_IO_CopyPoints_InitInputType(SrcPoints_InitInputTypeData, DstPoints_InitInputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -809,22 +721,21 @@ subroutine InflowWind_IO_DestroyPoints_InitInputType(Points_InitInputTypeData, E ErrMsg = '' end subroutine -subroutine InflowWind_IO_PackPoints_InitInputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_IO_PackPoints_InitInputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Points_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_IO_PackPoints_InitInputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%NumWindPoints) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%NumWindPoints) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine InflowWind_IO_UnPackPoints_InitInputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_IO_UnPackPoints_InitInputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Points_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_IO_UnPackPoints_InitInputType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%NumWindPoints) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%NumWindPoints); if (RegCheckErr(RF, RoutineName)) return end subroutine END MODULE InflowWind_IO_Types !ENDOFREGISTRYGENERATEDFILE diff --git a/modules/inflowwind/src/InflowWind_Types.f90 b/modules/inflowwind/src/InflowWind_Types.f90 index b637ad8deb..98cd599ab4 100644 --- a/modules/inflowwind/src/InflowWind_Types.f90 +++ b/modules/inflowwind/src/InflowWind_Types.f90 @@ -375,271 +375,114 @@ subroutine InflowWind_DestroyInputFile(InputFileData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine InflowWind_PackInputFile(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_PackInputFile(RF, Indata) + type(RegFile), intent(inout) :: RF type(InflowWind_InputFile), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_PackInputFile' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%EchoFlag) - call RegPack(Buf, InData%WindType) - call RegPack(Buf, InData%PropagationDir) - call RegPack(Buf, InData%VFlowAngle) - call RegPack(Buf, InData%VelInterpCubic) - call RegPack(Buf, InData%NWindVel) - call RegPack(Buf, allocated(InData%WindVxiList)) - if (allocated(InData%WindVxiList)) then - call RegPackBounds(Buf, 1, lbound(InData%WindVxiList, kind=B8Ki), ubound(InData%WindVxiList, kind=B8Ki)) - call RegPack(Buf, InData%WindVxiList) - end if - call RegPack(Buf, allocated(InData%WindVyiList)) - if (allocated(InData%WindVyiList)) then - call RegPackBounds(Buf, 1, lbound(InData%WindVyiList, kind=B8Ki), ubound(InData%WindVyiList, kind=B8Ki)) - call RegPack(Buf, InData%WindVyiList) - end if - call RegPack(Buf, allocated(InData%WindVziList)) - if (allocated(InData%WindVziList)) then - call RegPackBounds(Buf, 1, lbound(InData%WindVziList, kind=B8Ki), ubound(InData%WindVziList, kind=B8Ki)) - call RegPack(Buf, InData%WindVziList) - end if - call RegPack(Buf, InData%Steady_HWindSpeed) - call RegPack(Buf, InData%Steady_RefHt) - call RegPack(Buf, InData%Steady_PLexp) - call RegPack(Buf, InData%Uniform_FileName) - call RegPack(Buf, InData%Uniform_RefHt) - call RegPack(Buf, InData%Uniform_RefLength) - call RegPack(Buf, InData%TSFF_FileName) - call RegPack(Buf, InData%BladedFF_FileName) - call RegPack(Buf, InData%BladedFF_TowerFile) - call RegPack(Buf, InData%CTTS_CoherentTurb) - call RegPack(Buf, InData%CTTS_FileName) - call RegPack(Buf, InData%CTTS_Path) - call RegPack(Buf, InData%HAWC_FileName_u) - call RegPack(Buf, InData%HAWC_FileName_v) - call RegPack(Buf, InData%HAWC_FileName_w) - call RegPack(Buf, InData%HAWC_nx) - call RegPack(Buf, InData%HAWC_ny) - call RegPack(Buf, InData%HAWC_nz) - call RegPack(Buf, InData%HAWC_dx) - call RegPack(Buf, InData%HAWC_dy) - call RegPack(Buf, InData%HAWC_dz) - call RegPack(Buf, InData%SumPrint) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, allocated(InData%OutList)) - if (allocated(InData%OutList)) then - call RegPackBounds(Buf, 1, lbound(InData%OutList, kind=B8Ki), ubound(InData%OutList, kind=B8Ki)) - call RegPack(Buf, InData%OutList) - end if - call RegPack(Buf, InData%SensorType) - call RegPack(Buf, InData%NumBeam) - call RegPack(Buf, InData%NumPulseGate) - call RegPack(Buf, InData%RotorApexOffsetPos) - call RegPack(Buf, allocated(InData%FocalDistanceX)) - if (allocated(InData%FocalDistanceX)) then - call RegPackBounds(Buf, 1, lbound(InData%FocalDistanceX, kind=B8Ki), ubound(InData%FocalDistanceX, kind=B8Ki)) - call RegPack(Buf, InData%FocalDistanceX) - end if - call RegPack(Buf, allocated(InData%FocalDistanceY)) - if (allocated(InData%FocalDistanceY)) then - call RegPackBounds(Buf, 1, lbound(InData%FocalDistanceY, kind=B8Ki), ubound(InData%FocalDistanceY, kind=B8Ki)) - call RegPack(Buf, InData%FocalDistanceY) - end if - call RegPack(Buf, allocated(InData%FocalDistanceZ)) - if (allocated(InData%FocalDistanceZ)) then - call RegPackBounds(Buf, 1, lbound(InData%FocalDistanceZ, kind=B8Ki), ubound(InData%FocalDistanceZ, kind=B8Ki)) - call RegPack(Buf, InData%FocalDistanceZ) - end if - call RegPack(Buf, InData%PulseSpacing) - call RegPack(Buf, InData%MeasurementInterval) - call RegPack(Buf, InData%URefLid) - call RegPack(Buf, InData%LidRadialVel) - call RegPack(Buf, InData%ConsiderHubMotion) - call InflowWind_IO_PackGrid3D_InitInputType(Buf, InData%FF) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%EchoFlag) + call RegPack(RF, InData%WindType) + call RegPack(RF, InData%PropagationDir) + call RegPack(RF, InData%VFlowAngle) + call RegPack(RF, InData%VelInterpCubic) + call RegPack(RF, InData%NWindVel) + call RegPackAlloc(RF, InData%WindVxiList) + call RegPackAlloc(RF, InData%WindVyiList) + call RegPackAlloc(RF, InData%WindVziList) + call RegPack(RF, InData%Steady_HWindSpeed) + call RegPack(RF, InData%Steady_RefHt) + call RegPack(RF, InData%Steady_PLexp) + call RegPack(RF, InData%Uniform_FileName) + call RegPack(RF, InData%Uniform_RefHt) + call RegPack(RF, InData%Uniform_RefLength) + call RegPack(RF, InData%TSFF_FileName) + call RegPack(RF, InData%BladedFF_FileName) + call RegPack(RF, InData%BladedFF_TowerFile) + call RegPack(RF, InData%CTTS_CoherentTurb) + call RegPack(RF, InData%CTTS_FileName) + call RegPack(RF, InData%CTTS_Path) + call RegPack(RF, InData%HAWC_FileName_u) + call RegPack(RF, InData%HAWC_FileName_v) + call RegPack(RF, InData%HAWC_FileName_w) + call RegPack(RF, InData%HAWC_nx) + call RegPack(RF, InData%HAWC_ny) + call RegPack(RF, InData%HAWC_nz) + call RegPack(RF, InData%HAWC_dx) + call RegPack(RF, InData%HAWC_dy) + call RegPack(RF, InData%HAWC_dz) + call RegPack(RF, InData%SumPrint) + call RegPack(RF, InData%NumOuts) + call RegPackAlloc(RF, InData%OutList) + call RegPack(RF, InData%SensorType) + call RegPack(RF, InData%NumBeam) + call RegPack(RF, InData%NumPulseGate) + call RegPack(RF, InData%RotorApexOffsetPos) + call RegPackAlloc(RF, InData%FocalDistanceX) + call RegPackAlloc(RF, InData%FocalDistanceY) + call RegPackAlloc(RF, InData%FocalDistanceZ) + call RegPack(RF, InData%PulseSpacing) + call RegPack(RF, InData%MeasurementInterval) + call RegPack(RF, InData%URefLid) + call RegPack(RF, InData%LidRadialVel) + call RegPack(RF, InData%ConsiderHubMotion) + call InflowWind_IO_PackGrid3D_InitInputType(RF, InData%FF) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine InflowWind_UnPackInputFile(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_UnPackInputFile(RF, OutData) + type(RegFile), intent(inout) :: RF type(InflowWind_InputFile), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_UnPackInputFile' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%EchoFlag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WindType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PropagationDir) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VFlowAngle) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VelInterpCubic) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NWindVel) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WindVxiList)) deallocate(OutData%WindVxiList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WindVxiList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WindVxiList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WindVxiList) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WindVyiList)) deallocate(OutData%WindVyiList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WindVyiList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WindVyiList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WindVyiList) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WindVziList)) deallocate(OutData%WindVziList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WindVziList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WindVziList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WindVziList) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Steady_HWindSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Steady_RefHt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Steady_PLexp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Uniform_FileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Uniform_RefHt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Uniform_RefLength) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TSFF_FileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BladedFF_FileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BladedFF_TowerFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CTTS_CoherentTurb) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CTTS_FileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CTTS_Path) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HAWC_FileName_u) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HAWC_FileName_v) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HAWC_FileName_w) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HAWC_nx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HAWC_ny) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HAWC_nz) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HAWC_dx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HAWC_dy) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HAWC_dz) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SumPrint) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutList)) deallocate(OutData%OutList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutList) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%SensorType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBeam) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumPulseGate) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotorApexOffsetPos) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%FocalDistanceX)) deallocate(OutData%FocalDistanceX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FocalDistanceX(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FocalDistanceX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FocalDistanceX) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FocalDistanceY)) deallocate(OutData%FocalDistanceY) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FocalDistanceY(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FocalDistanceY.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FocalDistanceY) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FocalDistanceZ)) deallocate(OutData%FocalDistanceZ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FocalDistanceZ(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FocalDistanceZ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FocalDistanceZ) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%PulseSpacing) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MeasurementInterval) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%URefLid) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LidRadialVel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ConsiderHubMotion) - if (RegCheckErr(Buf, RoutineName)) return - call InflowWind_IO_UnpackGrid3D_InitInputType(Buf, OutData%FF) ! FF + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%EchoFlag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WindType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PropagationDir); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VFlowAngle); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VelInterpCubic); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NWindVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WindVxiList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WindVyiList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WindVziList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Steady_HWindSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Steady_RefHt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Steady_PLexp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Uniform_FileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Uniform_RefHt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Uniform_RefLength); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TSFF_FileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BladedFF_FileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BladedFF_TowerFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CTTS_CoherentTurb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CTTS_FileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CTTS_Path); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HAWC_FileName_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HAWC_FileName_v); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HAWC_FileName_w); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HAWC_nx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HAWC_ny); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HAWC_nz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HAWC_dx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HAWC_dy); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HAWC_dz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SumPrint); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SensorType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBeam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumPulseGate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotorApexOffsetPos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FocalDistanceX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FocalDistanceY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FocalDistanceZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PulseSpacing); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MeasurementInterval); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%URefLid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LidRadialVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ConsiderHubMotion); if (RegCheckErr(RF, RoutineName)) return + call InflowWind_IO_UnpackGrid3D_InitInputType(RF, OutData%FF) ! FF end subroutine subroutine InflowWind_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -701,72 +544,57 @@ subroutine InflowWind_DestroyInitInput(InitInputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine InflowWind_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(InflowWind_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%InputFileName) - call RegPack(Buf, InData%Linearize) - call RegPack(Buf, InData%Use4Dext) - call RegPack(Buf, InData%NumWindPoints) - call RegPack(Buf, InData%TurbineID) - call RegPack(Buf, InData%FixedWindFileRootName) - call RegPack(Buf, InData%UseInputFile) - call RegPack(Buf, InData%RootName) - call NWTC_Library_PackFileInfoType(Buf, InData%PassedFileData) - call RegPack(Buf, InData%WindType2UseInputFile) - call NWTC_Library_PackFileInfoType(Buf, InData%WindType2Data) - call RegPack(Buf, InData%OutputAccel) - call Lidar_PackInitInput(Buf, InData%lidar) - call InflowWind_IO_PackGrid4D_InitInputType(Buf, InData%FDext) - call RegPack(Buf, InData%RadAvg) - call RegPack(Buf, InData%MHK) - call RegPack(Buf, InData%WtrDpth) - call RegPack(Buf, InData%MSL2SWL) - call RegPack(Buf, InData%BoxExceedAllow) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%InputFileName) + call RegPack(RF, InData%Linearize) + call RegPack(RF, InData%Use4Dext) + call RegPack(RF, InData%NumWindPoints) + call RegPack(RF, InData%TurbineID) + call RegPack(RF, InData%FixedWindFileRootName) + call RegPack(RF, InData%UseInputFile) + call RegPack(RF, InData%RootName) + call NWTC_Library_PackFileInfoType(RF, InData%PassedFileData) + call RegPack(RF, InData%WindType2UseInputFile) + call NWTC_Library_PackFileInfoType(RF, InData%WindType2Data) + call RegPack(RF, InData%OutputAccel) + call Lidar_PackInitInput(RF, InData%lidar) + call InflowWind_IO_PackGrid4D_InitInputType(RF, InData%FDext) + call RegPack(RF, InData%RadAvg) + call RegPack(RF, InData%MHK) + call RegPack(RF, InData%WtrDpth) + call RegPack(RF, InData%MSL2SWL) + call RegPack(RF, InData%BoxExceedAllow) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine InflowWind_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(InflowWind_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_UnPackInitInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%InputFileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Linearize) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Use4Dext) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumWindPoints) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TurbineID) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FixedWindFileRootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UseInputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call NWTC_Library_UnpackFileInfoType(Buf, OutData%PassedFileData) ! PassedFileData - call RegUnpack(Buf, OutData%WindType2UseInputFile) - if (RegCheckErr(Buf, RoutineName)) return - call NWTC_Library_UnpackFileInfoType(Buf, OutData%WindType2Data) ! WindType2Data - call RegUnpack(Buf, OutData%OutputAccel) - if (RegCheckErr(Buf, RoutineName)) return - call Lidar_UnpackInitInput(Buf, OutData%lidar) ! lidar - call InflowWind_IO_UnpackGrid4D_InitInputType(Buf, OutData%FDext) ! FDext - call RegUnpack(Buf, OutData%RadAvg) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MHK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDpth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MSL2SWL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BoxExceedAllow) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%InputFileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Linearize); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Use4Dext); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumWindPoints); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TurbineID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FixedWindFileRootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseInputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackFileInfoType(RF, OutData%PassedFileData) ! PassedFileData + call RegUnpack(RF, OutData%WindType2UseInputFile); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackFileInfoType(RF, OutData%WindType2Data) ! WindType2Data + call RegUnpack(RF, OutData%OutputAccel); if (RegCheckErr(RF, RoutineName)) return + call Lidar_UnpackInitInput(RF, OutData%lidar) ! lidar + call InflowWind_IO_UnpackGrid4D_InitInputType(RF, OutData%FDext) ! FDext + call RegUnpack(RF, OutData%RadAvg); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MHK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDpth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MSL2SWL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BoxExceedAllow); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine InflowWind_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -911,61 +739,33 @@ subroutine InflowWind_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) nullify(InitOutputData%FlowField) end subroutine -subroutine InflowWind_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(InflowWind_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_PackInitOutput' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call InflowWind_IO_PackWindFileDat(Buf, InData%WindFileInfo) - call RegPack(Buf, allocated(InData%LinNames_y)) - if (allocated(InData%LinNames_y)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_y, kind=B8Ki), ubound(InData%LinNames_y, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_y) - end if - call RegPack(Buf, allocated(InData%LinNames_u)) - if (allocated(InData%LinNames_u)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_u, kind=B8Ki), ubound(InData%LinNames_u, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_u) - end if - call RegPack(Buf, allocated(InData%RotFrame_y)) - if (allocated(InData%RotFrame_y)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_y, kind=B8Ki), ubound(InData%RotFrame_y, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_y) - end if - call RegPack(Buf, allocated(InData%RotFrame_u)) - if (allocated(InData%RotFrame_u)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_u, kind=B8Ki), ubound(InData%RotFrame_u, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_u) - end if - call RegPack(Buf, allocated(InData%IsLoad_u)) - if (allocated(InData%IsLoad_u)) then - call RegPackBounds(Buf, 1, lbound(InData%IsLoad_u, kind=B8Ki), ubound(InData%IsLoad_u, kind=B8Ki)) - call RegPack(Buf, InData%IsLoad_u) - end if - call RegPack(Buf, associated(InData%FlowField)) + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call InflowWind_IO_PackWindFileDat(RF, InData%WindFileInfo) + call RegPackAlloc(RF, InData%LinNames_y) + call RegPackAlloc(RF, InData%LinNames_u) + call RegPackAlloc(RF, InData%RotFrame_y) + call RegPackAlloc(RF, InData%RotFrame_u) + call RegPackAlloc(RF, InData%IsLoad_u) + call RegPack(RF, associated(InData%FlowField)) if (associated(InData%FlowField)) then - call RegPackPointer(Buf, c_loc(InData%FlowField), PtrInIndex) + call RegPackPointer(RF, c_loc(InData%FlowField), PtrInIndex) if (.not. PtrInIndex) then - call IfW_FlowField_PackFlowFieldType(Buf, InData%FlowField) + call IfW_FlowField_PackFlowFieldType(RF, InData%FlowField) end if end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine InflowWind_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(InflowWind_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) @@ -973,123 +773,30 @@ subroutine InflowWind_UnPackInitOutput(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver - call InflowWind_IO_UnpackWindFileDat(Buf, OutData%WindFileInfo) ! WindFileInfo - if (allocated(OutData%LinNames_y)) deallocate(OutData%LinNames_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_u)) deallocate(OutData%LinNames_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_y)) deallocate(OutData%RotFrame_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_u)) deallocate(OutData%RotFrame_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IsLoad_u)) deallocate(OutData%IsLoad_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IsLoad_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IsLoad_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IsLoad_u) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver + call InflowWind_IO_UnpackWindFileDat(RF, OutData%WindFileInfo) ! WindFileInfo + call RegUnpackAlloc(RF, OutData%LinNames_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IsLoad_u); if (RegCheckErr(RF, RoutineName)) return if (associated(OutData%FlowField)) deallocate(OutData%FlowField) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPointer(RF, Ptr, PtrIdx); if (RegCheckErr(RF, RoutineName)) return if (c_associated(Ptr)) then call c_f_pointer(Ptr, OutData%FlowField) else allocate(OutData%FlowField,stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FlowField.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FlowField.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - Buf%Pointers(PtrIdx) = c_loc(OutData%FlowField) - call IfW_FlowField_UnpackFlowFieldType(Buf, OutData%FlowField) ! FlowField + RF%Pointers(PtrIdx) = c_loc(OutData%FlowField) + call IfW_FlowField_UnpackFlowFieldType(RF, OutData%FlowField) ! FlowField end if else OutData%FlowField => null() @@ -1237,61 +944,45 @@ subroutine InflowWind_DestroyParam(ParamData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine InflowWind_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(InflowWind_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_PackParam' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%RootFileName) - call RegPack(Buf, InData%DT) - call RegPack(Buf, allocated(InData%WindViXYZprime)) - if (allocated(InData%WindViXYZprime)) then - call RegPackBounds(Buf, 2, lbound(InData%WindViXYZprime, kind=B8Ki), ubound(InData%WindViXYZprime, kind=B8Ki)) - call RegPack(Buf, InData%WindViXYZprime) - end if - call RegPack(Buf, allocated(InData%WindViXYZ)) - if (allocated(InData%WindViXYZ)) then - call RegPackBounds(Buf, 2, lbound(InData%WindViXYZ, kind=B8Ki), ubound(InData%WindViXYZ, kind=B8Ki)) - call RegPack(Buf, InData%WindViXYZ) - end if - call RegPack(Buf, associated(InData%FlowField)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%RootFileName) + call RegPack(RF, InData%DT) + call RegPackAlloc(RF, InData%WindViXYZprime) + call RegPackAlloc(RF, InData%WindViXYZ) + call RegPack(RF, associated(InData%FlowField)) if (associated(InData%FlowField)) then - call RegPackPointer(Buf, c_loc(InData%FlowField), PtrInIndex) + call RegPackPointer(RF, c_loc(InData%FlowField), PtrInIndex) if (.not. PtrInIndex) then - call IfW_FlowField_PackFlowFieldType(Buf, InData%FlowField) + call IfW_FlowField_PackFlowFieldType(RF, InData%FlowField) end if end if - call RegPack(Buf, allocated(InData%PositionAvg)) - if (allocated(InData%PositionAvg)) then - call RegPackBounds(Buf, 2, lbound(InData%PositionAvg, kind=B8Ki), ubound(InData%PositionAvg, kind=B8Ki)) - call RegPack(Buf, InData%PositionAvg) - end if - call RegPack(Buf, InData%NWindVel) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, allocated(InData%OutParam)) + call RegPackAlloc(RF, InData%PositionAvg) + call RegPack(RF, InData%NWindVel) + call RegPack(RF, InData%NumOuts) + call RegPack(RF, allocated(InData%OutParam)) if (allocated(InData%OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) LB(1:1) = lbound(InData%OutParam, kind=B8Ki) UB(1:1) = ubound(InData%OutParam, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackOutParmType(Buf, InData%OutParam(i1)) + call NWTC_Library_PackOutParmType(RF, InData%OutParam(i1)) end do end if - call RegPack(Buf, allocated(InData%OutParamLinIndx)) - if (allocated(InData%OutParamLinIndx)) then - call RegPackBounds(Buf, 2, lbound(InData%OutParamLinIndx, kind=B8Ki), ubound(InData%OutParamLinIndx, kind=B8Ki)) - call RegPack(Buf, InData%OutParamLinIndx) - end if - call Lidar_PackParam(Buf, InData%lidar) - call RegPack(Buf, InData%OutputAccel) - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%OutParamLinIndx) + call Lidar_PackParam(RF, InData%lidar) + call RegPack(RF, InData%OutputAccel) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine InflowWind_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(InflowWind_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_UnPackParam' integer(B8Ki) :: i1, i2 @@ -1300,109 +991,48 @@ subroutine InflowWind_UnPackParam(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%RootFileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WindViXYZprime)) deallocate(OutData%WindViXYZprime) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WindViXYZprime(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WindViXYZprime.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WindViXYZprime) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WindViXYZ)) deallocate(OutData%WindViXYZ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WindViXYZ(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WindViXYZ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WindViXYZ) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%RootFileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WindViXYZprime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WindViXYZ); if (RegCheckErr(RF, RoutineName)) return if (associated(OutData%FlowField)) deallocate(OutData%FlowField) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPointer(RF, Ptr, PtrIdx); if (RegCheckErr(RF, RoutineName)) return if (c_associated(Ptr)) then call c_f_pointer(Ptr, OutData%FlowField) else allocate(OutData%FlowField,stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FlowField.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FlowField.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - Buf%Pointers(PtrIdx) = c_loc(OutData%FlowField) - call IfW_FlowField_UnpackFlowFieldType(Buf, OutData%FlowField) ! FlowField + RF%Pointers(PtrIdx) = c_loc(OutData%FlowField) + call IfW_FlowField_UnpackFlowFieldType(RF, OutData%FlowField) ! FlowField end if else OutData%FlowField => null() end if - if (allocated(OutData%PositionAvg)) deallocate(OutData%PositionAvg) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PositionAvg(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PositionAvg.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PositionAvg) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NWindVel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PositionAvg); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NWindVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%OutParam)) deallocate(OutData%OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackOutParmType(Buf, OutData%OutParam(i1)) ! OutParam + call NWTC_Library_UnpackOutParmType(RF, OutData%OutParam(i1)) ! OutParam end do end if - if (allocated(OutData%OutParamLinIndx)) deallocate(OutData%OutParamLinIndx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutParamLinIndx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParamLinIndx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutParamLinIndx) - if (RegCheckErr(Buf, RoutineName)) return - end if - call Lidar_UnpackParam(Buf, OutData%lidar) ! lidar - call RegUnpack(Buf, OutData%OutputAccel) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutParamLinIndx); if (RegCheckErr(RF, RoutineName)) return + call Lidar_UnpackParam(RF, OutData%lidar) ! lidar + call RegUnpack(RF, OutData%OutputAccel); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine InflowWind_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -1452,49 +1082,30 @@ subroutine InflowWind_DestroyInput(InputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine InflowWind_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(InflowWind_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%PositionXYZ)) - if (allocated(InData%PositionXYZ)) then - call RegPackBounds(Buf, 2, lbound(InData%PositionXYZ, kind=B8Ki), ubound(InData%PositionXYZ, kind=B8Ki)) - call RegPack(Buf, InData%PositionXYZ) - end if - call Lidar_PackInput(Buf, InData%lidar) - call RegPack(Buf, InData%HubPosition) - call RegPack(Buf, InData%HubOrientation) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%PositionXYZ) + call Lidar_PackInput(RF, InData%lidar) + call RegPack(RF, InData%HubPosition) + call RegPack(RF, InData%HubOrientation) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine InflowWind_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(InflowWind_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_UnPackInput' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%PositionXYZ)) deallocate(OutData%PositionXYZ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PositionXYZ(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PositionXYZ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PositionXYZ) - if (RegCheckErr(Buf, RoutineName)) return - end if - call Lidar_UnpackInput(Buf, OutData%lidar) ! lidar - call RegUnpack(Buf, OutData%HubPosition) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubOrientation) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%PositionXYZ); if (RegCheckErr(RF, RoutineName)) return + call Lidar_UnpackInput(RF, OutData%lidar) ! lidar + call RegUnpack(RF, OutData%HubPosition); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubOrientation); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine InflowWind_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -1574,87 +1185,34 @@ subroutine InflowWind_DestroyOutput(OutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine InflowWind_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(InflowWind_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%VelocityUVW)) - if (allocated(InData%VelocityUVW)) then - call RegPackBounds(Buf, 2, lbound(InData%VelocityUVW, kind=B8Ki), ubound(InData%VelocityUVW, kind=B8Ki)) - call RegPack(Buf, InData%VelocityUVW) - end if - call RegPack(Buf, allocated(InData%AccelUVW)) - if (allocated(InData%AccelUVW)) then - call RegPackBounds(Buf, 2, lbound(InData%AccelUVW, kind=B8Ki), ubound(InData%AccelUVW, kind=B8Ki)) - call RegPack(Buf, InData%AccelUVW) - end if - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - call RegPack(Buf, InData%DiskVel) - call RegPack(Buf, InData%HubVel) - call Lidar_PackOutput(Buf, InData%lidar) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%VelocityUVW) + call RegPackAlloc(RF, InData%AccelUVW) + call RegPackAlloc(RF, InData%WriteOutput) + call RegPack(RF, InData%DiskVel) + call RegPack(RF, InData%HubVel) + call Lidar_PackOutput(RF, InData%lidar) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine InflowWind_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(InflowWind_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_UnPackOutput' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%VelocityUVW)) deallocate(OutData%VelocityUVW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%VelocityUVW(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VelocityUVW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%VelocityUVW) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AccelUVW)) deallocate(OutData%AccelUVW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AccelUVW(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AccelUVW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AccelUVW) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%DiskVel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubVel) - if (RegCheckErr(Buf, RoutineName)) return - call Lidar_UnpackOutput(Buf, OutData%lidar) ! lidar + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%VelocityUVW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AccelUVW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DiskVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubVel); if (RegCheckErr(RF, RoutineName)) return + call Lidar_UnpackOutput(RF, OutData%lidar) ! lidar end subroutine subroutine InflowWind_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -1678,22 +1236,21 @@ subroutine InflowWind_DestroyContState(ContStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine InflowWind_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(InflowWind_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyContState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyContState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine InflowWind_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(InflowWind_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_UnPackContState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyContState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyContState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine InflowWind_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -1717,22 +1274,21 @@ subroutine InflowWind_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine InflowWind_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(InflowWind_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyDiscState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine InflowWind_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(InflowWind_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyDiscState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine InflowWind_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -1756,22 +1312,21 @@ subroutine InflowWind_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine InflowWind_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(InflowWind_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstrState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine InflowWind_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(InflowWind_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstrState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine InflowWind_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -1795,22 +1350,21 @@ subroutine InflowWind_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine InflowWind_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(InflowWind_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyOtherState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyOtherState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine InflowWind_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(InflowWind_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_UnPackOtherState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyOtherState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyOtherState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine InflowWind_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -1903,87 +1457,36 @@ subroutine InflowWind_DestroyMisc(MiscData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine InflowWind_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(InflowWind_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'InflowWind_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%AllOuts)) - if (allocated(InData%AllOuts)) then - call RegPackBounds(Buf, 1, lbound(InData%AllOuts, kind=B8Ki), ubound(InData%AllOuts, kind=B8Ki)) - call RegPack(Buf, InData%AllOuts) - end if - call RegPack(Buf, allocated(InData%WindViUVW)) - if (allocated(InData%WindViUVW)) then - call RegPackBounds(Buf, 2, lbound(InData%WindViUVW, kind=B8Ki), ubound(InData%WindViUVW, kind=B8Ki)) - call RegPack(Buf, InData%WindViUVW) - end if - call RegPack(Buf, allocated(InData%WindAiUVW)) - if (allocated(InData%WindAiUVW)) then - call RegPackBounds(Buf, 2, lbound(InData%WindAiUVW, kind=B8Ki), ubound(InData%WindAiUVW, kind=B8Ki)) - call RegPack(Buf, InData%WindAiUVW) - end if - call InflowWind_PackInput(Buf, InData%u_Avg) - call InflowWind_PackOutput(Buf, InData%y_Avg) - call InflowWind_PackInput(Buf, InData%u_Hub) - call InflowWind_PackOutput(Buf, InData%y_Hub) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%AllOuts) + call RegPackAlloc(RF, InData%WindViUVW) + call RegPackAlloc(RF, InData%WindAiUVW) + call InflowWind_PackInput(RF, InData%u_Avg) + call InflowWind_PackOutput(RF, InData%y_Avg) + call InflowWind_PackInput(RF, InData%u_Hub) + call InflowWind_PackOutput(RF, InData%y_Hub) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine InflowWind_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine InflowWind_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(InflowWind_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'InflowWind_UnPackMisc' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%AllOuts)) deallocate(OutData%AllOuts) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AllOuts(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AllOuts.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AllOuts) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WindViUVW)) deallocate(OutData%WindViUVW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WindViUVW(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WindViUVW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WindViUVW) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WindAiUVW)) deallocate(OutData%WindAiUVW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WindAiUVW(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WindAiUVW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WindAiUVW) - if (RegCheckErr(Buf, RoutineName)) return - end if - call InflowWind_UnpackInput(Buf, OutData%u_Avg) ! u_Avg - call InflowWind_UnpackOutput(Buf, OutData%y_Avg) ! y_Avg - call InflowWind_UnpackInput(Buf, OutData%u_Hub) ! u_Hub - call InflowWind_UnpackOutput(Buf, OutData%y_Hub) ! y_Hub + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%AllOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WindViUVW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WindAiUVW); if (RegCheckErr(RF, RoutineName)) return + call InflowWind_UnpackInput(RF, OutData%u_Avg) ! u_Avg + call InflowWind_UnpackOutput(RF, OutData%y_Avg) ! y_Avg + call InflowWind_UnpackInput(RF, OutData%u_Hub) ! u_Hub + call InflowWind_UnpackOutput(RF, OutData%y_Hub) ! y_Hub end subroutine subroutine InflowWind_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/inflowwind/src/Lidar_Types.f90 b/modules/inflowwind/src/Lidar_Types.f90 index 9c2eb09d1c..bb71c0ad4b 100644 --- a/modules/inflowwind/src/Lidar_Types.f90 +++ b/modules/inflowwind/src/Lidar_Types.f90 @@ -151,37 +151,31 @@ subroutine Lidar_DestroyInitInput(InitInputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Lidar_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Lidar_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Lidar_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%SensorType) - call RegPack(Buf, InData%Tmax) - call RegPack(Buf, InData%RotorApexOffsetPos) - call RegPack(Buf, InData%HubPosition) - call RegPack(Buf, InData%NumPulseGate) - call RegPack(Buf, InData%LidRadialVel) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%SensorType) + call RegPack(RF, InData%Tmax) + call RegPack(RF, InData%RotorApexOffsetPos) + call RegPack(RF, InData%HubPosition) + call RegPack(RF, InData%NumPulseGate) + call RegPack(RF, InData%LidRadialVel) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Lidar_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Lidar_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Lidar_UnPackInitInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%SensorType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Tmax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotorApexOffsetPos) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubPosition) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumPulseGate) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LidRadialVel) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%SensorType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Tmax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotorApexOffsetPos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubPosition); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumPulseGate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LidRadialVel); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Lidar_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -205,22 +199,21 @@ subroutine Lidar_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Lidar_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Lidar_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Lidar_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyInitOut) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyInitOut) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Lidar_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Lidar_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Lidar_UnPackInitOutput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyInitOut) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyInitOut); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Lidar_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -325,158 +318,70 @@ subroutine Lidar_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine Lidar_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(Lidar_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'Lidar_PackParam' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%NumPulseGate) - call RegPack(Buf, InData%RotorApexOffsetPos) - call RegPack(Buf, InData%RayRangeSq) - call RegPack(Buf, InData%SpatialRes) - call RegPack(Buf, InData%SensorType) - call RegPack(Buf, InData%WtFnTrunc) - call RegPack(Buf, InData%PulseRangeOne) - call RegPack(Buf, InData%DeltaP) - call RegPack(Buf, InData%DeltaR) - call RegPack(Buf, InData%r_p) - call RegPack(Buf, InData%LidRadialVel) - call RegPack(Buf, InData%DisplacementLidarX) - call RegPack(Buf, InData%DisplacementLidarY) - call RegPack(Buf, InData%DisplacementLidarZ) - call RegPack(Buf, InData%NumBeam) - call RegPack(Buf, allocated(InData%FocalDistanceX)) - if (allocated(InData%FocalDistanceX)) then - call RegPackBounds(Buf, 1, lbound(InData%FocalDistanceX, kind=B8Ki), ubound(InData%FocalDistanceX, kind=B8Ki)) - call RegPack(Buf, InData%FocalDistanceX) - end if - call RegPack(Buf, allocated(InData%FocalDistanceY)) - if (allocated(InData%FocalDistanceY)) then - call RegPackBounds(Buf, 1, lbound(InData%FocalDistanceY, kind=B8Ki), ubound(InData%FocalDistanceY, kind=B8Ki)) - call RegPack(Buf, InData%FocalDistanceY) - end if - call RegPack(Buf, allocated(InData%FocalDistanceZ)) - if (allocated(InData%FocalDistanceZ)) then - call RegPackBounds(Buf, 1, lbound(InData%FocalDistanceZ, kind=B8Ki), ubound(InData%FocalDistanceZ, kind=B8Ki)) - call RegPack(Buf, InData%FocalDistanceZ) - end if - call RegPack(Buf, allocated(InData%MsrPosition)) - if (allocated(InData%MsrPosition)) then - call RegPackBounds(Buf, 2, lbound(InData%MsrPosition, kind=B8Ki), ubound(InData%MsrPosition, kind=B8Ki)) - call RegPack(Buf, InData%MsrPosition) - end if - call RegPack(Buf, InData%PulseSpacing) - call RegPack(Buf, InData%URefLid) - call RegPack(Buf, InData%ConsiderHubMotion) - call RegPack(Buf, InData%MeasurementInterval) - call RegPack(Buf, InData%LidPosition) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%NumPulseGate) + call RegPack(RF, InData%RotorApexOffsetPos) + call RegPack(RF, InData%RayRangeSq) + call RegPack(RF, InData%SpatialRes) + call RegPack(RF, InData%SensorType) + call RegPack(RF, InData%WtFnTrunc) + call RegPack(RF, InData%PulseRangeOne) + call RegPack(RF, InData%DeltaP) + call RegPack(RF, InData%DeltaR) + call RegPack(RF, InData%r_p) + call RegPack(RF, InData%LidRadialVel) + call RegPack(RF, InData%DisplacementLidarX) + call RegPack(RF, InData%DisplacementLidarY) + call RegPack(RF, InData%DisplacementLidarZ) + call RegPack(RF, InData%NumBeam) + call RegPackAlloc(RF, InData%FocalDistanceX) + call RegPackAlloc(RF, InData%FocalDistanceY) + call RegPackAlloc(RF, InData%FocalDistanceZ) + call RegPackAlloc(RF, InData%MsrPosition) + call RegPack(RF, InData%PulseSpacing) + call RegPack(RF, InData%URefLid) + call RegPack(RF, InData%ConsiderHubMotion) + call RegPack(RF, InData%MeasurementInterval) + call RegPack(RF, InData%LidPosition) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Lidar_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(Lidar_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Lidar_UnPackParam' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%NumPulseGate) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotorApexOffsetPos) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RayRangeSq) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SpatialRes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SensorType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtFnTrunc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PulseRangeOne) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DeltaP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DeltaR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%r_p) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LidRadialVel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DisplacementLidarX) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DisplacementLidarY) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DisplacementLidarZ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBeam) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%FocalDistanceX)) deallocate(OutData%FocalDistanceX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FocalDistanceX(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FocalDistanceX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FocalDistanceX) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FocalDistanceY)) deallocate(OutData%FocalDistanceY) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FocalDistanceY(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FocalDistanceY.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FocalDistanceY) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FocalDistanceZ)) deallocate(OutData%FocalDistanceZ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FocalDistanceZ(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FocalDistanceZ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FocalDistanceZ) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MsrPosition)) deallocate(OutData%MsrPosition) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MsrPosition(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MsrPosition.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MsrPosition) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%PulseSpacing) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%URefLid) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ConsiderHubMotion) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MeasurementInterval) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LidPosition) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%NumPulseGate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotorApexOffsetPos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RayRangeSq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SpatialRes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SensorType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtFnTrunc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PulseRangeOne); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DeltaP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DeltaR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%r_p); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LidRadialVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DisplacementLidarX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DisplacementLidarY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DisplacementLidarZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBeam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FocalDistanceX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FocalDistanceY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FocalDistanceZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MsrPosition); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PulseSpacing); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%URefLid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ConsiderHubMotion); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MeasurementInterval); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LidPosition); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Lidar_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -500,22 +405,21 @@ subroutine Lidar_DestroyContState(ContStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Lidar_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(Lidar_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'Lidar_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyContState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyContState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Lidar_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(Lidar_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Lidar_UnPackContState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyContState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyContState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Lidar_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -539,22 +443,21 @@ subroutine Lidar_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Lidar_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(Lidar_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'Lidar_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyDiscState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Lidar_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(Lidar_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Lidar_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyDiscState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Lidar_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -578,22 +481,21 @@ subroutine Lidar_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Lidar_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(Lidar_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'Lidar_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstrState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Lidar_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(Lidar_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Lidar_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstrState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Lidar_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -617,22 +519,21 @@ subroutine Lidar_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Lidar_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(Lidar_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'Lidar_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyOtherState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyOtherState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Lidar_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(Lidar_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Lidar_UnPackOtherState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyOtherState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyOtherState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Lidar_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -656,22 +557,21 @@ subroutine Lidar_DestroyMisc(MiscData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Lidar_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(Lidar_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'Lidar_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyMiscVar) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyMiscVar) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Lidar_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(Lidar_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Lidar_UnPackMisc' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyMiscVar) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyMiscVar); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Lidar_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -699,34 +599,29 @@ subroutine Lidar_DestroyInput(InputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Lidar_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Lidar_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Lidar_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%PulseLidEl) - call RegPack(Buf, InData%PulseLidAz) - call RegPack(Buf, InData%HubDisplacementX) - call RegPack(Buf, InData%HubDisplacementY) - call RegPack(Buf, InData%HubDisplacementZ) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%PulseLidEl) + call RegPack(RF, InData%PulseLidAz) + call RegPack(RF, InData%HubDisplacementX) + call RegPack(RF, InData%HubDisplacementY) + call RegPack(RF, InData%HubDisplacementZ) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Lidar_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Lidar_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Lidar_UnPackInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%PulseLidEl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PulseLidAz) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubDisplacementX) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubDisplacementY) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubDisplacementZ) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%PulseLidEl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PulseLidAz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubDisplacementX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubDisplacementY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubDisplacementZ); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Lidar_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -826,117 +721,32 @@ subroutine Lidar_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine Lidar_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Lidar_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Lidar_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%LidSpeed)) - if (allocated(InData%LidSpeed)) then - call RegPackBounds(Buf, 1, lbound(InData%LidSpeed, kind=B8Ki), ubound(InData%LidSpeed, kind=B8Ki)) - call RegPack(Buf, InData%LidSpeed) - end if - call RegPack(Buf, allocated(InData%WtTrunc)) - if (allocated(InData%WtTrunc)) then - call RegPackBounds(Buf, 1, lbound(InData%WtTrunc, kind=B8Ki), ubound(InData%WtTrunc, kind=B8Ki)) - call RegPack(Buf, InData%WtTrunc) - end if - call RegPack(Buf, allocated(InData%MsrPositionsX)) - if (allocated(InData%MsrPositionsX)) then - call RegPackBounds(Buf, 1, lbound(InData%MsrPositionsX, kind=B8Ki), ubound(InData%MsrPositionsX, kind=B8Ki)) - call RegPack(Buf, InData%MsrPositionsX) - end if - call RegPack(Buf, allocated(InData%MsrPositionsY)) - if (allocated(InData%MsrPositionsY)) then - call RegPackBounds(Buf, 1, lbound(InData%MsrPositionsY, kind=B8Ki), ubound(InData%MsrPositionsY, kind=B8Ki)) - call RegPack(Buf, InData%MsrPositionsY) - end if - call RegPack(Buf, allocated(InData%MsrPositionsZ)) - if (allocated(InData%MsrPositionsZ)) then - call RegPackBounds(Buf, 1, lbound(InData%MsrPositionsZ, kind=B8Ki), ubound(InData%MsrPositionsZ, kind=B8Ki)) - call RegPack(Buf, InData%MsrPositionsZ) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%LidSpeed) + call RegPackAlloc(RF, InData%WtTrunc) + call RegPackAlloc(RF, InData%MsrPositionsX) + call RegPackAlloc(RF, InData%MsrPositionsY) + call RegPackAlloc(RF, InData%MsrPositionsZ) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Lidar_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Lidar_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Lidar_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Lidar_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%LidSpeed)) deallocate(OutData%LidSpeed) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LidSpeed(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LidSpeed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LidSpeed) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WtTrunc)) deallocate(OutData%WtTrunc) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WtTrunc(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WtTrunc.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WtTrunc) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MsrPositionsX)) deallocate(OutData%MsrPositionsX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MsrPositionsX(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MsrPositionsX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MsrPositionsX) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MsrPositionsY)) deallocate(OutData%MsrPositionsY) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MsrPositionsY(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MsrPositionsY.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MsrPositionsY) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MsrPositionsZ)) deallocate(OutData%MsrPositionsZ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MsrPositionsZ(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MsrPositionsZ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MsrPositionsZ) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%LidSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WtTrunc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MsrPositionsX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MsrPositionsY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MsrPositionsZ); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Lidar_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/map/src/MAP_Fortran_Types.f90 b/modules/map/src/MAP_Fortran_Types.f90 index 25a5ca9be2..76bc63b701 100644 --- a/modules/map/src/MAP_Fortran_Types.f90 +++ b/modules/map/src/MAP_Fortran_Types.f90 @@ -75,22 +75,21 @@ subroutine MAP_Fortran_DestroyLin_InitInputType(Lin_InitInputTypeData, ErrStat, ErrMsg = '' end subroutine -subroutine MAP_Fortran_PackLin_InitInputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_Fortran_PackLin_InitInputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Lin_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'MAP_Fortran_PackLin_InitInputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%linearize) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%linearize) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MAP_Fortran_UnPackLin_InitInputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_Fortran_UnPackLin_InitInputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Lin_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MAP_Fortran_UnPackLin_InitInputType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%linearize) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%linearize); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MAP_Fortran_CopyLin_InitOutputType(SrcLin_InitOutputTypeData, DstLin_InitOutputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -160,79 +159,28 @@ subroutine MAP_Fortran_DestroyLin_InitOutputType(Lin_InitOutputTypeData, ErrStat end if end subroutine -subroutine MAP_Fortran_PackLin_InitOutputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_Fortran_PackLin_InitOutputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Lin_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'MAP_Fortran_PackLin_InitOutputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%LinNames_y)) - if (allocated(InData%LinNames_y)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_y, kind=B8Ki), ubound(InData%LinNames_y, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_y) - end if - call RegPack(Buf, allocated(InData%LinNames_u)) - if (allocated(InData%LinNames_u)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_u, kind=B8Ki), ubound(InData%LinNames_u, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_u) - end if - call RegPack(Buf, allocated(InData%IsLoad_u)) - if (allocated(InData%IsLoad_u)) then - call RegPackBounds(Buf, 1, lbound(InData%IsLoad_u, kind=B8Ki), ubound(InData%IsLoad_u, kind=B8Ki)) - call RegPack(Buf, InData%IsLoad_u) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%LinNames_y) + call RegPackAlloc(RF, InData%LinNames_u) + call RegPackAlloc(RF, InData%IsLoad_u) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MAP_Fortran_UnPackLin_InitOutputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_Fortran_UnPackLin_InitOutputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Lin_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MAP_Fortran_UnPackLin_InitOutputType' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%LinNames_y)) deallocate(OutData%LinNames_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_u)) deallocate(OutData%LinNames_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IsLoad_u)) deallocate(OutData%IsLoad_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IsLoad_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IsLoad_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IsLoad_u) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%LinNames_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IsLoad_u); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MAP_Fortran_CopyLin_ParamType(SrcLin_ParamTypeData, DstLin_ParamTypeData, CtrlCode, ErrStat, ErrMsg) @@ -274,47 +222,28 @@ subroutine MAP_Fortran_DestroyLin_ParamType(Lin_ParamTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine MAP_Fortran_PackLin_ParamType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_Fortran_PackLin_ParamType(RF, Indata) + type(RegFile), intent(inout) :: RF type(Lin_ParamType), intent(in) :: InData character(*), parameter :: RoutineName = 'MAP_Fortran_PackLin_ParamType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Jac_u_indx)) - if (allocated(InData%Jac_u_indx)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_u_indx, kind=B8Ki), ubound(InData%Jac_u_indx, kind=B8Ki)) - call RegPack(Buf, InData%Jac_u_indx) - end if - call RegPack(Buf, InData%du) - call RegPack(Buf, InData%Jac_ny) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%Jac_u_indx) + call RegPack(RF, InData%du) + call RegPack(RF, InData%Jac_ny) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MAP_Fortran_UnPackLin_ParamType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_Fortran_UnPackLin_ParamType(RF, OutData) + type(RegFile), intent(inout) :: RF type(Lin_ParamType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MAP_Fortran_UnPackLin_ParamType' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%Jac_u_indx)) deallocate(OutData%Jac_u_indx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_u_indx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_u_indx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_u_indx) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%du) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Jac_ny) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%Jac_u_indx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%du); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Jac_ny); if (RegCheckErr(RF, RoutineName)) return end subroutine END MODULE MAP_Fortran_Types !ENDOFREGISTRYGENERATEDFILE diff --git a/modules/map/src/MAP_Types.f90 b/modules/map/src/MAP_Types.f90 index a75a018aff..ae02cdbd28 100644 --- a/modules/map/src/MAP_Types.f90 +++ b/modules/map/src/MAP_Types.f90 @@ -294,61 +294,52 @@ subroutine MAP_DestroyInitInput(InitInputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine MAP_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(MAP_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'MAP_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, InData%gravity) - call RegPack(Buf, InData%sea_density) - call RegPack(Buf, InData%depth) - call RegPack(Buf, InData%file_name) - call RegPack(Buf, InData%summary_file_name) - call RegPack(Buf, InData%library_input_str) - call RegPack(Buf, InData%node_input_str) - call RegPack(Buf, InData%line_input_str) - call RegPack(Buf, InData%option_input_str) - call MAP_Fortran_PackLin_InitInputType(Buf, InData%LinInitInp) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%gravity) + call RegPack(RF, InData%sea_density) + call RegPack(RF, InData%depth) + call RegPack(RF, InData%file_name) + call RegPack(RF, InData%summary_file_name) + call RegPack(RF, InData%library_input_str) + call RegPack(RF, InData%node_input_str) + call RegPack(RF, InData%line_input_str) + call RegPack(RF, InData%option_input_str) + call MAP_Fortran_PackLin_InitInputType(RF, InData%LinInitInp) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MAP_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(MAP_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MAP_UnPackInitInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%gravity) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%gravity); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%gravity = OutData%gravity - call RegUnpack(Buf, OutData%sea_density) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%sea_density); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%sea_density = OutData%sea_density - call RegUnpack(Buf, OutData%depth) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%depth); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%depth = OutData%depth - call RegUnpack(Buf, OutData%file_name) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%file_name); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%file_name = transfer(OutData%file_name, OutData%C_obj%file_name ) - call RegUnpack(Buf, OutData%summary_file_name) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%summary_file_name); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%summary_file_name = transfer(OutData%summary_file_name, OutData%C_obj%summary_file_name ) - call RegUnpack(Buf, OutData%library_input_str) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%library_input_str); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%library_input_str = transfer(OutData%library_input_str, OutData%C_obj%library_input_str ) - call RegUnpack(Buf, OutData%node_input_str) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%node_input_str); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%node_input_str = transfer(OutData%node_input_str, OutData%C_obj%node_input_str ) - call RegUnpack(Buf, OutData%line_input_str) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%line_input_str); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%line_input_str = transfer(OutData%line_input_str, OutData%C_obj%line_input_str ) - call RegUnpack(Buf, OutData%option_input_str) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%option_input_str); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%option_input_str = transfer(OutData%option_input_str, OutData%C_obj%option_input_str ) - call MAP_Fortran_UnpackLin_InitInputType(Buf, OutData%LinInitInp) ! LinInitInp + call MAP_Fortran_UnpackLin_InitInputType(RF, OutData%LinInitInp) ! LinInitInp end subroutine SUBROUTINE MAP_C2Fary_CopyInitInput(InitInputData, ErrStat, ErrMsg, SkipPointers) @@ -474,80 +465,43 @@ subroutine MAP_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine MAP_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(MAP_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'MAP_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, InData%progName) - call RegPack(Buf, InData%version) - call RegPack(Buf, InData%compilingData) - call RegPack(Buf, allocated(InData%writeOutputHdr)) - if (allocated(InData%writeOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%writeOutputHdr, kind=B8Ki), ubound(InData%writeOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%writeOutputHdr) - end if - call RegPack(Buf, allocated(InData%writeOutputUnt)) - if (allocated(InData%writeOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%writeOutputUnt, kind=B8Ki), ubound(InData%writeOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%writeOutputUnt) - end if - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call MAP_Fortran_PackLin_InitOutputType(Buf, InData%LinInitOut) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%progName) + call RegPack(RF, InData%version) + call RegPack(RF, InData%compilingData) + call RegPackAlloc(RF, InData%writeOutputHdr) + call RegPackAlloc(RF, InData%writeOutputUnt) + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call MAP_Fortran_PackLin_InitOutputType(RF, InData%LinInitOut) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MAP_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(MAP_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MAP_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%progName) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%progName); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%progName = transfer(OutData%progName, OutData%C_obj%progName ) - call RegUnpack(Buf, OutData%version) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%version); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%version = transfer(OutData%version, OutData%C_obj%version ) - call RegUnpack(Buf, OutData%compilingData) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%compilingData); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%compilingData = transfer(OutData%compilingData, OutData%C_obj%compilingData ) - if (allocated(OutData%writeOutputHdr)) deallocate(OutData%writeOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%writeOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%writeOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%writeOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%writeOutputUnt)) deallocate(OutData%writeOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%writeOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%writeOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%writeOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver - call MAP_Fortran_UnpackLin_InitOutputType(Buf, OutData%LinInitOut) ! LinInitOut + call RegUnpackAlloc(RF, OutData%writeOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%writeOutputUnt); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver + call MAP_Fortran_UnpackLin_InitOutputType(RF, OutData%LinInitOut) ! LinInitOut end subroutine SUBROUTINE MAP_C2Fary_CopyInitOutput(InitOutputData, ErrStat, ErrMsg, SkipPointers) @@ -612,26 +566,25 @@ subroutine MAP_DestroyContState(ContStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine MAP_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(MAP_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'MAP_PackContState' - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, InData%dummy) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%dummy) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MAP_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(MAP_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MAP_UnPackContState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%dummy); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%dummy = OutData%dummy end subroutine @@ -693,26 +646,25 @@ subroutine MAP_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine MAP_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(MAP_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'MAP_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, InData%dummy) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%dummy) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MAP_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(MAP_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MAP_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%dummy); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%dummy = OutData%dummy end subroutine @@ -1110,149 +1062,37 @@ subroutine MAP_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) end if end subroutine -subroutine MAP_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(MAP_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'MAP_PackOtherState' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, associated(InData%H)) - if (associated(InData%H)) then - call RegPackBounds(Buf, 1, lbound(InData%H, kind=B8Ki), ubound(InData%H, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%H), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%H) - end if - end if - call RegPack(Buf, associated(InData%V)) - if (associated(InData%V)) then - call RegPackBounds(Buf, 1, lbound(InData%V, kind=B8Ki), ubound(InData%V, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%V), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%V) - end if - end if - call RegPack(Buf, associated(InData%Ha)) - if (associated(InData%Ha)) then - call RegPackBounds(Buf, 1, lbound(InData%Ha, kind=B8Ki), ubound(InData%Ha, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%Ha), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%Ha) - end if - end if - call RegPack(Buf, associated(InData%Va)) - if (associated(InData%Va)) then - call RegPackBounds(Buf, 1, lbound(InData%Va, kind=B8Ki), ubound(InData%Va, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%Va), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%Va) - end if - end if - call RegPack(Buf, associated(InData%x)) - if (associated(InData%x)) then - call RegPackBounds(Buf, 1, lbound(InData%x, kind=B8Ki), ubound(InData%x, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%x), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%x) - end if - end if - call RegPack(Buf, associated(InData%y)) - if (associated(InData%y)) then - call RegPackBounds(Buf, 1, lbound(InData%y, kind=B8Ki), ubound(InData%y, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%y), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%y) - end if - end if - call RegPack(Buf, associated(InData%z)) - if (associated(InData%z)) then - call RegPackBounds(Buf, 1, lbound(InData%z, kind=B8Ki), ubound(InData%z, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%z), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%z) - end if - end if - call RegPack(Buf, associated(InData%xa)) - if (associated(InData%xa)) then - call RegPackBounds(Buf, 1, lbound(InData%xa, kind=B8Ki), ubound(InData%xa, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%xa), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%xa) - end if - end if - call RegPack(Buf, associated(InData%ya)) - if (associated(InData%ya)) then - call RegPackBounds(Buf, 1, lbound(InData%ya, kind=B8Ki), ubound(InData%ya, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%ya), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%ya) - end if - end if - call RegPack(Buf, associated(InData%za)) - if (associated(InData%za)) then - call RegPackBounds(Buf, 1, lbound(InData%za, kind=B8Ki), ubound(InData%za, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%za), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%za) - end if - end if - call RegPack(Buf, associated(InData%Fx_connect)) - if (associated(InData%Fx_connect)) then - call RegPackBounds(Buf, 1, lbound(InData%Fx_connect, kind=B8Ki), ubound(InData%Fx_connect, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%Fx_connect), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%Fx_connect) - end if - end if - call RegPack(Buf, associated(InData%Fy_connect)) - if (associated(InData%Fy_connect)) then - call RegPackBounds(Buf, 1, lbound(InData%Fy_connect, kind=B8Ki), ubound(InData%Fy_connect, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%Fy_connect), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%Fy_connect) - end if - end if - call RegPack(Buf, associated(InData%Fz_connect)) - if (associated(InData%Fz_connect)) then - call RegPackBounds(Buf, 1, lbound(InData%Fz_connect, kind=B8Ki), ubound(InData%Fz_connect, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%Fz_connect), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%Fz_connect) - end if - end if - call RegPack(Buf, associated(InData%Fx_anchor)) - if (associated(InData%Fx_anchor)) then - call RegPackBounds(Buf, 1, lbound(InData%Fx_anchor, kind=B8Ki), ubound(InData%Fx_anchor, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%Fx_anchor), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%Fx_anchor) - end if - end if - call RegPack(Buf, associated(InData%Fy_anchor)) - if (associated(InData%Fy_anchor)) then - call RegPackBounds(Buf, 1, lbound(InData%Fy_anchor, kind=B8Ki), ubound(InData%Fy_anchor, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%Fy_anchor), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%Fy_anchor) - end if - end if - call RegPack(Buf, associated(InData%Fz_anchor)) - if (associated(InData%Fz_anchor)) then - call RegPackBounds(Buf, 1, lbound(InData%Fz_anchor, kind=B8Ki), ubound(InData%Fz_anchor, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%Fz_anchor), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%Fz_anchor) - end if - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackPtr(RF, InData%H) + call RegPackPtr(RF, InData%V) + call RegPackPtr(RF, InData%Ha) + call RegPackPtr(RF, InData%Va) + call RegPackPtr(RF, InData%x) + call RegPackPtr(RF, InData%y) + call RegPackPtr(RF, InData%z) + call RegPackPtr(RF, InData%xa) + call RegPackPtr(RF, InData%ya) + call RegPackPtr(RF, InData%za) + call RegPackPtr(RF, InData%Fx_connect) + call RegPackPtr(RF, InData%Fy_connect) + call RegPackPtr(RF, InData%Fz_connect) + call RegPackPtr(RF, InData%Fx_anchor) + call RegPackPtr(RF, InData%Fy_anchor) + call RegPackPtr(RF, InData%Fz_anchor) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MAP_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(MAP_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MAP_UnPackOtherState' integer(B8Ki) :: LB(1), UB(1) @@ -1260,423 +1100,23 @@ subroutine MAP_UnPackOtherState(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - if (associated(OutData%H)) deallocate(OutData%H) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%H, UB(1:1)-LB(1:1)) - OutData%H(LB(1):) => OutData%H - else - allocate(OutData%H(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%H.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%H) - OutData%C_obj%H_Len = size(OutData%H) - if (OutData%C_obj%H_Len > 0) OutData%C_obj%H = c_loc(OutData%H(LB(1))) - call RegUnpack(Buf, OutData%H) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%H => null() - end if - if (associated(OutData%V)) deallocate(OutData%V) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%V, UB(1:1)-LB(1:1)) - OutData%V(LB(1):) => OutData%V - else - allocate(OutData%V(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%V.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%V) - OutData%C_obj%V_Len = size(OutData%V) - if (OutData%C_obj%V_Len > 0) OutData%C_obj%V = c_loc(OutData%V(LB(1))) - call RegUnpack(Buf, OutData%V) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%V => null() - end if - if (associated(OutData%Ha)) deallocate(OutData%Ha) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%Ha, UB(1:1)-LB(1:1)) - OutData%Ha(LB(1):) => OutData%Ha - else - allocate(OutData%Ha(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Ha.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%Ha) - OutData%C_obj%Ha_Len = size(OutData%Ha) - if (OutData%C_obj%Ha_Len > 0) OutData%C_obj%Ha = c_loc(OutData%Ha(LB(1))) - call RegUnpack(Buf, OutData%Ha) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%Ha => null() - end if - if (associated(OutData%Va)) deallocate(OutData%Va) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%Va, UB(1:1)-LB(1:1)) - OutData%Va(LB(1):) => OutData%Va - else - allocate(OutData%Va(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Va.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%Va) - OutData%C_obj%Va_Len = size(OutData%Va) - if (OutData%C_obj%Va_Len > 0) OutData%C_obj%Va = c_loc(OutData%Va(LB(1))) - call RegUnpack(Buf, OutData%Va) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%Va => null() - end if - if (associated(OutData%x)) deallocate(OutData%x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%x, UB(1:1)-LB(1:1)) - OutData%x(LB(1):) => OutData%x - else - allocate(OutData%x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%x) - OutData%C_obj%x_Len = size(OutData%x) - if (OutData%C_obj%x_Len > 0) OutData%C_obj%x = c_loc(OutData%x(LB(1))) - call RegUnpack(Buf, OutData%x) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%x => null() - end if - if (associated(OutData%y)) deallocate(OutData%y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%y, UB(1:1)-LB(1:1)) - OutData%y(LB(1):) => OutData%y - else - allocate(OutData%y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%y) - OutData%C_obj%y_Len = size(OutData%y) - if (OutData%C_obj%y_Len > 0) OutData%C_obj%y = c_loc(OutData%y(LB(1))) - call RegUnpack(Buf, OutData%y) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%y => null() - end if - if (associated(OutData%z)) deallocate(OutData%z) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%z, UB(1:1)-LB(1:1)) - OutData%z(LB(1):) => OutData%z - else - allocate(OutData%z(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%z) - OutData%C_obj%z_Len = size(OutData%z) - if (OutData%C_obj%z_Len > 0) OutData%C_obj%z = c_loc(OutData%z(LB(1))) - call RegUnpack(Buf, OutData%z) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%z => null() - end if - if (associated(OutData%xa)) deallocate(OutData%xa) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%xa, UB(1:1)-LB(1:1)) - OutData%xa(LB(1):) => OutData%xa - else - allocate(OutData%xa(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xa.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%xa) - OutData%C_obj%xa_Len = size(OutData%xa) - if (OutData%C_obj%xa_Len > 0) OutData%C_obj%xa = c_loc(OutData%xa(LB(1))) - call RegUnpack(Buf, OutData%xa) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%xa => null() - end if - if (associated(OutData%ya)) deallocate(OutData%ya) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%ya, UB(1:1)-LB(1:1)) - OutData%ya(LB(1):) => OutData%ya - else - allocate(OutData%ya(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ya.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%ya) - OutData%C_obj%ya_Len = size(OutData%ya) - if (OutData%C_obj%ya_Len > 0) OutData%C_obj%ya = c_loc(OutData%ya(LB(1))) - call RegUnpack(Buf, OutData%ya) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%ya => null() - end if - if (associated(OutData%za)) deallocate(OutData%za) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%za, UB(1:1)-LB(1:1)) - OutData%za(LB(1):) => OutData%za - else - allocate(OutData%za(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%za.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%za) - OutData%C_obj%za_Len = size(OutData%za) - if (OutData%C_obj%za_Len > 0) OutData%C_obj%za = c_loc(OutData%za(LB(1))) - call RegUnpack(Buf, OutData%za) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%za => null() - end if - if (associated(OutData%Fx_connect)) deallocate(OutData%Fx_connect) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%Fx_connect, UB(1:1)-LB(1:1)) - OutData%Fx_connect(LB(1):) => OutData%Fx_connect - else - allocate(OutData%Fx_connect(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fx_connect.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%Fx_connect) - OutData%C_obj%Fx_connect_Len = size(OutData%Fx_connect) - if (OutData%C_obj%Fx_connect_Len > 0) OutData%C_obj%Fx_connect = c_loc(OutData%Fx_connect(LB(1))) - call RegUnpack(Buf, OutData%Fx_connect) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%Fx_connect => null() - end if - if (associated(OutData%Fy_connect)) deallocate(OutData%Fy_connect) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%Fy_connect, UB(1:1)-LB(1:1)) - OutData%Fy_connect(LB(1):) => OutData%Fy_connect - else - allocate(OutData%Fy_connect(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fy_connect.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%Fy_connect) - OutData%C_obj%Fy_connect_Len = size(OutData%Fy_connect) - if (OutData%C_obj%Fy_connect_Len > 0) OutData%C_obj%Fy_connect = c_loc(OutData%Fy_connect(LB(1))) - call RegUnpack(Buf, OutData%Fy_connect) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%Fy_connect => null() - end if - if (associated(OutData%Fz_connect)) deallocate(OutData%Fz_connect) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%Fz_connect, UB(1:1)-LB(1:1)) - OutData%Fz_connect(LB(1):) => OutData%Fz_connect - else - allocate(OutData%Fz_connect(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fz_connect.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%Fz_connect) - OutData%C_obj%Fz_connect_Len = size(OutData%Fz_connect) - if (OutData%C_obj%Fz_connect_Len > 0) OutData%C_obj%Fz_connect = c_loc(OutData%Fz_connect(LB(1))) - call RegUnpack(Buf, OutData%Fz_connect) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%Fz_connect => null() - end if - if (associated(OutData%Fx_anchor)) deallocate(OutData%Fx_anchor) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%Fx_anchor, UB(1:1)-LB(1:1)) - OutData%Fx_anchor(LB(1):) => OutData%Fx_anchor - else - allocate(OutData%Fx_anchor(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fx_anchor.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%Fx_anchor) - OutData%C_obj%Fx_anchor_Len = size(OutData%Fx_anchor) - if (OutData%C_obj%Fx_anchor_Len > 0) OutData%C_obj%Fx_anchor = c_loc(OutData%Fx_anchor(LB(1))) - call RegUnpack(Buf, OutData%Fx_anchor) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%Fx_anchor => null() - end if - if (associated(OutData%Fy_anchor)) deallocate(OutData%Fy_anchor) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%Fy_anchor, UB(1:1)-LB(1:1)) - OutData%Fy_anchor(LB(1):) => OutData%Fy_anchor - else - allocate(OutData%Fy_anchor(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fy_anchor.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%Fy_anchor) - OutData%C_obj%Fy_anchor_Len = size(OutData%Fy_anchor) - if (OutData%C_obj%Fy_anchor_Len > 0) OutData%C_obj%Fy_anchor = c_loc(OutData%Fy_anchor(LB(1))) - call RegUnpack(Buf, OutData%Fy_anchor) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%Fy_anchor => null() - end if - if (associated(OutData%Fz_anchor)) deallocate(OutData%Fz_anchor) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%Fz_anchor, UB(1:1)-LB(1:1)) - OutData%Fz_anchor(LB(1):) => OutData%Fz_anchor - else - allocate(OutData%Fz_anchor(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fz_anchor.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%Fz_anchor) - OutData%C_obj%Fz_anchor_Len = size(OutData%Fz_anchor) - if (OutData%C_obj%Fz_anchor_Len > 0) OutData%C_obj%Fz_anchor = c_loc(OutData%Fz_anchor(LB(1))) - call RegUnpack(Buf, OutData%Fz_anchor) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%Fz_anchor => null() - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackPtr(RF, OutData%H); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%V); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%Ha); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%Va); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%z); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%xa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%ya); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%za); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%Fx_connect); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%Fy_connect); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%Fz_connect); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%Fx_anchor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%Fy_anchor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%Fz_anchor); if (RegCheckErr(RF, RoutineName)) return end subroutine SUBROUTINE MAP_C2Fary_CopyOtherState(OtherStateData, ErrStat, ErrMsg, SkipPointers) @@ -2176,61 +1616,26 @@ subroutine MAP_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) end if end subroutine -subroutine MAP_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(MAP_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'MAP_PackConstrState' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, associated(InData%H)) - if (associated(InData%H)) then - call RegPackBounds(Buf, 1, lbound(InData%H, kind=B8Ki), ubound(InData%H, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%H), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%H) - end if - end if - call RegPack(Buf, associated(InData%V)) - if (associated(InData%V)) then - call RegPackBounds(Buf, 1, lbound(InData%V, kind=B8Ki), ubound(InData%V, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%V), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%V) - end if - end if - call RegPack(Buf, associated(InData%x)) - if (associated(InData%x)) then - call RegPackBounds(Buf, 1, lbound(InData%x, kind=B8Ki), ubound(InData%x, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%x), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%x) - end if - end if - call RegPack(Buf, associated(InData%y)) - if (associated(InData%y)) then - call RegPackBounds(Buf, 1, lbound(InData%y, kind=B8Ki), ubound(InData%y, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%y), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%y) - end if - end if - call RegPack(Buf, associated(InData%z)) - if (associated(InData%z)) then - call RegPackBounds(Buf, 1, lbound(InData%z, kind=B8Ki), ubound(InData%z, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%z), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%z) - end if - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackPtr(RF, InData%H) + call RegPackPtr(RF, InData%V) + call RegPackPtr(RF, InData%x) + call RegPackPtr(RF, InData%y) + call RegPackPtr(RF, InData%z) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MAP_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(MAP_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MAP_UnPackConstrState' integer(B8Ki) :: LB(1), UB(1) @@ -2238,137 +1643,12 @@ subroutine MAP_UnPackConstrState(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - if (associated(OutData%H)) deallocate(OutData%H) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%H, UB(1:1)-LB(1:1)) - OutData%H(LB(1):) => OutData%H - else - allocate(OutData%H(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%H.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%H) - OutData%C_obj%H_Len = size(OutData%H) - if (OutData%C_obj%H_Len > 0) OutData%C_obj%H = c_loc(OutData%H(LB(1))) - call RegUnpack(Buf, OutData%H) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%H => null() - end if - if (associated(OutData%V)) deallocate(OutData%V) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%V, UB(1:1)-LB(1:1)) - OutData%V(LB(1):) => OutData%V - else - allocate(OutData%V(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%V.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%V) - OutData%C_obj%V_Len = size(OutData%V) - if (OutData%C_obj%V_Len > 0) OutData%C_obj%V = c_loc(OutData%V(LB(1))) - call RegUnpack(Buf, OutData%V) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%V => null() - end if - if (associated(OutData%x)) deallocate(OutData%x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%x, UB(1:1)-LB(1:1)) - OutData%x(LB(1):) => OutData%x - else - allocate(OutData%x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%x) - OutData%C_obj%x_Len = size(OutData%x) - if (OutData%C_obj%x_Len > 0) OutData%C_obj%x = c_loc(OutData%x(LB(1))) - call RegUnpack(Buf, OutData%x) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%x => null() - end if - if (associated(OutData%y)) deallocate(OutData%y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%y, UB(1:1)-LB(1:1)) - OutData%y(LB(1):) => OutData%y - else - allocate(OutData%y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%y) - OutData%C_obj%y_Len = size(OutData%y) - if (OutData%C_obj%y_Len > 0) OutData%C_obj%y = c_loc(OutData%y(LB(1))) - call RegUnpack(Buf, OutData%y) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%y => null() - end if - if (associated(OutData%z)) deallocate(OutData%z) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%z, UB(1:1)-LB(1:1)) - OutData%z(LB(1):) => OutData%z - else - allocate(OutData%z(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%z) - OutData%C_obj%z_Len = size(OutData%z) - if (OutData%C_obj%z_Len > 0) OutData%C_obj%z = c_loc(OutData%z(LB(1))) - call RegUnpack(Buf, OutData%z) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%z => null() - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackPtr(RF, OutData%H); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%V); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%z); if (RegCheckErr(RF, RoutineName)) return end subroutine SUBROUTINE MAP_C2Fary_CopyConstrState(ConstrStateData, ErrStat, ErrMsg, SkipPointers) @@ -2551,51 +1831,44 @@ subroutine MAP_DestroyParam(ParamData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine MAP_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(MAP_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'MAP_PackParam' - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, InData%g) - call RegPack(Buf, InData%depth) - call RegPack(Buf, InData%rho_sea) - call RegPack(Buf, InData%dt) - call RegPack(Buf, InData%InputLines) - call RegPack(Buf, InData%InputLineType) - call RegPack(Buf, InData%numOuts) - call MAP_Fortran_PackLin_ParamType(Buf, InData%LinParams) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%g) + call RegPack(RF, InData%depth) + call RegPack(RF, InData%rho_sea) + call RegPack(RF, InData%dt) + call RegPack(RF, InData%InputLines) + call RegPack(RF, InData%InputLineType) + call RegPack(RF, InData%numOuts) + call MAP_Fortran_PackLin_ParamType(RF, InData%LinParams) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MAP_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(MAP_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MAP_UnPackParam' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%g) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%g); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%g = OutData%g - call RegUnpack(Buf, OutData%depth) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%depth); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%depth = OutData%depth - call RegUnpack(Buf, OutData%rho_sea) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%rho_sea); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%rho_sea = OutData%rho_sea - call RegUnpack(Buf, OutData%dt) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%dt); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%dt = OutData%dt - call RegUnpack(Buf, OutData%InputLines) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InputLineType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%numOuts) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%InputLines); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InputLineType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numOuts); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%numOuts = OutData%numOuts - call MAP_Fortran_UnpackLin_ParamType(Buf, OutData%LinParams) ! LinParams + call MAP_Fortran_UnpackLin_ParamType(RF, OutData%LinParams) ! LinParams end subroutine SUBROUTINE MAP_C2Fary_CopyParam(ParamData, ErrStat, ErrMsg, SkipPointers) @@ -2735,46 +2008,25 @@ subroutine MAP_DestroyInput(InputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine MAP_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(MAP_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'MAP_PackInput' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, associated(InData%x)) - if (associated(InData%x)) then - call RegPackBounds(Buf, 1, lbound(InData%x, kind=B8Ki), ubound(InData%x, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%x), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%x) - end if - end if - call RegPack(Buf, associated(InData%y)) - if (associated(InData%y)) then - call RegPackBounds(Buf, 1, lbound(InData%y, kind=B8Ki), ubound(InData%y, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%y), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%y) - end if - end if - call RegPack(Buf, associated(InData%z)) - if (associated(InData%z)) then - call RegPackBounds(Buf, 1, lbound(InData%z, kind=B8Ki), ubound(InData%z, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%z), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%z) - end if - end if - call MeshPack(Buf, InData%PtFairDisplacement) - if (RegCheckErr(Buf, RoutineName)) return + call RegPackPtr(RF, InData%x) + call RegPackPtr(RF, InData%y) + call RegPackPtr(RF, InData%z) + call MeshPack(RF, InData%PtFairDisplacement) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MAP_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(MAP_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MAP_UnPackInput' integer(B8Ki) :: LB(1), UB(1) @@ -2782,86 +2034,11 @@ subroutine MAP_UnPackInput(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - if (associated(OutData%x)) deallocate(OutData%x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%x, UB(1:1)-LB(1:1)) - OutData%x(LB(1):) => OutData%x - else - allocate(OutData%x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%x) - OutData%C_obj%x_Len = size(OutData%x) - if (OutData%C_obj%x_Len > 0) OutData%C_obj%x = c_loc(OutData%x(LB(1))) - call RegUnpack(Buf, OutData%x) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%x => null() - end if - if (associated(OutData%y)) deallocate(OutData%y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%y, UB(1:1)-LB(1:1)) - OutData%y(LB(1):) => OutData%y - else - allocate(OutData%y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%y) - OutData%C_obj%y_Len = size(OutData%y) - if (OutData%C_obj%y_Len > 0) OutData%C_obj%y = c_loc(OutData%y(LB(1))) - call RegUnpack(Buf, OutData%y) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%y => null() - end if - if (associated(OutData%z)) deallocate(OutData%z) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%z, UB(1:1)-LB(1:1)) - OutData%z(LB(1):) => OutData%z - else - allocate(OutData%z(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%z) - OutData%C_obj%z_Len = size(OutData%z) - if (OutData%C_obj%z_Len > 0) OutData%C_obj%z = c_loc(OutData%z(LB(1))) - call RegUnpack(Buf, OutData%z) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%z => null() - end if - call MeshUnpack(Buf, OutData%PtFairDisplacement) ! PtFairDisplacement + if (RF%ErrStat /= ErrID_None) return + call RegUnpackPtr(RF, OutData%x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%z); if (RegCheckErr(RF, RoutineName)) return + call MeshUnpack(RF, OutData%PtFairDisplacement) ! PtFairDisplacement end subroutine SUBROUTINE MAP_C2Fary_CopyInput(InputData, ErrStat, ErrMsg, SkipPointers) @@ -3090,59 +2267,27 @@ subroutine MAP_DestroyOutput(OutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine MAP_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(MAP_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'MAP_PackOutput' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, associated(InData%Fx)) - if (associated(InData%Fx)) then - call RegPackBounds(Buf, 1, lbound(InData%Fx, kind=B8Ki), ubound(InData%Fx, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%Fx), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%Fx) - end if - end if - call RegPack(Buf, associated(InData%Fy)) - if (associated(InData%Fy)) then - call RegPackBounds(Buf, 1, lbound(InData%Fy, kind=B8Ki), ubound(InData%Fy, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%Fy), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%Fy) - end if - end if - call RegPack(Buf, associated(InData%Fz)) - if (associated(InData%Fz)) then - call RegPackBounds(Buf, 1, lbound(InData%Fz, kind=B8Ki), ubound(InData%Fz, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%Fz), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%Fz) - end if - end if - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - call RegPack(Buf, associated(InData%wrtOutput)) - if (associated(InData%wrtOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%wrtOutput, kind=B8Ki), ubound(InData%wrtOutput, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%wrtOutput), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%wrtOutput) - end if - end if - call MeshPack(Buf, InData%ptFairleadLoad) - if (RegCheckErr(Buf, RoutineName)) return + call RegPackPtr(RF, InData%Fx) + call RegPackPtr(RF, InData%Fy) + call RegPackPtr(RF, InData%Fz) + call RegPackAlloc(RF, InData%WriteOutput) + call RegPackPtr(RF, InData%wrtOutput) + call MeshPack(RF, InData%ptFairleadLoad) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MAP_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MAP_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(MAP_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MAP_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) @@ -3150,126 +2295,13 @@ subroutine MAP_UnPackOutput(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - if (associated(OutData%Fx)) deallocate(OutData%Fx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%Fx, UB(1:1)-LB(1:1)) - OutData%Fx(LB(1):) => OutData%Fx - else - allocate(OutData%Fx(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%Fx) - OutData%C_obj%Fx_Len = size(OutData%Fx) - if (OutData%C_obj%Fx_Len > 0) OutData%C_obj%Fx = c_loc(OutData%Fx(LB(1))) - call RegUnpack(Buf, OutData%Fx) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%Fx => null() - end if - if (associated(OutData%Fy)) deallocate(OutData%Fy) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%Fy, UB(1:1)-LB(1:1)) - OutData%Fy(LB(1):) => OutData%Fy - else - allocate(OutData%Fy(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fy.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%Fy) - OutData%C_obj%Fy_Len = size(OutData%Fy) - if (OutData%C_obj%Fy_Len > 0) OutData%C_obj%Fy = c_loc(OutData%Fy(LB(1))) - call RegUnpack(Buf, OutData%Fy) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%Fy => null() - end if - if (associated(OutData%Fz)) deallocate(OutData%Fz) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%Fz, UB(1:1)-LB(1:1)) - OutData%Fz(LB(1):) => OutData%Fz - else - allocate(OutData%Fz(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fz.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%Fz) - OutData%C_obj%Fz_Len = size(OutData%Fz) - if (OutData%C_obj%Fz_Len > 0) OutData%C_obj%Fz = c_loc(OutData%Fz(LB(1))) - call RegUnpack(Buf, OutData%Fz) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%Fz => null() - end if - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (associated(OutData%wrtOutput)) deallocate(OutData%wrtOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%wrtOutput, UB(1:1)-LB(1:1)) - OutData%wrtOutput(LB(1):) => OutData%wrtOutput - else - allocate(OutData%wrtOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%wrtOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%wrtOutput) - OutData%C_obj%wrtOutput_Len = size(OutData%wrtOutput) - if (OutData%C_obj%wrtOutput_Len > 0) OutData%C_obj%wrtOutput = c_loc(OutData%wrtOutput(LB(1))) - call RegUnpack(Buf, OutData%wrtOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%wrtOutput => null() - end if - call MeshUnpack(Buf, OutData%ptFairleadLoad) ! ptFairleadLoad + if (RF%ErrStat /= ErrID_None) return + call RegUnpackPtr(RF, OutData%Fx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%Fy); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%Fz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%wrtOutput); if (RegCheckErr(RF, RoutineName)) return + call MeshUnpack(RF, OutData%ptFairleadLoad) ! ptFairleadLoad end subroutine SUBROUTINE MAP_C2Fary_CopyOutput(OutputData, ErrStat, ErrMsg, SkipPointers) diff --git a/modules/moordyn/src/MoorDyn_Types.f90 b/modules/moordyn/src/MoorDyn_Types.f90 index 4d09dee8d2..98b68013a5 100644 --- a/modules/moordyn/src/MoorDyn_Types.f90 +++ b/modules/moordyn/src/MoorDyn_Types.f90 @@ -499,31 +499,27 @@ subroutine MD_DestroyInputFileType(InputFileTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine MD_PackInputFileType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackInputFileType(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_InputFileType), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackInputFileType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DTIC) - call RegPack(Buf, InData%TMaxIC) - call RegPack(Buf, InData%CdScaleIC) - call RegPack(Buf, InData%threshIC) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DTIC) + call RegPack(RF, InData%TMaxIC) + call RegPack(RF, InData%CdScaleIC) + call RegPack(RF, InData%threshIC) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackInputFileType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackInputFileType(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_InputFileType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackInputFileType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DTIC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TMaxIC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CdScaleIC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%threshIC) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DTIC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TMaxIC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CdScaleIC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%threshIC); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -612,114 +608,52 @@ subroutine MD_DestroyInitInput(InitInputData, ErrStat, ErrMsg) end if end subroutine -subroutine MD_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%g) - call RegPack(Buf, InData%rhoW) - call RegPack(Buf, InData%WtrDepth) - call RegPack(Buf, allocated(InData%PtfmInit)) - if (allocated(InData%PtfmInit)) then - call RegPackBounds(Buf, 2, lbound(InData%PtfmInit, kind=B8Ki), ubound(InData%PtfmInit, kind=B8Ki)) - call RegPack(Buf, InData%PtfmInit) - end if - call RegPack(Buf, InData%FarmSize) - call RegPack(Buf, allocated(InData%TurbineRefPos)) - if (allocated(InData%TurbineRefPos)) then - call RegPackBounds(Buf, 2, lbound(InData%TurbineRefPos, kind=B8Ki), ubound(InData%TurbineRefPos, kind=B8Ki)) - call RegPack(Buf, InData%TurbineRefPos) - end if - call RegPack(Buf, InData%Tmax) - call RegPack(Buf, InData%FileName) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, InData%UsePrimaryInputFile) - call NWTC_Library_PackFileInfoType(Buf, InData%PassedPrimaryInputData) - call RegPack(Buf, InData%Echo) - call RegPack(Buf, allocated(InData%OutList)) - if (allocated(InData%OutList)) then - call RegPackBounds(Buf, 1, lbound(InData%OutList, kind=B8Ki), ubound(InData%OutList, kind=B8Ki)) - call RegPack(Buf, InData%OutList) - end if - call RegPack(Buf, InData%Linearize) - call RegPack(Buf, InData%VisMeshes) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%g) + call RegPack(RF, InData%rhoW) + call RegPack(RF, InData%WtrDepth) + call RegPackAlloc(RF, InData%PtfmInit) + call RegPack(RF, InData%FarmSize) + call RegPackAlloc(RF, InData%TurbineRefPos) + call RegPack(RF, InData%Tmax) + call RegPack(RF, InData%FileName) + call RegPack(RF, InData%RootName) + call RegPack(RF, InData%UsePrimaryInputFile) + call NWTC_Library_PackFileInfoType(RF, InData%PassedPrimaryInputData) + call RegPack(RF, InData%Echo) + call RegPackAlloc(RF, InData%OutList) + call RegPack(RF, InData%Linearize) + call RegPack(RF, InData%VisMeshes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackInitInput' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%g) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rhoW) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDepth) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PtfmInit)) deallocate(OutData%PtfmInit) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PtfmInit(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PtfmInit.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PtfmInit) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%FarmSize) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TurbineRefPos)) deallocate(OutData%TurbineRefPos) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TurbineRefPos(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TurbineRefPos.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TurbineRefPos) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Tmax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UsePrimaryInputFile) - if (RegCheckErr(Buf, RoutineName)) return - call NWTC_Library_UnpackFileInfoType(Buf, OutData%PassedPrimaryInputData) ! PassedPrimaryInputData - call RegUnpack(Buf, OutData%Echo) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutList)) deallocate(OutData%OutList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutList) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Linearize) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VisMeshes) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%g); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rhoW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDepth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PtfmInit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FarmSize); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TurbineRefPos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Tmax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UsePrimaryInputFile); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackFileInfoType(RF, OutData%PassedPrimaryInputData) ! PassedPrimaryInputData + call RegUnpack(RF, OutData%Echo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Linearize); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VisMeshes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyLineProp(SrcLinePropData, DstLinePropData, CtrlCode, ErrStat, ErrMsg) @@ -765,88 +699,65 @@ subroutine MD_DestroyLineProp(LinePropData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine MD_PackLineProp(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackLineProp(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_LineProp), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackLineProp' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%IdNum) - call RegPack(Buf, InData%name) - call RegPack(Buf, InData%d) - call RegPack(Buf, InData%w) - call RegPack(Buf, InData%EA) - call RegPack(Buf, InData%EA_D) - call RegPack(Buf, InData%BA) - call RegPack(Buf, InData%BA_D) - call RegPack(Buf, InData%EI) - call RegPack(Buf, InData%Can) - call RegPack(Buf, InData%Cat) - call RegPack(Buf, InData%Cdn) - call RegPack(Buf, InData%Cdt) - call RegPack(Buf, InData%ElasticMod) - call RegPack(Buf, InData%nEApoints) - call RegPack(Buf, InData%stiffXs) - call RegPack(Buf, InData%stiffYs) - call RegPack(Buf, InData%nBApoints) - call RegPack(Buf, InData%dampXs) - call RegPack(Buf, InData%dampYs) - call RegPack(Buf, InData%nEIpoints) - call RegPack(Buf, InData%bstiffXs) - call RegPack(Buf, InData%bstiffYs) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%IdNum) + call RegPack(RF, InData%name) + call RegPack(RF, InData%d) + call RegPack(RF, InData%w) + call RegPack(RF, InData%EA) + call RegPack(RF, InData%EA_D) + call RegPack(RF, InData%BA) + call RegPack(RF, InData%BA_D) + call RegPack(RF, InData%EI) + call RegPack(RF, InData%Can) + call RegPack(RF, InData%Cat) + call RegPack(RF, InData%Cdn) + call RegPack(RF, InData%Cdt) + call RegPack(RF, InData%ElasticMod) + call RegPack(RF, InData%nEApoints) + call RegPack(RF, InData%stiffXs) + call RegPack(RF, InData%stiffYs) + call RegPack(RF, InData%nBApoints) + call RegPack(RF, InData%dampXs) + call RegPack(RF, InData%dampYs) + call RegPack(RF, InData%nEIpoints) + call RegPack(RF, InData%bstiffXs) + call RegPack(RF, InData%bstiffYs) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackLineProp(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackLineProp(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_LineProp), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackLineProp' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%IdNum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%name) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%d) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%w) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EA_D) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BA_D) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EI) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Can) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cat) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cdn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cdt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ElasticMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nEApoints) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%stiffXs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%stiffYs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nBApoints) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dampXs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dampYs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nEIpoints) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%bstiffXs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%bstiffYs) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%IdNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%name); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%d); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%w); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EA_D); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BA_D); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Can); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cdn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cdt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ElasticMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nEApoints); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%stiffXs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%stiffYs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nBApoints); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dampXs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dampYs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nEIpoints); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%bstiffXs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%bstiffYs); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyRodProp(SrcRodPropData, DstRodPropData, CtrlCode, ErrStat, ErrMsg) @@ -879,49 +790,39 @@ subroutine MD_DestroyRodProp(RodPropData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine MD_PackRodProp(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackRodProp(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_RodProp), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackRodProp' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%IdNum) - call RegPack(Buf, InData%name) - call RegPack(Buf, InData%d) - call RegPack(Buf, InData%w) - call RegPack(Buf, InData%Can) - call RegPack(Buf, InData%Cat) - call RegPack(Buf, InData%Cdn) - call RegPack(Buf, InData%Cdt) - call RegPack(Buf, InData%CdEnd) - call RegPack(Buf, InData%CaEnd) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%IdNum) + call RegPack(RF, InData%name) + call RegPack(RF, InData%d) + call RegPack(RF, InData%w) + call RegPack(RF, InData%Can) + call RegPack(RF, InData%Cat) + call RegPack(RF, InData%Cdn) + call RegPack(RF, InData%Cdt) + call RegPack(RF, InData%CdEnd) + call RegPack(RF, InData%CaEnd) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackRodProp(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackRodProp(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_RodProp), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackRodProp' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%IdNum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%name) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%d) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%w) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Can) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cat) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cdn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cdt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CdEnd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CaEnd) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%IdNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%name); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%d); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%w); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Can); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cdn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cdt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CdEnd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CaEnd); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyBody(SrcBodyData, DstBodyData, CtrlCode, ErrStat, ErrMsg) @@ -970,97 +871,71 @@ subroutine MD_DestroyBody(BodyData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine MD_PackBody(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackBody(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_Body), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackBody' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%IdNum) - call RegPack(Buf, InData%typeNum) - call RegPack(Buf, InData%AttachedC) - call RegPack(Buf, InData%AttachedR) - call RegPack(Buf, InData%nAttachedC) - call RegPack(Buf, InData%nAttachedR) - call RegPack(Buf, InData%rPointRel) - call RegPack(Buf, InData%r6RodRel) - call RegPack(Buf, InData%bodyM) - call RegPack(Buf, InData%bodyV) - call RegPack(Buf, InData%bodyI) - call RegPack(Buf, InData%bodyCdA) - call RegPack(Buf, InData%bodyCa) - call RegPack(Buf, InData%time) - call RegPack(Buf, InData%r6) - call RegPack(Buf, InData%v6) - call RegPack(Buf, InData%a6) - call RegPack(Buf, InData%U) - call RegPack(Buf, InData%Ud) - call RegPack(Buf, InData%zeta) - call RegPack(Buf, InData%F6net) - call RegPack(Buf, InData%M6net) - call RegPack(Buf, InData%M) - call RegPack(Buf, InData%M0) - call RegPack(Buf, InData%OrMat) - call RegPack(Buf, InData%rCG) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%IdNum) + call RegPack(RF, InData%typeNum) + call RegPack(RF, InData%AttachedC) + call RegPack(RF, InData%AttachedR) + call RegPack(RF, InData%nAttachedC) + call RegPack(RF, InData%nAttachedR) + call RegPack(RF, InData%rPointRel) + call RegPack(RF, InData%r6RodRel) + call RegPack(RF, InData%bodyM) + call RegPack(RF, InData%bodyV) + call RegPack(RF, InData%bodyI) + call RegPack(RF, InData%bodyCdA) + call RegPack(RF, InData%bodyCa) + call RegPack(RF, InData%time) + call RegPack(RF, InData%r6) + call RegPack(RF, InData%v6) + call RegPack(RF, InData%a6) + call RegPack(RF, InData%U) + call RegPack(RF, InData%Ud) + call RegPack(RF, InData%zeta) + call RegPack(RF, InData%F6net) + call RegPack(RF, InData%M6net) + call RegPack(RF, InData%M) + call RegPack(RF, InData%M0) + call RegPack(RF, InData%OrMat) + call RegPack(RF, InData%rCG) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackBody(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackBody(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_Body), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackBody' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%IdNum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%typeNum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AttachedC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AttachedR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nAttachedC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nAttachedR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rPointRel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%r6RodRel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%bodyM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%bodyV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%bodyI) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%bodyCdA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%bodyCa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%time) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%r6) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%v6) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%a6) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%U) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Ud) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%zeta) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%F6net) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%M6net) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%M) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%M0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OrMat) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rCG) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%IdNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%typeNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AttachedC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AttachedR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nAttachedC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nAttachedR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rPointRel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%r6RodRel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%bodyM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%bodyV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%bodyI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%bodyCdA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%bodyCa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%time); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%r6); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%v6); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%a6); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%U); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ud); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%zeta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%F6net); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%M6net); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%M); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%M0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OrMat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rCG); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyPoint(SrcPointData, DstPointData, CtrlCode, ErrStat, ErrMsg) @@ -1122,107 +997,68 @@ subroutine MD_DestroyPoint(PointData, ErrStat, ErrMsg) end if end subroutine -subroutine MD_PackPoint(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackPoint(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_Point), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackPoint' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%IdNum) - call RegPack(Buf, InData%type) - call RegPack(Buf, InData%typeNum) - call RegPack(Buf, InData%Attached) - call RegPack(Buf, InData%Top) - call RegPack(Buf, InData%nAttached) - call RegPack(Buf, InData%pointM) - call RegPack(Buf, InData%pointV) - call RegPack(Buf, InData%pointFX) - call RegPack(Buf, InData%pointFY) - call RegPack(Buf, InData%pointFZ) - call RegPack(Buf, InData%pointCa) - call RegPack(Buf, InData%pointCdA) - call RegPack(Buf, InData%time) - call RegPack(Buf, InData%r) - call RegPack(Buf, InData%rd) - call RegPack(Buf, InData%a) - call RegPack(Buf, InData%U) - call RegPack(Buf, InData%Ud) - call RegPack(Buf, InData%zeta) - call RegPack(Buf, allocated(InData%PDyn)) - if (allocated(InData%PDyn)) then - call RegPackBounds(Buf, 1, lbound(InData%PDyn, kind=B8Ki), ubound(InData%PDyn, kind=B8Ki)) - call RegPack(Buf, InData%PDyn) - end if - call RegPack(Buf, InData%Fnet) - call RegPack(Buf, InData%M) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%IdNum) + call RegPack(RF, InData%type) + call RegPack(RF, InData%typeNum) + call RegPack(RF, InData%Attached) + call RegPack(RF, InData%Top) + call RegPack(RF, InData%nAttached) + call RegPack(RF, InData%pointM) + call RegPack(RF, InData%pointV) + call RegPack(RF, InData%pointFX) + call RegPack(RF, InData%pointFY) + call RegPack(RF, InData%pointFZ) + call RegPack(RF, InData%pointCa) + call RegPack(RF, InData%pointCdA) + call RegPack(RF, InData%time) + call RegPack(RF, InData%r) + call RegPack(RF, InData%rd) + call RegPack(RF, InData%a) + call RegPack(RF, InData%U) + call RegPack(RF, InData%Ud) + call RegPack(RF, InData%zeta) + call RegPackAlloc(RF, InData%PDyn) + call RegPack(RF, InData%Fnet) + call RegPack(RF, InData%M) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackPoint(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackPoint(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_Point), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackPoint' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%IdNum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%type) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%typeNum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Attached) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Top) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nAttached) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pointM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pointV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pointFX) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pointFY) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pointFZ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pointCa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pointCdA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%time) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%r) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%a) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%U) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Ud) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%zeta) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PDyn)) deallocate(OutData%PDyn) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PDyn(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PDyn.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PDyn) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Fnet) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%M) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%IdNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%type); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%typeNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Attached); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Top); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nAttached); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pointM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pointV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pointFX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pointFY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pointFZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pointCa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pointCdA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%time); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%r); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%a); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%U); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ud); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%zeta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PDyn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Fnet); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%M); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyRod(SrcRodData, DstRodData, CtrlCode, ErrStat, ErrMsg) @@ -1571,500 +1407,138 @@ subroutine MD_DestroyRod(RodData, ErrStat, ErrMsg) end if end subroutine -subroutine MD_PackRod(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackRod(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_Rod), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackRod' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%IdNum) - call RegPack(Buf, InData%type) - call RegPack(Buf, InData%PropsIdNum) - call RegPack(Buf, InData%typeNum) - call RegPack(Buf, InData%AttachedA) - call RegPack(Buf, InData%AttachedB) - call RegPack(Buf, InData%TopA) - call RegPack(Buf, InData%TopB) - call RegPack(Buf, InData%nAttachedA) - call RegPack(Buf, InData%nAttachedB) - call RegPack(Buf, InData%OutFlagList) - call RegPack(Buf, InData%N) - call RegPack(Buf, InData%endTypeA) - call RegPack(Buf, InData%endTypeB) - call RegPack(Buf, InData%UnstrLen) - call RegPack(Buf, InData%mass) - call RegPack(Buf, InData%rho) - call RegPack(Buf, InData%d) - call RegPack(Buf, InData%Can) - call RegPack(Buf, InData%Cat) - call RegPack(Buf, InData%Cdn) - call RegPack(Buf, InData%Cdt) - call RegPack(Buf, InData%CdEnd) - call RegPack(Buf, InData%CaEnd) - call RegPack(Buf, InData%time) - call RegPack(Buf, InData%roll) - call RegPack(Buf, InData%pitch) - call RegPack(Buf, InData%h0) - call RegPack(Buf, allocated(InData%r)) - if (allocated(InData%r)) then - call RegPackBounds(Buf, 2, lbound(InData%r, kind=B8Ki), ubound(InData%r, kind=B8Ki)) - call RegPack(Buf, InData%r) - end if - call RegPack(Buf, allocated(InData%rd)) - if (allocated(InData%rd)) then - call RegPackBounds(Buf, 2, lbound(InData%rd, kind=B8Ki), ubound(InData%rd, kind=B8Ki)) - call RegPack(Buf, InData%rd) - end if - call RegPack(Buf, InData%q) - call RegPack(Buf, allocated(InData%l)) - if (allocated(InData%l)) then - call RegPackBounds(Buf, 1, lbound(InData%l, kind=B8Ki), ubound(InData%l, kind=B8Ki)) - call RegPack(Buf, InData%l) - end if - call RegPack(Buf, allocated(InData%V)) - if (allocated(InData%V)) then - call RegPackBounds(Buf, 1, lbound(InData%V, kind=B8Ki), ubound(InData%V, kind=B8Ki)) - call RegPack(Buf, InData%V) - end if - call RegPack(Buf, allocated(InData%U)) - if (allocated(InData%U)) then - call RegPackBounds(Buf, 2, lbound(InData%U, kind=B8Ki), ubound(InData%U, kind=B8Ki)) - call RegPack(Buf, InData%U) - end if - call RegPack(Buf, allocated(InData%Ud)) - if (allocated(InData%Ud)) then - call RegPackBounds(Buf, 2, lbound(InData%Ud, kind=B8Ki), ubound(InData%Ud, kind=B8Ki)) - call RegPack(Buf, InData%Ud) - end if - call RegPack(Buf, allocated(InData%zeta)) - if (allocated(InData%zeta)) then - call RegPackBounds(Buf, 1, lbound(InData%zeta, kind=B8Ki), ubound(InData%zeta, kind=B8Ki)) - call RegPack(Buf, InData%zeta) - end if - call RegPack(Buf, allocated(InData%PDyn)) - if (allocated(InData%PDyn)) then - call RegPackBounds(Buf, 1, lbound(InData%PDyn, kind=B8Ki), ubound(InData%PDyn, kind=B8Ki)) - call RegPack(Buf, InData%PDyn) - end if - call RegPack(Buf, allocated(InData%W)) - if (allocated(InData%W)) then - call RegPackBounds(Buf, 2, lbound(InData%W, kind=B8Ki), ubound(InData%W, kind=B8Ki)) - call RegPack(Buf, InData%W) - end if - call RegPack(Buf, allocated(InData%Bo)) - if (allocated(InData%Bo)) then - call RegPackBounds(Buf, 2, lbound(InData%Bo, kind=B8Ki), ubound(InData%Bo, kind=B8Ki)) - call RegPack(Buf, InData%Bo) - end if - call RegPack(Buf, allocated(InData%Pd)) - if (allocated(InData%Pd)) then - call RegPackBounds(Buf, 2, lbound(InData%Pd, kind=B8Ki), ubound(InData%Pd, kind=B8Ki)) - call RegPack(Buf, InData%Pd) - end if - call RegPack(Buf, allocated(InData%Dp)) - if (allocated(InData%Dp)) then - call RegPackBounds(Buf, 2, lbound(InData%Dp, kind=B8Ki), ubound(InData%Dp, kind=B8Ki)) - call RegPack(Buf, InData%Dp) - end if - call RegPack(Buf, allocated(InData%Dq)) - if (allocated(InData%Dq)) then - call RegPackBounds(Buf, 2, lbound(InData%Dq, kind=B8Ki), ubound(InData%Dq, kind=B8Ki)) - call RegPack(Buf, InData%Dq) - end if - call RegPack(Buf, allocated(InData%Ap)) - if (allocated(InData%Ap)) then - call RegPackBounds(Buf, 2, lbound(InData%Ap, kind=B8Ki), ubound(InData%Ap, kind=B8Ki)) - call RegPack(Buf, InData%Ap) - end if - call RegPack(Buf, allocated(InData%Aq)) - if (allocated(InData%Aq)) then - call RegPackBounds(Buf, 2, lbound(InData%Aq, kind=B8Ki), ubound(InData%Aq, kind=B8Ki)) - call RegPack(Buf, InData%Aq) - end if - call RegPack(Buf, allocated(InData%B)) - if (allocated(InData%B)) then - call RegPackBounds(Buf, 2, lbound(InData%B, kind=B8Ki), ubound(InData%B, kind=B8Ki)) - call RegPack(Buf, InData%B) - end if - call RegPack(Buf, allocated(InData%Fnet)) - if (allocated(InData%Fnet)) then - call RegPackBounds(Buf, 2, lbound(InData%Fnet, kind=B8Ki), ubound(InData%Fnet, kind=B8Ki)) - call RegPack(Buf, InData%Fnet) - end if - call RegPack(Buf, allocated(InData%M)) - if (allocated(InData%M)) then - call RegPackBounds(Buf, 3, lbound(InData%M, kind=B8Ki), ubound(InData%M, kind=B8Ki)) - call RegPack(Buf, InData%M) - end if - call RegPack(Buf, InData%FextA) - call RegPack(Buf, InData%FextB) - call RegPack(Buf, InData%Mext) - call RegPack(Buf, InData%r6) - call RegPack(Buf, InData%v6) - call RegPack(Buf, InData%a6) - call RegPack(Buf, InData%F6net) - call RegPack(Buf, InData%M6net) - call RegPack(Buf, InData%OrMat) - call RegPack(Buf, InData%RodUnOut) - call RegPack(Buf, allocated(InData%RodWrOutput)) - if (allocated(InData%RodWrOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%RodWrOutput, kind=B8Ki), ubound(InData%RodWrOutput, kind=B8Ki)) - call RegPack(Buf, InData%RodWrOutput) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%IdNum) + call RegPack(RF, InData%type) + call RegPack(RF, InData%PropsIdNum) + call RegPack(RF, InData%typeNum) + call RegPack(RF, InData%AttachedA) + call RegPack(RF, InData%AttachedB) + call RegPack(RF, InData%TopA) + call RegPack(RF, InData%TopB) + call RegPack(RF, InData%nAttachedA) + call RegPack(RF, InData%nAttachedB) + call RegPack(RF, InData%OutFlagList) + call RegPack(RF, InData%N) + call RegPack(RF, InData%endTypeA) + call RegPack(RF, InData%endTypeB) + call RegPack(RF, InData%UnstrLen) + call RegPack(RF, InData%mass) + call RegPack(RF, InData%rho) + call RegPack(RF, InData%d) + call RegPack(RF, InData%Can) + call RegPack(RF, InData%Cat) + call RegPack(RF, InData%Cdn) + call RegPack(RF, InData%Cdt) + call RegPack(RF, InData%CdEnd) + call RegPack(RF, InData%CaEnd) + call RegPack(RF, InData%time) + call RegPack(RF, InData%roll) + call RegPack(RF, InData%pitch) + call RegPack(RF, InData%h0) + call RegPackAlloc(RF, InData%r) + call RegPackAlloc(RF, InData%rd) + call RegPack(RF, InData%q) + call RegPackAlloc(RF, InData%l) + call RegPackAlloc(RF, InData%V) + call RegPackAlloc(RF, InData%U) + call RegPackAlloc(RF, InData%Ud) + call RegPackAlloc(RF, InData%zeta) + call RegPackAlloc(RF, InData%PDyn) + call RegPackAlloc(RF, InData%W) + call RegPackAlloc(RF, InData%Bo) + call RegPackAlloc(RF, InData%Pd) + call RegPackAlloc(RF, InData%Dp) + call RegPackAlloc(RF, InData%Dq) + call RegPackAlloc(RF, InData%Ap) + call RegPackAlloc(RF, InData%Aq) + call RegPackAlloc(RF, InData%B) + call RegPackAlloc(RF, InData%Fnet) + call RegPackAlloc(RF, InData%M) + call RegPack(RF, InData%FextA) + call RegPack(RF, InData%FextB) + call RegPack(RF, InData%Mext) + call RegPack(RF, InData%r6) + call RegPack(RF, InData%v6) + call RegPack(RF, InData%a6) + call RegPack(RF, InData%F6net) + call RegPack(RF, InData%M6net) + call RegPack(RF, InData%OrMat) + call RegPack(RF, InData%RodUnOut) + call RegPackAlloc(RF, InData%RodWrOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackRod(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackRod(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_Rod), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackRod' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%IdNum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%type) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PropsIdNum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%typeNum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AttachedA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AttachedB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TopA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TopB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nAttachedA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nAttachedB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFlagList) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%N) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%endTypeA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%endTypeB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UnstrLen) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%mass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rho) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%d) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Can) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cat) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cdn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cdt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CdEnd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CaEnd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%time) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%roll) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pitch) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%h0) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%r)) deallocate(OutData%r) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%r(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%r.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%r) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rd)) deallocate(OutData%rd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rd(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rd) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%q) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%l)) deallocate(OutData%l) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%l(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%l.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%l) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%V)) deallocate(OutData%V) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%V(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%V.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%V) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%U)) deallocate(OutData%U) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%U(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%U.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%U) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Ud)) deallocate(OutData%Ud) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Ud(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Ud.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Ud) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%zeta)) deallocate(OutData%zeta) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%zeta(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%zeta.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%zeta) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PDyn)) deallocate(OutData%PDyn) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PDyn(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PDyn.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PDyn) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%W)) deallocate(OutData%W) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%W(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%W) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Bo)) deallocate(OutData%Bo) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Bo(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Bo.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Bo) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Pd)) deallocate(OutData%Pd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Pd(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Pd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Pd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Dp)) deallocate(OutData%Dp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Dp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Dp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Dp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Dq)) deallocate(OutData%Dq) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Dq(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Dq.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Dq) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Ap)) deallocate(OutData%Ap) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Ap(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Ap.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Ap) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Aq)) deallocate(OutData%Aq) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Aq(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Aq.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Aq) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%B)) deallocate(OutData%B) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%B(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%B.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%B) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Fnet)) deallocate(OutData%Fnet) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Fnet(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fnet.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Fnet) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%M)) deallocate(OutData%M) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%M(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%M.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%M) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%FextA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FextB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Mext) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%r6) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%v6) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%a6) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%F6net) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%M6net) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OrMat) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RodUnOut) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%RodWrOutput)) deallocate(OutData%RodWrOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RodWrOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RodWrOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RodWrOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%IdNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%type); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PropsIdNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%typeNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AttachedA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AttachedB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TopA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TopB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nAttachedA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nAttachedB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFlagList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%N); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%endTypeA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%endTypeB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UnstrLen); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%mass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rho); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%d); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Can); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cdn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cdt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CdEnd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CaEnd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%time); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%roll); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pitch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%h0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%r); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%q); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%l); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%V); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%U); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Ud); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%zeta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PDyn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%W); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Bo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Pd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Dp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Dq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Ap); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Aq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%B); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Fnet); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%M); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FextA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FextB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Mext); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%r6); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%v6); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%a6); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%F6net); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%M6net); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OrMat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RodUnOut); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RodWrOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyLine(SrcLineData, DstLineData, CtrlCode, ErrStat, ErrMsg) @@ -2544,659 +2018,148 @@ subroutine MD_DestroyLine(LineData, ErrStat, ErrMsg) end if end subroutine -subroutine MD_PackLine(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackLine(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_Line), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackLine' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%IdNum) - call RegPack(Buf, InData%PropsIdNum) - call RegPack(Buf, InData%ElasticMod) - call RegPack(Buf, InData%OutFlagList) - call RegPack(Buf, InData%CtrlChan) - call RegPack(Buf, InData%FairPoint) - call RegPack(Buf, InData%AnchPoint) - call RegPack(Buf, InData%N) - call RegPack(Buf, InData%endTypeA) - call RegPack(Buf, InData%endTypeB) - call RegPack(Buf, InData%UnstrLen) - call RegPack(Buf, InData%rho) - call RegPack(Buf, InData%d) - call RegPack(Buf, InData%EA) - call RegPack(Buf, InData%EA_D) - call RegPack(Buf, InData%BA) - call RegPack(Buf, InData%BA_D) - call RegPack(Buf, InData%EI) - call RegPack(Buf, InData%Can) - call RegPack(Buf, InData%Cat) - call RegPack(Buf, InData%Cdn) - call RegPack(Buf, InData%Cdt) - call RegPack(Buf, InData%nEApoints) - call RegPack(Buf, InData%stiffXs) - call RegPack(Buf, InData%stiffYs) - call RegPack(Buf, InData%nBApoints) - call RegPack(Buf, InData%dampXs) - call RegPack(Buf, InData%dampYs) - call RegPack(Buf, InData%nEIpoints) - call RegPack(Buf, InData%bstiffXs) - call RegPack(Buf, InData%bstiffYs) - call RegPack(Buf, InData%time) - call RegPack(Buf, allocated(InData%r)) - if (allocated(InData%r)) then - call RegPackBounds(Buf, 2, lbound(InData%r, kind=B8Ki), ubound(InData%r, kind=B8Ki)) - call RegPack(Buf, InData%r) - end if - call RegPack(Buf, allocated(InData%rd)) - if (allocated(InData%rd)) then - call RegPackBounds(Buf, 2, lbound(InData%rd, kind=B8Ki), ubound(InData%rd, kind=B8Ki)) - call RegPack(Buf, InData%rd) - end if - call RegPack(Buf, allocated(InData%q)) - if (allocated(InData%q)) then - call RegPackBounds(Buf, 2, lbound(InData%q, kind=B8Ki), ubound(InData%q, kind=B8Ki)) - call RegPack(Buf, InData%q) - end if - call RegPack(Buf, allocated(InData%qs)) - if (allocated(InData%qs)) then - call RegPackBounds(Buf, 2, lbound(InData%qs, kind=B8Ki), ubound(InData%qs, kind=B8Ki)) - call RegPack(Buf, InData%qs) - end if - call RegPack(Buf, allocated(InData%l)) - if (allocated(InData%l)) then - call RegPackBounds(Buf, 1, lbound(InData%l, kind=B8Ki), ubound(InData%l, kind=B8Ki)) - call RegPack(Buf, InData%l) - end if - call RegPack(Buf, allocated(InData%ld)) - if (allocated(InData%ld)) then - call RegPackBounds(Buf, 1, lbound(InData%ld, kind=B8Ki), ubound(InData%ld, kind=B8Ki)) - call RegPack(Buf, InData%ld) - end if - call RegPack(Buf, allocated(InData%lstr)) - if (allocated(InData%lstr)) then - call RegPackBounds(Buf, 1, lbound(InData%lstr, kind=B8Ki), ubound(InData%lstr, kind=B8Ki)) - call RegPack(Buf, InData%lstr) - end if - call RegPack(Buf, allocated(InData%lstrd)) - if (allocated(InData%lstrd)) then - call RegPackBounds(Buf, 1, lbound(InData%lstrd, kind=B8Ki), ubound(InData%lstrd, kind=B8Ki)) - call RegPack(Buf, InData%lstrd) - end if - call RegPack(Buf, allocated(InData%Kurv)) - if (allocated(InData%Kurv)) then - call RegPackBounds(Buf, 1, lbound(InData%Kurv, kind=B8Ki), ubound(InData%Kurv, kind=B8Ki)) - call RegPack(Buf, InData%Kurv) - end if - call RegPack(Buf, allocated(InData%dl_1)) - if (allocated(InData%dl_1)) then - call RegPackBounds(Buf, 1, lbound(InData%dl_1, kind=B8Ki), ubound(InData%dl_1, kind=B8Ki)) - call RegPack(Buf, InData%dl_1) - end if - call RegPack(Buf, allocated(InData%V)) - if (allocated(InData%V)) then - call RegPackBounds(Buf, 1, lbound(InData%V, kind=B8Ki), ubound(InData%V, kind=B8Ki)) - call RegPack(Buf, InData%V) - end if - call RegPack(Buf, allocated(InData%U)) - if (allocated(InData%U)) then - call RegPackBounds(Buf, 2, lbound(InData%U, kind=B8Ki), ubound(InData%U, kind=B8Ki)) - call RegPack(Buf, InData%U) - end if - call RegPack(Buf, allocated(InData%Ud)) - if (allocated(InData%Ud)) then - call RegPackBounds(Buf, 2, lbound(InData%Ud, kind=B8Ki), ubound(InData%Ud, kind=B8Ki)) - call RegPack(Buf, InData%Ud) - end if - call RegPack(Buf, allocated(InData%zeta)) - if (allocated(InData%zeta)) then - call RegPackBounds(Buf, 1, lbound(InData%zeta, kind=B8Ki), ubound(InData%zeta, kind=B8Ki)) - call RegPack(Buf, InData%zeta) - end if - call RegPack(Buf, allocated(InData%PDyn)) - if (allocated(InData%PDyn)) then - call RegPackBounds(Buf, 1, lbound(InData%PDyn, kind=B8Ki), ubound(InData%PDyn, kind=B8Ki)) - call RegPack(Buf, InData%PDyn) - end if - call RegPack(Buf, allocated(InData%T)) - if (allocated(InData%T)) then - call RegPackBounds(Buf, 2, lbound(InData%T, kind=B8Ki), ubound(InData%T, kind=B8Ki)) - call RegPack(Buf, InData%T) - end if - call RegPack(Buf, allocated(InData%Td)) - if (allocated(InData%Td)) then - call RegPackBounds(Buf, 2, lbound(InData%Td, kind=B8Ki), ubound(InData%Td, kind=B8Ki)) - call RegPack(Buf, InData%Td) - end if - call RegPack(Buf, allocated(InData%W)) - if (allocated(InData%W)) then - call RegPackBounds(Buf, 2, lbound(InData%W, kind=B8Ki), ubound(InData%W, kind=B8Ki)) - call RegPack(Buf, InData%W) - end if - call RegPack(Buf, allocated(InData%Dp)) - if (allocated(InData%Dp)) then - call RegPackBounds(Buf, 2, lbound(InData%Dp, kind=B8Ki), ubound(InData%Dp, kind=B8Ki)) - call RegPack(Buf, InData%Dp) - end if - call RegPack(Buf, allocated(InData%Dq)) - if (allocated(InData%Dq)) then - call RegPackBounds(Buf, 2, lbound(InData%Dq, kind=B8Ki), ubound(InData%Dq, kind=B8Ki)) - call RegPack(Buf, InData%Dq) - end if - call RegPack(Buf, allocated(InData%Ap)) - if (allocated(InData%Ap)) then - call RegPackBounds(Buf, 2, lbound(InData%Ap, kind=B8Ki), ubound(InData%Ap, kind=B8Ki)) - call RegPack(Buf, InData%Ap) - end if - call RegPack(Buf, allocated(InData%Aq)) - if (allocated(InData%Aq)) then - call RegPackBounds(Buf, 2, lbound(InData%Aq, kind=B8Ki), ubound(InData%Aq, kind=B8Ki)) - call RegPack(Buf, InData%Aq) - end if - call RegPack(Buf, allocated(InData%B)) - if (allocated(InData%B)) then - call RegPackBounds(Buf, 2, lbound(InData%B, kind=B8Ki), ubound(InData%B, kind=B8Ki)) - call RegPack(Buf, InData%B) - end if - call RegPack(Buf, allocated(InData%Bs)) - if (allocated(InData%Bs)) then - call RegPackBounds(Buf, 2, lbound(InData%Bs, kind=B8Ki), ubound(InData%Bs, kind=B8Ki)) - call RegPack(Buf, InData%Bs) - end if - call RegPack(Buf, allocated(InData%Fnet)) - if (allocated(InData%Fnet)) then - call RegPackBounds(Buf, 2, lbound(InData%Fnet, kind=B8Ki), ubound(InData%Fnet, kind=B8Ki)) - call RegPack(Buf, InData%Fnet) - end if - call RegPack(Buf, allocated(InData%S)) - if (allocated(InData%S)) then - call RegPackBounds(Buf, 3, lbound(InData%S, kind=B8Ki), ubound(InData%S, kind=B8Ki)) - call RegPack(Buf, InData%S) - end if - call RegPack(Buf, allocated(InData%M)) - if (allocated(InData%M)) then - call RegPackBounds(Buf, 3, lbound(InData%M, kind=B8Ki), ubound(InData%M, kind=B8Ki)) - call RegPack(Buf, InData%M) - end if - call RegPack(Buf, InData%EndMomentA) - call RegPack(Buf, InData%EndMomentB) - call RegPack(Buf, InData%LineUnOut) - call RegPack(Buf, allocated(InData%LineWrOutput)) - if (allocated(InData%LineWrOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%LineWrOutput, kind=B8Ki), ubound(InData%LineWrOutput, kind=B8Ki)) - call RegPack(Buf, InData%LineWrOutput) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%IdNum) + call RegPack(RF, InData%PropsIdNum) + call RegPack(RF, InData%ElasticMod) + call RegPack(RF, InData%OutFlagList) + call RegPack(RF, InData%CtrlChan) + call RegPack(RF, InData%FairPoint) + call RegPack(RF, InData%AnchPoint) + call RegPack(RF, InData%N) + call RegPack(RF, InData%endTypeA) + call RegPack(RF, InData%endTypeB) + call RegPack(RF, InData%UnstrLen) + call RegPack(RF, InData%rho) + call RegPack(RF, InData%d) + call RegPack(RF, InData%EA) + call RegPack(RF, InData%EA_D) + call RegPack(RF, InData%BA) + call RegPack(RF, InData%BA_D) + call RegPack(RF, InData%EI) + call RegPack(RF, InData%Can) + call RegPack(RF, InData%Cat) + call RegPack(RF, InData%Cdn) + call RegPack(RF, InData%Cdt) + call RegPack(RF, InData%nEApoints) + call RegPack(RF, InData%stiffXs) + call RegPack(RF, InData%stiffYs) + call RegPack(RF, InData%nBApoints) + call RegPack(RF, InData%dampXs) + call RegPack(RF, InData%dampYs) + call RegPack(RF, InData%nEIpoints) + call RegPack(RF, InData%bstiffXs) + call RegPack(RF, InData%bstiffYs) + call RegPack(RF, InData%time) + call RegPackAlloc(RF, InData%r) + call RegPackAlloc(RF, InData%rd) + call RegPackAlloc(RF, InData%q) + call RegPackAlloc(RF, InData%qs) + call RegPackAlloc(RF, InData%l) + call RegPackAlloc(RF, InData%ld) + call RegPackAlloc(RF, InData%lstr) + call RegPackAlloc(RF, InData%lstrd) + call RegPackAlloc(RF, InData%Kurv) + call RegPackAlloc(RF, InData%dl_1) + call RegPackAlloc(RF, InData%V) + call RegPackAlloc(RF, InData%U) + call RegPackAlloc(RF, InData%Ud) + call RegPackAlloc(RF, InData%zeta) + call RegPackAlloc(RF, InData%PDyn) + call RegPackAlloc(RF, InData%T) + call RegPackAlloc(RF, InData%Td) + call RegPackAlloc(RF, InData%W) + call RegPackAlloc(RF, InData%Dp) + call RegPackAlloc(RF, InData%Dq) + call RegPackAlloc(RF, InData%Ap) + call RegPackAlloc(RF, InData%Aq) + call RegPackAlloc(RF, InData%B) + call RegPackAlloc(RF, InData%Bs) + call RegPackAlloc(RF, InData%Fnet) + call RegPackAlloc(RF, InData%S) + call RegPackAlloc(RF, InData%M) + call RegPack(RF, InData%EndMomentA) + call RegPack(RF, InData%EndMomentB) + call RegPack(RF, InData%LineUnOut) + call RegPackAlloc(RF, InData%LineWrOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackLine(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackLine(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_Line), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackLine' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%IdNum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PropsIdNum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ElasticMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFlagList) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CtrlChan) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FairPoint) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AnchPoint) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%N) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%endTypeA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%endTypeB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UnstrLen) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rho) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%d) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EA_D) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BA_D) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EI) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Can) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cat) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cdn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Cdt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nEApoints) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%stiffXs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%stiffYs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nBApoints) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dampXs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dampYs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nEIpoints) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%bstiffXs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%bstiffYs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%time) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%r)) deallocate(OutData%r) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%r(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%r.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%r) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rd)) deallocate(OutData%rd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rd(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%q)) deallocate(OutData%q) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%q(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%q.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%q) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%qs)) deallocate(OutData%qs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%qs(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%qs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%qs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%l)) deallocate(OutData%l) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%l(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%l.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%l) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ld)) deallocate(OutData%ld) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ld(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ld.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ld) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%lstr)) deallocate(OutData%lstr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%lstr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%lstr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%lstr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%lstrd)) deallocate(OutData%lstrd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%lstrd(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%lstrd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%lstrd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Kurv)) deallocate(OutData%Kurv) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Kurv(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Kurv.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Kurv) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dl_1)) deallocate(OutData%dl_1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dl_1(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dl_1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dl_1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%V)) deallocate(OutData%V) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%V(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%V.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%V) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%U)) deallocate(OutData%U) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%U(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%U.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%U) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Ud)) deallocate(OutData%Ud) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Ud(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Ud.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Ud) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%zeta)) deallocate(OutData%zeta) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%zeta(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%zeta.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%zeta) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PDyn)) deallocate(OutData%PDyn) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PDyn(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PDyn.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PDyn) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%T)) deallocate(OutData%T) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%T(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%T.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%T) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Td)) deallocate(OutData%Td) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Td(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Td.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Td) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%W)) deallocate(OutData%W) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%W(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%W.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%W) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Dp)) deallocate(OutData%Dp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Dp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Dp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Dp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Dq)) deallocate(OutData%Dq) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Dq(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Dq.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Dq) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Ap)) deallocate(OutData%Ap) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Ap(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Ap.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Ap) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Aq)) deallocate(OutData%Aq) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Aq(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Aq.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Aq) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%B)) deallocate(OutData%B) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%B(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%B.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%B) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Bs)) deallocate(OutData%Bs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Bs(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Bs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Bs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Fnet)) deallocate(OutData%Fnet) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Fnet(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fnet.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Fnet) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%S)) deallocate(OutData%S) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%S(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%S.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%S) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%M)) deallocate(OutData%M) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%M(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%M.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%M) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%EndMomentA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EndMomentB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LineUnOut) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%LineWrOutput)) deallocate(OutData%LineWrOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LineWrOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LineWrOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LineWrOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%IdNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PropsIdNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ElasticMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFlagList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CtrlChan); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FairPoint); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AnchPoint); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%N); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%endTypeA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%endTypeB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UnstrLen); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rho); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%d); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EA_D); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BA_D); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Can); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cdn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Cdt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nEApoints); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%stiffXs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%stiffYs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nBApoints); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dampXs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dampYs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nEIpoints); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%bstiffXs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%bstiffYs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%time); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%r); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%q); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%qs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%l); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ld); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%lstr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%lstrd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Kurv); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dl_1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%V); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%U); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Ud); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%zeta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PDyn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%T); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Td); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%W); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Dp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Dq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Ap); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Aq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%B); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Bs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Fnet); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%S); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%M); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EndMomentA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EndMomentB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LineUnOut); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LineWrOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyFail(SrcFailData, DstFailData, CtrlCode, ErrStat, ErrMsg) @@ -3220,22 +2183,21 @@ subroutine MD_DestroyFail(FailData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine MD_PackFail(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackFail(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_Fail), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackFail' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%IdNum) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%IdNum) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackFail(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackFail(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_Fail), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackFail' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%IdNum) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%IdNum); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyOutParmType(SrcOutParmTypeData, DstOutParmTypeData, CtrlCode, ErrStat, ErrMsg) @@ -3264,37 +2226,31 @@ subroutine MD_DestroyOutParmType(OutParmTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine MD_PackOutParmType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackOutParmType(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_OutParmType), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackOutParmType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Name) - call RegPack(Buf, InData%Units) - call RegPack(Buf, InData%QType) - call RegPack(Buf, InData%OType) - call RegPack(Buf, InData%NodeID) - call RegPack(Buf, InData%ObjID) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Name) + call RegPack(RF, InData%Units) + call RegPack(RF, InData%QType) + call RegPack(RF, InData%OType) + call RegPack(RF, InData%NodeID) + call RegPack(RF, InData%ObjID) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackOutParmType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackOutParmType(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_OutParmType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackOutParmType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Name) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Units) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%QType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NodeID) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ObjID) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Name); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Units); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%QType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NodeID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ObjID); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyVisDiam(SrcVisDiamData, DstVisDiamData, CtrlCode, ErrStat, ErrMsg) @@ -3334,41 +2290,24 @@ subroutine MD_DestroyVisDiam(VisDiamData, ErrStat, ErrMsg) end if end subroutine -subroutine MD_PackVisDiam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackVisDiam(RF, Indata) + type(RegFile), intent(inout) :: RF type(VisDiam), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackVisDiam' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Diam)) - if (allocated(InData%Diam)) then - call RegPackBounds(Buf, 1, lbound(InData%Diam, kind=B8Ki), ubound(InData%Diam, kind=B8Ki)) - call RegPack(Buf, InData%Diam) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%Diam) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackVisDiam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackVisDiam(RF, OutData) + type(RegFile), intent(inout) :: RF type(VisDiam), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackVisDiam' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%Diam)) deallocate(OutData%Diam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Diam(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Diam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Diam) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%Diam); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -3553,248 +2492,61 @@ subroutine MD_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) deallocate(InitOutputData%RotFrame_y) end if if (allocated(InitOutputData%RotFrame_x)) then - deallocate(InitOutputData%RotFrame_x) - end if - if (allocated(InitOutputData%RotFrame_u)) then - deallocate(InitOutputData%RotFrame_u) - end if - if (allocated(InitOutputData%IsLoad_u)) then - deallocate(InitOutputData%IsLoad_u) - end if - if (allocated(InitOutputData%DerivOrder_x)) then - deallocate(InitOutputData%DerivOrder_x) - end if -end subroutine - -subroutine MD_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf - type(MD_InitOutputType), intent(in) :: InData - character(*), parameter :: RoutineName = 'MD_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%writeOutputHdr)) - if (allocated(InData%writeOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%writeOutputHdr, kind=B8Ki), ubound(InData%writeOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%writeOutputHdr) - end if - call RegPack(Buf, allocated(InData%writeOutputUnt)) - if (allocated(InData%writeOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%writeOutputUnt, kind=B8Ki), ubound(InData%writeOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%writeOutputUnt) - end if - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call RegPack(Buf, allocated(InData%CableCChanRqst)) - if (allocated(InData%CableCChanRqst)) then - call RegPackBounds(Buf, 1, lbound(InData%CableCChanRqst, kind=B8Ki), ubound(InData%CableCChanRqst, kind=B8Ki)) - call RegPack(Buf, InData%CableCChanRqst) - end if - call RegPack(Buf, allocated(InData%LinNames_y)) - if (allocated(InData%LinNames_y)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_y, kind=B8Ki), ubound(InData%LinNames_y, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_y) - end if - call RegPack(Buf, allocated(InData%LinNames_x)) - if (allocated(InData%LinNames_x)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_x, kind=B8Ki), ubound(InData%LinNames_x, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_x) - end if - call RegPack(Buf, allocated(InData%LinNames_u)) - if (allocated(InData%LinNames_u)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_u, kind=B8Ki), ubound(InData%LinNames_u, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_u) - end if - call RegPack(Buf, allocated(InData%RotFrame_y)) - if (allocated(InData%RotFrame_y)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_y, kind=B8Ki), ubound(InData%RotFrame_y, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_y) - end if - call RegPack(Buf, allocated(InData%RotFrame_x)) - if (allocated(InData%RotFrame_x)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_x, kind=B8Ki), ubound(InData%RotFrame_x, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_x) - end if - call RegPack(Buf, allocated(InData%RotFrame_u)) - if (allocated(InData%RotFrame_u)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_u, kind=B8Ki), ubound(InData%RotFrame_u, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_u) - end if - call RegPack(Buf, allocated(InData%IsLoad_u)) - if (allocated(InData%IsLoad_u)) then - call RegPackBounds(Buf, 1, lbound(InData%IsLoad_u, kind=B8Ki), ubound(InData%IsLoad_u, kind=B8Ki)) - call RegPack(Buf, InData%IsLoad_u) - end if - call RegPack(Buf, allocated(InData%DerivOrder_x)) - if (allocated(InData%DerivOrder_x)) then - call RegPackBounds(Buf, 1, lbound(InData%DerivOrder_x, kind=B8Ki), ubound(InData%DerivOrder_x, kind=B8Ki)) - call RegPack(Buf, InData%DerivOrder_x) - end if - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine MD_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf - type(MD_InitOutputType), intent(inout) :: OutData - character(*), parameter :: RoutineName = 'MD_UnPackInitOutput' - integer(B8Ki) :: LB(1), UB(1) - integer(IntKi) :: stat - logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%writeOutputHdr)) deallocate(OutData%writeOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%writeOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%writeOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%writeOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%writeOutputUnt)) deallocate(OutData%writeOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%writeOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%writeOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%writeOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver - if (allocated(OutData%CableCChanRqst)) deallocate(OutData%CableCChanRqst) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CableCChanRqst(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CableCChanRqst.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CableCChanRqst) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_y)) deallocate(OutData%LinNames_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_x)) deallocate(OutData%LinNames_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_u)) deallocate(OutData%LinNames_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_y)) deallocate(OutData%RotFrame_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_x)) deallocate(OutData%RotFrame_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_x) - if (RegCheckErr(Buf, RoutineName)) return + deallocate(InitOutputData%RotFrame_x) end if - if (allocated(OutData%RotFrame_u)) deallocate(OutData%RotFrame_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_u) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(InitOutputData%RotFrame_u)) then + deallocate(InitOutputData%RotFrame_u) end if - if (allocated(OutData%IsLoad_u)) deallocate(OutData%IsLoad_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IsLoad_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IsLoad_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IsLoad_u) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(InitOutputData%IsLoad_u)) then + deallocate(InitOutputData%IsLoad_u) end if - if (allocated(OutData%DerivOrder_x)) deallocate(OutData%DerivOrder_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DerivOrder_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DerivOrder_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DerivOrder_x) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(InitOutputData%DerivOrder_x)) then + deallocate(InitOutputData%DerivOrder_x) end if end subroutine +subroutine MD_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF + type(MD_InitOutputType), intent(in) :: InData + character(*), parameter :: RoutineName = 'MD_PackInitOutput' + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%writeOutputHdr) + call RegPackAlloc(RF, InData%writeOutputUnt) + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call RegPackAlloc(RF, InData%CableCChanRqst) + call RegPackAlloc(RF, InData%LinNames_y) + call RegPackAlloc(RF, InData%LinNames_x) + call RegPackAlloc(RF, InData%LinNames_u) + call RegPackAlloc(RF, InData%RotFrame_y) + call RegPackAlloc(RF, InData%RotFrame_x) + call RegPackAlloc(RF, InData%RotFrame_u) + call RegPackAlloc(RF, InData%IsLoad_u) + call RegPackAlloc(RF, InData%DerivOrder_x) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine MD_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF + type(MD_InitOutputType), intent(inout) :: OutData + character(*), parameter :: RoutineName = 'MD_UnPackInitOutput' + integer(B8Ki) :: LB(1), UB(1) + integer(IntKi) :: stat + logical :: IsAllocAssoc + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%writeOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%writeOutputUnt); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver + call RegUnpackAlloc(RF, OutData%CableCChanRqst); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IsLoad_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DerivOrder_x); if (RegCheckErr(RF, RoutineName)) return +end subroutine + subroutine MD_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) type(MD_ContinuousStateType), intent(in) :: SrcContStateData type(MD_ContinuousStateType), intent(inout) :: DstContStateData @@ -3832,41 +2584,24 @@ subroutine MD_DestroyContState(ContStateData, ErrStat, ErrMsg) end if end subroutine -subroutine MD_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%states)) - if (allocated(InData%states)) then - call RegPackBounds(Buf, 1, lbound(InData%states, kind=B8Ki), ubound(InData%states, kind=B8Ki)) - call RegPack(Buf, InData%states) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%states) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackContState' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%states)) deallocate(OutData%states) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%states(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%states.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%states) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%states); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -3890,22 +2625,21 @@ subroutine MD_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine MD_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%dummy) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%dummy); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -3929,22 +2663,21 @@ subroutine MD_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine MD_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%dummy) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%dummy); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -3968,22 +2701,21 @@ subroutine MD_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine MD_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%dummy) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackOtherState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%dummy); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -4494,575 +3226,233 @@ subroutine MD_DestroyMisc(MiscData, ErrStat, ErrMsg) end if end subroutine -subroutine MD_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackMisc' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%LineTypeList)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%LineTypeList)) if (allocated(InData%LineTypeList)) then - call RegPackBounds(Buf, 1, lbound(InData%LineTypeList, kind=B8Ki), ubound(InData%LineTypeList, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%LineTypeList, kind=B8Ki), ubound(InData%LineTypeList, kind=B8Ki)) LB(1:1) = lbound(InData%LineTypeList, kind=B8Ki) UB(1:1) = ubound(InData%LineTypeList, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackLineProp(Buf, InData%LineTypeList(i1)) + call MD_PackLineProp(RF, InData%LineTypeList(i1)) end do end if - call RegPack(Buf, allocated(InData%RodTypeList)) + call RegPack(RF, allocated(InData%RodTypeList)) if (allocated(InData%RodTypeList)) then - call RegPackBounds(Buf, 1, lbound(InData%RodTypeList, kind=B8Ki), ubound(InData%RodTypeList, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%RodTypeList, kind=B8Ki), ubound(InData%RodTypeList, kind=B8Ki)) LB(1:1) = lbound(InData%RodTypeList, kind=B8Ki) UB(1:1) = ubound(InData%RodTypeList, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackRodProp(Buf, InData%RodTypeList(i1)) + call MD_PackRodProp(RF, InData%RodTypeList(i1)) end do end if - call MD_PackBody(Buf, InData%GroundBody) - call RegPack(Buf, allocated(InData%BodyList)) + call MD_PackBody(RF, InData%GroundBody) + call RegPack(RF, allocated(InData%BodyList)) if (allocated(InData%BodyList)) then - call RegPackBounds(Buf, 1, lbound(InData%BodyList, kind=B8Ki), ubound(InData%BodyList, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BodyList, kind=B8Ki), ubound(InData%BodyList, kind=B8Ki)) LB(1:1) = lbound(InData%BodyList, kind=B8Ki) UB(1:1) = ubound(InData%BodyList, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackBody(Buf, InData%BodyList(i1)) + call MD_PackBody(RF, InData%BodyList(i1)) end do end if - call RegPack(Buf, allocated(InData%RodList)) + call RegPack(RF, allocated(InData%RodList)) if (allocated(InData%RodList)) then - call RegPackBounds(Buf, 1, lbound(InData%RodList, kind=B8Ki), ubound(InData%RodList, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%RodList, kind=B8Ki), ubound(InData%RodList, kind=B8Ki)) LB(1:1) = lbound(InData%RodList, kind=B8Ki) UB(1:1) = ubound(InData%RodList, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackRod(Buf, InData%RodList(i1)) + call MD_PackRod(RF, InData%RodList(i1)) end do end if - call RegPack(Buf, allocated(InData%PointList)) + call RegPack(RF, allocated(InData%PointList)) if (allocated(InData%PointList)) then - call RegPackBounds(Buf, 1, lbound(InData%PointList, kind=B8Ki), ubound(InData%PointList, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%PointList, kind=B8Ki), ubound(InData%PointList, kind=B8Ki)) LB(1:1) = lbound(InData%PointList, kind=B8Ki) UB(1:1) = ubound(InData%PointList, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackPoint(Buf, InData%PointList(i1)) + call MD_PackPoint(RF, InData%PointList(i1)) end do end if - call RegPack(Buf, allocated(InData%LineList)) + call RegPack(RF, allocated(InData%LineList)) if (allocated(InData%LineList)) then - call RegPackBounds(Buf, 1, lbound(InData%LineList, kind=B8Ki), ubound(InData%LineList, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%LineList, kind=B8Ki), ubound(InData%LineList, kind=B8Ki)) LB(1:1) = lbound(InData%LineList, kind=B8Ki) UB(1:1) = ubound(InData%LineList, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackLine(Buf, InData%LineList(i1)) + call MD_PackLine(RF, InData%LineList(i1)) end do end if - call RegPack(Buf, allocated(InData%FailList)) + call RegPack(RF, allocated(InData%FailList)) if (allocated(InData%FailList)) then - call RegPackBounds(Buf, 1, lbound(InData%FailList, kind=B8Ki), ubound(InData%FailList, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%FailList, kind=B8Ki), ubound(InData%FailList, kind=B8Ki)) LB(1:1) = lbound(InData%FailList, kind=B8Ki) UB(1:1) = ubound(InData%FailList, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackFail(Buf, InData%FailList(i1)) + call MD_PackFail(RF, InData%FailList(i1)) end do end if - call RegPack(Buf, allocated(InData%FreePointIs)) - if (allocated(InData%FreePointIs)) then - call RegPackBounds(Buf, 1, lbound(InData%FreePointIs, kind=B8Ki), ubound(InData%FreePointIs, kind=B8Ki)) - call RegPack(Buf, InData%FreePointIs) - end if - call RegPack(Buf, allocated(InData%CpldPointIs)) - if (allocated(InData%CpldPointIs)) then - call RegPackBounds(Buf, 2, lbound(InData%CpldPointIs, kind=B8Ki), ubound(InData%CpldPointIs, kind=B8Ki)) - call RegPack(Buf, InData%CpldPointIs) - end if - call RegPack(Buf, allocated(InData%FreeRodIs)) - if (allocated(InData%FreeRodIs)) then - call RegPackBounds(Buf, 1, lbound(InData%FreeRodIs, kind=B8Ki), ubound(InData%FreeRodIs, kind=B8Ki)) - call RegPack(Buf, InData%FreeRodIs) - end if - call RegPack(Buf, allocated(InData%CpldRodIs)) - if (allocated(InData%CpldRodIs)) then - call RegPackBounds(Buf, 2, lbound(InData%CpldRodIs, kind=B8Ki), ubound(InData%CpldRodIs, kind=B8Ki)) - call RegPack(Buf, InData%CpldRodIs) - end if - call RegPack(Buf, allocated(InData%FreeBodyIs)) - if (allocated(InData%FreeBodyIs)) then - call RegPackBounds(Buf, 1, lbound(InData%FreeBodyIs, kind=B8Ki), ubound(InData%FreeBodyIs, kind=B8Ki)) - call RegPack(Buf, InData%FreeBodyIs) - end if - call RegPack(Buf, allocated(InData%CpldBodyIs)) - if (allocated(InData%CpldBodyIs)) then - call RegPackBounds(Buf, 2, lbound(InData%CpldBodyIs, kind=B8Ki), ubound(InData%CpldBodyIs, kind=B8Ki)) - call RegPack(Buf, InData%CpldBodyIs) - end if - call RegPack(Buf, allocated(InData%LineStateIs1)) - if (allocated(InData%LineStateIs1)) then - call RegPackBounds(Buf, 1, lbound(InData%LineStateIs1, kind=B8Ki), ubound(InData%LineStateIs1, kind=B8Ki)) - call RegPack(Buf, InData%LineStateIs1) - end if - call RegPack(Buf, allocated(InData%LineStateIsN)) - if (allocated(InData%LineStateIsN)) then - call RegPackBounds(Buf, 1, lbound(InData%LineStateIsN, kind=B8Ki), ubound(InData%LineStateIsN, kind=B8Ki)) - call RegPack(Buf, InData%LineStateIsN) - end if - call RegPack(Buf, allocated(InData%PointStateIs1)) - if (allocated(InData%PointStateIs1)) then - call RegPackBounds(Buf, 1, lbound(InData%PointStateIs1, kind=B8Ki), ubound(InData%PointStateIs1, kind=B8Ki)) - call RegPack(Buf, InData%PointStateIs1) - end if - call RegPack(Buf, allocated(InData%PointStateIsN)) - if (allocated(InData%PointStateIsN)) then - call RegPackBounds(Buf, 1, lbound(InData%PointStateIsN, kind=B8Ki), ubound(InData%PointStateIsN, kind=B8Ki)) - call RegPack(Buf, InData%PointStateIsN) - end if - call RegPack(Buf, allocated(InData%RodStateIs1)) - if (allocated(InData%RodStateIs1)) then - call RegPackBounds(Buf, 1, lbound(InData%RodStateIs1, kind=B8Ki), ubound(InData%RodStateIs1, kind=B8Ki)) - call RegPack(Buf, InData%RodStateIs1) - end if - call RegPack(Buf, allocated(InData%RodStateIsN)) - if (allocated(InData%RodStateIsN)) then - call RegPackBounds(Buf, 1, lbound(InData%RodStateIsN, kind=B8Ki), ubound(InData%RodStateIsN, kind=B8Ki)) - call RegPack(Buf, InData%RodStateIsN) - end if - call RegPack(Buf, allocated(InData%BodyStateIs1)) - if (allocated(InData%BodyStateIs1)) then - call RegPackBounds(Buf, 1, lbound(InData%BodyStateIs1, kind=B8Ki), ubound(InData%BodyStateIs1, kind=B8Ki)) - call RegPack(Buf, InData%BodyStateIs1) - end if - call RegPack(Buf, allocated(InData%BodyStateIsN)) - if (allocated(InData%BodyStateIsN)) then - call RegPackBounds(Buf, 1, lbound(InData%BodyStateIsN, kind=B8Ki), ubound(InData%BodyStateIsN, kind=B8Ki)) - call RegPack(Buf, InData%BodyStateIsN) - end if - call RegPack(Buf, InData%Nx) - call RegPack(Buf, InData%WaveTi) - call MD_PackContState(Buf, InData%xTemp) - call MD_PackContState(Buf, InData%xdTemp) - call RegPack(Buf, InData%zeros6) - call RegPack(Buf, allocated(InData%MDWrOutput)) - if (allocated(InData%MDWrOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%MDWrOutput, kind=B8Ki), ubound(InData%MDWrOutput, kind=B8Ki)) - call RegPack(Buf, InData%MDWrOutput) - end if - call RegPack(Buf, InData%LastOutTime) - call RegPack(Buf, InData%PtfmInit) - call RegPack(Buf, allocated(InData%BathymetryGrid)) - if (allocated(InData%BathymetryGrid)) then - call RegPackBounds(Buf, 2, lbound(InData%BathymetryGrid, kind=B8Ki), ubound(InData%BathymetryGrid, kind=B8Ki)) - call RegPack(Buf, InData%BathymetryGrid) - end if - call RegPack(Buf, allocated(InData%BathGrid_Xs)) - if (allocated(InData%BathGrid_Xs)) then - call RegPackBounds(Buf, 1, lbound(InData%BathGrid_Xs, kind=B8Ki), ubound(InData%BathGrid_Xs, kind=B8Ki)) - call RegPack(Buf, InData%BathGrid_Xs) - end if - call RegPack(Buf, allocated(InData%BathGrid_Ys)) - if (allocated(InData%BathGrid_Ys)) then - call RegPackBounds(Buf, 1, lbound(InData%BathGrid_Ys, kind=B8Ki), ubound(InData%BathGrid_Ys, kind=B8Ki)) - call RegPack(Buf, InData%BathGrid_Ys) - end if - call RegPack(Buf, allocated(InData%BathGrid_npoints)) - if (allocated(InData%BathGrid_npoints)) then - call RegPackBounds(Buf, 1, lbound(InData%BathGrid_npoints, kind=B8Ki), ubound(InData%BathGrid_npoints, kind=B8Ki)) - call RegPack(Buf, InData%BathGrid_npoints) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%FreePointIs) + call RegPackAlloc(RF, InData%CpldPointIs) + call RegPackAlloc(RF, InData%FreeRodIs) + call RegPackAlloc(RF, InData%CpldRodIs) + call RegPackAlloc(RF, InData%FreeBodyIs) + call RegPackAlloc(RF, InData%CpldBodyIs) + call RegPackAlloc(RF, InData%LineStateIs1) + call RegPackAlloc(RF, InData%LineStateIsN) + call RegPackAlloc(RF, InData%PointStateIs1) + call RegPackAlloc(RF, InData%PointStateIsN) + call RegPackAlloc(RF, InData%RodStateIs1) + call RegPackAlloc(RF, InData%RodStateIsN) + call RegPackAlloc(RF, InData%BodyStateIs1) + call RegPackAlloc(RF, InData%BodyStateIsN) + call RegPack(RF, InData%Nx) + call RegPack(RF, InData%WaveTi) + call MD_PackContState(RF, InData%xTemp) + call MD_PackContState(RF, InData%xdTemp) + call RegPack(RF, InData%zeros6) + call RegPackAlloc(RF, InData%MDWrOutput) + call RegPack(RF, InData%LastOutTime) + call RegPack(RF, InData%PtfmInit) + call RegPackAlloc(RF, InData%BathymetryGrid) + call RegPackAlloc(RF, InData%BathGrid_Xs) + call RegPackAlloc(RF, InData%BathGrid_Ys) + call RegPackAlloc(RF, InData%BathGrid_npoints) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackMisc' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%LineTypeList)) deallocate(OutData%LineTypeList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%LineTypeList(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LineTypeList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LineTypeList.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MD_UnpackLineProp(Buf, OutData%LineTypeList(i1)) ! LineTypeList + call MD_UnpackLineProp(RF, OutData%LineTypeList(i1)) ! LineTypeList end do end if if (allocated(OutData%RodTypeList)) deallocate(OutData%RodTypeList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%RodTypeList(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RodTypeList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RodTypeList.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MD_UnpackRodProp(Buf, OutData%RodTypeList(i1)) ! RodTypeList + call MD_UnpackRodProp(RF, OutData%RodTypeList(i1)) ! RodTypeList end do end if - call MD_UnpackBody(Buf, OutData%GroundBody) ! GroundBody + call MD_UnpackBody(RF, OutData%GroundBody) ! GroundBody if (allocated(OutData%BodyList)) deallocate(OutData%BodyList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BodyList(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BodyList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BodyList.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MD_UnpackBody(Buf, OutData%BodyList(i1)) ! BodyList + call MD_UnpackBody(RF, OutData%BodyList(i1)) ! BodyList end do end if if (allocated(OutData%RodList)) deallocate(OutData%RodList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%RodList(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RodList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RodList.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MD_UnpackRod(Buf, OutData%RodList(i1)) ! RodList + call MD_UnpackRod(RF, OutData%RodList(i1)) ! RodList end do end if if (allocated(OutData%PointList)) deallocate(OutData%PointList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%PointList(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PointList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PointList.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MD_UnpackPoint(Buf, OutData%PointList(i1)) ! PointList + call MD_UnpackPoint(RF, OutData%PointList(i1)) ! PointList end do end if if (allocated(OutData%LineList)) deallocate(OutData%LineList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%LineList(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LineList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LineList.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MD_UnpackLine(Buf, OutData%LineList(i1)) ! LineList + call MD_UnpackLine(RF, OutData%LineList(i1)) ! LineList end do end if if (allocated(OutData%FailList)) deallocate(OutData%FailList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%FailList(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FailList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FailList.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MD_UnpackFail(Buf, OutData%FailList(i1)) ! FailList + call MD_UnpackFail(RF, OutData%FailList(i1)) ! FailList end do end if - if (allocated(OutData%FreePointIs)) deallocate(OutData%FreePointIs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FreePointIs(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FreePointIs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FreePointIs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CpldPointIs)) deallocate(OutData%CpldPointIs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CpldPointIs(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CpldPointIs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CpldPointIs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FreeRodIs)) deallocate(OutData%FreeRodIs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FreeRodIs(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FreeRodIs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FreeRodIs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CpldRodIs)) deallocate(OutData%CpldRodIs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CpldRodIs(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CpldRodIs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CpldRodIs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FreeBodyIs)) deallocate(OutData%FreeBodyIs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FreeBodyIs(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FreeBodyIs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FreeBodyIs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CpldBodyIs)) deallocate(OutData%CpldBodyIs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CpldBodyIs(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CpldBodyIs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CpldBodyIs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LineStateIs1)) deallocate(OutData%LineStateIs1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LineStateIs1(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LineStateIs1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LineStateIs1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LineStateIsN)) deallocate(OutData%LineStateIsN) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LineStateIsN(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LineStateIsN.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LineStateIsN) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PointStateIs1)) deallocate(OutData%PointStateIs1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PointStateIs1(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PointStateIs1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PointStateIs1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PointStateIsN)) deallocate(OutData%PointStateIsN) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PointStateIsN(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PointStateIsN.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PointStateIsN) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RodStateIs1)) deallocate(OutData%RodStateIs1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RodStateIs1(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RodStateIs1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RodStateIs1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RodStateIsN)) deallocate(OutData%RodStateIsN) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RodStateIsN(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RodStateIsN.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RodStateIsN) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BodyStateIs1)) deallocate(OutData%BodyStateIs1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BodyStateIs1(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BodyStateIs1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BodyStateIs1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BodyStateIsN)) deallocate(OutData%BodyStateIsN) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BodyStateIsN(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BodyStateIsN.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BodyStateIsN) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Nx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveTi) - if (RegCheckErr(Buf, RoutineName)) return - call MD_UnpackContState(Buf, OutData%xTemp) ! xTemp - call MD_UnpackContState(Buf, OutData%xdTemp) ! xdTemp - call RegUnpack(Buf, OutData%zeros6) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%MDWrOutput)) deallocate(OutData%MDWrOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MDWrOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MDWrOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MDWrOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%LastOutTime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmInit) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BathymetryGrid)) deallocate(OutData%BathymetryGrid) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BathymetryGrid(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BathymetryGrid.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BathymetryGrid) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BathGrid_Xs)) deallocate(OutData%BathGrid_Xs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BathGrid_Xs(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BathGrid_Xs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BathGrid_Xs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BathGrid_Ys)) deallocate(OutData%BathGrid_Ys) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BathGrid_Ys(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BathGrid_Ys.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BathGrid_Ys) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BathGrid_npoints)) deallocate(OutData%BathGrid_npoints) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BathGrid_npoints(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BathGrid_npoints.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BathGrid_npoints) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%FreePointIs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CpldPointIs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FreeRodIs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CpldRodIs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FreeBodyIs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CpldBodyIs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LineStateIs1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LineStateIsN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PointStateIs1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PointStateIsN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RodStateIs1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RodStateIsN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BodyStateIs1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BodyStateIsN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Nx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveTi); if (RegCheckErr(RF, RoutineName)) return + call MD_UnpackContState(RF, OutData%xTemp) ! xTemp + call MD_UnpackContState(RF, OutData%xdTemp) ! xdTemp + call RegUnpack(RF, OutData%zeros6); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MDWrOutput); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LastOutTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmInit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BathymetryGrid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BathGrid_Xs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BathGrid_Ys); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BathGrid_npoints); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -5520,630 +3910,205 @@ subroutine MD_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine MD_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackParam' integer(B8Ki) :: i1, i2, i3, i4 integer(B8Ki) :: LB(4), UB(4) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%nLineTypes) - call RegPack(Buf, InData%nRodTypes) - call RegPack(Buf, InData%nPoints) - call RegPack(Buf, InData%nPointsExtra) - call RegPack(Buf, InData%nBodies) - call RegPack(Buf, InData%nRods) - call RegPack(Buf, InData%nLines) - call RegPack(Buf, InData%nCtrlChans) - call RegPack(Buf, InData%nFails) - call RegPack(Buf, InData%nFreeBodies) - call RegPack(Buf, InData%nFreeRods) - call RegPack(Buf, InData%nFreePoints) - call RegPack(Buf, allocated(InData%nCpldBodies)) - if (allocated(InData%nCpldBodies)) then - call RegPackBounds(Buf, 1, lbound(InData%nCpldBodies, kind=B8Ki), ubound(InData%nCpldBodies, kind=B8Ki)) - call RegPack(Buf, InData%nCpldBodies) - end if - call RegPack(Buf, allocated(InData%nCpldRods)) - if (allocated(InData%nCpldRods)) then - call RegPackBounds(Buf, 1, lbound(InData%nCpldRods, kind=B8Ki), ubound(InData%nCpldRods, kind=B8Ki)) - call RegPack(Buf, InData%nCpldRods) - end if - call RegPack(Buf, allocated(InData%nCpldPoints)) - if (allocated(InData%nCpldPoints)) then - call RegPackBounds(Buf, 1, lbound(InData%nCpldPoints, kind=B8Ki), ubound(InData%nCpldPoints, kind=B8Ki)) - call RegPack(Buf, InData%nCpldPoints) - end if - call RegPack(Buf, InData%NConns) - call RegPack(Buf, InData%NAnchs) - call RegPack(Buf, InData%Tmax) - call RegPack(Buf, InData%g) - call RegPack(Buf, InData%rhoW) - call RegPack(Buf, InData%WtrDpth) - call RegPack(Buf, InData%kBot) - call RegPack(Buf, InData%cBot) - call RegPack(Buf, InData%dtM0) - call RegPack(Buf, InData%dtCoupling) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, InData%dtOut) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, allocated(InData%OutParam)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%nLineTypes) + call RegPack(RF, InData%nRodTypes) + call RegPack(RF, InData%nPoints) + call RegPack(RF, InData%nPointsExtra) + call RegPack(RF, InData%nBodies) + call RegPack(RF, InData%nRods) + call RegPack(RF, InData%nLines) + call RegPack(RF, InData%nCtrlChans) + call RegPack(RF, InData%nFails) + call RegPack(RF, InData%nFreeBodies) + call RegPack(RF, InData%nFreeRods) + call RegPack(RF, InData%nFreePoints) + call RegPackAlloc(RF, InData%nCpldBodies) + call RegPackAlloc(RF, InData%nCpldRods) + call RegPackAlloc(RF, InData%nCpldPoints) + call RegPack(RF, InData%NConns) + call RegPack(RF, InData%NAnchs) + call RegPack(RF, InData%Tmax) + call RegPack(RF, InData%g) + call RegPack(RF, InData%rhoW) + call RegPack(RF, InData%WtrDpth) + call RegPack(RF, InData%kBot) + call RegPack(RF, InData%cBot) + call RegPack(RF, InData%dtM0) + call RegPack(RF, InData%dtCoupling) + call RegPack(RF, InData%NumOuts) + call RegPack(RF, InData%dtOut) + call RegPack(RF, InData%RootName) + call RegPack(RF, allocated(InData%OutParam)) if (allocated(InData%OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) LB(1:1) = lbound(InData%OutParam, kind=B8Ki) UB(1:1) = ubound(InData%OutParam, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackOutParmType(Buf, InData%OutParam(i1)) + call MD_PackOutParmType(RF, InData%OutParam(i1)) end do end if - call RegPack(Buf, InData%Delim) - call RegPack(Buf, InData%MDUnOut) - call RegPack(Buf, InData%PriPath) - call RegPack(Buf, InData%writeLog) - call RegPack(Buf, InData%UnLog) - call RegPack(Buf, InData%WaveKin) - call RegPack(Buf, InData%Current) - call RegPack(Buf, InData%nTurbines) - call RegPack(Buf, allocated(InData%TurbineRefPos)) - if (allocated(InData%TurbineRefPos)) then - call RegPackBounds(Buf, 2, lbound(InData%TurbineRefPos, kind=B8Ki), ubound(InData%TurbineRefPos, kind=B8Ki)) - call RegPack(Buf, InData%TurbineRefPos) - end if - call RegPack(Buf, InData%mu_kT) - call RegPack(Buf, InData%mu_kA) - call RegPack(Buf, InData%mc) - call RegPack(Buf, InData%cv) - call RegPack(Buf, InData%nxWave) - call RegPack(Buf, InData%nyWave) - call RegPack(Buf, InData%nzWave) - call RegPack(Buf, InData%ntWave) - call RegPack(Buf, allocated(InData%pxWave)) - if (allocated(InData%pxWave)) then - call RegPackBounds(Buf, 1, lbound(InData%pxWave, kind=B8Ki), ubound(InData%pxWave, kind=B8Ki)) - call RegPack(Buf, InData%pxWave) - end if - call RegPack(Buf, allocated(InData%pyWave)) - if (allocated(InData%pyWave)) then - call RegPackBounds(Buf, 1, lbound(InData%pyWave, kind=B8Ki), ubound(InData%pyWave, kind=B8Ki)) - call RegPack(Buf, InData%pyWave) - end if - call RegPack(Buf, allocated(InData%pzWave)) - if (allocated(InData%pzWave)) then - call RegPackBounds(Buf, 1, lbound(InData%pzWave, kind=B8Ki), ubound(InData%pzWave, kind=B8Ki)) - call RegPack(Buf, InData%pzWave) - end if - call RegPack(Buf, InData%dtWave) - call RegPack(Buf, allocated(InData%uxWave)) - if (allocated(InData%uxWave)) then - call RegPackBounds(Buf, 4, lbound(InData%uxWave, kind=B8Ki), ubound(InData%uxWave, kind=B8Ki)) - call RegPack(Buf, InData%uxWave) - end if - call RegPack(Buf, allocated(InData%uyWave)) - if (allocated(InData%uyWave)) then - call RegPackBounds(Buf, 4, lbound(InData%uyWave, kind=B8Ki), ubound(InData%uyWave, kind=B8Ki)) - call RegPack(Buf, InData%uyWave) - end if - call RegPack(Buf, allocated(InData%uzWave)) - if (allocated(InData%uzWave)) then - call RegPackBounds(Buf, 4, lbound(InData%uzWave, kind=B8Ki), ubound(InData%uzWave, kind=B8Ki)) - call RegPack(Buf, InData%uzWave) - end if - call RegPack(Buf, allocated(InData%axWave)) - if (allocated(InData%axWave)) then - call RegPackBounds(Buf, 4, lbound(InData%axWave, kind=B8Ki), ubound(InData%axWave, kind=B8Ki)) - call RegPack(Buf, InData%axWave) - end if - call RegPack(Buf, allocated(InData%ayWave)) - if (allocated(InData%ayWave)) then - call RegPackBounds(Buf, 4, lbound(InData%ayWave, kind=B8Ki), ubound(InData%ayWave, kind=B8Ki)) - call RegPack(Buf, InData%ayWave) - end if - call RegPack(Buf, allocated(InData%azWave)) - if (allocated(InData%azWave)) then - call RegPackBounds(Buf, 4, lbound(InData%azWave, kind=B8Ki), ubound(InData%azWave, kind=B8Ki)) - call RegPack(Buf, InData%azWave) - end if - call RegPack(Buf, allocated(InData%PDyn)) - if (allocated(InData%PDyn)) then - call RegPackBounds(Buf, 4, lbound(InData%PDyn, kind=B8Ki), ubound(InData%PDyn, kind=B8Ki)) - call RegPack(Buf, InData%PDyn) - end if - call RegPack(Buf, allocated(InData%zeta)) - if (allocated(InData%zeta)) then - call RegPackBounds(Buf, 3, lbound(InData%zeta, kind=B8Ki), ubound(InData%zeta, kind=B8Ki)) - call RegPack(Buf, InData%zeta) - end if - call RegPack(Buf, InData%nzCurrent) - call RegPack(Buf, allocated(InData%pzCurrent)) - if (allocated(InData%pzCurrent)) then - call RegPackBounds(Buf, 1, lbound(InData%pzCurrent, kind=B8Ki), ubound(InData%pzCurrent, kind=B8Ki)) - call RegPack(Buf, InData%pzCurrent) - end if - call RegPack(Buf, allocated(InData%uxCurrent)) - if (allocated(InData%uxCurrent)) then - call RegPackBounds(Buf, 1, lbound(InData%uxCurrent, kind=B8Ki), ubound(InData%uxCurrent, kind=B8Ki)) - call RegPack(Buf, InData%uxCurrent) - end if - call RegPack(Buf, allocated(InData%uyCurrent)) - if (allocated(InData%uyCurrent)) then - call RegPackBounds(Buf, 1, lbound(InData%uyCurrent, kind=B8Ki), ubound(InData%uyCurrent, kind=B8Ki)) - call RegPack(Buf, InData%uyCurrent) - end if - call RegPack(Buf, InData%Nx0) - call RegPack(Buf, allocated(InData%Jac_u_indx)) - if (allocated(InData%Jac_u_indx)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_u_indx, kind=B8Ki), ubound(InData%Jac_u_indx, kind=B8Ki)) - call RegPack(Buf, InData%Jac_u_indx) - end if - call RegPack(Buf, allocated(InData%du)) - if (allocated(InData%du)) then - call RegPackBounds(Buf, 1, lbound(InData%du, kind=B8Ki), ubound(InData%du, kind=B8Ki)) - call RegPack(Buf, InData%du) - end if - call RegPack(Buf, allocated(InData%dx)) - if (allocated(InData%dx)) then - call RegPackBounds(Buf, 1, lbound(InData%dx, kind=B8Ki), ubound(InData%dx, kind=B8Ki)) - call RegPack(Buf, InData%dx) - end if - call RegPack(Buf, InData%Jac_ny) - call RegPack(Buf, InData%Jac_nx) - call RegPack(Buf, allocated(InData%dxIdx_map2_xStateIdx)) - if (allocated(InData%dxIdx_map2_xStateIdx)) then - call RegPackBounds(Buf, 1, lbound(InData%dxIdx_map2_xStateIdx, kind=B8Ki), ubound(InData%dxIdx_map2_xStateIdx, kind=B8Ki)) - call RegPack(Buf, InData%dxIdx_map2_xStateIdx) - end if - call RegPack(Buf, InData%VisMeshes) - call RegPack(Buf, allocated(InData%VisRodsDiam)) + call RegPack(RF, InData%Delim) + call RegPack(RF, InData%MDUnOut) + call RegPack(RF, InData%PriPath) + call RegPack(RF, InData%writeLog) + call RegPack(RF, InData%UnLog) + call RegPack(RF, InData%WaveKin) + call RegPack(RF, InData%Current) + call RegPack(RF, InData%nTurbines) + call RegPackAlloc(RF, InData%TurbineRefPos) + call RegPack(RF, InData%mu_kT) + call RegPack(RF, InData%mu_kA) + call RegPack(RF, InData%mc) + call RegPack(RF, InData%cv) + call RegPack(RF, InData%nxWave) + call RegPack(RF, InData%nyWave) + call RegPack(RF, InData%nzWave) + call RegPack(RF, InData%ntWave) + call RegPackAlloc(RF, InData%pxWave) + call RegPackAlloc(RF, InData%pyWave) + call RegPackAlloc(RF, InData%pzWave) + call RegPack(RF, InData%dtWave) + call RegPackAlloc(RF, InData%uxWave) + call RegPackAlloc(RF, InData%uyWave) + call RegPackAlloc(RF, InData%uzWave) + call RegPackAlloc(RF, InData%axWave) + call RegPackAlloc(RF, InData%ayWave) + call RegPackAlloc(RF, InData%azWave) + call RegPackAlloc(RF, InData%PDyn) + call RegPackAlloc(RF, InData%zeta) + call RegPack(RF, InData%nzCurrent) + call RegPackAlloc(RF, InData%pzCurrent) + call RegPackAlloc(RF, InData%uxCurrent) + call RegPackAlloc(RF, InData%uyCurrent) + call RegPack(RF, InData%Nx0) + call RegPackAlloc(RF, InData%Jac_u_indx) + call RegPackAlloc(RF, InData%du) + call RegPackAlloc(RF, InData%dx) + call RegPack(RF, InData%Jac_ny) + call RegPack(RF, InData%Jac_nx) + call RegPackAlloc(RF, InData%dxIdx_map2_xStateIdx) + call RegPack(RF, InData%VisMeshes) + call RegPack(RF, allocated(InData%VisRodsDiam)) if (allocated(InData%VisRodsDiam)) then - call RegPackBounds(Buf, 1, lbound(InData%VisRodsDiam, kind=B8Ki), ubound(InData%VisRodsDiam, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%VisRodsDiam, kind=B8Ki), ubound(InData%VisRodsDiam, kind=B8Ki)) LB(1:1) = lbound(InData%VisRodsDiam, kind=B8Ki) UB(1:1) = ubound(InData%VisRodsDiam, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackVisDiam(Buf, InData%VisRodsDiam(i1)) + call MD_PackVisDiam(RF, InData%VisRodsDiam(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackParam' integer(B8Ki) :: i1, i2, i3, i4 integer(B8Ki) :: LB(4), UB(4) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%nLineTypes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nRodTypes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nPoints) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nPointsExtra) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nBodies) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nRods) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nLines) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nCtrlChans) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nFails) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nFreeBodies) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nFreeRods) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nFreePoints) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%nCpldBodies)) deallocate(OutData%nCpldBodies) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%nCpldBodies(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%nCpldBodies.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%nCpldBodies) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%nCpldRods)) deallocate(OutData%nCpldRods) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%nCpldRods(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%nCpldRods.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%nCpldRods) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%nCpldPoints)) deallocate(OutData%nCpldPoints) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%nCpldPoints(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%nCpldPoints.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%nCpldPoints) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NConns) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NAnchs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Tmax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%g) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rhoW) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDpth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%kBot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%cBot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dtM0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dtCoupling) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dtOut) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%nLineTypes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nRodTypes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nPoints); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nPointsExtra); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nBodies); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nRods); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nLines); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nCtrlChans); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nFails); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nFreeBodies); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nFreeRods); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nFreePoints); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%nCpldBodies); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%nCpldRods); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%nCpldPoints); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NConns); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NAnchs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Tmax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%g); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rhoW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDpth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%kBot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%cBot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dtM0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dtCoupling); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dtOut); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%OutParam)) deallocate(OutData%OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MD_UnpackOutParmType(Buf, OutData%OutParam(i1)) ! OutParam + call MD_UnpackOutParmType(RF, OutData%OutParam(i1)) ! OutParam end do end if - call RegUnpack(Buf, OutData%Delim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MDUnOut) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PriPath) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%writeLog) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UnLog) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveKin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Current) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nTurbines) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TurbineRefPos)) deallocate(OutData%TurbineRefPos) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TurbineRefPos(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TurbineRefPos.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TurbineRefPos) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%mu_kT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%mu_kA) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%mc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%cv) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nxWave) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nyWave) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nzWave) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ntWave) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%pxWave)) deallocate(OutData%pxWave) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%pxWave(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%pxWave.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%pxWave) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%pyWave)) deallocate(OutData%pyWave) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%pyWave(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%pyWave.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%pyWave) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%pzWave)) deallocate(OutData%pzWave) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%pzWave(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%pzWave.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%pzWave) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%dtWave) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%uxWave)) deallocate(OutData%uxWave) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%uxWave(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%uxWave.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%uxWave) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%uyWave)) deallocate(OutData%uyWave) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%uyWave(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%uyWave.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%uyWave) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%uzWave)) deallocate(OutData%uzWave) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%uzWave(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%uzWave.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%uzWave) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%axWave)) deallocate(OutData%axWave) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%axWave(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%axWave.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%axWave) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ayWave)) deallocate(OutData%ayWave) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ayWave(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ayWave.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ayWave) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%azWave)) deallocate(OutData%azWave) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%azWave(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%azWave.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%azWave) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PDyn)) deallocate(OutData%PDyn) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PDyn(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PDyn.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PDyn) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%zeta)) deallocate(OutData%zeta) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%zeta(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%zeta.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%zeta) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%nzCurrent) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%pzCurrent)) deallocate(OutData%pzCurrent) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%pzCurrent(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%pzCurrent.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%pzCurrent) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%uxCurrent)) deallocate(OutData%uxCurrent) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%uxCurrent(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%uxCurrent.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%uxCurrent) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%uyCurrent)) deallocate(OutData%uyCurrent) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%uyCurrent(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%uyCurrent.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%uyCurrent) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Nx0) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Jac_u_indx)) deallocate(OutData%Jac_u_indx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_u_indx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_u_indx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_u_indx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%du)) deallocate(OutData%du) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%du(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%du.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%du) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dx)) deallocate(OutData%dx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dx(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dx) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Jac_ny) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Jac_nx) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%dxIdx_map2_xStateIdx)) deallocate(OutData%dxIdx_map2_xStateIdx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dxIdx_map2_xStateIdx(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dxIdx_map2_xStateIdx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dxIdx_map2_xStateIdx) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%VisMeshes) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%Delim); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MDUnOut); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PriPath); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%writeLog); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UnLog); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveKin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Current); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nTurbines); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TurbineRefPos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%mu_kT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%mu_kA); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%mc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%cv); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nxWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nyWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nzWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ntWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%pxWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%pyWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%pzWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dtWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%uxWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%uyWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%uzWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%axWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ayWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%azWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PDyn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%zeta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nzCurrent); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%pzCurrent); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%uxCurrent); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%uyCurrent); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Nx0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_u_indx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%du); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Jac_ny); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Jac_nx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dxIdx_map2_xStateIdx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VisMeshes); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%VisRodsDiam)) deallocate(OutData%VisRodsDiam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%VisRodsDiam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VisRodsDiam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VisRodsDiam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MD_UnpackVisDiam(Buf, OutData%VisRodsDiam(i1)) ! VisRodsDiam + call MD_UnpackVisDiam(RF, OutData%VisRodsDiam(i1)) ! VisRodsDiam end do end if end subroutine @@ -6231,87 +4196,51 @@ subroutine MD_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine MD_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackInput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%CoupledKinematics)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%CoupledKinematics)) if (allocated(InData%CoupledKinematics)) then - call RegPackBounds(Buf, 1, lbound(InData%CoupledKinematics, kind=B8Ki), ubound(InData%CoupledKinematics, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%CoupledKinematics, kind=B8Ki), ubound(InData%CoupledKinematics, kind=B8Ki)) LB(1:1) = lbound(InData%CoupledKinematics, kind=B8Ki) UB(1:1) = ubound(InData%CoupledKinematics, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%CoupledKinematics(i1)) + call MeshPack(RF, InData%CoupledKinematics(i1)) end do end if - call RegPack(Buf, allocated(InData%DeltaL)) - if (allocated(InData%DeltaL)) then - call RegPackBounds(Buf, 1, lbound(InData%DeltaL, kind=B8Ki), ubound(InData%DeltaL, kind=B8Ki)) - call RegPack(Buf, InData%DeltaL) - end if - call RegPack(Buf, allocated(InData%DeltaLdot)) - if (allocated(InData%DeltaLdot)) then - call RegPackBounds(Buf, 1, lbound(InData%DeltaLdot, kind=B8Ki), ubound(InData%DeltaLdot, kind=B8Ki)) - call RegPack(Buf, InData%DeltaLdot) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%DeltaL) + call RegPackAlloc(RF, InData%DeltaLdot) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackInput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%CoupledKinematics)) deallocate(OutData%CoupledKinematics) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%CoupledKinematics(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CoupledKinematics.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CoupledKinematics.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%CoupledKinematics(i1)) ! CoupledKinematics + call MeshUnpack(RF, OutData%CoupledKinematics(i1)) ! CoupledKinematics end do end if - if (allocated(OutData%DeltaL)) deallocate(OutData%DeltaL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DeltaL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DeltaL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DeltaL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DeltaLdot)) deallocate(OutData%DeltaLdot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DeltaLdot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DeltaLdot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DeltaLdot) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%DeltaL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DeltaLdot); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine MD_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -6482,162 +4411,135 @@ subroutine MD_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine MD_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(MD_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'MD_PackOutput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%CoupledLoads)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%CoupledLoads)) if (allocated(InData%CoupledLoads)) then - call RegPackBounds(Buf, 1, lbound(InData%CoupledLoads, kind=B8Ki), ubound(InData%CoupledLoads, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%CoupledLoads, kind=B8Ki), ubound(InData%CoupledLoads, kind=B8Ki)) LB(1:1) = lbound(InData%CoupledLoads, kind=B8Ki) UB(1:1) = ubound(InData%CoupledLoads, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%CoupledLoads(i1)) + call MeshPack(RF, InData%CoupledLoads(i1)) end do end if - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - call RegPack(Buf, allocated(InData%VisLinesMesh)) + call RegPackAlloc(RF, InData%WriteOutput) + call RegPack(RF, allocated(InData%VisLinesMesh)) if (allocated(InData%VisLinesMesh)) then - call RegPackBounds(Buf, 1, lbound(InData%VisLinesMesh, kind=B8Ki), ubound(InData%VisLinesMesh, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%VisLinesMesh, kind=B8Ki), ubound(InData%VisLinesMesh, kind=B8Ki)) LB(1:1) = lbound(InData%VisLinesMesh, kind=B8Ki) UB(1:1) = ubound(InData%VisLinesMesh, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%VisLinesMesh(i1)) + call MeshPack(RF, InData%VisLinesMesh(i1)) end do end if - call RegPack(Buf, allocated(InData%VisRodsMesh)) + call RegPack(RF, allocated(InData%VisRodsMesh)) if (allocated(InData%VisRodsMesh)) then - call RegPackBounds(Buf, 1, lbound(InData%VisRodsMesh, kind=B8Ki), ubound(InData%VisRodsMesh, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%VisRodsMesh, kind=B8Ki), ubound(InData%VisRodsMesh, kind=B8Ki)) LB(1:1) = lbound(InData%VisRodsMesh, kind=B8Ki) UB(1:1) = ubound(InData%VisRodsMesh, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%VisRodsMesh(i1)) + call MeshPack(RF, InData%VisRodsMesh(i1)) end do end if - call RegPack(Buf, allocated(InData%VisBodiesMesh)) + call RegPack(RF, allocated(InData%VisBodiesMesh)) if (allocated(InData%VisBodiesMesh)) then - call RegPackBounds(Buf, 1, lbound(InData%VisBodiesMesh, kind=B8Ki), ubound(InData%VisBodiesMesh, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%VisBodiesMesh, kind=B8Ki), ubound(InData%VisBodiesMesh, kind=B8Ki)) LB(1:1) = lbound(InData%VisBodiesMesh, kind=B8Ki) UB(1:1) = ubound(InData%VisBodiesMesh, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%VisBodiesMesh(i1)) + call MeshPack(RF, InData%VisBodiesMesh(i1)) end do end if - call RegPack(Buf, allocated(InData%VisAnchsMesh)) + call RegPack(RF, allocated(InData%VisAnchsMesh)) if (allocated(InData%VisAnchsMesh)) then - call RegPackBounds(Buf, 1, lbound(InData%VisAnchsMesh, kind=B8Ki), ubound(InData%VisAnchsMesh, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%VisAnchsMesh, kind=B8Ki), ubound(InData%VisAnchsMesh, kind=B8Ki)) LB(1:1) = lbound(InData%VisAnchsMesh, kind=B8Ki) UB(1:1) = ubound(InData%VisAnchsMesh, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%VisAnchsMesh(i1)) + call MeshPack(RF, InData%VisAnchsMesh(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine MD_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine MD_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(MD_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'MD_UnPackOutput' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%CoupledLoads)) deallocate(OutData%CoupledLoads) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%CoupledLoads(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CoupledLoads.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CoupledLoads.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%CoupledLoads(i1)) ! CoupledLoads + call MeshUnpack(RF, OutData%CoupledLoads(i1)) ! CoupledLoads end do end if - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%VisLinesMesh)) deallocate(OutData%VisLinesMesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%VisLinesMesh(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VisLinesMesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VisLinesMesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%VisLinesMesh(i1)) ! VisLinesMesh + call MeshUnpack(RF, OutData%VisLinesMesh(i1)) ! VisLinesMesh end do end if if (allocated(OutData%VisRodsMesh)) deallocate(OutData%VisRodsMesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%VisRodsMesh(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VisRodsMesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VisRodsMesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%VisRodsMesh(i1)) ! VisRodsMesh + call MeshUnpack(RF, OutData%VisRodsMesh(i1)) ! VisRodsMesh end do end if if (allocated(OutData%VisBodiesMesh)) deallocate(OutData%VisBodiesMesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%VisBodiesMesh(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VisBodiesMesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VisBodiesMesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%VisBodiesMesh(i1)) ! VisBodiesMesh + call MeshUnpack(RF, OutData%VisBodiesMesh(i1)) ! VisBodiesMesh end do end if if (allocated(OutData%VisAnchsMesh)) deallocate(OutData%VisAnchsMesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%VisAnchsMesh(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VisAnchsMesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VisAnchsMesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%VisAnchsMesh(i1)) ! VisAnchsMesh + call MeshUnpack(RF, OutData%VisAnchsMesh(i1)) ! VisAnchsMesh end do end if end subroutine diff --git a/modules/nwtc-library/CMakeLists.txt b/modules/nwtc-library/CMakeLists.txt index cc7a669296..dc0e51e50d 100644 --- a/modules/nwtc-library/CMakeLists.txt +++ b/modules/nwtc-library/CMakeLists.txt @@ -68,6 +68,7 @@ set(NWTCLIBS_SOURCES src/NWTC_Base.f90 src/SingPrec.f90 src/ModReg.f90 + src/ModVar.f90 src/ModMesh.f90 src/ModMesh_Mapping.f90 diff --git a/modules/nwtc-library/src/ModVar.f90 b/modules/nwtc-library/src/ModVar.f90 new file mode 100644 index 0000000000..f6c7db7fc0 --- /dev/null +++ b/modules/nwtc-library/src/ModVar.f90 @@ -0,0 +1,984 @@ +!********************************************************************************************************************************** +! LICENSING +! Copyright (C) 2023 National Renewable Energy Laboratory +! +! This file is part of the NWTC Subroutine Library. +! +! Licensed under the Apache License, Version 2.0 (the "License"); +! you may not use this file except in compliance with the License. +! You may obtain a copy of the License at +! +! http://www.apache.org/licenses/LICENSE-2.0 +! +! Unless required by applicable law or agreed to in writing, software +! distributed under the License is distributed on an "AS IS" BASIS, +! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +! See the License for the specific language governing permissions and +! limitations under the License. +!********************************************************************************************************************************** +!> The modules ModVar and ModVar_Types provide data structures and subroutines for representing and manipulating meshes +!! and meshed data in the FAST modular framework. +!! +!! Module variables provide a structured way for documenting, locating, and orchestrating the interdependencies between modules. +!! + +module ModVar +use NWTC_Library_Types +use NWTC_IO +use ModMesh +implicit none + +private + +integer(IntKi), parameter :: & + LoadFields(*) = [VF_Force, VF_Moment], & + TransFields(*) = [VF_TransDisp, VF_TransVel, VF_TransAcc], & + AngularFields(*) = [VF_Orientation, VF_AngularDisp, VF_AngularVel, VF_AngularAcc], & + MotionFields(*) = [VF_TransDisp, VF_Orientation, VF_TransVel, VF_AngularVel, VF_TransAcc, VF_AngularAcc], & + MeshFields(*) = [LoadFields, MotionFields] + +interface MV_PackVar + module procedure MV_PackVarR4, MV_PackVarR4Ary + module procedure MV_PackVarR8, MV_PackVarR8Ary +end interface + +interface MV_UnpackVar + module procedure MV_UnpackVarR4, MV_UnpackVarR4Ary + module procedure MV_UnpackVarR8, MV_UnpackVarR8Ary +end interface + +public :: MV_InitVarsVals, MV_LinkOutputInput, MV_VarIndex, MV_PackMesh, MV_UnpackMesh, MV_PackVar, MV_UnpackVar +public :: MV_ComputeCentralDiff, MV_Perturb, MV_ComputeDiff +public :: MV_AddVar, MV_AddMeshVar, MV_AddModule, SetFlags +public :: LoadFields, MotionFields, TransFields, AngularFields, MeshFields +public :: wm_to_dcm, wm_compose, wm_from_dcm, wm_inv, wm_to_xyz, wm_from_xyz +public :: MV_FieldString, IdxStr + +contains + +function MV_FieldString(Field) result(str) + integer(IntKi), intent(in) :: Field + character(16) :: str + select case (Field) + case (VF_AngularAcc) + str = "VF_AngularAcc" + case (VF_AngularDisp) + str = "VF_AngularDisp" + case (VF_AngularVel) + str = "VF_AngularVel" + case (VF_Force) + str = "VF_Force" + case (VF_Moment) + str = "VF_Moment" + case (VF_Orientation) + str = "VF_Orientation" + case (VF_TransAcc) + str = "VF_TransAcc" + case (VF_TransDisp) + str = "VF_TransDisp" + case (VF_TransVel) + str = "VF_TransVel" + case default + str = "Unknown" + end select +end function + +subroutine MV_InitVarsVals(Vars, Vals, Linearize, ErrStat, ErrMsg) + type(ModVarsType), intent(inout) :: Vars + type(ModValsType), intent(inout) :: Vals + logical, intent(in) :: Linearize + integer(IntKi), intent(out) :: ErrStat + character(ErrMsgLen), intent(out) :: ErrMsg + + character(*), parameter :: RoutineName = 'MV_InitMod' + integer(IntKi) :: ErrStat2 + character(ErrMsgLen) :: ErrMsg2 + integer(IntKi) :: i, StartIndex + + ! Initialize error outputs + ErrStat = ErrID_None + ErrMsg = '' + + ! Initialize state variables + if (.not. allocated(Vars%x)) allocate (Vars%x(0)) + StartIndex = 1 + do i = 1, size(Vars%x) + call ModVarType_Init(Vars%x(i), StartIndex, Linearize, ErrStat2, ErrMsg2); if (Failed()) return + end do + + ! Initialize input variables + if (.not. allocated(Vars%u)) allocate (Vars%u(0)) + StartIndex = 1 + do i = 1, size(Vars%u) + call ModVarType_Init(Vars%u(i), StartIndex, Linearize, ErrStat2, ErrMsg2); if (Failed()) return + end do + + ! Initialize output variables + if (.not. allocated(Vars%y)) allocate (Vars%y(0)) + StartIndex = 1 + do i = 1, size(Vars%y) + call ModVarType_Init(Vars%y(i), StartIndex, Linearize, ErrStat2, ErrMsg2); if (Failed()) return + end do + + ! Calculate number of state, input, and output variables + Vars%Nx = sum(Vars%x%Num) + Vars%Nu = sum(Vars%u%Num) + Vars%Ny = sum(Vars%y%Num) + + ! Allocate state, input, and output values + call AllocAry(Vals%x, Vars%Nx, "Vals%x", ErrStat2, ErrMsg2); if (Failed()) return + call AllocAry(Vals%dxdt, Vars%Nx, "Vals%dxdt", ErrStat2, ErrMsg2); if (Failed()) return + call AllocAry(Vals%u, Vars%Nu, "Vals%u", ErrStat2, ErrMsg2); if (Failed()) return + call AllocAry(Vals%y, Vars%Ny, "Vals%y", ErrStat2, ErrMsg2); if (Failed()) return + + ! Allocate perturbation input and output values + call AllocAry(Vals%u_perturb, Vars%Nu, "Vals%u_perturb", ErrStat2, ErrMsg2); if (Failed()) return + call AllocAry(Vals%x_perturb, Vars%Nx, "Vals%x_perturb", ErrStat2, ErrMsg2); if (Failed()) return + call AllocAry(Vals%xp, Vars%Nx, "Vals%xp", ErrStat2, ErrMsg2); if (Failed()) return + call AllocAry(Vals%xn, Vars%Nx, "Vals%xn", ErrStat2, ErrMsg2); if (Failed()) return + call AllocAry(Vals%yp, Vars%Ny, "Vals%yp", ErrStat2, ErrMsg2); if (Failed()) return + call AllocAry(Vals%yn, Vars%Ny, "Vals%yn", ErrStat2, ErrMsg2); if (Failed()) return + +contains + + function Failed() + logical Failed + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + Failed = ErrStat >= AbortErrLev + end function + + function FailedAlloc() + logical FailedAlloc + FailedAlloc = ErrStat2 /= 0 + if (FailedAlloc) call SetErrStat(ErrID_Fatal, 'error allocating Vals', ErrStat, ErrMsg, RoutineName) + end function + +end subroutine + +elemental function IsMesh(Var) result(r) + type(ModVarType), intent(in) :: Var + logical :: r + r = iand(Var%Flags, VF_Mesh) > 0 +end function + +subroutine ModVarType_Init(Var, Index, Linearize, ErrStat, ErrMsg) + type(ModVarType), intent(inout) :: Var + integer(IntKi), intent(inout) :: Index + logical, intent(in) :: Linearize + integer(IntKi), intent(out) :: ErrStat + character(ErrMsgLen), intent(out) :: ErrMsg + + character(*), parameter :: RoutineName = 'ModVarsType_Init' + integer(IntKi) :: ErrStat2 + character(ErrMsgLen) :: ErrMsg2 + integer(IntKi) :: i, j + integer(IntKi) :: nNodes + character(1), parameter :: Comp(3) = ['X', 'Y', 'Z'] + character(*), parameter :: Fmt = '(A," ",A,", node",I0,", ",A)' + character(2) :: UnitDesc + + ! Initialize error outputs + ErrStat = ErrID_None + ErrMsg = '' + + !---------------------------------------------------------------------------- + ! Mesh + !---------------------------------------------------------------------------- + + ! If this variable belongs to a mesh + if (iand(Var%Flags, VF_Mesh) > 0) then + + ! Size is the number of nodes in a mesh + Var%Nodes = Var%Num + + ! Number of values + Var%Num = Var%Nodes*3 + + ! If linearization requested + if (Linearize) then + + ! Set unit description for line mesh + UnitDesc = '' + if (iand(Var%Flags, VF_Line) > 0) UnitDesc = "/m" + + ! Switch based on field number + select case (Var%Field) + case (VF_Force) + Var%LinNames = [character(LinChanLen) ::((trim(Var%Name)//" "//Comp(j)//" force, node "//trim(num2lstr(i))//', N'//UnitDesc, j=1, 3), i=1, nNodes)] + case (VF_Moment) + Var%LinNames = [character(LinChanLen) ::((trim(Var%Name)//" "//Comp(j)//" moment, node "//trim(num2lstr(i))//', Nm'//UnitDesc, j=1, 3), i=1, nNodes)] + case (VF_TransDisp) + Var%LinNames = [character(LinChanLen) ::((trim(Var%Name)//" "//Comp(j)//" translation displacement, node "//trim(num2lstr(i))//', m', j=1, 3), i=1, nNodes)] + case (VF_Orientation) + Var%LinNames = [character(LinChanLen) ::((trim(Var%Name)//" "//Comp(j)//" orientation angle, node "//trim(num2lstr(i))//', rad', j=1, 3), i=1, nNodes)] + case (VF_TransVel) + Var%LinNames = [character(LinChanLen) ::((trim(Var%Name)//" "//Comp(j)//" translation velocity, node "//trim(num2lstr(i))//', m/s', j=1, 3), i=1, nNodes)] + case (VF_AngularVel) + Var%LinNames = [character(LinChanLen) ::((trim(Var%Name)//" "//Comp(j)//" rotation velocity, node "//trim(num2lstr(i))//', rad/s', j=1, 3), i=1, nNodes)] + case (VF_TransAcc) + Var%LinNames = [character(LinChanLen) ::((trim(Var%Name)//" "//Comp(j)//" translation acceleration, node "//trim(num2lstr(i))//', m/s^2', j=1, 3), i=1, nNodes)] + case (VF_AngularAcc) + Var%LinNames = [character(LinChanLen) ::((trim(Var%Name)//" "//Comp(j)//" rotation acceleration, node "//trim(num2lstr(i))//', rad/s^2', j=1, 3), i=1, nNodes)] + case default + call SetErrStat(ErrID_Fatal, "Invalid mesh field type", ErrStat, ErrMsg, RoutineName) + return + end select + + end if + end if + + !---------------------------------------------------------------------------- + ! Linearization + !---------------------------------------------------------------------------- + + if (Linearize) then + + ! If incorrect number of linearization names, return error + if (size(Var%LinNames) < Var%Num) then + call SetErrStat(ErrID_Fatal, "insufficient LinNames given for "//Var%Name, ErrStat, ErrMsg, RoutineName) + return + else if (size(Var%LinNames) > Var%Num) then + call SetErrStat(ErrID_Fatal, "excessive LinNames given for "//Var%Name, ErrStat, ErrMsg, RoutineName) + return + end if + end if + + !---------------------------------------------------------------------------- + ! Indices + !---------------------------------------------------------------------------- + + ! Initialize local index + call AllocAry(Var%iLoc, Var%Num, "Var%iLoc", ErrStat2, ErrMsg2); if (Failed()) return + Var%iLoc = [(index + i, i=0, Var%Num - 1)] + + ! Update index based on variable size + index = index + Var%Num + +contains + function Failed() + logical :: Failed + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + Failed = ErrStat >= AbortErrLev + end function +end subroutine + +!------------------------------------------------------------------------------- +! Functions for packing and unpacking data by variable +!------------------------------------------------------------------------------- + +subroutine MV_PackVarR4(VarAry, iVar, Val, Ary) + type(ModVarType), intent(in) :: VarAry(:) + integer(IntKi), intent(inout) :: iVar + real(R4Ki), intent(in) :: Val + real(R8Ki), intent(inout) :: Ary(:) + Ary(VarAry(iVar)%iLoc(1)) = real(Val, R8Ki) + iVar = iVar + 1 +end subroutine + +subroutine MV_PackVarR8(VarAry, iVar, Val, Ary) + type(ModVarType), intent(in) :: VarAry(:) + integer(IntKi), intent(inout) :: iVar + real(R8Ki), intent(in) :: Val + real(R8Ki), intent(inout) :: Ary(:) + Ary(VarAry(iVar)%iLoc(1)) = Val + iVar = iVar + 1 +end subroutine + +subroutine MV_PackVarR4Ary(VarAry, iVar, Val, Ary) + type(ModVarType), intent(in) :: VarAry(:) + integer(IntKi), intent(inout) :: iVar + real(R4Ki), intent(in) :: Val(:) + real(R8Ki), intent(inout) :: Ary(:) + Ary(VarAry(iVar)%iLoc) = real(pack(Val, .true.), R4Ki) + iVar = iVar + 1 +end subroutine + +subroutine MV_PackVarR8Ary(VarAry, iVar, Vals, Ary) + type(ModVarType), intent(in) :: VarAry(:) + integer(IntKi), intent(inout) :: iVar + real(R8Ki), intent(in) :: Vals(:) + real(R8Ki), intent(inout) :: Ary(:) + Ary(VarAry(iVar)%iLoc) = pack(Vals, .true.) + iVar = iVar + 1 +end subroutine + +subroutine MV_UnpackVarR4(VarAry, iVar, Ary, Val) + type(ModVarType), intent(in) :: VarAry(:) + integer(IntKi), intent(inout) :: iVar + real(R4Ki), intent(in) :: Ary(:) + real(R8Ki), intent(inout) :: Val + Val = Ary(VarAry(iVar)%iLoc(1)) + iVar = iVar + 1 +end subroutine + +subroutine MV_UnpackVarR4Ary(VarAry, iVar, Ary, Vals) + type(ModVarType), intent(in) :: VarAry(:) + integer(IntKi), intent(inout) :: iVar + real(R4Ki), intent(in) :: Ary(:) + real(R8Ki), intent(inout) :: Vals(:) + Vals = Ary(VarAry(iVar)%iLoc) + iVar = iVar + 1 +end subroutine + +subroutine MV_UnpackVarR8(VarAry, iVar, Ary, Vals) + type(ModVarType), intent(in) :: VarAry(:) + integer(IntKi), intent(inout) :: iVar + real(R8Ki), intent(in) :: Ary(:) + real(R8Ki), intent(inout) :: Vals + Vals = Ary(VarAry(iVar)%iLoc(1)) + iVar = iVar + 1 +end subroutine + +subroutine MV_UnpackVarR8Ary(VarAry, iVar, Ary, Vals) + type(ModVarType), intent(in) :: VarAry(:) + integer(IntKi), intent(inout) :: iVar + real(R8Ki), intent(in) :: Ary(:) + real(R8Ki), intent(inout) :: Vals(:) + Vals = Ary(VarAry(iVar)%iLoc) + iVar = iVar + 1 +end subroutine + +subroutine MV_PackMesh(VarAry, iVar, Mesh, Values) + type(ModVarType), intent(in) :: VarAry(:) + integer(IntKi), intent(inout) :: iVar + type(MeshType), intent(in) :: Mesh + real(R8Ki), intent(inout) :: Values(:) + integer(IntKi) :: MeshID, j + MeshID = VarAry(iVar)%MeshID + do while (VarAry(iVar)%MeshID == MeshID) + select case (VarAry(iVar)%Field) + case (VF_Force) + Values(VarAry(iVar)%iLoc) = pack(Mesh%Force, .true.) + case (VF_Moment) + Values(VarAry(iVar)%iLoc) = pack(Mesh%Moment, .true.) + case (VF_TransDisp) + Values(VarAry(iVar)%iLoc) = pack(Mesh%TranslationDisp, .true.) + case (VF_Orientation) + do j = 1, VarAry(iVar)%Nodes + Values(VarAry(iVar)%iLoc(3*(j - 1) + 1:3*j)) = wm_from_dcm(Mesh%Orientation(:, :, j)) + end do + case (VF_TransVel) + Values(VarAry(iVar)%iLoc) = pack(Mesh%TranslationVel, .true.) + case (VF_AngularVel) + Values(VarAry(iVar)%iLoc) = pack(Mesh%RotationVel, .true.) + case (VF_TransAcc) + Values(VarAry(iVar)%iLoc) = pack(Mesh%TranslationAcc, .true.) + case (VF_AngularAcc) + Values(VarAry(iVar)%iLoc) = pack(Mesh%RotationAcc, .true.) + case (VF_Scalar) + Values(VarAry(iVar)%iLoc) = pack(Mesh%Scalars, .true.) + end select + iVar = iVar + 1 + if (iVar > size(VarAry)) exit + end do +end subroutine + +subroutine MV_UnpackMesh(VarAry, iVar, Values, Mesh) + type(ModVarType), intent(in) :: VarAry(:) + integer(IntKi), intent(inout) :: iVar + real(R8Ki), intent(in) :: Values(:) + type(MeshType), intent(inout) :: Mesh + integer(IntKi) :: MeshID, j + MeshID = VarAry(iVar)%MeshID + do while (VarAry(iVar)%MeshID == MeshID) + select case (VarAry(iVar)%Field) + case (VF_Force) + Mesh%Force = reshape(Values(VarAry(iVar)%iLoc), shape(Mesh%Force)) + case (VF_Moment) + Mesh%Moment = reshape(Values(VarAry(iVar)%iLoc), shape(Mesh%Moment)) + case (VF_TransDisp) + Mesh%TranslationDisp = reshape(Values(VarAry(iVar)%iLoc), shape(Mesh%TranslationDisp)) + case (VF_Orientation) + do j = 1, VarAry(iVar)%Nodes + Mesh%Orientation(:, :, j) = wm_to_dcm(Values(VarAry(iVar)%iLoc(3*(j - 1) + 1:3*j))) + end do + case (VF_TransVel) + Mesh%TranslationVel = reshape(Values(VarAry(iVar)%iLoc), shape(Mesh%TranslationVel)) + case (VF_AngularVel) + Mesh%RotationVel = reshape(Values(VarAry(iVar)%iLoc), shape(Mesh%RotationVel)) + case (VF_TransAcc) + Mesh%TranslationAcc = reshape(Values(VarAry(iVar)%iLoc), shape(Mesh%TranslationAcc)) + case (VF_AngularAcc) + Mesh%RotationAcc = reshape(Values(VarAry(iVar)%iLoc), shape(Mesh%RotationAcc)) + case (VF_Scalar) + Mesh%Scalars = reshape(Values(VarAry(iVar)%iLoc), shape(Mesh%Scalars)) + end select + iVar = iVar + 1 + if (iVar > size(VarAry)) exit + end do +end subroutine + +subroutine MV_Perturb(Var, iLin, PerturbSign, BaseAry, PerturbAry, iPerturb) + type(ModVarType), intent(in) :: Var + integer(IntKi), intent(in) :: iLin + integer(IntKi), intent(in) :: PerturbSign + real(R8Ki), intent(in) :: BaseAry(:) + real(R8Ki), intent(inout) :: PerturbAry(:) + integer(IntKi), intent(out) :: iPerturb + real(R8Ki) :: Perturb + real(R8Ki) :: WM(3), WMp(3) + integer(IntKi) :: i, j, iLoc(3) + + ! Copy base array to perturbed array + PerturbAry = BaseAry + + ! Get variable perturbation and combine with sign + Perturb = Var%Perturb*real(PerturbSign, R8Ki) + + ! Perturbation index within array + iPerturb = Var%iLoc(iLin) + + ! If variable field is orientation, perturbation is in WM parameters + if (Var%Field == VF_Orientation) then + j = mod(iLin - 1, 3) ! component being modified (0, 1, 2) + i = iLin - j ! index of start of WM parameters (3) + iLoc = Var%iLoc(i:i + 2) ! array index vector + WMp = 0.0_R8Ki ! Init WM perturbation to zero + WMp(j + 1) = Perturb ! WM perturbation around X,Y,Z axis + WM = PerturbAry(iLoc) ! Current WM parameters value + PerturbAry(iLoc) = wm_compose(WM, wm_from_xyz(WMp)) ! Compose value and perturbation + else + PerturbAry(Var%iLoc(iLin)) = PerturbAry(Var%iLoc(iLin)) + Perturb + end if + +end subroutine + +subroutine MV_ComputeDiff(VarAry, PosAry, NegAry, DiffAry) + type(ModVarType), intent(in) :: VarAry(:) ! Array of variables + real(R8Ki), intent(in) :: PosAry(:) ! Positive result array + real(R8Ki), intent(in) :: NegAry(:) ! Negative result array + real(R8Ki), intent(inout) :: DiffAry(:) ! Array containing difference + integer(IntKi) :: i, j, ind(3) + real(R8Ki) :: DeltaWM(3) + + ! Loop through variables + do i = 1, size(VarAry) + + ! If variable field is orientation + if (VarAry(i)%Field == VF_Orientation) then + + ! Loop through nodes + do j = 1, VarAry(i)%Nodes + + ! Get vector of indicies of WM rotation parameters in array + ind = VarAry(i)%iLoc(3*(j - 1) + 1:3*j) + + ! Compose WM parameters to go from negative to positive array + DeltaWM = wm_compose(wm_inv(NegAry(ind)), PosAry(ind)) + + ! Calculate change in rotation in XYZ in radians + DiffAry(ind) = wm_to_xyz(DeltaWM) ! store delta as radians + end do + + else + + ! Subtract negative array from positive array + DiffAry(VarAry(i)%iLoc) = PosAry(VarAry(i)%iLoc) - NegAry(VarAry(i)%iLoc) + end if + end do +end subroutine + +subroutine MV_ComputeCentralDiff(VarAry, Delta, PosAry, NegAry, DerivAry) + type(ModVarType), intent(in) :: VarAry(:) ! Array of variables + real(R8Ki), intent(in) :: Delta ! Positive perturbation value + real(R8Ki), intent(in) :: PosAry(:) ! Positive perturbation result array + real(R8Ki), intent(in) :: NegAry(:) ! Negative perturbation result array + real(R8Ki), intent(inout) :: DerivAry(:) ! Array containing derivative + + ! Compute difference between all values + call MV_ComputeDiff(VarAry, PosAry, NegAry, DerivAry) + + ! Divide derivative array by twice delta + DerivAry = DerivAry/(2.0_R8Ki*Delta) + +end subroutine + +!------------------------------------------------------------------------------- +! Functions for adding Variables an Modules +!------------------------------------------------------------------------------- + +subroutine MV_AddModule(ModAry, ModID, ModAbbr, Instance, ModDT, SolverDT, Vars, ErrStat, ErrMsg) + type(ModDataType), allocatable, intent(inout) :: ModAry(:) + integer(IntKi), intent(in) :: ModID + character(*), intent(in) :: ModAbbr + integer(IntKi), intent(in) :: Instance + real(R8Ki), intent(in) :: ModDT + real(R8Ki), intent(in) :: SolverDT + type(ModVarsType), pointer, intent(in) :: Vars + integer(IntKi), intent(out) :: ErrStat + character(ErrMsgLen), intent(out) :: ErrMsg + + character(*), parameter :: RoutineName = 'MV_AddModule' + integer(IntKi) :: ErrStat2 + character(ErrMsgLen) :: ErrMsg2 + type(ModDataType) :: ModData + + ErrStat = ErrID_None + ErrMsg = '' + + ! If module array hasn't been allocated, allocate with zero size + if (.not. allocated(ModAry)) allocate (ModAry(0)) + + ! Populate ModuleDataType derived type + ModData = ModDataType(Idx=size(ModAry) + 1, ID=ModID, Abbr=ModAbbr, & + Ins=Instance, DT=ModDT, Vars=Vars) + + ! Allocate source and destination mapping arrays + call AllocAry(ModData%SrcMaps, 0, "ModData%SrcMaps", ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (ErrStat >= AbortErrLev) return + call AllocAry(ModData%DstMaps, 0, "ModData%DstMaps", ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (ErrStat >= AbortErrLev) return + + !---------------------------------------------------------------------------- + ! Calculate Module Substepping + !---------------------------------------------------------------------------- + + ! If module time step is same as global time step, set substeps to 1 + if (EqualRealNos(ModData%DT, SolverDT)) then + ModData%SubSteps = 1 + else + ! If the module time step is greater than the global time step, set error + if (ModData%DT > SolverDT) then + call SetErrStat(ErrID_Fatal, "The "//trim(ModData%Abbr)// & + " module time step ("//trim(Num2LStr(ModData%DT))//" s) "// & + "cannot be larger than FAST time step ("//trim(Num2LStr(SolverDT))//" s).", & + ErrStat, ErrMsg, RoutineName) + return + end if + + ! Calculate the number of substeps + ModData%SubSteps = nint(SolverDT/ModData%DT) + + ! If the module DT is not an exact integer divisor of the global time step, set error + if (.not. EqualRealNos(SolverDT, ModData%DT*ModData%SubSteps)) then + call SetErrStat(ErrID_Fatal, "The "//trim(ModData%Abbr)// & + " module time step ("//trim(Num2LStr(ModData%DT))//" s) "// & + "must be an integer divisor of the FAST time step ("//trim(Num2LStr(SolverDT))//" s).", & + ErrStat, ErrMsg, RoutineName) + return + end if + end if + + !---------------------------------------------------------------------------- + ! Add module data to array + !---------------------------------------------------------------------------- + + ModAry = [ModAry, ModData] + +end subroutine + +subroutine MV_AddMeshVar(VarAry, Name, Fields, Mesh, Flags, Perturbs) + type(ModVarType), allocatable, intent(inout) :: VarAry(:) + character(*), intent(in) :: Name + integer(IntKi), intent(in) :: Fields(:) + integer(IntKi), optional, intent(in) :: Flags + type(MeshType), intent(inout) :: Mesh + real(R8Ki), optional, intent(in) :: Perturbs(:) + integer(IntKi) :: i, FlagsLocal + logical :: ActiveLocal + real(R8Ki), allocatable :: PerturbsLocal(:) + if (.not. Mesh%committed) return + if (allocated(VarAry)) then + Mesh%ID = size(VarAry) + 1 + else + Mesh%ID = 1 + end if + FlagsLocal = 0 + if (present(Flags)) FlagsLocal = Flags + FlagsLocal = ior(FlagsLocal, VF_Mesh) + PerturbsLocal = [(0.0_R8Ki, i=1, size(Fields))] + if (present(Perturbs)) PerturbsLocal = Perturbs + do i = 1, size(Fields) + call MV_AddVar(VarAry, Name, Fields(i), Num=Mesh%Nnodes, Flags=FlagsLocal, & + Perturb=PerturbsLocal(i)) + VarAry(size(VarAry))%MeshID = Mesh%ID + end do +end subroutine + +subroutine MV_AddVar(VarAry, Name, Field, Num, Flags, iUsr, jUsr, DerivOrder, Perturb, LinNames, Active) + type(ModVarType), allocatable, intent(inout) :: VarAry(:) + character(*), intent(in) :: Name + integer(IntKi), intent(in) :: Field + integer(IntKi), optional, intent(in) :: Num, Flags, iUsr, jUsr + real(R8Ki), optional, intent(in) :: Perturb + integer(IntKi), optional, intent(in) :: DerivOrder + logical, optional, intent(in) :: Active + character(*), optional, intent(in) :: LinNames(:) + integer(IntKi) :: i + type(ModVarType) :: Var + + ! If active argument specified and not active, return + if (present(Active)) then + if (.not. Active) return + end if + + ! Initialize var with default values + Var = ModVarType(Name=Name, Field=Field) + + ! Set optional values + if (present(Num)) Var%Num = Num + if (present(Flags)) Var%Flags = Flags + if (present(iUsr)) Var%iUsr = [iUsr, iUsr + Var%Num - 1] + if (present(jUsr)) Var%jUsr = jUsr + if (present(Perturb)) Var%Perturb = Perturb + if (present(LinNames)) then + allocate (Var%LinNames(size(LinNames))) + do i = 1, size(LinNames) + Var%LinNames(i) = LinNames(i) + end do + end if + + ! Set Derivative Order + if (present(DerivOrder)) then + Var%DerivOrder = DerivOrder + else + select case (Var%Field) + case (VF_Orientation, VF_TransDisp, VF_AngularDisp) ! Position/displacement + Var%DerivOrder = 0 + case (VF_TransVel, VF_AngularVel) ! Velocity + Var%DerivOrder = 1 + case (VF_TransAcc, VF_AngularAcc) ! Acceleration + Var%DerivOrder = 2 + case default + Var%DerivOrder = -1 + end select + end if + + ! Append Var to VarArray + if (allocated(VarAry)) then + VarAry = [VarAry, Var] + else + VarAry = [Var] + end if +end subroutine + +! Get index of variable in array matching name and field +function MV_VarIndex(VarAry, Name, Field) result(Indx) + type(ModVarType), intent(in) :: VarAry(:) + character(*), intent(in) :: Name + integer(IntKi), intent(in) :: Field + integer(IntKi) :: Indx + do Indx = 1, size(VarAry) + if (string_equal_ci(VarAry(Indx)%Name, Name) .and. & + VarAry(Indx)%Field == Field) exit + end do + if (Indx > size(VarAry)) Indx = 0 +end function + +!------------------------------------------------------------------------------- +! Functions for linking variables (Output and Input) +!------------------------------------------------------------------------------- + +subroutine MV_LinkOutputInput(OutVars, InpVars, OutName, InpName, Field, ErrStat, ErrMsg) + type(ModVarsType), intent(inout) :: OutVars, InpVars + character(*), intent(in) :: OutName, InpName + integer(IntKi), intent(in) :: Field + integer(IntKi), intent(out) :: ErrStat + character(ErrMsgLen), intent(out) :: ErrMsg + + character(*), parameter :: RoutineName = 'MV_LinkOutputInput' + ! integer(IntKi) :: ErrStat2 + ! character(ErrMsgLen) :: ErrMsg2 + ! integer(IntKi) :: i + integer(IntKi) :: InpVarIndex, OutVarIndex + + ! Initialize error outputs + ErrStat = ErrID_None + ErrMsg = '' + + ! Find name/field in input vars + InpVarIndex = MV_VarIndex(InpVars%u, InpName, Field) + if (InpVarIndex == 0) then + call SetErrStat(ErrID_Fatal, 'Input variable "'//InpName//'" with field '// & + trim(num2lstr(Field))//' not found', ErrStat, ErrMsg, RoutineName) + return + end if + + ! Find name/field in output vars + OutVarIndex = MV_VarIndex(OutVars%u, OutName, Field) + if (OutVarIndex == 0) then + call SetErrStat(ErrID_Fatal, 'Output variable "'//OutName//'" with field '// & + trim(num2lstr(Field))//' not found', ErrStat, ErrMsg, RoutineName) + return + end if + + ! If error finding input or output variable, return + if (ErrStat >= AbortErrLev) return + + ! TODO: figure out what to do here + +end subroutine + +!------------------------------------------------------------------------------- +! Flag Utilities +!------------------------------------------------------------------------------- + +subroutine SetFlags(Var, Mask) + type(ModVarType), intent(inout) :: Var + integer(IntKi), intent(in) :: Mask + integer(IntKi) :: i + Var%Flags = ior(Var%Flags, Mask) +end subroutine + +!------------------------------------------------------------------------------- +! String Utilities +!------------------------------------------------------------------------------- + +! Compare strings s1 and s2 while ignoring case +function string_equal_ci(s1, s2) result(is_equal) + character(*), intent(in) :: s1, s2 + logical :: is_equal + integer(IntKi), parameter :: ca = iachar("a") + integer(IntKi), parameter :: cz = iachar("z") + integer(IntKi) :: i, j + integer(IntKi) :: c1, c2 + is_equal = .false. + i = len_trim(s1) + j = len_trim(s2) + if (i /= j) return + do i = 1, j + c1 = iachar(s1(i:i)) + c2 = iachar(s2(i:i)) + if (c1 == c2) cycle + if (c1 >= ca .and. c1 <= cz) c1 = c1 - 32 + if (c2 >= ca .and. c2 <= cz) c2 = c2 - 32 + if (c1 /= c2) return + end do + is_equal = .true. +end function + +function IdxStr(i1, i2, i3, i4, i5) result(s) + integer(IntKi), intent(in) :: i1 + integer(IntKi), optional, intent(in) :: i2, i3, i4, i5 + character(100) :: s + if (present(i5)) then + s = '('//trim(Num2LStr(i1))//','//trim(Num2LStr(i2))//','//trim(Num2LStr(i3))//','//trim(Num2LStr(i4))//','//trim(Num2LStr(i5))//')' + else if (present(i4)) then + s = '('//trim(Num2LStr(i1))//','//trim(Num2LStr(i2))//','//trim(Num2LStr(i3))//','//trim(Num2LStr(i4))//')' + else if (present(i3)) then + s = '('//trim(Num2LStr(i1))//','//trim(Num2LStr(i2))//','//trim(Num2LStr(i3))//')' + else if (present(i2)) then + s = '('//trim(Num2LStr(i1))//','//trim(Num2LStr(i2))//')' + else + s = '('//trim(Num2LStr(i1))//')' + end if +end function + +!------------------------------------------------------------------------------- +! Rotation Utilities +!------------------------------------------------------------------------------- + +pure function quat_from_dcm(R) result(q) + real(R8Ki), intent(in) :: R(3, 3) + real(R8Ki) :: q(4), C + integer(IntKi) :: j + + q = [(1.0_R8Ki + R(1, 1) - R(2, 2) - R(3, 3)), & + (1.0_R8Ki - R(1, 1) + R(2, 2) - R(3, 3)), & + (1.0_R8Ki - R(1, 1) - R(2, 2) + R(3, 3)), & + (1.0_R8Ki + R(1, 1) + R(2, 2) + R(3, 3))] + + ! Get index of max value in q + j = maxloc(q, dim=1) + + ! Calculate quaternion from direction cosine matrix + C = q(j) + select case (j) + case (1) + q = [C, (R(1, 2) + R(2, 1)), (R(3, 1) + R(1, 3)), (R(2, 3) - R(3, 2))] + case (2) + q = [(R(1, 2) + R(2, 1)), C, (R(2, 3) + R(3, 2)), (R(3, 1) - R(1, 3))] + case (3) + q = [(R(3, 1) + R(1, 3)), (R(2, 3) + R(3, 2)), C, (R(1, 2) - R(2, 1))] + case (4) + q = [(R(2, 3) - R(3, 2)), (R(3, 1) - R(1, 3)), (R(1, 2) - R(2, 1)), C] + end select + q = q/(2.0_R8Ki*sqrt(C)) + if (q(4) < 0.0_R8Ki) q = -q +end function + +pure function quat_to_dcm(q) result(R) + real(R8Ki), intent(in) :: q(4) + real(R8Ki) :: R(3, 3) + real(R8Ki) :: q1, q2, q3, q4 + q1 = q(1); q2 = q(2); q3 = q(3); q4 = q(4) + R(1, :) = [q4*q4 + q1*q1 - q2*q2 - q3*q3, 2*(q1*q2 + q3*q4), 2*(q1*q3 - q2*q4)] + R(2, :) = [2*(q1*q2 - q3*q4), q4*q4 - q1*q1 + q2*q2 - q3*q3, 2*(q2*q3 + q1*q4)] + R(3, :) = [2*(q1*q3 + q2*q4), 2*(q2*q3 - q1*q4), q4*q4 - q1*q1 - q2*q2 + q3*q3] +end function + +pure function wm_to_quat(c) result(q) + real(R8Ki), intent(in) :: c(3) + real(R8Ki) :: q(4) + real(R8Ki) :: c0, e0, e(3) + c0 = 2.0_R8Ki - dot_product(c, c)/8.0_R8Ki + e0 = c0/(4.0_R8Ki - c0) + e = c/(4.0_R8Ki - c0) + q = [e, e0] +end function + +pure function wm_from_quat(q) result(c) + real(R8Ki), intent(in) :: q(4) + real(R8Ki) :: c(3) + real(R8Ki) :: e0, e(3) + e0 = q(4) + e = q(1:3) + c = 4.0_R8Ki*e/(1.0_R8Ki + e0) +end function + +! pure function wm_to_dcm(c) result(R) +! real(R8Ki), intent(in) :: c(3) +! real(R8Ki) :: R(3, 3) +! R = quat_to_dcm(wm_to_quat(c)) +! end function + +! pure function wm_to_dcm(c) result(R) +! real(R8Ki), intent(in) :: c(3) +! real(R8Ki) :: R(3, 3), cct, F(3, 3) +! integer(IntKi) :: i, j +! cct = dot_product(c, c) +! F = reshape([0.0_R8Ki, -c(3), c(2), c(3), 0.0_R8Ki, -c(1), -c(2), c(1), 0.0_R8Ki], [3, 3])/2.0_R8Ki +! do i = 1, 3 +! F(i, i) = F(i, i) + 1.0_R8Ki - cct/16.0_R8Ki +! do j = 1, 3 +! F(i, j) = F(i, j) + c(i)*c(j)/8.0_R8Ki +! end do +! end do +! F = F/(1.0_R8Ki + cct/16.0_R8Ki) +! R = matmul(F, F) +! end function + +pure function wm_to_dcm(c) result(R) + real(R8Ki), intent(in) :: c(3) + real(R8Ki) :: R(3, 3), c0, vc, ct(3, 3) + integer(IntKi) :: i, j + ct(1, :) = [0.0_R8Ki, -c(3), c(2)] + ct(2, :) = [c(3), 0.0_R8Ki, -c(1)] + ct(3, :) = [-c(2), c(1), 0.0_R8Ki] + c0 = 2.0_R8Ki - dot_product(c, c)/8.0_R8Ki + vc = 2.0_R8Ki/(4.0_R8Ki - c0) + R = vc*vc*(c0*ct + matmul(ct, ct))/2.0_R8Ki + do i = 1, 3 + R(i, i) = R(i, i) + 1.0_R8Ki + end do +end function + +! pure function wm_from_dcm(R) result(c) +! real(R8Ki), intent(in) :: R(3, 3) +! real(R8Ki) :: c(3), cct +! c = wm_from_quat(quat_from_dcm(R)) +! end function + +pure function wm_from_dcm(R) result(c) + real(R8Ki), intent(in) :: R(3, 3) + real(R8Ki) :: pivot(4) ! Trace of the rotation matrix and diagonal elements + real(R8Ki) :: sm(0:3) + real(R8Ki) :: em + real(R8Ki) :: Rr(3, 3), c(3) + integer :: i ! case indicator + + Rr = R + + ! mjs--find max value of T := Tr(Rr) and diagonal elements of Rr + ! This tells us which denominator is largest (and less likely to produce numerical noise) + pivot = (/Rr(1, 1) + Rr(2, 2) + Rr(3, 3), Rr(1, 1), Rr(2, 2), Rr(3, 3)/) + i = maxloc(pivot, 1) - 1 ! our sm array starts at 0, so we need to subtract 1 here to get the correct index + + select case (i) + case (3) + sm(0) = Rr(2, 1) - Rr(1, 2) ! 4 c_0 c_3 t_{r0} + sm(1) = Rr(1, 3) + Rr(3, 1) ! 4 c_1 c_3 t_{r0} + sm(2) = Rr(2, 3) + Rr(3, 2) ! 4 c_2 c_3 t_{r0} + sm(3) = 1.0_R8Ki - Rr(1, 1) - Rr(2, 2) + Rr(3, 3) ! 4 c_3 c_3 t_{r0} + case (2) + sm(0) = Rr(1, 3) - Rr(3, 1) ! 4 c_0 c_2 t_{r0} + sm(1) = Rr(1, 2) + Rr(2, 1) ! 4 c_1 c_2 t_{r0} + sm(2) = 1.0_R8Ki - Rr(1, 1) + Rr(2, 2) - Rr(3, 3) ! 4 c_2 c_2 t_{r0} + sm(3) = Rr(2, 3) + Rr(3, 2) ! 4 c_3 c_2 t_{r0} + case (1) + sm(0) = Rr(3, 2) - Rr(2, 3) ! 4 c_0 c_1 t_{r0} + sm(1) = 1.0_R8Ki + Rr(1, 1) - Rr(2, 2) - Rr(3, 3) ! 4 c_1 c_1 t_{r0} + sm(2) = Rr(1, 2) + Rr(2, 1) ! 4 c_2 c_1 t_{r0} + sm(3) = Rr(1, 3) + Rr(3, 1) ! 4 c_3 c_1 t_{r0} + case (0) + sm(0) = 1.0_R8Ki + Rr(1, 1) + Rr(2, 2) + Rr(3, 3) ! 4 c_0 c_0 t_{r0} + sm(1) = Rr(3, 2) - Rr(2, 3) ! 4 c_1 c_0 t_{r0} + sm(2) = Rr(1, 3) - Rr(3, 1) ! 4 c_2 c_0 t_{r0} + sm(3) = Rr(2, 1) - Rr(1, 2) ! 4 c_3 c_0 t_{r0} + end select + + em = sm(0) + SIGN(2.0_R8Ki*SQRT(sm(i)), sm(0)) + em = 4.0_R8Ki/em ! 1 / ( 4 t_{r0} c_{i} ), assuming 0 <= c_0 < 4 and c_{i} > 0 + c = em*sm(1:3) +end function + +pure function wm_to_xyz(c) result(xyz) + real(R8Ki), intent(in) :: c(3) + real(R8Ki) :: phi, n(3), xyz(3), m + m = sqrt(dot_product(c,c)) + if (m == 0.0_R8Ki) then + xyz = 0.0_R8Ki + return + end if + n = c/m + phi = 4.0_R8Ki*atan(m/4.0_R8Ki) + xyz = phi*n + ! xyz = c +end function + +pure function wm_from_xyz(xyz) result(c) + real(R8Ki), intent(in) :: xyz(3) + real(R8Ki) :: phi, n(3), c(3) + phi = sqrt(dot_product(xyz,xyz)) + if (phi == 0.0_R8Ki) then + c = 0.0_R8Ki + return + end if + n = xyz / phi + c = 4.0_R8Ki*tan(phi/4.0_R8Ki) * n + ! c = xyz +end function + +! pure function wm_from_dcm(R) result(c) +! real(R8Ki), intent(in) :: R(3, 3) +! real(R8Ki) :: c(3), t1, t2, cct +! t1 = 1.0_R8Ki + R(1,1) + R(2,2) + R(3,3) +! t2 = 2.0_R8Ki*sqrt(t1) +! c(1) = (R(3,2) - R(2,3)) +! c(2) = (R(1,3) - R(3,1)) +! c(3) = (R(2,1) - R(1,2)) +! c = 4.0_R8Ki * c / (t1 + t2) +! cct = dot_product(c,c) +! if (cct > 16.0_R8Ki) c = 16.0_R8Ki*c / cct +! end function + +pure function wm_compose(p, q) result(r) + real(R8Ki), intent(in) :: p(3), q(3) + real(R8Ki) :: r(3) + real(R8Ki) :: p0, q0, D1, D2 + p0 = 2.0_R8Ki - dot_product(p, p)/8.0_R8Ki + q0 = 2.0_R8Ki - dot_product(q, q)/8.0_R8Ki + D1 = (4.0_R8Ki - p0)*(4.0_R8Ki - q0) + D2 = p0*q0 - dot_product(p, q) + if (D2 >= 0.0_R8Ki) then + r = 4.0_R8Ki*(q0*p + p0*q + cross(p, q))/(D1 + D2) + else + r = -4.0_R8Ki*(q0*p + p0*q + cross(p, q))/(D1 - D2) + end if +end function + +pure function wm_inv(c) result(cinv) + real(R8Ki), intent(in) :: c(3) + real(R8Ki) :: cinv(3) + cinv = -c +end function + +pure function cross(a, b) result(c) + real(R8Ki), intent(in) :: a(3), b(3) + real(R8Ki) :: c(3) + c = [a(2)*b(3) - a(3)*b(2), a(3)*b(1) - a(1)*b(3), a(1)*b(2) - b(1)*a(2)] +end function + +end module diff --git a/modules/nwtc-library/src/NWTC_IO.f90 b/modules/nwtc-library/src/NWTC_IO.f90 index 57aece75f5..5abb7071cf 100644 --- a/modules/nwtc-library/src/NWTC_IO.f90 +++ b/modules/nwtc-library/src/NWTC_IO.f90 @@ -1725,56 +1725,56 @@ END SUBROUTINE DispCopyrightLicense !======================================================================= !> This routine packs the DLL_Type (nwtc_base::dll_type) data into an integer buffer. !! It is required for the FAST Registry. It is the inverse of DLLTypeUnPack (nwtc_io::dlltypeunpack). - SUBROUTINE DLLTypePack(Buf, InData) - type(PackBuffer), intent(inout) :: Buf + SUBROUTINE DLLTypePack(RF, InData) + type(RegFile), intent(inout) :: RF TYPE(DLL_Type), intent(in) :: InData !< DLL data to pack INTEGER(IntKi) :: i ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return ! has the DLL procedure been loaded? - call RegPack(Buf, c_associated(InData%ProcAddr(1))) + call RegPack(RF, c_associated(InData%ProcAddr(1))) ! Pack strings - call RegPack(Buf, InData%FileName) + call RegPack(RF, InData%FileName) do i = 1, NWTC_MAX_DLL_PROC - call RegPack(Buf, InData%ProcName(i)) + call RegPack(RF, InData%ProcName(i)) end do ! If buffer error, return - if (RegCheckErr(Buf, 'DLLTypeUnPack')) return + if (RegCheckErr(RF, 'DLLTypeUnPack')) return END SUBROUTINE DLLTypePack !======================================================================= !> This routine unpacks the DLL_Type data from an integer buffer. !! It is required for the FAST Registry. It is the inverse of DLLTypePack (nwtc_io::dlltypepack). - subroutine DLLTypeUnPack(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf - type(DLL_Type), intent(out) :: OutData !< Reconstituted OutData structure + subroutine DLLTypeUnPack(RF, OutData) + type(RegFile), intent(inout) :: RF + type(DLL_Type), intent(out) :: OutData !< Reconstituted OutData structure logical :: WasAssociated integer(IntKi) :: i ! If buffer error, return - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return ! Get flag indicating if dll was associated - call RegUnpack(Buf, WasAssociated) + call RegUnpack(RF, WasAssociated) ! Unpack strings - call RegUnpack(Buf, OutData%FileName) + call RegUnpack(RF, OutData%FileName) do i = 1, NWTC_MAX_DLL_PROC - call RegUnpack(Buf, OutData%ProcName(i)) + call RegUnpack(RF, OutData%ProcName(i)) end do ! If buffer error, return - if (RegCheckErr(Buf, 'DLLTypeUnPack')) return + if (RegCheckErr(RF, 'DLLTypeUnPack')) return ! If dll was loaded, and data in filename and procname, load dll IF (WasAssociated .AND. LEN_TRIM(OutData%FileName) > 0 .AND. LEN_TRIM(OutData%ProcName(1)) > 0) THEN - CALL LoadDynamicLib(OutData, Buf%ErrStat, Buf%ErrMsg) + CALL LoadDynamicLib(OutData, RF%ErrStat, RF%ErrMsg) else ! Nullifying OutData%FileAddr = INT(0,C_INTPTR_T) @@ -1783,7 +1783,7 @@ subroutine DLLTypeUnPack(Buf, OutData) END IF ! If buffer error, return - if (RegCheckErr(Buf, 'DLLTypeUnPack')) return + if (RegCheckErr(RF, 'DLLTypeUnPack')) return END SUBROUTINE DLLTypeUnPack !======================================================================= diff --git a/modules/nwtc-library/src/NWTC_Library.f90 b/modules/nwtc-library/src/NWTC_Library.f90 index c27ede5c1c..5f71471eca 100644 --- a/modules/nwtc-library/src/NWTC_Library.f90 +++ b/modules/nwtc-library/src/NWTC_Library.f90 @@ -75,6 +75,7 @@ MODULE NWTC_Library USE NWTC_Num ! technically we don't need to specify this if we have ModMesh (because ModMesh USEs NWTC_Num) USE ModMesh USE ModReg + USE ModVar #ifndef NO_MESHMAPPING ! Note that ModMesh_Mapping also includes LAPACK routines diff --git a/modules/nwtc-library/src/NWTC_Library_Subs.f90 b/modules/nwtc-library/src/NWTC_Library_Subs.f90 new file mode 100644 index 0000000000..911e63e131 --- /dev/null +++ b/modules/nwtc-library/src/NWTC_Library_Subs.f90 @@ -0,0 +1,577 @@ +!STARTOFREGISTRYGENERATEDFILE 'NWTC_Library_Subs.f90' +! +! WARNING This file is generated automatically by the FAST registry. +! Do not edit. Your changes to this file will be lost. +! +! FAST Registry' + +subroutine NWTC_Library_CopyMapType(SrcMapTypeData, DstMapTypeData, CtrlCode, ErrStat, ErrMsg) + type(MapType), intent(in) :: SrcMapTypeData + type(MapType), intent(inout) :: DstMapTypeData + integer(IntKi), intent(in ) :: CtrlCode + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + character(*), parameter :: RoutineName = 'NWTC_Library_CopyMapType' + ErrStat = ErrID_None + ErrMsg = '' + DstMapTypeData%OtherMesh_Element = SrcMapTypeData%OtherMesh_Element + DstMapTypeData%distance = SrcMapTypeData%distance + DstMapTypeData%couple_arm = SrcMapTypeData%couple_arm + DstMapTypeData%shape_fn = SrcMapTypeData%shape_fn +end subroutine + +subroutine NWTC_Library_DestroyMapType(MapTypeData, ErrStat, ErrMsg) + type(MapType), intent(inout) :: MapTypeData + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + character(*), parameter :: RoutineName = 'NWTC_Library_DestroyMapType' + ErrStat = ErrID_None + ErrMsg = '' +end subroutine + +subroutine NWTC_Library_PackMapType(RF, Indata) + type(RegFile), intent(inout) :: RF + type(MapType), intent(in) :: InData + character(*), parameter :: RoutineName = 'NWTC_Library_PackMapType' + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%OtherMesh_Element) + call RegPack(RF, InData%distance) + call RegPack(RF, InData%couple_arm) + call RegPack(RF, InData%shape_fn) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine NWTC_Library_UnPackMapType(RF, OutData) + type(RegFile), intent(inout) :: RF + type(MapType), intent(inout) :: OutData + character(*), parameter :: RoutineName = 'NWTC_Library_UnPackMapType' + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%OtherMesh_Element); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%distance); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%couple_arm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%shape_fn); if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine NWTC_Library_CopyMeshMapLinearizationType(SrcMeshMapLinearizationTypeData, DstMeshMapLinearizationTypeData, CtrlCode, ErrStat, ErrMsg) + type(MeshMapLinearizationType), intent(in) :: SrcMeshMapLinearizationTypeData + type(MeshMapLinearizationType), intent(inout) :: DstMeshMapLinearizationTypeData + integer(IntKi), intent(in ) :: CtrlCode + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + integer(B8Ki) :: LB(2), UB(2) + integer(IntKi) :: ErrStat2 + character(*), parameter :: RoutineName = 'NWTC_Library_CopyMeshMapLinearizationType' + ErrStat = ErrID_None + ErrMsg = '' + if (allocated(SrcMeshMapLinearizationTypeData%mi)) then + LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%mi, kind=B8Ki) + UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%mi, kind=B8Ki) + if (.not. allocated(DstMeshMapLinearizationTypeData%mi)) then + allocate(DstMeshMapLinearizationTypeData%mi(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%mi.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMeshMapLinearizationTypeData%mi = SrcMeshMapLinearizationTypeData%mi + end if + if (allocated(SrcMeshMapLinearizationTypeData%fx_p)) then + LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%fx_p, kind=B8Ki) + UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%fx_p, kind=B8Ki) + if (.not. allocated(DstMeshMapLinearizationTypeData%fx_p)) then + allocate(DstMeshMapLinearizationTypeData%fx_p(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%fx_p.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMeshMapLinearizationTypeData%fx_p = SrcMeshMapLinearizationTypeData%fx_p + end if + if (allocated(SrcMeshMapLinearizationTypeData%tv_uD)) then + LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%tv_uD, kind=B8Ki) + UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%tv_uD, kind=B8Ki) + if (.not. allocated(DstMeshMapLinearizationTypeData%tv_uD)) then + allocate(DstMeshMapLinearizationTypeData%tv_uD(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%tv_uD.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMeshMapLinearizationTypeData%tv_uD = SrcMeshMapLinearizationTypeData%tv_uD + end if + if (allocated(SrcMeshMapLinearizationTypeData%tv_uS)) then + LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%tv_uS, kind=B8Ki) + UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%tv_uS, kind=B8Ki) + if (.not. allocated(DstMeshMapLinearizationTypeData%tv_uS)) then + allocate(DstMeshMapLinearizationTypeData%tv_uS(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%tv_uS.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMeshMapLinearizationTypeData%tv_uS = SrcMeshMapLinearizationTypeData%tv_uS + end if + if (allocated(SrcMeshMapLinearizationTypeData%ta_uD)) then + LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%ta_uD, kind=B8Ki) + UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%ta_uD, kind=B8Ki) + if (.not. allocated(DstMeshMapLinearizationTypeData%ta_uD)) then + allocate(DstMeshMapLinearizationTypeData%ta_uD(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%ta_uD.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMeshMapLinearizationTypeData%ta_uD = SrcMeshMapLinearizationTypeData%ta_uD + end if + if (allocated(SrcMeshMapLinearizationTypeData%ta_uS)) then + LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%ta_uS, kind=B8Ki) + UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%ta_uS, kind=B8Ki) + if (.not. allocated(DstMeshMapLinearizationTypeData%ta_uS)) then + allocate(DstMeshMapLinearizationTypeData%ta_uS(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%ta_uS.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMeshMapLinearizationTypeData%ta_uS = SrcMeshMapLinearizationTypeData%ta_uS + end if + if (allocated(SrcMeshMapLinearizationTypeData%ta_rv)) then + LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%ta_rv, kind=B8Ki) + UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%ta_rv, kind=B8Ki) + if (.not. allocated(DstMeshMapLinearizationTypeData%ta_rv)) then + allocate(DstMeshMapLinearizationTypeData%ta_rv(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%ta_rv.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMeshMapLinearizationTypeData%ta_rv = SrcMeshMapLinearizationTypeData%ta_rv + end if + if (allocated(SrcMeshMapLinearizationTypeData%li)) then + LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%li, kind=B8Ki) + UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%li, kind=B8Ki) + if (.not. allocated(DstMeshMapLinearizationTypeData%li)) then + allocate(DstMeshMapLinearizationTypeData%li(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%li.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMeshMapLinearizationTypeData%li = SrcMeshMapLinearizationTypeData%li + end if + if (allocated(SrcMeshMapLinearizationTypeData%M_uS)) then + LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%M_uS, kind=B8Ki) + UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%M_uS, kind=B8Ki) + if (.not. allocated(DstMeshMapLinearizationTypeData%M_uS)) then + allocate(DstMeshMapLinearizationTypeData%M_uS(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%M_uS.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMeshMapLinearizationTypeData%M_uS = SrcMeshMapLinearizationTypeData%M_uS + end if + if (allocated(SrcMeshMapLinearizationTypeData%M_uD)) then + LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%M_uD, kind=B8Ki) + UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%M_uD, kind=B8Ki) + if (.not. allocated(DstMeshMapLinearizationTypeData%M_uD)) then + allocate(DstMeshMapLinearizationTypeData%M_uD(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%M_uD.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMeshMapLinearizationTypeData%M_uD = SrcMeshMapLinearizationTypeData%M_uD + end if + if (allocated(SrcMeshMapLinearizationTypeData%M_f)) then + LB(1:2) = lbound(SrcMeshMapLinearizationTypeData%M_f, kind=B8Ki) + UB(1:2) = ubound(SrcMeshMapLinearizationTypeData%M_f, kind=B8Ki) + if (.not. allocated(DstMeshMapLinearizationTypeData%M_f)) then + allocate(DstMeshMapLinearizationTypeData%M_f(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapLinearizationTypeData%M_f.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMeshMapLinearizationTypeData%M_f = SrcMeshMapLinearizationTypeData%M_f + end if +end subroutine + +subroutine NWTC_Library_DestroyMeshMapLinearizationType(MeshMapLinearizationTypeData, ErrStat, ErrMsg) + type(MeshMapLinearizationType), intent(inout) :: MeshMapLinearizationTypeData + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + character(*), parameter :: RoutineName = 'NWTC_Library_DestroyMeshMapLinearizationType' + ErrStat = ErrID_None + ErrMsg = '' + if (allocated(MeshMapLinearizationTypeData%mi)) then + deallocate(MeshMapLinearizationTypeData%mi) + end if + if (allocated(MeshMapLinearizationTypeData%fx_p)) then + deallocate(MeshMapLinearizationTypeData%fx_p) + end if + if (allocated(MeshMapLinearizationTypeData%tv_uD)) then + deallocate(MeshMapLinearizationTypeData%tv_uD) + end if + if (allocated(MeshMapLinearizationTypeData%tv_uS)) then + deallocate(MeshMapLinearizationTypeData%tv_uS) + end if + if (allocated(MeshMapLinearizationTypeData%ta_uD)) then + deallocate(MeshMapLinearizationTypeData%ta_uD) + end if + if (allocated(MeshMapLinearizationTypeData%ta_uS)) then + deallocate(MeshMapLinearizationTypeData%ta_uS) + end if + if (allocated(MeshMapLinearizationTypeData%ta_rv)) then + deallocate(MeshMapLinearizationTypeData%ta_rv) + end if + if (allocated(MeshMapLinearizationTypeData%li)) then + deallocate(MeshMapLinearizationTypeData%li) + end if + if (allocated(MeshMapLinearizationTypeData%M_uS)) then + deallocate(MeshMapLinearizationTypeData%M_uS) + end if + if (allocated(MeshMapLinearizationTypeData%M_uD)) then + deallocate(MeshMapLinearizationTypeData%M_uD) + end if + if (allocated(MeshMapLinearizationTypeData%M_f)) then + deallocate(MeshMapLinearizationTypeData%M_f) + end if +end subroutine + +subroutine NWTC_Library_PackMeshMapLinearizationType(RF, Indata) + type(RegFile), intent(inout) :: RF + type(MeshMapLinearizationType), intent(in) :: InData + character(*), parameter :: RoutineName = 'NWTC_Library_PackMeshMapLinearizationType' + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%mi) + call RegPackAlloc(RF, InData%fx_p) + call RegPackAlloc(RF, InData%tv_uD) + call RegPackAlloc(RF, InData%tv_uS) + call RegPackAlloc(RF, InData%ta_uD) + call RegPackAlloc(RF, InData%ta_uS) + call RegPackAlloc(RF, InData%ta_rv) + call RegPackAlloc(RF, InData%li) + call RegPackAlloc(RF, InData%M_uS) + call RegPackAlloc(RF, InData%M_uD) + call RegPackAlloc(RF, InData%M_f) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine NWTC_Library_UnPackMeshMapLinearizationType(RF, OutData) + type(RegFile), intent(inout) :: RF + type(MeshMapLinearizationType), intent(inout) :: OutData + character(*), parameter :: RoutineName = 'NWTC_Library_UnPackMeshMapLinearizationType' + integer(B8Ki) :: LB(2), UB(2) + integer(IntKi) :: stat + logical :: IsAllocAssoc + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%mi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%fx_p); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%tv_uD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%tv_uS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ta_uD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ta_uS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ta_rv); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%li); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%M_uS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%M_uD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%M_f); if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine NWTC_Library_CopyMeshMapType(SrcMeshMapTypeData, DstMeshMapTypeData, CtrlCode, ErrStat, ErrMsg) + type(MeshMapType), intent(inout) :: SrcMeshMapTypeData + type(MeshMapType), intent(inout) :: DstMeshMapTypeData + integer(IntKi), intent(in ) :: CtrlCode + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + integer(B8Ki) :: i1, i2, i3 + integer(B8Ki) :: LB(3), UB(3) + integer(IntKi) :: ErrStat2 + character(ErrMsgLen) :: ErrMsg2 + character(*), parameter :: RoutineName = 'NWTC_Library_CopyMeshMapType' + ErrStat = ErrID_None + ErrMsg = '' + if (allocated(SrcMeshMapTypeData%MapLoads)) then + LB(1:1) = lbound(SrcMeshMapTypeData%MapLoads, kind=B8Ki) + UB(1:1) = ubound(SrcMeshMapTypeData%MapLoads, kind=B8Ki) + if (.not. allocated(DstMeshMapTypeData%MapLoads)) then + allocate(DstMeshMapTypeData%MapLoads(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapTypeData%MapLoads.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + do i1 = LB(1), UB(1) + call NWTC_Library_CopyMapType(SrcMeshMapTypeData%MapLoads(i1), DstMeshMapTypeData%MapLoads(i1), CtrlCode, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (ErrStat >= AbortErrLev) return + end do + end if + if (allocated(SrcMeshMapTypeData%MapMotions)) then + LB(1:1) = lbound(SrcMeshMapTypeData%MapMotions, kind=B8Ki) + UB(1:1) = ubound(SrcMeshMapTypeData%MapMotions, kind=B8Ki) + if (.not. allocated(DstMeshMapTypeData%MapMotions)) then + allocate(DstMeshMapTypeData%MapMotions(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapTypeData%MapMotions.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + do i1 = LB(1), UB(1) + call NWTC_Library_CopyMapType(SrcMeshMapTypeData%MapMotions(i1), DstMeshMapTypeData%MapMotions(i1), CtrlCode, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (ErrStat >= AbortErrLev) return + end do + end if + if (allocated(SrcMeshMapTypeData%MapSrcToAugmt)) then + LB(1:1) = lbound(SrcMeshMapTypeData%MapSrcToAugmt, kind=B8Ki) + UB(1:1) = ubound(SrcMeshMapTypeData%MapSrcToAugmt, kind=B8Ki) + if (.not. allocated(DstMeshMapTypeData%MapSrcToAugmt)) then + allocate(DstMeshMapTypeData%MapSrcToAugmt(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapTypeData%MapSrcToAugmt.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + do i1 = LB(1), UB(1) + call NWTC_Library_CopyMapType(SrcMeshMapTypeData%MapSrcToAugmt(i1), DstMeshMapTypeData%MapSrcToAugmt(i1), CtrlCode, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (ErrStat >= AbortErrLev) return + end do + end if + call MeshCopy(SrcMeshMapTypeData%Augmented_Ln2_Src, DstMeshMapTypeData%Augmented_Ln2_Src, CtrlCode, ErrStat2, ErrMsg2 ) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (ErrStat >= AbortErrLev) return + call MeshCopy(SrcMeshMapTypeData%Lumped_Points_Src, DstMeshMapTypeData%Lumped_Points_Src, CtrlCode, ErrStat2, ErrMsg2 ) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (ErrStat >= AbortErrLev) return + if (allocated(SrcMeshMapTypeData%LoadLn2_A_Mat_Piv)) then + LB(1:1) = lbound(SrcMeshMapTypeData%LoadLn2_A_Mat_Piv, kind=B8Ki) + UB(1:1) = ubound(SrcMeshMapTypeData%LoadLn2_A_Mat_Piv, kind=B8Ki) + if (.not. allocated(DstMeshMapTypeData%LoadLn2_A_Mat_Piv)) then + allocate(DstMeshMapTypeData%LoadLn2_A_Mat_Piv(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapTypeData%LoadLn2_A_Mat_Piv.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMeshMapTypeData%LoadLn2_A_Mat_Piv = SrcMeshMapTypeData%LoadLn2_A_Mat_Piv + end if + if (allocated(SrcMeshMapTypeData%DisplacedPosition)) then + LB(1:3) = lbound(SrcMeshMapTypeData%DisplacedPosition, kind=B8Ki) + UB(1:3) = ubound(SrcMeshMapTypeData%DisplacedPosition, kind=B8Ki) + if (.not. allocated(DstMeshMapTypeData%DisplacedPosition)) then + allocate(DstMeshMapTypeData%DisplacedPosition(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapTypeData%DisplacedPosition.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMeshMapTypeData%DisplacedPosition = SrcMeshMapTypeData%DisplacedPosition + end if + if (allocated(SrcMeshMapTypeData%LoadLn2_A_Mat)) then + LB(1:2) = lbound(SrcMeshMapTypeData%LoadLn2_A_Mat, kind=B8Ki) + UB(1:2) = ubound(SrcMeshMapTypeData%LoadLn2_A_Mat, kind=B8Ki) + if (.not. allocated(DstMeshMapTypeData%LoadLn2_A_Mat)) then + allocate(DstMeshMapTypeData%LoadLn2_A_Mat(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapTypeData%LoadLn2_A_Mat.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMeshMapTypeData%LoadLn2_A_Mat = SrcMeshMapTypeData%LoadLn2_A_Mat + end if + if (allocated(SrcMeshMapTypeData%LoadLn2_F)) then + LB(1:2) = lbound(SrcMeshMapTypeData%LoadLn2_F, kind=B8Ki) + UB(1:2) = ubound(SrcMeshMapTypeData%LoadLn2_F, kind=B8Ki) + if (.not. allocated(DstMeshMapTypeData%LoadLn2_F)) then + allocate(DstMeshMapTypeData%LoadLn2_F(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapTypeData%LoadLn2_F.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMeshMapTypeData%LoadLn2_F = SrcMeshMapTypeData%LoadLn2_F + end if + if (allocated(SrcMeshMapTypeData%LoadLn2_M)) then + LB(1:2) = lbound(SrcMeshMapTypeData%LoadLn2_M, kind=B8Ki) + UB(1:2) = ubound(SrcMeshMapTypeData%LoadLn2_M, kind=B8Ki) + if (.not. allocated(DstMeshMapTypeData%LoadLn2_M)) then + allocate(DstMeshMapTypeData%LoadLn2_M(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshMapTypeData%LoadLn2_M.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstMeshMapTypeData%LoadLn2_M = SrcMeshMapTypeData%LoadLn2_M + end if + call NWTC_Library_CopyMeshMapLinearizationType(SrcMeshMapTypeData%dM, DstMeshMapTypeData%dM, CtrlCode, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (ErrStat >= AbortErrLev) return +end subroutine + +subroutine NWTC_Library_DestroyMeshMapType(MeshMapTypeData, ErrStat, ErrMsg) + type(MeshMapType), intent(inout) :: MeshMapTypeData + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + integer(B8Ki) :: i1, i2, i3 + integer(B8Ki) :: LB(3), UB(3) + integer(IntKi) :: ErrStat2 + character(ErrMsgLen) :: ErrMsg2 + character(*), parameter :: RoutineName = 'NWTC_Library_DestroyMeshMapType' + ErrStat = ErrID_None + ErrMsg = '' + if (allocated(MeshMapTypeData%MapLoads)) then + LB(1:1) = lbound(MeshMapTypeData%MapLoads, kind=B8Ki) + UB(1:1) = ubound(MeshMapTypeData%MapLoads, kind=B8Ki) + do i1 = LB(1), UB(1) + call NWTC_Library_DestroyMapType(MeshMapTypeData%MapLoads(i1), ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + end do + deallocate(MeshMapTypeData%MapLoads) + end if + if (allocated(MeshMapTypeData%MapMotions)) then + LB(1:1) = lbound(MeshMapTypeData%MapMotions, kind=B8Ki) + UB(1:1) = ubound(MeshMapTypeData%MapMotions, kind=B8Ki) + do i1 = LB(1), UB(1) + call NWTC_Library_DestroyMapType(MeshMapTypeData%MapMotions(i1), ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + end do + deallocate(MeshMapTypeData%MapMotions) + end if + if (allocated(MeshMapTypeData%MapSrcToAugmt)) then + LB(1:1) = lbound(MeshMapTypeData%MapSrcToAugmt, kind=B8Ki) + UB(1:1) = ubound(MeshMapTypeData%MapSrcToAugmt, kind=B8Ki) + do i1 = LB(1), UB(1) + call NWTC_Library_DestroyMapType(MeshMapTypeData%MapSrcToAugmt(i1), ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + end do + deallocate(MeshMapTypeData%MapSrcToAugmt) + end if + call MeshDestroy( MeshMapTypeData%Augmented_Ln2_Src, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + call MeshDestroy( MeshMapTypeData%Lumped_Points_Src, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (allocated(MeshMapTypeData%LoadLn2_A_Mat_Piv)) then + deallocate(MeshMapTypeData%LoadLn2_A_Mat_Piv) + end if + if (allocated(MeshMapTypeData%DisplacedPosition)) then + deallocate(MeshMapTypeData%DisplacedPosition) + end if + if (allocated(MeshMapTypeData%LoadLn2_A_Mat)) then + deallocate(MeshMapTypeData%LoadLn2_A_Mat) + end if + if (allocated(MeshMapTypeData%LoadLn2_F)) then + deallocate(MeshMapTypeData%LoadLn2_F) + end if + if (allocated(MeshMapTypeData%LoadLn2_M)) then + deallocate(MeshMapTypeData%LoadLn2_M) + end if + call NWTC_Library_DestroyMeshMapLinearizationType(MeshMapTypeData%dM, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) +end subroutine + +subroutine NWTC_Library_PackMeshMapType(RF, Indata) + type(RegFile), intent(inout) :: RF + type(MeshMapType), intent(in) :: InData + character(*), parameter :: RoutineName = 'NWTC_Library_PackMeshMapType' + integer(B8Ki) :: i1, i2, i3 + integer(B8Ki) :: LB(3), UB(3) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%MapLoads)) + if (allocated(InData%MapLoads)) then + call RegPackBounds(RF, 1, lbound(InData%MapLoads, kind=B8Ki), ubound(InData%MapLoads, kind=B8Ki)) + LB(1:1) = lbound(InData%MapLoads, kind=B8Ki) + UB(1:1) = ubound(InData%MapLoads, kind=B8Ki) + do i1 = LB(1), UB(1) + call NWTC_Library_PackMapType(RF, InData%MapLoads(i1)) + end do + end if + call RegPack(RF, allocated(InData%MapMotions)) + if (allocated(InData%MapMotions)) then + call RegPackBounds(RF, 1, lbound(InData%MapMotions, kind=B8Ki), ubound(InData%MapMotions, kind=B8Ki)) + LB(1:1) = lbound(InData%MapMotions, kind=B8Ki) + UB(1:1) = ubound(InData%MapMotions, kind=B8Ki) + do i1 = LB(1), UB(1) + call NWTC_Library_PackMapType(RF, InData%MapMotions(i1)) + end do + end if + call RegPack(RF, allocated(InData%MapSrcToAugmt)) + if (allocated(InData%MapSrcToAugmt)) then + call RegPackBounds(RF, 1, lbound(InData%MapSrcToAugmt, kind=B8Ki), ubound(InData%MapSrcToAugmt, kind=B8Ki)) + LB(1:1) = lbound(InData%MapSrcToAugmt, kind=B8Ki) + UB(1:1) = ubound(InData%MapSrcToAugmt, kind=B8Ki) + do i1 = LB(1), UB(1) + call NWTC_Library_PackMapType(RF, InData%MapSrcToAugmt(i1)) + end do + end if + call MeshPack(RF, InData%Augmented_Ln2_Src) + call MeshPack(RF, InData%Lumped_Points_Src) + call RegPackAlloc(RF, InData%LoadLn2_A_Mat_Piv) + call RegPackAlloc(RF, InData%DisplacedPosition) + call RegPackAlloc(RF, InData%LoadLn2_A_Mat) + call RegPackAlloc(RF, InData%LoadLn2_F) + call RegPackAlloc(RF, InData%LoadLn2_M) + call NWTC_Library_PackMeshMapLinearizationType(RF, InData%dM) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine NWTC_Library_UnPackMeshMapType(RF, OutData) + type(RegFile), intent(inout) :: RF + type(MeshMapType), intent(inout) :: OutData + character(*), parameter :: RoutineName = 'NWTC_Library_UnPackMeshMapType' + integer(B8Ki) :: i1, i2, i3 + integer(B8Ki) :: LB(3), UB(3) + integer(IntKi) :: stat + logical :: IsAllocAssoc + if (RF%ErrStat /= ErrID_None) return + if (allocated(OutData%MapLoads)) deallocate(OutData%MapLoads) + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return + if (IsAllocAssoc) then + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return + allocate(OutData%MapLoads(LB(1):UB(1)),stat=stat) + if (stat /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MapLoads.', RF%ErrStat, RF%ErrMsg, RoutineName) + return + end if + do i1 = LB(1), UB(1) + call NWTC_Library_UnpackMapType(RF, OutData%MapLoads(i1)) ! MapLoads + end do + end if + if (allocated(OutData%MapMotions)) deallocate(OutData%MapMotions) + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return + if (IsAllocAssoc) then + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return + allocate(OutData%MapMotions(LB(1):UB(1)),stat=stat) + if (stat /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MapMotions.', RF%ErrStat, RF%ErrMsg, RoutineName) + return + end if + do i1 = LB(1), UB(1) + call NWTC_Library_UnpackMapType(RF, OutData%MapMotions(i1)) ! MapMotions + end do + end if + if (allocated(OutData%MapSrcToAugmt)) deallocate(OutData%MapSrcToAugmt) + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return + if (IsAllocAssoc) then + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return + allocate(OutData%MapSrcToAugmt(LB(1):UB(1)),stat=stat) + if (stat /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MapSrcToAugmt.', RF%ErrStat, RF%ErrMsg, RoutineName) + return + end if + do i1 = LB(1), UB(1) + call NWTC_Library_UnpackMapType(RF, OutData%MapSrcToAugmt(i1)) ! MapSrcToAugmt + end do + end if + call MeshUnpack(RF, OutData%Augmented_Ln2_Src) ! Augmented_Ln2_Src + call MeshUnpack(RF, OutData%Lumped_Points_Src) ! Lumped_Points_Src + call RegUnpackAlloc(RF, OutData%LoadLn2_A_Mat_Piv); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DisplacedPosition); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LoadLn2_A_Mat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LoadLn2_F); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LoadLn2_M); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackMeshMapLinearizationType(RF, OutData%dM) ! dM +end subroutine +!ENDOFREGISTRYGENERATEDFILE diff --git a/modules/nwtc-library/src/NWTC_Library_Types.f90 b/modules/nwtc-library/src/NWTC_Library_Types.f90 index 83b2fd1dd0..14ecb2c8a4 100644 --- a/modules/nwtc-library/src/NWTC_Library_Types.f90 +++ b/modules/nwtc-library/src/NWTC_Library_Types.f90 @@ -34,6 +34,27 @@ MODULE NWTC_Library_Types USE SysSubs USE ModReg IMPLICIT NONE + INTEGER(IntKi), PUBLIC, PARAMETER :: VarNameLen = 64 ! [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VF_Force = 1 ! [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VF_Moment = 2 ! [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VF_Orientation = 3 ! [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VF_TransDisp = 4 ! [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VF_AngularDisp = 5 ! [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VF_TransVel = 6 ! [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VF_AngularVel = 7 ! [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VF_TransAcc = 8 ! [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VF_AngularAcc = 9 ! [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VF_Scalar = 10 ! [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VF_None = 0 ! Variable with no flags [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VF_Mesh = 1 ! Variable contained in mesh [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VF_Line = 2 ! Variable is for a line mesh [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VF_RotFrame = 4 ! Variable in rotating frame [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VF_Ext = 8 ! Variable for extended linearization [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VF_Any = 4095 ! Enable all flags (used for filtering) [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VC_None = 0 ! [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VC_Tight = 1 ! [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VC_Option1 = 2 ! [-] + INTEGER(IntKi), PUBLIC, PARAMETER :: VC_Option2 = 3 ! [-] ! ========= ProgDesc ======= TYPE, PUBLIC :: ProgDesc CHARACTER(99) :: Name !< Name of the program or module [-] @@ -85,6 +106,73 @@ MODULE NWTC_Library_Types CHARACTER(6) :: RNG_type END TYPE NWTC_RandomNumber_ParameterType ! ======================= +! ========= ModVarType ======= + TYPE, PUBLIC :: ModVarType + character(VarNameLen) :: Name !< [-] + INTEGER(IntKi) :: Field = 0 !< [-] + INTEGER(IntKi) :: Nodes = 1 !< [-] + INTEGER(IntKi) :: Num = 1 !< [-] + INTEGER(IntKi) :: Flags = 0 !< [-] + INTEGER(IntKi) :: DerivOrder = 0 !< [-] + INTEGER(IntKi) , DIMENSION(:), ALLOCATABLE :: iLoc !< indices in local arrays [-] + INTEGER(IntKi) , DIMENSION(:), ALLOCATABLE :: iSol !< indices in solver arrays [-] + INTEGER(IntKi) , DIMENSION(:), ALLOCATABLE :: iLin !< indices in linearization arrays [-] + INTEGER(IntKi) , DIMENSION(:), ALLOCATABLE :: iq !< row index in solver q matrix [-] + INTEGER(IntKi) , DIMENSION(1:2) :: iUsr = 0_IntKi !< first user defined index for variable, can be used a lower/upper bounds [-] + INTEGER(IntKi) :: jUsr = 0 !< second user defined index for variable [-] + INTEGER(IntKi) :: MeshID = 0 !< Mesh identification number [-] + LOGICAL :: Solve = .false. !< flag indicating that variable is used by solver [-] + REAL(R8Ki) :: Perturb = 0 !< perturbation [-] + character(LinChanLen) , DIMENSION(:), ALLOCATABLE :: LinNames !< [-] + END TYPE ModVarType +! ======================= +! ========= ModVarsType ======= + TYPE, PUBLIC :: ModVarsType + INTEGER(IntKi) :: ModNum = 0 !< [-] + character(6) :: ModAbbr !< [-] + TYPE(ModVarType) , DIMENSION(:), ALLOCATABLE :: x !< Module state variable array [-] + TYPE(ModVarType) , DIMENSION(:), ALLOCATABLE :: u !< Module input variable array [-] + TYPE(ModVarType) , DIMENSION(:), ALLOCATABLE :: y !< Module output variable array [-] + INTEGER(IntKi) :: Nx = 0_IntKi !< [-] + INTEGER(IntKi) :: Nu = 0_IntKi !< [-] + INTEGER(IntKi) :: Ny = 0_IntKi !< [-] + END TYPE ModVarsType +! ======================= +! ========= ModValsType ======= + TYPE, PUBLIC :: ModValsType + REAL(R8Ki) , DIMENSION(:), ALLOCATABLE :: x !< [-] + REAL(R8Ki) , DIMENSION(:), ALLOCATABLE :: dxdt !< [-] + REAL(R8Ki) , DIMENSION(:), ALLOCATABLE :: u !< [-] + REAL(R8Ki) , DIMENSION(:), ALLOCATABLE :: y !< [-] + REAL(R8Ki) , DIMENSION(:), ALLOCATABLE :: u_perturb !< input perturbation array [-] + REAL(R8Ki) , DIMENSION(:), ALLOCATABLE :: x_perturb !< [-] + REAL(R8Ki) , DIMENSION(:), ALLOCATABLE :: xp !< [-] + REAL(R8Ki) , DIMENSION(:), ALLOCATABLE :: xn !< [-] + REAL(R8Ki) , DIMENSION(:), ALLOCATABLE :: yp !< [-] + REAL(R8Ki) , DIMENSION(:), ALLOCATABLE :: yn !< [-] + REAL(R8Ki) , DIMENSION(:,:), ALLOCATABLE :: dYdx !< [-] + REAL(R8Ki) , DIMENSION(:,:), ALLOCATABLE :: dXdx !< [-] + REAL(R8Ki) , DIMENSION(:,:), ALLOCATABLE :: dYdu !< [-] + REAL(R8Ki) , DIMENSION(:,:), ALLOCATABLE :: dXdu !< [-] + END TYPE ModValsType +! ======================= +! ========= ModDataType ======= + TYPE, PUBLIC :: ModDataType + INTEGER(IntKi) :: Idx = 0 !< Module index in array of modules [-] + INTEGER(IntKi) :: ID = 0 !< Module identification number [-] + character(ChanLen) :: Abbr !< Module name abbreviation [-] + INTEGER(IntKi) :: Ins = 0 !< Module instance number [-] + LOGICAL :: IsTC = .false. !< Flag indicating module is part of tight coupling [-] + REAL(R8Ki) :: DT = 0 !< Module time step [-] + INTEGER(IntKi) :: SubSteps = 0 !< Module number of substeps per solver time step [-] + INTEGER(IntKi) , DIMENSION(:,:), ALLOCATABLE :: ixs !< index array mapping local x vector to global x vector [-] + INTEGER(IntKi) , DIMENSION(:,:), ALLOCATABLE :: ius !< index array mapping local u vector to global u vector [-] + INTEGER(IntKi) , DIMENSION(:,:), ALLOCATABLE :: iys !< index array mapping local y vector to global y vector [-] + TYPE(ModVarsType) , POINTER :: Vars => NULL() !< Pointer to module variables type [-] + INTEGER(IntKi) , DIMENSION(:), ALLOCATABLE :: SrcMaps !< Indices of mappings where module is the source [-] + INTEGER(IntKi) , DIMENSION(:), ALLOCATABLE :: DstMaps !< Indices of mappings where module is the destination [-] + END TYPE ModDataType +! ======================= CONTAINS subroutine NWTC_Library_CopyProgDesc(SrcProgDescData, DstProgDescData, CtrlCode, ErrStat, ErrMsg) @@ -110,28 +198,25 @@ subroutine NWTC_Library_DestroyProgDesc(ProgDescData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine NWTC_Library_PackProgDesc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine NWTC_Library_PackProgDesc(RF, Indata) + type(RegFile), intent(inout) :: RF type(ProgDesc), intent(in) :: InData character(*), parameter :: RoutineName = 'NWTC_Library_PackProgDesc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Name) - call RegPack(Buf, InData%Ver) - call RegPack(Buf, InData%Date) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Name) + call RegPack(RF, InData%Ver) + call RegPack(RF, InData%Date) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine NWTC_Library_UnPackProgDesc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine NWTC_Library_UnPackProgDesc(RF, OutData) + type(RegFile), intent(inout) :: RF type(ProgDesc), intent(inout) :: OutData character(*), parameter :: RoutineName = 'NWTC_Library_UnPackProgDesc' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Name) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Ver) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Date) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Name); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ver); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Date); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine NWTC_Library_CopyFASTdataType(SrcFASTdataTypeData, DstFASTdataTypeData, CtrlCode, ErrStat, ErrMsg) @@ -206,94 +291,38 @@ subroutine NWTC_Library_DestroyFASTdataType(FASTdataTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine NWTC_Library_PackFASTdataType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine NWTC_Library_PackFASTdataType(RF, Indata) + type(RegFile), intent(inout) :: RF type(FASTdataType), intent(in) :: InData character(*), parameter :: RoutineName = 'NWTC_Library_PackFASTdataType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%File) - call RegPack(Buf, InData%Descr) - call RegPack(Buf, InData%NumChans) - call RegPack(Buf, InData%NumRecs) - call RegPack(Buf, InData%TimeStep) - call RegPack(Buf, allocated(InData%ChanNames)) - if (allocated(InData%ChanNames)) then - call RegPackBounds(Buf, 1, lbound(InData%ChanNames, kind=B8Ki), ubound(InData%ChanNames, kind=B8Ki)) - call RegPack(Buf, InData%ChanNames) - end if - call RegPack(Buf, allocated(InData%ChanUnits)) - if (allocated(InData%ChanUnits)) then - call RegPackBounds(Buf, 1, lbound(InData%ChanUnits, kind=B8Ki), ubound(InData%ChanUnits, kind=B8Ki)) - call RegPack(Buf, InData%ChanUnits) - end if - call RegPack(Buf, allocated(InData%Data)) - if (allocated(InData%Data)) then - call RegPackBounds(Buf, 2, lbound(InData%Data, kind=B8Ki), ubound(InData%Data, kind=B8Ki)) - call RegPack(Buf, InData%Data) - end if - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine NWTC_Library_UnPackFASTdataType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%File) + call RegPack(RF, InData%Descr) + call RegPack(RF, InData%NumChans) + call RegPack(RF, InData%NumRecs) + call RegPack(RF, InData%TimeStep) + call RegPackAlloc(RF, InData%ChanNames) + call RegPackAlloc(RF, InData%ChanUnits) + call RegPackAlloc(RF, InData%Data) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine NWTC_Library_UnPackFASTdataType(RF, OutData) + type(RegFile), intent(inout) :: RF type(FASTdataType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'NWTC_Library_UnPackFASTdataType' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%File) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Descr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumChans) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumRecs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TimeStep) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%ChanNames)) deallocate(OutData%ChanNames) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ChanNames(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ChanNames.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ChanNames) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ChanUnits)) deallocate(OutData%ChanUnits) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ChanUnits(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ChanUnits.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ChanUnits) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Data)) deallocate(OutData%Data) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Data(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Data.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Data) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%File); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Descr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumChans); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumRecs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TimeStep); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ChanNames); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ChanUnits); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Data); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine NWTC_Library_CopyOutParmType(SrcOutParmTypeData, DstOutParmTypeData, CtrlCode, ErrStat, ErrMsg) @@ -320,31 +349,27 @@ subroutine NWTC_Library_DestroyOutParmType(OutParmTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine NWTC_Library_PackOutParmType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine NWTC_Library_PackOutParmType(RF, Indata) + type(RegFile), intent(inout) :: RF type(OutParmType), intent(in) :: InData character(*), parameter :: RoutineName = 'NWTC_Library_PackOutParmType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Indx) - call RegPack(Buf, InData%Name) - call RegPack(Buf, InData%Units) - call RegPack(Buf, InData%SignM) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Indx) + call RegPack(RF, InData%Name) + call RegPack(RF, InData%Units) + call RegPack(RF, InData%SignM) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine NWTC_Library_UnPackOutParmType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine NWTC_Library_UnPackOutParmType(RF, OutData) + type(RegFile), intent(inout) :: RF type(OutParmType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'NWTC_Library_UnPackOutParmType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Indx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Name) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Units) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SignM) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Indx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Name); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Units); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SignM); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine NWTC_Library_CopyFileInfoType(SrcFileInfoTypeData, DstFileInfoTypeData, CtrlCode, ErrStat, ErrMsg) @@ -431,104 +456,34 @@ subroutine NWTC_Library_DestroyFileInfoType(FileInfoTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine NWTC_Library_PackFileInfoType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine NWTC_Library_PackFileInfoType(RF, Indata) + type(RegFile), intent(inout) :: RF type(FileInfoType), intent(in) :: InData character(*), parameter :: RoutineName = 'NWTC_Library_PackFileInfoType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%NumLines) - call RegPack(Buf, InData%NumFiles) - call RegPack(Buf, allocated(InData%FileLine)) - if (allocated(InData%FileLine)) then - call RegPackBounds(Buf, 1, lbound(InData%FileLine, kind=B8Ki), ubound(InData%FileLine, kind=B8Ki)) - call RegPack(Buf, InData%FileLine) - end if - call RegPack(Buf, allocated(InData%FileIndx)) - if (allocated(InData%FileIndx)) then - call RegPackBounds(Buf, 1, lbound(InData%FileIndx, kind=B8Ki), ubound(InData%FileIndx, kind=B8Ki)) - call RegPack(Buf, InData%FileIndx) - end if - call RegPack(Buf, allocated(InData%FileList)) - if (allocated(InData%FileList)) then - call RegPackBounds(Buf, 1, lbound(InData%FileList, kind=B8Ki), ubound(InData%FileList, kind=B8Ki)) - call RegPack(Buf, InData%FileList) - end if - call RegPack(Buf, allocated(InData%Lines)) - if (allocated(InData%Lines)) then - call RegPackBounds(Buf, 1, lbound(InData%Lines, kind=B8Ki), ubound(InData%Lines, kind=B8Ki)) - call RegPack(Buf, InData%Lines) - end if - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine NWTC_Library_UnPackFileInfoType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%NumLines) + call RegPack(RF, InData%NumFiles) + call RegPackAlloc(RF, InData%FileLine) + call RegPackAlloc(RF, InData%FileIndx) + call RegPackAlloc(RF, InData%FileList) + call RegPackAlloc(RF, InData%Lines) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine NWTC_Library_UnPackFileInfoType(RF, OutData) + type(RegFile), intent(inout) :: RF type(FileInfoType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'NWTC_Library_UnPackFileInfoType' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%NumLines) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumFiles) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%FileLine)) deallocate(OutData%FileLine) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FileLine(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FileLine.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FileLine) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FileIndx)) deallocate(OutData%FileIndx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FileIndx(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FileIndx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FileIndx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FileList)) deallocate(OutData%FileList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FileList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FileList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FileList) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Lines)) deallocate(OutData%Lines) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Lines(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Lines.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Lines) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%NumLines); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumFiles); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FileLine); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FileIndx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FileList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Lines); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine NWTC_Library_CopyQuaternion(SrcQuaternionData, DstQuaternionData, CtrlCode, ErrStat, ErrMsg) @@ -553,25 +508,23 @@ subroutine NWTC_Library_DestroyQuaternion(QuaternionData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine NWTC_Library_PackQuaternion(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine NWTC_Library_PackQuaternion(RF, Indata) + type(RegFile), intent(inout) :: RF type(Quaternion), intent(in) :: InData character(*), parameter :: RoutineName = 'NWTC_Library_PackQuaternion' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%q0) - call RegPack(Buf, InData%v) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%q0) + call RegPack(RF, InData%v) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine NWTC_Library_UnPackQuaternion(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine NWTC_Library_UnPackQuaternion(RF, OutData) + type(RegFile), intent(inout) :: RF type(Quaternion), intent(inout) :: OutData character(*), parameter :: RoutineName = 'NWTC_Library_UnPackQuaternion' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%q0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%v) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%q0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%v); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine NWTC_Library_CopyNWTC_RandomNumber_ParameterType(SrcNWTC_RandomNumber_ParameterTypeData, DstNWTC_RandomNumber_ParameterTypeData, CtrlCode, ErrStat, ErrMsg) @@ -614,50 +567,850 @@ subroutine NWTC_Library_DestroyNWTC_RandomNumber_ParameterType(NWTC_RandomNumber end if end subroutine -subroutine NWTC_Library_PackNWTC_RandomNumber_ParameterType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine NWTC_Library_PackNWTC_RandomNumber_ParameterType(RF, Indata) + type(RegFile), intent(inout) :: RF type(NWTC_RandomNumber_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'NWTC_Library_PackNWTC_RandomNumber_ParameterType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%pRNG) - call RegPack(Buf, InData%RandSeed) - call RegPack(Buf, allocated(InData%RandSeedAry)) - if (allocated(InData%RandSeedAry)) then - call RegPackBounds(Buf, 1, lbound(InData%RandSeedAry, kind=B8Ki), ubound(InData%RandSeedAry, kind=B8Ki)) - call RegPack(Buf, InData%RandSeedAry) - end if - call RegPack(Buf, InData%RNG_type) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%pRNG) + call RegPack(RF, InData%RandSeed) + call RegPackAlloc(RF, InData%RandSeedAry) + call RegPack(RF, InData%RNG_type) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine NWTC_Library_UnPackNWTC_RandomNumber_ParameterType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine NWTC_Library_UnPackNWTC_RandomNumber_ParameterType(RF, OutData) + type(RegFile), intent(inout) :: RF type(NWTC_RandomNumber_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'NWTC_Library_UnPackNWTC_RandomNumber_ParameterType' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%pRNG) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RandSeed) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%RandSeedAry)) deallocate(OutData%RandSeedAry) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%pRNG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RandSeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RandSeedAry); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RNG_type); if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine NWTC_Library_CopyModVarType(SrcModVarTypeData, DstModVarTypeData, CtrlCode, ErrStat, ErrMsg) + type(ModVarType), intent(in) :: SrcModVarTypeData + type(ModVarType), intent(inout) :: DstModVarTypeData + integer(IntKi), intent(in ) :: CtrlCode + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + integer(B8Ki) :: LB(1), UB(1) + integer(IntKi) :: ErrStat2 + character(*), parameter :: RoutineName = 'NWTC_Library_CopyModVarType' + ErrStat = ErrID_None + ErrMsg = '' + DstModVarTypeData%Name = SrcModVarTypeData%Name + DstModVarTypeData%Field = SrcModVarTypeData%Field + DstModVarTypeData%Nodes = SrcModVarTypeData%Nodes + DstModVarTypeData%Num = SrcModVarTypeData%Num + DstModVarTypeData%Flags = SrcModVarTypeData%Flags + DstModVarTypeData%DerivOrder = SrcModVarTypeData%DerivOrder + if (allocated(SrcModVarTypeData%iLoc)) then + LB(1:1) = lbound(SrcModVarTypeData%iLoc, kind=B8Ki) + UB(1:1) = ubound(SrcModVarTypeData%iLoc, kind=B8Ki) + if (.not. allocated(DstModVarTypeData%iLoc)) then + allocate(DstModVarTypeData%iLoc(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModVarTypeData%iLoc.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModVarTypeData%iLoc = SrcModVarTypeData%iLoc + end if + if (allocated(SrcModVarTypeData%iSol)) then + LB(1:1) = lbound(SrcModVarTypeData%iSol, kind=B8Ki) + UB(1:1) = ubound(SrcModVarTypeData%iSol, kind=B8Ki) + if (.not. allocated(DstModVarTypeData%iSol)) then + allocate(DstModVarTypeData%iSol(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModVarTypeData%iSol.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModVarTypeData%iSol = SrcModVarTypeData%iSol + end if + if (allocated(SrcModVarTypeData%iLin)) then + LB(1:1) = lbound(SrcModVarTypeData%iLin, kind=B8Ki) + UB(1:1) = ubound(SrcModVarTypeData%iLin, kind=B8Ki) + if (.not. allocated(DstModVarTypeData%iLin)) then + allocate(DstModVarTypeData%iLin(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModVarTypeData%iLin.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModVarTypeData%iLin = SrcModVarTypeData%iLin + end if + if (allocated(SrcModVarTypeData%iq)) then + LB(1:1) = lbound(SrcModVarTypeData%iq, kind=B8Ki) + UB(1:1) = ubound(SrcModVarTypeData%iq, kind=B8Ki) + if (.not. allocated(DstModVarTypeData%iq)) then + allocate(DstModVarTypeData%iq(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModVarTypeData%iq.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModVarTypeData%iq = SrcModVarTypeData%iq + end if + DstModVarTypeData%iUsr = SrcModVarTypeData%iUsr + DstModVarTypeData%jUsr = SrcModVarTypeData%jUsr + DstModVarTypeData%MeshID = SrcModVarTypeData%MeshID + DstModVarTypeData%Solve = SrcModVarTypeData%Solve + DstModVarTypeData%Perturb = SrcModVarTypeData%Perturb + if (allocated(SrcModVarTypeData%LinNames)) then + LB(1:1) = lbound(SrcModVarTypeData%LinNames, kind=B8Ki) + UB(1:1) = ubound(SrcModVarTypeData%LinNames, kind=B8Ki) + if (.not. allocated(DstModVarTypeData%LinNames)) then + allocate(DstModVarTypeData%LinNames(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModVarTypeData%LinNames.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModVarTypeData%LinNames = SrcModVarTypeData%LinNames + end if +end subroutine + +subroutine NWTC_Library_DestroyModVarType(ModVarTypeData, ErrStat, ErrMsg) + type(ModVarType), intent(inout) :: ModVarTypeData + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + character(*), parameter :: RoutineName = 'NWTC_Library_DestroyModVarType' + ErrStat = ErrID_None + ErrMsg = '' + if (allocated(ModVarTypeData%iLoc)) then + deallocate(ModVarTypeData%iLoc) + end if + if (allocated(ModVarTypeData%iSol)) then + deallocate(ModVarTypeData%iSol) + end if + if (allocated(ModVarTypeData%iLin)) then + deallocate(ModVarTypeData%iLin) + end if + if (allocated(ModVarTypeData%iq)) then + deallocate(ModVarTypeData%iq) + end if + if (allocated(ModVarTypeData%LinNames)) then + deallocate(ModVarTypeData%LinNames) + end if +end subroutine + +subroutine NWTC_Library_PackModVarType(RF, Indata) + type(RegFile), intent(inout) :: RF + type(ModVarType), intent(in) :: InData + character(*), parameter :: RoutineName = 'NWTC_Library_PackModVarType' + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Name) + call RegPack(RF, InData%Field) + call RegPack(RF, InData%Nodes) + call RegPack(RF, InData%Num) + call RegPack(RF, InData%Flags) + call RegPack(RF, InData%DerivOrder) + call RegPackAlloc(RF, InData%iLoc) + call RegPackAlloc(RF, InData%iSol) + call RegPackAlloc(RF, InData%iLin) + call RegPackAlloc(RF, InData%iq) + call RegPack(RF, InData%iUsr) + call RegPack(RF, InData%jUsr) + call RegPack(RF, InData%MeshID) + call RegPack(RF, InData%Solve) + call RegPack(RF, InData%Perturb) + call RegPackAlloc(RF, InData%LinNames) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine NWTC_Library_UnPackModVarType(RF, OutData) + type(RegFile), intent(inout) :: RF + type(ModVarType), intent(inout) :: OutData + character(*), parameter :: RoutineName = 'NWTC_Library_UnPackModVarType' + integer(B8Ki) :: LB(1), UB(1) + integer(IntKi) :: stat + logical :: IsAllocAssoc + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Name); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Field); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Nodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Num); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Flags); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DerivOrder); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%iLoc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%iSol); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%iLin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%iq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%iUsr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%jUsr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MeshID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Solve); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Perturb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames); if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine NWTC_Library_CopyModVarsType(SrcModVarsTypeData, DstModVarsTypeData, CtrlCode, ErrStat, ErrMsg) + type(ModVarsType), intent(in) :: SrcModVarsTypeData + type(ModVarsType), intent(inout) :: DstModVarsTypeData + integer(IntKi), intent(in ) :: CtrlCode + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + integer(B8Ki) :: i1 + integer(B8Ki) :: LB(1), UB(1) + integer(IntKi) :: ErrStat2 + character(ErrMsgLen) :: ErrMsg2 + character(*), parameter :: RoutineName = 'NWTC_Library_CopyModVarsType' + ErrStat = ErrID_None + ErrMsg = '' + DstModVarsTypeData%ModNum = SrcModVarsTypeData%ModNum + DstModVarsTypeData%ModAbbr = SrcModVarsTypeData%ModAbbr + if (allocated(SrcModVarsTypeData%x)) then + LB(1:1) = lbound(SrcModVarsTypeData%x, kind=B8Ki) + UB(1:1) = ubound(SrcModVarsTypeData%x, kind=B8Ki) + if (.not. allocated(DstModVarsTypeData%x)) then + allocate(DstModVarsTypeData%x(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModVarsTypeData%x.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + do i1 = LB(1), UB(1) + call NWTC_Library_CopyModVarType(SrcModVarsTypeData%x(i1), DstModVarsTypeData%x(i1), CtrlCode, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (ErrStat >= AbortErrLev) return + end do + end if + if (allocated(SrcModVarsTypeData%u)) then + LB(1:1) = lbound(SrcModVarsTypeData%u, kind=B8Ki) + UB(1:1) = ubound(SrcModVarsTypeData%u, kind=B8Ki) + if (.not. allocated(DstModVarsTypeData%u)) then + allocate(DstModVarsTypeData%u(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModVarsTypeData%u.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + do i1 = LB(1), UB(1) + call NWTC_Library_CopyModVarType(SrcModVarsTypeData%u(i1), DstModVarsTypeData%u(i1), CtrlCode, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (ErrStat >= AbortErrLev) return + end do + end if + if (allocated(SrcModVarsTypeData%y)) then + LB(1:1) = lbound(SrcModVarsTypeData%y, kind=B8Ki) + UB(1:1) = ubound(SrcModVarsTypeData%y, kind=B8Ki) + if (.not. allocated(DstModVarsTypeData%y)) then + allocate(DstModVarsTypeData%y(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModVarsTypeData%y.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + do i1 = LB(1), UB(1) + call NWTC_Library_CopyModVarType(SrcModVarsTypeData%y(i1), DstModVarsTypeData%y(i1), CtrlCode, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + if (ErrStat >= AbortErrLev) return + end do + end if + DstModVarsTypeData%Nx = SrcModVarsTypeData%Nx + DstModVarsTypeData%Nu = SrcModVarsTypeData%Nu + DstModVarsTypeData%Ny = SrcModVarsTypeData%Ny +end subroutine + +subroutine NWTC_Library_DestroyModVarsType(ModVarsTypeData, ErrStat, ErrMsg) + type(ModVarsType), intent(inout) :: ModVarsTypeData + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + integer(B8Ki) :: i1 + integer(B8Ki) :: LB(1), UB(1) + integer(IntKi) :: ErrStat2 + character(ErrMsgLen) :: ErrMsg2 + character(*), parameter :: RoutineName = 'NWTC_Library_DestroyModVarsType' + ErrStat = ErrID_None + ErrMsg = '' + if (allocated(ModVarsTypeData%x)) then + LB(1:1) = lbound(ModVarsTypeData%x, kind=B8Ki) + UB(1:1) = ubound(ModVarsTypeData%x, kind=B8Ki) + do i1 = LB(1), UB(1) + call NWTC_Library_DestroyModVarType(ModVarsTypeData%x(i1), ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + end do + deallocate(ModVarsTypeData%x) + end if + if (allocated(ModVarsTypeData%u)) then + LB(1:1) = lbound(ModVarsTypeData%u, kind=B8Ki) + UB(1:1) = ubound(ModVarsTypeData%u, kind=B8Ki) + do i1 = LB(1), UB(1) + call NWTC_Library_DestroyModVarType(ModVarsTypeData%u(i1), ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + end do + deallocate(ModVarsTypeData%u) + end if + if (allocated(ModVarsTypeData%y)) then + LB(1:1) = lbound(ModVarsTypeData%y, kind=B8Ki) + UB(1:1) = ubound(ModVarsTypeData%y, kind=B8Ki) + do i1 = LB(1), UB(1) + call NWTC_Library_DestroyModVarType(ModVarsTypeData%y(i1), ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) + end do + deallocate(ModVarsTypeData%y) + end if +end subroutine + +subroutine NWTC_Library_PackModVarsType(RF, Indata) + type(RegFile), intent(inout) :: RF + type(ModVarsType), intent(in) :: InData + character(*), parameter :: RoutineName = 'NWTC_Library_PackModVarsType' + integer(B8Ki) :: i1 + integer(B8Ki) :: LB(1), UB(1) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%ModNum) + call RegPack(RF, InData%ModAbbr) + call RegPack(RF, allocated(InData%x)) + if (allocated(InData%x)) then + call RegPackBounds(RF, 1, lbound(InData%x, kind=B8Ki), ubound(InData%x, kind=B8Ki)) + LB(1:1) = lbound(InData%x, kind=B8Ki) + UB(1:1) = ubound(InData%x, kind=B8Ki) + do i1 = LB(1), UB(1) + call NWTC_Library_PackModVarType(RF, InData%x(i1)) + end do + end if + call RegPack(RF, allocated(InData%u)) + if (allocated(InData%u)) then + call RegPackBounds(RF, 1, lbound(InData%u, kind=B8Ki), ubound(InData%u, kind=B8Ki)) + LB(1:1) = lbound(InData%u, kind=B8Ki) + UB(1:1) = ubound(InData%u, kind=B8Ki) + do i1 = LB(1), UB(1) + call NWTC_Library_PackModVarType(RF, InData%u(i1)) + end do + end if + call RegPack(RF, allocated(InData%y)) + if (allocated(InData%y)) then + call RegPackBounds(RF, 1, lbound(InData%y, kind=B8Ki), ubound(InData%y, kind=B8Ki)) + LB(1:1) = lbound(InData%y, kind=B8Ki) + UB(1:1) = ubound(InData%y, kind=B8Ki) + do i1 = LB(1), UB(1) + call NWTC_Library_PackModVarType(RF, InData%y(i1)) + end do + end if + call RegPack(RF, InData%Nx) + call RegPack(RF, InData%Nu) + call RegPack(RF, InData%Ny) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine NWTC_Library_UnPackModVarsType(RF, OutData) + type(RegFile), intent(inout) :: RF + type(ModVarsType), intent(inout) :: OutData + character(*), parameter :: RoutineName = 'NWTC_Library_UnPackModVarsType' + integer(B8Ki) :: i1 + integer(B8Ki) :: LB(1), UB(1) + integer(IntKi) :: stat + logical :: IsAllocAssoc + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%ModNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ModAbbr); if (RegCheckErr(RF, RoutineName)) return + if (allocated(OutData%x)) deallocate(OutData%x) + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return + if (IsAllocAssoc) then + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return + allocate(OutData%x(LB(1):UB(1)),stat=stat) + if (stat /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x.', RF%ErrStat, RF%ErrMsg, RoutineName) + return + end if + do i1 = LB(1), UB(1) + call NWTC_Library_UnpackModVarType(RF, OutData%x(i1)) ! x + end do + end if + if (allocated(OutData%u)) deallocate(OutData%u) + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RandSeedAry(LB(1):UB(1)),stat=stat) + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return + allocate(OutData%u(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RandSeedAry.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegUnpack(Buf, OutData%RandSeedAry) - if (RegCheckErr(Buf, RoutineName)) return + do i1 = LB(1), UB(1) + call NWTC_Library_UnpackModVarType(RF, OutData%u(i1)) ! u + end do + end if + if (allocated(OutData%y)) deallocate(OutData%y) + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return + if (IsAllocAssoc) then + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return + allocate(OutData%y(LB(1):UB(1)),stat=stat) + if (stat /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y.', RF%ErrStat, RF%ErrMsg, RoutineName) + return + end if + do i1 = LB(1), UB(1) + call NWTC_Library_UnpackModVarType(RF, OutData%y(i1)) ! y + end do + end if + call RegUnpack(RF, OutData%Nx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Nu); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ny); if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine NWTC_Library_CopyModValsType(SrcModValsTypeData, DstModValsTypeData, CtrlCode, ErrStat, ErrMsg) + type(ModValsType), intent(in) :: SrcModValsTypeData + type(ModValsType), intent(inout) :: DstModValsTypeData + integer(IntKi), intent(in ) :: CtrlCode + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + integer(B8Ki) :: LB(2), UB(2) + integer(IntKi) :: ErrStat2 + character(*), parameter :: RoutineName = 'NWTC_Library_CopyModValsType' + ErrStat = ErrID_None + ErrMsg = '' + if (allocated(SrcModValsTypeData%x)) then + LB(1:1) = lbound(SrcModValsTypeData%x, kind=B8Ki) + UB(1:1) = ubound(SrcModValsTypeData%x, kind=B8Ki) + if (.not. allocated(DstModValsTypeData%x)) then + allocate(DstModValsTypeData%x(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModValsTypeData%x.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModValsTypeData%x = SrcModValsTypeData%x + end if + if (allocated(SrcModValsTypeData%dxdt)) then + LB(1:1) = lbound(SrcModValsTypeData%dxdt, kind=B8Ki) + UB(1:1) = ubound(SrcModValsTypeData%dxdt, kind=B8Ki) + if (.not. allocated(DstModValsTypeData%dxdt)) then + allocate(DstModValsTypeData%dxdt(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModValsTypeData%dxdt.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModValsTypeData%dxdt = SrcModValsTypeData%dxdt + end if + if (allocated(SrcModValsTypeData%u)) then + LB(1:1) = lbound(SrcModValsTypeData%u, kind=B8Ki) + UB(1:1) = ubound(SrcModValsTypeData%u, kind=B8Ki) + if (.not. allocated(DstModValsTypeData%u)) then + allocate(DstModValsTypeData%u(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModValsTypeData%u.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModValsTypeData%u = SrcModValsTypeData%u + end if + if (allocated(SrcModValsTypeData%y)) then + LB(1:1) = lbound(SrcModValsTypeData%y, kind=B8Ki) + UB(1:1) = ubound(SrcModValsTypeData%y, kind=B8Ki) + if (.not. allocated(DstModValsTypeData%y)) then + allocate(DstModValsTypeData%y(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModValsTypeData%y.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModValsTypeData%y = SrcModValsTypeData%y + end if + if (allocated(SrcModValsTypeData%u_perturb)) then + LB(1:1) = lbound(SrcModValsTypeData%u_perturb, kind=B8Ki) + UB(1:1) = ubound(SrcModValsTypeData%u_perturb, kind=B8Ki) + if (.not. allocated(DstModValsTypeData%u_perturb)) then + allocate(DstModValsTypeData%u_perturb(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModValsTypeData%u_perturb.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModValsTypeData%u_perturb = SrcModValsTypeData%u_perturb + end if + if (allocated(SrcModValsTypeData%x_perturb)) then + LB(1:1) = lbound(SrcModValsTypeData%x_perturb, kind=B8Ki) + UB(1:1) = ubound(SrcModValsTypeData%x_perturb, kind=B8Ki) + if (.not. allocated(DstModValsTypeData%x_perturb)) then + allocate(DstModValsTypeData%x_perturb(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModValsTypeData%x_perturb.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModValsTypeData%x_perturb = SrcModValsTypeData%x_perturb + end if + if (allocated(SrcModValsTypeData%xp)) then + LB(1:1) = lbound(SrcModValsTypeData%xp, kind=B8Ki) + UB(1:1) = ubound(SrcModValsTypeData%xp, kind=B8Ki) + if (.not. allocated(DstModValsTypeData%xp)) then + allocate(DstModValsTypeData%xp(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModValsTypeData%xp.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModValsTypeData%xp = SrcModValsTypeData%xp + end if + if (allocated(SrcModValsTypeData%xn)) then + LB(1:1) = lbound(SrcModValsTypeData%xn, kind=B8Ki) + UB(1:1) = ubound(SrcModValsTypeData%xn, kind=B8Ki) + if (.not. allocated(DstModValsTypeData%xn)) then + allocate(DstModValsTypeData%xn(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModValsTypeData%xn.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModValsTypeData%xn = SrcModValsTypeData%xn + end if + if (allocated(SrcModValsTypeData%yp)) then + LB(1:1) = lbound(SrcModValsTypeData%yp, kind=B8Ki) + UB(1:1) = ubound(SrcModValsTypeData%yp, kind=B8Ki) + if (.not. allocated(DstModValsTypeData%yp)) then + allocate(DstModValsTypeData%yp(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModValsTypeData%yp.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModValsTypeData%yp = SrcModValsTypeData%yp + end if + if (allocated(SrcModValsTypeData%yn)) then + LB(1:1) = lbound(SrcModValsTypeData%yn, kind=B8Ki) + UB(1:1) = ubound(SrcModValsTypeData%yn, kind=B8Ki) + if (.not. allocated(DstModValsTypeData%yn)) then + allocate(DstModValsTypeData%yn(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModValsTypeData%yn.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModValsTypeData%yn = SrcModValsTypeData%yn + end if + if (allocated(SrcModValsTypeData%dYdx)) then + LB(1:2) = lbound(SrcModValsTypeData%dYdx, kind=B8Ki) + UB(1:2) = ubound(SrcModValsTypeData%dYdx, kind=B8Ki) + if (.not. allocated(DstModValsTypeData%dYdx)) then + allocate(DstModValsTypeData%dYdx(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModValsTypeData%dYdx.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModValsTypeData%dYdx = SrcModValsTypeData%dYdx + end if + if (allocated(SrcModValsTypeData%dXdx)) then + LB(1:2) = lbound(SrcModValsTypeData%dXdx, kind=B8Ki) + UB(1:2) = ubound(SrcModValsTypeData%dXdx, kind=B8Ki) + if (.not. allocated(DstModValsTypeData%dXdx)) then + allocate(DstModValsTypeData%dXdx(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModValsTypeData%dXdx.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModValsTypeData%dXdx = SrcModValsTypeData%dXdx + end if + if (allocated(SrcModValsTypeData%dYdu)) then + LB(1:2) = lbound(SrcModValsTypeData%dYdu, kind=B8Ki) + UB(1:2) = ubound(SrcModValsTypeData%dYdu, kind=B8Ki) + if (.not. allocated(DstModValsTypeData%dYdu)) then + allocate(DstModValsTypeData%dYdu(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModValsTypeData%dYdu.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModValsTypeData%dYdu = SrcModValsTypeData%dYdu + end if + if (allocated(SrcModValsTypeData%dXdu)) then + LB(1:2) = lbound(SrcModValsTypeData%dXdu, kind=B8Ki) + UB(1:2) = ubound(SrcModValsTypeData%dXdu, kind=B8Ki) + if (.not. allocated(DstModValsTypeData%dXdu)) then + allocate(DstModValsTypeData%dXdu(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModValsTypeData%dXdu.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModValsTypeData%dXdu = SrcModValsTypeData%dXdu + end if +end subroutine + +subroutine NWTC_Library_DestroyModValsType(ModValsTypeData, ErrStat, ErrMsg) + type(ModValsType), intent(inout) :: ModValsTypeData + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + character(*), parameter :: RoutineName = 'NWTC_Library_DestroyModValsType' + ErrStat = ErrID_None + ErrMsg = '' + if (allocated(ModValsTypeData%x)) then + deallocate(ModValsTypeData%x) + end if + if (allocated(ModValsTypeData%dxdt)) then + deallocate(ModValsTypeData%dxdt) + end if + if (allocated(ModValsTypeData%u)) then + deallocate(ModValsTypeData%u) + end if + if (allocated(ModValsTypeData%y)) then + deallocate(ModValsTypeData%y) + end if + if (allocated(ModValsTypeData%u_perturb)) then + deallocate(ModValsTypeData%u_perturb) + end if + if (allocated(ModValsTypeData%x_perturb)) then + deallocate(ModValsTypeData%x_perturb) + end if + if (allocated(ModValsTypeData%xp)) then + deallocate(ModValsTypeData%xp) + end if + if (allocated(ModValsTypeData%xn)) then + deallocate(ModValsTypeData%xn) + end if + if (allocated(ModValsTypeData%yp)) then + deallocate(ModValsTypeData%yp) + end if + if (allocated(ModValsTypeData%yn)) then + deallocate(ModValsTypeData%yn) + end if + if (allocated(ModValsTypeData%dYdx)) then + deallocate(ModValsTypeData%dYdx) + end if + if (allocated(ModValsTypeData%dXdx)) then + deallocate(ModValsTypeData%dXdx) + end if + if (allocated(ModValsTypeData%dYdu)) then + deallocate(ModValsTypeData%dYdu) + end if + if (allocated(ModValsTypeData%dXdu)) then + deallocate(ModValsTypeData%dXdu) + end if +end subroutine + +subroutine NWTC_Library_PackModValsType(RF, Indata) + type(RegFile), intent(inout) :: RF + type(ModValsType), intent(in) :: InData + character(*), parameter :: RoutineName = 'NWTC_Library_PackModValsType' + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%x) + call RegPackAlloc(RF, InData%dxdt) + call RegPackAlloc(RF, InData%u) + call RegPackAlloc(RF, InData%y) + call RegPackAlloc(RF, InData%u_perturb) + call RegPackAlloc(RF, InData%x_perturb) + call RegPackAlloc(RF, InData%xp) + call RegPackAlloc(RF, InData%xn) + call RegPackAlloc(RF, InData%yp) + call RegPackAlloc(RF, InData%yn) + call RegPackAlloc(RF, InData%dYdx) + call RegPackAlloc(RF, InData%dXdx) + call RegPackAlloc(RF, InData%dYdu) + call RegPackAlloc(RF, InData%dXdu) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine NWTC_Library_UnPackModValsType(RF, OutData) + type(RegFile), intent(inout) :: RF + type(ModValsType), intent(inout) :: OutData + character(*), parameter :: RoutineName = 'NWTC_Library_UnPackModValsType' + integer(B8Ki) :: LB(2), UB(2) + integer(IntKi) :: stat + logical :: IsAllocAssoc + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dxdt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%u_perturb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%x_perturb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%xp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%xn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%yp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%yn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dYdx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dXdx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dYdu); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dXdu); if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine NWTC_Library_CopyModDataType(SrcModDataTypeData, DstModDataTypeData, CtrlCode, ErrStat, ErrMsg) + type(ModDataType), intent(in) :: SrcModDataTypeData + type(ModDataType), intent(inout) :: DstModDataTypeData + integer(IntKi), intent(in ) :: CtrlCode + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + integer(B8Ki) :: LB(2), UB(2) + integer(IntKi) :: ErrStat2 + character(ErrMsgLen) :: ErrMsg2 + character(*), parameter :: RoutineName = 'NWTC_Library_CopyModDataType' + ErrStat = ErrID_None + ErrMsg = '' + DstModDataTypeData%Idx = SrcModDataTypeData%Idx + DstModDataTypeData%ID = SrcModDataTypeData%ID + DstModDataTypeData%Abbr = SrcModDataTypeData%Abbr + DstModDataTypeData%Ins = SrcModDataTypeData%Ins + DstModDataTypeData%IsTC = SrcModDataTypeData%IsTC + DstModDataTypeData%DT = SrcModDataTypeData%DT + DstModDataTypeData%SubSteps = SrcModDataTypeData%SubSteps + if (allocated(SrcModDataTypeData%ixs)) then + LB(1:2) = lbound(SrcModDataTypeData%ixs, kind=B8Ki) + UB(1:2) = ubound(SrcModDataTypeData%ixs, kind=B8Ki) + if (.not. allocated(DstModDataTypeData%ixs)) then + allocate(DstModDataTypeData%ixs(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModDataTypeData%ixs.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModDataTypeData%ixs = SrcModDataTypeData%ixs + end if + if (allocated(SrcModDataTypeData%ius)) then + LB(1:2) = lbound(SrcModDataTypeData%ius, kind=B8Ki) + UB(1:2) = ubound(SrcModDataTypeData%ius, kind=B8Ki) + if (.not. allocated(DstModDataTypeData%ius)) then + allocate(DstModDataTypeData%ius(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModDataTypeData%ius.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModDataTypeData%ius = SrcModDataTypeData%ius + end if + if (allocated(SrcModDataTypeData%iys)) then + LB(1:2) = lbound(SrcModDataTypeData%iys, kind=B8Ki) + UB(1:2) = ubound(SrcModDataTypeData%iys, kind=B8Ki) + if (.not. allocated(DstModDataTypeData%iys)) then + allocate(DstModDataTypeData%iys(LB(1):UB(1),LB(2):UB(2)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModDataTypeData%iys.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModDataTypeData%iys = SrcModDataTypeData%iys + end if + DstModDataTypeData%Vars => SrcModDataTypeData%Vars + if (allocated(SrcModDataTypeData%SrcMaps)) then + LB(1:1) = lbound(SrcModDataTypeData%SrcMaps, kind=B8Ki) + UB(1:1) = ubound(SrcModDataTypeData%SrcMaps, kind=B8Ki) + if (.not. allocated(DstModDataTypeData%SrcMaps)) then + allocate(DstModDataTypeData%SrcMaps(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModDataTypeData%SrcMaps.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModDataTypeData%SrcMaps = SrcModDataTypeData%SrcMaps + end if + if (allocated(SrcModDataTypeData%DstMaps)) then + LB(1:1) = lbound(SrcModDataTypeData%DstMaps, kind=B8Ki) + UB(1:1) = ubound(SrcModDataTypeData%DstMaps, kind=B8Ki) + if (.not. allocated(DstModDataTypeData%DstMaps)) then + allocate(DstModDataTypeData%DstMaps(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstModDataTypeData%DstMaps.', ErrStat, ErrMsg, RoutineName) + return + end if + end if + DstModDataTypeData%DstMaps = SrcModDataTypeData%DstMaps + end if +end subroutine + +subroutine NWTC_Library_DestroyModDataType(ModDataTypeData, ErrStat, ErrMsg) + type(ModDataType), intent(inout) :: ModDataTypeData + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + integer(IntKi) :: ErrStat2 + character(ErrMsgLen) :: ErrMsg2 + character(*), parameter :: RoutineName = 'NWTC_Library_DestroyModDataType' + ErrStat = ErrID_None + ErrMsg = '' + if (allocated(ModDataTypeData%ixs)) then + deallocate(ModDataTypeData%ixs) + end if + if (allocated(ModDataTypeData%ius)) then + deallocate(ModDataTypeData%ius) + end if + if (allocated(ModDataTypeData%iys)) then + deallocate(ModDataTypeData%iys) + end if + nullify(ModDataTypeData%Vars) + if (allocated(ModDataTypeData%SrcMaps)) then + deallocate(ModDataTypeData%SrcMaps) + end if + if (allocated(ModDataTypeData%DstMaps)) then + deallocate(ModDataTypeData%DstMaps) + end if +end subroutine + +subroutine NWTC_Library_PackModDataType(RF, Indata) + type(RegFile), intent(inout) :: RF + type(ModDataType), intent(in) :: InData + character(*), parameter :: RoutineName = 'NWTC_Library_PackModDataType' + logical :: PtrInIndex + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Idx) + call RegPack(RF, InData%ID) + call RegPack(RF, InData%Abbr) + call RegPack(RF, InData%Ins) + call RegPack(RF, InData%IsTC) + call RegPack(RF, InData%DT) + call RegPack(RF, InData%SubSteps) + call RegPackAlloc(RF, InData%ixs) + call RegPackAlloc(RF, InData%ius) + call RegPackAlloc(RF, InData%iys) + call RegPack(RF, associated(InData%Vars)) + if (associated(InData%Vars)) then + call RegPackPointer(RF, c_loc(InData%Vars), PtrInIndex) + if (.not. PtrInIndex) then + call NWTC_Library_PackModVarsType(RF, InData%Vars) + end if + end if + call RegPackAlloc(RF, InData%SrcMaps) + call RegPackAlloc(RF, InData%DstMaps) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine NWTC_Library_UnPackModDataType(RF, OutData) + type(RegFile), intent(inout) :: RF + type(ModDataType), intent(inout) :: OutData + character(*), parameter :: RoutineName = 'NWTC_Library_UnPackModDataType' + integer(B8Ki) :: LB(2), UB(2) + integer(IntKi) :: stat + logical :: IsAllocAssoc + integer(B8Ki) :: PtrIdx + type(c_ptr) :: Ptr + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Idx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Abbr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ins); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IsTC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SubSteps); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ixs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ius); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%iys); if (RegCheckErr(RF, RoutineName)) return + if (associated(OutData%Vars)) deallocate(OutData%Vars) + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return + if (IsAllocAssoc) then + call RegUnpackPointer(RF, Ptr, PtrIdx); if (RegCheckErr(RF, RoutineName)) return + if (c_associated(Ptr)) then + call c_f_pointer(Ptr, OutData%Vars) + else + allocate(OutData%Vars,stat=stat) + if (stat /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vars.', RF%ErrStat, RF%ErrMsg, RoutineName) + return + end if + RF%Pointers(PtrIdx) = c_loc(OutData%Vars) + call NWTC_Library_UnpackModVarsType(RF, OutData%Vars) ! Vars + end if + else + OutData%Vars => null() end if - call RegUnpack(Buf, OutData%RNG_type) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SrcMaps); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DstMaps); if (RegCheckErr(RF, RoutineName)) return end subroutine END MODULE NWTC_Library_Types !ENDOFREGISTRYGENERATEDFILE diff --git a/modules/nwtc-library/src/Registry_NWTC_Library.txt b/modules/nwtc-library/src/Registry_NWTC_Library.txt index 5b6e03407e..8882bcc144 100644 --- a/modules/nwtc-library/src/Registry_NWTC_Library.txt +++ b/modules/nwtc-library/src/Registry_NWTC_Library.txt @@ -24,10 +24,10 @@ typedef ^ ^ CHARACTER(ChanLen) Name - - typedef ^ ^ CHARACTER(ChanLen) Units - - - "Units this channel is specified in" typedef ^ ^ IntKi SignM - - - "Multiplier for output channel; usually -1 (minus) or 0 (invalid channel)" -typedef NWTC_Library FileInfoType IntKi NumLines -typedef ^ ^ IntKi NumFiles -typedef ^ ^ IntKi FileLine {:} -typedef ^ ^ IntKi FileIndx {:} +typedef NWTC_Library FileInfoType IntKi NumLines +typedef ^ ^ IntKi NumFiles +typedef ^ ^ IntKi FileLine {:} +typedef ^ ^ IntKi FileIndx {:} typedef ^ ^ CHARACTER(MaxFileInfoLineLen) FileList {:} typedef ^ ^ CHARACTER(MaxFileInfoLineLen) Lines {:} @@ -35,9 +35,93 @@ typedef NWTC_Library Quaternion ReKi q0 typedef ^ ^ ReKi v {3} typedef NWTC_Library NWTC_RandomNumber_ParameterType IntKi pRNG -typedef ^ ^ IntKi RandSeed {3} -typedef ^ ^ IntKi RandSeedAry {:} -typedef ^ ^ CHARACTER(6) RNG_type +typedef ^ ^ IntKi RandSeed {3} +typedef ^ ^ IntKi RandSeedAry {:} +typedef ^ ^ CHARACTER(6) RNG_type + +#------------------------------------------------------------------------------- +# Module Variables +#------------------------------------------------------------------------------- + +param ^ - IntKi VarNameLen - 64 - "" - + +param ^ - IntKi VF_Force - 1 - "" - +param ^ - IntKi VF_Moment - 2 - "" - +param ^ - IntKi VF_Orientation - 3 - "" - +param ^ - IntKi VF_TransDisp - 4 - "" - +param ^ - IntKi VF_AngularDisp - 5 - "" - +param ^ - IntKi VF_TransVel - 6 - "" - +param ^ - IntKi VF_AngularVel - 7 - "" - +param ^ - IntKi VF_TransAcc - 8 - "" - +param ^ - IntKi VF_AngularAcc - 9 - "" - +param ^ - IntKi VF_Scalar - 10 - "" - + +param ^ - IntKi VF_None - 0 - "Variable with no flags" - +param ^ - IntKi VF_Mesh - 1 - "Variable contained in mesh" - +param ^ - IntKi VF_Line - 2 - "Variable is for a line mesh" - +param ^ - IntKi VF_RotFrame - 4 - "Variable in rotating frame" - +param ^ - IntKi VF_Ext - 8 - "Variable for extended linearization" - +param ^ - IntKi VF_Any - 4095 - "Enable all flags (used for filtering)" - + +param ^ - IntKi VC_None - 0 - "" - +param ^ - IntKi VC_Tight - 1 - "" - +param ^ - IntKi VC_Option1 - 2 - "" - +param ^ - IntKi VC_Option2 - 3 - "" - + +typedef ^ ModVarType character(VarNameLen) Name - - - "" - +typedef ^ ^ IntKi Field - 0 - "" - +typedef ^ ^ IntKi Nodes - 1 - "" - +typedef ^ ^ IntKi Num - 1 - "" - +typedef ^ ^ IntKi Flags - 0 - "" - +typedef ^ ^ IntKi DerivOrder - 0 - "" - +typedef ^ ^ IntKi iLoc : - - "indices in local arrays" - +typedef ^ ^ IntKi iSol : - - "indices in solver arrays" - +typedef ^ ^ IntKi iLin : - - "indices in linearization arrays" - +typedef ^ ^ IntKi iq : - - "row index in solver q matrix" - +typedef ^ ^ IntKi iUsr 2 - - "first user defined index for variable, can be used a lower/upper bounds" - +typedef ^ ^ IntKi jUsr - 0 - "second user defined index for variable" - +typedef ^ ^ IntKi MeshID - 0 - "Mesh identification number" - +typedef ^ ^ logical Solve - F - "flag indicating that variable is used by solver" - +typedef ^ ^ R8Ki Perturb - 0 - "perturbation" - +typedef ^ ^ character(LinChanLen) LinNames : - - "" - + +typedef ^ ModVarsType IntKi ModNum - 0 - "" - +typedef ^ ^ character(6) ModAbbr - - - "" - +typedef ^ ^ ModVarType x : - - "Module state variable array" - +typedef ^ ^ ModVarType u : - - "Module input variable array" - +typedef ^ ^ ModVarType y : - - "Module output variable array" - +typedef ^ ^ IntKi Nx - - - "" - +typedef ^ ^ IntKi Nu - - - "" - +typedef ^ ^ IntKi Ny - - - "" - + +typedef ^ ModValsType R8Ki x : - - "" - +typedef ^ ^ R8Ki dxdt : - - "" - +typedef ^ ^ R8Ki u : - - "" - +typedef ^ ^ R8Ki y : - - "" - +typedef ^ ^ R8Ki u_perturb : - - "input perturbation array" - +typedef ^ ^ R8Ki x_perturb : - - "" - +typedef ^ ^ R8Ki xp : - - "" - +typedef ^ ^ R8Ki xn : - - "" - +typedef ^ ^ R8Ki yp : - - "" - +typedef ^ ^ R8Ki yn : - - "" - +typedef ^ ^ R8Ki dYdx :: - - "" - +typedef ^ ^ R8Ki dXdx :: - - "" - +typedef ^ ^ R8Ki dYdu :: - - "" - +typedef ^ ^ R8Ki dXdu :: - - "" - + +typedef ^ ModDataType IntKi Idx - 0 - "Module index in array of modules" - +typedef ^ ^ IntKi ID - 0 - "Module identification number" - +typedef ^ ^ character(ChanLen) Abbr - - - "Module name abbreviation" - +typedef ^ ^ IntKi Ins - 0 - "Module instance number" - +typedef ^ ^ logical IsTC - F - "Flag indicating module is part of tight coupling" - +typedef ^ ^ R8Ki DT - 0 - "Module time step" - +typedef ^ ^ IntKi SubSteps - 0 - "Module number of substeps per solver time step" - +typedef ^ ^ IntKi ixs :: - - "index array mapping local x vector to global x vector" - +typedef ^ ^ IntKi ius :: - - "index array mapping local u vector to global u vector" - +typedef ^ ^ IntKi iys :: - - "index array mapping local y vector to global y vector" - +typedef ^ ^ ModVarsType *Vars - - - "Pointer to module variables type" - +typedef ^ ^ IntKi SrcMaps : - - "Indices of mappings where module is the source" +typedef ^ ^ IntKi DstMaps : - - "Indices of mappings where module is the destination" # This file defines types that may be used from the NWTC_Library # include this into a component registry file if you wish to use these types @@ -76,6 +160,6 @@ typedef ^ ^ R8Ki DisplacedPo typedef ^ ^ R8Ki LoadLn2_A_Mat {:}{:} - - "The 3-components of the forces for each node of an element in the point-to-line load mapping (for each element)" typedef ^ ^ R8Ki LoadLn2_F {:}{:} - - "The 6-by-6 matrix that makes up the diagonal of the [A 0; B A] matrix in the point-to-line load mapping" typedef ^ ^ R8Ki LoadLn2_M {:}{:} - - "The 3-components of the moments for each node of an element in the point-to-line load mapping (for each element)" -typedef ^ ^ MeshMapLinearizationType dM -#typedef ^ ^ MeshType Lumped_Points_Dest - - - "temporary mesh for debugging the lumped values in the line2-to-line2" +typedef ^ ^ MeshMapLinearizationType dM +#typedef ^ ^ MeshType Lumped_Points_Dest - - - "temporary mesh for debugging the lumped values in the line2-to-line2" diff --git a/modules/nwtc-library/src/Registry_NWTC_Library_base.txt b/modules/nwtc-library/src/Registry_NWTC_Library_base.txt index 40cdaee1b9..310b3de0e9 100644 --- a/modules/nwtc-library/src/Registry_NWTC_Library_base.txt +++ b/modules/nwtc-library/src/Registry_NWTC_Library_base.txt @@ -38,3 +38,87 @@ typedef NWTC_Library NWTC_RandomNumber_ParameterType IntKi p typedef ^ ^ IntKi RandSeed {3} typedef ^ ^ IntKi RandSeedAry {:} typedef ^ ^ CHARACTER(6) RNG_type + +#------------------------------------------------------------------------------- +# Module Variables +#------------------------------------------------------------------------------- + +param ^ - IntKi VarNameLen - 64 - "" - + +param ^ - IntKi VF_Force - 1 - "" - +param ^ - IntKi VF_Moment - 2 - "" - +param ^ - IntKi VF_Orientation - 3 - "" - +param ^ - IntKi VF_TransDisp - 4 - "" - +param ^ - IntKi VF_AngularDisp - 5 - "" - +param ^ - IntKi VF_TransVel - 6 - "" - +param ^ - IntKi VF_AngularVel - 7 - "" - +param ^ - IntKi VF_TransAcc - 8 - "" - +param ^ - IntKi VF_AngularAcc - 9 - "" - +param ^ - IntKi VF_Scalar - 10 - "" - + +param ^ - IntKi VF_None - 0 - "Variable with no flags" - +param ^ - IntKi VF_Mesh - 1 - "Variable contained in mesh" - +param ^ - IntKi VF_Line - 2 - "Variable is for a line mesh" - +param ^ - IntKi VF_RotFrame - 4 - "Variable in rotating frame" - +param ^ - IntKi VF_Ext - 8 - "Variable for extended linearization" - +param ^ - IntKi VF_Any - 4095 - "Enable all flags (used for filtering)" - + +param ^ - IntKi VC_None - 0 - "" - +param ^ - IntKi VC_Tight - 1 - "" - +param ^ - IntKi VC_Option1 - 2 - "" - +param ^ - IntKi VC_Option2 - 3 - "" - + +typedef ^ ModVarType character(VarNameLen) Name - - - "" - +typedef ^ ^ IntKi Field - 0 - "" - +typedef ^ ^ IntKi Nodes - 1 - "" - +typedef ^ ^ IntKi Num - 1 - "" - +typedef ^ ^ IntKi Flags - 0 - "" - +typedef ^ ^ IntKi DerivOrder - 0 - "" - +typedef ^ ^ IntKi iLoc : - - "indices in local arrays" - +typedef ^ ^ IntKi iSol : - - "indices in solver arrays" - +typedef ^ ^ IntKi iLin : - - "indices in linearization arrays" - +typedef ^ ^ IntKi iq : - - "row index in solver q matrix" - +typedef ^ ^ IntKi iUsr 2 - - "first user defined index for variable, can be used a lower/upper bounds" - +typedef ^ ^ IntKi jUsr - 0 - "second user defined index for variable" - +typedef ^ ^ IntKi MeshID - 0 - "Mesh identification number" - +typedef ^ ^ logical Solve - F - "flag indicating that variable is used by solver" - +typedef ^ ^ R8Ki Perturb - 0 - "perturbation" - +typedef ^ ^ character(LinChanLen) LinNames : - - "" - + +typedef ^ ModVarsType IntKi ModNum - 0 - "" - +typedef ^ ^ character(6) ModAbbr - - - "" - +typedef ^ ^ ModVarType x : - - "Module state variable array" - +typedef ^ ^ ModVarType u : - - "Module input variable array" - +typedef ^ ^ ModVarType y : - - "Module output variable array" - +typedef ^ ^ IntKi Nx - - - "" - +typedef ^ ^ IntKi Nu - - - "" - +typedef ^ ^ IntKi Ny - - - "" - + +typedef ^ ModValsType R8Ki x : - - "" - +typedef ^ ^ R8Ki dxdt : - - "" - +typedef ^ ^ R8Ki u : - - "" - +typedef ^ ^ R8Ki y : - - "" - +typedef ^ ^ R8Ki u_perturb : - - "input perturbation array" - +typedef ^ ^ R8Ki x_perturb : - - "" - +typedef ^ ^ R8Ki xp : - - "" - +typedef ^ ^ R8Ki xn : - - "" - +typedef ^ ^ R8Ki yp : - - "" - +typedef ^ ^ R8Ki yn : - - "" - +typedef ^ ^ R8Ki dYdx :: - - "" - +typedef ^ ^ R8Ki dXdx :: - - "" - +typedef ^ ^ R8Ki dYdu :: - - "" - +typedef ^ ^ R8Ki dXdu :: - - "" - + +typedef ^ ModDataType IntKi Idx - 0 - "Module index in array of modules" - +typedef ^ ^ IntKi ID - 0 - "Module identification number" - +typedef ^ ^ character(ChanLen) Abbr - - - "Module name abbreviation" - +typedef ^ ^ IntKi Ins - 0 - "Module instance number" - +typedef ^ ^ logical IsTC - F - "Flag indicating module is part of tight coupling" - +typedef ^ ^ R8Ki DT - 0 - "Module time step" - +typedef ^ ^ IntKi SubSteps - 0 - "Module number of substeps per solver time step" - +typedef ^ ^ IntKi ixs :: - - "index array mapping local x vector to global x vector" - +typedef ^ ^ IntKi ius :: - - "index array mapping local u vector to global u vector" - +typedef ^ ^ IntKi iys :: - - "index array mapping local y vector to global y vector" - +typedef ^ ^ ModVarsType *Vars - - - "Pointer to module variables type" - +typedef ^ ^ IntKi SrcMaps : - - "Indices of mappings where module is the source" +typedef ^ ^ IntKi DstMaps : - - "Indices of mappings where module is the destination" diff --git a/modules/openfast-library/src/FAST_Subs.f90 b/modules/openfast-library/src/FAST_Subs.f90 index c809c0aa88..1732086c5f 100644 --- a/modules/openfast-library/src/FAST_Subs.f90 +++ b/modules/openfast-library/src/FAST_Subs.f90 @@ -7505,7 +7505,7 @@ SUBROUTINE FAST_CreateCheckpoint_T(t_initial, n_t_global, NumTurbines, Turbine, INTEGER(IntKi), OPTIONAL, INTENT(INOUT) :: Unit !< unit number for output file ! local variables: - type(PackBuffer) :: Buf + type(RegFile) :: RF INTEGER(IntKi) :: unOut ! unit number for output file INTEGER(IntKi) :: old_avrSwap1 ! previous value of avrSwap(1) !hack for Bladed DLL checkpoint/restore @@ -7519,19 +7519,6 @@ SUBROUTINE FAST_CreateCheckpoint_T(t_initial, n_t_global, NumTurbines, Turbine, ! init error status ErrStat = ErrID_None ErrMsg = "" - - ! Initialize the pack buffer - call InitPackBuffer(Buf, ErrStat2, ErrMsg2) - call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) - if (ErrStat >= AbortErrLev) return - - ! Get the arrays of data to be stored in the output file - call FAST_PackTurbineType(Buf, Turbine) - call SetErrStat(Buf%ErrStat, Buf%ErrMsg, ErrStat, ErrMsg, RoutineName ) - if (ErrStat >= AbortErrLev ) then - call cleanup() - return - end if FileName = TRIM(CheckpointRoot)//'.chkp' DLLFileName = TRIM(CheckpointRoot)//'.dll.chkp' @@ -7562,8 +7549,23 @@ SUBROUTINE FAST_CreateCheckpoint_T(t_initial, n_t_global, NumTurbines, Turbine, END IF - ! data from current turbine at time step: - call WritePackBuffer(Buf, unOut, ErrStat2, ErrMsg2) + ! Initialize the registry file + call InitRegFile(RF, unOut, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) + if (ErrStat >= AbortErrLev) return + + ! Pack data into the registry file + call FAST_PackTurbineType(RF, Turbine) + call SetErrStat(RF%ErrStat, RF%ErrMsg, ErrStat, ErrMsg, RoutineName ) + if (ErrStat >= AbortErrLev ) then + call cleanup() + return + end if + + ! Close registry file + call CloseRegFile(RF, ErrStat2, ErrMsg2) + call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) + if (ErrStat >= AbortErrLev) return ! If last turbine or no unit, close output unit IF (Turbine%TurbID == NumTurbines .OR. .NOT. PRESENT(Unit)) THEN @@ -7599,7 +7601,7 @@ SUBROUTINE FAST_CreateCheckpoint_T(t_initial, n_t_global, NumTurbines, Turbine, contains subroutine cleanup() - call DestroyPackBuffer(Buf, ErrStat2, ErrMsg2) + call CloseRegFile(RF, ErrStat2, ErrMsg2) end subroutine cleanup END SUBROUTINE FAST_CreateCheckpoint_T @@ -7664,7 +7666,7 @@ SUBROUTINE FAST_RestoreFromCheckpoint_T(t_initial, n_t_global, NumTurbines, Turb INTEGER(IntKi), OPTIONAL, INTENT(INOUT) :: Unit !< unit number for output file ! local variables: - type(PackBuffer) :: Buf + type(RegFile) :: RF INTEGER(IntKi) :: unIn ! unit number for input file INTEGER(IntKi) :: old_avrSwap1 ! previous value of avrSwap(1) !hack for Bladed DLL checkpoint/restore @@ -7705,14 +7707,14 @@ SUBROUTINE FAST_RestoreFromCheckpoint_T(t_initial, n_t_global, NumTurbines, Turb call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName ) IF (ErrStat >= AbortErrLev) return - ! Read the packed arrays - call ReadPackBuffer(Buf, unIn, ErrStat2, ErrMsg2) + ! Initialize registry file for reading + call OpenRegFile(RF, unIn, ErrStat2, ErrMsg2) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) if (ErrStat >= AbortErrLev) return - ! Put the arrays back in the data types - call FAST_UnpackTurbineType(Buf, Turbine) - call SetErrStat(Buf%ErrStat, Buf%ErrMsg, ErrStat, ErrMsg, RoutineName ) + ! Unpack registry file into turbine data structure + call FAST_UnpackTurbineType(RF, Turbine) + call SetErrStat(RF%ErrStat, RF%ErrMsg, ErrStat, ErrMsg, RoutineName ) if (ErrStat >= AbortErrLev) return ! close file if necessary (do this after unpacking turbine data, so that TurbID is set) diff --git a/modules/openfast-library/src/FAST_Types.f90 b/modules/openfast-library/src/FAST_Types.f90 index c48b7344d9..8c5b43ef30 100644 --- a/modules/openfast-library/src/FAST_Types.f90 +++ b/modules/openfast-library/src/FAST_Types.f90 @@ -870,41 +870,24 @@ subroutine FAST_DestroyVTK_BLSurfaceType(VTK_BLSurfaceTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackVTK_BLSurfaceType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackVTK_BLSurfaceType(RF, Indata) + type(RegFile), intent(inout) :: RF type(FAST_VTK_BLSurfaceType), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackVTK_BLSurfaceType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%AirfoilCoords)) - if (allocated(InData%AirfoilCoords)) then - call RegPackBounds(Buf, 3, lbound(InData%AirfoilCoords, kind=B8Ki), ubound(InData%AirfoilCoords, kind=B8Ki)) - call RegPack(Buf, InData%AirfoilCoords) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%AirfoilCoords) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackVTK_BLSurfaceType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackVTK_BLSurfaceType(RF, OutData) + type(RegFile), intent(inout) :: RF type(FAST_VTK_BLSurfaceType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackVTK_BLSurfaceType' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%AirfoilCoords)) deallocate(OutData%AirfoilCoords) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AirfoilCoords(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AirfoilCoords.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AirfoilCoords) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%AirfoilCoords); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyVTK_SurfaceType(SrcVTK_SurfaceTypeData, DstVTK_SurfaceTypeData, CtrlCode, ErrStat, ErrMsg) @@ -1025,140 +1008,65 @@ subroutine FAST_DestroyVTK_SurfaceType(VTK_SurfaceTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackVTK_SurfaceType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackVTK_SurfaceType(RF, Indata) + type(RegFile), intent(inout) :: RF type(FAST_VTK_SurfaceType), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackVTK_SurfaceType' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%NumSectors) - call RegPack(Buf, InData%HubRad) - call RegPack(Buf, InData%GroundRad) - call RegPack(Buf, InData%NacelleBox) - call RegPack(Buf, allocated(InData%TowerRad)) - if (allocated(InData%TowerRad)) then - call RegPackBounds(Buf, 1, lbound(InData%TowerRad, kind=B8Ki), ubound(InData%TowerRad, kind=B8Ki)) - call RegPack(Buf, InData%TowerRad) - end if - call RegPack(Buf, InData%NWaveElevPts) - call RegPack(Buf, allocated(InData%WaveElevXY)) - if (allocated(InData%WaveElevXY)) then - call RegPackBounds(Buf, 2, lbound(InData%WaveElevXY, kind=B8Ki), ubound(InData%WaveElevXY, kind=B8Ki)) - call RegPack(Buf, InData%WaveElevXY) - end if - call RegPack(Buf, allocated(InData%WaveElev)) - if (allocated(InData%WaveElev)) then - call RegPackBounds(Buf, 2, lbound(InData%WaveElev, kind=B8Ki), ubound(InData%WaveElev, kind=B8Ki)) - call RegPack(Buf, InData%WaveElev) - end if - call RegPack(Buf, allocated(InData%BladeShape)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%NumSectors) + call RegPack(RF, InData%HubRad) + call RegPack(RF, InData%GroundRad) + call RegPack(RF, InData%NacelleBox) + call RegPackAlloc(RF, InData%TowerRad) + call RegPack(RF, InData%NWaveElevPts) + call RegPackAlloc(RF, InData%WaveElevXY) + call RegPackAlloc(RF, InData%WaveElev) + call RegPack(RF, allocated(InData%BladeShape)) if (allocated(InData%BladeShape)) then - call RegPackBounds(Buf, 1, lbound(InData%BladeShape, kind=B8Ki), ubound(InData%BladeShape, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BladeShape, kind=B8Ki), ubound(InData%BladeShape, kind=B8Ki)) LB(1:1) = lbound(InData%BladeShape, kind=B8Ki) UB(1:1) = ubound(InData%BladeShape, kind=B8Ki) do i1 = LB(1), UB(1) - call FAST_PackVTK_BLSurfaceType(Buf, InData%BladeShape(i1)) + call FAST_PackVTK_BLSurfaceType(RF, InData%BladeShape(i1)) end do end if - call RegPack(Buf, allocated(InData%MorisonVisRad)) - if (allocated(InData%MorisonVisRad)) then - call RegPackBounds(Buf, 1, lbound(InData%MorisonVisRad, kind=B8Ki), ubound(InData%MorisonVisRad, kind=B8Ki)) - call RegPack(Buf, InData%MorisonVisRad) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%MorisonVisRad) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackVTK_SurfaceType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackVTK_SurfaceType(RF, OutData) + type(RegFile), intent(inout) :: RF type(FAST_VTK_SurfaceType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackVTK_SurfaceType' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%NumSectors) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HubRad) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GroundRad) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacelleBox) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TowerRad)) deallocate(OutData%TowerRad) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TowerRad(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TowerRad.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TowerRad) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NWaveElevPts) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WaveElevXY)) deallocate(OutData%WaveElevXY) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveElevXY(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveElevXY.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveElevXY) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveElev)) deallocate(OutData%WaveElev) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveElev(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveElev.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveElev) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%NumSectors); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HubRad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GroundRad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacelleBox); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TowerRad); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NWaveElevPts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveElevXY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveElev); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%BladeShape)) deallocate(OutData%BladeShape) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BladeShape(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeShape.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeShape.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FAST_UnpackVTK_BLSurfaceType(Buf, OutData%BladeShape(i1)) ! BladeShape + call FAST_UnpackVTK_BLSurfaceType(RF, OutData%BladeShape(i1)) ! BladeShape end do end if - if (allocated(OutData%MorisonVisRad)) deallocate(OutData%MorisonVisRad) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MorisonVisRad(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MorisonVisRad.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MorisonVisRad) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%MorisonVisRad); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyVTK_ModeShapeType(SrcVTK_ModeShapeTypeData, DstVTK_ModeShapeTypeData, CtrlCode, ErrStat, ErrMsg) @@ -1280,157 +1188,48 @@ subroutine FAST_DestroyVTK_ModeShapeType(VTK_ModeShapeTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackVTK_ModeShapeType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackVTK_ModeShapeType(RF, Indata) + type(RegFile), intent(inout) :: RF type(FAST_VTK_ModeShapeType), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackVTK_ModeShapeType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%CheckpointRoot) - call RegPack(Buf, InData%MatlabFileName) - call RegPack(Buf, InData%VTKLinModes) - call RegPack(Buf, allocated(InData%VTKModes)) - if (allocated(InData%VTKModes)) then - call RegPackBounds(Buf, 1, lbound(InData%VTKModes, kind=B8Ki), ubound(InData%VTKModes, kind=B8Ki)) - call RegPack(Buf, InData%VTKModes) - end if - call RegPack(Buf, InData%VTKLinTim) - call RegPack(Buf, InData%VTKNLinTimes) - call RegPack(Buf, InData%VTKLinScale) - call RegPack(Buf, InData%VTKLinPhase) - call RegPack(Buf, allocated(InData%DampingRatio)) - if (allocated(InData%DampingRatio)) then - call RegPackBounds(Buf, 1, lbound(InData%DampingRatio, kind=B8Ki), ubound(InData%DampingRatio, kind=B8Ki)) - call RegPack(Buf, InData%DampingRatio) - end if - call RegPack(Buf, allocated(InData%NaturalFreq_Hz)) - if (allocated(InData%NaturalFreq_Hz)) then - call RegPackBounds(Buf, 1, lbound(InData%NaturalFreq_Hz, kind=B8Ki), ubound(InData%NaturalFreq_Hz, kind=B8Ki)) - call RegPack(Buf, InData%NaturalFreq_Hz) - end if - call RegPack(Buf, allocated(InData%DampedFreq_Hz)) - if (allocated(InData%DampedFreq_Hz)) then - call RegPackBounds(Buf, 1, lbound(InData%DampedFreq_Hz, kind=B8Ki), ubound(InData%DampedFreq_Hz, kind=B8Ki)) - call RegPack(Buf, InData%DampedFreq_Hz) - end if - call RegPack(Buf, allocated(InData%x_eig_magnitude)) - if (allocated(InData%x_eig_magnitude)) then - call RegPackBounds(Buf, 3, lbound(InData%x_eig_magnitude, kind=B8Ki), ubound(InData%x_eig_magnitude, kind=B8Ki)) - call RegPack(Buf, InData%x_eig_magnitude) - end if - call RegPack(Buf, allocated(InData%x_eig_phase)) - if (allocated(InData%x_eig_phase)) then - call RegPackBounds(Buf, 3, lbound(InData%x_eig_phase, kind=B8Ki), ubound(InData%x_eig_phase, kind=B8Ki)) - call RegPack(Buf, InData%x_eig_phase) - end if - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FAST_UnPackVTK_ModeShapeType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%CheckpointRoot) + call RegPack(RF, InData%MatlabFileName) + call RegPack(RF, InData%VTKLinModes) + call RegPackAlloc(RF, InData%VTKModes) + call RegPack(RF, InData%VTKLinTim) + call RegPack(RF, InData%VTKNLinTimes) + call RegPack(RF, InData%VTKLinScale) + call RegPack(RF, InData%VTKLinPhase) + call RegPackAlloc(RF, InData%DampingRatio) + call RegPackAlloc(RF, InData%NaturalFreq_Hz) + call RegPackAlloc(RF, InData%DampedFreq_Hz) + call RegPackAlloc(RF, InData%x_eig_magnitude) + call RegPackAlloc(RF, InData%x_eig_phase) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FAST_UnPackVTK_ModeShapeType(RF, OutData) + type(RegFile), intent(inout) :: RF type(FAST_VTK_ModeShapeType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackVTK_ModeShapeType' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%CheckpointRoot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MatlabFileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTKLinModes) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%VTKModes)) deallocate(OutData%VTKModes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%VTKModes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%VTKModes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%VTKModes) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%VTKLinTim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTKNLinTimes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTKLinScale) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTKLinPhase) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%DampingRatio)) deallocate(OutData%DampingRatio) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DampingRatio(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DampingRatio.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DampingRatio) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%NaturalFreq_Hz)) deallocate(OutData%NaturalFreq_Hz) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NaturalFreq_Hz(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NaturalFreq_Hz.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NaturalFreq_Hz) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DampedFreq_Hz)) deallocate(OutData%DampedFreq_Hz) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DampedFreq_Hz(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DampedFreq_Hz.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DampedFreq_Hz) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%x_eig_magnitude)) deallocate(OutData%x_eig_magnitude) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%x_eig_magnitude(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_eig_magnitude.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%x_eig_magnitude) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%x_eig_phase)) deallocate(OutData%x_eig_phase) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%x_eig_phase(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_eig_phase.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%x_eig_phase) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%CheckpointRoot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MatlabFileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTKLinModes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%VTKModes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTKLinTim); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTKNLinTimes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTKLinScale); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTKLinPhase); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DampingRatio); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NaturalFreq_Hz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DampedFreq_Hz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%x_eig_magnitude); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%x_eig_phase); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopySS_CaseType(SrcSS_CaseTypeData, DstSS_CaseTypeData, CtrlCode, ErrStat, ErrMsg) @@ -1457,31 +1256,27 @@ subroutine FAST_DestroySS_CaseType(SS_CaseTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine FAST_PackSS_CaseType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackSS_CaseType(RF, Indata) + type(RegFile), intent(inout) :: RF type(FAST_SS_CaseType), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackSS_CaseType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%RotSpeed) - call RegPack(Buf, InData%TSR) - call RegPack(Buf, InData%WindSpeed) - call RegPack(Buf, InData%Pitch) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%RotSpeed) + call RegPack(RF, InData%TSR) + call RegPack(RF, InData%WindSpeed) + call RegPack(RF, InData%Pitch) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackSS_CaseType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackSS_CaseType(RF, OutData) + type(RegFile), intent(inout) :: RF type(FAST_SS_CaseType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackSS_CaseType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%RotSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TSR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WindSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Pitch) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%RotSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TSR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WindSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Pitch); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -1663,380 +1458,230 @@ subroutine FAST_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(FAST_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackParam' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT) - call RegPack(Buf, InData%DT_module) - call RegPack(Buf, InData%n_substeps) - call RegPack(Buf, InData%n_TMax_m1) - call RegPack(Buf, InData%TMax) - call RegPack(Buf, InData%InterpOrder) - call RegPack(Buf, InData%NumCrctn) - call RegPack(Buf, InData%KMax) - call RegPack(Buf, InData%numIceLegs) - call RegPack(Buf, InData%nBeams) - call RegPack(Buf, InData%BD_OutputSibling) - call RegPack(Buf, InData%ModuleInitialized) - call RegPack(Buf, InData%DT_Ujac) - call RegPack(Buf, InData%UJacSclFact) - call RegPack(Buf, InData%SizeJac_Opt1) - call RegPack(Buf, InData%SolveOption) - call RegPack(Buf, InData%CompElast) - call RegPack(Buf, InData%CompInflow) - call RegPack(Buf, InData%CompAero) - call RegPack(Buf, InData%CompServo) - call RegPack(Buf, InData%CompSeaSt) - call RegPack(Buf, InData%CompHydro) - call RegPack(Buf, InData%CompSub) - call RegPack(Buf, InData%CompMooring) - call RegPack(Buf, InData%CompIce) - call RegPack(Buf, InData%MHK) - call RegPack(Buf, InData%UseDWM) - call RegPack(Buf, InData%Linearize) - call RegPack(Buf, InData%WaveFieldMod) - call RegPack(Buf, InData%FarmIntegration) - call RegPack(Buf, InData%TurbinePos) - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, InData%AirDens) - call RegPack(Buf, InData%WtrDens) - call RegPack(Buf, InData%KinVisc) - call RegPack(Buf, InData%SpdSound) - call RegPack(Buf, InData%Patm) - call RegPack(Buf, InData%Pvap) - call RegPack(Buf, InData%WtrDpth) - call RegPack(Buf, InData%MSL2SWL) - call RegPack(Buf, InData%EDFile) - call RegPack(Buf, InData%BDBldFile) - call RegPack(Buf, InData%InflowFile) - call RegPack(Buf, InData%AeroFile) - call RegPack(Buf, InData%ServoFile) - call RegPack(Buf, InData%SeaStFile) - call RegPack(Buf, InData%HydroFile) - call RegPack(Buf, InData%SubFile) - call RegPack(Buf, InData%MooringFile) - call RegPack(Buf, InData%IceFile) - call RegPack(Buf, InData%TStart) - call RegPack(Buf, InData%DT_Out) - call RegPack(Buf, InData%WrSttsTime) - call RegPack(Buf, InData%n_SttsTime) - call RegPack(Buf, InData%n_ChkptTime) - call RegPack(Buf, InData%n_DT_Out) - call RegPack(Buf, InData%n_VTKTime) - call RegPack(Buf, InData%WrBinOutFile) - call RegPack(Buf, InData%WrTxtOutFile) - call RegPack(Buf, InData%WrBinMod) - call RegPack(Buf, InData%SumPrint) - call RegPack(Buf, InData%WrVTK) - call RegPack(Buf, InData%VTK_Type) - call RegPack(Buf, InData%VTK_fields) - call RegPack(Buf, InData%Delim) - call RegPack(Buf, InData%OutFmt) - call RegPack(Buf, InData%OutFmt_t) - call RegPack(Buf, InData%FmtWidth) - call RegPack(Buf, InData%TChanLen) - call RegPack(Buf, InData%OutFileRoot) - call RegPack(Buf, InData%FTitle) - call RegPack(Buf, InData%VTK_OutFileRoot) - call RegPack(Buf, InData%VTK_tWidth) - call RegPack(Buf, InData%VTK_fps) - call FAST_PackVTK_SurfaceType(Buf, InData%VTK_surface) - call RegPack(Buf, InData%Tdesc) - call RegPack(Buf, InData%CalcSteady) - call RegPack(Buf, InData%TrimCase) - call RegPack(Buf, InData%TrimTol) - call RegPack(Buf, InData%TrimGain) - call RegPack(Buf, InData%Twr_Kdmp) - call RegPack(Buf, InData%Bld_Kdmp) - call RegPack(Buf, InData%NLinTimes) - call RegPack(Buf, InData%AzimDelta) - call RegPack(Buf, InData%LinInputs) - call RegPack(Buf, InData%LinOutputs) - call RegPack(Buf, InData%LinOutJac) - call RegPack(Buf, InData%LinOutMod) - call FAST_PackVTK_ModeShapeType(Buf, InData%VTK_modes) - call RegPack(Buf, InData%UseSC) - call RegPack(Buf, InData%Lin_NumMods) - call RegPack(Buf, InData%Lin_ModOrder) - call RegPack(Buf, InData%LinInterpOrder) - call RegPack(Buf, InData%CompAeroMaps) - call RegPack(Buf, InData%N_UJac) - call RegPack(Buf, InData%NumBl_Lin) - call RegPack(Buf, InData%tolerSquared) - call RegPack(Buf, InData%NumSSCases) - call RegPack(Buf, InData%WindSpeedOrTSR) - call RegPack(Buf, InData%RotSpeedInit) - call RegPack(Buf, allocated(InData%RotSpeed)) - if (allocated(InData%RotSpeed)) then - call RegPackBounds(Buf, 1, lbound(InData%RotSpeed, kind=B8Ki), ubound(InData%RotSpeed, kind=B8Ki)) - call RegPack(Buf, InData%RotSpeed) - end if - call RegPack(Buf, allocated(InData%WS_TSR)) - if (allocated(InData%WS_TSR)) then - call RegPackBounds(Buf, 1, lbound(InData%WS_TSR, kind=B8Ki), ubound(InData%WS_TSR, kind=B8Ki)) - call RegPack(Buf, InData%WS_TSR) - end if - call RegPack(Buf, allocated(InData%Pitch)) - if (allocated(InData%Pitch)) then - call RegPackBounds(Buf, 1, lbound(InData%Pitch, kind=B8Ki), ubound(InData%Pitch, kind=B8Ki)) - call RegPack(Buf, InData%Pitch) - end if - call RegPack(Buf, InData%GearBox_index) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FAST_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT) + call RegPack(RF, InData%DT_module) + call RegPack(RF, InData%n_substeps) + call RegPack(RF, InData%n_TMax_m1) + call RegPack(RF, InData%TMax) + call RegPack(RF, InData%InterpOrder) + call RegPack(RF, InData%NumCrctn) + call RegPack(RF, InData%KMax) + call RegPack(RF, InData%numIceLegs) + call RegPack(RF, InData%nBeams) + call RegPack(RF, InData%BD_OutputSibling) + call RegPack(RF, InData%ModuleInitialized) + call RegPack(RF, InData%DT_Ujac) + call RegPack(RF, InData%UJacSclFact) + call RegPack(RF, InData%SizeJac_Opt1) + call RegPack(RF, InData%SolveOption) + call RegPack(RF, InData%CompElast) + call RegPack(RF, InData%CompInflow) + call RegPack(RF, InData%CompAero) + call RegPack(RF, InData%CompServo) + call RegPack(RF, InData%CompSeaSt) + call RegPack(RF, InData%CompHydro) + call RegPack(RF, InData%CompSub) + call RegPack(RF, InData%CompMooring) + call RegPack(RF, InData%CompIce) + call RegPack(RF, InData%MHK) + call RegPack(RF, InData%UseDWM) + call RegPack(RF, InData%Linearize) + call RegPack(RF, InData%WaveFieldMod) + call RegPack(RF, InData%FarmIntegration) + call RegPack(RF, InData%TurbinePos) + call RegPack(RF, InData%Gravity) + call RegPack(RF, InData%AirDens) + call RegPack(RF, InData%WtrDens) + call RegPack(RF, InData%KinVisc) + call RegPack(RF, InData%SpdSound) + call RegPack(RF, InData%Patm) + call RegPack(RF, InData%Pvap) + call RegPack(RF, InData%WtrDpth) + call RegPack(RF, InData%MSL2SWL) + call RegPack(RF, InData%EDFile) + call RegPack(RF, InData%BDBldFile) + call RegPack(RF, InData%InflowFile) + call RegPack(RF, InData%AeroFile) + call RegPack(RF, InData%ServoFile) + call RegPack(RF, InData%SeaStFile) + call RegPack(RF, InData%HydroFile) + call RegPack(RF, InData%SubFile) + call RegPack(RF, InData%MooringFile) + call RegPack(RF, InData%IceFile) + call RegPack(RF, InData%TStart) + call RegPack(RF, InData%DT_Out) + call RegPack(RF, InData%WrSttsTime) + call RegPack(RF, InData%n_SttsTime) + call RegPack(RF, InData%n_ChkptTime) + call RegPack(RF, InData%n_DT_Out) + call RegPack(RF, InData%n_VTKTime) + call RegPack(RF, InData%WrBinOutFile) + call RegPack(RF, InData%WrTxtOutFile) + call RegPack(RF, InData%WrBinMod) + call RegPack(RF, InData%SumPrint) + call RegPack(RF, InData%WrVTK) + call RegPack(RF, InData%VTK_Type) + call RegPack(RF, InData%VTK_fields) + call RegPack(RF, InData%Delim) + call RegPack(RF, InData%OutFmt) + call RegPack(RF, InData%OutFmt_t) + call RegPack(RF, InData%FmtWidth) + call RegPack(RF, InData%TChanLen) + call RegPack(RF, InData%OutFileRoot) + call RegPack(RF, InData%FTitle) + call RegPack(RF, InData%VTK_OutFileRoot) + call RegPack(RF, InData%VTK_tWidth) + call RegPack(RF, InData%VTK_fps) + call FAST_PackVTK_SurfaceType(RF, InData%VTK_surface) + call RegPack(RF, InData%Tdesc) + call RegPack(RF, InData%CalcSteady) + call RegPack(RF, InData%TrimCase) + call RegPack(RF, InData%TrimTol) + call RegPack(RF, InData%TrimGain) + call RegPack(RF, InData%Twr_Kdmp) + call RegPack(RF, InData%Bld_Kdmp) + call RegPack(RF, InData%NLinTimes) + call RegPack(RF, InData%AzimDelta) + call RegPack(RF, InData%LinInputs) + call RegPack(RF, InData%LinOutputs) + call RegPack(RF, InData%LinOutJac) + call RegPack(RF, InData%LinOutMod) + call FAST_PackVTK_ModeShapeType(RF, InData%VTK_modes) + call RegPack(RF, InData%UseSC) + call RegPack(RF, InData%Lin_NumMods) + call RegPack(RF, InData%Lin_ModOrder) + call RegPack(RF, InData%LinInterpOrder) + call RegPack(RF, InData%CompAeroMaps) + call RegPack(RF, InData%N_UJac) + call RegPack(RF, InData%NumBl_Lin) + call RegPack(RF, InData%tolerSquared) + call RegPack(RF, InData%NumSSCases) + call RegPack(RF, InData%WindSpeedOrTSR) + call RegPack(RF, InData%RotSpeedInit) + call RegPackAlloc(RF, InData%RotSpeed) + call RegPackAlloc(RF, InData%WS_TSR) + call RegPackAlloc(RF, InData%Pitch) + call RegPack(RF, InData%GearBox_index) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FAST_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(FAST_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackParam' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DT_module) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%n_substeps) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%n_TMax_m1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TMax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InterpOrder) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumCrctn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%KMax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%numIceLegs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nBeams) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BD_OutputSibling) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ModuleInitialized) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DT_Ujac) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UJacSclFact) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SizeJac_Opt1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SolveOption) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompElast) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompInflow) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompAero) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompServo) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompSeaSt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompHydro) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompSub) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompMooring) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompIce) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MHK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UseDWM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Linearize) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveFieldMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FarmIntegration) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TurbinePos) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AirDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%KinVisc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SpdSound) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Patm) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Pvap) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDpth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MSL2SWL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EDFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BDBldFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%InflowFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AeroFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ServoFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SeaStFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HydroFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SubFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MooringFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%IceFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TStart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DT_Out) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WrSttsTime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%n_SttsTime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%n_ChkptTime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%n_DT_Out) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%n_VTKTime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WrBinOutFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WrTxtOutFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WrBinMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SumPrint) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WrVTK) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTK_Type) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTK_fields) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Delim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFmt_t) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FmtWidth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TChanLen) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFileRoot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FTitle) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTK_OutFileRoot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTK_tWidth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTK_fps) - if (RegCheckErr(Buf, RoutineName)) return - call FAST_UnpackVTK_SurfaceType(Buf, OutData%VTK_surface) ! VTK_surface - call RegUnpack(Buf, OutData%Tdesc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CalcSteady) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TrimCase) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TrimTol) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TrimGain) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Twr_Kdmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Bld_Kdmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NLinTimes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AzimDelta) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinInputs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinOutputs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinOutJac) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinOutMod) - if (RegCheckErr(Buf, RoutineName)) return - call FAST_UnpackVTK_ModeShapeType(Buf, OutData%VTK_modes) ! VTK_modes - call RegUnpack(Buf, OutData%UseSC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Lin_NumMods) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Lin_ModOrder) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinInterpOrder) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CompAeroMaps) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%N_UJac) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBl_Lin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%tolerSquared) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumSSCases) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WindSpeedOrTSR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotSpeedInit) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%RotSpeed)) deallocate(OutData%RotSpeed) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotSpeed(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotSpeed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotSpeed) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WS_TSR)) deallocate(OutData%WS_TSR) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WS_TSR(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WS_TSR.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WS_TSR) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Pitch)) deallocate(OutData%Pitch) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Pitch(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Pitch.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Pitch) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%GearBox_index) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DT_module); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%n_substeps); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%n_TMax_m1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TMax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InterpOrder); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumCrctn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%KMax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numIceLegs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nBeams); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BD_OutputSibling); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ModuleInitialized); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DT_Ujac); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UJacSclFact); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SizeJac_Opt1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SolveOption); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompElast); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompInflow); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompAero); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompServo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompSeaSt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompHydro); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompSub); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompMooring); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompIce); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MHK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseDWM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Linearize); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveFieldMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FarmIntegration); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TurbinePos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AirDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%KinVisc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SpdSound); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Patm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Pvap); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDpth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MSL2SWL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EDFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BDBldFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InflowFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AeroFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ServoFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SeaStFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HydroFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SubFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MooringFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IceFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TStart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DT_Out); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrSttsTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%n_SttsTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%n_ChkptTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%n_DT_Out); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%n_VTKTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrBinOutFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrTxtOutFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrBinMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SumPrint); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrVTK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTK_Type); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTK_fields); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Delim); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFmt_t); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FmtWidth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TChanLen); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFileRoot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FTitle); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTK_OutFileRoot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTK_tWidth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTK_fps); if (RegCheckErr(RF, RoutineName)) return + call FAST_UnpackVTK_SurfaceType(RF, OutData%VTK_surface) ! VTK_surface + call RegUnpack(RF, OutData%Tdesc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CalcSteady); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TrimCase); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TrimTol); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TrimGain); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Twr_Kdmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Bld_Kdmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NLinTimes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AzimDelta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinInputs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinOutputs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinOutJac); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinOutMod); if (RegCheckErr(RF, RoutineName)) return + call FAST_UnpackVTK_ModeShapeType(RF, OutData%VTK_modes) ! VTK_modes + call RegUnpack(RF, OutData%UseSC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Lin_NumMods); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Lin_ModOrder); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinInterpOrder); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CompAeroMaps); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%N_UJac); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBl_Lin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%tolerSquared); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumSSCases); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WindSpeedOrTSR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotSpeedInit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WS_TSR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Pitch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GearBox_index); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyLinStateSave(SrcLinStateSaveData, DstLinStateSaveData, CtrlCode, ErrStat, ErrMsg) @@ -3707,1599 +3352,1471 @@ subroutine FAST_DestroyLinStateSave(LinStateSaveData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackLinStateSave(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackLinStateSave(RF, Indata) + type(RegFile), intent(inout) :: RF type(FAST_LinStateSave), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackLinStateSave' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%x_IceD)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%x_IceD)) if (allocated(InData%x_IceD)) then - call RegPackBounds(Buf, 2, lbound(InData%x_IceD, kind=B8Ki), ubound(InData%x_IceD, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%x_IceD, kind=B8Ki), ubound(InData%x_IceD, kind=B8Ki)) LB(1:2) = lbound(InData%x_IceD, kind=B8Ki) UB(1:2) = ubound(InData%x_IceD, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_PackContState(Buf, InData%x_IceD(i1,i2)) + call IceD_PackContState(RF, InData%x_IceD(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%xd_IceD)) + call RegPack(RF, allocated(InData%xd_IceD)) if (allocated(InData%xd_IceD)) then - call RegPackBounds(Buf, 2, lbound(InData%xd_IceD, kind=B8Ki), ubound(InData%xd_IceD, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%xd_IceD, kind=B8Ki), ubound(InData%xd_IceD, kind=B8Ki)) LB(1:2) = lbound(InData%xd_IceD, kind=B8Ki) UB(1:2) = ubound(InData%xd_IceD, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_PackDiscState(Buf, InData%xd_IceD(i1,i2)) + call IceD_PackDiscState(RF, InData%xd_IceD(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%z_IceD)) + call RegPack(RF, allocated(InData%z_IceD)) if (allocated(InData%z_IceD)) then - call RegPackBounds(Buf, 2, lbound(InData%z_IceD, kind=B8Ki), ubound(InData%z_IceD, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%z_IceD, kind=B8Ki), ubound(InData%z_IceD, kind=B8Ki)) LB(1:2) = lbound(InData%z_IceD, kind=B8Ki) UB(1:2) = ubound(InData%z_IceD, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_PackConstrState(Buf, InData%z_IceD(i1,i2)) + call IceD_PackConstrState(RF, InData%z_IceD(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%OtherSt_IceD)) + call RegPack(RF, allocated(InData%OtherSt_IceD)) if (allocated(InData%OtherSt_IceD)) then - call RegPackBounds(Buf, 2, lbound(InData%OtherSt_IceD, kind=B8Ki), ubound(InData%OtherSt_IceD, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%OtherSt_IceD, kind=B8Ki), ubound(InData%OtherSt_IceD, kind=B8Ki)) LB(1:2) = lbound(InData%OtherSt_IceD, kind=B8Ki) UB(1:2) = ubound(InData%OtherSt_IceD, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_PackOtherState(Buf, InData%OtherSt_IceD(i1,i2)) + call IceD_PackOtherState(RF, InData%OtherSt_IceD(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%u_IceD)) + call RegPack(RF, allocated(InData%u_IceD)) if (allocated(InData%u_IceD)) then - call RegPackBounds(Buf, 2, lbound(InData%u_IceD, kind=B8Ki), ubound(InData%u_IceD, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%u_IceD, kind=B8Ki), ubound(InData%u_IceD, kind=B8Ki)) LB(1:2) = lbound(InData%u_IceD, kind=B8Ki) UB(1:2) = ubound(InData%u_IceD, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_PackInput(Buf, InData%u_IceD(i1,i2)) + call IceD_PackInput(RF, InData%u_IceD(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%x_BD)) + call RegPack(RF, allocated(InData%x_BD)) if (allocated(InData%x_BD)) then - call RegPackBounds(Buf, 2, lbound(InData%x_BD, kind=B8Ki), ubound(InData%x_BD, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%x_BD, kind=B8Ki), ubound(InData%x_BD, kind=B8Ki)) LB(1:2) = lbound(InData%x_BD, kind=B8Ki) UB(1:2) = ubound(InData%x_BD, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_PackContState(Buf, InData%x_BD(i1,i2)) + call BD_PackContState(RF, InData%x_BD(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%xd_BD)) + call RegPack(RF, allocated(InData%xd_BD)) if (allocated(InData%xd_BD)) then - call RegPackBounds(Buf, 2, lbound(InData%xd_BD, kind=B8Ki), ubound(InData%xd_BD, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%xd_BD, kind=B8Ki), ubound(InData%xd_BD, kind=B8Ki)) LB(1:2) = lbound(InData%xd_BD, kind=B8Ki) UB(1:2) = ubound(InData%xd_BD, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_PackDiscState(Buf, InData%xd_BD(i1,i2)) + call BD_PackDiscState(RF, InData%xd_BD(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%z_BD)) + call RegPack(RF, allocated(InData%z_BD)) if (allocated(InData%z_BD)) then - call RegPackBounds(Buf, 2, lbound(InData%z_BD, kind=B8Ki), ubound(InData%z_BD, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%z_BD, kind=B8Ki), ubound(InData%z_BD, kind=B8Ki)) LB(1:2) = lbound(InData%z_BD, kind=B8Ki) UB(1:2) = ubound(InData%z_BD, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_PackConstrState(Buf, InData%z_BD(i1,i2)) + call BD_PackConstrState(RF, InData%z_BD(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%OtherSt_BD)) + call RegPack(RF, allocated(InData%OtherSt_BD)) if (allocated(InData%OtherSt_BD)) then - call RegPackBounds(Buf, 2, lbound(InData%OtherSt_BD, kind=B8Ki), ubound(InData%OtherSt_BD, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%OtherSt_BD, kind=B8Ki), ubound(InData%OtherSt_BD, kind=B8Ki)) LB(1:2) = lbound(InData%OtherSt_BD, kind=B8Ki) UB(1:2) = ubound(InData%OtherSt_BD, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_PackOtherState(Buf, InData%OtherSt_BD(i1,i2)) + call BD_PackOtherState(RF, InData%OtherSt_BD(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%u_BD)) + call RegPack(RF, allocated(InData%u_BD)) if (allocated(InData%u_BD)) then - call RegPackBounds(Buf, 2, lbound(InData%u_BD, kind=B8Ki), ubound(InData%u_BD, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%u_BD, kind=B8Ki), ubound(InData%u_BD, kind=B8Ki)) LB(1:2) = lbound(InData%u_BD, kind=B8Ki) UB(1:2) = ubound(InData%u_BD, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_PackInput(Buf, InData%u_BD(i1,i2)) + call BD_PackInput(RF, InData%u_BD(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%x_ED)) + call RegPack(RF, allocated(InData%x_ED)) if (allocated(InData%x_ED)) then - call RegPackBounds(Buf, 1, lbound(InData%x_ED, kind=B8Ki), ubound(InData%x_ED, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%x_ED, kind=B8Ki), ubound(InData%x_ED, kind=B8Ki)) LB(1:1) = lbound(InData%x_ED, kind=B8Ki) UB(1:1) = ubound(InData%x_ED, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_PackContState(Buf, InData%x_ED(i1)) + call ED_PackContState(RF, InData%x_ED(i1)) end do end if - call RegPack(Buf, allocated(InData%xd_ED)) + call RegPack(RF, allocated(InData%xd_ED)) if (allocated(InData%xd_ED)) then - call RegPackBounds(Buf, 1, lbound(InData%xd_ED, kind=B8Ki), ubound(InData%xd_ED, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%xd_ED, kind=B8Ki), ubound(InData%xd_ED, kind=B8Ki)) LB(1:1) = lbound(InData%xd_ED, kind=B8Ki) UB(1:1) = ubound(InData%xd_ED, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_PackDiscState(Buf, InData%xd_ED(i1)) + call ED_PackDiscState(RF, InData%xd_ED(i1)) end do end if - call RegPack(Buf, allocated(InData%z_ED)) + call RegPack(RF, allocated(InData%z_ED)) if (allocated(InData%z_ED)) then - call RegPackBounds(Buf, 1, lbound(InData%z_ED, kind=B8Ki), ubound(InData%z_ED, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%z_ED, kind=B8Ki), ubound(InData%z_ED, kind=B8Ki)) LB(1:1) = lbound(InData%z_ED, kind=B8Ki) UB(1:1) = ubound(InData%z_ED, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_PackConstrState(Buf, InData%z_ED(i1)) + call ED_PackConstrState(RF, InData%z_ED(i1)) end do end if - call RegPack(Buf, allocated(InData%OtherSt_ED)) + call RegPack(RF, allocated(InData%OtherSt_ED)) if (allocated(InData%OtherSt_ED)) then - call RegPackBounds(Buf, 1, lbound(InData%OtherSt_ED, kind=B8Ki), ubound(InData%OtherSt_ED, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OtherSt_ED, kind=B8Ki), ubound(InData%OtherSt_ED, kind=B8Ki)) LB(1:1) = lbound(InData%OtherSt_ED, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt_ED, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_PackOtherState(Buf, InData%OtherSt_ED(i1)) + call ED_PackOtherState(RF, InData%OtherSt_ED(i1)) end do end if - call RegPack(Buf, allocated(InData%u_ED)) + call RegPack(RF, allocated(InData%u_ED)) if (allocated(InData%u_ED)) then - call RegPackBounds(Buf, 1, lbound(InData%u_ED, kind=B8Ki), ubound(InData%u_ED, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_ED, kind=B8Ki), ubound(InData%u_ED, kind=B8Ki)) LB(1:1) = lbound(InData%u_ED, kind=B8Ki) UB(1:1) = ubound(InData%u_ED, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_PackInput(Buf, InData%u_ED(i1)) + call ED_PackInput(RF, InData%u_ED(i1)) end do end if - call RegPack(Buf, allocated(InData%x_SrvD)) + call RegPack(RF, allocated(InData%x_SrvD)) if (allocated(InData%x_SrvD)) then - call RegPackBounds(Buf, 1, lbound(InData%x_SrvD, kind=B8Ki), ubound(InData%x_SrvD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%x_SrvD, kind=B8Ki), ubound(InData%x_SrvD, kind=B8Ki)) LB(1:1) = lbound(InData%x_SrvD, kind=B8Ki) UB(1:1) = ubound(InData%x_SrvD, kind=B8Ki) do i1 = LB(1), UB(1) - call SrvD_PackContState(Buf, InData%x_SrvD(i1)) + call SrvD_PackContState(RF, InData%x_SrvD(i1)) end do end if - call RegPack(Buf, allocated(InData%xd_SrvD)) + call RegPack(RF, allocated(InData%xd_SrvD)) if (allocated(InData%xd_SrvD)) then - call RegPackBounds(Buf, 1, lbound(InData%xd_SrvD, kind=B8Ki), ubound(InData%xd_SrvD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%xd_SrvD, kind=B8Ki), ubound(InData%xd_SrvD, kind=B8Ki)) LB(1:1) = lbound(InData%xd_SrvD, kind=B8Ki) UB(1:1) = ubound(InData%xd_SrvD, kind=B8Ki) do i1 = LB(1), UB(1) - call SrvD_PackDiscState(Buf, InData%xd_SrvD(i1)) + call SrvD_PackDiscState(RF, InData%xd_SrvD(i1)) end do end if - call RegPack(Buf, allocated(InData%z_SrvD)) + call RegPack(RF, allocated(InData%z_SrvD)) if (allocated(InData%z_SrvD)) then - call RegPackBounds(Buf, 1, lbound(InData%z_SrvD, kind=B8Ki), ubound(InData%z_SrvD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%z_SrvD, kind=B8Ki), ubound(InData%z_SrvD, kind=B8Ki)) LB(1:1) = lbound(InData%z_SrvD, kind=B8Ki) UB(1:1) = ubound(InData%z_SrvD, kind=B8Ki) do i1 = LB(1), UB(1) - call SrvD_PackConstrState(Buf, InData%z_SrvD(i1)) + call SrvD_PackConstrState(RF, InData%z_SrvD(i1)) end do end if - call RegPack(Buf, allocated(InData%OtherSt_SrvD)) + call RegPack(RF, allocated(InData%OtherSt_SrvD)) if (allocated(InData%OtherSt_SrvD)) then - call RegPackBounds(Buf, 1, lbound(InData%OtherSt_SrvD, kind=B8Ki), ubound(InData%OtherSt_SrvD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OtherSt_SrvD, kind=B8Ki), ubound(InData%OtherSt_SrvD, kind=B8Ki)) LB(1:1) = lbound(InData%OtherSt_SrvD, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt_SrvD, kind=B8Ki) do i1 = LB(1), UB(1) - call SrvD_PackOtherState(Buf, InData%OtherSt_SrvD(i1)) + call SrvD_PackOtherState(RF, InData%OtherSt_SrvD(i1)) end do end if - call RegPack(Buf, allocated(InData%u_SrvD)) + call RegPack(RF, allocated(InData%u_SrvD)) if (allocated(InData%u_SrvD)) then - call RegPackBounds(Buf, 1, lbound(InData%u_SrvD, kind=B8Ki), ubound(InData%u_SrvD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_SrvD, kind=B8Ki), ubound(InData%u_SrvD, kind=B8Ki)) LB(1:1) = lbound(InData%u_SrvD, kind=B8Ki) UB(1:1) = ubound(InData%u_SrvD, kind=B8Ki) do i1 = LB(1), UB(1) - call SrvD_PackInput(Buf, InData%u_SrvD(i1)) + call SrvD_PackInput(RF, InData%u_SrvD(i1)) end do end if - call RegPack(Buf, allocated(InData%x_AD)) + call RegPack(RF, allocated(InData%x_AD)) if (allocated(InData%x_AD)) then - call RegPackBounds(Buf, 1, lbound(InData%x_AD, kind=B8Ki), ubound(InData%x_AD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%x_AD, kind=B8Ki), ubound(InData%x_AD, kind=B8Ki)) LB(1:1) = lbound(InData%x_AD, kind=B8Ki) UB(1:1) = ubound(InData%x_AD, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackContState(Buf, InData%x_AD(i1)) + call AD_PackContState(RF, InData%x_AD(i1)) end do end if - call RegPack(Buf, allocated(InData%xd_AD)) + call RegPack(RF, allocated(InData%xd_AD)) if (allocated(InData%xd_AD)) then - call RegPackBounds(Buf, 1, lbound(InData%xd_AD, kind=B8Ki), ubound(InData%xd_AD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%xd_AD, kind=B8Ki), ubound(InData%xd_AD, kind=B8Ki)) LB(1:1) = lbound(InData%xd_AD, kind=B8Ki) UB(1:1) = ubound(InData%xd_AD, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackDiscState(Buf, InData%xd_AD(i1)) + call AD_PackDiscState(RF, InData%xd_AD(i1)) end do end if - call RegPack(Buf, allocated(InData%z_AD)) + call RegPack(RF, allocated(InData%z_AD)) if (allocated(InData%z_AD)) then - call RegPackBounds(Buf, 1, lbound(InData%z_AD, kind=B8Ki), ubound(InData%z_AD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%z_AD, kind=B8Ki), ubound(InData%z_AD, kind=B8Ki)) LB(1:1) = lbound(InData%z_AD, kind=B8Ki) UB(1:1) = ubound(InData%z_AD, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackConstrState(Buf, InData%z_AD(i1)) + call AD_PackConstrState(RF, InData%z_AD(i1)) end do end if - call RegPack(Buf, allocated(InData%OtherSt_AD)) + call RegPack(RF, allocated(InData%OtherSt_AD)) if (allocated(InData%OtherSt_AD)) then - call RegPackBounds(Buf, 1, lbound(InData%OtherSt_AD, kind=B8Ki), ubound(InData%OtherSt_AD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OtherSt_AD, kind=B8Ki), ubound(InData%OtherSt_AD, kind=B8Ki)) LB(1:1) = lbound(InData%OtherSt_AD, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt_AD, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackOtherState(Buf, InData%OtherSt_AD(i1)) + call AD_PackOtherState(RF, InData%OtherSt_AD(i1)) end do end if - call RegPack(Buf, allocated(InData%u_AD)) + call RegPack(RF, allocated(InData%u_AD)) if (allocated(InData%u_AD)) then - call RegPackBounds(Buf, 1, lbound(InData%u_AD, kind=B8Ki), ubound(InData%u_AD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_AD, kind=B8Ki), ubound(InData%u_AD, kind=B8Ki)) LB(1:1) = lbound(InData%u_AD, kind=B8Ki) UB(1:1) = ubound(InData%u_AD, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackInput(Buf, InData%u_AD(i1)) + call AD_PackInput(RF, InData%u_AD(i1)) end do end if - call RegPack(Buf, allocated(InData%x_IfW)) + call RegPack(RF, allocated(InData%x_IfW)) if (allocated(InData%x_IfW)) then - call RegPackBounds(Buf, 1, lbound(InData%x_IfW, kind=B8Ki), ubound(InData%x_IfW, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%x_IfW, kind=B8Ki), ubound(InData%x_IfW, kind=B8Ki)) LB(1:1) = lbound(InData%x_IfW, kind=B8Ki) UB(1:1) = ubound(InData%x_IfW, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_PackContState(Buf, InData%x_IfW(i1)) + call InflowWind_PackContState(RF, InData%x_IfW(i1)) end do end if - call RegPack(Buf, allocated(InData%xd_IfW)) + call RegPack(RF, allocated(InData%xd_IfW)) if (allocated(InData%xd_IfW)) then - call RegPackBounds(Buf, 1, lbound(InData%xd_IfW, kind=B8Ki), ubound(InData%xd_IfW, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%xd_IfW, kind=B8Ki), ubound(InData%xd_IfW, kind=B8Ki)) LB(1:1) = lbound(InData%xd_IfW, kind=B8Ki) UB(1:1) = ubound(InData%xd_IfW, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_PackDiscState(Buf, InData%xd_IfW(i1)) + call InflowWind_PackDiscState(RF, InData%xd_IfW(i1)) end do end if - call RegPack(Buf, allocated(InData%z_IfW)) + call RegPack(RF, allocated(InData%z_IfW)) if (allocated(InData%z_IfW)) then - call RegPackBounds(Buf, 1, lbound(InData%z_IfW, kind=B8Ki), ubound(InData%z_IfW, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%z_IfW, kind=B8Ki), ubound(InData%z_IfW, kind=B8Ki)) LB(1:1) = lbound(InData%z_IfW, kind=B8Ki) UB(1:1) = ubound(InData%z_IfW, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_PackConstrState(Buf, InData%z_IfW(i1)) + call InflowWind_PackConstrState(RF, InData%z_IfW(i1)) end do end if - call RegPack(Buf, allocated(InData%OtherSt_IfW)) + call RegPack(RF, allocated(InData%OtherSt_IfW)) if (allocated(InData%OtherSt_IfW)) then - call RegPackBounds(Buf, 1, lbound(InData%OtherSt_IfW, kind=B8Ki), ubound(InData%OtherSt_IfW, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OtherSt_IfW, kind=B8Ki), ubound(InData%OtherSt_IfW, kind=B8Ki)) LB(1:1) = lbound(InData%OtherSt_IfW, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt_IfW, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_PackOtherState(Buf, InData%OtherSt_IfW(i1)) + call InflowWind_PackOtherState(RF, InData%OtherSt_IfW(i1)) end do end if - call RegPack(Buf, allocated(InData%u_IfW)) + call RegPack(RF, allocated(InData%u_IfW)) if (allocated(InData%u_IfW)) then - call RegPackBounds(Buf, 1, lbound(InData%u_IfW, kind=B8Ki), ubound(InData%u_IfW, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_IfW, kind=B8Ki), ubound(InData%u_IfW, kind=B8Ki)) LB(1:1) = lbound(InData%u_IfW, kind=B8Ki) UB(1:1) = ubound(InData%u_IfW, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_PackInput(Buf, InData%u_IfW(i1)) + call InflowWind_PackInput(RF, InData%u_IfW(i1)) end do end if - call RegPack(Buf, allocated(InData%x_SD)) + call RegPack(RF, allocated(InData%x_SD)) if (allocated(InData%x_SD)) then - call RegPackBounds(Buf, 1, lbound(InData%x_SD, kind=B8Ki), ubound(InData%x_SD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%x_SD, kind=B8Ki), ubound(InData%x_SD, kind=B8Ki)) LB(1:1) = lbound(InData%x_SD, kind=B8Ki) UB(1:1) = ubound(InData%x_SD, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackContState(Buf, InData%x_SD(i1)) + call SD_PackContState(RF, InData%x_SD(i1)) end do end if - call RegPack(Buf, allocated(InData%xd_SD)) + call RegPack(RF, allocated(InData%xd_SD)) if (allocated(InData%xd_SD)) then - call RegPackBounds(Buf, 1, lbound(InData%xd_SD, kind=B8Ki), ubound(InData%xd_SD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%xd_SD, kind=B8Ki), ubound(InData%xd_SD, kind=B8Ki)) LB(1:1) = lbound(InData%xd_SD, kind=B8Ki) UB(1:1) = ubound(InData%xd_SD, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackDiscState(Buf, InData%xd_SD(i1)) + call SD_PackDiscState(RF, InData%xd_SD(i1)) end do end if - call RegPack(Buf, allocated(InData%z_SD)) + call RegPack(RF, allocated(InData%z_SD)) if (allocated(InData%z_SD)) then - call RegPackBounds(Buf, 1, lbound(InData%z_SD, kind=B8Ki), ubound(InData%z_SD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%z_SD, kind=B8Ki), ubound(InData%z_SD, kind=B8Ki)) LB(1:1) = lbound(InData%z_SD, kind=B8Ki) UB(1:1) = ubound(InData%z_SD, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackConstrState(Buf, InData%z_SD(i1)) + call SD_PackConstrState(RF, InData%z_SD(i1)) end do end if - call RegPack(Buf, allocated(InData%OtherSt_SD)) + call RegPack(RF, allocated(InData%OtherSt_SD)) if (allocated(InData%OtherSt_SD)) then - call RegPackBounds(Buf, 1, lbound(InData%OtherSt_SD, kind=B8Ki), ubound(InData%OtherSt_SD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OtherSt_SD, kind=B8Ki), ubound(InData%OtherSt_SD, kind=B8Ki)) LB(1:1) = lbound(InData%OtherSt_SD, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt_SD, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackOtherState(Buf, InData%OtherSt_SD(i1)) + call SD_PackOtherState(RF, InData%OtherSt_SD(i1)) end do end if - call RegPack(Buf, allocated(InData%u_SD)) + call RegPack(RF, allocated(InData%u_SD)) if (allocated(InData%u_SD)) then - call RegPackBounds(Buf, 1, lbound(InData%u_SD, kind=B8Ki), ubound(InData%u_SD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_SD, kind=B8Ki), ubound(InData%u_SD, kind=B8Ki)) LB(1:1) = lbound(InData%u_SD, kind=B8Ki) UB(1:1) = ubound(InData%u_SD, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackInput(Buf, InData%u_SD(i1)) + call SD_PackInput(RF, InData%u_SD(i1)) end do end if - call RegPack(Buf, allocated(InData%x_ExtPtfm)) + call RegPack(RF, allocated(InData%x_ExtPtfm)) if (allocated(InData%x_ExtPtfm)) then - call RegPackBounds(Buf, 1, lbound(InData%x_ExtPtfm, kind=B8Ki), ubound(InData%x_ExtPtfm, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%x_ExtPtfm, kind=B8Ki), ubound(InData%x_ExtPtfm, kind=B8Ki)) LB(1:1) = lbound(InData%x_ExtPtfm, kind=B8Ki) UB(1:1) = ubound(InData%x_ExtPtfm, kind=B8Ki) do i1 = LB(1), UB(1) - call ExtPtfm_PackContState(Buf, InData%x_ExtPtfm(i1)) + call ExtPtfm_PackContState(RF, InData%x_ExtPtfm(i1)) end do end if - call RegPack(Buf, allocated(InData%xd_ExtPtfm)) + call RegPack(RF, allocated(InData%xd_ExtPtfm)) if (allocated(InData%xd_ExtPtfm)) then - call RegPackBounds(Buf, 1, lbound(InData%xd_ExtPtfm, kind=B8Ki), ubound(InData%xd_ExtPtfm, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%xd_ExtPtfm, kind=B8Ki), ubound(InData%xd_ExtPtfm, kind=B8Ki)) LB(1:1) = lbound(InData%xd_ExtPtfm, kind=B8Ki) UB(1:1) = ubound(InData%xd_ExtPtfm, kind=B8Ki) do i1 = LB(1), UB(1) - call ExtPtfm_PackDiscState(Buf, InData%xd_ExtPtfm(i1)) + call ExtPtfm_PackDiscState(RF, InData%xd_ExtPtfm(i1)) end do end if - call RegPack(Buf, allocated(InData%z_ExtPtfm)) + call RegPack(RF, allocated(InData%z_ExtPtfm)) if (allocated(InData%z_ExtPtfm)) then - call RegPackBounds(Buf, 1, lbound(InData%z_ExtPtfm, kind=B8Ki), ubound(InData%z_ExtPtfm, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%z_ExtPtfm, kind=B8Ki), ubound(InData%z_ExtPtfm, kind=B8Ki)) LB(1:1) = lbound(InData%z_ExtPtfm, kind=B8Ki) UB(1:1) = ubound(InData%z_ExtPtfm, kind=B8Ki) do i1 = LB(1), UB(1) - call ExtPtfm_PackConstrState(Buf, InData%z_ExtPtfm(i1)) + call ExtPtfm_PackConstrState(RF, InData%z_ExtPtfm(i1)) end do end if - call RegPack(Buf, allocated(InData%OtherSt_ExtPtfm)) + call RegPack(RF, allocated(InData%OtherSt_ExtPtfm)) if (allocated(InData%OtherSt_ExtPtfm)) then - call RegPackBounds(Buf, 1, lbound(InData%OtherSt_ExtPtfm, kind=B8Ki), ubound(InData%OtherSt_ExtPtfm, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OtherSt_ExtPtfm, kind=B8Ki), ubound(InData%OtherSt_ExtPtfm, kind=B8Ki)) LB(1:1) = lbound(InData%OtherSt_ExtPtfm, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt_ExtPtfm, kind=B8Ki) do i1 = LB(1), UB(1) - call ExtPtfm_PackOtherState(Buf, InData%OtherSt_ExtPtfm(i1)) + call ExtPtfm_PackOtherState(RF, InData%OtherSt_ExtPtfm(i1)) end do end if - call RegPack(Buf, allocated(InData%u_ExtPtfm)) + call RegPack(RF, allocated(InData%u_ExtPtfm)) if (allocated(InData%u_ExtPtfm)) then - call RegPackBounds(Buf, 1, lbound(InData%u_ExtPtfm, kind=B8Ki), ubound(InData%u_ExtPtfm, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_ExtPtfm, kind=B8Ki), ubound(InData%u_ExtPtfm, kind=B8Ki)) LB(1:1) = lbound(InData%u_ExtPtfm, kind=B8Ki) UB(1:1) = ubound(InData%u_ExtPtfm, kind=B8Ki) do i1 = LB(1), UB(1) - call ExtPtfm_PackInput(Buf, InData%u_ExtPtfm(i1)) + call ExtPtfm_PackInput(RF, InData%u_ExtPtfm(i1)) end do end if - call RegPack(Buf, allocated(InData%x_HD)) + call RegPack(RF, allocated(InData%x_HD)) if (allocated(InData%x_HD)) then - call RegPackBounds(Buf, 1, lbound(InData%x_HD, kind=B8Ki), ubound(InData%x_HD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%x_HD, kind=B8Ki), ubound(InData%x_HD, kind=B8Ki)) LB(1:1) = lbound(InData%x_HD, kind=B8Ki) UB(1:1) = ubound(InData%x_HD, kind=B8Ki) do i1 = LB(1), UB(1) - call HydroDyn_PackContState(Buf, InData%x_HD(i1)) + call HydroDyn_PackContState(RF, InData%x_HD(i1)) end do end if - call RegPack(Buf, allocated(InData%xd_HD)) + call RegPack(RF, allocated(InData%xd_HD)) if (allocated(InData%xd_HD)) then - call RegPackBounds(Buf, 1, lbound(InData%xd_HD, kind=B8Ki), ubound(InData%xd_HD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%xd_HD, kind=B8Ki), ubound(InData%xd_HD, kind=B8Ki)) LB(1:1) = lbound(InData%xd_HD, kind=B8Ki) UB(1:1) = ubound(InData%xd_HD, kind=B8Ki) do i1 = LB(1), UB(1) - call HydroDyn_PackDiscState(Buf, InData%xd_HD(i1)) + call HydroDyn_PackDiscState(RF, InData%xd_HD(i1)) end do end if - call RegPack(Buf, allocated(InData%z_HD)) + call RegPack(RF, allocated(InData%z_HD)) if (allocated(InData%z_HD)) then - call RegPackBounds(Buf, 1, lbound(InData%z_HD, kind=B8Ki), ubound(InData%z_HD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%z_HD, kind=B8Ki), ubound(InData%z_HD, kind=B8Ki)) LB(1:1) = lbound(InData%z_HD, kind=B8Ki) UB(1:1) = ubound(InData%z_HD, kind=B8Ki) do i1 = LB(1), UB(1) - call HydroDyn_PackConstrState(Buf, InData%z_HD(i1)) + call HydroDyn_PackConstrState(RF, InData%z_HD(i1)) end do end if - call RegPack(Buf, allocated(InData%OtherSt_HD)) + call RegPack(RF, allocated(InData%OtherSt_HD)) if (allocated(InData%OtherSt_HD)) then - call RegPackBounds(Buf, 1, lbound(InData%OtherSt_HD, kind=B8Ki), ubound(InData%OtherSt_HD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OtherSt_HD, kind=B8Ki), ubound(InData%OtherSt_HD, kind=B8Ki)) LB(1:1) = lbound(InData%OtherSt_HD, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt_HD, kind=B8Ki) do i1 = LB(1), UB(1) - call HydroDyn_PackOtherState(Buf, InData%OtherSt_HD(i1)) + call HydroDyn_PackOtherState(RF, InData%OtherSt_HD(i1)) end do end if - call RegPack(Buf, allocated(InData%u_HD)) + call RegPack(RF, allocated(InData%u_HD)) if (allocated(InData%u_HD)) then - call RegPackBounds(Buf, 1, lbound(InData%u_HD, kind=B8Ki), ubound(InData%u_HD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_HD, kind=B8Ki), ubound(InData%u_HD, kind=B8Ki)) LB(1:1) = lbound(InData%u_HD, kind=B8Ki) UB(1:1) = ubound(InData%u_HD, kind=B8Ki) do i1 = LB(1), UB(1) - call HydroDyn_PackInput(Buf, InData%u_HD(i1)) + call HydroDyn_PackInput(RF, InData%u_HD(i1)) end do end if - call RegPack(Buf, allocated(InData%x_IceF)) + call RegPack(RF, allocated(InData%x_IceF)) if (allocated(InData%x_IceF)) then - call RegPackBounds(Buf, 1, lbound(InData%x_IceF, kind=B8Ki), ubound(InData%x_IceF, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%x_IceF, kind=B8Ki), ubound(InData%x_IceF, kind=B8Ki)) LB(1:1) = lbound(InData%x_IceF, kind=B8Ki) UB(1:1) = ubound(InData%x_IceF, kind=B8Ki) do i1 = LB(1), UB(1) - call IceFloe_PackContState(Buf, InData%x_IceF(i1)) + call IceFloe_PackContState(RF, InData%x_IceF(i1)) end do end if - call RegPack(Buf, allocated(InData%xd_IceF)) + call RegPack(RF, allocated(InData%xd_IceF)) if (allocated(InData%xd_IceF)) then - call RegPackBounds(Buf, 1, lbound(InData%xd_IceF, kind=B8Ki), ubound(InData%xd_IceF, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%xd_IceF, kind=B8Ki), ubound(InData%xd_IceF, kind=B8Ki)) LB(1:1) = lbound(InData%xd_IceF, kind=B8Ki) UB(1:1) = ubound(InData%xd_IceF, kind=B8Ki) do i1 = LB(1), UB(1) - call IceFloe_PackDiscState(Buf, InData%xd_IceF(i1)) + call IceFloe_PackDiscState(RF, InData%xd_IceF(i1)) end do end if - call RegPack(Buf, allocated(InData%z_IceF)) + call RegPack(RF, allocated(InData%z_IceF)) if (allocated(InData%z_IceF)) then - call RegPackBounds(Buf, 1, lbound(InData%z_IceF, kind=B8Ki), ubound(InData%z_IceF, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%z_IceF, kind=B8Ki), ubound(InData%z_IceF, kind=B8Ki)) LB(1:1) = lbound(InData%z_IceF, kind=B8Ki) UB(1:1) = ubound(InData%z_IceF, kind=B8Ki) do i1 = LB(1), UB(1) - call IceFloe_PackConstrState(Buf, InData%z_IceF(i1)) + call IceFloe_PackConstrState(RF, InData%z_IceF(i1)) end do end if - call RegPack(Buf, allocated(InData%OtherSt_IceF)) + call RegPack(RF, allocated(InData%OtherSt_IceF)) if (allocated(InData%OtherSt_IceF)) then - call RegPackBounds(Buf, 1, lbound(InData%OtherSt_IceF, kind=B8Ki), ubound(InData%OtherSt_IceF, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OtherSt_IceF, kind=B8Ki), ubound(InData%OtherSt_IceF, kind=B8Ki)) LB(1:1) = lbound(InData%OtherSt_IceF, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt_IceF, kind=B8Ki) do i1 = LB(1), UB(1) - call IceFloe_PackOtherState(Buf, InData%OtherSt_IceF(i1)) + call IceFloe_PackOtherState(RF, InData%OtherSt_IceF(i1)) end do end if - call RegPack(Buf, allocated(InData%u_IceF)) + call RegPack(RF, allocated(InData%u_IceF)) if (allocated(InData%u_IceF)) then - call RegPackBounds(Buf, 1, lbound(InData%u_IceF, kind=B8Ki), ubound(InData%u_IceF, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_IceF, kind=B8Ki), ubound(InData%u_IceF, kind=B8Ki)) LB(1:1) = lbound(InData%u_IceF, kind=B8Ki) UB(1:1) = ubound(InData%u_IceF, kind=B8Ki) do i1 = LB(1), UB(1) - call IceFloe_PackInput(Buf, InData%u_IceF(i1)) + call IceFloe_PackInput(RF, InData%u_IceF(i1)) end do end if - call RegPack(Buf, allocated(InData%x_MAP)) + call RegPack(RF, allocated(InData%x_MAP)) if (allocated(InData%x_MAP)) then - call RegPackBounds(Buf, 1, lbound(InData%x_MAP, kind=B8Ki), ubound(InData%x_MAP, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%x_MAP, kind=B8Ki), ubound(InData%x_MAP, kind=B8Ki)) LB(1:1) = lbound(InData%x_MAP, kind=B8Ki) UB(1:1) = ubound(InData%x_MAP, kind=B8Ki) do i1 = LB(1), UB(1) - call MAP_PackContState(Buf, InData%x_MAP(i1)) + call MAP_PackContState(RF, InData%x_MAP(i1)) end do end if - call RegPack(Buf, allocated(InData%xd_MAP)) + call RegPack(RF, allocated(InData%xd_MAP)) if (allocated(InData%xd_MAP)) then - call RegPackBounds(Buf, 1, lbound(InData%xd_MAP, kind=B8Ki), ubound(InData%xd_MAP, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%xd_MAP, kind=B8Ki), ubound(InData%xd_MAP, kind=B8Ki)) LB(1:1) = lbound(InData%xd_MAP, kind=B8Ki) UB(1:1) = ubound(InData%xd_MAP, kind=B8Ki) do i1 = LB(1), UB(1) - call MAP_PackDiscState(Buf, InData%xd_MAP(i1)) + call MAP_PackDiscState(RF, InData%xd_MAP(i1)) end do end if - call RegPack(Buf, allocated(InData%z_MAP)) + call RegPack(RF, allocated(InData%z_MAP)) if (allocated(InData%z_MAP)) then - call RegPackBounds(Buf, 1, lbound(InData%z_MAP, kind=B8Ki), ubound(InData%z_MAP, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%z_MAP, kind=B8Ki), ubound(InData%z_MAP, kind=B8Ki)) LB(1:1) = lbound(InData%z_MAP, kind=B8Ki) UB(1:1) = ubound(InData%z_MAP, kind=B8Ki) do i1 = LB(1), UB(1) - call MAP_PackConstrState(Buf, InData%z_MAP(i1)) + call MAP_PackConstrState(RF, InData%z_MAP(i1)) end do end if - call RegPack(Buf, allocated(InData%u_MAP)) + call RegPack(RF, allocated(InData%u_MAP)) if (allocated(InData%u_MAP)) then - call RegPackBounds(Buf, 1, lbound(InData%u_MAP, kind=B8Ki), ubound(InData%u_MAP, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_MAP, kind=B8Ki), ubound(InData%u_MAP, kind=B8Ki)) LB(1:1) = lbound(InData%u_MAP, kind=B8Ki) UB(1:1) = ubound(InData%u_MAP, kind=B8Ki) do i1 = LB(1), UB(1) - call MAP_PackInput(Buf, InData%u_MAP(i1)) + call MAP_PackInput(RF, InData%u_MAP(i1)) end do end if - call RegPack(Buf, allocated(InData%x_FEAM)) + call RegPack(RF, allocated(InData%x_FEAM)) if (allocated(InData%x_FEAM)) then - call RegPackBounds(Buf, 1, lbound(InData%x_FEAM, kind=B8Ki), ubound(InData%x_FEAM, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%x_FEAM, kind=B8Ki), ubound(InData%x_FEAM, kind=B8Ki)) LB(1:1) = lbound(InData%x_FEAM, kind=B8Ki) UB(1:1) = ubound(InData%x_FEAM, kind=B8Ki) do i1 = LB(1), UB(1) - call FEAM_PackContState(Buf, InData%x_FEAM(i1)) + call FEAM_PackContState(RF, InData%x_FEAM(i1)) end do end if - call RegPack(Buf, allocated(InData%xd_FEAM)) + call RegPack(RF, allocated(InData%xd_FEAM)) if (allocated(InData%xd_FEAM)) then - call RegPackBounds(Buf, 1, lbound(InData%xd_FEAM, kind=B8Ki), ubound(InData%xd_FEAM, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%xd_FEAM, kind=B8Ki), ubound(InData%xd_FEAM, kind=B8Ki)) LB(1:1) = lbound(InData%xd_FEAM, kind=B8Ki) UB(1:1) = ubound(InData%xd_FEAM, kind=B8Ki) do i1 = LB(1), UB(1) - call FEAM_PackDiscState(Buf, InData%xd_FEAM(i1)) + call FEAM_PackDiscState(RF, InData%xd_FEAM(i1)) end do end if - call RegPack(Buf, allocated(InData%z_FEAM)) + call RegPack(RF, allocated(InData%z_FEAM)) if (allocated(InData%z_FEAM)) then - call RegPackBounds(Buf, 1, lbound(InData%z_FEAM, kind=B8Ki), ubound(InData%z_FEAM, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%z_FEAM, kind=B8Ki), ubound(InData%z_FEAM, kind=B8Ki)) LB(1:1) = lbound(InData%z_FEAM, kind=B8Ki) UB(1:1) = ubound(InData%z_FEAM, kind=B8Ki) do i1 = LB(1), UB(1) - call FEAM_PackConstrState(Buf, InData%z_FEAM(i1)) + call FEAM_PackConstrState(RF, InData%z_FEAM(i1)) end do end if - call RegPack(Buf, allocated(InData%OtherSt_FEAM)) + call RegPack(RF, allocated(InData%OtherSt_FEAM)) if (allocated(InData%OtherSt_FEAM)) then - call RegPackBounds(Buf, 1, lbound(InData%OtherSt_FEAM, kind=B8Ki), ubound(InData%OtherSt_FEAM, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OtherSt_FEAM, kind=B8Ki), ubound(InData%OtherSt_FEAM, kind=B8Ki)) LB(1:1) = lbound(InData%OtherSt_FEAM, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt_FEAM, kind=B8Ki) do i1 = LB(1), UB(1) - call FEAM_PackOtherState(Buf, InData%OtherSt_FEAM(i1)) + call FEAM_PackOtherState(RF, InData%OtherSt_FEAM(i1)) end do end if - call RegPack(Buf, allocated(InData%u_FEAM)) + call RegPack(RF, allocated(InData%u_FEAM)) if (allocated(InData%u_FEAM)) then - call RegPackBounds(Buf, 1, lbound(InData%u_FEAM, kind=B8Ki), ubound(InData%u_FEAM, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_FEAM, kind=B8Ki), ubound(InData%u_FEAM, kind=B8Ki)) LB(1:1) = lbound(InData%u_FEAM, kind=B8Ki) UB(1:1) = ubound(InData%u_FEAM, kind=B8Ki) do i1 = LB(1), UB(1) - call FEAM_PackInput(Buf, InData%u_FEAM(i1)) + call FEAM_PackInput(RF, InData%u_FEAM(i1)) end do end if - call RegPack(Buf, allocated(InData%x_MD)) + call RegPack(RF, allocated(InData%x_MD)) if (allocated(InData%x_MD)) then - call RegPackBounds(Buf, 1, lbound(InData%x_MD, kind=B8Ki), ubound(InData%x_MD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%x_MD, kind=B8Ki), ubound(InData%x_MD, kind=B8Ki)) LB(1:1) = lbound(InData%x_MD, kind=B8Ki) UB(1:1) = ubound(InData%x_MD, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackContState(Buf, InData%x_MD(i1)) + call MD_PackContState(RF, InData%x_MD(i1)) end do end if - call RegPack(Buf, allocated(InData%xd_MD)) + call RegPack(RF, allocated(InData%xd_MD)) if (allocated(InData%xd_MD)) then - call RegPackBounds(Buf, 1, lbound(InData%xd_MD, kind=B8Ki), ubound(InData%xd_MD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%xd_MD, kind=B8Ki), ubound(InData%xd_MD, kind=B8Ki)) LB(1:1) = lbound(InData%xd_MD, kind=B8Ki) UB(1:1) = ubound(InData%xd_MD, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackDiscState(Buf, InData%xd_MD(i1)) + call MD_PackDiscState(RF, InData%xd_MD(i1)) end do end if - call RegPack(Buf, allocated(InData%z_MD)) + call RegPack(RF, allocated(InData%z_MD)) if (allocated(InData%z_MD)) then - call RegPackBounds(Buf, 1, lbound(InData%z_MD, kind=B8Ki), ubound(InData%z_MD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%z_MD, kind=B8Ki), ubound(InData%z_MD, kind=B8Ki)) LB(1:1) = lbound(InData%z_MD, kind=B8Ki) UB(1:1) = ubound(InData%z_MD, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackConstrState(Buf, InData%z_MD(i1)) + call MD_PackConstrState(RF, InData%z_MD(i1)) end do end if - call RegPack(Buf, allocated(InData%OtherSt_MD)) + call RegPack(RF, allocated(InData%OtherSt_MD)) if (allocated(InData%OtherSt_MD)) then - call RegPackBounds(Buf, 1, lbound(InData%OtherSt_MD, kind=B8Ki), ubound(InData%OtherSt_MD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OtherSt_MD, kind=B8Ki), ubound(InData%OtherSt_MD, kind=B8Ki)) LB(1:1) = lbound(InData%OtherSt_MD, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt_MD, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackOtherState(Buf, InData%OtherSt_MD(i1)) + call MD_PackOtherState(RF, InData%OtherSt_MD(i1)) end do end if - call RegPack(Buf, allocated(InData%u_MD)) + call RegPack(RF, allocated(InData%u_MD)) if (allocated(InData%u_MD)) then - call RegPackBounds(Buf, 1, lbound(InData%u_MD, kind=B8Ki), ubound(InData%u_MD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_MD, kind=B8Ki), ubound(InData%u_MD, kind=B8Ki)) LB(1:1) = lbound(InData%u_MD, kind=B8Ki) UB(1:1) = ubound(InData%u_MD, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackInput(Buf, InData%u_MD(i1)) + call MD_PackInput(RF, InData%u_MD(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackLinStateSave(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackLinStateSave(RF, OutData) + type(RegFile), intent(inout) :: RF type(FAST_LinStateSave), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackLinStateSave' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%x_IceD)) deallocate(OutData%x_IceD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%x_IceD(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_IceD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_IceD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_UnpackContState(Buf, OutData%x_IceD(i1,i2)) ! x_IceD + call IceD_UnpackContState(RF, OutData%x_IceD(i1,i2)) ! x_IceD end do end do end if if (allocated(OutData%xd_IceD)) deallocate(OutData%xd_IceD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xd_IceD(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_IceD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_IceD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_UnpackDiscState(Buf, OutData%xd_IceD(i1,i2)) ! xd_IceD + call IceD_UnpackDiscState(RF, OutData%xd_IceD(i1,i2)) ! xd_IceD end do end do end if if (allocated(OutData%z_IceD)) deallocate(OutData%z_IceD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%z_IceD(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_IceD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_IceD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_UnpackConstrState(Buf, OutData%z_IceD(i1,i2)) ! z_IceD + call IceD_UnpackConstrState(RF, OutData%z_IceD(i1,i2)) ! z_IceD end do end do end if if (allocated(OutData%OtherSt_IceD)) deallocate(OutData%OtherSt_IceD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OtherSt_IceD(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_IceD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_IceD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_UnpackOtherState(Buf, OutData%OtherSt_IceD(i1,i2)) ! OtherSt_IceD + call IceD_UnpackOtherState(RF, OutData%OtherSt_IceD(i1,i2)) ! OtherSt_IceD end do end do end if if (allocated(OutData%u_IceD)) deallocate(OutData%u_IceD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_IceD(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_IceD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_IceD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_UnpackInput(Buf, OutData%u_IceD(i1,i2)) ! u_IceD + call IceD_UnpackInput(RF, OutData%u_IceD(i1,i2)) ! u_IceD end do end do end if if (allocated(OutData%x_BD)) deallocate(OutData%x_BD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%x_BD(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_BD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_BD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_UnpackContState(Buf, OutData%x_BD(i1,i2)) ! x_BD + call BD_UnpackContState(RF, OutData%x_BD(i1,i2)) ! x_BD end do end do end if if (allocated(OutData%xd_BD)) deallocate(OutData%xd_BD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xd_BD(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_BD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_BD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_UnpackDiscState(Buf, OutData%xd_BD(i1,i2)) ! xd_BD + call BD_UnpackDiscState(RF, OutData%xd_BD(i1,i2)) ! xd_BD end do end do end if if (allocated(OutData%z_BD)) deallocate(OutData%z_BD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%z_BD(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_BD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_BD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_UnpackConstrState(Buf, OutData%z_BD(i1,i2)) ! z_BD + call BD_UnpackConstrState(RF, OutData%z_BD(i1,i2)) ! z_BD end do end do end if if (allocated(OutData%OtherSt_BD)) deallocate(OutData%OtherSt_BD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OtherSt_BD(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_BD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_BD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_UnpackOtherState(Buf, OutData%OtherSt_BD(i1,i2)) ! OtherSt_BD + call BD_UnpackOtherState(RF, OutData%OtherSt_BD(i1,i2)) ! OtherSt_BD end do end do end if if (allocated(OutData%u_BD)) deallocate(OutData%u_BD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_BD(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_BD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_BD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_UnpackInput(Buf, OutData%u_BD(i1,i2)) ! u_BD + call BD_UnpackInput(RF, OutData%u_BD(i1,i2)) ! u_BD end do end do end if if (allocated(OutData%x_ED)) deallocate(OutData%x_ED) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%x_ED(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_ED.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_ED.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ED_UnpackContState(Buf, OutData%x_ED(i1)) ! x_ED + call ED_UnpackContState(RF, OutData%x_ED(i1)) ! x_ED end do end if if (allocated(OutData%xd_ED)) deallocate(OutData%xd_ED) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xd_ED(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_ED.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_ED.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ED_UnpackDiscState(Buf, OutData%xd_ED(i1)) ! xd_ED + call ED_UnpackDiscState(RF, OutData%xd_ED(i1)) ! xd_ED end do end if if (allocated(OutData%z_ED)) deallocate(OutData%z_ED) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%z_ED(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_ED.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_ED.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ED_UnpackConstrState(Buf, OutData%z_ED(i1)) ! z_ED + call ED_UnpackConstrState(RF, OutData%z_ED(i1)) ! z_ED end do end if if (allocated(OutData%OtherSt_ED)) deallocate(OutData%OtherSt_ED) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OtherSt_ED(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_ED.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_ED.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ED_UnpackOtherState(Buf, OutData%OtherSt_ED(i1)) ! OtherSt_ED + call ED_UnpackOtherState(RF, OutData%OtherSt_ED(i1)) ! OtherSt_ED end do end if if (allocated(OutData%u_ED)) deallocate(OutData%u_ED) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_ED(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_ED.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_ED.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ED_UnpackInput(Buf, OutData%u_ED(i1)) ! u_ED + call ED_UnpackInput(RF, OutData%u_ED(i1)) ! u_ED end do end if if (allocated(OutData%x_SrvD)) deallocate(OutData%x_SrvD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%x_SrvD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_SrvD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_SrvD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SrvD_UnpackContState(Buf, OutData%x_SrvD(i1)) ! x_SrvD + call SrvD_UnpackContState(RF, OutData%x_SrvD(i1)) ! x_SrvD end do end if if (allocated(OutData%xd_SrvD)) deallocate(OutData%xd_SrvD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xd_SrvD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_SrvD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_SrvD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SrvD_UnpackDiscState(Buf, OutData%xd_SrvD(i1)) ! xd_SrvD + call SrvD_UnpackDiscState(RF, OutData%xd_SrvD(i1)) ! xd_SrvD end do end if if (allocated(OutData%z_SrvD)) deallocate(OutData%z_SrvD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%z_SrvD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_SrvD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_SrvD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SrvD_UnpackConstrState(Buf, OutData%z_SrvD(i1)) ! z_SrvD + call SrvD_UnpackConstrState(RF, OutData%z_SrvD(i1)) ! z_SrvD end do end if if (allocated(OutData%OtherSt_SrvD)) deallocate(OutData%OtherSt_SrvD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OtherSt_SrvD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_SrvD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_SrvD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SrvD_UnpackOtherState(Buf, OutData%OtherSt_SrvD(i1)) ! OtherSt_SrvD + call SrvD_UnpackOtherState(RF, OutData%OtherSt_SrvD(i1)) ! OtherSt_SrvD end do end if if (allocated(OutData%u_SrvD)) deallocate(OutData%u_SrvD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_SrvD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_SrvD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_SrvD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SrvD_UnpackInput(Buf, OutData%u_SrvD(i1)) ! u_SrvD + call SrvD_UnpackInput(RF, OutData%u_SrvD(i1)) ! u_SrvD end do end if if (allocated(OutData%x_AD)) deallocate(OutData%x_AD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%x_AD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_AD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_AD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackContState(Buf, OutData%x_AD(i1)) ! x_AD + call AD_UnpackContState(RF, OutData%x_AD(i1)) ! x_AD end do end if if (allocated(OutData%xd_AD)) deallocate(OutData%xd_AD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xd_AD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_AD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_AD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackDiscState(Buf, OutData%xd_AD(i1)) ! xd_AD + call AD_UnpackDiscState(RF, OutData%xd_AD(i1)) ! xd_AD end do end if if (allocated(OutData%z_AD)) deallocate(OutData%z_AD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%z_AD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_AD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_AD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackConstrState(Buf, OutData%z_AD(i1)) ! z_AD + call AD_UnpackConstrState(RF, OutData%z_AD(i1)) ! z_AD end do end if if (allocated(OutData%OtherSt_AD)) deallocate(OutData%OtherSt_AD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OtherSt_AD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_AD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_AD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackOtherState(Buf, OutData%OtherSt_AD(i1)) ! OtherSt_AD + call AD_UnpackOtherState(RF, OutData%OtherSt_AD(i1)) ! OtherSt_AD end do end if if (allocated(OutData%u_AD)) deallocate(OutData%u_AD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_AD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_AD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_AD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackInput(Buf, OutData%u_AD(i1)) ! u_AD + call AD_UnpackInput(RF, OutData%u_AD(i1)) ! u_AD end do end if if (allocated(OutData%x_IfW)) deallocate(OutData%x_IfW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%x_IfW(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_IfW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_IfW.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call InflowWind_UnpackContState(Buf, OutData%x_IfW(i1)) ! x_IfW + call InflowWind_UnpackContState(RF, OutData%x_IfW(i1)) ! x_IfW end do end if if (allocated(OutData%xd_IfW)) deallocate(OutData%xd_IfW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xd_IfW(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_IfW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_IfW.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call InflowWind_UnpackDiscState(Buf, OutData%xd_IfW(i1)) ! xd_IfW + call InflowWind_UnpackDiscState(RF, OutData%xd_IfW(i1)) ! xd_IfW end do end if if (allocated(OutData%z_IfW)) deallocate(OutData%z_IfW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%z_IfW(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_IfW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_IfW.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call InflowWind_UnpackConstrState(Buf, OutData%z_IfW(i1)) ! z_IfW + call InflowWind_UnpackConstrState(RF, OutData%z_IfW(i1)) ! z_IfW end do end if if (allocated(OutData%OtherSt_IfW)) deallocate(OutData%OtherSt_IfW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OtherSt_IfW(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_IfW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_IfW.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call InflowWind_UnpackOtherState(Buf, OutData%OtherSt_IfW(i1)) ! OtherSt_IfW + call InflowWind_UnpackOtherState(RF, OutData%OtherSt_IfW(i1)) ! OtherSt_IfW end do end if if (allocated(OutData%u_IfW)) deallocate(OutData%u_IfW) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_IfW(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_IfW.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_IfW.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call InflowWind_UnpackInput(Buf, OutData%u_IfW(i1)) ! u_IfW + call InflowWind_UnpackInput(RF, OutData%u_IfW(i1)) ! u_IfW end do end if if (allocated(OutData%x_SD)) deallocate(OutData%x_SD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%x_SD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_SD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_SD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SD_UnpackContState(Buf, OutData%x_SD(i1)) ! x_SD + call SD_UnpackContState(RF, OutData%x_SD(i1)) ! x_SD end do end if if (allocated(OutData%xd_SD)) deallocate(OutData%xd_SD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xd_SD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_SD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_SD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SD_UnpackDiscState(Buf, OutData%xd_SD(i1)) ! xd_SD + call SD_UnpackDiscState(RF, OutData%xd_SD(i1)) ! xd_SD end do end if if (allocated(OutData%z_SD)) deallocate(OutData%z_SD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%z_SD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_SD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_SD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SD_UnpackConstrState(Buf, OutData%z_SD(i1)) ! z_SD + call SD_UnpackConstrState(RF, OutData%z_SD(i1)) ! z_SD end do end if if (allocated(OutData%OtherSt_SD)) deallocate(OutData%OtherSt_SD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OtherSt_SD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_SD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_SD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SD_UnpackOtherState(Buf, OutData%OtherSt_SD(i1)) ! OtherSt_SD + call SD_UnpackOtherState(RF, OutData%OtherSt_SD(i1)) ! OtherSt_SD end do end if if (allocated(OutData%u_SD)) deallocate(OutData%u_SD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_SD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_SD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_SD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SD_UnpackInput(Buf, OutData%u_SD(i1)) ! u_SD + call SD_UnpackInput(RF, OutData%u_SD(i1)) ! u_SD end do end if if (allocated(OutData%x_ExtPtfm)) deallocate(OutData%x_ExtPtfm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%x_ExtPtfm(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_ExtPtfm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_ExtPtfm.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ExtPtfm_UnpackContState(Buf, OutData%x_ExtPtfm(i1)) ! x_ExtPtfm + call ExtPtfm_UnpackContState(RF, OutData%x_ExtPtfm(i1)) ! x_ExtPtfm end do end if if (allocated(OutData%xd_ExtPtfm)) deallocate(OutData%xd_ExtPtfm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xd_ExtPtfm(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_ExtPtfm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_ExtPtfm.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ExtPtfm_UnpackDiscState(Buf, OutData%xd_ExtPtfm(i1)) ! xd_ExtPtfm + call ExtPtfm_UnpackDiscState(RF, OutData%xd_ExtPtfm(i1)) ! xd_ExtPtfm end do end if if (allocated(OutData%z_ExtPtfm)) deallocate(OutData%z_ExtPtfm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%z_ExtPtfm(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_ExtPtfm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_ExtPtfm.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ExtPtfm_UnpackConstrState(Buf, OutData%z_ExtPtfm(i1)) ! z_ExtPtfm + call ExtPtfm_UnpackConstrState(RF, OutData%z_ExtPtfm(i1)) ! z_ExtPtfm end do end if if (allocated(OutData%OtherSt_ExtPtfm)) deallocate(OutData%OtherSt_ExtPtfm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OtherSt_ExtPtfm(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_ExtPtfm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_ExtPtfm.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ExtPtfm_UnpackOtherState(Buf, OutData%OtherSt_ExtPtfm(i1)) ! OtherSt_ExtPtfm + call ExtPtfm_UnpackOtherState(RF, OutData%OtherSt_ExtPtfm(i1)) ! OtherSt_ExtPtfm end do end if if (allocated(OutData%u_ExtPtfm)) deallocate(OutData%u_ExtPtfm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_ExtPtfm(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_ExtPtfm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_ExtPtfm.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ExtPtfm_UnpackInput(Buf, OutData%u_ExtPtfm(i1)) ! u_ExtPtfm + call ExtPtfm_UnpackInput(RF, OutData%u_ExtPtfm(i1)) ! u_ExtPtfm end do end if if (allocated(OutData%x_HD)) deallocate(OutData%x_HD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%x_HD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_HD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_HD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call HydroDyn_UnpackContState(Buf, OutData%x_HD(i1)) ! x_HD + call HydroDyn_UnpackContState(RF, OutData%x_HD(i1)) ! x_HD end do end if if (allocated(OutData%xd_HD)) deallocate(OutData%xd_HD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xd_HD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_HD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_HD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call HydroDyn_UnpackDiscState(Buf, OutData%xd_HD(i1)) ! xd_HD + call HydroDyn_UnpackDiscState(RF, OutData%xd_HD(i1)) ! xd_HD end do end if if (allocated(OutData%z_HD)) deallocate(OutData%z_HD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%z_HD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_HD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_HD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call HydroDyn_UnpackConstrState(Buf, OutData%z_HD(i1)) ! z_HD + call HydroDyn_UnpackConstrState(RF, OutData%z_HD(i1)) ! z_HD end do end if if (allocated(OutData%OtherSt_HD)) deallocate(OutData%OtherSt_HD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OtherSt_HD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_HD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_HD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call HydroDyn_UnpackOtherState(Buf, OutData%OtherSt_HD(i1)) ! OtherSt_HD + call HydroDyn_UnpackOtherState(RF, OutData%OtherSt_HD(i1)) ! OtherSt_HD end do end if if (allocated(OutData%u_HD)) deallocate(OutData%u_HD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_HD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_HD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_HD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call HydroDyn_UnpackInput(Buf, OutData%u_HD(i1)) ! u_HD + call HydroDyn_UnpackInput(RF, OutData%u_HD(i1)) ! u_HD end do end if if (allocated(OutData%x_IceF)) deallocate(OutData%x_IceF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%x_IceF(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_IceF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_IceF.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call IceFloe_UnpackContState(Buf, OutData%x_IceF(i1)) ! x_IceF + call IceFloe_UnpackContState(RF, OutData%x_IceF(i1)) ! x_IceF end do end if if (allocated(OutData%xd_IceF)) deallocate(OutData%xd_IceF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xd_IceF(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_IceF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_IceF.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call IceFloe_UnpackDiscState(Buf, OutData%xd_IceF(i1)) ! xd_IceF + call IceFloe_UnpackDiscState(RF, OutData%xd_IceF(i1)) ! xd_IceF end do end if if (allocated(OutData%z_IceF)) deallocate(OutData%z_IceF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%z_IceF(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_IceF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_IceF.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call IceFloe_UnpackConstrState(Buf, OutData%z_IceF(i1)) ! z_IceF + call IceFloe_UnpackConstrState(RF, OutData%z_IceF(i1)) ! z_IceF end do end if if (allocated(OutData%OtherSt_IceF)) deallocate(OutData%OtherSt_IceF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OtherSt_IceF(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_IceF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_IceF.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call IceFloe_UnpackOtherState(Buf, OutData%OtherSt_IceF(i1)) ! OtherSt_IceF + call IceFloe_UnpackOtherState(RF, OutData%OtherSt_IceF(i1)) ! OtherSt_IceF end do end if if (allocated(OutData%u_IceF)) deallocate(OutData%u_IceF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_IceF(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_IceF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_IceF.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call IceFloe_UnpackInput(Buf, OutData%u_IceF(i1)) ! u_IceF + call IceFloe_UnpackInput(RF, OutData%u_IceF(i1)) ! u_IceF end do end if if (allocated(OutData%x_MAP)) deallocate(OutData%x_MAP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%x_MAP(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_MAP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_MAP.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MAP_UnpackContState(Buf, OutData%x_MAP(i1)) ! x_MAP + call MAP_UnpackContState(RF, OutData%x_MAP(i1)) ! x_MAP end do end if if (allocated(OutData%xd_MAP)) deallocate(OutData%xd_MAP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xd_MAP(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_MAP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_MAP.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MAP_UnpackDiscState(Buf, OutData%xd_MAP(i1)) ! xd_MAP + call MAP_UnpackDiscState(RF, OutData%xd_MAP(i1)) ! xd_MAP end do end if if (allocated(OutData%z_MAP)) deallocate(OutData%z_MAP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%z_MAP(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_MAP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_MAP.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MAP_UnpackConstrState(Buf, OutData%z_MAP(i1)) ! z_MAP + call MAP_UnpackConstrState(RF, OutData%z_MAP(i1)) ! z_MAP end do end if if (allocated(OutData%u_MAP)) deallocate(OutData%u_MAP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_MAP(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_MAP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_MAP.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MAP_UnpackInput(Buf, OutData%u_MAP(i1)) ! u_MAP + call MAP_UnpackInput(RF, OutData%u_MAP(i1)) ! u_MAP end do end if if (allocated(OutData%x_FEAM)) deallocate(OutData%x_FEAM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%x_FEAM(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_FEAM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_FEAM.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FEAM_UnpackContState(Buf, OutData%x_FEAM(i1)) ! x_FEAM + call FEAM_UnpackContState(RF, OutData%x_FEAM(i1)) ! x_FEAM end do end if if (allocated(OutData%xd_FEAM)) deallocate(OutData%xd_FEAM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xd_FEAM(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_FEAM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_FEAM.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FEAM_UnpackDiscState(Buf, OutData%xd_FEAM(i1)) ! xd_FEAM + call FEAM_UnpackDiscState(RF, OutData%xd_FEAM(i1)) ! xd_FEAM end do end if if (allocated(OutData%z_FEAM)) deallocate(OutData%z_FEAM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%z_FEAM(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_FEAM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_FEAM.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FEAM_UnpackConstrState(Buf, OutData%z_FEAM(i1)) ! z_FEAM + call FEAM_UnpackConstrState(RF, OutData%z_FEAM(i1)) ! z_FEAM end do end if if (allocated(OutData%OtherSt_FEAM)) deallocate(OutData%OtherSt_FEAM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OtherSt_FEAM(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_FEAM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_FEAM.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FEAM_UnpackOtherState(Buf, OutData%OtherSt_FEAM(i1)) ! OtherSt_FEAM + call FEAM_UnpackOtherState(RF, OutData%OtherSt_FEAM(i1)) ! OtherSt_FEAM end do end if if (allocated(OutData%u_FEAM)) deallocate(OutData%u_FEAM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_FEAM(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_FEAM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_FEAM.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FEAM_UnpackInput(Buf, OutData%u_FEAM(i1)) ! u_FEAM + call FEAM_UnpackInput(RF, OutData%u_FEAM(i1)) ! u_FEAM end do end if if (allocated(OutData%x_MD)) deallocate(OutData%x_MD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%x_MD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_MD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_MD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MD_UnpackContState(Buf, OutData%x_MD(i1)) ! x_MD + call MD_UnpackContState(RF, OutData%x_MD(i1)) ! x_MD end do end if if (allocated(OutData%xd_MD)) deallocate(OutData%xd_MD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xd_MD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_MD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_MD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MD_UnpackDiscState(Buf, OutData%xd_MD(i1)) ! xd_MD + call MD_UnpackDiscState(RF, OutData%xd_MD(i1)) ! xd_MD end do end if if (allocated(OutData%z_MD)) deallocate(OutData%z_MD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%z_MD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_MD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z_MD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MD_UnpackConstrState(Buf, OutData%z_MD(i1)) ! z_MD + call MD_UnpackConstrState(RF, OutData%z_MD(i1)) ! z_MD end do end if if (allocated(OutData%OtherSt_MD)) deallocate(OutData%OtherSt_MD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OtherSt_MD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_MD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt_MD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MD_UnpackOtherState(Buf, OutData%OtherSt_MD(i1)) ! OtherSt_MD + call MD_UnpackOtherState(RF, OutData%OtherSt_MD(i1)) ! OtherSt_MD end do end if if (allocated(OutData%u_MD)) deallocate(OutData%u_MD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_MD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_MD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_MD.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MD_UnpackInput(Buf, OutData%u_MD(i1)) ! u_MD + call MD_UnpackInput(RF, OutData%u_MD(i1)) ! u_MD end do end if end subroutine @@ -5749,563 +5266,84 @@ subroutine FAST_DestroyLinType(LinTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackLinType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackLinType(RF, Indata) + type(RegFile), intent(inout) :: RF type(FAST_LinType), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackLinType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Names_u)) - if (allocated(InData%Names_u)) then - call RegPackBounds(Buf, 1, lbound(InData%Names_u, kind=B8Ki), ubound(InData%Names_u, kind=B8Ki)) - call RegPack(Buf, InData%Names_u) - end if - call RegPack(Buf, allocated(InData%Names_y)) - if (allocated(InData%Names_y)) then - call RegPackBounds(Buf, 1, lbound(InData%Names_y, kind=B8Ki), ubound(InData%Names_y, kind=B8Ki)) - call RegPack(Buf, InData%Names_y) - end if - call RegPack(Buf, allocated(InData%Names_x)) - if (allocated(InData%Names_x)) then - call RegPackBounds(Buf, 1, lbound(InData%Names_x, kind=B8Ki), ubound(InData%Names_x, kind=B8Ki)) - call RegPack(Buf, InData%Names_x) - end if - call RegPack(Buf, allocated(InData%Names_xd)) - if (allocated(InData%Names_xd)) then - call RegPackBounds(Buf, 1, lbound(InData%Names_xd, kind=B8Ki), ubound(InData%Names_xd, kind=B8Ki)) - call RegPack(Buf, InData%Names_xd) - end if - call RegPack(Buf, allocated(InData%Names_z)) - if (allocated(InData%Names_z)) then - call RegPackBounds(Buf, 1, lbound(InData%Names_z, kind=B8Ki), ubound(InData%Names_z, kind=B8Ki)) - call RegPack(Buf, InData%Names_z) - end if - call RegPack(Buf, allocated(InData%op_u)) - if (allocated(InData%op_u)) then - call RegPackBounds(Buf, 1, lbound(InData%op_u, kind=B8Ki), ubound(InData%op_u, kind=B8Ki)) - call RegPack(Buf, InData%op_u) - end if - call RegPack(Buf, allocated(InData%op_y)) - if (allocated(InData%op_y)) then - call RegPackBounds(Buf, 1, lbound(InData%op_y, kind=B8Ki), ubound(InData%op_y, kind=B8Ki)) - call RegPack(Buf, InData%op_y) - end if - call RegPack(Buf, allocated(InData%op_x)) - if (allocated(InData%op_x)) then - call RegPackBounds(Buf, 1, lbound(InData%op_x, kind=B8Ki), ubound(InData%op_x, kind=B8Ki)) - call RegPack(Buf, InData%op_x) - end if - call RegPack(Buf, allocated(InData%op_dx)) - if (allocated(InData%op_dx)) then - call RegPackBounds(Buf, 1, lbound(InData%op_dx, kind=B8Ki), ubound(InData%op_dx, kind=B8Ki)) - call RegPack(Buf, InData%op_dx) - end if - call RegPack(Buf, allocated(InData%op_xd)) - if (allocated(InData%op_xd)) then - call RegPackBounds(Buf, 1, lbound(InData%op_xd, kind=B8Ki), ubound(InData%op_xd, kind=B8Ki)) - call RegPack(Buf, InData%op_xd) - end if - call RegPack(Buf, allocated(InData%op_z)) - if (allocated(InData%op_z)) then - call RegPackBounds(Buf, 1, lbound(InData%op_z, kind=B8Ki), ubound(InData%op_z, kind=B8Ki)) - call RegPack(Buf, InData%op_z) - end if - call RegPack(Buf, allocated(InData%op_x_eig_mag)) - if (allocated(InData%op_x_eig_mag)) then - call RegPackBounds(Buf, 1, lbound(InData%op_x_eig_mag, kind=B8Ki), ubound(InData%op_x_eig_mag, kind=B8Ki)) - call RegPack(Buf, InData%op_x_eig_mag) - end if - call RegPack(Buf, allocated(InData%op_x_eig_phase)) - if (allocated(InData%op_x_eig_phase)) then - call RegPackBounds(Buf, 1, lbound(InData%op_x_eig_phase, kind=B8Ki), ubound(InData%op_x_eig_phase, kind=B8Ki)) - call RegPack(Buf, InData%op_x_eig_phase) - end if - call RegPack(Buf, allocated(InData%Use_u)) - if (allocated(InData%Use_u)) then - call RegPackBounds(Buf, 1, lbound(InData%Use_u, kind=B8Ki), ubound(InData%Use_u, kind=B8Ki)) - call RegPack(Buf, InData%Use_u) - end if - call RegPack(Buf, allocated(InData%Use_y)) - if (allocated(InData%Use_y)) then - call RegPackBounds(Buf, 1, lbound(InData%Use_y, kind=B8Ki), ubound(InData%Use_y, kind=B8Ki)) - call RegPack(Buf, InData%Use_y) - end if - call RegPack(Buf, allocated(InData%A)) - if (allocated(InData%A)) then - call RegPackBounds(Buf, 2, lbound(InData%A, kind=B8Ki), ubound(InData%A, kind=B8Ki)) - call RegPack(Buf, InData%A) - end if - call RegPack(Buf, allocated(InData%B)) - if (allocated(InData%B)) then - call RegPackBounds(Buf, 2, lbound(InData%B, kind=B8Ki), ubound(InData%B, kind=B8Ki)) - call RegPack(Buf, InData%B) - end if - call RegPack(Buf, allocated(InData%C)) - if (allocated(InData%C)) then - call RegPackBounds(Buf, 2, lbound(InData%C, kind=B8Ki), ubound(InData%C, kind=B8Ki)) - call RegPack(Buf, InData%C) - end if - call RegPack(Buf, allocated(InData%D)) - if (allocated(InData%D)) then - call RegPackBounds(Buf, 2, lbound(InData%D, kind=B8Ki), ubound(InData%D, kind=B8Ki)) - call RegPack(Buf, InData%D) - end if - call RegPack(Buf, allocated(InData%StateRotation)) - if (allocated(InData%StateRotation)) then - call RegPackBounds(Buf, 2, lbound(InData%StateRotation, kind=B8Ki), ubound(InData%StateRotation, kind=B8Ki)) - call RegPack(Buf, InData%StateRotation) - end if - call RegPack(Buf, allocated(InData%StateRel_x)) - if (allocated(InData%StateRel_x)) then - call RegPackBounds(Buf, 2, lbound(InData%StateRel_x, kind=B8Ki), ubound(InData%StateRel_x, kind=B8Ki)) - call RegPack(Buf, InData%StateRel_x) - end if - call RegPack(Buf, allocated(InData%StateRel_xdot)) - if (allocated(InData%StateRel_xdot)) then - call RegPackBounds(Buf, 2, lbound(InData%StateRel_xdot, kind=B8Ki), ubound(InData%StateRel_xdot, kind=B8Ki)) - call RegPack(Buf, InData%StateRel_xdot) - end if - call RegPack(Buf, allocated(InData%IsLoad_u)) - if (allocated(InData%IsLoad_u)) then - call RegPackBounds(Buf, 1, lbound(InData%IsLoad_u, kind=B8Ki), ubound(InData%IsLoad_u, kind=B8Ki)) - call RegPack(Buf, InData%IsLoad_u) - end if - call RegPack(Buf, allocated(InData%RotFrame_u)) - if (allocated(InData%RotFrame_u)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_u, kind=B8Ki), ubound(InData%RotFrame_u, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_u) - end if - call RegPack(Buf, allocated(InData%RotFrame_y)) - if (allocated(InData%RotFrame_y)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_y, kind=B8Ki), ubound(InData%RotFrame_y, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_y) - end if - call RegPack(Buf, allocated(InData%RotFrame_x)) - if (allocated(InData%RotFrame_x)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_x, kind=B8Ki), ubound(InData%RotFrame_x, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_x) - end if - call RegPack(Buf, allocated(InData%RotFrame_z)) - if (allocated(InData%RotFrame_z)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_z, kind=B8Ki), ubound(InData%RotFrame_z, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_z) - end if - call RegPack(Buf, allocated(InData%DerivOrder_x)) - if (allocated(InData%DerivOrder_x)) then - call RegPackBounds(Buf, 1, lbound(InData%DerivOrder_x, kind=B8Ki), ubound(InData%DerivOrder_x, kind=B8Ki)) - call RegPack(Buf, InData%DerivOrder_x) - end if - call RegPack(Buf, InData%SizeLin) - call RegPack(Buf, InData%LinStartIndx) - call RegPack(Buf, InData%NumOutputs) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FAST_UnPackLinType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%Names_u) + call RegPackAlloc(RF, InData%Names_y) + call RegPackAlloc(RF, InData%Names_x) + call RegPackAlloc(RF, InData%Names_xd) + call RegPackAlloc(RF, InData%Names_z) + call RegPackAlloc(RF, InData%op_u) + call RegPackAlloc(RF, InData%op_y) + call RegPackAlloc(RF, InData%op_x) + call RegPackAlloc(RF, InData%op_dx) + call RegPackAlloc(RF, InData%op_xd) + call RegPackAlloc(RF, InData%op_z) + call RegPackAlloc(RF, InData%op_x_eig_mag) + call RegPackAlloc(RF, InData%op_x_eig_phase) + call RegPackAlloc(RF, InData%Use_u) + call RegPackAlloc(RF, InData%Use_y) + call RegPackAlloc(RF, InData%A) + call RegPackAlloc(RF, InData%B) + call RegPackAlloc(RF, InData%C) + call RegPackAlloc(RF, InData%D) + call RegPackAlloc(RF, InData%StateRotation) + call RegPackAlloc(RF, InData%StateRel_x) + call RegPackAlloc(RF, InData%StateRel_xdot) + call RegPackAlloc(RF, InData%IsLoad_u) + call RegPackAlloc(RF, InData%RotFrame_u) + call RegPackAlloc(RF, InData%RotFrame_y) + call RegPackAlloc(RF, InData%RotFrame_x) + call RegPackAlloc(RF, InData%RotFrame_z) + call RegPackAlloc(RF, InData%DerivOrder_x) + call RegPack(RF, InData%SizeLin) + call RegPack(RF, InData%LinStartIndx) + call RegPack(RF, InData%NumOutputs) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FAST_UnPackLinType(RF, OutData) + type(RegFile), intent(inout) :: RF type(FAST_LinType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackLinType' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%Names_u)) deallocate(OutData%Names_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Names_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Names_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Names_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Names_y)) deallocate(OutData%Names_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Names_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Names_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Names_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Names_x)) deallocate(OutData%Names_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Names_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Names_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Names_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Names_xd)) deallocate(OutData%Names_xd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Names_xd(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Names_xd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Names_xd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Names_z)) deallocate(OutData%Names_z) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Names_z(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Names_z.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Names_z) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%op_u)) deallocate(OutData%op_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%op_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%op_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%op_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%op_y)) deallocate(OutData%op_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%op_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%op_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%op_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%op_x)) deallocate(OutData%op_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%op_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%op_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%op_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%op_dx)) deallocate(OutData%op_dx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%op_dx(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%op_dx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%op_dx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%op_xd)) deallocate(OutData%op_xd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%op_xd(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%op_xd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%op_xd) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%op_z)) deallocate(OutData%op_z) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%op_z(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%op_z.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%op_z) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%op_x_eig_mag)) deallocate(OutData%op_x_eig_mag) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%op_x_eig_mag(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%op_x_eig_mag.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%op_x_eig_mag) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%op_x_eig_phase)) deallocate(OutData%op_x_eig_phase) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%op_x_eig_phase(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%op_x_eig_phase.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%op_x_eig_phase) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Use_u)) deallocate(OutData%Use_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Use_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Use_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Use_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Use_y)) deallocate(OutData%Use_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Use_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Use_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Use_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%A)) deallocate(OutData%A) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%A(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%A.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%A) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%B)) deallocate(OutData%B) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%B(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%B.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%B) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%C)) deallocate(OutData%C) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%C(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%C.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%C) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%D)) deallocate(OutData%D) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%D(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%D.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%D) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%StateRotation)) deallocate(OutData%StateRotation) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StateRotation(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StateRotation.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StateRotation) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%StateRel_x)) deallocate(OutData%StateRel_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StateRel_x(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StateRel_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StateRel_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%StateRel_xdot)) deallocate(OutData%StateRel_xdot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StateRel_xdot(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StateRel_xdot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StateRel_xdot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IsLoad_u)) deallocate(OutData%IsLoad_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IsLoad_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IsLoad_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IsLoad_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_u)) deallocate(OutData%RotFrame_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_y)) deallocate(OutData%RotFrame_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_x)) deallocate(OutData%RotFrame_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_z)) deallocate(OutData%RotFrame_z) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_z(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_z.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_z) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DerivOrder_x)) deallocate(OutData%DerivOrder_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DerivOrder_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DerivOrder_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DerivOrder_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%SizeLin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LinStartIndx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOutputs) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%Names_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Names_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Names_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Names_xd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Names_z); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%op_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%op_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%op_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%op_dx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%op_xd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%op_z); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%op_x_eig_mag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%op_x_eig_phase); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Use_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Use_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%A); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%B); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%C); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%D); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StateRotation); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StateRel_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StateRel_xdot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IsLoad_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_z); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DerivOrder_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SizeLin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LinStartIndx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOutputs); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyModLinType(SrcModLinTypeData, DstModLinTypeData, CtrlCode, ErrStat, ErrMsg) @@ -6361,47 +5399,45 @@ subroutine FAST_DestroyModLinType(ModLinTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackModLinType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackModLinType(RF, Indata) + type(RegFile), intent(inout) :: RF type(FAST_ModLinType), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackModLinType' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Instance)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%Instance)) if (allocated(InData%Instance)) then - call RegPackBounds(Buf, 1, lbound(InData%Instance, kind=B8Ki), ubound(InData%Instance, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Instance, kind=B8Ki), ubound(InData%Instance, kind=B8Ki)) LB(1:1) = lbound(InData%Instance, kind=B8Ki) UB(1:1) = ubound(InData%Instance, kind=B8Ki) do i1 = LB(1), UB(1) - call FAST_PackLinType(Buf, InData%Instance(i1)) + call FAST_PackLinType(RF, InData%Instance(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackModLinType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackModLinType(RF, OutData) + type(RegFile), intent(inout) :: RF type(FAST_ModLinType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackModLinType' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%Instance)) deallocate(OutData%Instance) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Instance(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Instance.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Instance.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FAST_UnpackLinType(Buf, OutData%Instance(i1)) ! Instance + call FAST_UnpackLinType(RF, OutData%Instance(i1)) ! Instance end do end if end subroutine @@ -6455,44 +5491,41 @@ subroutine FAST_DestroyLinFileType(LinFileTypeData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine FAST_PackLinFileType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackLinFileType(RF, Indata) + type(RegFile), intent(inout) :: RF type(FAST_LinFileType), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackLinFileType' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return LB(1:1) = lbound(InData%Modules, kind=B8Ki) UB(1:1) = ubound(InData%Modules, kind=B8Ki) do i1 = LB(1), UB(1) - call FAST_PackModLinType(Buf, InData%Modules(i1)) + call FAST_PackModLinType(RF, InData%Modules(i1)) end do - call FAST_PackLinType(Buf, InData%Glue) - call RegPack(Buf, InData%RotSpeed) - call RegPack(Buf, InData%Azimuth) - call RegPack(Buf, InData%WindSpeed) - if (RegCheckErr(Buf, RoutineName)) return + call FAST_PackLinType(RF, InData%Glue) + call RegPack(RF, InData%RotSpeed) + call RegPack(RF, InData%Azimuth) + call RegPack(RF, InData%WindSpeed) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackLinFileType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackLinFileType(RF, OutData) + type(RegFile), intent(inout) :: RF type(FAST_LinFileType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackLinFileType' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return LB(1:1) = lbound(OutData%Modules, kind=B8Ki) UB(1:1) = ubound(OutData%Modules, kind=B8Ki) do i1 = LB(1), UB(1) - call FAST_UnpackModLinType(Buf, OutData%Modules(i1)) ! Modules + call FAST_UnpackModLinType(RF, OutData%Modules(i1)) ! Modules end do - call FAST_UnpackLinType(Buf, OutData%Glue) ! Glue - call RegUnpack(Buf, OutData%RotSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Azimuth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WindSpeed) - if (RegCheckErr(Buf, RoutineName)) return + call FAST_UnpackLinType(RF, OutData%Glue) ! Glue + call RegUnpack(RF, OutData%RotSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Azimuth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WindSpeed); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyMiscLinType(SrcMiscLinTypeData, DstMiscLinTypeData, CtrlCode, ErrStat, ErrMsg) @@ -6614,157 +5647,48 @@ subroutine FAST_DestroyMiscLinType(MiscLinTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackMiscLinType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackMiscLinType(RF, Indata) + type(RegFile), intent(inout) :: RF type(FAST_MiscLinType), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackMiscLinType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%LinTimes)) - if (allocated(InData%LinTimes)) then - call RegPackBounds(Buf, 1, lbound(InData%LinTimes, kind=B8Ki), ubound(InData%LinTimes, kind=B8Ki)) - call RegPack(Buf, InData%LinTimes) - end if - call RegPack(Buf, InData%CopyOP_CtrlCode) - call RegPack(Buf, allocated(InData%AzimTarget)) - if (allocated(InData%AzimTarget)) then - call RegPackBounds(Buf, 1, lbound(InData%AzimTarget, kind=B8Ki), ubound(InData%AzimTarget, kind=B8Ki)) - call RegPack(Buf, InData%AzimTarget) - end if - call RegPack(Buf, InData%IsConverged) - call RegPack(Buf, InData%FoundSteady) - call RegPack(Buf, InData%ForceLin) - call RegPack(Buf, InData%n_rot) - call RegPack(Buf, InData%AzimIndx) - call RegPack(Buf, InData%NextLinTimeIndx) - call RegPack(Buf, allocated(InData%Psi)) - if (allocated(InData%Psi)) then - call RegPackBounds(Buf, 1, lbound(InData%Psi, kind=B8Ki), ubound(InData%Psi, kind=B8Ki)) - call RegPack(Buf, InData%Psi) - end if - call RegPack(Buf, allocated(InData%y_interp)) - if (allocated(InData%y_interp)) then - call RegPackBounds(Buf, 1, lbound(InData%y_interp, kind=B8Ki), ubound(InData%y_interp, kind=B8Ki)) - call RegPack(Buf, InData%y_interp) - end if - call RegPack(Buf, allocated(InData%y_ref)) - if (allocated(InData%y_ref)) then - call RegPackBounds(Buf, 1, lbound(InData%y_ref, kind=B8Ki), ubound(InData%y_ref, kind=B8Ki)) - call RegPack(Buf, InData%y_ref) - end if - call RegPack(Buf, allocated(InData%Y_prevRot)) - if (allocated(InData%Y_prevRot)) then - call RegPackBounds(Buf, 2, lbound(InData%Y_prevRot, kind=B8Ki), ubound(InData%Y_prevRot, kind=B8Ki)) - call RegPack(Buf, InData%Y_prevRot) - end if - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FAST_UnPackMiscLinType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%LinTimes) + call RegPack(RF, InData%CopyOP_CtrlCode) + call RegPackAlloc(RF, InData%AzimTarget) + call RegPack(RF, InData%IsConverged) + call RegPack(RF, InData%FoundSteady) + call RegPack(RF, InData%ForceLin) + call RegPack(RF, InData%n_rot) + call RegPack(RF, InData%AzimIndx) + call RegPack(RF, InData%NextLinTimeIndx) + call RegPackAlloc(RF, InData%Psi) + call RegPackAlloc(RF, InData%y_interp) + call RegPackAlloc(RF, InData%y_ref) + call RegPackAlloc(RF, InData%Y_prevRot) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FAST_UnPackMiscLinType(RF, OutData) + type(RegFile), intent(inout) :: RF type(FAST_MiscLinType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackMiscLinType' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%LinTimes)) deallocate(OutData%LinTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinTimes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%CopyOP_CtrlCode) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%AzimTarget)) deallocate(OutData%AzimTarget) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AzimTarget(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AzimTarget.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AzimTarget) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%IsConverged) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FoundSteady) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ForceLin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%n_rot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AzimIndx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NextLinTimeIndx) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Psi)) deallocate(OutData%Psi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Psi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Psi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Psi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%y_interp)) deallocate(OutData%y_interp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%y_interp(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y_interp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%y_interp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%y_ref)) deallocate(OutData%y_ref) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%y_ref(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y_ref.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%y_ref) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Y_prevRot)) deallocate(OutData%Y_prevRot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Y_prevRot(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Y_prevRot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Y_prevRot) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%LinTimes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CopyOP_CtrlCode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AzimTarget); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IsConverged); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FoundSteady); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ForceLin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%n_rot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AzimIndx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NextLinTimeIndx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Psi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%y_interp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%y_ref); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Y_prevRot); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyOutputFileType(SrcOutputFileTypeData, DstOutputFileTypeData, CtrlCode, ErrStat, ErrMsg) @@ -6891,154 +5815,73 @@ subroutine FAST_DestroyOutputFileType(OutputFileTypeData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine FAST_PackOutputFileType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackOutputFileType(RF, Indata) + type(RegFile), intent(inout) :: RF type(FAST_OutputFileType), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackOutputFileType' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%TimeData)) - if (allocated(InData%TimeData)) then - call RegPackBounds(Buf, 1, lbound(InData%TimeData, kind=B8Ki), ubound(InData%TimeData, kind=B8Ki)) - call RegPack(Buf, InData%TimeData) - end if - call RegPack(Buf, allocated(InData%AllOutData)) - if (allocated(InData%AllOutData)) then - call RegPackBounds(Buf, 2, lbound(InData%AllOutData, kind=B8Ki), ubound(InData%AllOutData, kind=B8Ki)) - call RegPack(Buf, InData%AllOutData) - end if - call RegPack(Buf, InData%n_Out) - call RegPack(Buf, InData%NOutSteps) - call RegPack(Buf, InData%numOuts) - call RegPack(Buf, InData%UnOu) - call RegPack(Buf, InData%UnSum) - call RegPack(Buf, InData%UnGra) - call RegPack(Buf, InData%FileDescLines) - call RegPack(Buf, allocated(InData%ChannelNames)) - if (allocated(InData%ChannelNames)) then - call RegPackBounds(Buf, 1, lbound(InData%ChannelNames, kind=B8Ki), ubound(InData%ChannelNames, kind=B8Ki)) - call RegPack(Buf, InData%ChannelNames) - end if - call RegPack(Buf, allocated(InData%ChannelUnits)) - if (allocated(InData%ChannelUnits)) then - call RegPackBounds(Buf, 1, lbound(InData%ChannelUnits, kind=B8Ki), ubound(InData%ChannelUnits, kind=B8Ki)) - call RegPack(Buf, InData%ChannelUnits) - end if + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%TimeData) + call RegPackAlloc(RF, InData%AllOutData) + call RegPack(RF, InData%n_Out) + call RegPack(RF, InData%NOutSteps) + call RegPack(RF, InData%numOuts) + call RegPack(RF, InData%UnOu) + call RegPack(RF, InData%UnSum) + call RegPack(RF, InData%UnGra) + call RegPack(RF, InData%FileDescLines) + call RegPackAlloc(RF, InData%ChannelNames) + call RegPackAlloc(RF, InData%ChannelUnits) LB(1:1) = lbound(InData%Module_Ver, kind=B8Ki) UB(1:1) = ubound(InData%Module_Ver, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackProgDesc(Buf, InData%Module_Ver(i1)) + call NWTC_Library_PackProgDesc(RF, InData%Module_Ver(i1)) end do - call RegPack(Buf, InData%Module_Abrev) - call RegPack(Buf, InData%WriteThisStep) - call RegPack(Buf, InData%VTK_count) - call RegPack(Buf, InData%VTK_LastWaveIndx) - call FAST_PackLinFileType(Buf, InData%Lin) - call RegPack(Buf, InData%ActualChanLen) - call FAST_PackLinStateSave(Buf, InData%op) - call RegPack(Buf, InData%DriverWriteOutput) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%Module_Abrev) + call RegPack(RF, InData%WriteThisStep) + call RegPack(RF, InData%VTK_count) + call RegPack(RF, InData%VTK_LastWaveIndx) + call FAST_PackLinFileType(RF, InData%Lin) + call RegPack(RF, InData%ActualChanLen) + call FAST_PackLinStateSave(RF, InData%op) + call RegPack(RF, InData%DriverWriteOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackOutputFileType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackOutputFileType(RF, OutData) + type(RegFile), intent(inout) :: RF type(FAST_OutputFileType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackOutputFileType' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%TimeData)) deallocate(OutData%TimeData) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TimeData(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TimeData.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TimeData) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AllOutData)) deallocate(OutData%AllOutData) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AllOutData(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AllOutData.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AllOutData) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%n_Out) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NOutSteps) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%numOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UnOu) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UnSum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UnGra) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FileDescLines) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%ChannelNames)) deallocate(OutData%ChannelNames) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ChannelNames(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ChannelNames.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ChannelNames) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ChannelUnits)) deallocate(OutData%ChannelUnits) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ChannelUnits(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ChannelUnits.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ChannelUnits) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%TimeData); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AllOutData); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%n_Out); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NOutSteps); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%numOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UnOu); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UnSum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UnGra); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FileDescLines); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ChannelNames); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ChannelUnits); if (RegCheckErr(RF, RoutineName)) return LB(1:1) = lbound(OutData%Module_Ver, kind=B8Ki) UB(1:1) = ubound(OutData%Module_Ver, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_UnpackProgDesc(Buf, OutData%Module_Ver(i1)) ! Module_Ver + call NWTC_Library_UnpackProgDesc(RF, OutData%Module_Ver(i1)) ! Module_Ver end do - call RegUnpack(Buf, OutData%Module_Abrev) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WriteThisStep) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTK_count) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VTK_LastWaveIndx) - if (RegCheckErr(Buf, RoutineName)) return - call FAST_UnpackLinFileType(Buf, OutData%Lin) ! Lin - call RegUnpack(Buf, OutData%ActualChanLen) - if (RegCheckErr(Buf, RoutineName)) return - call FAST_UnpackLinStateSave(Buf, OutData%op) ! op - call RegUnpack(Buf, OutData%DriverWriteOutput) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%Module_Abrev); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WriteThisStep); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTK_count); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VTK_LastWaveIndx); if (RegCheckErr(RF, RoutineName)) return + call FAST_UnpackLinFileType(RF, OutData%Lin) ! Lin + call RegUnpack(RF, OutData%ActualChanLen); if (RegCheckErr(RF, RoutineName)) return + call FAST_UnpackLinStateSave(RF, OutData%op) ! op + call RegUnpack(RF, OutData%DriverWriteOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyIceDyn_Data(SrcIceDyn_DataData, DstIceDyn_DataData, CtrlCode, ErrStat, ErrMsg) @@ -7329,280 +6172,245 @@ subroutine FAST_DestroyIceDyn_Data(IceDyn_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackIceDyn_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackIceDyn_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceDyn_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackIceDyn_Data' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%x)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%x)) if (allocated(InData%x)) then - call RegPackBounds(Buf, 2, lbound(InData%x, kind=B8Ki), ubound(InData%x, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%x, kind=B8Ki), ubound(InData%x, kind=B8Ki)) LB(1:2) = lbound(InData%x, kind=B8Ki) UB(1:2) = ubound(InData%x, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_PackContState(Buf, InData%x(i1,i2)) + call IceD_PackContState(RF, InData%x(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%xd)) + call RegPack(RF, allocated(InData%xd)) if (allocated(InData%xd)) then - call RegPackBounds(Buf, 2, lbound(InData%xd, kind=B8Ki), ubound(InData%xd, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%xd, kind=B8Ki), ubound(InData%xd, kind=B8Ki)) LB(1:2) = lbound(InData%xd, kind=B8Ki) UB(1:2) = ubound(InData%xd, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_PackDiscState(Buf, InData%xd(i1,i2)) + call IceD_PackDiscState(RF, InData%xd(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%z)) + call RegPack(RF, allocated(InData%z)) if (allocated(InData%z)) then - call RegPackBounds(Buf, 2, lbound(InData%z, kind=B8Ki), ubound(InData%z, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%z, kind=B8Ki), ubound(InData%z, kind=B8Ki)) LB(1:2) = lbound(InData%z, kind=B8Ki) UB(1:2) = ubound(InData%z, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_PackConstrState(Buf, InData%z(i1,i2)) + call IceD_PackConstrState(RF, InData%z(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%OtherSt)) + call RegPack(RF, allocated(InData%OtherSt)) if (allocated(InData%OtherSt)) then - call RegPackBounds(Buf, 2, lbound(InData%OtherSt, kind=B8Ki), ubound(InData%OtherSt, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%OtherSt, kind=B8Ki), ubound(InData%OtherSt, kind=B8Ki)) LB(1:2) = lbound(InData%OtherSt, kind=B8Ki) UB(1:2) = ubound(InData%OtherSt, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_PackOtherState(Buf, InData%OtherSt(i1,i2)) + call IceD_PackOtherState(RF, InData%OtherSt(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%p)) + call RegPack(RF, allocated(InData%p)) if (allocated(InData%p)) then - call RegPackBounds(Buf, 1, lbound(InData%p, kind=B8Ki), ubound(InData%p, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%p, kind=B8Ki), ubound(InData%p, kind=B8Ki)) LB(1:1) = lbound(InData%p, kind=B8Ki) UB(1:1) = ubound(InData%p, kind=B8Ki) do i1 = LB(1), UB(1) - call IceD_PackParam(Buf, InData%p(i1)) + call IceD_PackParam(RF, InData%p(i1)) end do end if - call RegPack(Buf, allocated(InData%u)) + call RegPack(RF, allocated(InData%u)) if (allocated(InData%u)) then - call RegPackBounds(Buf, 1, lbound(InData%u, kind=B8Ki), ubound(InData%u, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u, kind=B8Ki), ubound(InData%u, kind=B8Ki)) LB(1:1) = lbound(InData%u, kind=B8Ki) UB(1:1) = ubound(InData%u, kind=B8Ki) do i1 = LB(1), UB(1) - call IceD_PackInput(Buf, InData%u(i1)) + call IceD_PackInput(RF, InData%u(i1)) end do end if - call RegPack(Buf, allocated(InData%y)) + call RegPack(RF, allocated(InData%y)) if (allocated(InData%y)) then - call RegPackBounds(Buf, 1, lbound(InData%y, kind=B8Ki), ubound(InData%y, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%y, kind=B8Ki), ubound(InData%y, kind=B8Ki)) LB(1:1) = lbound(InData%y, kind=B8Ki) UB(1:1) = ubound(InData%y, kind=B8Ki) do i1 = LB(1), UB(1) - call IceD_PackOutput(Buf, InData%y(i1)) + call IceD_PackOutput(RF, InData%y(i1)) end do end if - call RegPack(Buf, allocated(InData%m)) + call RegPack(RF, allocated(InData%m)) if (allocated(InData%m)) then - call RegPackBounds(Buf, 1, lbound(InData%m, kind=B8Ki), ubound(InData%m, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%m, kind=B8Ki), ubound(InData%m, kind=B8Ki)) LB(1:1) = lbound(InData%m, kind=B8Ki) UB(1:1) = ubound(InData%m, kind=B8Ki) do i1 = LB(1), UB(1) - call IceD_PackMisc(Buf, InData%m(i1)) + call IceD_PackMisc(RF, InData%m(i1)) end do end if - call RegPack(Buf, allocated(InData%Input)) + call RegPack(RF, allocated(InData%Input)) if (allocated(InData%Input)) then - call RegPackBounds(Buf, 2, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) LB(1:2) = lbound(InData%Input, kind=B8Ki) UB(1:2) = ubound(InData%Input, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_PackInput(Buf, InData%Input(i1,i2)) + call IceD_PackInput(RF, InData%Input(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%InputTimes)) - if (allocated(InData%InputTimes)) then - call RegPackBounds(Buf, 2, lbound(InData%InputTimes, kind=B8Ki), ubound(InData%InputTimes, kind=B8Ki)) - call RegPack(Buf, InData%InputTimes) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%InputTimes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackIceDyn_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackIceDyn_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceDyn_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackIceDyn_Data' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%x)) deallocate(OutData%x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%x(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_UnpackContState(Buf, OutData%x(i1,i2)) ! x + call IceD_UnpackContState(RF, OutData%x(i1,i2)) ! x end do end do end if if (allocated(OutData%xd)) deallocate(OutData%xd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xd(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_UnpackDiscState(Buf, OutData%xd(i1,i2)) ! xd + call IceD_UnpackDiscState(RF, OutData%xd(i1,i2)) ! xd end do end do end if if (allocated(OutData%z)) deallocate(OutData%z) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%z(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_UnpackConstrState(Buf, OutData%z(i1,i2)) ! z + call IceD_UnpackConstrState(RF, OutData%z(i1,i2)) ! z end do end do end if if (allocated(OutData%OtherSt)) deallocate(OutData%OtherSt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OtherSt(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_UnpackOtherState(Buf, OutData%OtherSt(i1,i2)) ! OtherSt + call IceD_UnpackOtherState(RF, OutData%OtherSt(i1,i2)) ! OtherSt end do end do end if if (allocated(OutData%p)) deallocate(OutData%p) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%p(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%p.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%p.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call IceD_UnpackParam(Buf, OutData%p(i1)) ! p + call IceD_UnpackParam(RF, OutData%p(i1)) ! p end do end if if (allocated(OutData%u)) deallocate(OutData%u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call IceD_UnpackInput(Buf, OutData%u(i1)) ! u + call IceD_UnpackInput(RF, OutData%u(i1)) ! u end do end if if (allocated(OutData%y)) deallocate(OutData%y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%y(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call IceD_UnpackOutput(Buf, OutData%y(i1)) ! y + call IceD_UnpackOutput(RF, OutData%y(i1)) ! y end do end if if (allocated(OutData%m)) deallocate(OutData%m) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%m(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%m.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%m.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call IceD_UnpackMisc(Buf, OutData%m(i1)) ! m + call IceD_UnpackMisc(RF, OutData%m(i1)) ! m end do end if if (allocated(OutData%Input)) deallocate(OutData%Input) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Input(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call IceD_UnpackInput(Buf, OutData%Input(i1,i2)) ! Input + call IceD_UnpackInput(RF, OutData%Input(i1,i2)) ! Input end do end do end if - if (allocated(OutData%InputTimes)) deallocate(OutData%InputTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InputTimes(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InputTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%InputTimes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyBeamDyn_Data(SrcBeamDyn_DataData, DstBeamDyn_DataData, CtrlCode, ErrStat, ErrMsg) @@ -7947,332 +6755,293 @@ subroutine FAST_DestroyBeamDyn_Data(BeamDyn_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackBeamDyn_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackBeamDyn_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(BeamDyn_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackBeamDyn_Data' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%x)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%x)) if (allocated(InData%x)) then - call RegPackBounds(Buf, 2, lbound(InData%x, kind=B8Ki), ubound(InData%x, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%x, kind=B8Ki), ubound(InData%x, kind=B8Ki)) LB(1:2) = lbound(InData%x, kind=B8Ki) UB(1:2) = ubound(InData%x, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_PackContState(Buf, InData%x(i1,i2)) + call BD_PackContState(RF, InData%x(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%xd)) + call RegPack(RF, allocated(InData%xd)) if (allocated(InData%xd)) then - call RegPackBounds(Buf, 2, lbound(InData%xd, kind=B8Ki), ubound(InData%xd, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%xd, kind=B8Ki), ubound(InData%xd, kind=B8Ki)) LB(1:2) = lbound(InData%xd, kind=B8Ki) UB(1:2) = ubound(InData%xd, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_PackDiscState(Buf, InData%xd(i1,i2)) + call BD_PackDiscState(RF, InData%xd(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%z)) + call RegPack(RF, allocated(InData%z)) if (allocated(InData%z)) then - call RegPackBounds(Buf, 2, lbound(InData%z, kind=B8Ki), ubound(InData%z, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%z, kind=B8Ki), ubound(InData%z, kind=B8Ki)) LB(1:2) = lbound(InData%z, kind=B8Ki) UB(1:2) = ubound(InData%z, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_PackConstrState(Buf, InData%z(i1,i2)) + call BD_PackConstrState(RF, InData%z(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%OtherSt)) + call RegPack(RF, allocated(InData%OtherSt)) if (allocated(InData%OtherSt)) then - call RegPackBounds(Buf, 2, lbound(InData%OtherSt, kind=B8Ki), ubound(InData%OtherSt, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%OtherSt, kind=B8Ki), ubound(InData%OtherSt, kind=B8Ki)) LB(1:2) = lbound(InData%OtherSt, kind=B8Ki) UB(1:2) = ubound(InData%OtherSt, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_PackOtherState(Buf, InData%OtherSt(i1,i2)) + call BD_PackOtherState(RF, InData%OtherSt(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%p)) + call RegPack(RF, allocated(InData%p)) if (allocated(InData%p)) then - call RegPackBounds(Buf, 1, lbound(InData%p, kind=B8Ki), ubound(InData%p, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%p, kind=B8Ki), ubound(InData%p, kind=B8Ki)) LB(1:1) = lbound(InData%p, kind=B8Ki) UB(1:1) = ubound(InData%p, kind=B8Ki) do i1 = LB(1), UB(1) - call BD_PackParam(Buf, InData%p(i1)) + call BD_PackParam(RF, InData%p(i1)) end do end if - call RegPack(Buf, allocated(InData%u)) + call RegPack(RF, allocated(InData%u)) if (allocated(InData%u)) then - call RegPackBounds(Buf, 1, lbound(InData%u, kind=B8Ki), ubound(InData%u, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u, kind=B8Ki), ubound(InData%u, kind=B8Ki)) LB(1:1) = lbound(InData%u, kind=B8Ki) UB(1:1) = ubound(InData%u, kind=B8Ki) do i1 = LB(1), UB(1) - call BD_PackInput(Buf, InData%u(i1)) + call BD_PackInput(RF, InData%u(i1)) end do end if - call RegPack(Buf, allocated(InData%y)) + call RegPack(RF, allocated(InData%y)) if (allocated(InData%y)) then - call RegPackBounds(Buf, 1, lbound(InData%y, kind=B8Ki), ubound(InData%y, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%y, kind=B8Ki), ubound(InData%y, kind=B8Ki)) LB(1:1) = lbound(InData%y, kind=B8Ki) UB(1:1) = ubound(InData%y, kind=B8Ki) do i1 = LB(1), UB(1) - call BD_PackOutput(Buf, InData%y(i1)) + call BD_PackOutput(RF, InData%y(i1)) end do end if - call RegPack(Buf, allocated(InData%m)) + call RegPack(RF, allocated(InData%m)) if (allocated(InData%m)) then - call RegPackBounds(Buf, 1, lbound(InData%m, kind=B8Ki), ubound(InData%m, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%m, kind=B8Ki), ubound(InData%m, kind=B8Ki)) LB(1:1) = lbound(InData%m, kind=B8Ki) UB(1:1) = ubound(InData%m, kind=B8Ki) do i1 = LB(1), UB(1) - call BD_PackMisc(Buf, InData%m(i1)) + call BD_PackMisc(RF, InData%m(i1)) end do end if - call RegPack(Buf, allocated(InData%Output)) + call RegPack(RF, allocated(InData%Output)) if (allocated(InData%Output)) then - call RegPackBounds(Buf, 2, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) LB(1:2) = lbound(InData%Output, kind=B8Ki) UB(1:2) = ubound(InData%Output, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_PackOutput(Buf, InData%Output(i1,i2)) + call BD_PackOutput(RF, InData%Output(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%y_interp)) + call RegPack(RF, allocated(InData%y_interp)) if (allocated(InData%y_interp)) then - call RegPackBounds(Buf, 1, lbound(InData%y_interp, kind=B8Ki), ubound(InData%y_interp, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%y_interp, kind=B8Ki), ubound(InData%y_interp, kind=B8Ki)) LB(1:1) = lbound(InData%y_interp, kind=B8Ki) UB(1:1) = ubound(InData%y_interp, kind=B8Ki) do i1 = LB(1), UB(1) - call BD_PackOutput(Buf, InData%y_interp(i1)) + call BD_PackOutput(RF, InData%y_interp(i1)) end do end if - call RegPack(Buf, allocated(InData%Input)) + call RegPack(RF, allocated(InData%Input)) if (allocated(InData%Input)) then - call RegPackBounds(Buf, 2, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) LB(1:2) = lbound(InData%Input, kind=B8Ki) UB(1:2) = ubound(InData%Input, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_PackInput(Buf, InData%Input(i1,i2)) + call BD_PackInput(RF, InData%Input(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%InputTimes)) - if (allocated(InData%InputTimes)) then - call RegPackBounds(Buf, 2, lbound(InData%InputTimes, kind=B8Ki), ubound(InData%InputTimes, kind=B8Ki)) - call RegPack(Buf, InData%InputTimes) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%InputTimes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackBeamDyn_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackBeamDyn_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(BeamDyn_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackBeamDyn_Data' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%x)) deallocate(OutData%x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%x(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_UnpackContState(Buf, OutData%x(i1,i2)) ! x + call BD_UnpackContState(RF, OutData%x(i1,i2)) ! x end do end do end if if (allocated(OutData%xd)) deallocate(OutData%xd) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xd(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_UnpackDiscState(Buf, OutData%xd(i1,i2)) ! xd + call BD_UnpackDiscState(RF, OutData%xd(i1,i2)) ! xd end do end do end if if (allocated(OutData%z)) deallocate(OutData%z) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%z(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_UnpackConstrState(Buf, OutData%z(i1,i2)) ! z + call BD_UnpackConstrState(RF, OutData%z(i1,i2)) ! z end do end do end if if (allocated(OutData%OtherSt)) deallocate(OutData%OtherSt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OtherSt(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OtherSt.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_UnpackOtherState(Buf, OutData%OtherSt(i1,i2)) ! OtherSt + call BD_UnpackOtherState(RF, OutData%OtherSt(i1,i2)) ! OtherSt end do end do end if if (allocated(OutData%p)) deallocate(OutData%p) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%p(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%p.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%p.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call BD_UnpackParam(Buf, OutData%p(i1)) ! p + call BD_UnpackParam(RF, OutData%p(i1)) ! p end do end if if (allocated(OutData%u)) deallocate(OutData%u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call BD_UnpackInput(Buf, OutData%u(i1)) ! u + call BD_UnpackInput(RF, OutData%u(i1)) ! u end do end if if (allocated(OutData%y)) deallocate(OutData%y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%y(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call BD_UnpackOutput(Buf, OutData%y(i1)) ! y + call BD_UnpackOutput(RF, OutData%y(i1)) ! y end do end if if (allocated(OutData%m)) deallocate(OutData%m) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%m(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%m.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%m.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call BD_UnpackMisc(Buf, OutData%m(i1)) ! m + call BD_UnpackMisc(RF, OutData%m(i1)) ! m end do end if if (allocated(OutData%Output)) deallocate(OutData%Output) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Output(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_UnpackOutput(Buf, OutData%Output(i1,i2)) ! Output + call BD_UnpackOutput(RF, OutData%Output(i1,i2)) ! Output end do end do end if if (allocated(OutData%y_interp)) deallocate(OutData%y_interp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%y_interp(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y_interp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y_interp.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call BD_UnpackOutput(Buf, OutData%y_interp(i1)) ! y_interp + call BD_UnpackOutput(RF, OutData%y_interp(i1)) ! y_interp end do end if if (allocated(OutData%Input)) deallocate(OutData%Input) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Input(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call BD_UnpackInput(Buf, OutData%Input(i1,i2)) ! Input + call BD_UnpackInput(RF, OutData%Input(i1,i2)) ! Input end do end do end if - if (allocated(OutData%InputTimes)) deallocate(OutData%InputTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InputTimes(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InputTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%InputTimes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyElastoDyn_Data(SrcElastoDyn_DataData, DstElastoDyn_DataData, CtrlCode, ErrStat, ErrMsg) @@ -8445,142 +7214,121 @@ subroutine FAST_DestroyElastoDyn_Data(ElastoDyn_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackElastoDyn_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackElastoDyn_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(ElastoDyn_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackElastoDyn_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return LB(1:1) = lbound(InData%x, kind=B8Ki) UB(1:1) = ubound(InData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_PackContState(Buf, InData%x(i1)) + call ED_PackContState(RF, InData%x(i1)) end do LB(1:1) = lbound(InData%xd, kind=B8Ki) UB(1:1) = ubound(InData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_PackDiscState(Buf, InData%xd(i1)) + call ED_PackDiscState(RF, InData%xd(i1)) end do LB(1:1) = lbound(InData%z, kind=B8Ki) UB(1:1) = ubound(InData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_PackConstrState(Buf, InData%z(i1)) + call ED_PackConstrState(RF, InData%z(i1)) end do LB(1:1) = lbound(InData%OtherSt, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_PackOtherState(Buf, InData%OtherSt(i1)) + call ED_PackOtherState(RF, InData%OtherSt(i1)) end do - call ED_PackParam(Buf, InData%p) - call ED_PackInput(Buf, InData%u) - call ED_PackOutput(Buf, InData%y) - call ED_PackMisc(Buf, InData%m) - call RegPack(Buf, allocated(InData%Output)) + call ED_PackParam(RF, InData%p) + call ED_PackInput(RF, InData%u) + call ED_PackOutput(RF, InData%y) + call ED_PackMisc(RF, InData%m) + call RegPack(RF, allocated(InData%Output)) if (allocated(InData%Output)) then - call RegPackBounds(Buf, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) LB(1:1) = lbound(InData%Output, kind=B8Ki) UB(1:1) = ubound(InData%Output, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_PackOutput(Buf, InData%Output(i1)) + call ED_PackOutput(RF, InData%Output(i1)) end do end if - call ED_PackOutput(Buf, InData%y_interp) - call RegPack(Buf, allocated(InData%Input)) + call ED_PackOutput(RF, InData%y_interp) + call RegPack(RF, allocated(InData%Input)) if (allocated(InData%Input)) then - call RegPackBounds(Buf, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) LB(1:1) = lbound(InData%Input, kind=B8Ki) UB(1:1) = ubound(InData%Input, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_PackInput(Buf, InData%Input(i1)) + call ED_PackInput(RF, InData%Input(i1)) end do end if - call RegPack(Buf, allocated(InData%InputTimes)) - if (allocated(InData%InputTimes)) then - call RegPackBounds(Buf, 1, lbound(InData%InputTimes, kind=B8Ki), ubound(InData%InputTimes, kind=B8Ki)) - call RegPack(Buf, InData%InputTimes) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%InputTimes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackElastoDyn_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackElastoDyn_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(ElastoDyn_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackElastoDyn_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return LB(1:1) = lbound(OutData%x, kind=B8Ki) UB(1:1) = ubound(OutData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_UnpackContState(Buf, OutData%x(i1)) ! x + call ED_UnpackContState(RF, OutData%x(i1)) ! x end do LB(1:1) = lbound(OutData%xd, kind=B8Ki) UB(1:1) = ubound(OutData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_UnpackDiscState(Buf, OutData%xd(i1)) ! xd + call ED_UnpackDiscState(RF, OutData%xd(i1)) ! xd end do LB(1:1) = lbound(OutData%z, kind=B8Ki) UB(1:1) = ubound(OutData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_UnpackConstrState(Buf, OutData%z(i1)) ! z + call ED_UnpackConstrState(RF, OutData%z(i1)) ! z end do LB(1:1) = lbound(OutData%OtherSt, kind=B8Ki) UB(1:1) = ubound(OutData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call ED_UnpackOtherState(Buf, OutData%OtherSt(i1)) ! OtherSt + call ED_UnpackOtherState(RF, OutData%OtherSt(i1)) ! OtherSt end do - call ED_UnpackParam(Buf, OutData%p) ! p - call ED_UnpackInput(Buf, OutData%u) ! u - call ED_UnpackOutput(Buf, OutData%y) ! y - call ED_UnpackMisc(Buf, OutData%m) ! m + call ED_UnpackParam(RF, OutData%p) ! p + call ED_UnpackInput(RF, OutData%u) ! u + call ED_UnpackOutput(RF, OutData%y) ! y + call ED_UnpackMisc(RF, OutData%m) ! m if (allocated(OutData%Output)) deallocate(OutData%Output) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Output(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ED_UnpackOutput(Buf, OutData%Output(i1)) ! Output + call ED_UnpackOutput(RF, OutData%Output(i1)) ! Output end do end if - call ED_UnpackOutput(Buf, OutData%y_interp) ! y_interp + call ED_UnpackOutput(RF, OutData%y_interp) ! y_interp if (allocated(OutData%Input)) deallocate(OutData%Input) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Input(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ED_UnpackInput(Buf, OutData%Input(i1)) ! Input + call ED_UnpackInput(RF, OutData%Input(i1)) ! Input end do end if - if (allocated(OutData%InputTimes)) deallocate(OutData%InputTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InputTimes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InputTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%InputTimes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyServoDyn_Data(SrcServoDyn_DataData, DstServoDyn_DataData, CtrlCode, ErrStat, ErrMsg) @@ -8753,142 +7501,121 @@ subroutine FAST_DestroyServoDyn_Data(ServoDyn_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackServoDyn_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackServoDyn_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(ServoDyn_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackServoDyn_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return LB(1:1) = lbound(InData%x, kind=B8Ki) UB(1:1) = ubound(InData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call SrvD_PackContState(Buf, InData%x(i1)) + call SrvD_PackContState(RF, InData%x(i1)) end do LB(1:1) = lbound(InData%xd, kind=B8Ki) UB(1:1) = ubound(InData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call SrvD_PackDiscState(Buf, InData%xd(i1)) + call SrvD_PackDiscState(RF, InData%xd(i1)) end do LB(1:1) = lbound(InData%z, kind=B8Ki) UB(1:1) = ubound(InData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call SrvD_PackConstrState(Buf, InData%z(i1)) + call SrvD_PackConstrState(RF, InData%z(i1)) end do LB(1:1) = lbound(InData%OtherSt, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call SrvD_PackOtherState(Buf, InData%OtherSt(i1)) + call SrvD_PackOtherState(RF, InData%OtherSt(i1)) end do - call SrvD_PackParam(Buf, InData%p) - call SrvD_PackInput(Buf, InData%u) - call SrvD_PackOutput(Buf, InData%y) - call SrvD_PackMisc(Buf, InData%m) - call RegPack(Buf, allocated(InData%Output)) + call SrvD_PackParam(RF, InData%p) + call SrvD_PackInput(RF, InData%u) + call SrvD_PackOutput(RF, InData%y) + call SrvD_PackMisc(RF, InData%m) + call RegPack(RF, allocated(InData%Output)) if (allocated(InData%Output)) then - call RegPackBounds(Buf, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) LB(1:1) = lbound(InData%Output, kind=B8Ki) UB(1:1) = ubound(InData%Output, kind=B8Ki) do i1 = LB(1), UB(1) - call SrvD_PackOutput(Buf, InData%Output(i1)) + call SrvD_PackOutput(RF, InData%Output(i1)) end do end if - call SrvD_PackOutput(Buf, InData%y_interp) - call RegPack(Buf, allocated(InData%Input)) + call SrvD_PackOutput(RF, InData%y_interp) + call RegPack(RF, allocated(InData%Input)) if (allocated(InData%Input)) then - call RegPackBounds(Buf, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) LB(1:1) = lbound(InData%Input, kind=B8Ki) UB(1:1) = ubound(InData%Input, kind=B8Ki) do i1 = LB(1), UB(1) - call SrvD_PackInput(Buf, InData%Input(i1)) + call SrvD_PackInput(RF, InData%Input(i1)) end do end if - call RegPack(Buf, allocated(InData%InputTimes)) - if (allocated(InData%InputTimes)) then - call RegPackBounds(Buf, 1, lbound(InData%InputTimes, kind=B8Ki), ubound(InData%InputTimes, kind=B8Ki)) - call RegPack(Buf, InData%InputTimes) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%InputTimes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackServoDyn_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackServoDyn_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(ServoDyn_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackServoDyn_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return LB(1:1) = lbound(OutData%x, kind=B8Ki) UB(1:1) = ubound(OutData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call SrvD_UnpackContState(Buf, OutData%x(i1)) ! x + call SrvD_UnpackContState(RF, OutData%x(i1)) ! x end do LB(1:1) = lbound(OutData%xd, kind=B8Ki) UB(1:1) = ubound(OutData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call SrvD_UnpackDiscState(Buf, OutData%xd(i1)) ! xd + call SrvD_UnpackDiscState(RF, OutData%xd(i1)) ! xd end do LB(1:1) = lbound(OutData%z, kind=B8Ki) UB(1:1) = ubound(OutData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call SrvD_UnpackConstrState(Buf, OutData%z(i1)) ! z + call SrvD_UnpackConstrState(RF, OutData%z(i1)) ! z end do LB(1:1) = lbound(OutData%OtherSt, kind=B8Ki) UB(1:1) = ubound(OutData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call SrvD_UnpackOtherState(Buf, OutData%OtherSt(i1)) ! OtherSt + call SrvD_UnpackOtherState(RF, OutData%OtherSt(i1)) ! OtherSt end do - call SrvD_UnpackParam(Buf, OutData%p) ! p - call SrvD_UnpackInput(Buf, OutData%u) ! u - call SrvD_UnpackOutput(Buf, OutData%y) ! y - call SrvD_UnpackMisc(Buf, OutData%m) ! m + call SrvD_UnpackParam(RF, OutData%p) ! p + call SrvD_UnpackInput(RF, OutData%u) ! u + call SrvD_UnpackOutput(RF, OutData%y) ! y + call SrvD_UnpackMisc(RF, OutData%m) ! m if (allocated(OutData%Output)) deallocate(OutData%Output) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Output(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SrvD_UnpackOutput(Buf, OutData%Output(i1)) ! Output + call SrvD_UnpackOutput(RF, OutData%Output(i1)) ! Output end do end if - call SrvD_UnpackOutput(Buf, OutData%y_interp) ! y_interp + call SrvD_UnpackOutput(RF, OutData%y_interp) ! y_interp if (allocated(OutData%Input)) deallocate(OutData%Input) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Input(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SrvD_UnpackInput(Buf, OutData%Input(i1)) ! Input + call SrvD_UnpackInput(RF, OutData%Input(i1)) ! Input end do end if - if (allocated(OutData%InputTimes)) deallocate(OutData%InputTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InputTimes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InputTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%InputTimes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyAeroDyn14_Data(SrcAeroDyn14_DataData, DstAeroDyn14_DataData, CtrlCode, ErrStat, ErrMsg) @@ -9031,116 +7758,97 @@ subroutine FAST_DestroyAeroDyn14_Data(AeroDyn14_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackAeroDyn14_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackAeroDyn14_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(AeroDyn14_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackAeroDyn14_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return LB(1:1) = lbound(InData%x, kind=B8Ki) UB(1:1) = ubound(InData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call AD14_PackContState(Buf, InData%x(i1)) + call AD14_PackContState(RF, InData%x(i1)) end do LB(1:1) = lbound(InData%xd, kind=B8Ki) UB(1:1) = ubound(InData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call AD14_PackDiscState(Buf, InData%xd(i1)) + call AD14_PackDiscState(RF, InData%xd(i1)) end do LB(1:1) = lbound(InData%z, kind=B8Ki) UB(1:1) = ubound(InData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call AD14_PackConstrState(Buf, InData%z(i1)) + call AD14_PackConstrState(RF, InData%z(i1)) end do LB(1:1) = lbound(InData%OtherSt, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call AD14_PackOtherState(Buf, InData%OtherSt(i1)) + call AD14_PackOtherState(RF, InData%OtherSt(i1)) end do - call AD14_PackParam(Buf, InData%p) - call AD14_PackInput(Buf, InData%u) - call AD14_PackOutput(Buf, InData%y) - call AD14_PackMisc(Buf, InData%m) - call RegPack(Buf, allocated(InData%Input)) + call AD14_PackParam(RF, InData%p) + call AD14_PackInput(RF, InData%u) + call AD14_PackOutput(RF, InData%y) + call AD14_PackMisc(RF, InData%m) + call RegPack(RF, allocated(InData%Input)) if (allocated(InData%Input)) then - call RegPackBounds(Buf, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) LB(1:1) = lbound(InData%Input, kind=B8Ki) UB(1:1) = ubound(InData%Input, kind=B8Ki) do i1 = LB(1), UB(1) - call AD14_PackInput(Buf, InData%Input(i1)) + call AD14_PackInput(RF, InData%Input(i1)) end do end if - call RegPack(Buf, allocated(InData%InputTimes)) - if (allocated(InData%InputTimes)) then - call RegPackBounds(Buf, 1, lbound(InData%InputTimes, kind=B8Ki), ubound(InData%InputTimes, kind=B8Ki)) - call RegPack(Buf, InData%InputTimes) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%InputTimes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackAeroDyn14_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackAeroDyn14_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(AeroDyn14_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackAeroDyn14_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return LB(1:1) = lbound(OutData%x, kind=B8Ki) UB(1:1) = ubound(OutData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call AD14_UnpackContState(Buf, OutData%x(i1)) ! x + call AD14_UnpackContState(RF, OutData%x(i1)) ! x end do LB(1:1) = lbound(OutData%xd, kind=B8Ki) UB(1:1) = ubound(OutData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call AD14_UnpackDiscState(Buf, OutData%xd(i1)) ! xd + call AD14_UnpackDiscState(RF, OutData%xd(i1)) ! xd end do LB(1:1) = lbound(OutData%z, kind=B8Ki) UB(1:1) = ubound(OutData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call AD14_UnpackConstrState(Buf, OutData%z(i1)) ! z + call AD14_UnpackConstrState(RF, OutData%z(i1)) ! z end do LB(1:1) = lbound(OutData%OtherSt, kind=B8Ki) UB(1:1) = ubound(OutData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call AD14_UnpackOtherState(Buf, OutData%OtherSt(i1)) ! OtherSt + call AD14_UnpackOtherState(RF, OutData%OtherSt(i1)) ! OtherSt end do - call AD14_UnpackParam(Buf, OutData%p) ! p - call AD14_UnpackInput(Buf, OutData%u) ! u - call AD14_UnpackOutput(Buf, OutData%y) ! y - call AD14_UnpackMisc(Buf, OutData%m) ! m + call AD14_UnpackParam(RF, OutData%p) ! p + call AD14_UnpackInput(RF, OutData%u) ! u + call AD14_UnpackOutput(RF, OutData%y) ! y + call AD14_UnpackMisc(RF, OutData%m) ! m if (allocated(OutData%Input)) deallocate(OutData%Input) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Input(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD14_UnpackInput(Buf, OutData%Input(i1)) ! Input + call AD14_UnpackInput(RF, OutData%Input(i1)) ! Input end do end if - if (allocated(OutData%InputTimes)) deallocate(OutData%InputTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InputTimes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InputTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%InputTimes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyAeroDyn_Data(SrcAeroDyn_DataData, DstAeroDyn_DataData, CtrlCode, ErrStat, ErrMsg) @@ -9313,142 +8021,121 @@ subroutine FAST_DestroyAeroDyn_Data(AeroDyn_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackAeroDyn_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackAeroDyn_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(AeroDyn_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackAeroDyn_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return LB(1:1) = lbound(InData%x, kind=B8Ki) UB(1:1) = ubound(InData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackContState(Buf, InData%x(i1)) + call AD_PackContState(RF, InData%x(i1)) end do LB(1:1) = lbound(InData%xd, kind=B8Ki) UB(1:1) = ubound(InData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackDiscState(Buf, InData%xd(i1)) + call AD_PackDiscState(RF, InData%xd(i1)) end do LB(1:1) = lbound(InData%z, kind=B8Ki) UB(1:1) = ubound(InData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackConstrState(Buf, InData%z(i1)) + call AD_PackConstrState(RF, InData%z(i1)) end do LB(1:1) = lbound(InData%OtherSt, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackOtherState(Buf, InData%OtherSt(i1)) + call AD_PackOtherState(RF, InData%OtherSt(i1)) end do - call AD_PackParam(Buf, InData%p) - call AD_PackInput(Buf, InData%u) - call AD_PackOutput(Buf, InData%y) - call AD_PackMisc(Buf, InData%m) - call RegPack(Buf, allocated(InData%Output)) + call AD_PackParam(RF, InData%p) + call AD_PackInput(RF, InData%u) + call AD_PackOutput(RF, InData%y) + call AD_PackMisc(RF, InData%m) + call RegPack(RF, allocated(InData%Output)) if (allocated(InData%Output)) then - call RegPackBounds(Buf, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) LB(1:1) = lbound(InData%Output, kind=B8Ki) UB(1:1) = ubound(InData%Output, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackOutput(Buf, InData%Output(i1)) + call AD_PackOutput(RF, InData%Output(i1)) end do end if - call AD_PackOutput(Buf, InData%y_interp) - call RegPack(Buf, allocated(InData%Input)) + call AD_PackOutput(RF, InData%y_interp) + call RegPack(RF, allocated(InData%Input)) if (allocated(InData%Input)) then - call RegPackBounds(Buf, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) LB(1:1) = lbound(InData%Input, kind=B8Ki) UB(1:1) = ubound(InData%Input, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_PackInput(Buf, InData%Input(i1)) + call AD_PackInput(RF, InData%Input(i1)) end do end if - call RegPack(Buf, allocated(InData%InputTimes)) - if (allocated(InData%InputTimes)) then - call RegPackBounds(Buf, 1, lbound(InData%InputTimes, kind=B8Ki), ubound(InData%InputTimes, kind=B8Ki)) - call RegPack(Buf, InData%InputTimes) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%InputTimes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackAeroDyn_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackAeroDyn_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(AeroDyn_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackAeroDyn_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return LB(1:1) = lbound(OutData%x, kind=B8Ki) UB(1:1) = ubound(OutData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_UnpackContState(Buf, OutData%x(i1)) ! x + call AD_UnpackContState(RF, OutData%x(i1)) ! x end do LB(1:1) = lbound(OutData%xd, kind=B8Ki) UB(1:1) = ubound(OutData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_UnpackDiscState(Buf, OutData%xd(i1)) ! xd + call AD_UnpackDiscState(RF, OutData%xd(i1)) ! xd end do LB(1:1) = lbound(OutData%z, kind=B8Ki) UB(1:1) = ubound(OutData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_UnpackConstrState(Buf, OutData%z(i1)) ! z + call AD_UnpackConstrState(RF, OutData%z(i1)) ! z end do LB(1:1) = lbound(OutData%OtherSt, kind=B8Ki) UB(1:1) = ubound(OutData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call AD_UnpackOtherState(Buf, OutData%OtherSt(i1)) ! OtherSt + call AD_UnpackOtherState(RF, OutData%OtherSt(i1)) ! OtherSt end do - call AD_UnpackParam(Buf, OutData%p) ! p - call AD_UnpackInput(Buf, OutData%u) ! u - call AD_UnpackOutput(Buf, OutData%y) ! y - call AD_UnpackMisc(Buf, OutData%m) ! m + call AD_UnpackParam(RF, OutData%p) ! p + call AD_UnpackInput(RF, OutData%u) ! u + call AD_UnpackOutput(RF, OutData%y) ! y + call AD_UnpackMisc(RF, OutData%m) ! m if (allocated(OutData%Output)) deallocate(OutData%Output) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Output(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackOutput(Buf, OutData%Output(i1)) ! Output + call AD_UnpackOutput(RF, OutData%Output(i1)) ! Output end do end if - call AD_UnpackOutput(Buf, OutData%y_interp) ! y_interp + call AD_UnpackOutput(RF, OutData%y_interp) ! y_interp if (allocated(OutData%Input)) deallocate(OutData%Input) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Input(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call AD_UnpackInput(Buf, OutData%Input(i1)) ! Input + call AD_UnpackInput(RF, OutData%Input(i1)) ! Input end do end if - if (allocated(OutData%InputTimes)) deallocate(OutData%InputTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InputTimes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InputTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%InputTimes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyInflowWind_Data(SrcInflowWind_DataData, DstInflowWind_DataData, CtrlCode, ErrStat, ErrMsg) @@ -9621,142 +8308,121 @@ subroutine FAST_DestroyInflowWind_Data(InflowWind_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackInflowWind_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackInflowWind_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(InflowWind_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackInflowWind_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return LB(1:1) = lbound(InData%x, kind=B8Ki) UB(1:1) = ubound(InData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_PackContState(Buf, InData%x(i1)) + call InflowWind_PackContState(RF, InData%x(i1)) end do LB(1:1) = lbound(InData%xd, kind=B8Ki) UB(1:1) = ubound(InData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_PackDiscState(Buf, InData%xd(i1)) + call InflowWind_PackDiscState(RF, InData%xd(i1)) end do LB(1:1) = lbound(InData%z, kind=B8Ki) UB(1:1) = ubound(InData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_PackConstrState(Buf, InData%z(i1)) + call InflowWind_PackConstrState(RF, InData%z(i1)) end do LB(1:1) = lbound(InData%OtherSt, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_PackOtherState(Buf, InData%OtherSt(i1)) + call InflowWind_PackOtherState(RF, InData%OtherSt(i1)) end do - call InflowWind_PackParam(Buf, InData%p) - call InflowWind_PackInput(Buf, InData%u) - call InflowWind_PackOutput(Buf, InData%y) - call InflowWind_PackMisc(Buf, InData%m) - call RegPack(Buf, allocated(InData%Output)) + call InflowWind_PackParam(RF, InData%p) + call InflowWind_PackInput(RF, InData%u) + call InflowWind_PackOutput(RF, InData%y) + call InflowWind_PackMisc(RF, InData%m) + call RegPack(RF, allocated(InData%Output)) if (allocated(InData%Output)) then - call RegPackBounds(Buf, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) LB(1:1) = lbound(InData%Output, kind=B8Ki) UB(1:1) = ubound(InData%Output, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_PackOutput(Buf, InData%Output(i1)) + call InflowWind_PackOutput(RF, InData%Output(i1)) end do end if - call InflowWind_PackOutput(Buf, InData%y_interp) - call RegPack(Buf, allocated(InData%Input)) + call InflowWind_PackOutput(RF, InData%y_interp) + call RegPack(RF, allocated(InData%Input)) if (allocated(InData%Input)) then - call RegPackBounds(Buf, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) LB(1:1) = lbound(InData%Input, kind=B8Ki) UB(1:1) = ubound(InData%Input, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_PackInput(Buf, InData%Input(i1)) + call InflowWind_PackInput(RF, InData%Input(i1)) end do end if - call RegPack(Buf, allocated(InData%InputTimes)) - if (allocated(InData%InputTimes)) then - call RegPackBounds(Buf, 1, lbound(InData%InputTimes, kind=B8Ki), ubound(InData%InputTimes, kind=B8Ki)) - call RegPack(Buf, InData%InputTimes) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%InputTimes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackInflowWind_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackInflowWind_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(InflowWind_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackInflowWind_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return LB(1:1) = lbound(OutData%x, kind=B8Ki) UB(1:1) = ubound(OutData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_UnpackContState(Buf, OutData%x(i1)) ! x + call InflowWind_UnpackContState(RF, OutData%x(i1)) ! x end do LB(1:1) = lbound(OutData%xd, kind=B8Ki) UB(1:1) = ubound(OutData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_UnpackDiscState(Buf, OutData%xd(i1)) ! xd + call InflowWind_UnpackDiscState(RF, OutData%xd(i1)) ! xd end do LB(1:1) = lbound(OutData%z, kind=B8Ki) UB(1:1) = ubound(OutData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_UnpackConstrState(Buf, OutData%z(i1)) ! z + call InflowWind_UnpackConstrState(RF, OutData%z(i1)) ! z end do LB(1:1) = lbound(OutData%OtherSt, kind=B8Ki) UB(1:1) = ubound(OutData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call InflowWind_UnpackOtherState(Buf, OutData%OtherSt(i1)) ! OtherSt + call InflowWind_UnpackOtherState(RF, OutData%OtherSt(i1)) ! OtherSt end do - call InflowWind_UnpackParam(Buf, OutData%p) ! p - call InflowWind_UnpackInput(Buf, OutData%u) ! u - call InflowWind_UnpackOutput(Buf, OutData%y) ! y - call InflowWind_UnpackMisc(Buf, OutData%m) ! m + call InflowWind_UnpackParam(RF, OutData%p) ! p + call InflowWind_UnpackInput(RF, OutData%u) ! u + call InflowWind_UnpackOutput(RF, OutData%y) ! y + call InflowWind_UnpackMisc(RF, OutData%m) ! m if (allocated(OutData%Output)) deallocate(OutData%Output) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Output(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call InflowWind_UnpackOutput(Buf, OutData%Output(i1)) ! Output + call InflowWind_UnpackOutput(RF, OutData%Output(i1)) ! Output end do end if - call InflowWind_UnpackOutput(Buf, OutData%y_interp) ! y_interp + call InflowWind_UnpackOutput(RF, OutData%y_interp) ! y_interp if (allocated(OutData%Input)) deallocate(OutData%Input) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Input(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call InflowWind_UnpackInput(Buf, OutData%Input(i1)) ! Input + call InflowWind_UnpackInput(RF, OutData%Input(i1)) ! Input end do end if - if (allocated(OutData%InputTimes)) deallocate(OutData%InputTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InputTimes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InputTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%InputTimes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyExternalInflow_Data(SrcExternalInflow_DataData, DstExternalInflow_DataData, CtrlCode, ErrStat, ErrMsg) @@ -9803,27 +8469,27 @@ subroutine FAST_DestroyExternalInflow_Data(ExternalInflow_DataData, ErrStat, Err call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine FAST_PackExternalInflow_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackExternalInflow_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExternalInflow_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackExternalInflow_Data' - if (Buf%ErrStat >= AbortErrLev) return - call ExtInfw_PackInput(Buf, InData%u) - call ExtInfw_PackOutput(Buf, InData%y) - call ExtInfw_PackParam(Buf, InData%p) - call ExtInfw_PackMisc(Buf, InData%m) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call ExtInfw_PackInput(RF, InData%u) + call ExtInfw_PackOutput(RF, InData%y) + call ExtInfw_PackParam(RF, InData%p) + call ExtInfw_PackMisc(RF, InData%m) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackExternalInflow_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackExternalInflow_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExternalInflow_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackExternalInflow_Data' - if (Buf%ErrStat /= ErrID_None) return - call ExtInfw_UnpackInput(Buf, OutData%u) ! u - call ExtInfw_UnpackOutput(Buf, OutData%y) ! y - call ExtInfw_UnpackParam(Buf, OutData%p) ! p - call ExtInfw_UnpackMisc(Buf, OutData%m) ! m + if (RF%ErrStat /= ErrID_None) return + call ExtInfw_UnpackInput(RF, OutData%u) ! u + call ExtInfw_UnpackOutput(RF, OutData%y) ! y + call ExtInfw_UnpackParam(RF, OutData%p) ! p + call ExtInfw_UnpackMisc(RF, OutData%m) ! m end subroutine subroutine FAST_CopySCDataEx_Data(SrcSCDataEx_DataData, DstSCDataEx_DataData, CtrlCode, ErrStat, ErrMsg) @@ -9865,25 +8531,25 @@ subroutine FAST_DestroySCDataEx_Data(SCDataEx_DataData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine FAST_PackSCDataEx_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackSCDataEx_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(SCDataEx_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackSCDataEx_Data' - if (Buf%ErrStat >= AbortErrLev) return - call SC_DX_PackInput(Buf, InData%u) - call SC_DX_PackOutput(Buf, InData%y) - call SC_DX_PackParam(Buf, InData%p) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call SC_DX_PackInput(RF, InData%u) + call SC_DX_PackOutput(RF, InData%y) + call SC_DX_PackParam(RF, InData%p) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackSCDataEx_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackSCDataEx_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(SCDataEx_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackSCDataEx_Data' - if (Buf%ErrStat /= ErrID_None) return - call SC_DX_UnpackInput(Buf, OutData%u) ! u - call SC_DX_UnpackOutput(Buf, OutData%y) ! y - call SC_DX_UnpackParam(Buf, OutData%p) ! p + if (RF%ErrStat /= ErrID_None) return + call SC_DX_UnpackInput(RF, OutData%u) ! u + call SC_DX_UnpackOutput(RF, OutData%y) ! y + call SC_DX_UnpackParam(RF, OutData%p) ! p end subroutine subroutine FAST_CopySubDyn_Data(SrcSubDyn_DataData, DstSubDyn_DataData, CtrlCode, ErrStat, ErrMsg) @@ -10056,142 +8722,121 @@ subroutine FAST_DestroySubDyn_Data(SubDyn_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackSubDyn_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackSubDyn_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(SubDyn_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackSubDyn_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return LB(1:1) = lbound(InData%x, kind=B8Ki) UB(1:1) = ubound(InData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackContState(Buf, InData%x(i1)) + call SD_PackContState(RF, InData%x(i1)) end do LB(1:1) = lbound(InData%xd, kind=B8Ki) UB(1:1) = ubound(InData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackDiscState(Buf, InData%xd(i1)) + call SD_PackDiscState(RF, InData%xd(i1)) end do LB(1:1) = lbound(InData%z, kind=B8Ki) UB(1:1) = ubound(InData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackConstrState(Buf, InData%z(i1)) + call SD_PackConstrState(RF, InData%z(i1)) end do LB(1:1) = lbound(InData%OtherSt, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackOtherState(Buf, InData%OtherSt(i1)) + call SD_PackOtherState(RF, InData%OtherSt(i1)) end do - call SD_PackParam(Buf, InData%p) - call SD_PackInput(Buf, InData%u) - call SD_PackOutput(Buf, InData%y) - call SD_PackMisc(Buf, InData%m) - call RegPack(Buf, allocated(InData%Input)) + call SD_PackParam(RF, InData%p) + call SD_PackInput(RF, InData%u) + call SD_PackOutput(RF, InData%y) + call SD_PackMisc(RF, InData%m) + call RegPack(RF, allocated(InData%Input)) if (allocated(InData%Input)) then - call RegPackBounds(Buf, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) LB(1:1) = lbound(InData%Input, kind=B8Ki) UB(1:1) = ubound(InData%Input, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackInput(Buf, InData%Input(i1)) + call SD_PackInput(RF, InData%Input(i1)) end do end if - call RegPack(Buf, allocated(InData%Output)) + call RegPack(RF, allocated(InData%Output)) if (allocated(InData%Output)) then - call RegPackBounds(Buf, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) LB(1:1) = lbound(InData%Output, kind=B8Ki) UB(1:1) = ubound(InData%Output, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackOutput(Buf, InData%Output(i1)) + call SD_PackOutput(RF, InData%Output(i1)) end do end if - call SD_PackOutput(Buf, InData%y_interp) - call RegPack(Buf, allocated(InData%InputTimes)) - if (allocated(InData%InputTimes)) then - call RegPackBounds(Buf, 1, lbound(InData%InputTimes, kind=B8Ki), ubound(InData%InputTimes, kind=B8Ki)) - call RegPack(Buf, InData%InputTimes) - end if - if (RegCheckErr(Buf, RoutineName)) return + call SD_PackOutput(RF, InData%y_interp) + call RegPackAlloc(RF, InData%InputTimes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackSubDyn_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackSubDyn_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(SubDyn_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackSubDyn_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return LB(1:1) = lbound(OutData%x, kind=B8Ki) UB(1:1) = ubound(OutData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_UnpackContState(Buf, OutData%x(i1)) ! x + call SD_UnpackContState(RF, OutData%x(i1)) ! x end do LB(1:1) = lbound(OutData%xd, kind=B8Ki) UB(1:1) = ubound(OutData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_UnpackDiscState(Buf, OutData%xd(i1)) ! xd + call SD_UnpackDiscState(RF, OutData%xd(i1)) ! xd end do LB(1:1) = lbound(OutData%z, kind=B8Ki) UB(1:1) = ubound(OutData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_UnpackConstrState(Buf, OutData%z(i1)) ! z + call SD_UnpackConstrState(RF, OutData%z(i1)) ! z end do LB(1:1) = lbound(OutData%OtherSt, kind=B8Ki) UB(1:1) = ubound(OutData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_UnpackOtherState(Buf, OutData%OtherSt(i1)) ! OtherSt + call SD_UnpackOtherState(RF, OutData%OtherSt(i1)) ! OtherSt end do - call SD_UnpackParam(Buf, OutData%p) ! p - call SD_UnpackInput(Buf, OutData%u) ! u - call SD_UnpackOutput(Buf, OutData%y) ! y - call SD_UnpackMisc(Buf, OutData%m) ! m + call SD_UnpackParam(RF, OutData%p) ! p + call SD_UnpackInput(RF, OutData%u) ! u + call SD_UnpackOutput(RF, OutData%y) ! y + call SD_UnpackMisc(RF, OutData%m) ! m if (allocated(OutData%Input)) deallocate(OutData%Input) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Input(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SD_UnpackInput(Buf, OutData%Input(i1)) ! Input + call SD_UnpackInput(RF, OutData%Input(i1)) ! Input end do end if if (allocated(OutData%Output)) deallocate(OutData%Output) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Output(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SD_UnpackOutput(Buf, OutData%Output(i1)) ! Output + call SD_UnpackOutput(RF, OutData%Output(i1)) ! Output end do end if - call SD_UnpackOutput(Buf, OutData%y_interp) ! y_interp - if (allocated(OutData%InputTimes)) deallocate(OutData%InputTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InputTimes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InputTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if + call SD_UnpackOutput(RF, OutData%y_interp) ! y_interp + call RegUnpackAlloc(RF, OutData%InputTimes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyExtPtfm_Data(SrcExtPtfm_DataData, DstExtPtfm_DataData, CtrlCode, ErrStat, ErrMsg) @@ -10334,116 +8979,97 @@ subroutine FAST_DestroyExtPtfm_Data(ExtPtfm_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackExtPtfm_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackExtPtfm_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(ExtPtfm_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackExtPtfm_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return LB(1:1) = lbound(InData%x, kind=B8Ki) UB(1:1) = ubound(InData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call ExtPtfm_PackContState(Buf, InData%x(i1)) + call ExtPtfm_PackContState(RF, InData%x(i1)) end do LB(1:1) = lbound(InData%xd, kind=B8Ki) UB(1:1) = ubound(InData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call ExtPtfm_PackDiscState(Buf, InData%xd(i1)) + call ExtPtfm_PackDiscState(RF, InData%xd(i1)) end do LB(1:1) = lbound(InData%z, kind=B8Ki) UB(1:1) = ubound(InData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call ExtPtfm_PackConstrState(Buf, InData%z(i1)) + call ExtPtfm_PackConstrState(RF, InData%z(i1)) end do LB(1:1) = lbound(InData%OtherSt, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call ExtPtfm_PackOtherState(Buf, InData%OtherSt(i1)) + call ExtPtfm_PackOtherState(RF, InData%OtherSt(i1)) end do - call ExtPtfm_PackParam(Buf, InData%p) - call ExtPtfm_PackInput(Buf, InData%u) - call ExtPtfm_PackOutput(Buf, InData%y) - call ExtPtfm_PackMisc(Buf, InData%m) - call RegPack(Buf, allocated(InData%Input)) + call ExtPtfm_PackParam(RF, InData%p) + call ExtPtfm_PackInput(RF, InData%u) + call ExtPtfm_PackOutput(RF, InData%y) + call ExtPtfm_PackMisc(RF, InData%m) + call RegPack(RF, allocated(InData%Input)) if (allocated(InData%Input)) then - call RegPackBounds(Buf, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) LB(1:1) = lbound(InData%Input, kind=B8Ki) UB(1:1) = ubound(InData%Input, kind=B8Ki) do i1 = LB(1), UB(1) - call ExtPtfm_PackInput(Buf, InData%Input(i1)) + call ExtPtfm_PackInput(RF, InData%Input(i1)) end do end if - call RegPack(Buf, allocated(InData%InputTimes)) - if (allocated(InData%InputTimes)) then - call RegPackBounds(Buf, 1, lbound(InData%InputTimes, kind=B8Ki), ubound(InData%InputTimes, kind=B8Ki)) - call RegPack(Buf, InData%InputTimes) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%InputTimes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackExtPtfm_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackExtPtfm_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(ExtPtfm_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackExtPtfm_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return LB(1:1) = lbound(OutData%x, kind=B8Ki) UB(1:1) = ubound(OutData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call ExtPtfm_UnpackContState(Buf, OutData%x(i1)) ! x + call ExtPtfm_UnpackContState(RF, OutData%x(i1)) ! x end do LB(1:1) = lbound(OutData%xd, kind=B8Ki) UB(1:1) = ubound(OutData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call ExtPtfm_UnpackDiscState(Buf, OutData%xd(i1)) ! xd + call ExtPtfm_UnpackDiscState(RF, OutData%xd(i1)) ! xd end do LB(1:1) = lbound(OutData%z, kind=B8Ki) UB(1:1) = ubound(OutData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call ExtPtfm_UnpackConstrState(Buf, OutData%z(i1)) ! z + call ExtPtfm_UnpackConstrState(RF, OutData%z(i1)) ! z end do LB(1:1) = lbound(OutData%OtherSt, kind=B8Ki) UB(1:1) = ubound(OutData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call ExtPtfm_UnpackOtherState(Buf, OutData%OtherSt(i1)) ! OtherSt + call ExtPtfm_UnpackOtherState(RF, OutData%OtherSt(i1)) ! OtherSt end do - call ExtPtfm_UnpackParam(Buf, OutData%p) ! p - call ExtPtfm_UnpackInput(Buf, OutData%u) ! u - call ExtPtfm_UnpackOutput(Buf, OutData%y) ! y - call ExtPtfm_UnpackMisc(Buf, OutData%m) ! m + call ExtPtfm_UnpackParam(RF, OutData%p) ! p + call ExtPtfm_UnpackInput(RF, OutData%u) ! u + call ExtPtfm_UnpackOutput(RF, OutData%y) ! y + call ExtPtfm_UnpackMisc(RF, OutData%m) ! m if (allocated(OutData%Input)) deallocate(OutData%Input) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Input(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call ExtPtfm_UnpackInput(Buf, OutData%Input(i1)) ! Input + call ExtPtfm_UnpackInput(RF, OutData%Input(i1)) ! Input end do end if - if (allocated(OutData%InputTimes)) deallocate(OutData%InputTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InputTimes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InputTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%InputTimes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopySeaState_Data(SrcSeaState_DataData, DstSeaState_DataData, CtrlCode, ErrStat, ErrMsg) @@ -10616,142 +9242,121 @@ subroutine FAST_DestroySeaState_Data(SeaState_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackSeaState_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackSeaState_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(SeaState_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackSeaState_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return LB(1:1) = lbound(InData%x, kind=B8Ki) UB(1:1) = ubound(InData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call SeaSt_PackContState(Buf, InData%x(i1)) + call SeaSt_PackContState(RF, InData%x(i1)) end do LB(1:1) = lbound(InData%xd, kind=B8Ki) UB(1:1) = ubound(InData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call SeaSt_PackDiscState(Buf, InData%xd(i1)) + call SeaSt_PackDiscState(RF, InData%xd(i1)) end do LB(1:1) = lbound(InData%z, kind=B8Ki) UB(1:1) = ubound(InData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call SeaSt_PackConstrState(Buf, InData%z(i1)) + call SeaSt_PackConstrState(RF, InData%z(i1)) end do LB(1:1) = lbound(InData%OtherSt, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call SeaSt_PackOtherState(Buf, InData%OtherSt(i1)) + call SeaSt_PackOtherState(RF, InData%OtherSt(i1)) end do - call SeaSt_PackParam(Buf, InData%p) - call SeaSt_PackInput(Buf, InData%u) - call SeaSt_PackOutput(Buf, InData%y) - call SeaSt_PackMisc(Buf, InData%m) - call RegPack(Buf, allocated(InData%Input)) + call SeaSt_PackParam(RF, InData%p) + call SeaSt_PackInput(RF, InData%u) + call SeaSt_PackOutput(RF, InData%y) + call SeaSt_PackMisc(RF, InData%m) + call RegPack(RF, allocated(InData%Input)) if (allocated(InData%Input)) then - call RegPackBounds(Buf, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) LB(1:1) = lbound(InData%Input, kind=B8Ki) UB(1:1) = ubound(InData%Input, kind=B8Ki) do i1 = LB(1), UB(1) - call SeaSt_PackInput(Buf, InData%Input(i1)) + call SeaSt_PackInput(RF, InData%Input(i1)) end do end if - call RegPack(Buf, allocated(InData%Output)) + call RegPack(RF, allocated(InData%Output)) if (allocated(InData%Output)) then - call RegPackBounds(Buf, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) LB(1:1) = lbound(InData%Output, kind=B8Ki) UB(1:1) = ubound(InData%Output, kind=B8Ki) do i1 = LB(1), UB(1) - call SeaSt_PackOutput(Buf, InData%Output(i1)) + call SeaSt_PackOutput(RF, InData%Output(i1)) end do end if - call SeaSt_PackOutput(Buf, InData%y_interp) - call RegPack(Buf, allocated(InData%InputTimes)) - if (allocated(InData%InputTimes)) then - call RegPackBounds(Buf, 1, lbound(InData%InputTimes, kind=B8Ki), ubound(InData%InputTimes, kind=B8Ki)) - call RegPack(Buf, InData%InputTimes) - end if - if (RegCheckErr(Buf, RoutineName)) return + call SeaSt_PackOutput(RF, InData%y_interp) + call RegPackAlloc(RF, InData%InputTimes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackSeaState_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackSeaState_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(SeaState_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackSeaState_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return LB(1:1) = lbound(OutData%x, kind=B8Ki) UB(1:1) = ubound(OutData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call SeaSt_UnpackContState(Buf, OutData%x(i1)) ! x + call SeaSt_UnpackContState(RF, OutData%x(i1)) ! x end do LB(1:1) = lbound(OutData%xd, kind=B8Ki) UB(1:1) = ubound(OutData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call SeaSt_UnpackDiscState(Buf, OutData%xd(i1)) ! xd + call SeaSt_UnpackDiscState(RF, OutData%xd(i1)) ! xd end do LB(1:1) = lbound(OutData%z, kind=B8Ki) UB(1:1) = ubound(OutData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call SeaSt_UnpackConstrState(Buf, OutData%z(i1)) ! z + call SeaSt_UnpackConstrState(RF, OutData%z(i1)) ! z end do LB(1:1) = lbound(OutData%OtherSt, kind=B8Ki) UB(1:1) = ubound(OutData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call SeaSt_UnpackOtherState(Buf, OutData%OtherSt(i1)) ! OtherSt + call SeaSt_UnpackOtherState(RF, OutData%OtherSt(i1)) ! OtherSt end do - call SeaSt_UnpackParam(Buf, OutData%p) ! p - call SeaSt_UnpackInput(Buf, OutData%u) ! u - call SeaSt_UnpackOutput(Buf, OutData%y) ! y - call SeaSt_UnpackMisc(Buf, OutData%m) ! m + call SeaSt_UnpackParam(RF, OutData%p) ! p + call SeaSt_UnpackInput(RF, OutData%u) ! u + call SeaSt_UnpackOutput(RF, OutData%y) ! y + call SeaSt_UnpackMisc(RF, OutData%m) ! m if (allocated(OutData%Input)) deallocate(OutData%Input) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Input(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SeaSt_UnpackInput(Buf, OutData%Input(i1)) ! Input + call SeaSt_UnpackInput(RF, OutData%Input(i1)) ! Input end do end if if (allocated(OutData%Output)) deallocate(OutData%Output) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Output(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SeaSt_UnpackOutput(Buf, OutData%Output(i1)) ! Output + call SeaSt_UnpackOutput(RF, OutData%Output(i1)) ! Output end do end if - call SeaSt_UnpackOutput(Buf, OutData%y_interp) ! y_interp - if (allocated(OutData%InputTimes)) deallocate(OutData%InputTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InputTimes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InputTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if + call SeaSt_UnpackOutput(RF, OutData%y_interp) ! y_interp + call RegUnpackAlloc(RF, OutData%InputTimes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyHydroDyn_Data(SrcHydroDyn_DataData, DstHydroDyn_DataData, CtrlCode, ErrStat, ErrMsg) @@ -10924,142 +9529,121 @@ subroutine FAST_DestroyHydroDyn_Data(HydroDyn_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackHydroDyn_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackHydroDyn_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(HydroDyn_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackHydroDyn_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return LB(1:1) = lbound(InData%x, kind=B8Ki) UB(1:1) = ubound(InData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call HydroDyn_PackContState(Buf, InData%x(i1)) + call HydroDyn_PackContState(RF, InData%x(i1)) end do LB(1:1) = lbound(InData%xd, kind=B8Ki) UB(1:1) = ubound(InData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call HydroDyn_PackDiscState(Buf, InData%xd(i1)) + call HydroDyn_PackDiscState(RF, InData%xd(i1)) end do LB(1:1) = lbound(InData%z, kind=B8Ki) UB(1:1) = ubound(InData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call HydroDyn_PackConstrState(Buf, InData%z(i1)) + call HydroDyn_PackConstrState(RF, InData%z(i1)) end do LB(1:1) = lbound(InData%OtherSt, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call HydroDyn_PackOtherState(Buf, InData%OtherSt(i1)) + call HydroDyn_PackOtherState(RF, InData%OtherSt(i1)) end do - call HydroDyn_PackParam(Buf, InData%p) - call HydroDyn_PackInput(Buf, InData%u) - call HydroDyn_PackOutput(Buf, InData%y) - call HydroDyn_PackMisc(Buf, InData%m) - call RegPack(Buf, allocated(InData%Output)) + call HydroDyn_PackParam(RF, InData%p) + call HydroDyn_PackInput(RF, InData%u) + call HydroDyn_PackOutput(RF, InData%y) + call HydroDyn_PackMisc(RF, InData%m) + call RegPack(RF, allocated(InData%Output)) if (allocated(InData%Output)) then - call RegPackBounds(Buf, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) LB(1:1) = lbound(InData%Output, kind=B8Ki) UB(1:1) = ubound(InData%Output, kind=B8Ki) do i1 = LB(1), UB(1) - call HydroDyn_PackOutput(Buf, InData%Output(i1)) + call HydroDyn_PackOutput(RF, InData%Output(i1)) end do end if - call HydroDyn_PackOutput(Buf, InData%y_interp) - call RegPack(Buf, allocated(InData%Input)) + call HydroDyn_PackOutput(RF, InData%y_interp) + call RegPack(RF, allocated(InData%Input)) if (allocated(InData%Input)) then - call RegPackBounds(Buf, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) LB(1:1) = lbound(InData%Input, kind=B8Ki) UB(1:1) = ubound(InData%Input, kind=B8Ki) do i1 = LB(1), UB(1) - call HydroDyn_PackInput(Buf, InData%Input(i1)) + call HydroDyn_PackInput(RF, InData%Input(i1)) end do end if - call RegPack(Buf, allocated(InData%InputTimes)) - if (allocated(InData%InputTimes)) then - call RegPackBounds(Buf, 1, lbound(InData%InputTimes, kind=B8Ki), ubound(InData%InputTimes, kind=B8Ki)) - call RegPack(Buf, InData%InputTimes) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%InputTimes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackHydroDyn_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackHydroDyn_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(HydroDyn_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackHydroDyn_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return LB(1:1) = lbound(OutData%x, kind=B8Ki) UB(1:1) = ubound(OutData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call HydroDyn_UnpackContState(Buf, OutData%x(i1)) ! x + call HydroDyn_UnpackContState(RF, OutData%x(i1)) ! x end do LB(1:1) = lbound(OutData%xd, kind=B8Ki) UB(1:1) = ubound(OutData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call HydroDyn_UnpackDiscState(Buf, OutData%xd(i1)) ! xd + call HydroDyn_UnpackDiscState(RF, OutData%xd(i1)) ! xd end do LB(1:1) = lbound(OutData%z, kind=B8Ki) UB(1:1) = ubound(OutData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call HydroDyn_UnpackConstrState(Buf, OutData%z(i1)) ! z + call HydroDyn_UnpackConstrState(RF, OutData%z(i1)) ! z end do LB(1:1) = lbound(OutData%OtherSt, kind=B8Ki) UB(1:1) = ubound(OutData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call HydroDyn_UnpackOtherState(Buf, OutData%OtherSt(i1)) ! OtherSt + call HydroDyn_UnpackOtherState(RF, OutData%OtherSt(i1)) ! OtherSt end do - call HydroDyn_UnpackParam(Buf, OutData%p) ! p - call HydroDyn_UnpackInput(Buf, OutData%u) ! u - call HydroDyn_UnpackOutput(Buf, OutData%y) ! y - call HydroDyn_UnpackMisc(Buf, OutData%m) ! m + call HydroDyn_UnpackParam(RF, OutData%p) ! p + call HydroDyn_UnpackInput(RF, OutData%u) ! u + call HydroDyn_UnpackOutput(RF, OutData%y) ! y + call HydroDyn_UnpackMisc(RF, OutData%m) ! m if (allocated(OutData%Output)) deallocate(OutData%Output) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Output(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call HydroDyn_UnpackOutput(Buf, OutData%Output(i1)) ! Output + call HydroDyn_UnpackOutput(RF, OutData%Output(i1)) ! Output end do end if - call HydroDyn_UnpackOutput(Buf, OutData%y_interp) ! y_interp + call HydroDyn_UnpackOutput(RF, OutData%y_interp) ! y_interp if (allocated(OutData%Input)) deallocate(OutData%Input) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Input(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call HydroDyn_UnpackInput(Buf, OutData%Input(i1)) ! Input + call HydroDyn_UnpackInput(RF, OutData%Input(i1)) ! Input end do end if - if (allocated(OutData%InputTimes)) deallocate(OutData%InputTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InputTimes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InputTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%InputTimes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyIceFloe_Data(SrcIceFloe_DataData, DstIceFloe_DataData, CtrlCode, ErrStat, ErrMsg) @@ -11202,116 +9786,97 @@ subroutine FAST_DestroyIceFloe_Data(IceFloe_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackIceFloe_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackIceFloe_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(IceFloe_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackIceFloe_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return LB(1:1) = lbound(InData%x, kind=B8Ki) UB(1:1) = ubound(InData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call IceFloe_PackContState(Buf, InData%x(i1)) + call IceFloe_PackContState(RF, InData%x(i1)) end do LB(1:1) = lbound(InData%xd, kind=B8Ki) UB(1:1) = ubound(InData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call IceFloe_PackDiscState(Buf, InData%xd(i1)) + call IceFloe_PackDiscState(RF, InData%xd(i1)) end do LB(1:1) = lbound(InData%z, kind=B8Ki) UB(1:1) = ubound(InData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call IceFloe_PackConstrState(Buf, InData%z(i1)) + call IceFloe_PackConstrState(RF, InData%z(i1)) end do LB(1:1) = lbound(InData%OtherSt, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call IceFloe_PackOtherState(Buf, InData%OtherSt(i1)) + call IceFloe_PackOtherState(RF, InData%OtherSt(i1)) end do - call IceFloe_PackParam(Buf, InData%p) - call IceFloe_PackInput(Buf, InData%u) - call IceFloe_PackOutput(Buf, InData%y) - call IceFloe_PackMisc(Buf, InData%m) - call RegPack(Buf, allocated(InData%Input)) + call IceFloe_PackParam(RF, InData%p) + call IceFloe_PackInput(RF, InData%u) + call IceFloe_PackOutput(RF, InData%y) + call IceFloe_PackMisc(RF, InData%m) + call RegPack(RF, allocated(InData%Input)) if (allocated(InData%Input)) then - call RegPackBounds(Buf, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) LB(1:1) = lbound(InData%Input, kind=B8Ki) UB(1:1) = ubound(InData%Input, kind=B8Ki) do i1 = LB(1), UB(1) - call IceFloe_PackInput(Buf, InData%Input(i1)) + call IceFloe_PackInput(RF, InData%Input(i1)) end do end if - call RegPack(Buf, allocated(InData%InputTimes)) - if (allocated(InData%InputTimes)) then - call RegPackBounds(Buf, 1, lbound(InData%InputTimes, kind=B8Ki), ubound(InData%InputTimes, kind=B8Ki)) - call RegPack(Buf, InData%InputTimes) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%InputTimes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackIceFloe_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackIceFloe_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(IceFloe_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackIceFloe_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return LB(1:1) = lbound(OutData%x, kind=B8Ki) UB(1:1) = ubound(OutData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call IceFloe_UnpackContState(Buf, OutData%x(i1)) ! x + call IceFloe_UnpackContState(RF, OutData%x(i1)) ! x end do LB(1:1) = lbound(OutData%xd, kind=B8Ki) UB(1:1) = ubound(OutData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call IceFloe_UnpackDiscState(Buf, OutData%xd(i1)) ! xd + call IceFloe_UnpackDiscState(RF, OutData%xd(i1)) ! xd end do LB(1:1) = lbound(OutData%z, kind=B8Ki) UB(1:1) = ubound(OutData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call IceFloe_UnpackConstrState(Buf, OutData%z(i1)) ! z + call IceFloe_UnpackConstrState(RF, OutData%z(i1)) ! z end do LB(1:1) = lbound(OutData%OtherSt, kind=B8Ki) UB(1:1) = ubound(OutData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call IceFloe_UnpackOtherState(Buf, OutData%OtherSt(i1)) ! OtherSt + call IceFloe_UnpackOtherState(RF, OutData%OtherSt(i1)) ! OtherSt end do - call IceFloe_UnpackParam(Buf, OutData%p) ! p - call IceFloe_UnpackInput(Buf, OutData%u) ! u - call IceFloe_UnpackOutput(Buf, OutData%y) ! y - call IceFloe_UnpackMisc(Buf, OutData%m) ! m + call IceFloe_UnpackParam(RF, OutData%p) ! p + call IceFloe_UnpackInput(RF, OutData%u) ! u + call IceFloe_UnpackOutput(RF, OutData%y) ! y + call IceFloe_UnpackMisc(RF, OutData%m) ! m if (allocated(OutData%Input)) deallocate(OutData%Input) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Input(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call IceFloe_UnpackInput(Buf, OutData%Input(i1)) ! Input + call IceFloe_UnpackInput(RF, OutData%Input(i1)) ! Input end do end if - if (allocated(OutData%InputTimes)) deallocate(OutData%InputTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InputTimes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InputTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%InputTimes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyMAP_Data(SrcMAP_DataData, DstMAP_DataData, CtrlCode, ErrStat, ErrMsg) @@ -11476,134 +10041,113 @@ subroutine FAST_DestroyMAP_Data(MAP_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackMAP_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackMAP_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(MAP_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackMAP_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return LB(1:1) = lbound(InData%x, kind=B8Ki) UB(1:1) = ubound(InData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call MAP_PackContState(Buf, InData%x(i1)) + call MAP_PackContState(RF, InData%x(i1)) end do LB(1:1) = lbound(InData%xd, kind=B8Ki) UB(1:1) = ubound(InData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call MAP_PackDiscState(Buf, InData%xd(i1)) + call MAP_PackDiscState(RF, InData%xd(i1)) end do LB(1:1) = lbound(InData%z, kind=B8Ki) UB(1:1) = ubound(InData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call MAP_PackConstrState(Buf, InData%z(i1)) + call MAP_PackConstrState(RF, InData%z(i1)) end do - call MAP_PackOtherState(Buf, InData%OtherSt) - call MAP_PackParam(Buf, InData%p) - call MAP_PackInput(Buf, InData%u) - call MAP_PackOutput(Buf, InData%y) - call MAP_PackOtherState(Buf, InData%OtherSt_old) - call RegPack(Buf, allocated(InData%Output)) + call MAP_PackOtherState(RF, InData%OtherSt) + call MAP_PackParam(RF, InData%p) + call MAP_PackInput(RF, InData%u) + call MAP_PackOutput(RF, InData%y) + call MAP_PackOtherState(RF, InData%OtherSt_old) + call RegPack(RF, allocated(InData%Output)) if (allocated(InData%Output)) then - call RegPackBounds(Buf, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) LB(1:1) = lbound(InData%Output, kind=B8Ki) UB(1:1) = ubound(InData%Output, kind=B8Ki) do i1 = LB(1), UB(1) - call MAP_PackOutput(Buf, InData%Output(i1)) + call MAP_PackOutput(RF, InData%Output(i1)) end do end if - call MAP_PackOutput(Buf, InData%y_interp) - call RegPack(Buf, allocated(InData%Input)) + call MAP_PackOutput(RF, InData%y_interp) + call RegPack(RF, allocated(InData%Input)) if (allocated(InData%Input)) then - call RegPackBounds(Buf, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) LB(1:1) = lbound(InData%Input, kind=B8Ki) UB(1:1) = ubound(InData%Input, kind=B8Ki) do i1 = LB(1), UB(1) - call MAP_PackInput(Buf, InData%Input(i1)) + call MAP_PackInput(RF, InData%Input(i1)) end do end if - call RegPack(Buf, allocated(InData%InputTimes)) - if (allocated(InData%InputTimes)) then - call RegPackBounds(Buf, 1, lbound(InData%InputTimes, kind=B8Ki), ubound(InData%InputTimes, kind=B8Ki)) - call RegPack(Buf, InData%InputTimes) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%InputTimes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackMAP_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackMAP_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(MAP_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackMAP_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return LB(1:1) = lbound(OutData%x, kind=B8Ki) UB(1:1) = ubound(OutData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call MAP_UnpackContState(Buf, OutData%x(i1)) ! x + call MAP_UnpackContState(RF, OutData%x(i1)) ! x end do LB(1:1) = lbound(OutData%xd, kind=B8Ki) UB(1:1) = ubound(OutData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call MAP_UnpackDiscState(Buf, OutData%xd(i1)) ! xd + call MAP_UnpackDiscState(RF, OutData%xd(i1)) ! xd end do LB(1:1) = lbound(OutData%z, kind=B8Ki) UB(1:1) = ubound(OutData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call MAP_UnpackConstrState(Buf, OutData%z(i1)) ! z + call MAP_UnpackConstrState(RF, OutData%z(i1)) ! z end do - call MAP_UnpackOtherState(Buf, OutData%OtherSt) ! OtherSt - call MAP_UnpackParam(Buf, OutData%p) ! p - call MAP_UnpackInput(Buf, OutData%u) ! u - call MAP_UnpackOutput(Buf, OutData%y) ! y - call MAP_UnpackOtherState(Buf, OutData%OtherSt_old) ! OtherSt_old + call MAP_UnpackOtherState(RF, OutData%OtherSt) ! OtherSt + call MAP_UnpackParam(RF, OutData%p) ! p + call MAP_UnpackInput(RF, OutData%u) ! u + call MAP_UnpackOutput(RF, OutData%y) ! y + call MAP_UnpackOtherState(RF, OutData%OtherSt_old) ! OtherSt_old if (allocated(OutData%Output)) deallocate(OutData%Output) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Output(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MAP_UnpackOutput(Buf, OutData%Output(i1)) ! Output + call MAP_UnpackOutput(RF, OutData%Output(i1)) ! Output end do end if - call MAP_UnpackOutput(Buf, OutData%y_interp) ! y_interp + call MAP_UnpackOutput(RF, OutData%y_interp) ! y_interp if (allocated(OutData%Input)) deallocate(OutData%Input) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Input(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MAP_UnpackInput(Buf, OutData%Input(i1)) ! Input + call MAP_UnpackInput(RF, OutData%Input(i1)) ! Input end do end if - if (allocated(OutData%InputTimes)) deallocate(OutData%InputTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InputTimes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InputTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%InputTimes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyFEAMooring_Data(SrcFEAMooring_DataData, DstFEAMooring_DataData, CtrlCode, ErrStat, ErrMsg) @@ -11746,116 +10290,97 @@ subroutine FAST_DestroyFEAMooring_Data(FEAMooring_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackFEAMooring_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackFEAMooring_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(FEAMooring_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackFEAMooring_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return LB(1:1) = lbound(InData%x, kind=B8Ki) UB(1:1) = ubound(InData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call FEAM_PackContState(Buf, InData%x(i1)) + call FEAM_PackContState(RF, InData%x(i1)) end do LB(1:1) = lbound(InData%xd, kind=B8Ki) UB(1:1) = ubound(InData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call FEAM_PackDiscState(Buf, InData%xd(i1)) + call FEAM_PackDiscState(RF, InData%xd(i1)) end do LB(1:1) = lbound(InData%z, kind=B8Ki) UB(1:1) = ubound(InData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call FEAM_PackConstrState(Buf, InData%z(i1)) + call FEAM_PackConstrState(RF, InData%z(i1)) end do LB(1:1) = lbound(InData%OtherSt, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call FEAM_PackOtherState(Buf, InData%OtherSt(i1)) + call FEAM_PackOtherState(RF, InData%OtherSt(i1)) end do - call FEAM_PackParam(Buf, InData%p) - call FEAM_PackInput(Buf, InData%u) - call FEAM_PackOutput(Buf, InData%y) - call FEAM_PackMisc(Buf, InData%m) - call RegPack(Buf, allocated(InData%Input)) + call FEAM_PackParam(RF, InData%p) + call FEAM_PackInput(RF, InData%u) + call FEAM_PackOutput(RF, InData%y) + call FEAM_PackMisc(RF, InData%m) + call RegPack(RF, allocated(InData%Input)) if (allocated(InData%Input)) then - call RegPackBounds(Buf, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) LB(1:1) = lbound(InData%Input, kind=B8Ki) UB(1:1) = ubound(InData%Input, kind=B8Ki) do i1 = LB(1), UB(1) - call FEAM_PackInput(Buf, InData%Input(i1)) + call FEAM_PackInput(RF, InData%Input(i1)) end do end if - call RegPack(Buf, allocated(InData%InputTimes)) - if (allocated(InData%InputTimes)) then - call RegPackBounds(Buf, 1, lbound(InData%InputTimes, kind=B8Ki), ubound(InData%InputTimes, kind=B8Ki)) - call RegPack(Buf, InData%InputTimes) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%InputTimes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackFEAMooring_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackFEAMooring_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(FEAMooring_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackFEAMooring_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return LB(1:1) = lbound(OutData%x, kind=B8Ki) UB(1:1) = ubound(OutData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call FEAM_UnpackContState(Buf, OutData%x(i1)) ! x + call FEAM_UnpackContState(RF, OutData%x(i1)) ! x end do LB(1:1) = lbound(OutData%xd, kind=B8Ki) UB(1:1) = ubound(OutData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call FEAM_UnpackDiscState(Buf, OutData%xd(i1)) ! xd + call FEAM_UnpackDiscState(RF, OutData%xd(i1)) ! xd end do LB(1:1) = lbound(OutData%z, kind=B8Ki) UB(1:1) = ubound(OutData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call FEAM_UnpackConstrState(Buf, OutData%z(i1)) ! z + call FEAM_UnpackConstrState(RF, OutData%z(i1)) ! z end do LB(1:1) = lbound(OutData%OtherSt, kind=B8Ki) UB(1:1) = ubound(OutData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call FEAM_UnpackOtherState(Buf, OutData%OtherSt(i1)) ! OtherSt + call FEAM_UnpackOtherState(RF, OutData%OtherSt(i1)) ! OtherSt end do - call FEAM_UnpackParam(Buf, OutData%p) ! p - call FEAM_UnpackInput(Buf, OutData%u) ! u - call FEAM_UnpackOutput(Buf, OutData%y) ! y - call FEAM_UnpackMisc(Buf, OutData%m) ! m + call FEAM_UnpackParam(RF, OutData%p) ! p + call FEAM_UnpackInput(RF, OutData%u) ! u + call FEAM_UnpackOutput(RF, OutData%y) ! y + call FEAM_UnpackMisc(RF, OutData%m) ! m if (allocated(OutData%Input)) deallocate(OutData%Input) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Input(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call FEAM_UnpackInput(Buf, OutData%Input(i1)) ! Input + call FEAM_UnpackInput(RF, OutData%Input(i1)) ! Input end do end if - if (allocated(OutData%InputTimes)) deallocate(OutData%InputTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InputTimes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InputTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%InputTimes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyMoorDyn_Data(SrcMoorDyn_DataData, DstMoorDyn_DataData, CtrlCode, ErrStat, ErrMsg) @@ -12028,142 +10553,121 @@ subroutine FAST_DestroyMoorDyn_Data(MoorDyn_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackMoorDyn_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackMoorDyn_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(MoorDyn_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackMoorDyn_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return LB(1:1) = lbound(InData%x, kind=B8Ki) UB(1:1) = ubound(InData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackContState(Buf, InData%x(i1)) + call MD_PackContState(RF, InData%x(i1)) end do LB(1:1) = lbound(InData%xd, kind=B8Ki) UB(1:1) = ubound(InData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackDiscState(Buf, InData%xd(i1)) + call MD_PackDiscState(RF, InData%xd(i1)) end do LB(1:1) = lbound(InData%z, kind=B8Ki) UB(1:1) = ubound(InData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackConstrState(Buf, InData%z(i1)) + call MD_PackConstrState(RF, InData%z(i1)) end do LB(1:1) = lbound(InData%OtherSt, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackOtherState(Buf, InData%OtherSt(i1)) + call MD_PackOtherState(RF, InData%OtherSt(i1)) end do - call MD_PackParam(Buf, InData%p) - call MD_PackInput(Buf, InData%u) - call MD_PackOutput(Buf, InData%y) - call MD_PackMisc(Buf, InData%m) - call RegPack(Buf, allocated(InData%Output)) + call MD_PackParam(RF, InData%p) + call MD_PackInput(RF, InData%u) + call MD_PackOutput(RF, InData%y) + call MD_PackMisc(RF, InData%m) + call RegPack(RF, allocated(InData%Output)) if (allocated(InData%Output)) then - call RegPackBounds(Buf, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Output, kind=B8Ki), ubound(InData%Output, kind=B8Ki)) LB(1:1) = lbound(InData%Output, kind=B8Ki) UB(1:1) = ubound(InData%Output, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackOutput(Buf, InData%Output(i1)) + call MD_PackOutput(RF, InData%Output(i1)) end do end if - call MD_PackOutput(Buf, InData%y_interp) - call RegPack(Buf, allocated(InData%Input)) + call MD_PackOutput(RF, InData%y_interp) + call RegPack(RF, allocated(InData%Input)) if (allocated(InData%Input)) then - call RegPackBounds(Buf, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) LB(1:1) = lbound(InData%Input, kind=B8Ki) UB(1:1) = ubound(InData%Input, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_PackInput(Buf, InData%Input(i1)) + call MD_PackInput(RF, InData%Input(i1)) end do end if - call RegPack(Buf, allocated(InData%InputTimes)) - if (allocated(InData%InputTimes)) then - call RegPackBounds(Buf, 1, lbound(InData%InputTimes, kind=B8Ki), ubound(InData%InputTimes, kind=B8Ki)) - call RegPack(Buf, InData%InputTimes) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%InputTimes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackMoorDyn_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackMoorDyn_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(MoorDyn_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackMoorDyn_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return LB(1:1) = lbound(OutData%x, kind=B8Ki) UB(1:1) = ubound(OutData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_UnpackContState(Buf, OutData%x(i1)) ! x + call MD_UnpackContState(RF, OutData%x(i1)) ! x end do LB(1:1) = lbound(OutData%xd, kind=B8Ki) UB(1:1) = ubound(OutData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_UnpackDiscState(Buf, OutData%xd(i1)) ! xd + call MD_UnpackDiscState(RF, OutData%xd(i1)) ! xd end do LB(1:1) = lbound(OutData%z, kind=B8Ki) UB(1:1) = ubound(OutData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_UnpackConstrState(Buf, OutData%z(i1)) ! z + call MD_UnpackConstrState(RF, OutData%z(i1)) ! z end do LB(1:1) = lbound(OutData%OtherSt, kind=B8Ki) UB(1:1) = ubound(OutData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call MD_UnpackOtherState(Buf, OutData%OtherSt(i1)) ! OtherSt + call MD_UnpackOtherState(RF, OutData%OtherSt(i1)) ! OtherSt end do - call MD_UnpackParam(Buf, OutData%p) ! p - call MD_UnpackInput(Buf, OutData%u) ! u - call MD_UnpackOutput(Buf, OutData%y) ! y - call MD_UnpackMisc(Buf, OutData%m) ! m + call MD_UnpackParam(RF, OutData%p) ! p + call MD_UnpackInput(RF, OutData%u) ! u + call MD_UnpackOutput(RF, OutData%y) ! y + call MD_UnpackMisc(RF, OutData%m) ! m if (allocated(OutData%Output)) deallocate(OutData%Output) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Output(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Output.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MD_UnpackOutput(Buf, OutData%Output(i1)) ! Output + call MD_UnpackOutput(RF, OutData%Output(i1)) ! Output end do end if - call MD_UnpackOutput(Buf, OutData%y_interp) ! y_interp + call MD_UnpackOutput(RF, OutData%y_interp) ! y_interp if (allocated(OutData%Input)) deallocate(OutData%Input) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Input(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MD_UnpackInput(Buf, OutData%Input(i1)) ! Input + call MD_UnpackInput(RF, OutData%Input(i1)) ! Input end do end if - if (allocated(OutData%InputTimes)) deallocate(OutData%InputTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InputTimes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InputTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%InputTimes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyOrcaFlex_Data(SrcOrcaFlex_DataData, DstOrcaFlex_DataData, CtrlCode, ErrStat, ErrMsg) @@ -12306,116 +10810,97 @@ subroutine FAST_DestroyOrcaFlex_Data(OrcaFlex_DataData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackOrcaFlex_Data(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackOrcaFlex_Data(RF, Indata) + type(RegFile), intent(inout) :: RF type(OrcaFlex_Data), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackOrcaFlex_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return LB(1:1) = lbound(InData%x, kind=B8Ki) UB(1:1) = ubound(InData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call Orca_PackContState(Buf, InData%x(i1)) + call Orca_PackContState(RF, InData%x(i1)) end do LB(1:1) = lbound(InData%xd, kind=B8Ki) UB(1:1) = ubound(InData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call Orca_PackDiscState(Buf, InData%xd(i1)) + call Orca_PackDiscState(RF, InData%xd(i1)) end do LB(1:1) = lbound(InData%z, kind=B8Ki) UB(1:1) = ubound(InData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call Orca_PackConstrState(Buf, InData%z(i1)) + call Orca_PackConstrState(RF, InData%z(i1)) end do LB(1:1) = lbound(InData%OtherSt, kind=B8Ki) UB(1:1) = ubound(InData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call Orca_PackOtherState(Buf, InData%OtherSt(i1)) + call Orca_PackOtherState(RF, InData%OtherSt(i1)) end do - call Orca_PackParam(Buf, InData%p) - call Orca_PackInput(Buf, InData%u) - call Orca_PackOutput(Buf, InData%y) - call Orca_PackMisc(Buf, InData%m) - call RegPack(Buf, allocated(InData%Input)) + call Orca_PackParam(RF, InData%p) + call Orca_PackInput(RF, InData%u) + call Orca_PackOutput(RF, InData%y) + call Orca_PackMisc(RF, InData%m) + call RegPack(RF, allocated(InData%Input)) if (allocated(InData%Input)) then - call RegPackBounds(Buf, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Input, kind=B8Ki), ubound(InData%Input, kind=B8Ki)) LB(1:1) = lbound(InData%Input, kind=B8Ki) UB(1:1) = ubound(InData%Input, kind=B8Ki) do i1 = LB(1), UB(1) - call Orca_PackInput(Buf, InData%Input(i1)) + call Orca_PackInput(RF, InData%Input(i1)) end do end if - call RegPack(Buf, allocated(InData%InputTimes)) - if (allocated(InData%InputTimes)) then - call RegPackBounds(Buf, 1, lbound(InData%InputTimes, kind=B8Ki), ubound(InData%InputTimes, kind=B8Ki)) - call RegPack(Buf, InData%InputTimes) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%InputTimes) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackOrcaFlex_Data(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackOrcaFlex_Data(RF, OutData) + type(RegFile), intent(inout) :: RF type(OrcaFlex_Data), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackOrcaFlex_Data' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return LB(1:1) = lbound(OutData%x, kind=B8Ki) UB(1:1) = ubound(OutData%x, kind=B8Ki) do i1 = LB(1), UB(1) - call Orca_UnpackContState(Buf, OutData%x(i1)) ! x + call Orca_UnpackContState(RF, OutData%x(i1)) ! x end do LB(1:1) = lbound(OutData%xd, kind=B8Ki) UB(1:1) = ubound(OutData%xd, kind=B8Ki) do i1 = LB(1), UB(1) - call Orca_UnpackDiscState(Buf, OutData%xd(i1)) ! xd + call Orca_UnpackDiscState(RF, OutData%xd(i1)) ! xd end do LB(1:1) = lbound(OutData%z, kind=B8Ki) UB(1:1) = ubound(OutData%z, kind=B8Ki) do i1 = LB(1), UB(1) - call Orca_UnpackConstrState(Buf, OutData%z(i1)) ! z + call Orca_UnpackConstrState(RF, OutData%z(i1)) ! z end do LB(1:1) = lbound(OutData%OtherSt, kind=B8Ki) UB(1:1) = ubound(OutData%OtherSt, kind=B8Ki) do i1 = LB(1), UB(1) - call Orca_UnpackOtherState(Buf, OutData%OtherSt(i1)) ! OtherSt + call Orca_UnpackOtherState(RF, OutData%OtherSt(i1)) ! OtherSt end do - call Orca_UnpackParam(Buf, OutData%p) ! p - call Orca_UnpackInput(Buf, OutData%u) ! u - call Orca_UnpackOutput(Buf, OutData%y) ! y - call Orca_UnpackMisc(Buf, OutData%m) ! m + call Orca_UnpackParam(RF, OutData%p) ! p + call Orca_UnpackInput(RF, OutData%u) ! u + call Orca_UnpackOutput(RF, OutData%y) ! y + call Orca_UnpackMisc(RF, OutData%m) ! m if (allocated(OutData%Input)) deallocate(OutData%Input) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Input(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Input.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call Orca_UnpackInput(Buf, OutData%Input(i1)) ! Input + call Orca_UnpackInput(RF, OutData%Input(i1)) ! Input end do end if - if (allocated(OutData%InputTimes)) deallocate(OutData%InputTimes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InputTimes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InputTimes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InputTimes) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%InputTimes); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyModuleMapType(SrcModuleMapTypeData, DstModuleMapTypeData, CtrlCode, ErrStat, ErrMsg) @@ -13267,737 +11752,623 @@ subroutine FAST_DestroyModuleMapType(ModuleMapTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine FAST_PackModuleMapType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackModuleMapType(RF, Indata) + type(RegFile), intent(inout) :: RF type(FAST_ModuleMapType), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackModuleMapType' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%ED_P_2_BD_P)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%ED_P_2_BD_P)) if (allocated(InData%ED_P_2_BD_P)) then - call RegPackBounds(Buf, 1, lbound(InData%ED_P_2_BD_P, kind=B8Ki), ubound(InData%ED_P_2_BD_P, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%ED_P_2_BD_P, kind=B8Ki), ubound(InData%ED_P_2_BD_P, kind=B8Ki)) LB(1:1) = lbound(InData%ED_P_2_BD_P, kind=B8Ki) UB(1:1) = ubound(InData%ED_P_2_BD_P, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%ED_P_2_BD_P(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%ED_P_2_BD_P(i1)) end do end if - call RegPack(Buf, allocated(InData%BD_P_2_ED_P)) + call RegPack(RF, allocated(InData%BD_P_2_ED_P)) if (allocated(InData%BD_P_2_ED_P)) then - call RegPackBounds(Buf, 1, lbound(InData%BD_P_2_ED_P, kind=B8Ki), ubound(InData%BD_P_2_ED_P, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BD_P_2_ED_P, kind=B8Ki), ubound(InData%BD_P_2_ED_P, kind=B8Ki)) LB(1:1) = lbound(InData%BD_P_2_ED_P, kind=B8Ki) UB(1:1) = ubound(InData%BD_P_2_ED_P, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%BD_P_2_ED_P(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%BD_P_2_ED_P(i1)) end do end if - call RegPack(Buf, allocated(InData%ED_P_2_BD_P_Hub)) + call RegPack(RF, allocated(InData%ED_P_2_BD_P_Hub)) if (allocated(InData%ED_P_2_BD_P_Hub)) then - call RegPackBounds(Buf, 1, lbound(InData%ED_P_2_BD_P_Hub, kind=B8Ki), ubound(InData%ED_P_2_BD_P_Hub, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%ED_P_2_BD_P_Hub, kind=B8Ki), ubound(InData%ED_P_2_BD_P_Hub, kind=B8Ki)) LB(1:1) = lbound(InData%ED_P_2_BD_P_Hub, kind=B8Ki) UB(1:1) = ubound(InData%ED_P_2_BD_P_Hub, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%ED_P_2_BD_P_Hub(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%ED_P_2_BD_P_Hub(i1)) end do end if - call NWTC_Library_PackMeshMapType(Buf, InData%ED_P_2_HD_PRP_P) - call NWTC_Library_PackMeshMapType(Buf, InData%SubStructure_2_HD_W_P) - call NWTC_Library_PackMeshMapType(Buf, InData%HD_W_P_2_SubStructure) - call NWTC_Library_PackMeshMapType(Buf, InData%SubStructure_2_HD_M_P) - call NWTC_Library_PackMeshMapType(Buf, InData%HD_M_P_2_SubStructure) - call NWTC_Library_PackMeshMapType(Buf, InData%Structure_2_Mooring) - call NWTC_Library_PackMeshMapType(Buf, InData%Mooring_2_Structure) - call NWTC_Library_PackMeshMapType(Buf, InData%ED_P_2_SD_TP) - call NWTC_Library_PackMeshMapType(Buf, InData%SD_TP_2_ED_P) - call RegPack(Buf, allocated(InData%ED_P_2_NStC_P_N)) + call NWTC_Library_PackMeshMapType(RF, InData%ED_P_2_HD_PRP_P) + call NWTC_Library_PackMeshMapType(RF, InData%SubStructure_2_HD_W_P) + call NWTC_Library_PackMeshMapType(RF, InData%HD_W_P_2_SubStructure) + call NWTC_Library_PackMeshMapType(RF, InData%SubStructure_2_HD_M_P) + call NWTC_Library_PackMeshMapType(RF, InData%HD_M_P_2_SubStructure) + call NWTC_Library_PackMeshMapType(RF, InData%Structure_2_Mooring) + call NWTC_Library_PackMeshMapType(RF, InData%Mooring_2_Structure) + call NWTC_Library_PackMeshMapType(RF, InData%ED_P_2_SD_TP) + call NWTC_Library_PackMeshMapType(RF, InData%SD_TP_2_ED_P) + call RegPack(RF, allocated(InData%ED_P_2_NStC_P_N)) if (allocated(InData%ED_P_2_NStC_P_N)) then - call RegPackBounds(Buf, 1, lbound(InData%ED_P_2_NStC_P_N, kind=B8Ki), ubound(InData%ED_P_2_NStC_P_N, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%ED_P_2_NStC_P_N, kind=B8Ki), ubound(InData%ED_P_2_NStC_P_N, kind=B8Ki)) LB(1:1) = lbound(InData%ED_P_2_NStC_P_N, kind=B8Ki) UB(1:1) = ubound(InData%ED_P_2_NStC_P_N, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%ED_P_2_NStC_P_N(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%ED_P_2_NStC_P_N(i1)) end do end if - call RegPack(Buf, allocated(InData%NStC_P_2_ED_P_N)) + call RegPack(RF, allocated(InData%NStC_P_2_ED_P_N)) if (allocated(InData%NStC_P_2_ED_P_N)) then - call RegPackBounds(Buf, 1, lbound(InData%NStC_P_2_ED_P_N, kind=B8Ki), ubound(InData%NStC_P_2_ED_P_N, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%NStC_P_2_ED_P_N, kind=B8Ki), ubound(InData%NStC_P_2_ED_P_N, kind=B8Ki)) LB(1:1) = lbound(InData%NStC_P_2_ED_P_N, kind=B8Ki) UB(1:1) = ubound(InData%NStC_P_2_ED_P_N, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%NStC_P_2_ED_P_N(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%NStC_P_2_ED_P_N(i1)) end do end if - call RegPack(Buf, allocated(InData%ED_L_2_TStC_P_T)) + call RegPack(RF, allocated(InData%ED_L_2_TStC_P_T)) if (allocated(InData%ED_L_2_TStC_P_T)) then - call RegPackBounds(Buf, 1, lbound(InData%ED_L_2_TStC_P_T, kind=B8Ki), ubound(InData%ED_L_2_TStC_P_T, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%ED_L_2_TStC_P_T, kind=B8Ki), ubound(InData%ED_L_2_TStC_P_T, kind=B8Ki)) LB(1:1) = lbound(InData%ED_L_2_TStC_P_T, kind=B8Ki) UB(1:1) = ubound(InData%ED_L_2_TStC_P_T, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%ED_L_2_TStC_P_T(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%ED_L_2_TStC_P_T(i1)) end do end if - call RegPack(Buf, allocated(InData%TStC_P_2_ED_P_T)) + call RegPack(RF, allocated(InData%TStC_P_2_ED_P_T)) if (allocated(InData%TStC_P_2_ED_P_T)) then - call RegPackBounds(Buf, 1, lbound(InData%TStC_P_2_ED_P_T, kind=B8Ki), ubound(InData%TStC_P_2_ED_P_T, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%TStC_P_2_ED_P_T, kind=B8Ki), ubound(InData%TStC_P_2_ED_P_T, kind=B8Ki)) LB(1:1) = lbound(InData%TStC_P_2_ED_P_T, kind=B8Ki) UB(1:1) = ubound(InData%TStC_P_2_ED_P_T, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%TStC_P_2_ED_P_T(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%TStC_P_2_ED_P_T(i1)) end do end if - call RegPack(Buf, allocated(InData%ED_L_2_BStC_P_B)) + call RegPack(RF, allocated(InData%ED_L_2_BStC_P_B)) if (allocated(InData%ED_L_2_BStC_P_B)) then - call RegPackBounds(Buf, 2, lbound(InData%ED_L_2_BStC_P_B, kind=B8Ki), ubound(InData%ED_L_2_BStC_P_B, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%ED_L_2_BStC_P_B, kind=B8Ki), ubound(InData%ED_L_2_BStC_P_B, kind=B8Ki)) LB(1:2) = lbound(InData%ED_L_2_BStC_P_B, kind=B8Ki) UB(1:2) = ubound(InData%ED_L_2_BStC_P_B, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%ED_L_2_BStC_P_B(i1,i2)) + call NWTC_Library_PackMeshMapType(RF, InData%ED_L_2_BStC_P_B(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%BStC_P_2_ED_P_B)) + call RegPack(RF, allocated(InData%BStC_P_2_ED_P_B)) if (allocated(InData%BStC_P_2_ED_P_B)) then - call RegPackBounds(Buf, 2, lbound(InData%BStC_P_2_ED_P_B, kind=B8Ki), ubound(InData%BStC_P_2_ED_P_B, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%BStC_P_2_ED_P_B, kind=B8Ki), ubound(InData%BStC_P_2_ED_P_B, kind=B8Ki)) LB(1:2) = lbound(InData%BStC_P_2_ED_P_B, kind=B8Ki) UB(1:2) = ubound(InData%BStC_P_2_ED_P_B, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%BStC_P_2_ED_P_B(i1,i2)) + call NWTC_Library_PackMeshMapType(RF, InData%BStC_P_2_ED_P_B(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%BD_L_2_BStC_P_B)) + call RegPack(RF, allocated(InData%BD_L_2_BStC_P_B)) if (allocated(InData%BD_L_2_BStC_P_B)) then - call RegPackBounds(Buf, 2, lbound(InData%BD_L_2_BStC_P_B, kind=B8Ki), ubound(InData%BD_L_2_BStC_P_B, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%BD_L_2_BStC_P_B, kind=B8Ki), ubound(InData%BD_L_2_BStC_P_B, kind=B8Ki)) LB(1:2) = lbound(InData%BD_L_2_BStC_P_B, kind=B8Ki) UB(1:2) = ubound(InData%BD_L_2_BStC_P_B, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%BD_L_2_BStC_P_B(i1,i2)) + call NWTC_Library_PackMeshMapType(RF, InData%BD_L_2_BStC_P_B(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%BStC_P_2_BD_P_B)) + call RegPack(RF, allocated(InData%BStC_P_2_BD_P_B)) if (allocated(InData%BStC_P_2_BD_P_B)) then - call RegPackBounds(Buf, 2, lbound(InData%BStC_P_2_BD_P_B, kind=B8Ki), ubound(InData%BStC_P_2_BD_P_B, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%BStC_P_2_BD_P_B, kind=B8Ki), ubound(InData%BStC_P_2_BD_P_B, kind=B8Ki)) LB(1:2) = lbound(InData%BStC_P_2_BD_P_B, kind=B8Ki) UB(1:2) = ubound(InData%BStC_P_2_BD_P_B, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%BStC_P_2_BD_P_B(i1,i2)) + call NWTC_Library_PackMeshMapType(RF, InData%BStC_P_2_BD_P_B(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%SStC_P_P_2_SubStructure)) + call RegPack(RF, allocated(InData%SStC_P_P_2_SubStructure)) if (allocated(InData%SStC_P_P_2_SubStructure)) then - call RegPackBounds(Buf, 1, lbound(InData%SStC_P_P_2_SubStructure, kind=B8Ki), ubound(InData%SStC_P_P_2_SubStructure, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%SStC_P_P_2_SubStructure, kind=B8Ki), ubound(InData%SStC_P_P_2_SubStructure, kind=B8Ki)) LB(1:1) = lbound(InData%SStC_P_P_2_SubStructure, kind=B8Ki) UB(1:1) = ubound(InData%SStC_P_P_2_SubStructure, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%SStC_P_P_2_SubStructure(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%SStC_P_P_2_SubStructure(i1)) end do end if - call RegPack(Buf, allocated(InData%SubStructure_2_SStC_P_P)) + call RegPack(RF, allocated(InData%SubStructure_2_SStC_P_P)) if (allocated(InData%SubStructure_2_SStC_P_P)) then - call RegPackBounds(Buf, 1, lbound(InData%SubStructure_2_SStC_P_P, kind=B8Ki), ubound(InData%SubStructure_2_SStC_P_P, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%SubStructure_2_SStC_P_P, kind=B8Ki), ubound(InData%SubStructure_2_SStC_P_P, kind=B8Ki)) LB(1:1) = lbound(InData%SubStructure_2_SStC_P_P, kind=B8Ki) UB(1:1) = ubound(InData%SubStructure_2_SStC_P_P, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%SubStructure_2_SStC_P_P(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%SubStructure_2_SStC_P_P(i1)) end do end if - call NWTC_Library_PackMeshMapType(Buf, InData%ED_P_2_SrvD_P_P) - call RegPack(Buf, allocated(InData%BDED_L_2_AD_L_B)) + call NWTC_Library_PackMeshMapType(RF, InData%ED_P_2_SrvD_P_P) + call RegPack(RF, allocated(InData%BDED_L_2_AD_L_B)) if (allocated(InData%BDED_L_2_AD_L_B)) then - call RegPackBounds(Buf, 1, lbound(InData%BDED_L_2_AD_L_B, kind=B8Ki), ubound(InData%BDED_L_2_AD_L_B, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BDED_L_2_AD_L_B, kind=B8Ki), ubound(InData%BDED_L_2_AD_L_B, kind=B8Ki)) LB(1:1) = lbound(InData%BDED_L_2_AD_L_B, kind=B8Ki) UB(1:1) = ubound(InData%BDED_L_2_AD_L_B, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%BDED_L_2_AD_L_B(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%BDED_L_2_AD_L_B(i1)) end do end if - call RegPack(Buf, allocated(InData%AD_L_2_BDED_B)) + call RegPack(RF, allocated(InData%AD_L_2_BDED_B)) if (allocated(InData%AD_L_2_BDED_B)) then - call RegPackBounds(Buf, 1, lbound(InData%AD_L_2_BDED_B, kind=B8Ki), ubound(InData%AD_L_2_BDED_B, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%AD_L_2_BDED_B, kind=B8Ki), ubound(InData%AD_L_2_BDED_B, kind=B8Ki)) LB(1:1) = lbound(InData%AD_L_2_BDED_B, kind=B8Ki) UB(1:1) = ubound(InData%AD_L_2_BDED_B, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%AD_L_2_BDED_B(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%AD_L_2_BDED_B(i1)) end do end if - call RegPack(Buf, allocated(InData%BD_L_2_BD_L)) + call RegPack(RF, allocated(InData%BD_L_2_BD_L)) if (allocated(InData%BD_L_2_BD_L)) then - call RegPackBounds(Buf, 1, lbound(InData%BD_L_2_BD_L, kind=B8Ki), ubound(InData%BD_L_2_BD_L, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BD_L_2_BD_L, kind=B8Ki), ubound(InData%BD_L_2_BD_L, kind=B8Ki)) LB(1:1) = lbound(InData%BD_L_2_BD_L, kind=B8Ki) UB(1:1) = ubound(InData%BD_L_2_BD_L, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%BD_L_2_BD_L(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%BD_L_2_BD_L(i1)) end do end if - call NWTC_Library_PackMeshMapType(Buf, InData%ED_P_2_AD_P_N) - call NWTC_Library_PackMeshMapType(Buf, InData%AD_P_2_ED_P_N) - call NWTC_Library_PackMeshMapType(Buf, InData%ED_P_2_AD_P_TF) - call NWTC_Library_PackMeshMapType(Buf, InData%AD_P_2_ED_P_TF) - call NWTC_Library_PackMeshMapType(Buf, InData%ED_L_2_AD_L_T) - call NWTC_Library_PackMeshMapType(Buf, InData%AD_L_2_ED_P_T) - call RegPack(Buf, allocated(InData%ED_P_2_AD_P_R)) + call NWTC_Library_PackMeshMapType(RF, InData%ED_P_2_AD_P_N) + call NWTC_Library_PackMeshMapType(RF, InData%AD_P_2_ED_P_N) + call NWTC_Library_PackMeshMapType(RF, InData%ED_P_2_AD_P_TF) + call NWTC_Library_PackMeshMapType(RF, InData%AD_P_2_ED_P_TF) + call NWTC_Library_PackMeshMapType(RF, InData%ED_L_2_AD_L_T) + call NWTC_Library_PackMeshMapType(RF, InData%AD_L_2_ED_P_T) + call RegPack(RF, allocated(InData%ED_P_2_AD_P_R)) if (allocated(InData%ED_P_2_AD_P_R)) then - call RegPackBounds(Buf, 1, lbound(InData%ED_P_2_AD_P_R, kind=B8Ki), ubound(InData%ED_P_2_AD_P_R, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%ED_P_2_AD_P_R, kind=B8Ki), ubound(InData%ED_P_2_AD_P_R, kind=B8Ki)) LB(1:1) = lbound(InData%ED_P_2_AD_P_R, kind=B8Ki) UB(1:1) = ubound(InData%ED_P_2_AD_P_R, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%ED_P_2_AD_P_R(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%ED_P_2_AD_P_R(i1)) end do end if - call NWTC_Library_PackMeshMapType(Buf, InData%ED_P_2_AD_P_H) - call NWTC_Library_PackMeshMapType(Buf, InData%AD_P_2_ED_P_H) - call NWTC_Library_PackMeshMapType(Buf, InData%IceF_P_2_SD_P) - call NWTC_Library_PackMeshMapType(Buf, InData%SDy3_P_2_IceF_P) - call RegPack(Buf, allocated(InData%IceD_P_2_SD_P)) + call NWTC_Library_PackMeshMapType(RF, InData%ED_P_2_AD_P_H) + call NWTC_Library_PackMeshMapType(RF, InData%AD_P_2_ED_P_H) + call NWTC_Library_PackMeshMapType(RF, InData%IceF_P_2_SD_P) + call NWTC_Library_PackMeshMapType(RF, InData%SDy3_P_2_IceF_P) + call RegPack(RF, allocated(InData%IceD_P_2_SD_P)) if (allocated(InData%IceD_P_2_SD_P)) then - call RegPackBounds(Buf, 1, lbound(InData%IceD_P_2_SD_P, kind=B8Ki), ubound(InData%IceD_P_2_SD_P, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%IceD_P_2_SD_P, kind=B8Ki), ubound(InData%IceD_P_2_SD_P, kind=B8Ki)) LB(1:1) = lbound(InData%IceD_P_2_SD_P, kind=B8Ki) UB(1:1) = ubound(InData%IceD_P_2_SD_P, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%IceD_P_2_SD_P(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%IceD_P_2_SD_P(i1)) end do end if - call RegPack(Buf, allocated(InData%SDy3_P_2_IceD_P)) + call RegPack(RF, allocated(InData%SDy3_P_2_IceD_P)) if (allocated(InData%SDy3_P_2_IceD_P)) then - call RegPackBounds(Buf, 1, lbound(InData%SDy3_P_2_IceD_P, kind=B8Ki), ubound(InData%SDy3_P_2_IceD_P, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%SDy3_P_2_IceD_P, kind=B8Ki), ubound(InData%SDy3_P_2_IceD_P, kind=B8Ki)) LB(1:1) = lbound(InData%SDy3_P_2_IceD_P, kind=B8Ki) UB(1:1) = ubound(InData%SDy3_P_2_IceD_P, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%SDy3_P_2_IceD_P(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%SDy3_P_2_IceD_P(i1)) end do end if - call RegPack(Buf, allocated(InData%Jacobian_Opt1)) - if (allocated(InData%Jacobian_Opt1)) then - call RegPackBounds(Buf, 2, lbound(InData%Jacobian_Opt1, kind=B8Ki), ubound(InData%Jacobian_Opt1, kind=B8Ki)) - call RegPack(Buf, InData%Jacobian_Opt1) - end if - call RegPack(Buf, allocated(InData%Jacobian_pivot)) - if (allocated(InData%Jacobian_pivot)) then - call RegPackBounds(Buf, 1, lbound(InData%Jacobian_pivot, kind=B8Ki), ubound(InData%Jacobian_pivot, kind=B8Ki)) - call RegPack(Buf, InData%Jacobian_pivot) - end if - call RegPack(Buf, allocated(InData%Jac_u_indx)) - if (allocated(InData%Jac_u_indx)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_u_indx, kind=B8Ki), ubound(InData%Jac_u_indx, kind=B8Ki)) - call RegPack(Buf, InData%Jac_u_indx) - end if - call MeshPack(Buf, InData%u_ED_NacelleLoads) - call MeshPack(Buf, InData%SubstructureLoads_Tmp) - call MeshPack(Buf, InData%SubstructureLoads_Tmp2) - call MeshPack(Buf, InData%PlatformLoads_Tmp) - call MeshPack(Buf, InData%PlatformLoads_Tmp2) - call MeshPack(Buf, InData%SubstructureLoads_Tmp_Farm) - call MeshPack(Buf, InData%u_ED_TowerPtloads) - call RegPack(Buf, allocated(InData%u_ED_BladePtLoads)) + call RegPackAlloc(RF, InData%Jacobian_Opt1) + call RegPackAlloc(RF, InData%Jacobian_pivot) + call RegPackAlloc(RF, InData%Jac_u_indx) + call MeshPack(RF, InData%u_ED_NacelleLoads) + call MeshPack(RF, InData%SubstructureLoads_Tmp) + call MeshPack(RF, InData%SubstructureLoads_Tmp2) + call MeshPack(RF, InData%PlatformLoads_Tmp) + call MeshPack(RF, InData%PlatformLoads_Tmp2) + call MeshPack(RF, InData%SubstructureLoads_Tmp_Farm) + call MeshPack(RF, InData%u_ED_TowerPtloads) + call RegPack(RF, allocated(InData%u_ED_BladePtLoads)) if (allocated(InData%u_ED_BladePtLoads)) then - call RegPackBounds(Buf, 1, lbound(InData%u_ED_BladePtLoads, kind=B8Ki), ubound(InData%u_ED_BladePtLoads, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_ED_BladePtLoads, kind=B8Ki), ubound(InData%u_ED_BladePtLoads, kind=B8Ki)) LB(1:1) = lbound(InData%u_ED_BladePtLoads, kind=B8Ki) UB(1:1) = ubound(InData%u_ED_BladePtLoads, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%u_ED_BladePtLoads(i1)) + call MeshPack(RF, InData%u_ED_BladePtLoads(i1)) end do end if - call MeshPack(Buf, InData%u_SD_TPMesh) - call MeshPack(Buf, InData%u_HD_M_Mesh) - call MeshPack(Buf, InData%u_HD_W_Mesh) - call MeshPack(Buf, InData%u_ED_HubPtLoad) - call MeshPack(Buf, InData%u_ED_HubPtLoad_2) - call RegPack(Buf, allocated(InData%u_BD_RootMotion)) + call MeshPack(RF, InData%u_SD_TPMesh) + call MeshPack(RF, InData%u_HD_M_Mesh) + call MeshPack(RF, InData%u_HD_W_Mesh) + call MeshPack(RF, InData%u_ED_HubPtLoad) + call MeshPack(RF, InData%u_ED_HubPtLoad_2) + call RegPack(RF, allocated(InData%u_BD_RootMotion)) if (allocated(InData%u_BD_RootMotion)) then - call RegPackBounds(Buf, 1, lbound(InData%u_BD_RootMotion, kind=B8Ki), ubound(InData%u_BD_RootMotion, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_BD_RootMotion, kind=B8Ki), ubound(InData%u_BD_RootMotion, kind=B8Ki)) LB(1:1) = lbound(InData%u_BD_RootMotion, kind=B8Ki) UB(1:1) = ubound(InData%u_BD_RootMotion, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%u_BD_RootMotion(i1)) + call MeshPack(RF, InData%u_BD_RootMotion(i1)) end do end if - call RegPack(Buf, allocated(InData%y_BD_BldMotion_4Loads)) + call RegPack(RF, allocated(InData%y_BD_BldMotion_4Loads)) if (allocated(InData%y_BD_BldMotion_4Loads)) then - call RegPackBounds(Buf, 1, lbound(InData%y_BD_BldMotion_4Loads, kind=B8Ki), ubound(InData%y_BD_BldMotion_4Loads, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%y_BD_BldMotion_4Loads, kind=B8Ki), ubound(InData%y_BD_BldMotion_4Loads, kind=B8Ki)) LB(1:1) = lbound(InData%y_BD_BldMotion_4Loads, kind=B8Ki) UB(1:1) = ubound(InData%y_BD_BldMotion_4Loads, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%y_BD_BldMotion_4Loads(i1)) + call MeshPack(RF, InData%y_BD_BldMotion_4Loads(i1)) end do end if - call RegPack(Buf, allocated(InData%u_BD_Distrload)) + call RegPack(RF, allocated(InData%u_BD_Distrload)) if (allocated(InData%u_BD_Distrload)) then - call RegPackBounds(Buf, 1, lbound(InData%u_BD_Distrload, kind=B8Ki), ubound(InData%u_BD_Distrload, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_BD_Distrload, kind=B8Ki), ubound(InData%u_BD_Distrload, kind=B8Ki)) LB(1:1) = lbound(InData%u_BD_Distrload, kind=B8Ki) UB(1:1) = ubound(InData%u_BD_Distrload, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%u_BD_Distrload(i1)) + call MeshPack(RF, InData%u_BD_Distrload(i1)) end do end if - call MeshPack(Buf, InData%u_Orca_PtfmMesh) - call MeshPack(Buf, InData%u_ExtPtfm_PtfmMesh) - call RegPack(Buf, allocated(InData%HubOrient)) - if (allocated(InData%HubOrient)) then - call RegPackBounds(Buf, 3, lbound(InData%HubOrient, kind=B8Ki), ubound(InData%HubOrient, kind=B8Ki)) - call RegPack(Buf, InData%HubOrient) - end if - if (RegCheckErr(Buf, RoutineName)) return + call MeshPack(RF, InData%u_Orca_PtfmMesh) + call MeshPack(RF, InData%u_ExtPtfm_PtfmMesh) + call RegPackAlloc(RF, InData%HubOrient) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine FAST_UnPackModuleMapType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_UnPackModuleMapType(RF, OutData) + type(RegFile), intent(inout) :: RF type(FAST_ModuleMapType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackModuleMapType' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%ED_P_2_BD_P)) deallocate(OutData%ED_P_2_BD_P) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%ED_P_2_BD_P(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ED_P_2_BD_P.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ED_P_2_BD_P.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_P_2_BD_P(i1)) ! ED_P_2_BD_P + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_P_2_BD_P(i1)) ! ED_P_2_BD_P end do end if if (allocated(OutData%BD_P_2_ED_P)) deallocate(OutData%BD_P_2_ED_P) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BD_P_2_ED_P(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BD_P_2_ED_P.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BD_P_2_ED_P.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%BD_P_2_ED_P(i1)) ! BD_P_2_ED_P + call NWTC_Library_UnpackMeshMapType(RF, OutData%BD_P_2_ED_P(i1)) ! BD_P_2_ED_P end do end if if (allocated(OutData%ED_P_2_BD_P_Hub)) deallocate(OutData%ED_P_2_BD_P_Hub) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%ED_P_2_BD_P_Hub(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ED_P_2_BD_P_Hub.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ED_P_2_BD_P_Hub.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_P_2_BD_P_Hub(i1)) ! ED_P_2_BD_P_Hub + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_P_2_BD_P_Hub(i1)) ! ED_P_2_BD_P_Hub end do end if - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_P_2_HD_PRP_P) ! ED_P_2_HD_PRP_P - call NWTC_Library_UnpackMeshMapType(Buf, OutData%SubStructure_2_HD_W_P) ! SubStructure_2_HD_W_P - call NWTC_Library_UnpackMeshMapType(Buf, OutData%HD_W_P_2_SubStructure) ! HD_W_P_2_SubStructure - call NWTC_Library_UnpackMeshMapType(Buf, OutData%SubStructure_2_HD_M_P) ! SubStructure_2_HD_M_P - call NWTC_Library_UnpackMeshMapType(Buf, OutData%HD_M_P_2_SubStructure) ! HD_M_P_2_SubStructure - call NWTC_Library_UnpackMeshMapType(Buf, OutData%Structure_2_Mooring) ! Structure_2_Mooring - call NWTC_Library_UnpackMeshMapType(Buf, OutData%Mooring_2_Structure) ! Mooring_2_Structure - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_P_2_SD_TP) ! ED_P_2_SD_TP - call NWTC_Library_UnpackMeshMapType(Buf, OutData%SD_TP_2_ED_P) ! SD_TP_2_ED_P + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_P_2_HD_PRP_P) ! ED_P_2_HD_PRP_P + call NWTC_Library_UnpackMeshMapType(RF, OutData%SubStructure_2_HD_W_P) ! SubStructure_2_HD_W_P + call NWTC_Library_UnpackMeshMapType(RF, OutData%HD_W_P_2_SubStructure) ! HD_W_P_2_SubStructure + call NWTC_Library_UnpackMeshMapType(RF, OutData%SubStructure_2_HD_M_P) ! SubStructure_2_HD_M_P + call NWTC_Library_UnpackMeshMapType(RF, OutData%HD_M_P_2_SubStructure) ! HD_M_P_2_SubStructure + call NWTC_Library_UnpackMeshMapType(RF, OutData%Structure_2_Mooring) ! Structure_2_Mooring + call NWTC_Library_UnpackMeshMapType(RF, OutData%Mooring_2_Structure) ! Mooring_2_Structure + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_P_2_SD_TP) ! ED_P_2_SD_TP + call NWTC_Library_UnpackMeshMapType(RF, OutData%SD_TP_2_ED_P) ! SD_TP_2_ED_P if (allocated(OutData%ED_P_2_NStC_P_N)) deallocate(OutData%ED_P_2_NStC_P_N) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%ED_P_2_NStC_P_N(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ED_P_2_NStC_P_N.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ED_P_2_NStC_P_N.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_P_2_NStC_P_N(i1)) ! ED_P_2_NStC_P_N + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_P_2_NStC_P_N(i1)) ! ED_P_2_NStC_P_N end do end if if (allocated(OutData%NStC_P_2_ED_P_N)) deallocate(OutData%NStC_P_2_ED_P_N) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%NStC_P_2_ED_P_N(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStC_P_2_ED_P_N.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStC_P_2_ED_P_N.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%NStC_P_2_ED_P_N(i1)) ! NStC_P_2_ED_P_N + call NWTC_Library_UnpackMeshMapType(RF, OutData%NStC_P_2_ED_P_N(i1)) ! NStC_P_2_ED_P_N end do end if if (allocated(OutData%ED_L_2_TStC_P_T)) deallocate(OutData%ED_L_2_TStC_P_T) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%ED_L_2_TStC_P_T(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ED_L_2_TStC_P_T.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ED_L_2_TStC_P_T.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_L_2_TStC_P_T(i1)) ! ED_L_2_TStC_P_T + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_L_2_TStC_P_T(i1)) ! ED_L_2_TStC_P_T end do end if if (allocated(OutData%TStC_P_2_ED_P_T)) deallocate(OutData%TStC_P_2_ED_P_T) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%TStC_P_2_ED_P_T(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStC_P_2_ED_P_T.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStC_P_2_ED_P_T.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%TStC_P_2_ED_P_T(i1)) ! TStC_P_2_ED_P_T + call NWTC_Library_UnpackMeshMapType(RF, OutData%TStC_P_2_ED_P_T(i1)) ! TStC_P_2_ED_P_T end do end if if (allocated(OutData%ED_L_2_BStC_P_B)) deallocate(OutData%ED_L_2_BStC_P_B) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%ED_L_2_BStC_P_B(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ED_L_2_BStC_P_B.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ED_L_2_BStC_P_B.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_L_2_BStC_P_B(i1,i2)) ! ED_L_2_BStC_P_B + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_L_2_BStC_P_B(i1,i2)) ! ED_L_2_BStC_P_B end do end do end if if (allocated(OutData%BStC_P_2_ED_P_B)) deallocate(OutData%BStC_P_2_ED_P_B) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BStC_P_2_ED_P_B(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC_P_2_ED_P_B.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC_P_2_ED_P_B.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%BStC_P_2_ED_P_B(i1,i2)) ! BStC_P_2_ED_P_B + call NWTC_Library_UnpackMeshMapType(RF, OutData%BStC_P_2_ED_P_B(i1,i2)) ! BStC_P_2_ED_P_B end do end do end if if (allocated(OutData%BD_L_2_BStC_P_B)) deallocate(OutData%BD_L_2_BStC_P_B) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BD_L_2_BStC_P_B(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BD_L_2_BStC_P_B.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BD_L_2_BStC_P_B.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%BD_L_2_BStC_P_B(i1,i2)) ! BD_L_2_BStC_P_B + call NWTC_Library_UnpackMeshMapType(RF, OutData%BD_L_2_BStC_P_B(i1,i2)) ! BD_L_2_BStC_P_B end do end do end if if (allocated(OutData%BStC_P_2_BD_P_B)) deallocate(OutData%BStC_P_2_BD_P_B) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BStC_P_2_BD_P_B(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC_P_2_BD_P_B.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC_P_2_BD_P_B.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%BStC_P_2_BD_P_B(i1,i2)) ! BStC_P_2_BD_P_B + call NWTC_Library_UnpackMeshMapType(RF, OutData%BStC_P_2_BD_P_B(i1,i2)) ! BStC_P_2_BD_P_B end do end do end if if (allocated(OutData%SStC_P_P_2_SubStructure)) deallocate(OutData%SStC_P_P_2_SubStructure) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%SStC_P_P_2_SubStructure(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStC_P_P_2_SubStructure.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStC_P_P_2_SubStructure.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%SStC_P_P_2_SubStructure(i1)) ! SStC_P_P_2_SubStructure + call NWTC_Library_UnpackMeshMapType(RF, OutData%SStC_P_P_2_SubStructure(i1)) ! SStC_P_P_2_SubStructure end do end if if (allocated(OutData%SubStructure_2_SStC_P_P)) deallocate(OutData%SubStructure_2_SStC_P_P) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%SubStructure_2_SStC_P_P(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SubStructure_2_SStC_P_P.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SubStructure_2_SStC_P_P.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%SubStructure_2_SStC_P_P(i1)) ! SubStructure_2_SStC_P_P + call NWTC_Library_UnpackMeshMapType(RF, OutData%SubStructure_2_SStC_P_P(i1)) ! SubStructure_2_SStC_P_P end do end if - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_P_2_SrvD_P_P) ! ED_P_2_SrvD_P_P + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_P_2_SrvD_P_P) ! ED_P_2_SrvD_P_P if (allocated(OutData%BDED_L_2_AD_L_B)) deallocate(OutData%BDED_L_2_AD_L_B) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BDED_L_2_AD_L_B(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BDED_L_2_AD_L_B.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BDED_L_2_AD_L_B.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%BDED_L_2_AD_L_B(i1)) ! BDED_L_2_AD_L_B + call NWTC_Library_UnpackMeshMapType(RF, OutData%BDED_L_2_AD_L_B(i1)) ! BDED_L_2_AD_L_B end do end if if (allocated(OutData%AD_L_2_BDED_B)) deallocate(OutData%AD_L_2_BDED_B) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%AD_L_2_BDED_B(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AD_L_2_BDED_B.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AD_L_2_BDED_B.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%AD_L_2_BDED_B(i1)) ! AD_L_2_BDED_B + call NWTC_Library_UnpackMeshMapType(RF, OutData%AD_L_2_BDED_B(i1)) ! AD_L_2_BDED_B end do end if if (allocated(OutData%BD_L_2_BD_L)) deallocate(OutData%BD_L_2_BD_L) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BD_L_2_BD_L(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BD_L_2_BD_L.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BD_L_2_BD_L.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%BD_L_2_BD_L(i1)) ! BD_L_2_BD_L + call NWTC_Library_UnpackMeshMapType(RF, OutData%BD_L_2_BD_L(i1)) ! BD_L_2_BD_L end do end if - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_P_2_AD_P_N) ! ED_P_2_AD_P_N - call NWTC_Library_UnpackMeshMapType(Buf, OutData%AD_P_2_ED_P_N) ! AD_P_2_ED_P_N - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_P_2_AD_P_TF) ! ED_P_2_AD_P_TF - call NWTC_Library_UnpackMeshMapType(Buf, OutData%AD_P_2_ED_P_TF) ! AD_P_2_ED_P_TF - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_L_2_AD_L_T) ! ED_L_2_AD_L_T - call NWTC_Library_UnpackMeshMapType(Buf, OutData%AD_L_2_ED_P_T) ! AD_L_2_ED_P_T + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_P_2_AD_P_N) ! ED_P_2_AD_P_N + call NWTC_Library_UnpackMeshMapType(RF, OutData%AD_P_2_ED_P_N) ! AD_P_2_ED_P_N + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_P_2_AD_P_TF) ! ED_P_2_AD_P_TF + call NWTC_Library_UnpackMeshMapType(RF, OutData%AD_P_2_ED_P_TF) ! AD_P_2_ED_P_TF + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_L_2_AD_L_T) ! ED_L_2_AD_L_T + call NWTC_Library_UnpackMeshMapType(RF, OutData%AD_L_2_ED_P_T) ! AD_L_2_ED_P_T if (allocated(OutData%ED_P_2_AD_P_R)) deallocate(OutData%ED_P_2_AD_P_R) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%ED_P_2_AD_P_R(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ED_P_2_AD_P_R.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ED_P_2_AD_P_R.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_P_2_AD_P_R(i1)) ! ED_P_2_AD_P_R + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_P_2_AD_P_R(i1)) ! ED_P_2_AD_P_R end do end if - call NWTC_Library_UnpackMeshMapType(Buf, OutData%ED_P_2_AD_P_H) ! ED_P_2_AD_P_H - call NWTC_Library_UnpackMeshMapType(Buf, OutData%AD_P_2_ED_P_H) ! AD_P_2_ED_P_H - call NWTC_Library_UnpackMeshMapType(Buf, OutData%IceF_P_2_SD_P) ! IceF_P_2_SD_P - call NWTC_Library_UnpackMeshMapType(Buf, OutData%SDy3_P_2_IceF_P) ! SDy3_P_2_IceF_P + call NWTC_Library_UnpackMeshMapType(RF, OutData%ED_P_2_AD_P_H) ! ED_P_2_AD_P_H + call NWTC_Library_UnpackMeshMapType(RF, OutData%AD_P_2_ED_P_H) ! AD_P_2_ED_P_H + call NWTC_Library_UnpackMeshMapType(RF, OutData%IceF_P_2_SD_P) ! IceF_P_2_SD_P + call NWTC_Library_UnpackMeshMapType(RF, OutData%SDy3_P_2_IceF_P) ! SDy3_P_2_IceF_P if (allocated(OutData%IceD_P_2_SD_P)) deallocate(OutData%IceD_P_2_SD_P) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%IceD_P_2_SD_P(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IceD_P_2_SD_P.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IceD_P_2_SD_P.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%IceD_P_2_SD_P(i1)) ! IceD_P_2_SD_P + call NWTC_Library_UnpackMeshMapType(RF, OutData%IceD_P_2_SD_P(i1)) ! IceD_P_2_SD_P end do end if if (allocated(OutData%SDy3_P_2_IceD_P)) deallocate(OutData%SDy3_P_2_IceD_P) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%SDy3_P_2_IceD_P(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SDy3_P_2_IceD_P.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SDy3_P_2_IceD_P.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%SDy3_P_2_IceD_P(i1)) ! SDy3_P_2_IceD_P + call NWTC_Library_UnpackMeshMapType(RF, OutData%SDy3_P_2_IceD_P(i1)) ! SDy3_P_2_IceD_P end do end if - if (allocated(OutData%Jacobian_Opt1)) deallocate(OutData%Jacobian_Opt1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jacobian_Opt1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jacobian_Opt1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jacobian_Opt1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Jacobian_pivot)) deallocate(OutData%Jacobian_pivot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jacobian_pivot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jacobian_pivot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jacobian_pivot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Jac_u_indx)) deallocate(OutData%Jac_u_indx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_u_indx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_u_indx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_u_indx) - if (RegCheckErr(Buf, RoutineName)) return - end if - call MeshUnpack(Buf, OutData%u_ED_NacelleLoads) ! u_ED_NacelleLoads - call MeshUnpack(Buf, OutData%SubstructureLoads_Tmp) ! SubstructureLoads_Tmp - call MeshUnpack(Buf, OutData%SubstructureLoads_Tmp2) ! SubstructureLoads_Tmp2 - call MeshUnpack(Buf, OutData%PlatformLoads_Tmp) ! PlatformLoads_Tmp - call MeshUnpack(Buf, OutData%PlatformLoads_Tmp2) ! PlatformLoads_Tmp2 - call MeshUnpack(Buf, OutData%SubstructureLoads_Tmp_Farm) ! SubstructureLoads_Tmp_Farm - call MeshUnpack(Buf, OutData%u_ED_TowerPtloads) ! u_ED_TowerPtloads + call RegUnpackAlloc(RF, OutData%Jacobian_Opt1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jacobian_pivot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_u_indx); if (RegCheckErr(RF, RoutineName)) return + call MeshUnpack(RF, OutData%u_ED_NacelleLoads) ! u_ED_NacelleLoads + call MeshUnpack(RF, OutData%SubstructureLoads_Tmp) ! SubstructureLoads_Tmp + call MeshUnpack(RF, OutData%SubstructureLoads_Tmp2) ! SubstructureLoads_Tmp2 + call MeshUnpack(RF, OutData%PlatformLoads_Tmp) ! PlatformLoads_Tmp + call MeshUnpack(RF, OutData%PlatformLoads_Tmp2) ! PlatformLoads_Tmp2 + call MeshUnpack(RF, OutData%SubstructureLoads_Tmp_Farm) ! SubstructureLoads_Tmp_Farm + call MeshUnpack(RF, OutData%u_ED_TowerPtloads) ! u_ED_TowerPtloads if (allocated(OutData%u_ED_BladePtLoads)) deallocate(OutData%u_ED_BladePtLoads) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_ED_BladePtLoads(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_ED_BladePtLoads.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_ED_BladePtLoads.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%u_ED_BladePtLoads(i1)) ! u_ED_BladePtLoads + call MeshUnpack(RF, OutData%u_ED_BladePtLoads(i1)) ! u_ED_BladePtLoads end do end if - call MeshUnpack(Buf, OutData%u_SD_TPMesh) ! u_SD_TPMesh - call MeshUnpack(Buf, OutData%u_HD_M_Mesh) ! u_HD_M_Mesh - call MeshUnpack(Buf, OutData%u_HD_W_Mesh) ! u_HD_W_Mesh - call MeshUnpack(Buf, OutData%u_ED_HubPtLoad) ! u_ED_HubPtLoad - call MeshUnpack(Buf, OutData%u_ED_HubPtLoad_2) ! u_ED_HubPtLoad_2 + call MeshUnpack(RF, OutData%u_SD_TPMesh) ! u_SD_TPMesh + call MeshUnpack(RF, OutData%u_HD_M_Mesh) ! u_HD_M_Mesh + call MeshUnpack(RF, OutData%u_HD_W_Mesh) ! u_HD_W_Mesh + call MeshUnpack(RF, OutData%u_ED_HubPtLoad) ! u_ED_HubPtLoad + call MeshUnpack(RF, OutData%u_ED_HubPtLoad_2) ! u_ED_HubPtLoad_2 if (allocated(OutData%u_BD_RootMotion)) deallocate(OutData%u_BD_RootMotion) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_BD_RootMotion(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_BD_RootMotion.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_BD_RootMotion.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%u_BD_RootMotion(i1)) ! u_BD_RootMotion + call MeshUnpack(RF, OutData%u_BD_RootMotion(i1)) ! u_BD_RootMotion end do end if if (allocated(OutData%y_BD_BldMotion_4Loads)) deallocate(OutData%y_BD_BldMotion_4Loads) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%y_BD_BldMotion_4Loads(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y_BD_BldMotion_4Loads.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y_BD_BldMotion_4Loads.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%y_BD_BldMotion_4Loads(i1)) ! y_BD_BldMotion_4Loads + call MeshUnpack(RF, OutData%y_BD_BldMotion_4Loads(i1)) ! y_BD_BldMotion_4Loads end do end if if (allocated(OutData%u_BD_Distrload)) deallocate(OutData%u_BD_Distrload) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_BD_Distrload(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_BD_Distrload.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_BD_Distrload.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%u_BD_Distrload(i1)) ! u_BD_Distrload + call MeshUnpack(RF, OutData%u_BD_Distrload(i1)) ! u_BD_Distrload end do end if - call MeshUnpack(Buf, OutData%u_Orca_PtfmMesh) ! u_Orca_PtfmMesh - call MeshUnpack(Buf, OutData%u_ExtPtfm_PtfmMesh) ! u_ExtPtfm_PtfmMesh - if (allocated(OutData%HubOrient)) deallocate(OutData%HubOrient) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%HubOrient(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%HubOrient.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%HubOrient) - if (RegCheckErr(Buf, RoutineName)) return - end if + call MeshUnpack(RF, OutData%u_Orca_PtfmMesh) ! u_Orca_PtfmMesh + call MeshUnpack(RF, OutData%u_ExtPtfm_PtfmMesh) ! u_ExtPtfm_PtfmMesh + call RegUnpackAlloc(RF, OutData%HubOrient); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyExternInputType(SrcExternInputTypeData, DstExternInputTypeData, CtrlCode, ErrStat, ErrMsg) @@ -14030,49 +12401,39 @@ subroutine FAST_DestroyExternInputType(ExternInputTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine FAST_PackExternInputType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackExternInputType(RF, Indata) + type(RegFile), intent(inout) :: RF type(FAST_ExternInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackExternInputType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%GenTrq) - call RegPack(Buf, InData%ElecPwr) - call RegPack(Buf, InData%YawPosCom) - call RegPack(Buf, InData%YawRateCom) - call RegPack(Buf, InData%BlPitchCom) - call RegPack(Buf, InData%BlAirfoilCom) - call RegPack(Buf, InData%HSSBrFrac) - call RegPack(Buf, InData%LidarFocus) - call RegPack(Buf, InData%CableDeltaL) - call RegPack(Buf, InData%CableDeltaLdot) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FAST_UnPackExternInputType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%GenTrq) + call RegPack(RF, InData%ElecPwr) + call RegPack(RF, InData%YawPosCom) + call RegPack(RF, InData%YawRateCom) + call RegPack(RF, InData%BlPitchCom) + call RegPack(RF, InData%BlAirfoilCom) + call RegPack(RF, InData%HSSBrFrac) + call RegPack(RF, InData%LidarFocus) + call RegPack(RF, InData%CableDeltaL) + call RegPack(RF, InData%CableDeltaLdot) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FAST_UnPackExternInputType(RF, OutData) + type(RegFile), intent(inout) :: RF type(FAST_ExternInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackExternInputType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%GenTrq) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ElecPwr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawPosCom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawRateCom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BlPitchCom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BlAirfoilCom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HSSBrFrac) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LidarFocus) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CableDeltaL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CableDeltaLdot) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%GenTrq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ElecPwr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawPosCom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawRateCom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BlPitchCom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BlAirfoilCom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HSSBrFrac); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LidarFocus); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CableDeltaL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CableDeltaLdot); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -14118,50 +12479,41 @@ subroutine FAST_DestroyMisc(MiscData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine FAST_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(FAST_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%TiLstPrn) - call RegPack(Buf, InData%t_global) - call RegPack(Buf, InData%NextJacCalcTime) - call RegPack(Buf, InData%PrevClockTime) - call RegPack(Buf, InData%UsrTime1) - call RegPack(Buf, InData%UsrTime2) - call RegPack(Buf, InData%StrtTime) - call RegPack(Buf, InData%SimStrtTime) - call RegPack(Buf, InData%calcJacobian) - call FAST_PackExternInputType(Buf, InData%ExternInput) - call FAST_PackMiscLinType(Buf, InData%Lin) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FAST_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%TiLstPrn) + call RegPack(RF, InData%t_global) + call RegPack(RF, InData%NextJacCalcTime) + call RegPack(RF, InData%PrevClockTime) + call RegPack(RF, InData%UsrTime1) + call RegPack(RF, InData%UsrTime2) + call RegPack(RF, InData%StrtTime) + call RegPack(RF, InData%SimStrtTime) + call RegPack(RF, InData%calcJacobian) + call FAST_PackExternInputType(RF, InData%ExternInput) + call FAST_PackMiscLinType(RF, InData%Lin) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FAST_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(FAST_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackMisc' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%TiLstPrn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%t_global) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NextJacCalcTime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PrevClockTime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UsrTime1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UsrTime2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StrtTime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SimStrtTime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%calcJacobian) - if (RegCheckErr(Buf, RoutineName)) return - call FAST_UnpackExternInputType(Buf, OutData%ExternInput) ! ExternInput - call FAST_UnpackMiscLinType(Buf, OutData%Lin) ! Lin + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%TiLstPrn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%t_global); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NextJacCalcTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PrevClockTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UsrTime1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UsrTime2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StrtTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SimStrtTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%calcJacobian); if (RegCheckErr(RF, RoutineName)) return + call FAST_UnpackExternInputType(RF, OutData%ExternInput) ! ExternInput + call FAST_UnpackMiscLinType(RF, OutData%Lin) ! Lin end subroutine subroutine FAST_CopyInitData(SrcInitDataData, DstInitDataData, CtrlCode, ErrStat, ErrMsg) @@ -14382,115 +12734,113 @@ subroutine FAST_DestroyInitData(InitDataData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine FAST_PackInitData(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackInitData(RF, Indata) + type(RegFile), intent(inout) :: RF type(FAST_InitData), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackInitData' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call ED_PackInitInput(Buf, InData%InData_ED) - call ED_PackInitOutput(Buf, InData%OutData_ED) - call BD_PackInitInput(Buf, InData%InData_BD) - call RegPack(Buf, allocated(InData%OutData_BD)) + if (RF%ErrStat >= AbortErrLev) return + call ED_PackInitInput(RF, InData%InData_ED) + call ED_PackInitOutput(RF, InData%OutData_ED) + call BD_PackInitInput(RF, InData%InData_BD) + call RegPack(RF, allocated(InData%OutData_BD)) if (allocated(InData%OutData_BD)) then - call RegPackBounds(Buf, 1, lbound(InData%OutData_BD, kind=B8Ki), ubound(InData%OutData_BD, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OutData_BD, kind=B8Ki), ubound(InData%OutData_BD, kind=B8Ki)) LB(1:1) = lbound(InData%OutData_BD, kind=B8Ki) UB(1:1) = ubound(InData%OutData_BD, kind=B8Ki) do i1 = LB(1), UB(1) - call BD_PackInitOutput(Buf, InData%OutData_BD(i1)) - end do - end if - call SrvD_PackInitInput(Buf, InData%InData_SrvD) - call SrvD_PackInitOutput(Buf, InData%OutData_SrvD) - call AD14_PackInitInput(Buf, InData%InData_AD14) - call AD14_PackInitOutput(Buf, InData%OutData_AD14) - call AD_PackInitInput(Buf, InData%InData_AD) - call AD_PackInitOutput(Buf, InData%OutData_AD) - call InflowWind_PackInitInput(Buf, InData%InData_IfW) - call InflowWind_PackInitOutput(Buf, InData%OutData_IfW) - call ExtInfw_PackInitInput(Buf, InData%InData_ExtInfw) - call ExtInfw_PackInitOutput(Buf, InData%OutData_ExtInfw) - call SeaSt_PackInitInput(Buf, InData%InData_SeaSt) - call SeaSt_PackInitOutput(Buf, InData%OutData_SeaSt) - call HydroDyn_PackInitInput(Buf, InData%InData_HD) - call HydroDyn_PackInitOutput(Buf, InData%OutData_HD) - call SD_PackInitInput(Buf, InData%InData_SD) - call SD_PackInitOutput(Buf, InData%OutData_SD) - call ExtPtfm_PackInitInput(Buf, InData%InData_ExtPtfm) - call ExtPtfm_PackInitOutput(Buf, InData%OutData_ExtPtfm) - call MAP_PackInitInput(Buf, InData%InData_MAP) - call MAP_PackInitOutput(Buf, InData%OutData_MAP) - call FEAM_PackInitInput(Buf, InData%InData_FEAM) - call FEAM_PackInitOutput(Buf, InData%OutData_FEAM) - call MD_PackInitInput(Buf, InData%InData_MD) - call MD_PackInitOutput(Buf, InData%OutData_MD) - call Orca_PackInitInput(Buf, InData%InData_Orca) - call Orca_PackInitOutput(Buf, InData%OutData_Orca) - call IceFloe_PackInitInput(Buf, InData%InData_IceF) - call IceFloe_PackInitOutput(Buf, InData%OutData_IceF) - call IceD_PackInitInput(Buf, InData%InData_IceD) - call IceD_PackInitOutput(Buf, InData%OutData_IceD) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FAST_UnPackInitData(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + call BD_PackInitOutput(RF, InData%OutData_BD(i1)) + end do + end if + call SrvD_PackInitInput(RF, InData%InData_SrvD) + call SrvD_PackInitOutput(RF, InData%OutData_SrvD) + call AD14_PackInitInput(RF, InData%InData_AD14) + call AD14_PackInitOutput(RF, InData%OutData_AD14) + call AD_PackInitInput(RF, InData%InData_AD) + call AD_PackInitOutput(RF, InData%OutData_AD) + call InflowWind_PackInitInput(RF, InData%InData_IfW) + call InflowWind_PackInitOutput(RF, InData%OutData_IfW) + call ExtInfw_PackInitInput(RF, InData%InData_ExtInfw) + call ExtInfw_PackInitOutput(RF, InData%OutData_ExtInfw) + call SeaSt_PackInitInput(RF, InData%InData_SeaSt) + call SeaSt_PackInitOutput(RF, InData%OutData_SeaSt) + call HydroDyn_PackInitInput(RF, InData%InData_HD) + call HydroDyn_PackInitOutput(RF, InData%OutData_HD) + call SD_PackInitInput(RF, InData%InData_SD) + call SD_PackInitOutput(RF, InData%OutData_SD) + call ExtPtfm_PackInitInput(RF, InData%InData_ExtPtfm) + call ExtPtfm_PackInitOutput(RF, InData%OutData_ExtPtfm) + call MAP_PackInitInput(RF, InData%InData_MAP) + call MAP_PackInitOutput(RF, InData%OutData_MAP) + call FEAM_PackInitInput(RF, InData%InData_FEAM) + call FEAM_PackInitOutput(RF, InData%OutData_FEAM) + call MD_PackInitInput(RF, InData%InData_MD) + call MD_PackInitOutput(RF, InData%OutData_MD) + call Orca_PackInitInput(RF, InData%InData_Orca) + call Orca_PackInitOutput(RF, InData%OutData_Orca) + call IceFloe_PackInitInput(RF, InData%InData_IceF) + call IceFloe_PackInitOutput(RF, InData%OutData_IceF) + call IceD_PackInitInput(RF, InData%InData_IceD) + call IceD_PackInitOutput(RF, InData%OutData_IceD) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FAST_UnPackInitData(RF, OutData) + type(RegFile), intent(inout) :: RF type(FAST_InitData), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackInitData' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call ED_UnpackInitInput(Buf, OutData%InData_ED) ! InData_ED - call ED_UnpackInitOutput(Buf, OutData%OutData_ED) ! OutData_ED - call BD_UnpackInitInput(Buf, OutData%InData_BD) ! InData_BD + if (RF%ErrStat /= ErrID_None) return + call ED_UnpackInitInput(RF, OutData%InData_ED) ! InData_ED + call ED_UnpackInitOutput(RF, OutData%OutData_ED) ! OutData_ED + call BD_UnpackInitInput(RF, OutData%InData_BD) ! InData_BD if (allocated(OutData%OutData_BD)) deallocate(OutData%OutData_BD) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OutData_BD(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutData_BD.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - do i1 = LB(1), UB(1) - call BD_UnpackInitOutput(Buf, OutData%OutData_BD(i1)) ! OutData_BD - end do - end if - call SrvD_UnpackInitInput(Buf, OutData%InData_SrvD) ! InData_SrvD - call SrvD_UnpackInitOutput(Buf, OutData%OutData_SrvD) ! OutData_SrvD - call AD14_UnpackInitInput(Buf, OutData%InData_AD14) ! InData_AD14 - call AD14_UnpackInitOutput(Buf, OutData%OutData_AD14) ! OutData_AD14 - call AD_UnpackInitInput(Buf, OutData%InData_AD) ! InData_AD - call AD_UnpackInitOutput(Buf, OutData%OutData_AD) ! OutData_AD - call InflowWind_UnpackInitInput(Buf, OutData%InData_IfW) ! InData_IfW - call InflowWind_UnpackInitOutput(Buf, OutData%OutData_IfW) ! OutData_IfW - call ExtInfw_UnpackInitInput(Buf, OutData%InData_ExtInfw) ! InData_ExtInfw - call ExtInfw_UnpackInitOutput(Buf, OutData%OutData_ExtInfw) ! OutData_ExtInfw - call SeaSt_UnpackInitInput(Buf, OutData%InData_SeaSt) ! InData_SeaSt - call SeaSt_UnpackInitOutput(Buf, OutData%OutData_SeaSt) ! OutData_SeaSt - call HydroDyn_UnpackInitInput(Buf, OutData%InData_HD) ! InData_HD - call HydroDyn_UnpackInitOutput(Buf, OutData%OutData_HD) ! OutData_HD - call SD_UnpackInitInput(Buf, OutData%InData_SD) ! InData_SD - call SD_UnpackInitOutput(Buf, OutData%OutData_SD) ! OutData_SD - call ExtPtfm_UnpackInitInput(Buf, OutData%InData_ExtPtfm) ! InData_ExtPtfm - call ExtPtfm_UnpackInitOutput(Buf, OutData%OutData_ExtPtfm) ! OutData_ExtPtfm - call MAP_UnpackInitInput(Buf, OutData%InData_MAP) ! InData_MAP - call MAP_UnpackInitOutput(Buf, OutData%OutData_MAP) ! OutData_MAP - call FEAM_UnpackInitInput(Buf, OutData%InData_FEAM) ! InData_FEAM - call FEAM_UnpackInitOutput(Buf, OutData%OutData_FEAM) ! OutData_FEAM - call MD_UnpackInitInput(Buf, OutData%InData_MD) ! InData_MD - call MD_UnpackInitOutput(Buf, OutData%OutData_MD) ! OutData_MD - call Orca_UnpackInitInput(Buf, OutData%InData_Orca) ! InData_Orca - call Orca_UnpackInitOutput(Buf, OutData%OutData_Orca) ! OutData_Orca - call IceFloe_UnpackInitInput(Buf, OutData%InData_IceF) ! InData_IceF - call IceFloe_UnpackInitOutput(Buf, OutData%OutData_IceF) ! OutData_IceF - call IceD_UnpackInitInput(Buf, OutData%InData_IceD) ! InData_IceD - call IceD_UnpackInitOutput(Buf, OutData%OutData_IceD) ! OutData_IceD + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutData_BD.', RF%ErrStat, RF%ErrMsg, RoutineName) + return + end if + do i1 = LB(1), UB(1) + call BD_UnpackInitOutput(RF, OutData%OutData_BD(i1)) ! OutData_BD + end do + end if + call SrvD_UnpackInitInput(RF, OutData%InData_SrvD) ! InData_SrvD + call SrvD_UnpackInitOutput(RF, OutData%OutData_SrvD) ! OutData_SrvD + call AD14_UnpackInitInput(RF, OutData%InData_AD14) ! InData_AD14 + call AD14_UnpackInitOutput(RF, OutData%OutData_AD14) ! OutData_AD14 + call AD_UnpackInitInput(RF, OutData%InData_AD) ! InData_AD + call AD_UnpackInitOutput(RF, OutData%OutData_AD) ! OutData_AD + call InflowWind_UnpackInitInput(RF, OutData%InData_IfW) ! InData_IfW + call InflowWind_UnpackInitOutput(RF, OutData%OutData_IfW) ! OutData_IfW + call ExtInfw_UnpackInitInput(RF, OutData%InData_ExtInfw) ! InData_ExtInfw + call ExtInfw_UnpackInitOutput(RF, OutData%OutData_ExtInfw) ! OutData_ExtInfw + call SeaSt_UnpackInitInput(RF, OutData%InData_SeaSt) ! InData_SeaSt + call SeaSt_UnpackInitOutput(RF, OutData%OutData_SeaSt) ! OutData_SeaSt + call HydroDyn_UnpackInitInput(RF, OutData%InData_HD) ! InData_HD + call HydroDyn_UnpackInitOutput(RF, OutData%OutData_HD) ! OutData_HD + call SD_UnpackInitInput(RF, OutData%InData_SD) ! InData_SD + call SD_UnpackInitOutput(RF, OutData%OutData_SD) ! OutData_SD + call ExtPtfm_UnpackInitInput(RF, OutData%InData_ExtPtfm) ! InData_ExtPtfm + call ExtPtfm_UnpackInitOutput(RF, OutData%OutData_ExtPtfm) ! OutData_ExtPtfm + call MAP_UnpackInitInput(RF, OutData%InData_MAP) ! InData_MAP + call MAP_UnpackInitOutput(RF, OutData%OutData_MAP) ! OutData_MAP + call FEAM_UnpackInitInput(RF, OutData%InData_FEAM) ! InData_FEAM + call FEAM_UnpackInitOutput(RF, OutData%OutData_FEAM) ! OutData_FEAM + call MD_UnpackInitInput(RF, OutData%InData_MD) ! InData_MD + call MD_UnpackInitOutput(RF, OutData%OutData_MD) ! OutData_MD + call Orca_UnpackInitInput(RF, OutData%InData_Orca) ! InData_Orca + call Orca_UnpackInitOutput(RF, OutData%OutData_Orca) ! OutData_Orca + call IceFloe_UnpackInitInput(RF, OutData%InData_IceF) ! InData_IceF + call IceFloe_UnpackInitOutput(RF, OutData%OutData_IceF) ! OutData_IceF + call IceD_UnpackInitInput(RF, OutData%InData_IceD) ! InData_IceD + call IceD_UnpackInitOutput(RF, OutData%OutData_IceD) ! OutData_IceD end subroutine subroutine FAST_CopyExternInitType(SrcExternInitTypeData, DstExternInitTypeData, CtrlCode, ErrStat, ErrMsg) @@ -14564,52 +12914,37 @@ subroutine FAST_DestroyExternInitType(ExternInitTypeData, ErrStat, ErrMsg) nullify(ExternInitTypeData%windGrid_data) end subroutine -subroutine FAST_PackExternInitType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackExternInitType(RF, Indata) + type(RegFile), intent(inout) :: RF type(FAST_ExternInitType), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackExternInitType' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Tmax) - call RegPack(Buf, InData%SensorType) - call RegPack(Buf, InData%LidRadialVel) - call RegPack(Buf, InData%TurbineID) - call RegPack(Buf, InData%TurbinePos) - call RegPack(Buf, InData%WaveFieldMod) - call RegPack(Buf, InData%NumSC2CtrlGlob) - call RegPack(Buf, InData%NumSC2Ctrl) - call RegPack(Buf, InData%NumCtrl2SC) - call RegPack(Buf, allocated(InData%fromSCGlob)) - if (allocated(InData%fromSCGlob)) then - call RegPackBounds(Buf, 1, lbound(InData%fromSCGlob, kind=B8Ki), ubound(InData%fromSCGlob, kind=B8Ki)) - call RegPack(Buf, InData%fromSCGlob) - end if - call RegPack(Buf, allocated(InData%fromSC)) - if (allocated(InData%fromSC)) then - call RegPackBounds(Buf, 1, lbound(InData%fromSC, kind=B8Ki), ubound(InData%fromSC, kind=B8Ki)) - call RegPack(Buf, InData%fromSC) - end if - call RegPack(Buf, InData%FarmIntegration) - call RegPack(Buf, InData%windGrid_n) - call RegPack(Buf, InData%windGrid_delta) - call RegPack(Buf, InData%windGrid_pZero) - call RegPack(Buf, associated(InData%windGrid_data)) - if (associated(InData%windGrid_data)) then - call RegPackBounds(Buf, 5, lbound(InData%windGrid_data, kind=B8Ki), ubound(InData%windGrid_data, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%windGrid_data), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%windGrid_data) - end if - end if - call RegPack(Buf, InData%RootName) - call RegPack(Buf, InData%NumActForcePtsBlade) - call RegPack(Buf, InData%NumActForcePtsTower) - call RegPack(Buf, InData%NodeClusterType) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FAST_UnPackExternInitType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Tmax) + call RegPack(RF, InData%SensorType) + call RegPack(RF, InData%LidRadialVel) + call RegPack(RF, InData%TurbineID) + call RegPack(RF, InData%TurbinePos) + call RegPack(RF, InData%WaveFieldMod) + call RegPack(RF, InData%NumSC2CtrlGlob) + call RegPack(RF, InData%NumSC2Ctrl) + call RegPack(RF, InData%NumCtrl2SC) + call RegPackAlloc(RF, InData%fromSCGlob) + call RegPackAlloc(RF, InData%fromSC) + call RegPack(RF, InData%FarmIntegration) + call RegPack(RF, InData%windGrid_n) + call RegPack(RF, InData%windGrid_delta) + call RegPack(RF, InData%windGrid_pZero) + call RegPackPtr(RF, InData%windGrid_data) + call RegPack(RF, InData%RootName) + call RegPack(RF, InData%NumActForcePtsBlade) + call RegPack(RF, InData%NumActForcePtsTower) + call RegPack(RF, InData%NodeClusterType) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FAST_UnPackExternInitType(RF, OutData) + type(RegFile), intent(inout) :: RF type(FAST_ExternInitType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackExternInitType' integer(B8Ki) :: LB(5), UB(5) @@ -14617,93 +12952,27 @@ subroutine FAST_UnPackExternInitType(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Tmax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SensorType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LidRadialVel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TurbineID) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TurbinePos) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveFieldMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumSC2CtrlGlob) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumSC2Ctrl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumCtrl2SC) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%fromSCGlob)) deallocate(OutData%fromSCGlob) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%fromSCGlob(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fromSCGlob.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%fromSCGlob) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%fromSC)) deallocate(OutData%fromSC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%fromSC(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fromSC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%fromSC) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%FarmIntegration) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%windGrid_n) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%windGrid_delta) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%windGrid_pZero) - if (RegCheckErr(Buf, RoutineName)) return - if (associated(OutData%windGrid_data)) deallocate(OutData%windGrid_data) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 5, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%windGrid_data, UB(1:5)-LB(1:5)) - OutData%windGrid_data(LB(1):,LB(2):,LB(3):,LB(4):,LB(5):) => OutData%windGrid_data - else - allocate(OutData%windGrid_data(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%windGrid_data.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%windGrid_data) - call RegUnpack(Buf, OutData%windGrid_data) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%windGrid_data => null() - end if - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumActForcePtsBlade) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumActForcePtsTower) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NodeClusterType) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Tmax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SensorType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LidRadialVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TurbineID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TurbinePos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveFieldMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumSC2CtrlGlob); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumSC2Ctrl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumCtrl2SC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%fromSCGlob); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%fromSC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FarmIntegration); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%windGrid_n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%windGrid_delta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%windGrid_pZero); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%windGrid_data); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumActForcePtsBlade); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumActForcePtsTower); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NodeClusterType); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine FAST_CopyTurbineType(SrcTurbineTypeData, DstTurbineTypeData, CtrlCode, ErrStat, ErrMsg) @@ -14841,66 +13110,65 @@ subroutine FAST_DestroyTurbineType(TurbineTypeData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine FAST_PackTurbineType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine FAST_PackTurbineType(RF, Indata) + type(RegFile), intent(inout) :: RF type(FAST_TurbineType), intent(in) :: InData character(*), parameter :: RoutineName = 'FAST_PackTurbineType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%TurbID) - call FAST_PackParam(Buf, InData%p_FAST) - call FAST_PackOutputFileType(Buf, InData%y_FAST) - call FAST_PackMisc(Buf, InData%m_FAST) - call FAST_PackModuleMapType(Buf, InData%MeshMapData) - call FAST_PackElastoDyn_Data(Buf, InData%ED) - call FAST_PackBeamDyn_Data(Buf, InData%BD) - call FAST_PackServoDyn_Data(Buf, InData%SrvD) - call FAST_PackAeroDyn_Data(Buf, InData%AD) - call FAST_PackAeroDyn14_Data(Buf, InData%AD14) - call FAST_PackInflowWind_Data(Buf, InData%IfW) - call FAST_PackExternalInflow_Data(Buf, InData%ExtInfw) - call FAST_PackSCDataEx_Data(Buf, InData%SC_DX) - call FAST_PackSeaState_Data(Buf, InData%SeaSt) - call FAST_PackHydroDyn_Data(Buf, InData%HD) - call FAST_PackSubDyn_Data(Buf, InData%SD) - call FAST_PackMAP_Data(Buf, InData%MAP) - call FAST_PackFEAMooring_Data(Buf, InData%FEAM) - call FAST_PackMoorDyn_Data(Buf, InData%MD) - call FAST_PackOrcaFlex_Data(Buf, InData%Orca) - call FAST_PackIceFloe_Data(Buf, InData%IceF) - call FAST_PackIceDyn_Data(Buf, InData%IceD) - call FAST_PackExtPtfm_Data(Buf, InData%ExtPtfm) - if (RegCheckErr(Buf, RoutineName)) return -end subroutine - -subroutine FAST_UnPackTurbineType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%TurbID) + call FAST_PackParam(RF, InData%p_FAST) + call FAST_PackOutputFileType(RF, InData%y_FAST) + call FAST_PackMisc(RF, InData%m_FAST) + call FAST_PackModuleMapType(RF, InData%MeshMapData) + call FAST_PackElastoDyn_Data(RF, InData%ED) + call FAST_PackBeamDyn_Data(RF, InData%BD) + call FAST_PackServoDyn_Data(RF, InData%SrvD) + call FAST_PackAeroDyn_Data(RF, InData%AD) + call FAST_PackAeroDyn14_Data(RF, InData%AD14) + call FAST_PackInflowWind_Data(RF, InData%IfW) + call FAST_PackExternalInflow_Data(RF, InData%ExtInfw) + call FAST_PackSCDataEx_Data(RF, InData%SC_DX) + call FAST_PackSeaState_Data(RF, InData%SeaSt) + call FAST_PackHydroDyn_Data(RF, InData%HD) + call FAST_PackSubDyn_Data(RF, InData%SD) + call FAST_PackMAP_Data(RF, InData%MAP) + call FAST_PackFEAMooring_Data(RF, InData%FEAM) + call FAST_PackMoorDyn_Data(RF, InData%MD) + call FAST_PackOrcaFlex_Data(RF, InData%Orca) + call FAST_PackIceFloe_Data(RF, InData%IceF) + call FAST_PackIceDyn_Data(RF, InData%IceD) + call FAST_PackExtPtfm_Data(RF, InData%ExtPtfm) + if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine FAST_UnPackTurbineType(RF, OutData) + type(RegFile), intent(inout) :: RF type(FAST_TurbineType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'FAST_UnPackTurbineType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%TurbID) - if (RegCheckErr(Buf, RoutineName)) return - call FAST_UnpackParam(Buf, OutData%p_FAST) ! p_FAST - call FAST_UnpackOutputFileType(Buf, OutData%y_FAST) ! y_FAST - call FAST_UnpackMisc(Buf, OutData%m_FAST) ! m_FAST - call FAST_UnpackModuleMapType(Buf, OutData%MeshMapData) ! MeshMapData - call FAST_UnpackElastoDyn_Data(Buf, OutData%ED) ! ED - call FAST_UnpackBeamDyn_Data(Buf, OutData%BD) ! BD - call FAST_UnpackServoDyn_Data(Buf, OutData%SrvD) ! SrvD - call FAST_UnpackAeroDyn_Data(Buf, OutData%AD) ! AD - call FAST_UnpackAeroDyn14_Data(Buf, OutData%AD14) ! AD14 - call FAST_UnpackInflowWind_Data(Buf, OutData%IfW) ! IfW - call FAST_UnpackExternalInflow_Data(Buf, OutData%ExtInfw) ! ExtInfw - call FAST_UnpackSCDataEx_Data(Buf, OutData%SC_DX) ! SC_DX - call FAST_UnpackSeaState_Data(Buf, OutData%SeaSt) ! SeaSt - call FAST_UnpackHydroDyn_Data(Buf, OutData%HD) ! HD - call FAST_UnpackSubDyn_Data(Buf, OutData%SD) ! SD - call FAST_UnpackMAP_Data(Buf, OutData%MAP) ! MAP - call FAST_UnpackFEAMooring_Data(Buf, OutData%FEAM) ! FEAM - call FAST_UnpackMoorDyn_Data(Buf, OutData%MD) ! MD - call FAST_UnpackOrcaFlex_Data(Buf, OutData%Orca) ! Orca - call FAST_UnpackIceFloe_Data(Buf, OutData%IceF) ! IceF - call FAST_UnpackIceDyn_Data(Buf, OutData%IceD) ! IceD - call FAST_UnpackExtPtfm_Data(Buf, OutData%ExtPtfm) ! ExtPtfm + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%TurbID); if (RegCheckErr(RF, RoutineName)) return + call FAST_UnpackParam(RF, OutData%p_FAST) ! p_FAST + call FAST_UnpackOutputFileType(RF, OutData%y_FAST) ! y_FAST + call FAST_UnpackMisc(RF, OutData%m_FAST) ! m_FAST + call FAST_UnpackModuleMapType(RF, OutData%MeshMapData) ! MeshMapData + call FAST_UnpackElastoDyn_Data(RF, OutData%ED) ! ED + call FAST_UnpackBeamDyn_Data(RF, OutData%BD) ! BD + call FAST_UnpackServoDyn_Data(RF, OutData%SrvD) ! SrvD + call FAST_UnpackAeroDyn_Data(RF, OutData%AD) ! AD + call FAST_UnpackAeroDyn14_Data(RF, OutData%AD14) ! AD14 + call FAST_UnpackInflowWind_Data(RF, OutData%IfW) ! IfW + call FAST_UnpackExternalInflow_Data(RF, OutData%ExtInfw) ! ExtInfw + call FAST_UnpackSCDataEx_Data(RF, OutData%SC_DX) ! SC_DX + call FAST_UnpackSeaState_Data(RF, OutData%SeaSt) ! SeaSt + call FAST_UnpackHydroDyn_Data(RF, OutData%HD) ! HD + call FAST_UnpackSubDyn_Data(RF, OutData%SD) ! SD + call FAST_UnpackMAP_Data(RF, OutData%MAP) ! MAP + call FAST_UnpackFEAMooring_Data(RF, OutData%FEAM) ! FEAM + call FAST_UnpackMoorDyn_Data(RF, OutData%MD) ! MD + call FAST_UnpackOrcaFlex_Data(RF, OutData%Orca) ! Orca + call FAST_UnpackIceFloe_Data(RF, OutData%IceF) ! IceF + call FAST_UnpackIceDyn_Data(RF, OutData%IceD) ! IceD + call FAST_UnpackExtPtfm_Data(RF, OutData%ExtPtfm) ! ExtPtfm end subroutine END MODULE FAST_Types !ENDOFREGISTRYGENERATEDFILE diff --git a/modules/openfast-registry/src/registry_gen_fortran.cpp b/modules/openfast-registry/src/registry_gen_fortran.cpp index 91c1f393e9..9a407c184d 100644 --- a/modules/openfast-registry/src/registry_gen_fortran.cpp +++ b/modules/openfast-registry/src/registry_gen_fortran.cpp @@ -398,43 +398,6 @@ void gen_copy(std::ostream &w, const Module &mod, const DataType::Derived &ddt, continue; } - // If allocatable field that is not a derived type, use Fortran 2003 automatic - // allocation to duplicate the source variable - if (field.is_allocatable && field.data_type->tag != DataType::Tag::Derived) - { - // If source is allocated or associated - w << indent << "if (" << alloc_assoc << "(" << src << ")) then"; - indent += " "; - - // Copy values - w << indent << dst << " = " << src; - - // If C code and field isn't a pointer, copy data to C object - if (gen_c_code && !field.is_pointer) - { - if (field.rank == 0) // scalar of any type OR a character array - { - std::string tmp = ddt.name_short + "Data%C_obj%" + field.name; - w << indent << "Dst" << tmp << " = Src" << tmp; - } - } - - // End if dst alloc/assoc - indent.erase(indent.size() - 3); - w << indent << "else if (" << alloc_assoc << "(" << dst << ")) then"; - if (field.is_pointer && !field.is_target) - { - w << indent << " nullify(" << dst << ")"; - } - else - { - w << indent << " deallocate(" << dst << ")"; - } - w << indent << "end if"; - - continue; - } - // If field is allocatable if (field.is_allocatable) { diff --git a/modules/orcaflex-interface/src/OrcaFlexInterface_Types.f90 b/modules/orcaflex-interface/src/OrcaFlexInterface_Types.f90 index 0252be5e3f..6a6e5abce4 100644 --- a/modules/orcaflex-interface/src/OrcaFlexInterface_Types.f90 +++ b/modules/orcaflex-interface/src/OrcaFlexInterface_Types.f90 @@ -131,28 +131,25 @@ subroutine Orca_DestroyInitInput(InitInputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Orca_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Orca_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Orca_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%InputFile) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, InData%TMax) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%InputFile) + call RegPack(RF, InData%RootName) + call RegPack(RF, InData%TMax) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Orca_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Orca_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Orca_UnPackInitInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%InputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TMax) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%InputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TMax); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Orca_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -215,62 +212,28 @@ subroutine Orca_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine Orca_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Orca_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Orca_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Orca_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Orca_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Orca_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Orca_CopyInputFile(SrcInputFileData, DstInputFileData, CtrlCode, ErrStat, ErrMsg) @@ -298,34 +261,29 @@ subroutine Orca_DestroyInputFile(InputFileData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Orca_PackInputFile(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_PackInputFile(RF, Indata) + type(RegFile), intent(inout) :: RF type(Orca_InputFile), intent(in) :: InData character(*), parameter :: RoutineName = 'Orca_PackInputFile' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DLL_FileName) - call RegPack(Buf, InData%DLL_InitProcName) - call RegPack(Buf, InData%DLL_CalcProcName) - call RegPack(Buf, InData%DLL_EndProcName) - call RegPack(Buf, InData%DirRoot) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DLL_FileName) + call RegPack(RF, InData%DLL_InitProcName) + call RegPack(RF, InData%DLL_CalcProcName) + call RegPack(RF, InData%DLL_EndProcName) + call RegPack(RF, InData%DirRoot) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Orca_UnPackInputFile(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_UnPackInputFile(RF, OutData) + type(RegFile), intent(inout) :: RF type(Orca_InputFile), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Orca_UnPackInputFile' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DLL_FileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DLL_InitProcName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DLL_CalcProcName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DLL_EndProcName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DirRoot) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DLL_FileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DLL_InitProcName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DLL_CalcProcName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DLL_EndProcName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DirRoot); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Orca_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -349,22 +307,21 @@ subroutine Orca_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Orca_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(Orca_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'Orca_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyOtherState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyOtherState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Orca_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(Orca_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Orca_UnPackOtherState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyOtherState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyOtherState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Orca_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -408,53 +365,32 @@ subroutine Orca_DestroyMisc(MiscData, ErrStat, ErrMsg) end if end subroutine -subroutine Orca_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(Orca_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'Orca_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%PtfmAM) - call RegPack(Buf, InData%PtfmFt) - call RegPack(Buf, InData%F_PtfmAM) - call RegPack(Buf, allocated(InData%AllOuts)) - if (allocated(InData%AllOuts)) then - call RegPackBounds(Buf, 1, lbound(InData%AllOuts, kind=B8Ki), ubound(InData%AllOuts, kind=B8Ki)) - call RegPack(Buf, InData%AllOuts) - end if - call RegPack(Buf, InData%LastTimeStep) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%PtfmAM) + call RegPack(RF, InData%PtfmFt) + call RegPack(RF, InData%F_PtfmAM) + call RegPackAlloc(RF, InData%AllOuts) + call RegPack(RF, InData%LastTimeStep) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Orca_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(Orca_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Orca_UnPackMisc' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%PtfmAM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmFt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%F_PtfmAM) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%AllOuts)) deallocate(OutData%AllOuts) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AllOuts(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AllOuts.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AllOuts) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%LastTimeStep) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%PtfmAM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmFt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%F_PtfmAM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AllOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LastTimeStep); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Orca_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -517,61 +453,55 @@ subroutine Orca_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine Orca_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(Orca_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'Orca_PackParam' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT) - call DLLTypePack(Buf, InData%DLL_Orca) - call RegPack(Buf, InData%SimNamePath) - call RegPack(Buf, InData%SimNamePathLen) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, allocated(InData%OutParam)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT) + call DLLTypePack(RF, InData%DLL_Orca) + call RegPack(RF, InData%SimNamePath) + call RegPack(RF, InData%SimNamePathLen) + call RegPack(RF, InData%NumOuts) + call RegPack(RF, allocated(InData%OutParam)) if (allocated(InData%OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) LB(1:1) = lbound(InData%OutParam, kind=B8Ki) UB(1:1) = ubound(InData%OutParam, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackOutParmType(Buf, InData%OutParam(i1)) + call NWTC_Library_PackOutParmType(RF, InData%OutParam(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Orca_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(Orca_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Orca_UnPackParam' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - call DLLTypeUnpack(Buf, OutData%DLL_Orca) ! DLL_Orca - call RegUnpack(Buf, OutData%SimNamePath) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SimNamePathLen) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call DLLTypeUnpack(RF, OutData%DLL_Orca) ! DLL_Orca + call RegUnpack(RF, OutData%SimNamePath); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SimNamePathLen); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%OutParam)) deallocate(OutData%OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackOutParmType(Buf, OutData%OutParam(i1)) ! OutParam + call NWTC_Library_UnpackOutParmType(RF, OutData%OutParam(i1)) ! OutParam end do end if end subroutine @@ -605,21 +535,21 @@ subroutine Orca_DestroyInput(InputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine Orca_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Orca_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Orca_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%PtfmMesh) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%PtfmMesh) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Orca_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Orca_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Orca_UnPackInput' - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%PtfmMesh) ! PtfmMesh + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%PtfmMesh) ! PtfmMesh end subroutine subroutine Orca_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -667,43 +597,26 @@ subroutine Orca_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine Orca_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Orca_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Orca_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%PtfmMesh) - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%PtfmMesh) + call RegPackAlloc(RF, InData%WriteOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Orca_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Orca_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Orca_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%PtfmMesh) ! PtfmMesh - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%PtfmMesh) ! PtfmMesh + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Orca_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -727,22 +640,21 @@ subroutine Orca_DestroyContState(ContStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Orca_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(Orca_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'Orca_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Dummy) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Orca_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(Orca_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Orca_UnPackContState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Dummy); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Orca_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -766,22 +678,21 @@ subroutine Orca_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Orca_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(Orca_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'Orca_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Dummy) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Orca_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(Orca_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Orca_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Dummy); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Orca_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -805,22 +716,21 @@ subroutine Orca_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Orca_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(Orca_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'Orca_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstrState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Orca_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Orca_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(Orca_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Orca_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstrState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Orca_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/seastate/src/Current_Types.f90 b/modules/seastate/src/Current_Types.f90 index 02e3286938..4a2917f3a2 100644 --- a/modules/seastate/src/Current_Types.f90 +++ b/modules/seastate/src/Current_Types.f90 @@ -109,77 +109,48 @@ subroutine Current_DestroyInitInput(InitInputData, ErrStat, ErrMsg) end if end subroutine -subroutine Current_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Current_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Current_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Current_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%CurrSSV0) - call RegPack(Buf, InData%CurrSSDirChr) - call RegPack(Buf, InData%CurrSSDir) - call RegPack(Buf, InData%CurrNSRef) - call RegPack(Buf, InData%CurrNSV0) - call RegPack(Buf, InData%CurrNSDir) - call RegPack(Buf, InData%CurrDIV) - call RegPack(Buf, InData%CurrDIDir) - call RegPack(Buf, InData%CurrMod) - call RegPack(Buf, InData%EffWtrDpth) - call RegPack(Buf, allocated(InData%WaveKinGridzi)) - if (allocated(InData%WaveKinGridzi)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveKinGridzi, kind=B8Ki), ubound(InData%WaveKinGridzi, kind=B8Ki)) - call RegPack(Buf, InData%WaveKinGridzi) - end if - call RegPack(Buf, InData%NGridPts) - call RegPack(Buf, InData%DirRoot) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%CurrSSV0) + call RegPack(RF, InData%CurrSSDirChr) + call RegPack(RF, InData%CurrSSDir) + call RegPack(RF, InData%CurrNSRef) + call RegPack(RF, InData%CurrNSV0) + call RegPack(RF, InData%CurrNSDir) + call RegPack(RF, InData%CurrDIV) + call RegPack(RF, InData%CurrDIDir) + call RegPack(RF, InData%CurrMod) + call RegPack(RF, InData%EffWtrDpth) + call RegPackAlloc(RF, InData%WaveKinGridzi) + call RegPack(RF, InData%NGridPts) + call RegPack(RF, InData%DirRoot) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Current_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Current_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Current_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Current_UnPackInitInput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%CurrSSV0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CurrSSDirChr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CurrSSDir) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CurrNSRef) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CurrNSV0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CurrNSDir) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CurrDIV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CurrDIDir) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CurrMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EffWtrDpth) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WaveKinGridzi)) deallocate(OutData%WaveKinGridzi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveKinGridzi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveKinGridzi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveKinGridzi) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NGridPts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DirRoot) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%CurrSSV0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CurrSSDirChr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CurrSSDir); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CurrNSRef); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CurrNSV0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CurrNSDir); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CurrDIV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CurrDIDir); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CurrMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EffWtrDpth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveKinGridzi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NGridPts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DirRoot); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Current_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -236,66 +207,30 @@ subroutine Current_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine Current_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Current_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Current_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Current_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%CurrVxi)) - if (allocated(InData%CurrVxi)) then - call RegPackBounds(Buf, 1, lbound(InData%CurrVxi, kind=B8Ki), ubound(InData%CurrVxi, kind=B8Ki)) - call RegPack(Buf, InData%CurrVxi) - end if - call RegPack(Buf, allocated(InData%CurrVyi)) - if (allocated(InData%CurrVyi)) then - call RegPackBounds(Buf, 1, lbound(InData%CurrVyi, kind=B8Ki), ubound(InData%CurrVyi, kind=B8Ki)) - call RegPack(Buf, InData%CurrVyi) - end if - call RegPack(Buf, InData%PCurrVxiPz0) - call RegPack(Buf, InData%PCurrVyiPz0) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%CurrVxi) + call RegPackAlloc(RF, InData%CurrVyi) + call RegPack(RF, InData%PCurrVxiPz0) + call RegPack(RF, InData%PCurrVyiPz0) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Current_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Current_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Current_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Current_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%CurrVxi)) deallocate(OutData%CurrVxi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CurrVxi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CurrVxi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CurrVxi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CurrVyi)) deallocate(OutData%CurrVyi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CurrVyi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CurrVyi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CurrVyi) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%PCurrVxiPz0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PCurrVyiPz0) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%CurrVxi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CurrVyi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PCurrVxiPz0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PCurrVyiPz0); if (RegCheckErr(RF, RoutineName)) return end subroutine END MODULE Current_Types !ENDOFREGISTRYGENERATEDFILE diff --git a/modules/seastate/src/SeaSt_WaveField_Types.f90 b/modules/seastate/src/SeaSt_WaveField_Types.f90 index 10331b864d..656e7f8460 100644 --- a/modules/seastate/src/SeaSt_WaveField_Types.f90 +++ b/modules/seastate/src/SeaSt_WaveField_Types.f90 @@ -364,372 +364,96 @@ subroutine SeaSt_WaveField_DestroySeaSt_WaveFieldType(SeaSt_WaveFieldTypeData, E end if end subroutine -subroutine SeaSt_WaveField_PackSeaSt_WaveFieldType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_WaveField_PackSeaSt_WaveFieldType(RF, Indata) + type(RegFile), intent(inout) :: RF type(SeaSt_WaveFieldType), intent(in) :: InData character(*), parameter :: RoutineName = 'SeaSt_WaveField_PackSeaSt_WaveFieldType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WaveTime)) - if (allocated(InData%WaveTime)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveTime, kind=B8Ki), ubound(InData%WaveTime, kind=B8Ki)) - call RegPack(Buf, InData%WaveTime) - end if - call RegPack(Buf, allocated(InData%WaveDynP)) - if (allocated(InData%WaveDynP)) then - call RegPackBounds(Buf, 4, lbound(InData%WaveDynP, kind=B8Ki), ubound(InData%WaveDynP, kind=B8Ki)) - call RegPack(Buf, InData%WaveDynP) - end if - call RegPack(Buf, allocated(InData%WaveAcc)) - if (allocated(InData%WaveAcc)) then - call RegPackBounds(Buf, 5, lbound(InData%WaveAcc, kind=B8Ki), ubound(InData%WaveAcc, kind=B8Ki)) - call RegPack(Buf, InData%WaveAcc) - end if - call RegPack(Buf, allocated(InData%WaveAccMCF)) - if (allocated(InData%WaveAccMCF)) then - call RegPackBounds(Buf, 5, lbound(InData%WaveAccMCF, kind=B8Ki), ubound(InData%WaveAccMCF, kind=B8Ki)) - call RegPack(Buf, InData%WaveAccMCF) - end if - call RegPack(Buf, allocated(InData%WaveVel)) - if (allocated(InData%WaveVel)) then - call RegPackBounds(Buf, 5, lbound(InData%WaveVel, kind=B8Ki), ubound(InData%WaveVel, kind=B8Ki)) - call RegPack(Buf, InData%WaveVel) - end if - call RegPack(Buf, allocated(InData%PWaveDynP0)) - if (allocated(InData%PWaveDynP0)) then - call RegPackBounds(Buf, 3, lbound(InData%PWaveDynP0, kind=B8Ki), ubound(InData%PWaveDynP0, kind=B8Ki)) - call RegPack(Buf, InData%PWaveDynP0) - end if - call RegPack(Buf, allocated(InData%PWaveAcc0)) - if (allocated(InData%PWaveAcc0)) then - call RegPackBounds(Buf, 4, lbound(InData%PWaveAcc0, kind=B8Ki), ubound(InData%PWaveAcc0, kind=B8Ki)) - call RegPack(Buf, InData%PWaveAcc0) - end if - call RegPack(Buf, allocated(InData%PWaveAccMCF0)) - if (allocated(InData%PWaveAccMCF0)) then - call RegPackBounds(Buf, 4, lbound(InData%PWaveAccMCF0, kind=B8Ki), ubound(InData%PWaveAccMCF0, kind=B8Ki)) - call RegPack(Buf, InData%PWaveAccMCF0) - end if - call RegPack(Buf, allocated(InData%PWaveVel0)) - if (allocated(InData%PWaveVel0)) then - call RegPackBounds(Buf, 4, lbound(InData%PWaveVel0, kind=B8Ki), ubound(InData%PWaveVel0, kind=B8Ki)) - call RegPack(Buf, InData%PWaveVel0) - end if - call RegPack(Buf, allocated(InData%WaveElev0)) - if (allocated(InData%WaveElev0)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveElev0, kind=B8Ki), ubound(InData%WaveElev0, kind=B8Ki)) - call RegPack(Buf, InData%WaveElev0) - end if - call RegPack(Buf, allocated(InData%WaveElev1)) - if (allocated(InData%WaveElev1)) then - call RegPackBounds(Buf, 3, lbound(InData%WaveElev1, kind=B8Ki), ubound(InData%WaveElev1, kind=B8Ki)) - call RegPack(Buf, InData%WaveElev1) - end if - call RegPack(Buf, allocated(InData%WaveElev2)) - if (allocated(InData%WaveElev2)) then - call RegPackBounds(Buf, 3, lbound(InData%WaveElev2, kind=B8Ki), ubound(InData%WaveElev2, kind=B8Ki)) - call RegPack(Buf, InData%WaveElev2) - end if - call SeaSt_Interp_PackParam(Buf, InData%SeaSt_Interp_p) - call RegPack(Buf, InData%WaveStMod) - call RegPack(Buf, InData%EffWtrDpth) - call RegPack(Buf, InData%MSL2SWL) - call RegPack(Buf, allocated(InData%WaveElevC)) - if (allocated(InData%WaveElevC)) then - call RegPackBounds(Buf, 3, lbound(InData%WaveElevC, kind=B8Ki), ubound(InData%WaveElevC, kind=B8Ki)) - call RegPack(Buf, InData%WaveElevC) - end if - call RegPack(Buf, allocated(InData%WaveElevC0)) - if (allocated(InData%WaveElevC0)) then - call RegPackBounds(Buf, 2, lbound(InData%WaveElevC0, kind=B8Ki), ubound(InData%WaveElevC0, kind=B8Ki)) - call RegPack(Buf, InData%WaveElevC0) - end if - call RegPack(Buf, allocated(InData%WaveDirArr)) - if (allocated(InData%WaveDirArr)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveDirArr, kind=B8Ki), ubound(InData%WaveDirArr, kind=B8Ki)) - call RegPack(Buf, InData%WaveDirArr) - end if - call RegPack(Buf, InData%WtrDpth) - call RegPack(Buf, InData%WtrDens) - call RegPack(Buf, InData%RhoXg) - call RegPack(Buf, InData%WaveDirMin) - call RegPack(Buf, InData%WaveDirMax) - call RegPack(Buf, InData%WaveDir) - call RegPack(Buf, InData%WaveMultiDir) - call RegPack(Buf, InData%MCFD) - call RegPack(Buf, InData%WvLowCOff) - call RegPack(Buf, InData%WvHiCOff) - call RegPack(Buf, InData%WvLowCOffD) - call RegPack(Buf, InData%WvHiCOffD) - call RegPack(Buf, InData%WvLowCOffS) - call RegPack(Buf, InData%WvHiCOffS) - call RegPack(Buf, InData%WaveDOmega) - call RegPack(Buf, InData%WaveMod) - call RegPack(Buf, InData%NStepWave) - call RegPack(Buf, InData%NStepWave2) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WaveTime) + call RegPackAlloc(RF, InData%WaveDynP) + call RegPackAlloc(RF, InData%WaveAcc) + call RegPackAlloc(RF, InData%WaveAccMCF) + call RegPackAlloc(RF, InData%WaveVel) + call RegPackAlloc(RF, InData%PWaveDynP0) + call RegPackAlloc(RF, InData%PWaveAcc0) + call RegPackAlloc(RF, InData%PWaveAccMCF0) + call RegPackAlloc(RF, InData%PWaveVel0) + call RegPackAlloc(RF, InData%WaveElev0) + call RegPackAlloc(RF, InData%WaveElev1) + call RegPackAlloc(RF, InData%WaveElev2) + call SeaSt_Interp_PackParam(RF, InData%SeaSt_Interp_p) + call RegPack(RF, InData%WaveStMod) + call RegPack(RF, InData%EffWtrDpth) + call RegPack(RF, InData%MSL2SWL) + call RegPackAlloc(RF, InData%WaveElevC) + call RegPackAlloc(RF, InData%WaveElevC0) + call RegPackAlloc(RF, InData%WaveDirArr) + call RegPack(RF, InData%WtrDpth) + call RegPack(RF, InData%WtrDens) + call RegPack(RF, InData%RhoXg) + call RegPack(RF, InData%WaveDirMin) + call RegPack(RF, InData%WaveDirMax) + call RegPack(RF, InData%WaveDir) + call RegPack(RF, InData%WaveMultiDir) + call RegPack(RF, InData%MCFD) + call RegPack(RF, InData%WvLowCOff) + call RegPack(RF, InData%WvHiCOff) + call RegPack(RF, InData%WvLowCOffD) + call RegPack(RF, InData%WvHiCOffD) + call RegPack(RF, InData%WvLowCOffS) + call RegPack(RF, InData%WvHiCOffS) + call RegPack(RF, InData%WaveDOmega) + call RegPack(RF, InData%WaveMod) + call RegPack(RF, InData%NStepWave) + call RegPack(RF, InData%NStepWave2) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SeaSt_WaveField_UnPackSeaSt_WaveFieldType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_WaveField_UnPackSeaSt_WaveFieldType(RF, OutData) + type(RegFile), intent(inout) :: RF type(SeaSt_WaveFieldType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SeaSt_WaveField_UnPackSeaSt_WaveFieldType' integer(B8Ki) :: LB(5), UB(5) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WaveTime)) deallocate(OutData%WaveTime) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveTime(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveTime.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveTime) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveDynP)) deallocate(OutData%WaveDynP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveDynP(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveDynP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveDynP) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveAcc)) deallocate(OutData%WaveAcc) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 5, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveAcc(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveAcc.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveAcc) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveAccMCF)) deallocate(OutData%WaveAccMCF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 5, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveAccMCF(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveAccMCF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveAccMCF) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveVel)) deallocate(OutData%WaveVel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 5, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveVel(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveVel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveVel) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PWaveDynP0)) deallocate(OutData%PWaveDynP0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PWaveDynP0(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PWaveDynP0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PWaveDynP0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PWaveAcc0)) deallocate(OutData%PWaveAcc0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PWaveAcc0(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PWaveAcc0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PWaveAcc0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PWaveAccMCF0)) deallocate(OutData%PWaveAccMCF0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PWaveAccMCF0(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PWaveAccMCF0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PWaveAccMCF0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PWaveVel0)) deallocate(OutData%PWaveVel0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PWaveVel0(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PWaveVel0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PWaveVel0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveElev0)) deallocate(OutData%WaveElev0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveElev0(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveElev0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveElev0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveElev1)) deallocate(OutData%WaveElev1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveElev1(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveElev1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveElev1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveElev2)) deallocate(OutData%WaveElev2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveElev2(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveElev2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveElev2) - if (RegCheckErr(Buf, RoutineName)) return - end if - call SeaSt_Interp_UnpackParam(Buf, OutData%SeaSt_Interp_p) ! SeaSt_Interp_p - call RegUnpack(Buf, OutData%WaveStMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EffWtrDpth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MSL2SWL) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WaveElevC)) deallocate(OutData%WaveElevC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveElevC(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveElevC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveElevC) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveElevC0)) deallocate(OutData%WaveElevC0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveElevC0(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveElevC0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveElevC0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveDirArr)) deallocate(OutData%WaveDirArr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveDirArr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveDirArr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveDirArr) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%WtrDpth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RhoXg) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveDirMin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveDirMax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveDir) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveMultiDir) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MCFD) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WvLowCOff) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WvHiCOff) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WvLowCOffD) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WvHiCOffD) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WvLowCOffS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WvHiCOffS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveDOmega) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NStepWave) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NStepWave2) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WaveTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveDynP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveAcc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveAccMCF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveVel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PWaveDynP0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PWaveAcc0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PWaveAccMCF0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PWaveVel0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveElev0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveElev1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveElev2); if (RegCheckErr(RF, RoutineName)) return + call SeaSt_Interp_UnpackParam(RF, OutData%SeaSt_Interp_p) ! SeaSt_Interp_p + call RegUnpack(RF, OutData%WaveStMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EffWtrDpth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MSL2SWL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveElevC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveElevC0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveDirArr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDpth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RhoXg); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveDirMin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveDirMax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveDir); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveMultiDir); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MCFD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WvLowCOff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WvHiCOff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WvLowCOffD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WvHiCOffD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WvLowCOffS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WvHiCOffS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveDOmega); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NStepWave); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NStepWave2); if (RegCheckErr(RF, RoutineName)) return end subroutine END MODULE SeaSt_WaveField_Types !ENDOFREGISTRYGENERATEDFILE diff --git a/modules/seastate/src/SeaState_Interp_Types.f90 b/modules/seastate/src/SeaState_Interp_Types.f90 index e02fbe8fc2..3322b030fc 100644 --- a/modules/seastate/src/SeaState_Interp_Types.f90 +++ b/modules/seastate/src/SeaState_Interp_Types.f90 @@ -89,31 +89,27 @@ subroutine SeaSt_Interp_DestroyInitInput(InitInputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SeaSt_Interp_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_Interp_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SeaSt_Interp_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SeaSt_Interp_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%n) - call RegPack(Buf, InData%delta) - call RegPack(Buf, InData%pZero) - call RegPack(Buf, InData%Z_Depth) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%n) + call RegPack(RF, InData%delta) + call RegPack(RF, InData%pZero) + call RegPack(RF, InData%Z_Depth) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SeaSt_Interp_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_Interp_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SeaSt_Interp_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SeaSt_Interp_UnPackInitInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%n) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%delta) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pZero) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Z_Depth) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%delta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pZero); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Z_Depth); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SeaSt_Interp_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -145,21 +141,21 @@ subroutine SeaSt_Interp_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine SeaSt_Interp_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_Interp_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SeaSt_Interp_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SeaSt_Interp_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call NWTC_Library_PackProgDesc(RF, InData%Ver) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SeaSt_Interp_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_Interp_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SeaSt_Interp_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SeaSt_Interp_UnPackInitOutput' - if (Buf%ErrStat /= ErrID_None) return - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver + if (RF%ErrStat /= ErrID_None) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver end subroutine subroutine SeaSt_Interp_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -187,34 +183,29 @@ subroutine SeaSt_Interp_DestroyMisc(MiscData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SeaSt_Interp_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_Interp_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(SeaSt_Interp_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'SeaSt_Interp_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%N3D) - call RegPack(Buf, InData%N4D) - call RegPack(Buf, InData%Indx_Lo) - call RegPack(Buf, InData%Indx_Hi) - call RegPack(Buf, InData%FirstWarn_Clamp) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%N3D) + call RegPack(RF, InData%N4D) + call RegPack(RF, InData%Indx_Lo) + call RegPack(RF, InData%Indx_Hi) + call RegPack(RF, InData%FirstWarn_Clamp) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SeaSt_Interp_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_Interp_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(SeaSt_Interp_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SeaSt_Interp_UnPackMisc' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%N3D) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%N4D) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Indx_Lo) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Indx_Hi) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FirstWarn_Clamp) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%N3D); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%N4D); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Indx_Lo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Indx_Hi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FirstWarn_Clamp); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SeaSt_Interp_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -241,31 +232,27 @@ subroutine SeaSt_Interp_DestroyParam(ParamData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SeaSt_Interp_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_Interp_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(SeaSt_Interp_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'SeaSt_Interp_PackParam' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%n) - call RegPack(Buf, InData%delta) - call RegPack(Buf, InData%pZero) - call RegPack(Buf, InData%Z_Depth) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%n) + call RegPack(RF, InData%delta) + call RegPack(RF, InData%pZero) + call RegPack(RF, InData%Z_Depth) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SeaSt_Interp_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_Interp_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(SeaSt_Interp_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SeaSt_Interp_UnPackParam' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%n) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%delta) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%pZero) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Z_Depth) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%delta); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%pZero); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Z_Depth); if (RegCheckErr(RF, RoutineName)) return end subroutine END MODULE SeaState_Interp_Types !ENDOFREGISTRYGENERATEDFILE diff --git a/modules/seastate/src/SeaState_Types.f90 b/modules/seastate/src/SeaState_Types.f90 index 78b2a16e84..ff4581d486 100644 --- a/modules/seastate/src/SeaState_Types.f90 +++ b/modules/seastate/src/SeaState_Types.f90 @@ -339,238 +339,104 @@ subroutine SeaSt_DestroyInputFile(InputFileData, ErrStat, ErrMsg) end if end subroutine -subroutine SeaSt_PackInputFile(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_PackInputFile(RF, Indata) + type(RegFile), intent(inout) :: RF type(SeaSt_InputFile), intent(in) :: InData character(*), parameter :: RoutineName = 'SeaSt_PackInputFile' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%EchoFlag) - call RegPack(Buf, InData%MSL2SWL) - call RegPack(Buf, InData%X_HalfWidth) - call RegPack(Buf, InData%Y_HalfWidth) - call RegPack(Buf, InData%Z_Depth) - call RegPack(Buf, InData%NX) - call RegPack(Buf, InData%NY) - call RegPack(Buf, InData%NZ) - call Waves_PackInitInput(Buf, InData%Waves) - call Waves2_PackInitInput(Buf, InData%Waves2) - call Current_PackInitInput(Buf, InData%Current) - call RegPack(Buf, InData%Echo) - call RegPack(Buf, InData%NWaveElev) - call RegPack(Buf, allocated(InData%WaveElevxi)) - if (allocated(InData%WaveElevxi)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveElevxi, kind=B8Ki), ubound(InData%WaveElevxi, kind=B8Ki)) - call RegPack(Buf, InData%WaveElevxi) - end if - call RegPack(Buf, allocated(InData%WaveElevyi)) - if (allocated(InData%WaveElevyi)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveElevyi, kind=B8Ki), ubound(InData%WaveElevyi, kind=B8Ki)) - call RegPack(Buf, InData%WaveElevyi) - end if - call RegPack(Buf, InData%NWaveKin) - call RegPack(Buf, allocated(InData%WaveKinxi)) - if (allocated(InData%WaveKinxi)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveKinxi, kind=B8Ki), ubound(InData%WaveKinxi, kind=B8Ki)) - call RegPack(Buf, InData%WaveKinxi) - end if - call RegPack(Buf, allocated(InData%WaveKinyi)) - if (allocated(InData%WaveKinyi)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveKinyi, kind=B8Ki), ubound(InData%WaveKinyi, kind=B8Ki)) - call RegPack(Buf, InData%WaveKinyi) - end if - call RegPack(Buf, allocated(InData%WaveKinzi)) - if (allocated(InData%WaveKinzi)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveKinzi, kind=B8Ki), ubound(InData%WaveKinzi, kind=B8Ki)) - call RegPack(Buf, InData%WaveKinzi) - end if - call RegPack(Buf, InData%OutSwtch) - call RegPack(Buf, InData%OutAll) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, allocated(InData%OutList)) - if (allocated(InData%OutList)) then - call RegPackBounds(Buf, 1, lbound(InData%OutList, kind=B8Ki), ubound(InData%OutList, kind=B8Ki)) - call RegPack(Buf, InData%OutList) - end if - call RegPack(Buf, InData%SeaStSum) - call RegPack(Buf, InData%OutFmt) - call RegPack(Buf, InData%OutSFmt) - call RegPack(Buf, InData%WaveStMod) - call RegPack(Buf, InData%WtrDpth) - call RegPack(Buf, InData%WtrDens) - call RegPack(Buf, InData%WaveDirMod) - call RegPack(Buf, InData%WaveDir) - call RegPack(Buf, InData%WaveMultiDir) - call RegPack(Buf, InData%MCFD) - call RegPack(Buf, InData%WvLowCOff) - call RegPack(Buf, InData%WvHiCOff) - call RegPack(Buf, InData%WvLowCOffD) - call RegPack(Buf, InData%WvHiCOffD) - call RegPack(Buf, InData%WvLowCOffS) - call RegPack(Buf, InData%WvHiCOffS) - call RegPack(Buf, InData%WaveDOmega) - call RegPack(Buf, InData%WaveMod) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%EchoFlag) + call RegPack(RF, InData%MSL2SWL) + call RegPack(RF, InData%X_HalfWidth) + call RegPack(RF, InData%Y_HalfWidth) + call RegPack(RF, InData%Z_Depth) + call RegPack(RF, InData%NX) + call RegPack(RF, InData%NY) + call RegPack(RF, InData%NZ) + call Waves_PackInitInput(RF, InData%Waves) + call Waves2_PackInitInput(RF, InData%Waves2) + call Current_PackInitInput(RF, InData%Current) + call RegPack(RF, InData%Echo) + call RegPack(RF, InData%NWaveElev) + call RegPackAlloc(RF, InData%WaveElevxi) + call RegPackAlloc(RF, InData%WaveElevyi) + call RegPack(RF, InData%NWaveKin) + call RegPackAlloc(RF, InData%WaveKinxi) + call RegPackAlloc(RF, InData%WaveKinyi) + call RegPackAlloc(RF, InData%WaveKinzi) + call RegPack(RF, InData%OutSwtch) + call RegPack(RF, InData%OutAll) + call RegPack(RF, InData%NumOuts) + call RegPackAlloc(RF, InData%OutList) + call RegPack(RF, InData%SeaStSum) + call RegPack(RF, InData%OutFmt) + call RegPack(RF, InData%OutSFmt) + call RegPack(RF, InData%WaveStMod) + call RegPack(RF, InData%WtrDpth) + call RegPack(RF, InData%WtrDens) + call RegPack(RF, InData%WaveDirMod) + call RegPack(RF, InData%WaveDir) + call RegPack(RF, InData%WaveMultiDir) + call RegPack(RF, InData%MCFD) + call RegPack(RF, InData%WvLowCOff) + call RegPack(RF, InData%WvHiCOff) + call RegPack(RF, InData%WvLowCOffD) + call RegPack(RF, InData%WvHiCOffD) + call RegPack(RF, InData%WvLowCOffS) + call RegPack(RF, InData%WvHiCOffS) + call RegPack(RF, InData%WaveDOmega) + call RegPack(RF, InData%WaveMod) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SeaSt_UnPackInputFile(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_UnPackInputFile(RF, OutData) + type(RegFile), intent(inout) :: RF type(SeaSt_InputFile), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SeaSt_UnPackInputFile' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%EchoFlag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MSL2SWL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%X_HalfWidth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Y_HalfWidth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Z_Depth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NX) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NY) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NZ) - if (RegCheckErr(Buf, RoutineName)) return - call Waves_UnpackInitInput(Buf, OutData%Waves) ! Waves - call Waves2_UnpackInitInput(Buf, OutData%Waves2) ! Waves2 - call Current_UnpackInitInput(Buf, OutData%Current) ! Current - call RegUnpack(Buf, OutData%Echo) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NWaveElev) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WaveElevxi)) deallocate(OutData%WaveElevxi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveElevxi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveElevxi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveElevxi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveElevyi)) deallocate(OutData%WaveElevyi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveElevyi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveElevyi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveElevyi) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NWaveKin) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WaveKinxi)) deallocate(OutData%WaveKinxi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveKinxi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveKinxi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveKinxi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveKinyi)) deallocate(OutData%WaveKinyi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveKinyi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveKinyi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveKinyi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveKinzi)) deallocate(OutData%WaveKinzi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveKinzi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveKinzi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveKinzi) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%OutSwtch) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutAll) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutList)) deallocate(OutData%OutList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutList) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%SeaStSum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutSFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveStMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDpth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveDirMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveDir) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveMultiDir) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%MCFD) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WvLowCOff) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WvHiCOff) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WvLowCOffD) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WvHiCOffD) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WvLowCOffS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WvHiCOffS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveDOmega) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveMod) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%EchoFlag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MSL2SWL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%X_HalfWidth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Y_HalfWidth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Z_Depth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NZ); if (RegCheckErr(RF, RoutineName)) return + call Waves_UnpackInitInput(RF, OutData%Waves) ! Waves + call Waves2_UnpackInitInput(RF, OutData%Waves2) ! Waves2 + call Current_UnpackInitInput(RF, OutData%Current) ! Current + call RegUnpack(RF, OutData%Echo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NWaveElev); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveElevxi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveElevyi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NWaveKin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveKinxi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveKinyi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveKinzi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutSwtch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutAll); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SeaStSum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutSFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveStMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDpth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveDirMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveDir); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveMultiDir); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%MCFD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WvLowCOff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WvHiCOff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WvLowCOffD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WvHiCOffD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WvLowCOffS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WvHiCOffS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveDOmega); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveMod); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SeaSt_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -632,85 +498,54 @@ subroutine SeaSt_DestroyInitInput(InitInputData, ErrStat, ErrMsg) end if end subroutine -subroutine SeaSt_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SeaSt_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SeaSt_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%InputFile) - call RegPack(Buf, InData%UseInputFile) - call NWTC_Library_PackFileInfoType(Buf, InData%PassedFileData) - call RegPack(Buf, InData%OutRootName) - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, InData%defWtrDens) - call RegPack(Buf, InData%defWtrDpth) - call RegPack(Buf, InData%defMSL2SWL) - call RegPack(Buf, InData%TMax) - call RegPack(Buf, allocated(InData%WaveElevXY)) - if (allocated(InData%WaveElevXY)) then - call RegPackBounds(Buf, 2, lbound(InData%WaveElevXY, kind=B8Ki), ubound(InData%WaveElevXY, kind=B8Ki)) - call RegPack(Buf, InData%WaveElevXY) - end if - call RegPack(Buf, InData%WaveFieldMod) - call RegPack(Buf, InData%PtfmLocationX) - call RegPack(Buf, InData%PtfmLocationY) - call RegPack(Buf, InData%WrWvKinMod) - call RegPack(Buf, InData%HasIce) - call RegPack(Buf, InData%Linearize) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%InputFile) + call RegPack(RF, InData%UseInputFile) + call NWTC_Library_PackFileInfoType(RF, InData%PassedFileData) + call RegPack(RF, InData%OutRootName) + call RegPack(RF, InData%Gravity) + call RegPack(RF, InData%defWtrDens) + call RegPack(RF, InData%defWtrDpth) + call RegPack(RF, InData%defMSL2SWL) + call RegPack(RF, InData%TMax) + call RegPackAlloc(RF, InData%WaveElevXY) + call RegPack(RF, InData%WaveFieldMod) + call RegPack(RF, InData%PtfmLocationX) + call RegPack(RF, InData%PtfmLocationY) + call RegPack(RF, InData%WrWvKinMod) + call RegPack(RF, InData%HasIce) + call RegPack(RF, InData%Linearize) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SeaSt_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SeaSt_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SeaSt_UnPackInitInput' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%InputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UseInputFile) - if (RegCheckErr(Buf, RoutineName)) return - call NWTC_Library_UnpackFileInfoType(Buf, OutData%PassedFileData) ! PassedFileData - call RegUnpack(Buf, OutData%OutRootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%defWtrDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%defWtrDpth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%defMSL2SWL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TMax) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WaveElevXY)) deallocate(OutData%WaveElevXY) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveElevXY(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveElevXY.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveElevXY) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%WaveFieldMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmLocationX) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmLocationY) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WrWvKinMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HasIce) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Linearize) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%InputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseInputFile); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackFileInfoType(RF, OutData%PassedFileData) ! PassedFileData + call RegUnpack(RF, OutData%OutRootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%defWtrDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%defWtrDpth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%defMSL2SWL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TMax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveElevXY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveFieldMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmLocationX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmLocationY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WrWvKinMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HasIce); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Linearize); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SeaSt_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -791,41 +626,29 @@ subroutine SeaSt_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) nullify(InitOutputData%WaveField) end subroutine -subroutine SeaSt_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SeaSt_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SeaSt_PackInitOutput' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call RegPack(Buf, InData%InvalidWithSSExctn) - call RegPack(Buf, allocated(InData%WaveElevSeries)) - if (allocated(InData%WaveElevSeries)) then - call RegPackBounds(Buf, 2, lbound(InData%WaveElevSeries, kind=B8Ki), ubound(InData%WaveElevSeries, kind=B8Ki)) - call RegPack(Buf, InData%WaveElevSeries) - end if - call RegPack(Buf, associated(InData%WaveField)) + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call RegPack(RF, InData%InvalidWithSSExctn) + call RegPackAlloc(RF, InData%WaveElevSeries) + call RegPack(RF, associated(InData%WaveField)) if (associated(InData%WaveField)) then - call RegPackPointer(Buf, c_loc(InData%WaveField), PtrInIndex) + call RegPackPointer(RF, c_loc(InData%WaveField), PtrInIndex) if (.not. PtrInIndex) then - call SeaSt_WaveField_PackSeaSt_WaveFieldType(Buf, InData%WaveField) + call SeaSt_WaveField_PackSeaSt_WaveFieldType(RF, InData%WaveField) end if end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SeaSt_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SeaSt_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SeaSt_UnPackInitOutput' integer(B8Ki) :: LB(2), UB(2) @@ -833,68 +656,26 @@ subroutine SeaSt_UnPackInitOutput(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver - call RegUnpack(Buf, OutData%InvalidWithSSExctn) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WaveElevSeries)) deallocate(OutData%WaveElevSeries) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveElevSeries(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveElevSeries.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveElevSeries) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver + call RegUnpack(RF, OutData%InvalidWithSSExctn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveElevSeries); if (RegCheckErr(RF, RoutineName)) return if (associated(OutData%WaveField)) deallocate(OutData%WaveField) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPointer(RF, Ptr, PtrIdx); if (RegCheckErr(RF, RoutineName)) return if (c_associated(Ptr)) then call c_f_pointer(Ptr, OutData%WaveField) else allocate(OutData%WaveField,stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - Buf%Pointers(PtrIdx) = c_loc(OutData%WaveField) - call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(Buf, OutData%WaveField) ! WaveField + RF%Pointers(PtrIdx) = c_loc(OutData%WaveField) + call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(RF, OutData%WaveField) ! WaveField end if else OutData%WaveField => null() @@ -922,22 +703,21 @@ subroutine SeaSt_DestroyContState(ContStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SeaSt_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SeaSt_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SeaSt_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%UnusedStates) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%UnusedStates) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SeaSt_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SeaSt_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SeaSt_UnPackContState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%UnusedStates) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%UnusedStates); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SeaSt_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -961,22 +741,21 @@ subroutine SeaSt_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SeaSt_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SeaSt_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SeaSt_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%UnusedStates) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%UnusedStates) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SeaSt_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SeaSt_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SeaSt_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%UnusedStates) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%UnusedStates); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SeaSt_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -1000,22 +779,21 @@ subroutine SeaSt_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SeaSt_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SeaSt_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SeaSt_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%UnusedStates) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%UnusedStates) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SeaSt_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SeaSt_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SeaSt_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%UnusedStates) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%UnusedStates); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SeaSt_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -1039,22 +817,21 @@ subroutine SeaSt_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SeaSt_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SeaSt_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SeaSt_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%UnusedStates) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%UnusedStates) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SeaSt_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SeaSt_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SeaSt_UnPackOtherState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%UnusedStates) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%UnusedStates); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SeaSt_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -1089,30 +866,27 @@ subroutine SeaSt_DestroyMisc(MiscData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine SeaSt_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(SeaSt_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'SeaSt_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Decimate) - call RegPack(Buf, InData%LastOutTime) - call RegPack(Buf, InData%LastIndWave) - call SeaSt_Interp_PackMisc(Buf, InData%SeaSt_Interp_m) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Decimate) + call RegPack(RF, InData%LastOutTime) + call RegPack(RF, InData%LastIndWave) + call SeaSt_Interp_PackMisc(RF, InData%SeaSt_Interp_m) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SeaSt_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(SeaSt_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SeaSt_UnPackMisc' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Decimate) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LastOutTime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LastIndWave) - if (RegCheckErr(Buf, RoutineName)) return - call SeaSt_Interp_UnpackMisc(Buf, OutData%SeaSt_Interp_m) ! SeaSt_Interp_m + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Decimate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LastOutTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LastIndWave); if (RegCheckErr(RF, RoutineName)) return + call SeaSt_Interp_UnpackMisc(RF, OutData%SeaSt_Interp_m) ! SeaSt_Interp_m end subroutine subroutine SeaSt_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -1274,73 +1048,53 @@ subroutine SeaSt_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine SeaSt_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(SeaSt_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'SeaSt_PackParam' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%WaveDT) - call RegPack(Buf, InData%NGridPts) - call RegPack(Buf, InData%NGrid) - call RegPack(Buf, InData%deltaGrid) - call RegPack(Buf, InData%NWaveElev) - call RegPack(Buf, allocated(InData%WaveElevxi)) - if (allocated(InData%WaveElevxi)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveElevxi, kind=B8Ki), ubound(InData%WaveElevxi, kind=B8Ki)) - call RegPack(Buf, InData%WaveElevxi) - end if - call RegPack(Buf, allocated(InData%WaveElevyi)) - if (allocated(InData%WaveElevyi)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveElevyi, kind=B8Ki), ubound(InData%WaveElevyi, kind=B8Ki)) - call RegPack(Buf, InData%WaveElevyi) - end if - call RegPack(Buf, InData%NWaveKin) - call RegPack(Buf, allocated(InData%WaveKinxi)) - if (allocated(InData%WaveKinxi)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveKinxi, kind=B8Ki), ubound(InData%WaveKinxi, kind=B8Ki)) - call RegPack(Buf, InData%WaveKinxi) - end if - call RegPack(Buf, allocated(InData%WaveKinyi)) - if (allocated(InData%WaveKinyi)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveKinyi, kind=B8Ki), ubound(InData%WaveKinyi, kind=B8Ki)) - call RegPack(Buf, InData%WaveKinyi) - end if - call RegPack(Buf, allocated(InData%WaveKinzi)) - if (allocated(InData%WaveKinzi)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveKinzi, kind=B8Ki), ubound(InData%WaveKinzi, kind=B8Ki)) - call RegPack(Buf, InData%WaveKinzi) - end if - call RegPack(Buf, allocated(InData%OutParam)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%WaveDT) + call RegPack(RF, InData%NGridPts) + call RegPack(RF, InData%NGrid) + call RegPack(RF, InData%deltaGrid) + call RegPack(RF, InData%NWaveElev) + call RegPackAlloc(RF, InData%WaveElevxi) + call RegPackAlloc(RF, InData%WaveElevyi) + call RegPack(RF, InData%NWaveKin) + call RegPackAlloc(RF, InData%WaveKinxi) + call RegPackAlloc(RF, InData%WaveKinyi) + call RegPackAlloc(RF, InData%WaveKinzi) + call RegPack(RF, allocated(InData%OutParam)) if (allocated(InData%OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) LB(1:1) = lbound(InData%OutParam, kind=B8Ki) UB(1:1) = ubound(InData%OutParam, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackOutParmType(Buf, InData%OutParam(i1)) + call NWTC_Library_PackOutParmType(RF, InData%OutParam(i1)) end do end if - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, InData%OutSwtch) - call RegPack(Buf, InData%OutFmt) - call RegPack(Buf, InData%OutSFmt) - call RegPack(Buf, InData%Delim) - call RegPack(Buf, InData%UnOutFile) - call RegPack(Buf, InData%OutDec) - call RegPack(Buf, associated(InData%WaveField)) + call RegPack(RF, InData%NumOuts) + call RegPack(RF, InData%OutSwtch) + call RegPack(RF, InData%OutFmt) + call RegPack(RF, InData%OutSFmt) + call RegPack(RF, InData%Delim) + call RegPack(RF, InData%UnOutFile) + call RegPack(RF, InData%OutDec) + call RegPack(RF, associated(InData%WaveField)) if (associated(InData%WaveField)) then - call RegPackPointer(Buf, c_loc(InData%WaveField), PtrInIndex) + call RegPackPointer(RF, c_loc(InData%WaveField), PtrInIndex) if (.not. PtrInIndex) then - call SeaSt_WaveField_PackSeaSt_WaveFieldType(Buf, InData%WaveField) + call SeaSt_WaveField_PackSeaSt_WaveFieldType(RF, InData%WaveField) end if end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SeaSt_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(SeaSt_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SeaSt_UnPackParam' integer(B8Ki) :: i1 @@ -1349,134 +1103,52 @@ subroutine SeaSt_UnPackParam(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%WaveDT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NGridPts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NGrid) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%deltaGrid) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NWaveElev) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WaveElevxi)) deallocate(OutData%WaveElevxi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveElevxi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveElevxi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveElevxi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveElevyi)) deallocate(OutData%WaveElevyi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveElevyi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveElevyi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveElevyi) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NWaveKin) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WaveKinxi)) deallocate(OutData%WaveKinxi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveKinxi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveKinxi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveKinxi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveKinyi)) deallocate(OutData%WaveKinyi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveKinyi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveKinyi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveKinyi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveKinzi)) deallocate(OutData%WaveKinzi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveKinzi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveKinzi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveKinzi) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%WaveDT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NGridPts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NGrid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%deltaGrid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NWaveElev); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveElevxi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveElevyi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NWaveKin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveKinxi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveKinyi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveKinzi); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%OutParam)) deallocate(OutData%OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackOutParmType(Buf, OutData%OutParam(i1)) ! OutParam + call NWTC_Library_UnpackOutParmType(RF, OutData%OutParam(i1)) ! OutParam end do end if - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutSwtch) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutSFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Delim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UnOutFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutDec) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutSwtch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutSFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Delim); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UnOutFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutDec); if (RegCheckErr(RF, RoutineName)) return if (associated(OutData%WaveField)) deallocate(OutData%WaveField) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackPointer(RF, Ptr, PtrIdx); if (RegCheckErr(RF, RoutineName)) return if (c_associated(Ptr)) then call c_f_pointer(Ptr, OutData%WaveField) else allocate(OutData%WaveField,stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveField.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - Buf%Pointers(PtrIdx) = c_loc(OutData%WaveField) - call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(Buf, OutData%WaveField) ! WaveField + RF%Pointers(PtrIdx) = c_loc(OutData%WaveField) + call SeaSt_WaveField_UnpackSeaSt_WaveFieldType(RF, OutData%WaveField) ! WaveField end if else OutData%WaveField => null() @@ -1504,22 +1176,21 @@ subroutine SeaSt_DestroyInput(InputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SeaSt_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SeaSt_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SeaSt_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyInput) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyInput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SeaSt_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SeaSt_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SeaSt_UnPackInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyInput) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyInput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SeaSt_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -1559,41 +1230,24 @@ subroutine SeaSt_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine SeaSt_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SeaSt_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SeaSt_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WriteOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SeaSt_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SeaSt_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SeaSt_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SeaSt_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine END MODULE SeaState_Types !ENDOFREGISTRYGENERATEDFILE diff --git a/modules/seastate/src/Waves2_Types.f90 b/modules/seastate/src/Waves2_Types.f90 index 0fdde7f505..a8bd1b7ccf 100644 --- a/modules/seastate/src/Waves2_Types.f90 +++ b/modules/seastate/src/Waves2_Types.f90 @@ -131,97 +131,40 @@ subroutine Waves2_DestroyInitInput(InitInputData, ErrStat, ErrMsg) end if end subroutine -subroutine Waves2_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Waves2_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Waves2_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Waves2_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, InData%nGrid) - call RegPack(Buf, InData%NWaveElevGrid) - call RegPack(Buf, InData%NWaveKinGrid) - call RegPack(Buf, allocated(InData%WaveKinGridxi)) - if (allocated(InData%WaveKinGridxi)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveKinGridxi, kind=B8Ki), ubound(InData%WaveKinGridxi, kind=B8Ki)) - call RegPack(Buf, InData%WaveKinGridxi) - end if - call RegPack(Buf, allocated(InData%WaveKinGridyi)) - if (allocated(InData%WaveKinGridyi)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveKinGridyi, kind=B8Ki), ubound(InData%WaveKinGridyi, kind=B8Ki)) - call RegPack(Buf, InData%WaveKinGridyi) - end if - call RegPack(Buf, allocated(InData%WaveKinGridzi)) - if (allocated(InData%WaveKinGridzi)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveKinGridzi, kind=B8Ki), ubound(InData%WaveKinGridzi, kind=B8Ki)) - call RegPack(Buf, InData%WaveKinGridzi) - end if - call RegPack(Buf, InData%WvDiffQTFF) - call RegPack(Buf, InData%WvSumQTFF) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%Gravity) + call RegPack(RF, InData%nGrid) + call RegPack(RF, InData%NWaveElevGrid) + call RegPack(RF, InData%NWaveKinGrid) + call RegPackAlloc(RF, InData%WaveKinGridxi) + call RegPackAlloc(RF, InData%WaveKinGridyi) + call RegPackAlloc(RF, InData%WaveKinGridzi) + call RegPack(RF, InData%WvDiffQTFF) + call RegPack(RF, InData%WvSumQTFF) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Waves2_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Waves2_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Waves2_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Waves2_UnPackInitInput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nGrid) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NWaveElevGrid) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NWaveKinGrid) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WaveKinGridxi)) deallocate(OutData%WaveKinGridxi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveKinGridxi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveKinGridxi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveKinGridxi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveKinGridyi)) deallocate(OutData%WaveKinGridyi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveKinGridyi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveKinGridyi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveKinGridyi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveKinGridzi)) deallocate(OutData%WaveKinGridzi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveKinGridzi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveKinGridzi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveKinGridzi) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%WvDiffQTFF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WvSumQTFF) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nGrid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NWaveElevGrid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NWaveKinGrid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveKinGridxi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveKinGridyi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveKinGridzi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WvDiffQTFF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WvSumQTFF); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Waves2_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -336,136 +279,34 @@ subroutine Waves2_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine Waves2_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Waves2_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Waves2_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Waves2_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WaveAcc2D)) - if (allocated(InData%WaveAcc2D)) then - call RegPackBounds(Buf, 5, lbound(InData%WaveAcc2D, kind=B8Ki), ubound(InData%WaveAcc2D, kind=B8Ki)) - call RegPack(Buf, InData%WaveAcc2D) - end if - call RegPack(Buf, allocated(InData%WaveDynP2D)) - if (allocated(InData%WaveDynP2D)) then - call RegPackBounds(Buf, 4, lbound(InData%WaveDynP2D, kind=B8Ki), ubound(InData%WaveDynP2D, kind=B8Ki)) - call RegPack(Buf, InData%WaveDynP2D) - end if - call RegPack(Buf, allocated(InData%WaveAcc2S)) - if (allocated(InData%WaveAcc2S)) then - call RegPackBounds(Buf, 5, lbound(InData%WaveAcc2S, kind=B8Ki), ubound(InData%WaveAcc2S, kind=B8Ki)) - call RegPack(Buf, InData%WaveAcc2S) - end if - call RegPack(Buf, allocated(InData%WaveDynP2S)) - if (allocated(InData%WaveDynP2S)) then - call RegPackBounds(Buf, 4, lbound(InData%WaveDynP2S, kind=B8Ki), ubound(InData%WaveDynP2S, kind=B8Ki)) - call RegPack(Buf, InData%WaveDynP2S) - end if - call RegPack(Buf, allocated(InData%WaveVel2D)) - if (allocated(InData%WaveVel2D)) then - call RegPackBounds(Buf, 5, lbound(InData%WaveVel2D, kind=B8Ki), ubound(InData%WaveVel2D, kind=B8Ki)) - call RegPack(Buf, InData%WaveVel2D) - end if - call RegPack(Buf, allocated(InData%WaveVel2S)) - if (allocated(InData%WaveVel2S)) then - call RegPackBounds(Buf, 5, lbound(InData%WaveVel2S, kind=B8Ki), ubound(InData%WaveVel2S, kind=B8Ki)) - call RegPack(Buf, InData%WaveVel2S) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WaveAcc2D) + call RegPackAlloc(RF, InData%WaveDynP2D) + call RegPackAlloc(RF, InData%WaveAcc2S) + call RegPackAlloc(RF, InData%WaveDynP2S) + call RegPackAlloc(RF, InData%WaveVel2D) + call RegPackAlloc(RF, InData%WaveVel2S) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Waves2_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Waves2_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Waves2_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Waves2_UnPackInitOutput' integer(B8Ki) :: LB(5), UB(5) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WaveAcc2D)) deallocate(OutData%WaveAcc2D) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 5, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveAcc2D(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveAcc2D.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveAcc2D) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveDynP2D)) deallocate(OutData%WaveDynP2D) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveDynP2D(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveDynP2D.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveDynP2D) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveAcc2S)) deallocate(OutData%WaveAcc2S) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 5, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveAcc2S(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveAcc2S.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveAcc2S) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveDynP2S)) deallocate(OutData%WaveDynP2S) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveDynP2S(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveDynP2S.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveDynP2S) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveVel2D)) deallocate(OutData%WaveVel2D) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 5, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveVel2D(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveVel2D.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveVel2D) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveVel2S)) deallocate(OutData%WaveVel2S) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 5, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveVel2S(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4),LB(5):UB(5)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveVel2S.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveVel2S) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WaveAcc2D); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveDynP2D); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveAcc2S); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveDynP2S); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveVel2D); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveVel2S); if (RegCheckErr(RF, RoutineName)) return end subroutine END MODULE Waves2_Types !ENDOFREGISTRYGENERATEDFILE diff --git a/modules/seastate/src/Waves_Types.f90 b/modules/seastate/src/Waves_Types.f90 index 4b465fc3a9..4cbea1da35 100644 --- a/modules/seastate/src/Waves_Types.f90 +++ b/modules/seastate/src/Waves_Types.f90 @@ -210,200 +210,88 @@ subroutine Waves_DestroyInitInput(InitInputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine Waves_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Waves_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Waves_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Waves_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%InputFile) - call RegPack(Buf, InData%DirRoot) - call RegPack(Buf, InData%WvKinFile) - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, InData%nGrid) - call RegPack(Buf, InData%WaveNDir) - call RegPack(Buf, InData%WaveDirSpread) - call RegPack(Buf, InData%WaveDirRange) - call RegPack(Buf, InData%WaveDT) - call RegPack(Buf, InData%WaveHs) - call RegPack(Buf, InData%WaveNDAmp) - call RegPack(Buf, InData%WavePhase) - call RegPack(Buf, InData%WavePkShp) - call RegPack(Buf, InData%WaveTMax) - call RegPack(Buf, InData%WaveTp) - call RegPack(Buf, InData%NWaveElevGrid) - call RegPack(Buf, InData%NWaveKinGrid) - call RegPack(Buf, allocated(InData%WaveKinGridxi)) - if (allocated(InData%WaveKinGridxi)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveKinGridxi, kind=B8Ki), ubound(InData%WaveKinGridxi, kind=B8Ki)) - call RegPack(Buf, InData%WaveKinGridxi) - end if - call RegPack(Buf, allocated(InData%WaveKinGridyi)) - if (allocated(InData%WaveKinGridyi)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveKinGridyi, kind=B8Ki), ubound(InData%WaveKinGridyi, kind=B8Ki)) - call RegPack(Buf, InData%WaveKinGridyi) - end if - call RegPack(Buf, allocated(InData%WaveKinGridzi)) - if (allocated(InData%WaveKinGridzi)) then - call RegPackBounds(Buf, 1, lbound(InData%WaveKinGridzi, kind=B8Ki), ubound(InData%WaveKinGridzi, kind=B8Ki)) - call RegPack(Buf, InData%WaveKinGridzi) - end if - call RegPack(Buf, allocated(InData%CurrVxi)) - if (allocated(InData%CurrVxi)) then - call RegPackBounds(Buf, 1, lbound(InData%CurrVxi, kind=B8Ki), ubound(InData%CurrVxi, kind=B8Ki)) - call RegPack(Buf, InData%CurrVxi) - end if - call RegPack(Buf, allocated(InData%CurrVyi)) - if (allocated(InData%CurrVyi)) then - call RegPackBounds(Buf, 1, lbound(InData%CurrVyi, kind=B8Ki), ubound(InData%CurrVyi, kind=B8Ki)) - call RegPack(Buf, InData%CurrVyi) - end if - call RegPack(Buf, InData%PCurrVxiPz0) - call RegPack(Buf, InData%PCurrVyiPz0) - call NWTC_Library_PackNWTC_RandomNumber_ParameterType(Buf, InData%RNG) - call RegPack(Buf, InData%ConstWaveMod) - call RegPack(Buf, InData%CrestHmax) - call RegPack(Buf, InData%CrestTime) - call RegPack(Buf, InData%CrestXi) - call RegPack(Buf, InData%CrestYi) - call RegPack(Buf, InData%WaveFieldMod) - call RegPack(Buf, InData%PtfmLocationX) - call RegPack(Buf, InData%PtfmLocationY) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%InputFile) + call RegPack(RF, InData%DirRoot) + call RegPack(RF, InData%WvKinFile) + call RegPack(RF, InData%Gravity) + call RegPack(RF, InData%nGrid) + call RegPack(RF, InData%WaveNDir) + call RegPack(RF, InData%WaveDirSpread) + call RegPack(RF, InData%WaveDirRange) + call RegPack(RF, InData%WaveDT) + call RegPack(RF, InData%WaveHs) + call RegPack(RF, InData%WaveNDAmp) + call RegPack(RF, InData%WavePhase) + call RegPack(RF, InData%WavePkShp) + call RegPack(RF, InData%WaveTMax) + call RegPack(RF, InData%WaveTp) + call RegPack(RF, InData%NWaveElevGrid) + call RegPack(RF, InData%NWaveKinGrid) + call RegPackAlloc(RF, InData%WaveKinGridxi) + call RegPackAlloc(RF, InData%WaveKinGridyi) + call RegPackAlloc(RF, InData%WaveKinGridzi) + call RegPackAlloc(RF, InData%CurrVxi) + call RegPackAlloc(RF, InData%CurrVyi) + call RegPack(RF, InData%PCurrVxiPz0) + call RegPack(RF, InData%PCurrVyiPz0) + call NWTC_Library_PackNWTC_RandomNumber_ParameterType(RF, InData%RNG) + call RegPack(RF, InData%ConstWaveMod) + call RegPack(RF, InData%CrestHmax) + call RegPack(RF, InData%CrestTime) + call RegPack(RF, InData%CrestXi) + call RegPack(RF, InData%CrestYi) + call RegPack(RF, InData%WaveFieldMod) + call RegPack(RF, InData%PtfmLocationX) + call RegPack(RF, InData%PtfmLocationY) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Waves_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Waves_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Waves_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Waves_UnPackInitInput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%InputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DirRoot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WvKinFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nGrid) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveNDir) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveDirSpread) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveDirRange) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveDT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveHs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveNDAmp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WavePhase) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WavePkShp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveTMax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveTp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NWaveElevGrid) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NWaveKinGrid) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%WaveKinGridxi)) deallocate(OutData%WaveKinGridxi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveKinGridxi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveKinGridxi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveKinGridxi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveKinGridyi)) deallocate(OutData%WaveKinGridyi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveKinGridyi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveKinGridyi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveKinGridyi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WaveKinGridzi)) deallocate(OutData%WaveKinGridzi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WaveKinGridzi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WaveKinGridzi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WaveKinGridzi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CurrVxi)) deallocate(OutData%CurrVxi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CurrVxi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CurrVxi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CurrVxi) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CurrVyi)) deallocate(OutData%CurrVyi) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CurrVyi(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CurrVyi.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CurrVyi) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%PCurrVxiPz0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PCurrVyiPz0) - if (RegCheckErr(Buf, RoutineName)) return - call NWTC_Library_UnpackNWTC_RandomNumber_ParameterType(Buf, OutData%RNG) ! RNG - call RegUnpack(Buf, OutData%ConstWaveMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CrestHmax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CrestTime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CrestXi) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CrestYi) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveFieldMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmLocationX) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmLocationY) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%InputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DirRoot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WvKinFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nGrid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveNDir); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveDirSpread); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveDirRange); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveDT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveHs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveNDAmp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WavePhase); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WavePkShp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveTMax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveTp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NWaveElevGrid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NWaveKinGrid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveKinGridxi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveKinGridyi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WaveKinGridzi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CurrVxi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CurrVyi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PCurrVxiPz0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PCurrVyiPz0); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackNWTC_RandomNumber_ParameterType(RF, OutData%RNG) ! RNG + call RegUnpack(RF, OutData%ConstWaveMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CrestHmax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CrestTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CrestXi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CrestYi); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveFieldMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmLocationX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmLocationY); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine Waves_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -428,25 +316,23 @@ subroutine Waves_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine Waves_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine Waves_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(Waves_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'Waves_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%WaveNDir) - call RegPack(Buf, InData%WaveTMax) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%WaveNDir) + call RegPack(RF, InData%WaveTMax) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine Waves_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine Waves_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(Waves_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'Waves_UnPackInitOutput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%WaveNDir) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WaveTMax) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%WaveNDir); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WaveTMax); if (RegCheckErr(RF, RoutineName)) return end subroutine END MODULE Waves_Types !ENDOFREGISTRYGENERATEDFILE diff --git a/modules/servodyn/src/ServoDyn_Types.f90 b/modules/servodyn/src/ServoDyn_Types.f90 index cc7445e5d0..9d2f6de448 100644 --- a/modules/servodyn/src/ServoDyn_Types.f90 +++ b/modules/servodyn/src/ServoDyn_Types.f90 @@ -822,354 +822,116 @@ subroutine SrvD_DestroyInitInput(InitInputData, ErrStat, ErrMsg) end if end subroutine -subroutine SrvD_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SrvD_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SrvD_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%InputFile) - call RegPack(Buf, InData%Linearize) - call RegPack(Buf, InData%NumBl) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, allocated(InData%BlPitchInit)) - if (allocated(InData%BlPitchInit)) then - call RegPackBounds(Buf, 1, lbound(InData%BlPitchInit, kind=B8Ki), ubound(InData%BlPitchInit, kind=B8Ki)) - call RegPack(Buf, InData%BlPitchInit) - end if - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, InData%NacRefPos) - call RegPack(Buf, InData%NacTransDisp) - call RegPack(Buf, InData%NacOrient) - call RegPack(Buf, InData%NacRefOrient) - call RegPack(Buf, InData%TwrBaseRefPos) - call RegPack(Buf, InData%TwrBaseTransDisp) - call RegPack(Buf, InData%TwrBaseOrient) - call RegPack(Buf, InData%TwrBaseRefOrient) - call RegPack(Buf, InData%PtfmRefPos) - call RegPack(Buf, InData%PtfmTransDisp) - call RegPack(Buf, InData%PtfmOrient) - call RegPack(Buf, InData%PtfmRefOrient) - call RegPack(Buf, InData%Tmax) - call RegPack(Buf, InData%AvgWindSpeed) - call RegPack(Buf, InData%AirDens) - call RegPack(Buf, InData%NumSC2CtrlGlob) - call RegPack(Buf, InData%NumSC2Ctrl) - call RegPack(Buf, InData%NumCtrl2SC) - call RegPack(Buf, InData%TrimCase) - call RegPack(Buf, InData%TrimGain) - call RegPack(Buf, InData%RotSpeedRef) - call RegPack(Buf, allocated(InData%BladeRootRefPos)) - if (allocated(InData%BladeRootRefPos)) then - call RegPackBounds(Buf, 2, lbound(InData%BladeRootRefPos, kind=B8Ki), ubound(InData%BladeRootRefPos, kind=B8Ki)) - call RegPack(Buf, InData%BladeRootRefPos) - end if - call RegPack(Buf, allocated(InData%BladeRootTransDisp)) - if (allocated(InData%BladeRootTransDisp)) then - call RegPackBounds(Buf, 2, lbound(InData%BladeRootTransDisp, kind=B8Ki), ubound(InData%BladeRootTransDisp, kind=B8Ki)) - call RegPack(Buf, InData%BladeRootTransDisp) - end if - call RegPack(Buf, allocated(InData%BladeRootOrient)) - if (allocated(InData%BladeRootOrient)) then - call RegPackBounds(Buf, 3, lbound(InData%BladeRootOrient, kind=B8Ki), ubound(InData%BladeRootOrient, kind=B8Ki)) - call RegPack(Buf, InData%BladeRootOrient) - end if - call RegPack(Buf, allocated(InData%BladeRootRefOrient)) - if (allocated(InData%BladeRootRefOrient)) then - call RegPackBounds(Buf, 3, lbound(InData%BladeRootRefOrient, kind=B8Ki), ubound(InData%BladeRootRefOrient, kind=B8Ki)) - call RegPack(Buf, InData%BladeRootRefOrient) - end if - call RegPack(Buf, InData%UseInputFile) - call NWTC_Library_PackFileInfoType(Buf, InData%PassedPrimaryInputData) - call RegPack(Buf, InData%NumCableControl) - call RegPack(Buf, allocated(InData%CableControlRequestor)) - if (allocated(InData%CableControlRequestor)) then - call RegPackBounds(Buf, 1, lbound(InData%CableControlRequestor, kind=B8Ki), ubound(InData%CableControlRequestor, kind=B8Ki)) - call RegPack(Buf, InData%CableControlRequestor) - end if - call RegPack(Buf, InData%InterpOrder) - call RegPack(Buf, allocated(InData%fromSCGlob)) - if (allocated(InData%fromSCGlob)) then - call RegPackBounds(Buf, 1, lbound(InData%fromSCGlob, kind=B8Ki), ubound(InData%fromSCGlob, kind=B8Ki)) - call RegPack(Buf, InData%fromSCGlob) - end if - call RegPack(Buf, allocated(InData%fromSC)) - if (allocated(InData%fromSC)) then - call RegPackBounds(Buf, 1, lbound(InData%fromSC, kind=B8Ki), ubound(InData%fromSC, kind=B8Ki)) - call RegPack(Buf, InData%fromSC) - end if - call RegPack(Buf, allocated(InData%LidSpeed)) - if (allocated(InData%LidSpeed)) then - call RegPackBounds(Buf, 1, lbound(InData%LidSpeed, kind=B8Ki), ubound(InData%LidSpeed, kind=B8Ki)) - call RegPack(Buf, InData%LidSpeed) - end if - call RegPack(Buf, allocated(InData%MsrPositionsX)) - if (allocated(InData%MsrPositionsX)) then - call RegPackBounds(Buf, 1, lbound(InData%MsrPositionsX, kind=B8Ki), ubound(InData%MsrPositionsX, kind=B8Ki)) - call RegPack(Buf, InData%MsrPositionsX) - end if - call RegPack(Buf, allocated(InData%MsrPositionsY)) - if (allocated(InData%MsrPositionsY)) then - call RegPackBounds(Buf, 1, lbound(InData%MsrPositionsY, kind=B8Ki), ubound(InData%MsrPositionsY, kind=B8Ki)) - call RegPack(Buf, InData%MsrPositionsY) - end if - call RegPack(Buf, allocated(InData%MsrPositionsZ)) - if (allocated(InData%MsrPositionsZ)) then - call RegPackBounds(Buf, 1, lbound(InData%MsrPositionsZ, kind=B8Ki), ubound(InData%MsrPositionsZ, kind=B8Ki)) - call RegPack(Buf, InData%MsrPositionsZ) - end if - call RegPack(Buf, InData%SensorType) - call RegPack(Buf, InData%NumBeam) - call RegPack(Buf, InData%NumPulseGate) - call RegPack(Buf, InData%PulseSpacing) - call RegPack(Buf, InData%URefLid) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%InputFile) + call RegPack(RF, InData%Linearize) + call RegPack(RF, InData%NumBl) + call RegPack(RF, InData%RootName) + call RegPackAlloc(RF, InData%BlPitchInit) + call RegPack(RF, InData%Gravity) + call RegPack(RF, InData%NacRefPos) + call RegPack(RF, InData%NacTransDisp) + call RegPack(RF, InData%NacOrient) + call RegPack(RF, InData%NacRefOrient) + call RegPack(RF, InData%TwrBaseRefPos) + call RegPack(RF, InData%TwrBaseTransDisp) + call RegPack(RF, InData%TwrBaseOrient) + call RegPack(RF, InData%TwrBaseRefOrient) + call RegPack(RF, InData%PtfmRefPos) + call RegPack(RF, InData%PtfmTransDisp) + call RegPack(RF, InData%PtfmOrient) + call RegPack(RF, InData%PtfmRefOrient) + call RegPack(RF, InData%Tmax) + call RegPack(RF, InData%AvgWindSpeed) + call RegPack(RF, InData%AirDens) + call RegPack(RF, InData%NumSC2CtrlGlob) + call RegPack(RF, InData%NumSC2Ctrl) + call RegPack(RF, InData%NumCtrl2SC) + call RegPack(RF, InData%TrimCase) + call RegPack(RF, InData%TrimGain) + call RegPack(RF, InData%RotSpeedRef) + call RegPackAlloc(RF, InData%BladeRootRefPos) + call RegPackAlloc(RF, InData%BladeRootTransDisp) + call RegPackAlloc(RF, InData%BladeRootOrient) + call RegPackAlloc(RF, InData%BladeRootRefOrient) + call RegPack(RF, InData%UseInputFile) + call NWTC_Library_PackFileInfoType(RF, InData%PassedPrimaryInputData) + call RegPack(RF, InData%NumCableControl) + call RegPackAlloc(RF, InData%CableControlRequestor) + call RegPack(RF, InData%InterpOrder) + call RegPackAlloc(RF, InData%fromSCGlob) + call RegPackAlloc(RF, InData%fromSC) + call RegPackAlloc(RF, InData%LidSpeed) + call RegPackAlloc(RF, InData%MsrPositionsX) + call RegPackAlloc(RF, InData%MsrPositionsY) + call RegPackAlloc(RF, InData%MsrPositionsZ) + call RegPack(RF, InData%SensorType) + call RegPack(RF, InData%NumBeam) + call RegPack(RF, InData%NumPulseGate) + call RegPack(RF, InData%PulseSpacing) + call RegPack(RF, InData%URefLid) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SrvD_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SrvD_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SrvD_UnPackInitInput' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%InputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Linearize) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BlPitchInit)) deallocate(OutData%BlPitchInit) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlPitchInit(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlPitchInit.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlPitchInit) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacRefPos) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacTransDisp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacOrient) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacRefOrient) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrBaseRefPos) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrBaseTransDisp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrBaseOrient) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TwrBaseRefOrient) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmRefPos) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmTransDisp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmOrient) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtfmRefOrient) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Tmax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AvgWindSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AirDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumSC2CtrlGlob) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumSC2Ctrl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumCtrl2SC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TrimCase) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TrimGain) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotSpeedRef) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BladeRootRefPos)) deallocate(OutData%BladeRootRefPos) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BladeRootRefPos(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeRootRefPos.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BladeRootRefPos) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BladeRootTransDisp)) deallocate(OutData%BladeRootTransDisp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BladeRootTransDisp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeRootTransDisp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BladeRootTransDisp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BladeRootOrient)) deallocate(OutData%BladeRootOrient) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BladeRootOrient(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeRootOrient.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BladeRootOrient) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BladeRootRefOrient)) deallocate(OutData%BladeRootRefOrient) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BladeRootRefOrient(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BladeRootRefOrient.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BladeRootRefOrient) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%UseInputFile) - if (RegCheckErr(Buf, RoutineName)) return - call NWTC_Library_UnpackFileInfoType(Buf, OutData%PassedPrimaryInputData) ! PassedPrimaryInputData - call RegUnpack(Buf, OutData%NumCableControl) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%CableControlRequestor)) deallocate(OutData%CableControlRequestor) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CableControlRequestor(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CableControlRequestor.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CableControlRequestor) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%InterpOrder) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%fromSCGlob)) deallocate(OutData%fromSCGlob) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%fromSCGlob(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fromSCGlob.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%fromSCGlob) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%fromSC)) deallocate(OutData%fromSC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%fromSC(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fromSC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%fromSC) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LidSpeed)) deallocate(OutData%LidSpeed) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LidSpeed(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LidSpeed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LidSpeed) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MsrPositionsX)) deallocate(OutData%MsrPositionsX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MsrPositionsX(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MsrPositionsX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MsrPositionsX) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MsrPositionsY)) deallocate(OutData%MsrPositionsY) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MsrPositionsY(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MsrPositionsY.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MsrPositionsY) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MsrPositionsZ)) deallocate(OutData%MsrPositionsZ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MsrPositionsZ(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MsrPositionsZ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MsrPositionsZ) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%SensorType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBeam) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumPulseGate) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PulseSpacing) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%URefLid) - if (RegCheckErr(Buf, RoutineName)) return + 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%NumBl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlPitchInit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacRefPos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacTransDisp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacOrient); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacRefOrient); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrBaseRefPos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrBaseTransDisp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrBaseOrient); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrBaseRefOrient); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmRefPos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmTransDisp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmOrient); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtfmRefOrient); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Tmax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AvgWindSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AirDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumSC2CtrlGlob); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumSC2Ctrl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumCtrl2SC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TrimCase); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TrimGain); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotSpeedRef); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BladeRootRefPos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BladeRootTransDisp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BladeRootOrient); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BladeRootRefOrient); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseInputFile); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackFileInfoType(RF, OutData%PassedPrimaryInputData) ! PassedPrimaryInputData + call RegUnpack(RF, OutData%NumCableControl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CableControlRequestor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%InterpOrder); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%fromSCGlob); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%fromSC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LidSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MsrPositionsX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MsrPositionsY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MsrPositionsZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SensorType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBeam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumPulseGate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PulseSpacing); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%URefLid); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SrvD_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -1354,220 +1116,48 @@ subroutine SrvD_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine SrvD_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SrvD_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SrvD_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call RegPack(Buf, InData%CouplingScheme) - call RegPack(Buf, InData%UseHSSBrake) - call RegPack(Buf, allocated(InData%LinNames_y)) - if (allocated(InData%LinNames_y)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_y, kind=B8Ki), ubound(InData%LinNames_y, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_y) - end if - call RegPack(Buf, allocated(InData%LinNames_x)) - if (allocated(InData%LinNames_x)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_x, kind=B8Ki), ubound(InData%LinNames_x, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_x) - end if - call RegPack(Buf, allocated(InData%LinNames_u)) - if (allocated(InData%LinNames_u)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_u, kind=B8Ki), ubound(InData%LinNames_u, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_u) - end if - call RegPack(Buf, allocated(InData%RotFrame_y)) - if (allocated(InData%RotFrame_y)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_y, kind=B8Ki), ubound(InData%RotFrame_y, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_y) - end if - call RegPack(Buf, allocated(InData%RotFrame_x)) - if (allocated(InData%RotFrame_x)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_x, kind=B8Ki), ubound(InData%RotFrame_x, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_x) - end if - call RegPack(Buf, allocated(InData%RotFrame_u)) - if (allocated(InData%RotFrame_u)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_u, kind=B8Ki), ubound(InData%RotFrame_u, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_u) - end if - call RegPack(Buf, allocated(InData%IsLoad_u)) - if (allocated(InData%IsLoad_u)) then - call RegPackBounds(Buf, 1, lbound(InData%IsLoad_u, kind=B8Ki), ubound(InData%IsLoad_u, kind=B8Ki)) - call RegPack(Buf, InData%IsLoad_u) - end if - call RegPack(Buf, allocated(InData%DerivOrder_x)) - if (allocated(InData%DerivOrder_x)) then - call RegPackBounds(Buf, 1, lbound(InData%DerivOrder_x, kind=B8Ki), ubound(InData%DerivOrder_x, kind=B8Ki)) - call RegPack(Buf, InData%DerivOrder_x) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call RegPack(RF, InData%CouplingScheme) + call RegPack(RF, InData%UseHSSBrake) + call RegPackAlloc(RF, InData%LinNames_y) + call RegPackAlloc(RF, InData%LinNames_x) + call RegPackAlloc(RF, InData%LinNames_u) + call RegPackAlloc(RF, InData%RotFrame_y) + call RegPackAlloc(RF, InData%RotFrame_x) + call RegPackAlloc(RF, InData%RotFrame_u) + call RegPackAlloc(RF, InData%IsLoad_u) + call RegPackAlloc(RF, InData%DerivOrder_x) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SrvD_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SrvD_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SrvD_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver - call RegUnpack(Buf, OutData%CouplingScheme) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UseHSSBrake) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%LinNames_y)) deallocate(OutData%LinNames_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_x)) deallocate(OutData%LinNames_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_u)) deallocate(OutData%LinNames_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_y)) deallocate(OutData%RotFrame_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_x)) deallocate(OutData%RotFrame_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_u)) deallocate(OutData%RotFrame_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IsLoad_u)) deallocate(OutData%IsLoad_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IsLoad_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IsLoad_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IsLoad_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DerivOrder_x)) deallocate(OutData%DerivOrder_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DerivOrder_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DerivOrder_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DerivOrder_x) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver + call RegUnpack(RF, OutData%CouplingScheme); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseHSSBrake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IsLoad_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DerivOrder_x); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SrvD_CopyInputFile(SrcInputFileData, DstInputFileData, CtrlCode, ErrStat, ErrMsg) @@ -1777,395 +1367,196 @@ subroutine SrvD_DestroyInputFile(InputFileData, ErrStat, ErrMsg) end if end subroutine -subroutine SrvD_PackInputFile(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_PackInputFile(RF, Indata) + type(RegFile), intent(inout) :: RF type(SrvD_InputFile), intent(in) :: InData character(*), parameter :: RoutineName = 'SrvD_PackInputFile' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT) - call RegPack(Buf, InData%Echo) - call RegPack(Buf, InData%PCMode) - call RegPack(Buf, InData%TPCOn) - call RegPack(Buf, InData%TPitManS) - call RegPack(Buf, InData%PitManRat) - call RegPack(Buf, InData%BlPitchF) - call RegPack(Buf, InData%VSContrl) - call RegPack(Buf, InData%GenModel) - call RegPack(Buf, InData%GenEff) - call RegPack(Buf, InData%GenTiStr) - call RegPack(Buf, InData%GenTiStp) - call RegPack(Buf, InData%SpdGenOn) - call RegPack(Buf, InData%TimGenOn) - call RegPack(Buf, InData%TimGenOf) - call RegPack(Buf, InData%VS_RtGnSp) - call RegPack(Buf, InData%VS_RtTq) - call RegPack(Buf, InData%VS_Rgn2K) - call RegPack(Buf, InData%VS_SlPc) - call RegPack(Buf, InData%SIG_SlPc) - call RegPack(Buf, InData%SIG_SySp) - call RegPack(Buf, InData%SIG_RtTq) - call RegPack(Buf, InData%SIG_PORt) - call RegPack(Buf, InData%TEC_Freq) - call RegPack(Buf, InData%TEC_NPol) - call RegPack(Buf, InData%TEC_SRes) - call RegPack(Buf, InData%TEC_RRes) - call RegPack(Buf, InData%TEC_VLL) - call RegPack(Buf, InData%TEC_SLR) - call RegPack(Buf, InData%TEC_RLR) - call RegPack(Buf, InData%TEC_MR) - call RegPack(Buf, InData%HSSBrMode) - call RegPack(Buf, InData%THSSBrDp) - call RegPack(Buf, InData%HSSBrDT) - call RegPack(Buf, InData%HSSBrTqF) - call RegPack(Buf, InData%YCMode) - call RegPack(Buf, InData%TYCOn) - call RegPack(Buf, InData%YawNeut) - call RegPack(Buf, InData%YawSpr) - call RegPack(Buf, InData%YawDamp) - call RegPack(Buf, InData%TYawManS) - call RegPack(Buf, InData%YawManRat) - call RegPack(Buf, InData%NacYawF) - call RegPack(Buf, InData%SumPrint) - call RegPack(Buf, InData%OutFile) - call RegPack(Buf, InData%TabDelim) - call RegPack(Buf, InData%OutFmt) - call RegPack(Buf, InData%Tstart) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, allocated(InData%OutList)) - if (allocated(InData%OutList)) then - call RegPackBounds(Buf, 1, lbound(InData%OutList, kind=B8Ki), ubound(InData%OutList, kind=B8Ki)) - call RegPack(Buf, InData%OutList) - end if - call RegPack(Buf, InData%DLL_FileName) - call RegPack(Buf, InData%DLL_ProcName) - call RegPack(Buf, InData%DLL_InFile) - call RegPack(Buf, InData%DLL_DT) - call RegPack(Buf, InData%DLL_Ramp) - call RegPack(Buf, InData%BPCutoff) - call RegPack(Buf, InData%NacYaw_North) - call RegPack(Buf, InData%Ptch_Cntrl) - call RegPack(Buf, InData%Ptch_SetPnt) - call RegPack(Buf, InData%Ptch_Min) - call RegPack(Buf, InData%Ptch_Max) - call RegPack(Buf, InData%PtchRate_Min) - call RegPack(Buf, InData%PtchRate_Max) - call RegPack(Buf, InData%Gain_OM) - call RegPack(Buf, InData%GenSpd_MinOM) - call RegPack(Buf, InData%GenSpd_MaxOM) - call RegPack(Buf, InData%GenSpd_Dem) - call RegPack(Buf, InData%GenTrq_Dem) - call RegPack(Buf, InData%GenPwr_Dem) - call RegPack(Buf, InData%DLL_NumTrq) - call RegPack(Buf, allocated(InData%GenSpd_TLU)) - if (allocated(InData%GenSpd_TLU)) then - call RegPackBounds(Buf, 1, lbound(InData%GenSpd_TLU, kind=B8Ki), ubound(InData%GenSpd_TLU, kind=B8Ki)) - call RegPack(Buf, InData%GenSpd_TLU) - end if - call RegPack(Buf, allocated(InData%GenTrq_TLU)) - if (allocated(InData%GenTrq_TLU)) then - call RegPackBounds(Buf, 1, lbound(InData%GenTrq_TLU, kind=B8Ki), ubound(InData%GenTrq_TLU, kind=B8Ki)) - call RegPack(Buf, InData%GenTrq_TLU) - end if - call RegPack(Buf, InData%UseLegacyInterface) - call RegPack(Buf, InData%NumBStC) - call RegPack(Buf, allocated(InData%BStCfiles)) - if (allocated(InData%BStCfiles)) then - call RegPackBounds(Buf, 1, lbound(InData%BStCfiles, kind=B8Ki), ubound(InData%BStCfiles, kind=B8Ki)) - call RegPack(Buf, InData%BStCfiles) - end if - call RegPack(Buf, InData%NumNStC) - call RegPack(Buf, allocated(InData%NStCfiles)) - if (allocated(InData%NStCfiles)) then - call RegPackBounds(Buf, 1, lbound(InData%NStCfiles, kind=B8Ki), ubound(InData%NStCfiles, kind=B8Ki)) - call RegPack(Buf, InData%NStCfiles) - end if - call RegPack(Buf, InData%NumTStC) - call RegPack(Buf, allocated(InData%TStCfiles)) - if (allocated(InData%TStCfiles)) then - call RegPackBounds(Buf, 1, lbound(InData%TStCfiles, kind=B8Ki), ubound(InData%TStCfiles, kind=B8Ki)) - call RegPack(Buf, InData%TStCfiles) - end if - call RegPack(Buf, InData%NumSStC) - call RegPack(Buf, allocated(InData%SStCfiles)) - if (allocated(InData%SStCfiles)) then - call RegPackBounds(Buf, 1, lbound(InData%SStCfiles, kind=B8Ki), ubound(InData%SStCfiles, kind=B8Ki)) - call RegPack(Buf, InData%SStCfiles) - end if - call RegPack(Buf, InData%AfCmode) - call RegPack(Buf, InData%AfC_Mean) - call RegPack(Buf, InData%AfC_Amp) - call RegPack(Buf, InData%AfC_Phase) - call RegPack(Buf, InData%CCmode) - call RegPack(Buf, InData%EXavrSWAP) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT) + call RegPack(RF, InData%Echo) + call RegPack(RF, InData%PCMode) + call RegPack(RF, InData%TPCOn) + call RegPack(RF, InData%TPitManS) + call RegPack(RF, InData%PitManRat) + call RegPack(RF, InData%BlPitchF) + call RegPack(RF, InData%VSContrl) + call RegPack(RF, InData%GenModel) + call RegPack(RF, InData%GenEff) + call RegPack(RF, InData%GenTiStr) + call RegPack(RF, InData%GenTiStp) + call RegPack(RF, InData%SpdGenOn) + call RegPack(RF, InData%TimGenOn) + call RegPack(RF, InData%TimGenOf) + call RegPack(RF, InData%VS_RtGnSp) + call RegPack(RF, InData%VS_RtTq) + call RegPack(RF, InData%VS_Rgn2K) + call RegPack(RF, InData%VS_SlPc) + call RegPack(RF, InData%SIG_SlPc) + call RegPack(RF, InData%SIG_SySp) + call RegPack(RF, InData%SIG_RtTq) + call RegPack(RF, InData%SIG_PORt) + call RegPack(RF, InData%TEC_Freq) + call RegPack(RF, InData%TEC_NPol) + call RegPack(RF, InData%TEC_SRes) + call RegPack(RF, InData%TEC_RRes) + call RegPack(RF, InData%TEC_VLL) + call RegPack(RF, InData%TEC_SLR) + call RegPack(RF, InData%TEC_RLR) + call RegPack(RF, InData%TEC_MR) + call RegPack(RF, InData%HSSBrMode) + call RegPack(RF, InData%THSSBrDp) + call RegPack(RF, InData%HSSBrDT) + call RegPack(RF, InData%HSSBrTqF) + call RegPack(RF, InData%YCMode) + call RegPack(RF, InData%TYCOn) + call RegPack(RF, InData%YawNeut) + call RegPack(RF, InData%YawSpr) + call RegPack(RF, InData%YawDamp) + call RegPack(RF, InData%TYawManS) + call RegPack(RF, InData%YawManRat) + call RegPack(RF, InData%NacYawF) + call RegPack(RF, InData%SumPrint) + call RegPack(RF, InData%OutFile) + call RegPack(RF, InData%TabDelim) + call RegPack(RF, InData%OutFmt) + call RegPack(RF, InData%Tstart) + call RegPack(RF, InData%NumOuts) + call RegPackAlloc(RF, InData%OutList) + call RegPack(RF, InData%DLL_FileName) + call RegPack(RF, InData%DLL_ProcName) + call RegPack(RF, InData%DLL_InFile) + call RegPack(RF, InData%DLL_DT) + call RegPack(RF, InData%DLL_Ramp) + call RegPack(RF, InData%BPCutoff) + call RegPack(RF, InData%NacYaw_North) + call RegPack(RF, InData%Ptch_Cntrl) + call RegPack(RF, InData%Ptch_SetPnt) + call RegPack(RF, InData%Ptch_Min) + call RegPack(RF, InData%Ptch_Max) + call RegPack(RF, InData%PtchRate_Min) + call RegPack(RF, InData%PtchRate_Max) + call RegPack(RF, InData%Gain_OM) + call RegPack(RF, InData%GenSpd_MinOM) + call RegPack(RF, InData%GenSpd_MaxOM) + call RegPack(RF, InData%GenSpd_Dem) + call RegPack(RF, InData%GenTrq_Dem) + call RegPack(RF, InData%GenPwr_Dem) + call RegPack(RF, InData%DLL_NumTrq) + call RegPackAlloc(RF, InData%GenSpd_TLU) + call RegPackAlloc(RF, InData%GenTrq_TLU) + call RegPack(RF, InData%UseLegacyInterface) + call RegPack(RF, InData%NumBStC) + call RegPackAlloc(RF, InData%BStCfiles) + call RegPack(RF, InData%NumNStC) + call RegPackAlloc(RF, InData%NStCfiles) + call RegPack(RF, InData%NumTStC) + call RegPackAlloc(RF, InData%TStCfiles) + call RegPack(RF, InData%NumSStC) + call RegPackAlloc(RF, InData%SStCfiles) + call RegPack(RF, InData%AfCmode) + call RegPack(RF, InData%AfC_Mean) + call RegPack(RF, InData%AfC_Amp) + call RegPack(RF, InData%AfC_Phase) + call RegPack(RF, InData%CCmode) + call RegPack(RF, InData%EXavrSWAP) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SrvD_UnPackInputFile(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_UnPackInputFile(RF, OutData) + type(RegFile), intent(inout) :: RF type(SrvD_InputFile), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SrvD_UnPackInputFile' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Echo) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PCMode) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TPCOn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TPitManS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PitManRat) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BlPitchF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VSContrl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenModel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenEff) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenTiStr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenTiStp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SpdGenOn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TimGenOn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TimGenOf) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VS_RtGnSp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VS_RtTq) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VS_Rgn2K) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VS_SlPc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SIG_SlPc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SIG_SySp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SIG_RtTq) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SIG_PORt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_Freq) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_NPol) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_SRes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_RRes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_VLL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_SLR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_RLR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_MR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HSSBrMode) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%THSSBrDp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HSSBrDT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HSSBrTqF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YCMode) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TYCOn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawNeut) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawSpr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawDamp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TYawManS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawManRat) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacYawF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SumPrint) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TabDelim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Tstart) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%OutList)) deallocate(OutData%OutList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OutList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OutList) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%DLL_FileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DLL_ProcName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DLL_InFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DLL_DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DLL_Ramp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BPCutoff) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacYaw_North) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Ptch_Cntrl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Ptch_SetPnt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Ptch_Min) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Ptch_Max) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtchRate_Min) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtchRate_Max) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Gain_OM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenSpd_MinOM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenSpd_MaxOM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenSpd_Dem) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenTrq_Dem) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenPwr_Dem) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DLL_NumTrq) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%GenSpd_TLU)) deallocate(OutData%GenSpd_TLU) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GenSpd_TLU(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GenSpd_TLU.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GenSpd_TLU) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%GenTrq_TLU)) deallocate(OutData%GenTrq_TLU) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GenTrq_TLU(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GenTrq_TLU.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GenTrq_TLU) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%UseLegacyInterface) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBStC) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BStCfiles)) deallocate(OutData%BStCfiles) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BStCfiles(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStCfiles.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BStCfiles) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NumNStC) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%NStCfiles)) deallocate(OutData%NStCfiles) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NStCfiles(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStCfiles.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NStCfiles) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NumTStC) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TStCfiles)) deallocate(OutData%TStCfiles) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TStCfiles(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStCfiles.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TStCfiles) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NumSStC) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%SStCfiles)) deallocate(OutData%SStCfiles) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SStCfiles(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStCfiles.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SStCfiles) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%AfCmode) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AfC_Mean) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AfC_Amp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AfC_Phase) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CCmode) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EXavrSWAP) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Echo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PCMode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TPCOn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TPitManS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PitManRat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BlPitchF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VSContrl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenModel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenEff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenTiStr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenTiStp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SpdGenOn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TimGenOn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TimGenOf); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VS_RtGnSp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VS_RtTq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VS_Rgn2K); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VS_SlPc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SIG_SlPc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SIG_SySp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SIG_RtTq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SIG_PORt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_Freq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_NPol); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_SRes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_RRes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_VLL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_SLR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_RLR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_MR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HSSBrMode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%THSSBrDp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HSSBrDT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HSSBrTqF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YCMode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TYCOn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawNeut); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawSpr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawDamp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TYawManS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawManRat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacYawF); 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 + call RegUnpack(RF, OutData%OutFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Tstart); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OutList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DLL_FileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DLL_ProcName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DLL_InFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DLL_DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DLL_Ramp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BPCutoff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacYaw_North); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ptch_Cntrl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ptch_SetPnt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ptch_Min); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ptch_Max); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtchRate_Min); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtchRate_Max); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gain_OM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenSpd_MinOM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenSpd_MaxOM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenSpd_Dem); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenTrq_Dem); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenPwr_Dem); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DLL_NumTrq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%GenSpd_TLU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%GenTrq_TLU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseLegacyInterface); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBStC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BStCfiles); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumNStC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NStCfiles); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumTStC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TStCfiles); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumSStC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SStCfiles); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AfCmode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AfC_Mean); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AfC_Amp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AfC_Phase); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CCmode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EXavrSWAP); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SrvD_CopyBladedDLLType(SrcBladedDLLTypeData, DstBladedDLLTypeData, CtrlCode, ErrStat, ErrMsg) @@ -2651,715 +2042,235 @@ subroutine SrvD_DestroyBladedDLLType(BladedDLLTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine SrvD_PackBladedDLLType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_PackBladedDLLType(RF, Indata) + type(RegFile), intent(inout) :: RF type(BladedDLLType), intent(in) :: InData character(*), parameter :: RoutineName = 'SrvD_PackBladedDLLType' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%avrSWAP)) - if (allocated(InData%avrSWAP)) then - call RegPackBounds(Buf, 1, lbound(InData%avrSWAP, kind=B8Ki), ubound(InData%avrSWAP, kind=B8Ki)) - call RegPack(Buf, InData%avrSWAP) - end if - call RegPack(Buf, InData%HSSBrTrqDemand) - call RegPack(Buf, InData%YawRateCom) - call RegPack(Buf, InData%GenTrq) - call RegPack(Buf, InData%GenState) - call RegPack(Buf, InData%BlPitchCom) - call RegPack(Buf, InData%PrevBlPitch) - call RegPack(Buf, InData%BlAirfoilCom) - call RegPack(Buf, InData%PrevBlAirfoilCom) - call RegPack(Buf, InData%ElecPwr_prev) - call RegPack(Buf, InData%GenTrq_prev) - call RegPack(Buf, allocated(InData%toSC)) - if (allocated(InData%toSC)) then - call RegPackBounds(Buf, 1, lbound(InData%toSC, kind=B8Ki), ubound(InData%toSC, kind=B8Ki)) - call RegPack(Buf, InData%toSC) - end if - call RegPack(Buf, InData%initialized) - call RegPack(Buf, InData%NumLogChannels) - call RegPack(Buf, allocated(InData%LogChannels_OutParam)) + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%avrSWAP) + call RegPack(RF, InData%HSSBrTrqDemand) + call RegPack(RF, InData%YawRateCom) + call RegPack(RF, InData%GenTrq) + call RegPack(RF, InData%GenState) + call RegPack(RF, InData%BlPitchCom) + call RegPack(RF, InData%PrevBlPitch) + call RegPack(RF, InData%BlAirfoilCom) + call RegPack(RF, InData%PrevBlAirfoilCom) + call RegPack(RF, InData%ElecPwr_prev) + call RegPack(RF, InData%GenTrq_prev) + call RegPackAlloc(RF, InData%toSC) + call RegPack(RF, InData%initialized) + call RegPack(RF, InData%NumLogChannels) + call RegPack(RF, allocated(InData%LogChannels_OutParam)) if (allocated(InData%LogChannels_OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%LogChannels_OutParam, kind=B8Ki), ubound(InData%LogChannels_OutParam, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%LogChannels_OutParam, kind=B8Ki), ubound(InData%LogChannels_OutParam, kind=B8Ki)) LB(1:1) = lbound(InData%LogChannels_OutParam, kind=B8Ki) UB(1:1) = ubound(InData%LogChannels_OutParam, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackOutParmType(Buf, InData%LogChannels_OutParam(i1)) - end do - end if - call RegPack(Buf, allocated(InData%LogChannels)) - if (allocated(InData%LogChannels)) then - call RegPackBounds(Buf, 1, lbound(InData%LogChannels, kind=B8Ki), ubound(InData%LogChannels, kind=B8Ki)) - call RegPack(Buf, InData%LogChannels) - end if - call RegPack(Buf, InData%ErrStat) - call RegPack(Buf, InData%ErrMsg) - call RegPack(Buf, InData%CurrentTime) - call RegPack(Buf, InData%SimStatus) - call RegPack(Buf, InData%ShaftBrakeStatusBinaryFlag) - call RegPack(Buf, InData%HSSBrDeployed) - call RegPack(Buf, InData%TimeHSSBrFullyDeployed) - call RegPack(Buf, InData%TimeHSSBrDeployed) - call RegPack(Buf, InData%OverrideYawRateWithTorque) - call RegPack(Buf, InData%YawTorqueDemand) - call RegPack(Buf, allocated(InData%BlPitchInput)) - if (allocated(InData%BlPitchInput)) then - call RegPackBounds(Buf, 1, lbound(InData%BlPitchInput, kind=B8Ki), ubound(InData%BlPitchInput, kind=B8Ki)) - call RegPack(Buf, InData%BlPitchInput) - end if - call RegPack(Buf, InData%YawAngleFromNorth) - call RegPack(Buf, InData%HorWindV) - call RegPack(Buf, InData%HSS_Spd) - call RegPack(Buf, InData%YawErr) - call RegPack(Buf, InData%RotSpeed) - call RegPack(Buf, InData%YawBrTAxp) - call RegPack(Buf, InData%YawBrTAyp) - call RegPack(Buf, InData%LSSTipMys) - call RegPack(Buf, InData%LSSTipMzs) - call RegPack(Buf, InData%LSSTipMya) - call RegPack(Buf, InData%LSSTipMza) - call RegPack(Buf, InData%LSSTipPxa) - call RegPack(Buf, InData%Yaw) - call RegPack(Buf, InData%YawRate) - call RegPack(Buf, InData%YawBrMyn) - call RegPack(Buf, InData%YawBrMzn) - call RegPack(Buf, InData%NcIMURAxs) - call RegPack(Buf, InData%NcIMURAys) - call RegPack(Buf, InData%NcIMURAzs) - call RegPack(Buf, InData%RotPwr) - call RegPack(Buf, InData%LSSTipMxa) - call RegPack(Buf, InData%RootMyc) - call RegPack(Buf, InData%RootMxc) - call RegPack(Buf, InData%LSShftFxa) - call RegPack(Buf, InData%LSShftFys) - call RegPack(Buf, InData%LSShftFzs) - call RegPack(Buf, allocated(InData%LidSpeed)) - if (allocated(InData%LidSpeed)) then - call RegPackBounds(Buf, 1, lbound(InData%LidSpeed, kind=B8Ki), ubound(InData%LidSpeed, kind=B8Ki)) - call RegPack(Buf, InData%LidSpeed) - end if - call RegPack(Buf, allocated(InData%MsrPositionsX)) - if (allocated(InData%MsrPositionsX)) then - call RegPackBounds(Buf, 1, lbound(InData%MsrPositionsX, kind=B8Ki), ubound(InData%MsrPositionsX, kind=B8Ki)) - call RegPack(Buf, InData%MsrPositionsX) - end if - call RegPack(Buf, allocated(InData%MsrPositionsY)) - if (allocated(InData%MsrPositionsY)) then - call RegPackBounds(Buf, 1, lbound(InData%MsrPositionsY, kind=B8Ki), ubound(InData%MsrPositionsY, kind=B8Ki)) - call RegPack(Buf, InData%MsrPositionsY) - end if - call RegPack(Buf, allocated(InData%MsrPositionsZ)) - if (allocated(InData%MsrPositionsZ)) then - call RegPackBounds(Buf, 1, lbound(InData%MsrPositionsZ, kind=B8Ki), ubound(InData%MsrPositionsZ, kind=B8Ki)) - call RegPack(Buf, InData%MsrPositionsZ) - end if - call RegPack(Buf, InData%SensorType) - call RegPack(Buf, InData%NumBeam) - call RegPack(Buf, InData%NumPulseGate) - call RegPack(Buf, InData%PulseSpacing) - call RegPack(Buf, InData%URefLid) - call RegPack(Buf, InData%DLL_DT) - call RegPack(Buf, InData%DLL_InFile) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, InData%GenTrq_Dem) - call RegPack(Buf, InData%GenSpd_Dem) - call RegPack(Buf, InData%Ptch_Max) - call RegPack(Buf, InData%Ptch_Min) - call RegPack(Buf, InData%Ptch_SetPnt) - call RegPack(Buf, InData%PtchRate_Max) - call RegPack(Buf, InData%PtchRate_Min) - call RegPack(Buf, InData%GenPwr_Dem) - call RegPack(Buf, InData%Gain_OM) - call RegPack(Buf, InData%GenSpd_MaxOM) - call RegPack(Buf, InData%GenSpd_MinOM) - call RegPack(Buf, InData%Ptch_Cntrl) - call RegPack(Buf, InData%DLL_NumTrq) - call RegPack(Buf, allocated(InData%GenSpd_TLU)) - if (allocated(InData%GenSpd_TLU)) then - call RegPackBounds(Buf, 1, lbound(InData%GenSpd_TLU, kind=B8Ki), ubound(InData%GenSpd_TLU, kind=B8Ki)) - call RegPack(Buf, InData%GenSpd_TLU) - end if - call RegPack(Buf, allocated(InData%GenTrq_TLU)) - if (allocated(InData%GenTrq_TLU)) then - call RegPackBounds(Buf, 1, lbound(InData%GenTrq_TLU, kind=B8Ki), ubound(InData%GenTrq_TLU, kind=B8Ki)) - call RegPack(Buf, InData%GenTrq_TLU) - end if - call RegPack(Buf, InData%Yaw_Cntrl) - call RegPack(Buf, allocated(InData%PrevCableDeltaL)) - if (allocated(InData%PrevCableDeltaL)) then - call RegPackBounds(Buf, 1, lbound(InData%PrevCableDeltaL, kind=B8Ki), ubound(InData%PrevCableDeltaL, kind=B8Ki)) - call RegPack(Buf, InData%PrevCableDeltaL) - end if - call RegPack(Buf, allocated(InData%PrevCableDeltaLdot)) - if (allocated(InData%PrevCableDeltaLdot)) then - call RegPackBounds(Buf, 1, lbound(InData%PrevCableDeltaLdot, kind=B8Ki), ubound(InData%PrevCableDeltaLdot, kind=B8Ki)) - call RegPack(Buf, InData%PrevCableDeltaLdot) - end if - call RegPack(Buf, allocated(InData%CableDeltaL)) - if (allocated(InData%CableDeltaL)) then - call RegPackBounds(Buf, 1, lbound(InData%CableDeltaL, kind=B8Ki), ubound(InData%CableDeltaL, kind=B8Ki)) - call RegPack(Buf, InData%CableDeltaL) - end if - call RegPack(Buf, allocated(InData%CableDeltaLdot)) - if (allocated(InData%CableDeltaLdot)) then - call RegPackBounds(Buf, 1, lbound(InData%CableDeltaLdot, kind=B8Ki), ubound(InData%CableDeltaLdot, kind=B8Ki)) - call RegPack(Buf, InData%CableDeltaLdot) - end if - call RegPack(Buf, allocated(InData%PrevStCCmdStiff)) - if (allocated(InData%PrevStCCmdStiff)) then - call RegPackBounds(Buf, 2, lbound(InData%PrevStCCmdStiff, kind=B8Ki), ubound(InData%PrevStCCmdStiff, kind=B8Ki)) - call RegPack(Buf, InData%PrevStCCmdStiff) - end if - call RegPack(Buf, allocated(InData%PrevStCCmdDamp)) - if (allocated(InData%PrevStCCmdDamp)) then - call RegPackBounds(Buf, 2, lbound(InData%PrevStCCmdDamp, kind=B8Ki), ubound(InData%PrevStCCmdDamp, kind=B8Ki)) - call RegPack(Buf, InData%PrevStCCmdDamp) - end if - call RegPack(Buf, allocated(InData%PrevStCCmdBrake)) - if (allocated(InData%PrevStCCmdBrake)) then - call RegPackBounds(Buf, 2, lbound(InData%PrevStCCmdBrake, kind=B8Ki), ubound(InData%PrevStCCmdBrake, kind=B8Ki)) - call RegPack(Buf, InData%PrevStCCmdBrake) - end if - call RegPack(Buf, allocated(InData%PrevStCCmdForce)) - if (allocated(InData%PrevStCCmdForce)) then - call RegPackBounds(Buf, 2, lbound(InData%PrevStCCmdForce, kind=B8Ki), ubound(InData%PrevStCCmdForce, kind=B8Ki)) - call RegPack(Buf, InData%PrevStCCmdForce) - end if - call RegPack(Buf, allocated(InData%StCCmdStiff)) - if (allocated(InData%StCCmdStiff)) then - call RegPackBounds(Buf, 2, lbound(InData%StCCmdStiff, kind=B8Ki), ubound(InData%StCCmdStiff, kind=B8Ki)) - call RegPack(Buf, InData%StCCmdStiff) - end if - call RegPack(Buf, allocated(InData%StCCmdDamp)) - if (allocated(InData%StCCmdDamp)) then - call RegPackBounds(Buf, 2, lbound(InData%StCCmdDamp, kind=B8Ki), ubound(InData%StCCmdDamp, kind=B8Ki)) - call RegPack(Buf, InData%StCCmdDamp) - end if - call RegPack(Buf, allocated(InData%StCCmdBrake)) - if (allocated(InData%StCCmdBrake)) then - call RegPackBounds(Buf, 2, lbound(InData%StCCmdBrake, kind=B8Ki), ubound(InData%StCCmdBrake, kind=B8Ki)) - call RegPack(Buf, InData%StCCmdBrake) - end if - call RegPack(Buf, allocated(InData%StCCmdForce)) - if (allocated(InData%StCCmdForce)) then - call RegPackBounds(Buf, 2, lbound(InData%StCCmdForce, kind=B8Ki), ubound(InData%StCCmdForce, kind=B8Ki)) - call RegPack(Buf, InData%StCCmdForce) - end if - call RegPack(Buf, allocated(InData%StCMeasDisp)) - if (allocated(InData%StCMeasDisp)) then - call RegPackBounds(Buf, 2, lbound(InData%StCMeasDisp, kind=B8Ki), ubound(InData%StCMeasDisp, kind=B8Ki)) - call RegPack(Buf, InData%StCMeasDisp) - end if - call RegPack(Buf, allocated(InData%StCMeasVel)) - if (allocated(InData%StCMeasVel)) then - call RegPackBounds(Buf, 2, lbound(InData%StCMeasVel, kind=B8Ki), ubound(InData%StCMeasVel, kind=B8Ki)) - call RegPack(Buf, InData%StCMeasVel) - end if - if (RegCheckErr(Buf, RoutineName)) return + call NWTC_Library_PackOutParmType(RF, InData%LogChannels_OutParam(i1)) + end do + end if + call RegPackAlloc(RF, InData%LogChannels) + call RegPack(RF, InData%ErrStat) + call RegPack(RF, InData%ErrMsg) + call RegPack(RF, InData%CurrentTime) + call RegPack(RF, InData%SimStatus) + call RegPack(RF, InData%ShaftBrakeStatusBinaryFlag) + call RegPack(RF, InData%HSSBrDeployed) + call RegPack(RF, InData%TimeHSSBrFullyDeployed) + call RegPack(RF, InData%TimeHSSBrDeployed) + call RegPack(RF, InData%OverrideYawRateWithTorque) + call RegPack(RF, InData%YawTorqueDemand) + call RegPackAlloc(RF, InData%BlPitchInput) + call RegPack(RF, InData%YawAngleFromNorth) + call RegPack(RF, InData%HorWindV) + call RegPack(RF, InData%HSS_Spd) + call RegPack(RF, InData%YawErr) + call RegPack(RF, InData%RotSpeed) + call RegPack(RF, InData%YawBrTAxp) + call RegPack(RF, InData%YawBrTAyp) + call RegPack(RF, InData%LSSTipMys) + call RegPack(RF, InData%LSSTipMzs) + call RegPack(RF, InData%LSSTipMya) + call RegPack(RF, InData%LSSTipMza) + call RegPack(RF, InData%LSSTipPxa) + call RegPack(RF, InData%Yaw) + call RegPack(RF, InData%YawRate) + call RegPack(RF, InData%YawBrMyn) + call RegPack(RF, InData%YawBrMzn) + call RegPack(RF, InData%NcIMURAxs) + call RegPack(RF, InData%NcIMURAys) + call RegPack(RF, InData%NcIMURAzs) + call RegPack(RF, InData%RotPwr) + call RegPack(RF, InData%LSSTipMxa) + call RegPack(RF, InData%RootMyc) + call RegPack(RF, InData%RootMxc) + call RegPack(RF, InData%LSShftFxa) + call RegPack(RF, InData%LSShftFys) + call RegPack(RF, InData%LSShftFzs) + call RegPackAlloc(RF, InData%LidSpeed) + call RegPackAlloc(RF, InData%MsrPositionsX) + call RegPackAlloc(RF, InData%MsrPositionsY) + call RegPackAlloc(RF, InData%MsrPositionsZ) + call RegPack(RF, InData%SensorType) + call RegPack(RF, InData%NumBeam) + call RegPack(RF, InData%NumPulseGate) + call RegPack(RF, InData%PulseSpacing) + call RegPack(RF, InData%URefLid) + call RegPack(RF, InData%DLL_DT) + call RegPack(RF, InData%DLL_InFile) + call RegPack(RF, InData%RootName) + call RegPack(RF, InData%GenTrq_Dem) + call RegPack(RF, InData%GenSpd_Dem) + call RegPack(RF, InData%Ptch_Max) + call RegPack(RF, InData%Ptch_Min) + call RegPack(RF, InData%Ptch_SetPnt) + call RegPack(RF, InData%PtchRate_Max) + call RegPack(RF, InData%PtchRate_Min) + call RegPack(RF, InData%GenPwr_Dem) + call RegPack(RF, InData%Gain_OM) + call RegPack(RF, InData%GenSpd_MaxOM) + call RegPack(RF, InData%GenSpd_MinOM) + call RegPack(RF, InData%Ptch_Cntrl) + call RegPack(RF, InData%DLL_NumTrq) + call RegPackAlloc(RF, InData%GenSpd_TLU) + call RegPackAlloc(RF, InData%GenTrq_TLU) + call RegPack(RF, InData%Yaw_Cntrl) + call RegPackAlloc(RF, InData%PrevCableDeltaL) + call RegPackAlloc(RF, InData%PrevCableDeltaLdot) + call RegPackAlloc(RF, InData%CableDeltaL) + call RegPackAlloc(RF, InData%CableDeltaLdot) + call RegPackAlloc(RF, InData%PrevStCCmdStiff) + call RegPackAlloc(RF, InData%PrevStCCmdDamp) + call RegPackAlloc(RF, InData%PrevStCCmdBrake) + call RegPackAlloc(RF, InData%PrevStCCmdForce) + call RegPackAlloc(RF, InData%StCCmdStiff) + call RegPackAlloc(RF, InData%StCCmdDamp) + call RegPackAlloc(RF, InData%StCCmdBrake) + call RegPackAlloc(RF, InData%StCCmdForce) + call RegPackAlloc(RF, InData%StCMeasDisp) + call RegPackAlloc(RF, InData%StCMeasVel) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SrvD_UnPackBladedDLLType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_UnPackBladedDLLType(RF, OutData) + type(RegFile), intent(inout) :: RF type(BladedDLLType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SrvD_UnPackBladedDLLType' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%avrSWAP)) deallocate(OutData%avrSWAP) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%avrSWAP(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%avrSWAP.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%avrSWAP) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%HSSBrTrqDemand) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawRateCom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenTrq) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenState) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BlPitchCom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PrevBlPitch) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BlAirfoilCom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PrevBlAirfoilCom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ElecPwr_prev) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenTrq_prev) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%toSC)) deallocate(OutData%toSC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%toSC(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%toSC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%toSC) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%initialized) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumLogChannels) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%avrSWAP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HSSBrTrqDemand); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawRateCom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenTrq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenState); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BlPitchCom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PrevBlPitch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BlAirfoilCom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PrevBlAirfoilCom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ElecPwr_prev); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenTrq_prev); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%toSC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%initialized); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumLogChannels); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%LogChannels_OutParam)) deallocate(OutData%LogChannels_OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%LogChannels_OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LogChannels_OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - do i1 = LB(1), UB(1) - call NWTC_Library_UnpackOutParmType(Buf, OutData%LogChannels_OutParam(i1)) ! LogChannels_OutParam - end do - end if - if (allocated(OutData%LogChannels)) deallocate(OutData%LogChannels) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LogChannels(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LogChannels.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LogChannels) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%ErrStat) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ErrMsg) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CurrentTime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SimStatus) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ShaftBrakeStatusBinaryFlag) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HSSBrDeployed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TimeHSSBrFullyDeployed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TimeHSSBrDeployed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OverrideYawRateWithTorque) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawTorqueDemand) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BlPitchInput)) deallocate(OutData%BlPitchInput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlPitchInput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlPitchInput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlPitchInput) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%YawAngleFromNorth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HorWindV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HSS_Spd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawErr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawBrTAxp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawBrTAyp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipMys) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipMzs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipMya) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipMza) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipPxa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Yaw) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawRate) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawBrMyn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawBrMzn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NcIMURAxs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NcIMURAys) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NcIMURAzs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotPwr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipMxa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootMyc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootMxc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSShftFxa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSShftFys) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSShftFzs) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%LidSpeed)) deallocate(OutData%LidSpeed) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LidSpeed(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LidSpeed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LidSpeed) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MsrPositionsX)) deallocate(OutData%MsrPositionsX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MsrPositionsX(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MsrPositionsX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MsrPositionsX) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MsrPositionsY)) deallocate(OutData%MsrPositionsY) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MsrPositionsY(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MsrPositionsY.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MsrPositionsY) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MsrPositionsZ)) deallocate(OutData%MsrPositionsZ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MsrPositionsZ(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MsrPositionsZ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MsrPositionsZ) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%SensorType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBeam) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumPulseGate) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PulseSpacing) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%URefLid) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DLL_DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DLL_InFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenTrq_Dem) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenSpd_Dem) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Ptch_Max) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Ptch_Min) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Ptch_SetPnt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtchRate_Max) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PtchRate_Min) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenPwr_Dem) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Gain_OM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenSpd_MaxOM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenSpd_MinOM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Ptch_Cntrl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DLL_NumTrq) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%GenSpd_TLU)) deallocate(OutData%GenSpd_TLU) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GenSpd_TLU(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GenSpd_TLU.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GenSpd_TLU) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%GenTrq_TLU)) deallocate(OutData%GenTrq_TLU) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%GenTrq_TLU(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%GenTrq_TLU.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%GenTrq_TLU) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Yaw_Cntrl) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%PrevCableDeltaL)) deallocate(OutData%PrevCableDeltaL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PrevCableDeltaL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PrevCableDeltaL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PrevCableDeltaL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PrevCableDeltaLdot)) deallocate(OutData%PrevCableDeltaLdot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PrevCableDeltaLdot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PrevCableDeltaLdot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PrevCableDeltaLdot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CableDeltaL)) deallocate(OutData%CableDeltaL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CableDeltaL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CableDeltaL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CableDeltaL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CableDeltaLdot)) deallocate(OutData%CableDeltaLdot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CableDeltaLdot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CableDeltaLdot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CableDeltaLdot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PrevStCCmdStiff)) deallocate(OutData%PrevStCCmdStiff) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PrevStCCmdStiff(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PrevStCCmdStiff.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PrevStCCmdStiff) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PrevStCCmdDamp)) deallocate(OutData%PrevStCCmdDamp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PrevStCCmdDamp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PrevStCCmdDamp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PrevStCCmdDamp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PrevStCCmdBrake)) deallocate(OutData%PrevStCCmdBrake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PrevStCCmdBrake(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PrevStCCmdBrake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PrevStCCmdBrake) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PrevStCCmdForce)) deallocate(OutData%PrevStCCmdForce) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PrevStCCmdForce(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PrevStCCmdForce.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PrevStCCmdForce) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%StCCmdStiff)) deallocate(OutData%StCCmdStiff) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StCCmdStiff(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StCCmdStiff.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StCCmdStiff) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%StCCmdDamp)) deallocate(OutData%StCCmdDamp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StCCmdDamp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StCCmdDamp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StCCmdDamp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%StCCmdBrake)) deallocate(OutData%StCCmdBrake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StCCmdBrake(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StCCmdBrake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StCCmdBrake) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%StCCmdForce)) deallocate(OutData%StCCmdForce) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StCCmdForce(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StCCmdForce.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StCCmdForce) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%StCMeasDisp)) deallocate(OutData%StCMeasDisp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StCMeasDisp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StCMeasDisp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StCMeasDisp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%StCMeasVel)) deallocate(OutData%StCMeasVel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StCMeasVel(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StCMeasVel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StCMeasVel) - if (RegCheckErr(Buf, RoutineName)) return - end if + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LogChannels_OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) + return + end if + do i1 = LB(1), UB(1) + call NWTC_Library_UnpackOutParmType(RF, OutData%LogChannels_OutParam(i1)) ! LogChannels_OutParam + end do + end if + call RegUnpackAlloc(RF, OutData%LogChannels); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ErrStat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ErrMsg); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CurrentTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SimStatus); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ShaftBrakeStatusBinaryFlag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HSSBrDeployed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TimeHSSBrFullyDeployed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TimeHSSBrDeployed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OverrideYawRateWithTorque); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawTorqueDemand); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlPitchInput); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawAngleFromNorth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HorWindV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HSS_Spd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawErr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawBrTAxp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawBrTAyp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipMys); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipMzs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipMya); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipMza); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipPxa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Yaw); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawRate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawBrMyn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawBrMzn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NcIMURAxs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NcIMURAys); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NcIMURAzs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotPwr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipMxa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootMyc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootMxc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSShftFxa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSShftFys); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSShftFzs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LidSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MsrPositionsX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MsrPositionsY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MsrPositionsZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SensorType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBeam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumPulseGate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PulseSpacing); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%URefLid); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DLL_DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DLL_InFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenTrq_Dem); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenSpd_Dem); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ptch_Max); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ptch_Min); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ptch_SetPnt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtchRate_Max); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PtchRate_Min); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenPwr_Dem); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gain_OM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenSpd_MaxOM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenSpd_MinOM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ptch_Cntrl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DLL_NumTrq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%GenSpd_TLU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%GenTrq_TLU); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Yaw_Cntrl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PrevCableDeltaL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PrevCableDeltaLdot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CableDeltaL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CableDeltaLdot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PrevStCCmdStiff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PrevStCCmdDamp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PrevStCCmdBrake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PrevStCCmdForce); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StCCmdStiff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StCCmdDamp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StCCmdBrake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StCCmdForce); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StCMeasDisp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StCMeasVel); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SrvD_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -3491,122 +2402,113 @@ subroutine SrvD_DestroyContState(ContStateData, ErrStat, ErrMsg) end if end subroutine -subroutine SrvD_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SrvD_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SrvD_PackContState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyContState) - call RegPack(Buf, allocated(InData%BStC)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyContState) + call RegPack(RF, allocated(InData%BStC)) if (allocated(InData%BStC)) then - call RegPackBounds(Buf, 1, lbound(InData%BStC, kind=B8Ki), ubound(InData%BStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BStC, kind=B8Ki), ubound(InData%BStC, kind=B8Ki)) LB(1:1) = lbound(InData%BStC, kind=B8Ki) UB(1:1) = ubound(InData%BStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackContState(Buf, InData%BStC(i1)) + call StC_PackContState(RF, InData%BStC(i1)) end do end if - call RegPack(Buf, allocated(InData%NStC)) + call RegPack(RF, allocated(InData%NStC)) if (allocated(InData%NStC)) then - call RegPackBounds(Buf, 1, lbound(InData%NStC, kind=B8Ki), ubound(InData%NStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%NStC, kind=B8Ki), ubound(InData%NStC, kind=B8Ki)) LB(1:1) = lbound(InData%NStC, kind=B8Ki) UB(1:1) = ubound(InData%NStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackContState(Buf, InData%NStC(i1)) + call StC_PackContState(RF, InData%NStC(i1)) end do end if - call RegPack(Buf, allocated(InData%TStC)) + call RegPack(RF, allocated(InData%TStC)) if (allocated(InData%TStC)) then - call RegPackBounds(Buf, 1, lbound(InData%TStC, kind=B8Ki), ubound(InData%TStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%TStC, kind=B8Ki), ubound(InData%TStC, kind=B8Ki)) LB(1:1) = lbound(InData%TStC, kind=B8Ki) UB(1:1) = ubound(InData%TStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackContState(Buf, InData%TStC(i1)) + call StC_PackContState(RF, InData%TStC(i1)) end do end if - call RegPack(Buf, allocated(InData%SStC)) + call RegPack(RF, allocated(InData%SStC)) if (allocated(InData%SStC)) then - call RegPackBounds(Buf, 1, lbound(InData%SStC, kind=B8Ki), ubound(InData%SStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%SStC, kind=B8Ki), ubound(InData%SStC, kind=B8Ki)) LB(1:1) = lbound(InData%SStC, kind=B8Ki) UB(1:1) = ubound(InData%SStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackContState(Buf, InData%SStC(i1)) + call StC_PackContState(RF, InData%SStC(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SrvD_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SrvD_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SrvD_UnPackContState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyContState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyContState); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%BStC)) deallocate(OutData%BStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackContState(Buf, OutData%BStC(i1)) ! BStC + call StC_UnpackContState(RF, OutData%BStC(i1)) ! BStC end do end if if (allocated(OutData%NStC)) deallocate(OutData%NStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%NStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackContState(Buf, OutData%NStC(i1)) ! NStC + call StC_UnpackContState(RF, OutData%NStC(i1)) ! NStC end do end if if (allocated(OutData%TStC)) deallocate(OutData%TStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%TStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackContState(Buf, OutData%TStC(i1)) ! TStC + call StC_UnpackContState(RF, OutData%TStC(i1)) ! TStC end do end if if (allocated(OutData%SStC)) deallocate(OutData%SStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%SStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackContState(Buf, OutData%SStC(i1)) ! SStC + call StC_UnpackContState(RF, OutData%SStC(i1)) ! SStC end do end if end subroutine @@ -3740,122 +2642,113 @@ subroutine SrvD_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) end if end subroutine -subroutine SrvD_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SrvD_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SrvD_PackDiscState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%CtrlOffset) - call RegPack(Buf, allocated(InData%BStC)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%CtrlOffset) + call RegPack(RF, allocated(InData%BStC)) if (allocated(InData%BStC)) then - call RegPackBounds(Buf, 1, lbound(InData%BStC, kind=B8Ki), ubound(InData%BStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BStC, kind=B8Ki), ubound(InData%BStC, kind=B8Ki)) LB(1:1) = lbound(InData%BStC, kind=B8Ki) UB(1:1) = ubound(InData%BStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackDiscState(Buf, InData%BStC(i1)) + call StC_PackDiscState(RF, InData%BStC(i1)) end do end if - call RegPack(Buf, allocated(InData%NStC)) + call RegPack(RF, allocated(InData%NStC)) if (allocated(InData%NStC)) then - call RegPackBounds(Buf, 1, lbound(InData%NStC, kind=B8Ki), ubound(InData%NStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%NStC, kind=B8Ki), ubound(InData%NStC, kind=B8Ki)) LB(1:1) = lbound(InData%NStC, kind=B8Ki) UB(1:1) = ubound(InData%NStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackDiscState(Buf, InData%NStC(i1)) + call StC_PackDiscState(RF, InData%NStC(i1)) end do end if - call RegPack(Buf, allocated(InData%TStC)) + call RegPack(RF, allocated(InData%TStC)) if (allocated(InData%TStC)) then - call RegPackBounds(Buf, 1, lbound(InData%TStC, kind=B8Ki), ubound(InData%TStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%TStC, kind=B8Ki), ubound(InData%TStC, kind=B8Ki)) LB(1:1) = lbound(InData%TStC, kind=B8Ki) UB(1:1) = ubound(InData%TStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackDiscState(Buf, InData%TStC(i1)) + call StC_PackDiscState(RF, InData%TStC(i1)) end do end if - call RegPack(Buf, allocated(InData%SStC)) + call RegPack(RF, allocated(InData%SStC)) if (allocated(InData%SStC)) then - call RegPackBounds(Buf, 1, lbound(InData%SStC, kind=B8Ki), ubound(InData%SStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%SStC, kind=B8Ki), ubound(InData%SStC, kind=B8Ki)) LB(1:1) = lbound(InData%SStC, kind=B8Ki) UB(1:1) = ubound(InData%SStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackDiscState(Buf, InData%SStC(i1)) + call StC_PackDiscState(RF, InData%SStC(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SrvD_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SrvD_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SrvD_UnPackDiscState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%CtrlOffset) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%CtrlOffset); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%BStC)) deallocate(OutData%BStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackDiscState(Buf, OutData%BStC(i1)) ! BStC + call StC_UnpackDiscState(RF, OutData%BStC(i1)) ! BStC end do end if if (allocated(OutData%NStC)) deallocate(OutData%NStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%NStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackDiscState(Buf, OutData%NStC(i1)) ! NStC + call StC_UnpackDiscState(RF, OutData%NStC(i1)) ! NStC end do end if if (allocated(OutData%TStC)) deallocate(OutData%TStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%TStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackDiscState(Buf, OutData%TStC(i1)) ! TStC + call StC_UnpackDiscState(RF, OutData%TStC(i1)) ! TStC end do end if if (allocated(OutData%SStC)) deallocate(OutData%SStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%SStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackDiscState(Buf, OutData%SStC(i1)) ! SStC + call StC_UnpackDiscState(RF, OutData%SStC(i1)) ! SStC end do end if end subroutine @@ -3989,122 +2882,113 @@ subroutine SrvD_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) end if end subroutine -subroutine SrvD_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SrvD_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SrvD_PackConstrState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstrState) - call RegPack(Buf, allocated(InData%BStC)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstrState) + call RegPack(RF, allocated(InData%BStC)) if (allocated(InData%BStC)) then - call RegPackBounds(Buf, 1, lbound(InData%BStC, kind=B8Ki), ubound(InData%BStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BStC, kind=B8Ki), ubound(InData%BStC, kind=B8Ki)) LB(1:1) = lbound(InData%BStC, kind=B8Ki) UB(1:1) = ubound(InData%BStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackConstrState(Buf, InData%BStC(i1)) + call StC_PackConstrState(RF, InData%BStC(i1)) end do end if - call RegPack(Buf, allocated(InData%NStC)) + call RegPack(RF, allocated(InData%NStC)) if (allocated(InData%NStC)) then - call RegPackBounds(Buf, 1, lbound(InData%NStC, kind=B8Ki), ubound(InData%NStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%NStC, kind=B8Ki), ubound(InData%NStC, kind=B8Ki)) LB(1:1) = lbound(InData%NStC, kind=B8Ki) UB(1:1) = ubound(InData%NStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackConstrState(Buf, InData%NStC(i1)) + call StC_PackConstrState(RF, InData%NStC(i1)) end do end if - call RegPack(Buf, allocated(InData%TStC)) + call RegPack(RF, allocated(InData%TStC)) if (allocated(InData%TStC)) then - call RegPackBounds(Buf, 1, lbound(InData%TStC, kind=B8Ki), ubound(InData%TStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%TStC, kind=B8Ki), ubound(InData%TStC, kind=B8Ki)) LB(1:1) = lbound(InData%TStC, kind=B8Ki) UB(1:1) = ubound(InData%TStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackConstrState(Buf, InData%TStC(i1)) + call StC_PackConstrState(RF, InData%TStC(i1)) end do end if - call RegPack(Buf, allocated(InData%SStC)) + call RegPack(RF, allocated(InData%SStC)) if (allocated(InData%SStC)) then - call RegPackBounds(Buf, 1, lbound(InData%SStC, kind=B8Ki), ubound(InData%SStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%SStC, kind=B8Ki), ubound(InData%SStC, kind=B8Ki)) LB(1:1) = lbound(InData%SStC, kind=B8Ki) UB(1:1) = ubound(InData%SStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackConstrState(Buf, InData%SStC(i1)) + call StC_PackConstrState(RF, InData%SStC(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SrvD_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SrvD_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SrvD_UnPackConstrState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstrState); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%BStC)) deallocate(OutData%BStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackConstrState(Buf, OutData%BStC(i1)) ! BStC + call StC_UnpackConstrState(RF, OutData%BStC(i1)) ! BStC end do end if if (allocated(OutData%NStC)) deallocate(OutData%NStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%NStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackConstrState(Buf, OutData%NStC(i1)) ! NStC + call StC_UnpackConstrState(RF, OutData%NStC(i1)) ! NStC end do end if if (allocated(OutData%TStC)) deallocate(OutData%TStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%TStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackConstrState(Buf, OutData%TStC(i1)) ! TStC + call StC_UnpackConstrState(RF, OutData%TStC(i1)) ! TStC end do end if if (allocated(OutData%SStC)) deallocate(OutData%SStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%SStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackConstrState(Buf, OutData%SStC(i1)) ! SStC + call StC_UnpackConstrState(RF, OutData%SStC(i1)) ! SStC end do end if end subroutine @@ -4333,251 +3217,135 @@ subroutine SrvD_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) end if end subroutine -subroutine SrvD_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SrvD_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SrvD_PackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%BegPitMan)) - if (allocated(InData%BegPitMan)) then - call RegPackBounds(Buf, 1, lbound(InData%BegPitMan, kind=B8Ki), ubound(InData%BegPitMan, kind=B8Ki)) - call RegPack(Buf, InData%BegPitMan) - end if - call RegPack(Buf, allocated(InData%BlPitchI)) - if (allocated(InData%BlPitchI)) then - call RegPackBounds(Buf, 1, lbound(InData%BlPitchI, kind=B8Ki), ubound(InData%BlPitchI, kind=B8Ki)) - call RegPack(Buf, InData%BlPitchI) - end if - call RegPack(Buf, allocated(InData%TPitManE)) - if (allocated(InData%TPitManE)) then - call RegPackBounds(Buf, 1, lbound(InData%TPitManE, kind=B8Ki), ubound(InData%TPitManE, kind=B8Ki)) - call RegPack(Buf, InData%TPitManE) - end if - call RegPack(Buf, InData%BegYawMan) - call RegPack(Buf, InData%NacYawI) - call RegPack(Buf, InData%TYawManE) - call RegPack(Buf, InData%YawPosComInt) - call RegPack(Buf, allocated(InData%BegTpBr)) - if (allocated(InData%BegTpBr)) then - call RegPackBounds(Buf, 1, lbound(InData%BegTpBr, kind=B8Ki), ubound(InData%BegTpBr, kind=B8Ki)) - call RegPack(Buf, InData%BegTpBr) - end if - call RegPack(Buf, allocated(InData%TTpBrDp)) - if (allocated(InData%TTpBrDp)) then - call RegPackBounds(Buf, 1, lbound(InData%TTpBrDp, kind=B8Ki), ubound(InData%TTpBrDp, kind=B8Ki)) - call RegPack(Buf, InData%TTpBrDp) - end if - call RegPack(Buf, allocated(InData%TTpBrFl)) - if (allocated(InData%TTpBrFl)) then - call RegPackBounds(Buf, 1, lbound(InData%TTpBrFl, kind=B8Ki), ubound(InData%TTpBrFl, kind=B8Ki)) - call RegPack(Buf, InData%TTpBrFl) - end if - call RegPack(Buf, InData%Off4Good) - call RegPack(Buf, InData%GenOnLine) - call RegPack(Buf, allocated(InData%BStC)) + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%BegPitMan) + call RegPackAlloc(RF, InData%BlPitchI) + call RegPackAlloc(RF, InData%TPitManE) + call RegPack(RF, InData%BegYawMan) + call RegPack(RF, InData%NacYawI) + call RegPack(RF, InData%TYawManE) + call RegPack(RF, InData%YawPosComInt) + call RegPackAlloc(RF, InData%BegTpBr) + call RegPackAlloc(RF, InData%TTpBrDp) + call RegPackAlloc(RF, InData%TTpBrFl) + call RegPack(RF, InData%Off4Good) + call RegPack(RF, InData%GenOnLine) + call RegPack(RF, allocated(InData%BStC)) if (allocated(InData%BStC)) then - call RegPackBounds(Buf, 1, lbound(InData%BStC, kind=B8Ki), ubound(InData%BStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BStC, kind=B8Ki), ubound(InData%BStC, kind=B8Ki)) LB(1:1) = lbound(InData%BStC, kind=B8Ki) UB(1:1) = ubound(InData%BStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackOtherState(Buf, InData%BStC(i1)) + call StC_PackOtherState(RF, InData%BStC(i1)) end do end if - call RegPack(Buf, allocated(InData%NStC)) + call RegPack(RF, allocated(InData%NStC)) if (allocated(InData%NStC)) then - call RegPackBounds(Buf, 1, lbound(InData%NStC, kind=B8Ki), ubound(InData%NStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%NStC, kind=B8Ki), ubound(InData%NStC, kind=B8Ki)) LB(1:1) = lbound(InData%NStC, kind=B8Ki) UB(1:1) = ubound(InData%NStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackOtherState(Buf, InData%NStC(i1)) + call StC_PackOtherState(RF, InData%NStC(i1)) end do end if - call RegPack(Buf, allocated(InData%TStC)) + call RegPack(RF, allocated(InData%TStC)) if (allocated(InData%TStC)) then - call RegPackBounds(Buf, 1, lbound(InData%TStC, kind=B8Ki), ubound(InData%TStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%TStC, kind=B8Ki), ubound(InData%TStC, kind=B8Ki)) LB(1:1) = lbound(InData%TStC, kind=B8Ki) UB(1:1) = ubound(InData%TStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackOtherState(Buf, InData%TStC(i1)) + call StC_PackOtherState(RF, InData%TStC(i1)) end do end if - call RegPack(Buf, allocated(InData%SStC)) + call RegPack(RF, allocated(InData%SStC)) if (allocated(InData%SStC)) then - call RegPackBounds(Buf, 1, lbound(InData%SStC, kind=B8Ki), ubound(InData%SStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%SStC, kind=B8Ki), ubound(InData%SStC, kind=B8Ki)) LB(1:1) = lbound(InData%SStC, kind=B8Ki) UB(1:1) = ubound(InData%SStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackOtherState(Buf, InData%SStC(i1)) + call StC_PackOtherState(RF, InData%SStC(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SrvD_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SrvD_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SrvD_UnPackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%BegPitMan)) deallocate(OutData%BegPitMan) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BegPitMan(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BegPitMan.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BegPitMan) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlPitchI)) deallocate(OutData%BlPitchI) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlPitchI(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlPitchI.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlPitchI) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TPitManE)) deallocate(OutData%TPitManE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TPitManE(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TPitManE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TPitManE) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%BegYawMan) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacYawI) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TYawManE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawPosComInt) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BegTpBr)) deallocate(OutData%BegTpBr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BegTpBr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BegTpBr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BegTpBr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TTpBrDp)) deallocate(OutData%TTpBrDp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TTpBrDp(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TTpBrDp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TTpBrDp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TTpBrFl)) deallocate(OutData%TTpBrFl) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TTpBrFl(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TTpBrFl.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TTpBrFl) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Off4Good) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenOnLine) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%BegPitMan); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlPitchI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TPitManE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BegYawMan); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacYawI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TYawManE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawPosComInt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BegTpBr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TTpBrDp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TTpBrFl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Off4Good); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenOnLine); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%BStC)) deallocate(OutData%BStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackOtherState(Buf, OutData%BStC(i1)) ! BStC + call StC_UnpackOtherState(RF, OutData%BStC(i1)) ! BStC end do end if if (allocated(OutData%NStC)) deallocate(OutData%NStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%NStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackOtherState(Buf, OutData%NStC(i1)) ! NStC + call StC_UnpackOtherState(RF, OutData%NStC(i1)) ! NStC end do end if if (allocated(OutData%TStC)) deallocate(OutData%TStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%TStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackOtherState(Buf, OutData%TStC(i1)) ! TStC + call StC_UnpackOtherState(RF, OutData%TStC(i1)) ! TStC end do end if if (allocated(OutData%SStC)) deallocate(OutData%SStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%SStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackOtherState(Buf, OutData%SStC(i1)) ! SStC + call StC_UnpackOtherState(RF, OutData%SStC(i1)) ! SStC end do end if end subroutine @@ -4818,223 +3586,207 @@ subroutine SrvD_DestroyModuleMapType(ModuleMapTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine SrvD_PackModuleMapType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_PackModuleMapType(RF, Indata) + type(RegFile), intent(inout) :: RF type(SrvD_ModuleMapType), intent(in) :: InData character(*), parameter :: RoutineName = 'SrvD_PackModuleMapType' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%u_BStC_Mot2_BStC)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%u_BStC_Mot2_BStC)) if (allocated(InData%u_BStC_Mot2_BStC)) then - call RegPackBounds(Buf, 2, lbound(InData%u_BStC_Mot2_BStC, kind=B8Ki), ubound(InData%u_BStC_Mot2_BStC, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%u_BStC_Mot2_BStC, kind=B8Ki), ubound(InData%u_BStC_Mot2_BStC, kind=B8Ki)) LB(1:2) = lbound(InData%u_BStC_Mot2_BStC, kind=B8Ki) UB(1:2) = ubound(InData%u_BStC_Mot2_BStC, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%u_BStC_Mot2_BStC(i1,i2)) + call NWTC_Library_PackMeshMapType(RF, InData%u_BStC_Mot2_BStC(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%u_NStC_Mot2_NStC)) + call RegPack(RF, allocated(InData%u_NStC_Mot2_NStC)) if (allocated(InData%u_NStC_Mot2_NStC)) then - call RegPackBounds(Buf, 1, lbound(InData%u_NStC_Mot2_NStC, kind=B8Ki), ubound(InData%u_NStC_Mot2_NStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_NStC_Mot2_NStC, kind=B8Ki), ubound(InData%u_NStC_Mot2_NStC, kind=B8Ki)) LB(1:1) = lbound(InData%u_NStC_Mot2_NStC, kind=B8Ki) UB(1:1) = ubound(InData%u_NStC_Mot2_NStC, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%u_NStC_Mot2_NStC(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%u_NStC_Mot2_NStC(i1)) end do end if - call RegPack(Buf, allocated(InData%u_TStC_Mot2_TStC)) + call RegPack(RF, allocated(InData%u_TStC_Mot2_TStC)) if (allocated(InData%u_TStC_Mot2_TStC)) then - call RegPackBounds(Buf, 1, lbound(InData%u_TStC_Mot2_TStC, kind=B8Ki), ubound(InData%u_TStC_Mot2_TStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_TStC_Mot2_TStC, kind=B8Ki), ubound(InData%u_TStC_Mot2_TStC, kind=B8Ki)) LB(1:1) = lbound(InData%u_TStC_Mot2_TStC, kind=B8Ki) UB(1:1) = ubound(InData%u_TStC_Mot2_TStC, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%u_TStC_Mot2_TStC(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%u_TStC_Mot2_TStC(i1)) end do end if - call RegPack(Buf, allocated(InData%u_SStC_Mot2_SStC)) + call RegPack(RF, allocated(InData%u_SStC_Mot2_SStC)) if (allocated(InData%u_SStC_Mot2_SStC)) then - call RegPackBounds(Buf, 1, lbound(InData%u_SStC_Mot2_SStC, kind=B8Ki), ubound(InData%u_SStC_Mot2_SStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%u_SStC_Mot2_SStC, kind=B8Ki), ubound(InData%u_SStC_Mot2_SStC, kind=B8Ki)) LB(1:1) = lbound(InData%u_SStC_Mot2_SStC, kind=B8Ki) UB(1:1) = ubound(InData%u_SStC_Mot2_SStC, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%u_SStC_Mot2_SStC(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%u_SStC_Mot2_SStC(i1)) end do end if - call RegPack(Buf, allocated(InData%BStC_Frc2_y_BStC)) + call RegPack(RF, allocated(InData%BStC_Frc2_y_BStC)) if (allocated(InData%BStC_Frc2_y_BStC)) then - call RegPackBounds(Buf, 2, lbound(InData%BStC_Frc2_y_BStC, kind=B8Ki), ubound(InData%BStC_Frc2_y_BStC, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%BStC_Frc2_y_BStC, kind=B8Ki), ubound(InData%BStC_Frc2_y_BStC, kind=B8Ki)) LB(1:2) = lbound(InData%BStC_Frc2_y_BStC, kind=B8Ki) UB(1:2) = ubound(InData%BStC_Frc2_y_BStC, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%BStC_Frc2_y_BStC(i1,i2)) + call NWTC_Library_PackMeshMapType(RF, InData%BStC_Frc2_y_BStC(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%NStC_Frc2_y_NStC)) + call RegPack(RF, allocated(InData%NStC_Frc2_y_NStC)) if (allocated(InData%NStC_Frc2_y_NStC)) then - call RegPackBounds(Buf, 1, lbound(InData%NStC_Frc2_y_NStC, kind=B8Ki), ubound(InData%NStC_Frc2_y_NStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%NStC_Frc2_y_NStC, kind=B8Ki), ubound(InData%NStC_Frc2_y_NStC, kind=B8Ki)) LB(1:1) = lbound(InData%NStC_Frc2_y_NStC, kind=B8Ki) UB(1:1) = ubound(InData%NStC_Frc2_y_NStC, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%NStC_Frc2_y_NStC(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%NStC_Frc2_y_NStC(i1)) end do end if - call RegPack(Buf, allocated(InData%TStC_Frc2_y_TStC)) + call RegPack(RF, allocated(InData%TStC_Frc2_y_TStC)) if (allocated(InData%TStC_Frc2_y_TStC)) then - call RegPackBounds(Buf, 1, lbound(InData%TStC_Frc2_y_TStC, kind=B8Ki), ubound(InData%TStC_Frc2_y_TStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%TStC_Frc2_y_TStC, kind=B8Ki), ubound(InData%TStC_Frc2_y_TStC, kind=B8Ki)) LB(1:1) = lbound(InData%TStC_Frc2_y_TStC, kind=B8Ki) UB(1:1) = ubound(InData%TStC_Frc2_y_TStC, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%TStC_Frc2_y_TStC(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%TStC_Frc2_y_TStC(i1)) end do end if - call RegPack(Buf, allocated(InData%SStC_Frc2_y_SStC)) + call RegPack(RF, allocated(InData%SStC_Frc2_y_SStC)) if (allocated(InData%SStC_Frc2_y_SStC)) then - call RegPackBounds(Buf, 1, lbound(InData%SStC_Frc2_y_SStC, kind=B8Ki), ubound(InData%SStC_Frc2_y_SStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%SStC_Frc2_y_SStC, kind=B8Ki), ubound(InData%SStC_Frc2_y_SStC, kind=B8Ki)) LB(1:1) = lbound(InData%SStC_Frc2_y_SStC, kind=B8Ki) UB(1:1) = ubound(InData%SStC_Frc2_y_SStC, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackMeshMapType(Buf, InData%SStC_Frc2_y_SStC(i1)) + call NWTC_Library_PackMeshMapType(RF, InData%SStC_Frc2_y_SStC(i1)) end do end if - if (RegCheckErr(Buf, RoutineName)) return + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SrvD_UnPackModuleMapType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_UnPackModuleMapType(RF, OutData) + type(RegFile), intent(inout) :: RF type(SrvD_ModuleMapType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SrvD_UnPackModuleMapType' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%u_BStC_Mot2_BStC)) deallocate(OutData%u_BStC_Mot2_BStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_BStC_Mot2_BStC(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_BStC_Mot2_BStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_BStC_Mot2_BStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%u_BStC_Mot2_BStC(i1,i2)) ! u_BStC_Mot2_BStC + call NWTC_Library_UnpackMeshMapType(RF, OutData%u_BStC_Mot2_BStC(i1,i2)) ! u_BStC_Mot2_BStC end do end do end if if (allocated(OutData%u_NStC_Mot2_NStC)) deallocate(OutData%u_NStC_Mot2_NStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_NStC_Mot2_NStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_NStC_Mot2_NStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_NStC_Mot2_NStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%u_NStC_Mot2_NStC(i1)) ! u_NStC_Mot2_NStC + call NWTC_Library_UnpackMeshMapType(RF, OutData%u_NStC_Mot2_NStC(i1)) ! u_NStC_Mot2_NStC end do end if if (allocated(OutData%u_TStC_Mot2_TStC)) deallocate(OutData%u_TStC_Mot2_TStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_TStC_Mot2_TStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_TStC_Mot2_TStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_TStC_Mot2_TStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%u_TStC_Mot2_TStC(i1)) ! u_TStC_Mot2_TStC + call NWTC_Library_UnpackMeshMapType(RF, OutData%u_TStC_Mot2_TStC(i1)) ! u_TStC_Mot2_TStC end do end if if (allocated(OutData%u_SStC_Mot2_SStC)) deallocate(OutData%u_SStC_Mot2_SStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_SStC_Mot2_SStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_SStC_Mot2_SStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_SStC_Mot2_SStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%u_SStC_Mot2_SStC(i1)) ! u_SStC_Mot2_SStC + call NWTC_Library_UnpackMeshMapType(RF, OutData%u_SStC_Mot2_SStC(i1)) ! u_SStC_Mot2_SStC end do end if if (allocated(OutData%BStC_Frc2_y_BStC)) deallocate(OutData%BStC_Frc2_y_BStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BStC_Frc2_y_BStC(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC_Frc2_y_BStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC_Frc2_y_BStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%BStC_Frc2_y_BStC(i1,i2)) ! BStC_Frc2_y_BStC + call NWTC_Library_UnpackMeshMapType(RF, OutData%BStC_Frc2_y_BStC(i1,i2)) ! BStC_Frc2_y_BStC end do end do end if if (allocated(OutData%NStC_Frc2_y_NStC)) deallocate(OutData%NStC_Frc2_y_NStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%NStC_Frc2_y_NStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStC_Frc2_y_NStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStC_Frc2_y_NStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%NStC_Frc2_y_NStC(i1)) ! NStC_Frc2_y_NStC + call NWTC_Library_UnpackMeshMapType(RF, OutData%NStC_Frc2_y_NStC(i1)) ! NStC_Frc2_y_NStC end do end if if (allocated(OutData%TStC_Frc2_y_TStC)) deallocate(OutData%TStC_Frc2_y_TStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%TStC_Frc2_y_TStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStC_Frc2_y_TStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStC_Frc2_y_TStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%TStC_Frc2_y_TStC(i1)) ! TStC_Frc2_y_TStC + call NWTC_Library_UnpackMeshMapType(RF, OutData%TStC_Frc2_y_TStC(i1)) ! TStC_Frc2_y_TStC end do end if if (allocated(OutData%SStC_Frc2_y_SStC)) deallocate(OutData%SStC_Frc2_y_SStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%SStC_Frc2_y_SStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStC_Frc2_y_SStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStC_Frc2_y_SStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackMeshMapType(Buf, OutData%SStC_Frc2_y_SStC(i1)) ! SStC_Frc2_y_SStC + call NWTC_Library_UnpackMeshMapType(RF, OutData%SStC_Frc2_y_SStC(i1)) ! SStC_Frc2_y_SStC end do end if end subroutine @@ -5412,364 +4164,319 @@ subroutine SrvD_DestroyMisc(MiscData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine SrvD_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(SrvD_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'SrvD_PackMisc' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%LastTimeCalled) - call SrvD_PackBladedDLLType(Buf, InData%dll_data) - call RegPack(Buf, InData%FirstWarn) - call RegPack(Buf, InData%LastTimeFiltered) - call RegPack(Buf, allocated(InData%xd_BlPitchFilter)) - if (allocated(InData%xd_BlPitchFilter)) then - call RegPackBounds(Buf, 1, lbound(InData%xd_BlPitchFilter, kind=B8Ki), ubound(InData%xd_BlPitchFilter, kind=B8Ki)) - call RegPack(Buf, InData%xd_BlPitchFilter) - end if - call RegPack(Buf, allocated(InData%BStC)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%LastTimeCalled) + call SrvD_PackBladedDLLType(RF, InData%dll_data) + call RegPack(RF, InData%FirstWarn) + call RegPack(RF, InData%LastTimeFiltered) + call RegPackAlloc(RF, InData%xd_BlPitchFilter) + call RegPack(RF, allocated(InData%BStC)) if (allocated(InData%BStC)) then - call RegPackBounds(Buf, 1, lbound(InData%BStC, kind=B8Ki), ubound(InData%BStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BStC, kind=B8Ki), ubound(InData%BStC, kind=B8Ki)) LB(1:1) = lbound(InData%BStC, kind=B8Ki) UB(1:1) = ubound(InData%BStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackMisc(Buf, InData%BStC(i1)) + call StC_PackMisc(RF, InData%BStC(i1)) end do end if - call RegPack(Buf, allocated(InData%NStC)) + call RegPack(RF, allocated(InData%NStC)) if (allocated(InData%NStC)) then - call RegPackBounds(Buf, 1, lbound(InData%NStC, kind=B8Ki), ubound(InData%NStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%NStC, kind=B8Ki), ubound(InData%NStC, kind=B8Ki)) LB(1:1) = lbound(InData%NStC, kind=B8Ki) UB(1:1) = ubound(InData%NStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackMisc(Buf, InData%NStC(i1)) + call StC_PackMisc(RF, InData%NStC(i1)) end do end if - call RegPack(Buf, allocated(InData%TStC)) + call RegPack(RF, allocated(InData%TStC)) if (allocated(InData%TStC)) then - call RegPackBounds(Buf, 1, lbound(InData%TStC, kind=B8Ki), ubound(InData%TStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%TStC, kind=B8Ki), ubound(InData%TStC, kind=B8Ki)) LB(1:1) = lbound(InData%TStC, kind=B8Ki) UB(1:1) = ubound(InData%TStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackMisc(Buf, InData%TStC(i1)) + call StC_PackMisc(RF, InData%TStC(i1)) end do end if - call RegPack(Buf, allocated(InData%SStC)) + call RegPack(RF, allocated(InData%SStC)) if (allocated(InData%SStC)) then - call RegPackBounds(Buf, 1, lbound(InData%SStC, kind=B8Ki), ubound(InData%SStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%SStC, kind=B8Ki), ubound(InData%SStC, kind=B8Ki)) LB(1:1) = lbound(InData%SStC, kind=B8Ki) UB(1:1) = ubound(InData%SStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackMisc(Buf, InData%SStC(i1)) + call StC_PackMisc(RF, InData%SStC(i1)) end do end if - call RegPack(Buf, allocated(InData%u_BStC)) + call RegPack(RF, allocated(InData%u_BStC)) if (allocated(InData%u_BStC)) then - call RegPackBounds(Buf, 2, lbound(InData%u_BStC, kind=B8Ki), ubound(InData%u_BStC, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%u_BStC, kind=B8Ki), ubound(InData%u_BStC, kind=B8Ki)) LB(1:2) = lbound(InData%u_BStC, kind=B8Ki) UB(1:2) = ubound(InData%u_BStC, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call StC_PackInput(Buf, InData%u_BStC(i1,i2)) + call StC_PackInput(RF, InData%u_BStC(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%u_NStC)) + call RegPack(RF, allocated(InData%u_NStC)) if (allocated(InData%u_NStC)) then - call RegPackBounds(Buf, 2, lbound(InData%u_NStC, kind=B8Ki), ubound(InData%u_NStC, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%u_NStC, kind=B8Ki), ubound(InData%u_NStC, kind=B8Ki)) LB(1:2) = lbound(InData%u_NStC, kind=B8Ki) UB(1:2) = ubound(InData%u_NStC, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call StC_PackInput(Buf, InData%u_NStC(i1,i2)) + call StC_PackInput(RF, InData%u_NStC(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%u_TStC)) + call RegPack(RF, allocated(InData%u_TStC)) if (allocated(InData%u_TStC)) then - call RegPackBounds(Buf, 2, lbound(InData%u_TStC, kind=B8Ki), ubound(InData%u_TStC, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%u_TStC, kind=B8Ki), ubound(InData%u_TStC, kind=B8Ki)) LB(1:2) = lbound(InData%u_TStC, kind=B8Ki) UB(1:2) = ubound(InData%u_TStC, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call StC_PackInput(Buf, InData%u_TStC(i1,i2)) + call StC_PackInput(RF, InData%u_TStC(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%u_SStC)) + call RegPack(RF, allocated(InData%u_SStC)) if (allocated(InData%u_SStC)) then - call RegPackBounds(Buf, 2, lbound(InData%u_SStC, kind=B8Ki), ubound(InData%u_SStC, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%u_SStC, kind=B8Ki), ubound(InData%u_SStC, kind=B8Ki)) LB(1:2) = lbound(InData%u_SStC, kind=B8Ki) UB(1:2) = ubound(InData%u_SStC, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call StC_PackInput(Buf, InData%u_SStC(i1,i2)) + call StC_PackInput(RF, InData%u_SStC(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%y_BStC)) + call RegPack(RF, allocated(InData%y_BStC)) if (allocated(InData%y_BStC)) then - call RegPackBounds(Buf, 1, lbound(InData%y_BStC, kind=B8Ki), ubound(InData%y_BStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%y_BStC, kind=B8Ki), ubound(InData%y_BStC, kind=B8Ki)) LB(1:1) = lbound(InData%y_BStC, kind=B8Ki) UB(1:1) = ubound(InData%y_BStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackOutput(Buf, InData%y_BStC(i1)) + call StC_PackOutput(RF, InData%y_BStC(i1)) end do end if - call RegPack(Buf, allocated(InData%y_NStC)) + call RegPack(RF, allocated(InData%y_NStC)) if (allocated(InData%y_NStC)) then - call RegPackBounds(Buf, 1, lbound(InData%y_NStC, kind=B8Ki), ubound(InData%y_NStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%y_NStC, kind=B8Ki), ubound(InData%y_NStC, kind=B8Ki)) LB(1:1) = lbound(InData%y_NStC, kind=B8Ki) UB(1:1) = ubound(InData%y_NStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackOutput(Buf, InData%y_NStC(i1)) + call StC_PackOutput(RF, InData%y_NStC(i1)) end do end if - call RegPack(Buf, allocated(InData%y_TStC)) + call RegPack(RF, allocated(InData%y_TStC)) if (allocated(InData%y_TStC)) then - call RegPackBounds(Buf, 1, lbound(InData%y_TStC, kind=B8Ki), ubound(InData%y_TStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%y_TStC, kind=B8Ki), ubound(InData%y_TStC, kind=B8Ki)) LB(1:1) = lbound(InData%y_TStC, kind=B8Ki) UB(1:1) = ubound(InData%y_TStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackOutput(Buf, InData%y_TStC(i1)) + call StC_PackOutput(RF, InData%y_TStC(i1)) end do end if - call RegPack(Buf, allocated(InData%y_SStC)) + call RegPack(RF, allocated(InData%y_SStC)) if (allocated(InData%y_SStC)) then - call RegPackBounds(Buf, 1, lbound(InData%y_SStC, kind=B8Ki), ubound(InData%y_SStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%y_SStC, kind=B8Ki), ubound(InData%y_SStC, kind=B8Ki)) LB(1:1) = lbound(InData%y_SStC, kind=B8Ki) UB(1:1) = ubound(InData%y_SStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackOutput(Buf, InData%y_SStC(i1)) + call StC_PackOutput(RF, InData%y_SStC(i1)) end do end if - call SrvD_PackModuleMapType(Buf, InData%SrvD_MeshMap) - call RegPack(Buf, InData%PrevTstepNcall) - if (RegCheckErr(Buf, RoutineName)) return + call SrvD_PackModuleMapType(RF, InData%SrvD_MeshMap) + call RegPack(RF, InData%PrevTstepNcall) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SrvD_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(SrvD_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SrvD_UnPackMisc' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%LastTimeCalled) - if (RegCheckErr(Buf, RoutineName)) return - call SrvD_UnpackBladedDLLType(Buf, OutData%dll_data) ! dll_data - call RegUnpack(Buf, OutData%FirstWarn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LastTimeFiltered) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%xd_BlPitchFilter)) deallocate(OutData%xd_BlPitchFilter) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%xd_BlPitchFilter(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xd_BlPitchFilter.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%xd_BlPitchFilter) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%LastTimeCalled); if (RegCheckErr(RF, RoutineName)) return + call SrvD_UnpackBladedDLLType(RF, OutData%dll_data) ! dll_data + call RegUnpack(RF, OutData%FirstWarn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LastTimeFiltered); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%xd_BlPitchFilter); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%BStC)) deallocate(OutData%BStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackMisc(Buf, OutData%BStC(i1)) ! BStC + call StC_UnpackMisc(RF, OutData%BStC(i1)) ! BStC end do end if if (allocated(OutData%NStC)) deallocate(OutData%NStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%NStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackMisc(Buf, OutData%NStC(i1)) ! NStC + call StC_UnpackMisc(RF, OutData%NStC(i1)) ! NStC end do end if if (allocated(OutData%TStC)) deallocate(OutData%TStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%TStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackMisc(Buf, OutData%TStC(i1)) ! TStC + call StC_UnpackMisc(RF, OutData%TStC(i1)) ! TStC end do end if if (allocated(OutData%SStC)) deallocate(OutData%SStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%SStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackMisc(Buf, OutData%SStC(i1)) ! SStC + call StC_UnpackMisc(RF, OutData%SStC(i1)) ! SStC end do end if if (allocated(OutData%u_BStC)) deallocate(OutData%u_BStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_BStC(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_BStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_BStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call StC_UnpackInput(Buf, OutData%u_BStC(i1,i2)) ! u_BStC + call StC_UnpackInput(RF, OutData%u_BStC(i1,i2)) ! u_BStC end do end do end if if (allocated(OutData%u_NStC)) deallocate(OutData%u_NStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_NStC(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_NStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_NStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call StC_UnpackInput(Buf, OutData%u_NStC(i1,i2)) ! u_NStC + call StC_UnpackInput(RF, OutData%u_NStC(i1,i2)) ! u_NStC end do end do end if if (allocated(OutData%u_TStC)) deallocate(OutData%u_TStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_TStC(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_TStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_TStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call StC_UnpackInput(Buf, OutData%u_TStC(i1,i2)) ! u_TStC + call StC_UnpackInput(RF, OutData%u_TStC(i1,i2)) ! u_TStC end do end do end if if (allocated(OutData%u_SStC)) deallocate(OutData%u_SStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%u_SStC(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_SStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%u_SStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call StC_UnpackInput(Buf, OutData%u_SStC(i1,i2)) ! u_SStC + call StC_UnpackInput(RF, OutData%u_SStC(i1,i2)) ! u_SStC end do end do end if if (allocated(OutData%y_BStC)) deallocate(OutData%y_BStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%y_BStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y_BStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y_BStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackOutput(Buf, OutData%y_BStC(i1)) ! y_BStC + call StC_UnpackOutput(RF, OutData%y_BStC(i1)) ! y_BStC end do end if if (allocated(OutData%y_NStC)) deallocate(OutData%y_NStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%y_NStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y_NStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y_NStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackOutput(Buf, OutData%y_NStC(i1)) ! y_NStC + call StC_UnpackOutput(RF, OutData%y_NStC(i1)) ! y_NStC end do end if if (allocated(OutData%y_TStC)) deallocate(OutData%y_TStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%y_TStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y_TStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y_TStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackOutput(Buf, OutData%y_TStC(i1)) ! y_TStC + call StC_UnpackOutput(RF, OutData%y_TStC(i1)) ! y_TStC end do end if if (allocated(OutData%y_SStC)) deallocate(OutData%y_SStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%y_SStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y_SStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y_SStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackOutput(Buf, OutData%y_SStC(i1)) ! y_SStC + call StC_UnpackOutput(RF, OutData%y_SStC(i1)) ! y_SStC end do end if - call SrvD_UnpackModuleMapType(Buf, OutData%SrvD_MeshMap) ! SrvD_MeshMap - call RegUnpack(Buf, OutData%PrevTstepNcall) - if (RegCheckErr(Buf, RoutineName)) return + call SrvD_UnpackModuleMapType(RF, OutData%SrvD_MeshMap) ! SrvD_MeshMap + call RegUnpack(RF, OutData%PrevTstepNcall); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SrvD_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -6353,850 +5060,371 @@ subroutine SrvD_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine SrvD_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(SrvD_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'SrvD_PackParam' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT) - call RegPack(Buf, InData%HSSBrDT) - call RegPack(Buf, InData%HSSBrTqF) - call RegPack(Buf, InData%SIG_POSl) - call RegPack(Buf, InData%SIG_POTq) - call RegPack(Buf, InData%SIG_SlPc) - call RegPack(Buf, InData%SIG_Slop) - call RegPack(Buf, InData%SIG_SySp) - call RegPack(Buf, InData%TEC_A0) - call RegPack(Buf, InData%TEC_C0) - call RegPack(Buf, InData%TEC_C1) - call RegPack(Buf, InData%TEC_C2) - call RegPack(Buf, InData%TEC_K2) - call RegPack(Buf, InData%TEC_MR) - call RegPack(Buf, InData%TEC_Re1) - call RegPack(Buf, InData%TEC_RLR) - call RegPack(Buf, InData%TEC_RRes) - call RegPack(Buf, InData%TEC_SRes) - call RegPack(Buf, InData%TEC_SySp) - call RegPack(Buf, InData%TEC_V1a) - call RegPack(Buf, InData%TEC_VLL) - call RegPack(Buf, InData%TEC_Xe1) - call RegPack(Buf, InData%GenEff) - call RegPack(Buf, allocated(InData%BlPitchInit)) - if (allocated(InData%BlPitchInit)) then - call RegPackBounds(Buf, 1, lbound(InData%BlPitchInit, kind=B8Ki), ubound(InData%BlPitchInit, kind=B8Ki)) - call RegPack(Buf, InData%BlPitchInit) - end if - call RegPack(Buf, allocated(InData%BlPitchF)) - if (allocated(InData%BlPitchF)) then - call RegPackBounds(Buf, 1, lbound(InData%BlPitchF, kind=B8Ki), ubound(InData%BlPitchF, kind=B8Ki)) - call RegPack(Buf, InData%BlPitchF) - end if - call RegPack(Buf, allocated(InData%PitManRat)) - if (allocated(InData%PitManRat)) then - call RegPackBounds(Buf, 1, lbound(InData%PitManRat, kind=B8Ki), ubound(InData%PitManRat, kind=B8Ki)) - call RegPack(Buf, InData%PitManRat) - end if - call RegPack(Buf, InData%YawManRat) - call RegPack(Buf, InData%NacYawF) - call RegPack(Buf, InData%SpdGenOn) - call RegPack(Buf, InData%THSSBrDp) - call RegPack(Buf, InData%THSSBrFl) - call RegPack(Buf, InData%TimGenOf) - call RegPack(Buf, InData%TimGenOn) - call RegPack(Buf, InData%TPCOn) - call RegPack(Buf, allocated(InData%TPitManS)) - if (allocated(InData%TPitManS)) then - call RegPackBounds(Buf, 1, lbound(InData%TPitManS, kind=B8Ki), ubound(InData%TPitManS, kind=B8Ki)) - call RegPack(Buf, InData%TPitManS) - end if - call RegPack(Buf, InData%TYawManS) - call RegPack(Buf, InData%TYCOn) - call RegPack(Buf, InData%VS_RtGnSp) - call RegPack(Buf, InData%VS_RtTq) - call RegPack(Buf, InData%VS_Slope) - call RegPack(Buf, InData%VS_SlPc) - call RegPack(Buf, InData%VS_SySp) - call RegPack(Buf, InData%VS_TrGnSp) - call RegPack(Buf, InData%YawPosCom) - call RegPack(Buf, InData%YawRateCom) - call RegPack(Buf, InData%GenModel) - call RegPack(Buf, InData%HSSBrMode) - call RegPack(Buf, InData%PCMode) - call RegPack(Buf, InData%VSContrl) - call RegPack(Buf, InData%YCMode) - call RegPack(Buf, InData%GenTiStp) - call RegPack(Buf, InData%GenTiStr) - call RegPack(Buf, InData%VS_Rgn2K) - call RegPack(Buf, InData%YawNeut) - call RegPack(Buf, InData%YawSpr) - call RegPack(Buf, InData%YawDamp) - call RegPack(Buf, InData%TpBrDT) - call RegPack(Buf, allocated(InData%TBDepISp)) - if (allocated(InData%TBDepISp)) then - call RegPackBounds(Buf, 1, lbound(InData%TBDepISp, kind=B8Ki), ubound(InData%TBDepISp, kind=B8Ki)) - call RegPack(Buf, InData%TBDepISp) - end if - call RegPack(Buf, InData%TBDrConN) - call RegPack(Buf, InData%TBDrConD) - call RegPack(Buf, InData%NumBl) - call RegPack(Buf, InData%NumBStC) - call RegPack(Buf, InData%NumNStC) - call RegPack(Buf, InData%NumTStC) - call RegPack(Buf, InData%NumSStC) - call RegPack(Buf, InData%AfCmode) - call RegPack(Buf, InData%AfC_Mean) - call RegPack(Buf, InData%AfC_Amp) - call RegPack(Buf, InData%AfC_Phase) - call RegPack(Buf, InData%CCmode) - call RegPack(Buf, InData%StCCmode) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, InData%NumOuts_DLL) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, allocated(InData%OutParam)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT) + call RegPack(RF, InData%HSSBrDT) + call RegPack(RF, InData%HSSBrTqF) + call RegPack(RF, InData%SIG_POSl) + call RegPack(RF, InData%SIG_POTq) + call RegPack(RF, InData%SIG_SlPc) + call RegPack(RF, InData%SIG_Slop) + call RegPack(RF, InData%SIG_SySp) + call RegPack(RF, InData%TEC_A0) + call RegPack(RF, InData%TEC_C0) + call RegPack(RF, InData%TEC_C1) + call RegPack(RF, InData%TEC_C2) + call RegPack(RF, InData%TEC_K2) + call RegPack(RF, InData%TEC_MR) + call RegPack(RF, InData%TEC_Re1) + call RegPack(RF, InData%TEC_RLR) + call RegPack(RF, InData%TEC_RRes) + call RegPack(RF, InData%TEC_SRes) + call RegPack(RF, InData%TEC_SySp) + call RegPack(RF, InData%TEC_V1a) + call RegPack(RF, InData%TEC_VLL) + call RegPack(RF, InData%TEC_Xe1) + call RegPack(RF, InData%GenEff) + call RegPackAlloc(RF, InData%BlPitchInit) + call RegPackAlloc(RF, InData%BlPitchF) + call RegPackAlloc(RF, InData%PitManRat) + call RegPack(RF, InData%YawManRat) + call RegPack(RF, InData%NacYawF) + call RegPack(RF, InData%SpdGenOn) + call RegPack(RF, InData%THSSBrDp) + call RegPack(RF, InData%THSSBrFl) + call RegPack(RF, InData%TimGenOf) + call RegPack(RF, InData%TimGenOn) + call RegPack(RF, InData%TPCOn) + call RegPackAlloc(RF, InData%TPitManS) + call RegPack(RF, InData%TYawManS) + call RegPack(RF, InData%TYCOn) + call RegPack(RF, InData%VS_RtGnSp) + call RegPack(RF, InData%VS_RtTq) + call RegPack(RF, InData%VS_Slope) + call RegPack(RF, InData%VS_SlPc) + call RegPack(RF, InData%VS_SySp) + call RegPack(RF, InData%VS_TrGnSp) + call RegPack(RF, InData%YawPosCom) + call RegPack(RF, InData%YawRateCom) + call RegPack(RF, InData%GenModel) + call RegPack(RF, InData%HSSBrMode) + call RegPack(RF, InData%PCMode) + call RegPack(RF, InData%VSContrl) + call RegPack(RF, InData%YCMode) + call RegPack(RF, InData%GenTiStp) + call RegPack(RF, InData%GenTiStr) + call RegPack(RF, InData%VS_Rgn2K) + call RegPack(RF, InData%YawNeut) + call RegPack(RF, InData%YawSpr) + call RegPack(RF, InData%YawDamp) + call RegPack(RF, InData%TpBrDT) + call RegPackAlloc(RF, InData%TBDepISp) + call RegPack(RF, InData%TBDrConN) + call RegPack(RF, InData%TBDrConD) + call RegPack(RF, InData%NumBl) + call RegPack(RF, InData%NumBStC) + call RegPack(RF, InData%NumNStC) + call RegPack(RF, InData%NumTStC) + call RegPack(RF, InData%NumSStC) + call RegPack(RF, InData%AfCmode) + call RegPack(RF, InData%AfC_Mean) + call RegPack(RF, InData%AfC_Amp) + call RegPack(RF, InData%AfC_Phase) + call RegPack(RF, InData%CCmode) + call RegPack(RF, InData%StCCmode) + call RegPack(RF, InData%NumOuts) + call RegPack(RF, InData%NumOuts_DLL) + call RegPack(RF, InData%RootName) + call RegPack(RF, allocated(InData%OutParam)) if (allocated(InData%OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) LB(1:1) = lbound(InData%OutParam, kind=B8Ki) UB(1:1) = ubound(InData%OutParam, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackOutParmType(Buf, InData%OutParam(i1)) - end do - end if - call RegPack(Buf, InData%Delim) - call RegPack(Buf, InData%UseBladedInterface) - call RegPack(Buf, InData%UseLegacyInterface) - call DLLTypePack(Buf, InData%DLL_Trgt) - call RegPack(Buf, InData%DLL_Ramp) - call RegPack(Buf, InData%BlAlpha) - call RegPack(Buf, InData%DLL_n) - call RegPack(Buf, InData%avcOUTNAME_LEN) - call RegPack(Buf, InData%NacYaw_North) - call RegPack(Buf, InData%AvgWindSpeed) - call RegPack(Buf, InData%AirDens) - call RegPack(Buf, InData%TrimCase) - call RegPack(Buf, InData%TrimGain) - call RegPack(Buf, InData%RotSpeedRef) - call RegPack(Buf, allocated(InData%BStC)) + call NWTC_Library_PackOutParmType(RF, InData%OutParam(i1)) + end do + end if + call RegPack(RF, InData%Delim) + call RegPack(RF, InData%UseBladedInterface) + call RegPack(RF, InData%UseLegacyInterface) + call DLLTypePack(RF, InData%DLL_Trgt) + call RegPack(RF, InData%DLL_Ramp) + call RegPack(RF, InData%BlAlpha) + call RegPack(RF, InData%DLL_n) + call RegPack(RF, InData%avcOUTNAME_LEN) + call RegPack(RF, InData%NacYaw_North) + call RegPack(RF, InData%AvgWindSpeed) + call RegPack(RF, InData%AirDens) + call RegPack(RF, InData%TrimCase) + call RegPack(RF, InData%TrimGain) + call RegPack(RF, InData%RotSpeedRef) + call RegPack(RF, allocated(InData%BStC)) if (allocated(InData%BStC)) then - call RegPackBounds(Buf, 1, lbound(InData%BStC, kind=B8Ki), ubound(InData%BStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%BStC, kind=B8Ki), ubound(InData%BStC, kind=B8Ki)) LB(1:1) = lbound(InData%BStC, kind=B8Ki) UB(1:1) = ubound(InData%BStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackParam(Buf, InData%BStC(i1)) + call StC_PackParam(RF, InData%BStC(i1)) end do end if - call RegPack(Buf, allocated(InData%NStC)) + call RegPack(RF, allocated(InData%NStC)) if (allocated(InData%NStC)) then - call RegPackBounds(Buf, 1, lbound(InData%NStC, kind=B8Ki), ubound(InData%NStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%NStC, kind=B8Ki), ubound(InData%NStC, kind=B8Ki)) LB(1:1) = lbound(InData%NStC, kind=B8Ki) UB(1:1) = ubound(InData%NStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackParam(Buf, InData%NStC(i1)) + call StC_PackParam(RF, InData%NStC(i1)) end do end if - call RegPack(Buf, allocated(InData%TStC)) + call RegPack(RF, allocated(InData%TStC)) if (allocated(InData%TStC)) then - call RegPackBounds(Buf, 1, lbound(InData%TStC, kind=B8Ki), ubound(InData%TStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%TStC, kind=B8Ki), ubound(InData%TStC, kind=B8Ki)) LB(1:1) = lbound(InData%TStC, kind=B8Ki) UB(1:1) = ubound(InData%TStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackParam(Buf, InData%TStC(i1)) + call StC_PackParam(RF, InData%TStC(i1)) end do end if - call RegPack(Buf, allocated(InData%SStC)) + call RegPack(RF, allocated(InData%SStC)) if (allocated(InData%SStC)) then - call RegPackBounds(Buf, 1, lbound(InData%SStC, kind=B8Ki), ubound(InData%SStC, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%SStC, kind=B8Ki), ubound(InData%SStC, kind=B8Ki)) LB(1:1) = lbound(InData%SStC, kind=B8Ki) UB(1:1) = ubound(InData%SStC, kind=B8Ki) do i1 = LB(1), UB(1) - call StC_PackParam(Buf, InData%SStC(i1)) - end do - end if - call RegPack(Buf, InData%InterpOrder) - call RegPack(Buf, InData%EXavrSWAP) - call RegPack(Buf, InData%NumCableControl) - call RegPack(Buf, InData%NumStC_Control) - call RegPack(Buf, allocated(InData%StCMeasNumPerChan)) - if (allocated(InData%StCMeasNumPerChan)) then - call RegPackBounds(Buf, 1, lbound(InData%StCMeasNumPerChan, kind=B8Ki), ubound(InData%StCMeasNumPerChan, kind=B8Ki)) - call RegPack(Buf, InData%StCMeasNumPerChan) - end if - call RegPack(Buf, InData%UseSC) - call RegPack(Buf, allocated(InData%Jac_u_indx)) - if (allocated(InData%Jac_u_indx)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_u_indx, kind=B8Ki), ubound(InData%Jac_u_indx, kind=B8Ki)) - call RegPack(Buf, InData%Jac_u_indx) - end if - call RegPack(Buf, allocated(InData%Jac_x_indx)) - if (allocated(InData%Jac_x_indx)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_x_indx, kind=B8Ki), ubound(InData%Jac_x_indx, kind=B8Ki)) - call RegPack(Buf, InData%Jac_x_indx) - end if - call RegPack(Buf, allocated(InData%du)) - if (allocated(InData%du)) then - call RegPackBounds(Buf, 1, lbound(InData%du, kind=B8Ki), ubound(InData%du, kind=B8Ki)) - call RegPack(Buf, InData%du) - end if - call RegPack(Buf, allocated(InData%dx)) - if (allocated(InData%dx)) then - call RegPackBounds(Buf, 1, lbound(InData%dx, kind=B8Ki), ubound(InData%dx, kind=B8Ki)) - call RegPack(Buf, InData%dx) - end if - call RegPack(Buf, InData%Jac_nu) - call RegPack(Buf, InData%Jac_ny) - call RegPack(Buf, InData%Jac_nx) - call RegPack(Buf, allocated(InData%Jac_Idx_BStC_u)) - if (allocated(InData%Jac_Idx_BStC_u)) then - call RegPackBounds(Buf, 3, lbound(InData%Jac_Idx_BStC_u, kind=B8Ki), ubound(InData%Jac_Idx_BStC_u, kind=B8Ki)) - call RegPack(Buf, InData%Jac_Idx_BStC_u) - end if - call RegPack(Buf, allocated(InData%Jac_Idx_NStC_u)) - if (allocated(InData%Jac_Idx_NStC_u)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_Idx_NStC_u, kind=B8Ki), ubound(InData%Jac_Idx_NStC_u, kind=B8Ki)) - call RegPack(Buf, InData%Jac_Idx_NStC_u) - end if - call RegPack(Buf, allocated(InData%Jac_Idx_TStC_u)) - if (allocated(InData%Jac_Idx_TStC_u)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_Idx_TStC_u, kind=B8Ki), ubound(InData%Jac_Idx_TStC_u, kind=B8Ki)) - call RegPack(Buf, InData%Jac_Idx_TStC_u) - end if - call RegPack(Buf, allocated(InData%Jac_Idx_SStC_u)) - if (allocated(InData%Jac_Idx_SStC_u)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_Idx_SStC_u, kind=B8Ki), ubound(InData%Jac_Idx_SStC_u, kind=B8Ki)) - call RegPack(Buf, InData%Jac_Idx_SStC_u) - end if - call RegPack(Buf, allocated(InData%Jac_Idx_BStC_x)) - if (allocated(InData%Jac_Idx_BStC_x)) then - call RegPackBounds(Buf, 3, lbound(InData%Jac_Idx_BStC_x, kind=B8Ki), ubound(InData%Jac_Idx_BStC_x, kind=B8Ki)) - call RegPack(Buf, InData%Jac_Idx_BStC_x) - end if - call RegPack(Buf, allocated(InData%Jac_Idx_NStC_x)) - if (allocated(InData%Jac_Idx_NStC_x)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_Idx_NStC_x, kind=B8Ki), ubound(InData%Jac_Idx_NStC_x, kind=B8Ki)) - call RegPack(Buf, InData%Jac_Idx_NStC_x) - end if - call RegPack(Buf, allocated(InData%Jac_Idx_TStC_x)) - if (allocated(InData%Jac_Idx_TStC_x)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_Idx_TStC_x, kind=B8Ki), ubound(InData%Jac_Idx_TStC_x, kind=B8Ki)) - call RegPack(Buf, InData%Jac_Idx_TStC_x) - end if - call RegPack(Buf, allocated(InData%Jac_Idx_SStC_x)) - if (allocated(InData%Jac_Idx_SStC_x)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_Idx_SStC_x, kind=B8Ki), ubound(InData%Jac_Idx_SStC_x, kind=B8Ki)) - call RegPack(Buf, InData%Jac_Idx_SStC_x) - end if - call RegPack(Buf, allocated(InData%Jac_Idx_BStC_y)) - if (allocated(InData%Jac_Idx_BStC_y)) then - call RegPackBounds(Buf, 3, lbound(InData%Jac_Idx_BStC_y, kind=B8Ki), ubound(InData%Jac_Idx_BStC_y, kind=B8Ki)) - call RegPack(Buf, InData%Jac_Idx_BStC_y) - end if - call RegPack(Buf, allocated(InData%Jac_Idx_NStC_y)) - if (allocated(InData%Jac_Idx_NStC_y)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_Idx_NStC_y, kind=B8Ki), ubound(InData%Jac_Idx_NStC_y, kind=B8Ki)) - call RegPack(Buf, InData%Jac_Idx_NStC_y) - end if - call RegPack(Buf, allocated(InData%Jac_Idx_TStC_y)) - if (allocated(InData%Jac_Idx_TStC_y)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_Idx_TStC_y, kind=B8Ki), ubound(InData%Jac_Idx_TStC_y, kind=B8Ki)) - call RegPack(Buf, InData%Jac_Idx_TStC_y) - end if - call RegPack(Buf, allocated(InData%Jac_Idx_SStC_y)) - if (allocated(InData%Jac_Idx_SStC_y)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_Idx_SStC_y, kind=B8Ki), ubound(InData%Jac_Idx_SStC_y, kind=B8Ki)) - call RegPack(Buf, InData%Jac_Idx_SStC_y) - end if - call RegPack(Buf, InData%SensorType) - call RegPack(Buf, InData%NumBeam) - call RegPack(Buf, InData%NumPulseGate) - call RegPack(Buf, InData%PulseSpacing) - call RegPack(Buf, InData%URefLid) - if (RegCheckErr(Buf, RoutineName)) return + call StC_PackParam(RF, InData%SStC(i1)) + end do + end if + call RegPack(RF, InData%InterpOrder) + call RegPack(RF, InData%EXavrSWAP) + call RegPack(RF, InData%NumCableControl) + call RegPack(RF, InData%NumStC_Control) + call RegPackAlloc(RF, InData%StCMeasNumPerChan) + call RegPack(RF, InData%UseSC) + call RegPackAlloc(RF, InData%Jac_u_indx) + call RegPackAlloc(RF, InData%Jac_x_indx) + call RegPackAlloc(RF, InData%du) + call RegPackAlloc(RF, InData%dx) + call RegPack(RF, InData%Jac_nu) + call RegPack(RF, InData%Jac_ny) + call RegPack(RF, InData%Jac_nx) + call RegPackAlloc(RF, InData%Jac_Idx_BStC_u) + call RegPackAlloc(RF, InData%Jac_Idx_NStC_u) + call RegPackAlloc(RF, InData%Jac_Idx_TStC_u) + call RegPackAlloc(RF, InData%Jac_Idx_SStC_u) + call RegPackAlloc(RF, InData%Jac_Idx_BStC_x) + call RegPackAlloc(RF, InData%Jac_Idx_NStC_x) + call RegPackAlloc(RF, InData%Jac_Idx_TStC_x) + call RegPackAlloc(RF, InData%Jac_Idx_SStC_x) + call RegPackAlloc(RF, InData%Jac_Idx_BStC_y) + call RegPackAlloc(RF, InData%Jac_Idx_NStC_y) + call RegPackAlloc(RF, InData%Jac_Idx_TStC_y) + call RegPackAlloc(RF, InData%Jac_Idx_SStC_y) + call RegPack(RF, InData%SensorType) + call RegPack(RF, InData%NumBeam) + call RegPack(RF, InData%NumPulseGate) + call RegPack(RF, InData%PulseSpacing) + call RegPack(RF, InData%URefLid) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SrvD_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(SrvD_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SrvD_UnPackParam' integer(B8Ki) :: i1, i2, i3 integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HSSBrDT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HSSBrTqF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SIG_POSl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SIG_POTq) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SIG_SlPc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SIG_Slop) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SIG_SySp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_A0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_C0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_C1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_C2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_K2) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_MR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_Re1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_RLR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_RRes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_SRes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_SySp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_V1a) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_VLL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TEC_Xe1) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenEff) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%BlPitchInit)) deallocate(OutData%BlPitchInit) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlPitchInit(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlPitchInit.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlPitchInit) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlPitchF)) deallocate(OutData%BlPitchF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlPitchF(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlPitchF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlPitchF) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PitManRat)) deallocate(OutData%PitManRat) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PitManRat(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PitManRat.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PitManRat) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%YawManRat) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacYawF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SpdGenOn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%THSSBrDp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%THSSBrFl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TimGenOf) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TimGenOn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TPCOn) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TPitManS)) deallocate(OutData%TPitManS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TPitManS(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TPitManS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TPitManS) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%TYawManS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TYCOn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VS_RtGnSp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VS_RtTq) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VS_Slope) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VS_SlPc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VS_SySp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VS_TrGnSp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawPosCom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawRateCom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenModel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HSSBrMode) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PCMode) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VSContrl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YCMode) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenTiStp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenTiStr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%VS_Rgn2K) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawNeut) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawSpr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawDamp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TpBrDT) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TBDepISp)) deallocate(OutData%TBDepISp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TBDepISp(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TBDepISp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TBDepISp) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%TBDrConN) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TBDrConD) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBStC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumNStC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumTStC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumSStC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AfCmode) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AfC_Mean) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AfC_Amp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AfC_Phase) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CCmode) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StCCmode) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts_DLL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HSSBrDT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HSSBrTqF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SIG_POSl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SIG_POTq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SIG_SlPc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SIG_Slop); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SIG_SySp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_A0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_C0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_C1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_C2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_K2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_MR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_Re1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_RLR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_RRes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_SRes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_SySp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_V1a); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_VLL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TEC_Xe1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenEff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlPitchInit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlPitchF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PitManRat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawManRat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacYawF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SpdGenOn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%THSSBrDp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%THSSBrFl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TimGenOf); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TimGenOn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TPCOn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TPitManS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TYawManS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TYCOn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VS_RtGnSp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VS_RtTq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VS_Slope); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VS_SlPc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VS_SySp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VS_TrGnSp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawPosCom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawRateCom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenModel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HSSBrMode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PCMode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VSContrl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YCMode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenTiStp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenTiStr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%VS_Rgn2K); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawNeut); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawSpr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawDamp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TpBrDT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TBDepISp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TBDrConN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TBDrConD); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBStC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumNStC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumTStC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumSStC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AfCmode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AfC_Mean); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AfC_Amp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AfC_Phase); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CCmode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StCCmode); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts_DLL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%OutParam)) deallocate(OutData%OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackOutParmType(Buf, OutData%OutParam(i1)) ! OutParam - end do - end if - call RegUnpack(Buf, OutData%Delim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UseBladedInterface) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UseLegacyInterface) - if (RegCheckErr(Buf, RoutineName)) return - call DLLTypeUnpack(Buf, OutData%DLL_Trgt) ! DLL_Trgt - call RegUnpack(Buf, OutData%DLL_Ramp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%BlAlpha) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DLL_n) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%avcOUTNAME_LEN) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NacYaw_North) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AvgWindSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%AirDens) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TrimCase) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TrimGain) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotSpeedRef) - if (RegCheckErr(Buf, RoutineName)) return + call NWTC_Library_UnpackOutParmType(RF, OutData%OutParam(i1)) ! OutParam + end do + end if + call RegUnpack(RF, OutData%Delim); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseBladedInterface); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseLegacyInterface); if (RegCheckErr(RF, RoutineName)) return + call DLLTypeUnpack(RF, OutData%DLL_Trgt) ! DLL_Trgt + call RegUnpack(RF, OutData%DLL_Ramp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%BlAlpha); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DLL_n); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%avcOUTNAME_LEN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NacYaw_North); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AvgWindSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%AirDens); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TrimCase); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TrimGain); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotSpeedRef); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%BStC)) deallocate(OutData%BStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackParam(Buf, OutData%BStC(i1)) ! BStC + call StC_UnpackParam(RF, OutData%BStC(i1)) ! BStC end do end if if (allocated(OutData%NStC)) deallocate(OutData%NStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%NStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackParam(Buf, OutData%NStC(i1)) ! NStC + call StC_UnpackParam(RF, OutData%NStC(i1)) ! NStC end do end if if (allocated(OutData%TStC)) deallocate(OutData%TStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%TStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStC.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call StC_UnpackParam(Buf, OutData%TStC(i1)) ! TStC + call StC_UnpackParam(RF, OutData%TStC(i1)) ! TStC end do end if if (allocated(OutData%SStC)) deallocate(OutData%SStC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%SStC(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - do i1 = LB(1), UB(1) - call StC_UnpackParam(Buf, OutData%SStC(i1)) ! SStC - end do - end if - call RegUnpack(Buf, OutData%InterpOrder) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%EXavrSWAP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumCableControl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumStC_Control) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%StCMeasNumPerChan)) deallocate(OutData%StCMeasNumPerChan) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StCMeasNumPerChan(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StCMeasNumPerChan.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StCMeasNumPerChan) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%UseSC) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Jac_u_indx)) deallocate(OutData%Jac_u_indx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_u_indx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_u_indx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_u_indx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Jac_x_indx)) deallocate(OutData%Jac_x_indx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_x_indx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_x_indx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_x_indx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%du)) deallocate(OutData%du) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%du(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%du.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%du) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dx)) deallocate(OutData%dx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dx(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dx) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Jac_nu) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Jac_ny) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Jac_nx) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Jac_Idx_BStC_u)) deallocate(OutData%Jac_Idx_BStC_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_Idx_BStC_u(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_Idx_BStC_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_Idx_BStC_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Jac_Idx_NStC_u)) deallocate(OutData%Jac_Idx_NStC_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_Idx_NStC_u(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_Idx_NStC_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_Idx_NStC_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Jac_Idx_TStC_u)) deallocate(OutData%Jac_Idx_TStC_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_Idx_TStC_u(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_Idx_TStC_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_Idx_TStC_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Jac_Idx_SStC_u)) deallocate(OutData%Jac_Idx_SStC_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_Idx_SStC_u(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_Idx_SStC_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_Idx_SStC_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Jac_Idx_BStC_x)) deallocate(OutData%Jac_Idx_BStC_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_Idx_BStC_x(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_Idx_BStC_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_Idx_BStC_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Jac_Idx_NStC_x)) deallocate(OutData%Jac_Idx_NStC_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_Idx_NStC_x(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_Idx_NStC_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_Idx_NStC_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Jac_Idx_TStC_x)) deallocate(OutData%Jac_Idx_TStC_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_Idx_TStC_x(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_Idx_TStC_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_Idx_TStC_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Jac_Idx_SStC_x)) deallocate(OutData%Jac_Idx_SStC_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_Idx_SStC_x(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_Idx_SStC_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_Idx_SStC_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Jac_Idx_BStC_y)) deallocate(OutData%Jac_Idx_BStC_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_Idx_BStC_y(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_Idx_BStC_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_Idx_BStC_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Jac_Idx_NStC_y)) deallocate(OutData%Jac_Idx_NStC_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_Idx_NStC_y(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_Idx_NStC_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_Idx_NStC_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Jac_Idx_TStC_y)) deallocate(OutData%Jac_Idx_TStC_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_Idx_TStC_y(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_Idx_TStC_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_Idx_TStC_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Jac_Idx_SStC_y)) deallocate(OutData%Jac_Idx_SStC_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_Idx_SStC_y(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_Idx_SStC_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_Idx_SStC_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%SensorType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumBeam) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumPulseGate) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PulseSpacing) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%URefLid) - if (RegCheckErr(Buf, RoutineName)) return + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStC.', RF%ErrStat, RF%ErrMsg, RoutineName) + return + end if + do i1 = LB(1), UB(1) + call StC_UnpackParam(RF, OutData%SStC(i1)) ! SStC + end do + end if + call RegUnpack(RF, OutData%InterpOrder); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%EXavrSWAP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumCableControl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumStC_Control); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StCMeasNumPerChan); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseSC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_u_indx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_x_indx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%du); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Jac_nu); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Jac_ny); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Jac_nx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_Idx_BStC_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_Idx_NStC_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_Idx_TStC_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_Idx_SStC_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_Idx_BStC_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_Idx_NStC_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_Idx_TStC_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_Idx_SStC_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_Idx_BStC_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_Idx_NStC_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_Idx_TStC_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_Idx_SStC_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SensorType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumBeam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumPulseGate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PulseSpacing); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%URefLid); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SrvD_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -7550,457 +5778,211 @@ subroutine SrvD_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine SrvD_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SrvD_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SrvD_PackInput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%BlPitch)) - if (allocated(InData%BlPitch)) then - call RegPackBounds(Buf, 1, lbound(InData%BlPitch, kind=B8Ki), ubound(InData%BlPitch, kind=B8Ki)) - call RegPack(Buf, InData%BlPitch) - end if - call RegPack(Buf, InData%Yaw) - call RegPack(Buf, InData%YawRate) - call RegPack(Buf, InData%LSS_Spd) - call RegPack(Buf, InData%HSS_Spd) - call RegPack(Buf, InData%RotSpeed) - call RegPack(Buf, InData%ExternalYawPosCom) - call RegPack(Buf, InData%ExternalYawRateCom) - call RegPack(Buf, allocated(InData%ExternalBlPitchCom)) - if (allocated(InData%ExternalBlPitchCom)) then - call RegPackBounds(Buf, 1, lbound(InData%ExternalBlPitchCom, kind=B8Ki), ubound(InData%ExternalBlPitchCom, kind=B8Ki)) - call RegPack(Buf, InData%ExternalBlPitchCom) - end if - call RegPack(Buf, InData%ExternalGenTrq) - call RegPack(Buf, InData%ExternalElecPwr) - call RegPack(Buf, InData%ExternalHSSBrFrac) - call RegPack(Buf, allocated(InData%ExternalBlAirfoilCom)) - if (allocated(InData%ExternalBlAirfoilCom)) then - call RegPackBounds(Buf, 1, lbound(InData%ExternalBlAirfoilCom, kind=B8Ki), ubound(InData%ExternalBlAirfoilCom, kind=B8Ki)) - call RegPack(Buf, InData%ExternalBlAirfoilCom) - end if - call RegPack(Buf, allocated(InData%ExternalCableDeltaL)) - if (allocated(InData%ExternalCableDeltaL)) then - call RegPackBounds(Buf, 1, lbound(InData%ExternalCableDeltaL, kind=B8Ki), ubound(InData%ExternalCableDeltaL, kind=B8Ki)) - call RegPack(Buf, InData%ExternalCableDeltaL) - end if - call RegPack(Buf, allocated(InData%ExternalCableDeltaLdot)) - if (allocated(InData%ExternalCableDeltaLdot)) then - call RegPackBounds(Buf, 1, lbound(InData%ExternalCableDeltaLdot, kind=B8Ki), ubound(InData%ExternalCableDeltaLdot, kind=B8Ki)) - call RegPack(Buf, InData%ExternalCableDeltaLdot) - end if - call RegPack(Buf, InData%TwrAccel) - call RegPack(Buf, InData%YawErr) - call RegPack(Buf, InData%WindDir) - call RegPack(Buf, InData%RootMyc) - call RegPack(Buf, InData%YawBrTAxp) - call RegPack(Buf, InData%YawBrTAyp) - call RegPack(Buf, InData%LSSTipPxa) - call RegPack(Buf, InData%RootMxc) - call RegPack(Buf, InData%LSSTipMxa) - call RegPack(Buf, InData%LSSTipMya) - call RegPack(Buf, InData%LSSTipMza) - call RegPack(Buf, InData%LSSTipMys) - call RegPack(Buf, InData%LSSTipMzs) - call RegPack(Buf, InData%YawBrMyn) - call RegPack(Buf, InData%YawBrMzn) - call RegPack(Buf, InData%NcIMURAxs) - call RegPack(Buf, InData%NcIMURAys) - call RegPack(Buf, InData%NcIMURAzs) - call RegPack(Buf, InData%RotPwr) - call RegPack(Buf, InData%HorWindV) - call RegPack(Buf, InData%YawAngle) - call RegPack(Buf, InData%LSShftFxa) - call RegPack(Buf, InData%LSShftFys) - call RegPack(Buf, InData%LSShftFzs) - call RegPack(Buf, allocated(InData%fromSC)) - if (allocated(InData%fromSC)) then - call RegPackBounds(Buf, 1, lbound(InData%fromSC, kind=B8Ki), ubound(InData%fromSC, kind=B8Ki)) - call RegPack(Buf, InData%fromSC) - end if - call RegPack(Buf, allocated(InData%fromSCglob)) - if (allocated(InData%fromSCglob)) then - call RegPackBounds(Buf, 1, lbound(InData%fromSCglob, kind=B8Ki), ubound(InData%fromSCglob, kind=B8Ki)) - call RegPack(Buf, InData%fromSCglob) - end if - call RegPack(Buf, allocated(InData%Lidar)) - if (allocated(InData%Lidar)) then - call RegPackBounds(Buf, 1, lbound(InData%Lidar, kind=B8Ki), ubound(InData%Lidar, kind=B8Ki)) - call RegPack(Buf, InData%Lidar) - end if - call MeshPack(Buf, InData%PtfmMotionMesh) - call RegPack(Buf, allocated(InData%BStCMotionMesh)) + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%BlPitch) + call RegPack(RF, InData%Yaw) + call RegPack(RF, InData%YawRate) + call RegPack(RF, InData%LSS_Spd) + call RegPack(RF, InData%HSS_Spd) + call RegPack(RF, InData%RotSpeed) + call RegPack(RF, InData%ExternalYawPosCom) + call RegPack(RF, InData%ExternalYawRateCom) + call RegPackAlloc(RF, InData%ExternalBlPitchCom) + call RegPack(RF, InData%ExternalGenTrq) + call RegPack(RF, InData%ExternalElecPwr) + call RegPack(RF, InData%ExternalHSSBrFrac) + call RegPackAlloc(RF, InData%ExternalBlAirfoilCom) + call RegPackAlloc(RF, InData%ExternalCableDeltaL) + call RegPackAlloc(RF, InData%ExternalCableDeltaLdot) + call RegPack(RF, InData%TwrAccel) + call RegPack(RF, InData%YawErr) + call RegPack(RF, InData%WindDir) + call RegPack(RF, InData%RootMyc) + call RegPack(RF, InData%YawBrTAxp) + call RegPack(RF, InData%YawBrTAyp) + call RegPack(RF, InData%LSSTipPxa) + call RegPack(RF, InData%RootMxc) + call RegPack(RF, InData%LSSTipMxa) + call RegPack(RF, InData%LSSTipMya) + call RegPack(RF, InData%LSSTipMza) + call RegPack(RF, InData%LSSTipMys) + call RegPack(RF, InData%LSSTipMzs) + call RegPack(RF, InData%YawBrMyn) + call RegPack(RF, InData%YawBrMzn) + call RegPack(RF, InData%NcIMURAxs) + call RegPack(RF, InData%NcIMURAys) + call RegPack(RF, InData%NcIMURAzs) + call RegPack(RF, InData%RotPwr) + call RegPack(RF, InData%HorWindV) + call RegPack(RF, InData%YawAngle) + call RegPack(RF, InData%LSShftFxa) + call RegPack(RF, InData%LSShftFys) + call RegPack(RF, InData%LSShftFzs) + call RegPackAlloc(RF, InData%fromSC) + call RegPackAlloc(RF, InData%fromSCglob) + call RegPackAlloc(RF, InData%Lidar) + call MeshPack(RF, InData%PtfmMotionMesh) + call RegPack(RF, allocated(InData%BStCMotionMesh)) if (allocated(InData%BStCMotionMesh)) then - call RegPackBounds(Buf, 2, lbound(InData%BStCMotionMesh, kind=B8Ki), ubound(InData%BStCMotionMesh, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%BStCMotionMesh, kind=B8Ki), ubound(InData%BStCMotionMesh, kind=B8Ki)) LB(1:2) = lbound(InData%BStCMotionMesh, kind=B8Ki) UB(1:2) = ubound(InData%BStCMotionMesh, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%BStCMotionMesh(i1,i2)) + call MeshPack(RF, InData%BStCMotionMesh(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%NStCMotionMesh)) + call RegPack(RF, allocated(InData%NStCMotionMesh)) if (allocated(InData%NStCMotionMesh)) then - call RegPackBounds(Buf, 1, lbound(InData%NStCMotionMesh, kind=B8Ki), ubound(InData%NStCMotionMesh, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%NStCMotionMesh, kind=B8Ki), ubound(InData%NStCMotionMesh, kind=B8Ki)) LB(1:1) = lbound(InData%NStCMotionMesh, kind=B8Ki) UB(1:1) = ubound(InData%NStCMotionMesh, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%NStCMotionMesh(i1)) + call MeshPack(RF, InData%NStCMotionMesh(i1)) end do end if - call RegPack(Buf, allocated(InData%TStCMotionMesh)) + call RegPack(RF, allocated(InData%TStCMotionMesh)) if (allocated(InData%TStCMotionMesh)) then - call RegPackBounds(Buf, 1, lbound(InData%TStCMotionMesh, kind=B8Ki), ubound(InData%TStCMotionMesh, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%TStCMotionMesh, kind=B8Ki), ubound(InData%TStCMotionMesh, kind=B8Ki)) LB(1:1) = lbound(InData%TStCMotionMesh, kind=B8Ki) UB(1:1) = ubound(InData%TStCMotionMesh, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%TStCMotionMesh(i1)) + call MeshPack(RF, InData%TStCMotionMesh(i1)) end do end if - call RegPack(Buf, allocated(InData%SStCMotionMesh)) + call RegPack(RF, allocated(InData%SStCMotionMesh)) if (allocated(InData%SStCMotionMesh)) then - call RegPackBounds(Buf, 1, lbound(InData%SStCMotionMesh, kind=B8Ki), ubound(InData%SStCMotionMesh, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%SStCMotionMesh, kind=B8Ki), ubound(InData%SStCMotionMesh, kind=B8Ki)) LB(1:1) = lbound(InData%SStCMotionMesh, kind=B8Ki) UB(1:1) = ubound(InData%SStCMotionMesh, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%SStCMotionMesh(i1)) + call MeshPack(RF, InData%SStCMotionMesh(i1)) end do end if - call RegPack(Buf, allocated(InData%LidSpeed)) - if (allocated(InData%LidSpeed)) then - call RegPackBounds(Buf, 1, lbound(InData%LidSpeed, kind=B8Ki), ubound(InData%LidSpeed, kind=B8Ki)) - call RegPack(Buf, InData%LidSpeed) - end if - call RegPack(Buf, allocated(InData%MsrPositionsX)) - if (allocated(InData%MsrPositionsX)) then - call RegPackBounds(Buf, 1, lbound(InData%MsrPositionsX, kind=B8Ki), ubound(InData%MsrPositionsX, kind=B8Ki)) - call RegPack(Buf, InData%MsrPositionsX) - end if - call RegPack(Buf, allocated(InData%MsrPositionsY)) - if (allocated(InData%MsrPositionsY)) then - call RegPackBounds(Buf, 1, lbound(InData%MsrPositionsY, kind=B8Ki), ubound(InData%MsrPositionsY, kind=B8Ki)) - call RegPack(Buf, InData%MsrPositionsY) - end if - call RegPack(Buf, allocated(InData%MsrPositionsZ)) - if (allocated(InData%MsrPositionsZ)) then - call RegPackBounds(Buf, 1, lbound(InData%MsrPositionsZ, kind=B8Ki), ubound(InData%MsrPositionsZ, kind=B8Ki)) - call RegPack(Buf, InData%MsrPositionsZ) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%LidSpeed) + call RegPackAlloc(RF, InData%MsrPositionsX) + call RegPackAlloc(RF, InData%MsrPositionsY) + call RegPackAlloc(RF, InData%MsrPositionsZ) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SrvD_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SrvD_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SrvD_UnPackInput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%BlPitch)) deallocate(OutData%BlPitch) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlPitch(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlPitch.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlPitch) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Yaw) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawRate) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSS_Spd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HSS_Spd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotSpeed) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ExternalYawPosCom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ExternalYawRateCom) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%ExternalBlPitchCom)) deallocate(OutData%ExternalBlPitchCom) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ExternalBlPitchCom(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ExternalBlPitchCom.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ExternalBlPitchCom) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%ExternalGenTrq) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ExternalElecPwr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ExternalHSSBrFrac) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%ExternalBlAirfoilCom)) deallocate(OutData%ExternalBlAirfoilCom) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ExternalBlAirfoilCom(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ExternalBlAirfoilCom.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ExternalBlAirfoilCom) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ExternalCableDeltaL)) deallocate(OutData%ExternalCableDeltaL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ExternalCableDeltaL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ExternalCableDeltaL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ExternalCableDeltaL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ExternalCableDeltaLdot)) deallocate(OutData%ExternalCableDeltaLdot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ExternalCableDeltaLdot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ExternalCableDeltaLdot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ExternalCableDeltaLdot) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%TwrAccel) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawErr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WindDir) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootMyc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawBrTAxp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawBrTAyp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipPxa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootMxc) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipMxa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipMya) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipMza) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipMys) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSSTipMzs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawBrMyn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawBrMzn) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NcIMURAxs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NcIMURAys) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NcIMURAzs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotPwr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HorWindV) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawAngle) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSShftFxa) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSShftFys) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%LSShftFzs) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%fromSC)) deallocate(OutData%fromSC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%fromSC(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fromSC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%fromSC) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%fromSCglob)) deallocate(OutData%fromSCglob) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%fromSCglob(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fromSCglob.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%fromSCglob) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Lidar)) deallocate(OutData%Lidar) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Lidar(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Lidar.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Lidar) - if (RegCheckErr(Buf, RoutineName)) return - end if - call MeshUnpack(Buf, OutData%PtfmMotionMesh) ! PtfmMotionMesh + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%BlPitch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Yaw); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawRate); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSS_Spd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HSS_Spd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ExternalYawPosCom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ExternalYawRateCom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ExternalBlPitchCom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ExternalGenTrq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ExternalElecPwr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ExternalHSSBrFrac); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ExternalBlAirfoilCom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ExternalCableDeltaL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ExternalCableDeltaLdot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TwrAccel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawErr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WindDir); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootMyc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawBrTAxp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawBrTAyp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipPxa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootMxc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipMxa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipMya); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipMza); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipMys); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSSTipMzs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawBrMyn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawBrMzn); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NcIMURAxs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NcIMURAys); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NcIMURAzs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotPwr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HorWindV); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawAngle); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSShftFxa); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSShftFys); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LSShftFzs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%fromSC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%fromSCglob); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Lidar); if (RegCheckErr(RF, RoutineName)) return + call MeshUnpack(RF, OutData%PtfmMotionMesh) ! PtfmMotionMesh if (allocated(OutData%BStCMotionMesh)) deallocate(OutData%BStCMotionMesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BStCMotionMesh(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStCMotionMesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStCMotionMesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%BStCMotionMesh(i1,i2)) ! BStCMotionMesh + call MeshUnpack(RF, OutData%BStCMotionMesh(i1,i2)) ! BStCMotionMesh end do end do end if if (allocated(OutData%NStCMotionMesh)) deallocate(OutData%NStCMotionMesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%NStCMotionMesh(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStCMotionMesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStCMotionMesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%NStCMotionMesh(i1)) ! NStCMotionMesh + call MeshUnpack(RF, OutData%NStCMotionMesh(i1)) ! NStCMotionMesh end do end if if (allocated(OutData%TStCMotionMesh)) deallocate(OutData%TStCMotionMesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%TStCMotionMesh(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStCMotionMesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStCMotionMesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%TStCMotionMesh(i1)) ! TStCMotionMesh + call MeshUnpack(RF, OutData%TStCMotionMesh(i1)) ! TStCMotionMesh end do end if if (allocated(OutData%SStCMotionMesh)) deallocate(OutData%SStCMotionMesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%SStCMotionMesh(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStCMotionMesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStCMotionMesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%SStCMotionMesh(i1)) ! SStCMotionMesh + call MeshUnpack(RF, OutData%SStCMotionMesh(i1)) ! SStCMotionMesh end do end if - if (allocated(OutData%LidSpeed)) deallocate(OutData%LidSpeed) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LidSpeed(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LidSpeed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LidSpeed) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MsrPositionsX)) deallocate(OutData%MsrPositionsX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MsrPositionsX(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MsrPositionsX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MsrPositionsX) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MsrPositionsY)) deallocate(OutData%MsrPositionsY) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MsrPositionsY(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MsrPositionsY.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MsrPositionsY) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MsrPositionsZ)) deallocate(OutData%MsrPositionsZ) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MsrPositionsZ(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MsrPositionsZ.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MsrPositionsZ) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%LidSpeed); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MsrPositionsX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MsrPositionsY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MsrPositionsZ); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SrvD_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -8259,289 +6241,141 @@ subroutine SrvD_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine SrvD_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SrvD_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SrvD_PackOutput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - call RegPack(Buf, allocated(InData%BlPitchCom)) - if (allocated(InData%BlPitchCom)) then - call RegPackBounds(Buf, 1, lbound(InData%BlPitchCom, kind=B8Ki), ubound(InData%BlPitchCom, kind=B8Ki)) - call RegPack(Buf, InData%BlPitchCom) - end if - call RegPack(Buf, allocated(InData%BlAirfoilCom)) - if (allocated(InData%BlAirfoilCom)) then - call RegPackBounds(Buf, 1, lbound(InData%BlAirfoilCom, kind=B8Ki), ubound(InData%BlAirfoilCom, kind=B8Ki)) - call RegPack(Buf, InData%BlAirfoilCom) - end if - call RegPack(Buf, InData%YawMom) - call RegPack(Buf, InData%GenTrq) - call RegPack(Buf, InData%HSSBrTrqC) - call RegPack(Buf, InData%ElecPwr) - call RegPack(Buf, allocated(InData%TBDrCon)) - if (allocated(InData%TBDrCon)) then - call RegPackBounds(Buf, 1, lbound(InData%TBDrCon, kind=B8Ki), ubound(InData%TBDrCon, kind=B8Ki)) - call RegPack(Buf, InData%TBDrCon) - end if - call RegPack(Buf, allocated(InData%Lidar)) - if (allocated(InData%Lidar)) then - call RegPackBounds(Buf, 1, lbound(InData%Lidar, kind=B8Ki), ubound(InData%Lidar, kind=B8Ki)) - call RegPack(Buf, InData%Lidar) - end if - call RegPack(Buf, allocated(InData%CableDeltaL)) - if (allocated(InData%CableDeltaL)) then - call RegPackBounds(Buf, 1, lbound(InData%CableDeltaL, kind=B8Ki), ubound(InData%CableDeltaL, kind=B8Ki)) - call RegPack(Buf, InData%CableDeltaL) - end if - call RegPack(Buf, allocated(InData%CableDeltaLdot)) - if (allocated(InData%CableDeltaLdot)) then - call RegPackBounds(Buf, 1, lbound(InData%CableDeltaLdot, kind=B8Ki), ubound(InData%CableDeltaLdot, kind=B8Ki)) - call RegPack(Buf, InData%CableDeltaLdot) - end if - call RegPack(Buf, allocated(InData%BStCLoadMesh)) + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WriteOutput) + call RegPackAlloc(RF, InData%BlPitchCom) + call RegPackAlloc(RF, InData%BlAirfoilCom) + call RegPack(RF, InData%YawMom) + call RegPack(RF, InData%GenTrq) + call RegPack(RF, InData%HSSBrTrqC) + call RegPack(RF, InData%ElecPwr) + call RegPackAlloc(RF, InData%TBDrCon) + call RegPackAlloc(RF, InData%Lidar) + call RegPackAlloc(RF, InData%CableDeltaL) + call RegPackAlloc(RF, InData%CableDeltaLdot) + call RegPack(RF, allocated(InData%BStCLoadMesh)) if (allocated(InData%BStCLoadMesh)) then - call RegPackBounds(Buf, 2, lbound(InData%BStCLoadMesh, kind=B8Ki), ubound(InData%BStCLoadMesh, kind=B8Ki)) + call RegPackBounds(RF, 2, lbound(InData%BStCLoadMesh, kind=B8Ki), ubound(InData%BStCLoadMesh, kind=B8Ki)) LB(1:2) = lbound(InData%BStCLoadMesh, kind=B8Ki) UB(1:2) = ubound(InData%BStCLoadMesh, kind=B8Ki) do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%BStCLoadMesh(i1,i2)) + call MeshPack(RF, InData%BStCLoadMesh(i1,i2)) end do end do end if - call RegPack(Buf, allocated(InData%NStCLoadMesh)) + call RegPack(RF, allocated(InData%NStCLoadMesh)) if (allocated(InData%NStCLoadMesh)) then - call RegPackBounds(Buf, 1, lbound(InData%NStCLoadMesh, kind=B8Ki), ubound(InData%NStCLoadMesh, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%NStCLoadMesh, kind=B8Ki), ubound(InData%NStCLoadMesh, kind=B8Ki)) LB(1:1) = lbound(InData%NStCLoadMesh, kind=B8Ki) UB(1:1) = ubound(InData%NStCLoadMesh, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%NStCLoadMesh(i1)) + call MeshPack(RF, InData%NStCLoadMesh(i1)) end do end if - call RegPack(Buf, allocated(InData%TStCLoadMesh)) + call RegPack(RF, allocated(InData%TStCLoadMesh)) if (allocated(InData%TStCLoadMesh)) then - call RegPackBounds(Buf, 1, lbound(InData%TStCLoadMesh, kind=B8Ki), ubound(InData%TStCLoadMesh, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%TStCLoadMesh, kind=B8Ki), ubound(InData%TStCLoadMesh, kind=B8Ki)) LB(1:1) = lbound(InData%TStCLoadMesh, kind=B8Ki) UB(1:1) = ubound(InData%TStCLoadMesh, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%TStCLoadMesh(i1)) + call MeshPack(RF, InData%TStCLoadMesh(i1)) end do end if - call RegPack(Buf, allocated(InData%SStCLoadMesh)) + call RegPack(RF, allocated(InData%SStCLoadMesh)) if (allocated(InData%SStCLoadMesh)) then - call RegPackBounds(Buf, 1, lbound(InData%SStCLoadMesh, kind=B8Ki), ubound(InData%SStCLoadMesh, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%SStCLoadMesh, kind=B8Ki), ubound(InData%SStCLoadMesh, kind=B8Ki)) LB(1:1) = lbound(InData%SStCLoadMesh, kind=B8Ki) UB(1:1) = ubound(InData%SStCLoadMesh, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%SStCLoadMesh(i1)) + call MeshPack(RF, InData%SStCLoadMesh(i1)) end do end if - call RegPack(Buf, allocated(InData%toSC)) - if (allocated(InData%toSC)) then - call RegPackBounds(Buf, 1, lbound(InData%toSC, kind=B8Ki), ubound(InData%toSC, kind=B8Ki)) - call RegPack(Buf, InData%toSC) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%toSC) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SrvD_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SrvD_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SrvD_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SrvD_UnPackOutput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlPitchCom)) deallocate(OutData%BlPitchCom) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlPitchCom(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlPitchCom.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlPitchCom) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%BlAirfoilCom)) deallocate(OutData%BlAirfoilCom) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%BlAirfoilCom(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BlAirfoilCom.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%BlAirfoilCom) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%YawMom) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GenTrq) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%HSSBrTrqC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ElecPwr) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%TBDrCon)) deallocate(OutData%TBDrCon) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TBDrCon(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TBDrCon.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TBDrCon) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Lidar)) deallocate(OutData%Lidar) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Lidar(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Lidar.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Lidar) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CableDeltaL)) deallocate(OutData%CableDeltaL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CableDeltaL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CableDeltaL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CableDeltaL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CableDeltaLdot)) deallocate(OutData%CableDeltaLdot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CableDeltaLdot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CableDeltaLdot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CableDeltaLdot) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlPitchCom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%BlAirfoilCom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawMom); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GenTrq); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%HSSBrTrqC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ElecPwr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TBDrCon); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Lidar); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CableDeltaL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CableDeltaLdot); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%BStCLoadMesh)) deallocate(OutData%BStCLoadMesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 2, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%BStCLoadMesh(LB(1):UB(1),LB(2):UB(2)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStCLoadMesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%BStCLoadMesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i2 = LB(2), UB(2) do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%BStCLoadMesh(i1,i2)) ! BStCLoadMesh + call MeshUnpack(RF, OutData%BStCLoadMesh(i1,i2)) ! BStCLoadMesh end do end do end if if (allocated(OutData%NStCLoadMesh)) deallocate(OutData%NStCLoadMesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%NStCLoadMesh(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStCLoadMesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NStCLoadMesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%NStCLoadMesh(i1)) ! NStCLoadMesh + call MeshUnpack(RF, OutData%NStCLoadMesh(i1)) ! NStCLoadMesh end do end if if (allocated(OutData%TStCLoadMesh)) deallocate(OutData%TStCLoadMesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%TStCLoadMesh(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStCLoadMesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TStCLoadMesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%TStCLoadMesh(i1)) ! TStCLoadMesh + call MeshUnpack(RF, OutData%TStCLoadMesh(i1)) ! TStCLoadMesh end do end if if (allocated(OutData%SStCLoadMesh)) deallocate(OutData%SStCLoadMesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%SStCLoadMesh(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStCLoadMesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SStCLoadMesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%SStCLoadMesh(i1)) ! SStCLoadMesh + call MeshUnpack(RF, OutData%SStCLoadMesh(i1)) ! SStCLoadMesh end do end if - if (allocated(OutData%toSC)) deallocate(OutData%toSC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%toSC(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%toSC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%toSC) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%toSC); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SrvD_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/servodyn/src/StrucCtrl_Types.f90 b/modules/servodyn/src/StrucCtrl_Types.f90 index 61c5b1aa1c..b11f6b1805 100644 --- a/modules/servodyn/src/StrucCtrl_Types.f90 +++ b/modules/servodyn/src/StrucCtrl_Types.f90 @@ -380,268 +380,154 @@ subroutine StC_DestroyInputFile(InputFileData, ErrStat, ErrMsg) end if end subroutine -subroutine StC_PackInputFile(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_PackInputFile(RF, Indata) + type(RegFile), intent(inout) :: RF type(StC_InputFile), intent(in) :: InData character(*), parameter :: RoutineName = 'StC_PackInputFile' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%StCFileName) - call RegPack(Buf, InData%Echo) - call RegPack(Buf, InData%StC_CMODE) - call RegPack(Buf, InData%StC_SA_MODE) - call RegPack(Buf, InData%StC_DOF_MODE) - call RegPack(Buf, InData%StC_X_DOF) - call RegPack(Buf, InData%StC_Y_DOF) - call RegPack(Buf, InData%StC_Z_DOF) - call RegPack(Buf, InData%StC_X_DSP) - call RegPack(Buf, InData%StC_Y_DSP) - call RegPack(Buf, InData%StC_Z_DSP) - call RegPack(Buf, InData%StC_Z_PreLdC) - call RegPack(Buf, InData%StC_X_M) - call RegPack(Buf, InData%StC_Y_M) - call RegPack(Buf, InData%StC_Z_M) - call RegPack(Buf, InData%StC_XY_M) - call RegPack(Buf, InData%StC_X_K) - call RegPack(Buf, InData%StC_Y_K) - call RegPack(Buf, InData%StC_Z_K) - call RegPack(Buf, InData%StC_X_C) - call RegPack(Buf, InData%StC_Y_C) - call RegPack(Buf, InData%StC_Z_C) - call RegPack(Buf, InData%StC_X_PSP) - call RegPack(Buf, InData%StC_X_NSP) - call RegPack(Buf, InData%StC_Y_PSP) - call RegPack(Buf, InData%StC_Y_NSP) - call RegPack(Buf, InData%StC_Z_PSP) - call RegPack(Buf, InData%StC_Z_NSP) - call RegPack(Buf, InData%StC_X_KS) - call RegPack(Buf, InData%StC_X_CS) - call RegPack(Buf, InData%StC_Y_KS) - call RegPack(Buf, InData%StC_Y_CS) - call RegPack(Buf, InData%StC_Z_KS) - call RegPack(Buf, InData%StC_Z_CS) - call RegPack(Buf, InData%StC_P_X) - call RegPack(Buf, InData%StC_P_Y) - call RegPack(Buf, InData%StC_P_Z) - call RegPack(Buf, InData%StC_X_C_HIGH) - call RegPack(Buf, InData%StC_X_C_LOW) - call RegPack(Buf, InData%StC_Y_C_HIGH) - call RegPack(Buf, InData%StC_Y_C_LOW) - call RegPack(Buf, InData%StC_Z_C_HIGH) - call RegPack(Buf, InData%StC_Z_C_LOW) - call RegPack(Buf, InData%StC_X_C_BRAKE) - call RegPack(Buf, InData%StC_Y_C_BRAKE) - call RegPack(Buf, InData%StC_Z_C_BRAKE) - call RegPack(Buf, InData%L_X) - call RegPack(Buf, InData%B_X) - call RegPack(Buf, InData%area_X) - call RegPack(Buf, InData%area_ratio_X) - call RegPack(Buf, InData%headLossCoeff_X) - call RegPack(Buf, InData%rho_X) - call RegPack(Buf, InData%L_Y) - call RegPack(Buf, InData%B_Y) - call RegPack(Buf, InData%area_Y) - call RegPack(Buf, InData%area_ratio_Y) - call RegPack(Buf, InData%headLossCoeff_Y) - call RegPack(Buf, InData%rho_Y) - call RegPack(Buf, InData%USE_F_TBL) - call RegPack(Buf, InData%NKInpSt) - call RegPack(Buf, InData%StC_F_TBL_FILE) - call RegPack(Buf, allocated(InData%F_TBL)) - if (allocated(InData%F_TBL)) then - call RegPackBounds(Buf, 2, lbound(InData%F_TBL, kind=B8Ki), ubound(InData%F_TBL, kind=B8Ki)) - call RegPack(Buf, InData%F_TBL) - end if - call RegPack(Buf, InData%PrescribedForcesCoordSys) - call RegPack(Buf, InData%PrescribedForcesFile) - call RegPack(Buf, allocated(InData%StC_PrescribedForce)) - if (allocated(InData%StC_PrescribedForce)) then - call RegPackBounds(Buf, 2, lbound(InData%StC_PrescribedForce, kind=B8Ki), ubound(InData%StC_PrescribedForce, kind=B8Ki)) - call RegPack(Buf, InData%StC_PrescribedForce) - end if - call RegPack(Buf, allocated(InData%StC_CChan)) - if (allocated(InData%StC_CChan)) then - call RegPackBounds(Buf, 1, lbound(InData%StC_CChan, kind=B8Ki), ubound(InData%StC_CChan, kind=B8Ki)) - call RegPack(Buf, InData%StC_CChan) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%StCFileName) + call RegPack(RF, InData%Echo) + call RegPack(RF, InData%StC_CMODE) + call RegPack(RF, InData%StC_SA_MODE) + call RegPack(RF, InData%StC_DOF_MODE) + call RegPack(RF, InData%StC_X_DOF) + call RegPack(RF, InData%StC_Y_DOF) + call RegPack(RF, InData%StC_Z_DOF) + call RegPack(RF, InData%StC_X_DSP) + call RegPack(RF, InData%StC_Y_DSP) + call RegPack(RF, InData%StC_Z_DSP) + call RegPack(RF, InData%StC_Z_PreLdC) + call RegPack(RF, InData%StC_X_M) + call RegPack(RF, InData%StC_Y_M) + call RegPack(RF, InData%StC_Z_M) + call RegPack(RF, InData%StC_XY_M) + call RegPack(RF, InData%StC_X_K) + call RegPack(RF, InData%StC_Y_K) + call RegPack(RF, InData%StC_Z_K) + call RegPack(RF, InData%StC_X_C) + call RegPack(RF, InData%StC_Y_C) + call RegPack(RF, InData%StC_Z_C) + call RegPack(RF, InData%StC_X_PSP) + call RegPack(RF, InData%StC_X_NSP) + call RegPack(RF, InData%StC_Y_PSP) + call RegPack(RF, InData%StC_Y_NSP) + call RegPack(RF, InData%StC_Z_PSP) + call RegPack(RF, InData%StC_Z_NSP) + call RegPack(RF, InData%StC_X_KS) + call RegPack(RF, InData%StC_X_CS) + call RegPack(RF, InData%StC_Y_KS) + call RegPack(RF, InData%StC_Y_CS) + call RegPack(RF, InData%StC_Z_KS) + call RegPack(RF, InData%StC_Z_CS) + call RegPack(RF, InData%StC_P_X) + call RegPack(RF, InData%StC_P_Y) + call RegPack(RF, InData%StC_P_Z) + call RegPack(RF, InData%StC_X_C_HIGH) + call RegPack(RF, InData%StC_X_C_LOW) + call RegPack(RF, InData%StC_Y_C_HIGH) + call RegPack(RF, InData%StC_Y_C_LOW) + call RegPack(RF, InData%StC_Z_C_HIGH) + call RegPack(RF, InData%StC_Z_C_LOW) + call RegPack(RF, InData%StC_X_C_BRAKE) + call RegPack(RF, InData%StC_Y_C_BRAKE) + call RegPack(RF, InData%StC_Z_C_BRAKE) + call RegPack(RF, InData%L_X) + call RegPack(RF, InData%B_X) + call RegPack(RF, InData%area_X) + call RegPack(RF, InData%area_ratio_X) + call RegPack(RF, InData%headLossCoeff_X) + call RegPack(RF, InData%rho_X) + call RegPack(RF, InData%L_Y) + call RegPack(RF, InData%B_Y) + call RegPack(RF, InData%area_Y) + call RegPack(RF, InData%area_ratio_Y) + call RegPack(RF, InData%headLossCoeff_Y) + call RegPack(RF, InData%rho_Y) + call RegPack(RF, InData%USE_F_TBL) + call RegPack(RF, InData%NKInpSt) + call RegPack(RF, InData%StC_F_TBL_FILE) + call RegPackAlloc(RF, InData%F_TBL) + call RegPack(RF, InData%PrescribedForcesCoordSys) + call RegPack(RF, InData%PrescribedForcesFile) + call RegPackAlloc(RF, InData%StC_PrescribedForce) + call RegPackAlloc(RF, InData%StC_CChan) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine StC_UnPackInputFile(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_UnPackInputFile(RF, OutData) + type(RegFile), intent(inout) :: RF type(StC_InputFile), intent(inout) :: OutData character(*), parameter :: RoutineName = 'StC_UnPackInputFile' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%StCFileName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Echo) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_CMODE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_SA_MODE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_DOF_MODE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_X_DOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Y_DOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_DOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_X_DSP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Y_DSP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_DSP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_PreLdC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_X_M) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Y_M) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_M) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_XY_M) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_X_K) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Y_K) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_K) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_X_C) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Y_C) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_C) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_X_PSP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_X_NSP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Y_PSP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Y_NSP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_PSP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_NSP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_X_KS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_X_CS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Y_KS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Y_CS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_KS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_CS) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_P_X) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_P_Y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_P_Z) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_X_C_HIGH) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_X_C_LOW) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Y_C_HIGH) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Y_C_LOW) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_C_HIGH) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_C_LOW) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_X_C_BRAKE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Y_C_BRAKE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_C_BRAKE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%L_X) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%B_X) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%area_X) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%area_ratio_X) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%headLossCoeff_X) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rho_X) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%L_Y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%B_Y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%area_Y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%area_ratio_Y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%headLossCoeff_Y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rho_Y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%USE_F_TBL) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NKInpSt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_F_TBL_FILE) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%F_TBL)) deallocate(OutData%F_TBL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_TBL(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_TBL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_TBL) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%PrescribedForcesCoordSys) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PrescribedForcesFile) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%StC_PrescribedForce)) deallocate(OutData%StC_PrescribedForce) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StC_PrescribedForce(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StC_PrescribedForce.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StC_PrescribedForce) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%StC_CChan)) deallocate(OutData%StC_CChan) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StC_CChan(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StC_CChan.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StC_CChan) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%StCFileName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Echo); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_CMODE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_SA_MODE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_DOF_MODE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_X_DOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Y_DOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_DOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_X_DSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Y_DSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_DSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_PreLdC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_X_M); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Y_M); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_M); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_XY_M); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_X_K); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Y_K); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_K); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_X_C); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Y_C); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_C); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_X_PSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_X_NSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Y_PSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Y_NSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_PSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_NSP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_X_KS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_X_CS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Y_KS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Y_CS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_KS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_CS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_P_X); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_P_Y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_P_Z); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_X_C_HIGH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_X_C_LOW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Y_C_HIGH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Y_C_LOW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_C_HIGH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_C_LOW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_X_C_BRAKE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Y_C_BRAKE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_C_BRAKE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%L_X); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%B_X); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%area_X); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%area_ratio_X); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%headLossCoeff_X); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rho_X); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%L_Y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%B_Y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%area_Y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%area_ratio_Y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%headLossCoeff_Y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rho_Y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%USE_F_TBL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NKInpSt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_F_TBL_FILE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_TBL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PrescribedForcesCoordSys); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PrescribedForcesFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StC_PrescribedForce); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StC_CChan); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine StC_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -745,120 +631,46 @@ subroutine StC_DestroyInitInput(InitInputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine StC_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(StC_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'StC_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%InputFile) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, InData%NumMeshPts) - call RegPack(Buf, allocated(InData%InitRefPos)) - if (allocated(InData%InitRefPos)) then - call RegPackBounds(Buf, 2, lbound(InData%InitRefPos, kind=B8Ki), ubound(InData%InitRefPos, kind=B8Ki)) - call RegPack(Buf, InData%InitRefPos) - end if - call RegPack(Buf, allocated(InData%InitTransDisp)) - if (allocated(InData%InitTransDisp)) then - call RegPackBounds(Buf, 2, lbound(InData%InitTransDisp, kind=B8Ki), ubound(InData%InitTransDisp, kind=B8Ki)) - call RegPack(Buf, InData%InitTransDisp) - end if - call RegPack(Buf, allocated(InData%InitOrient)) - if (allocated(InData%InitOrient)) then - call RegPackBounds(Buf, 3, lbound(InData%InitOrient, kind=B8Ki), ubound(InData%InitOrient, kind=B8Ki)) - call RegPack(Buf, InData%InitOrient) - end if - call RegPack(Buf, allocated(InData%InitRefOrient)) - if (allocated(InData%InitRefOrient)) then - call RegPackBounds(Buf, 3, lbound(InData%InitRefOrient, kind=B8Ki), ubound(InData%InitRefOrient, kind=B8Ki)) - call RegPack(Buf, InData%InitRefOrient) - end if - call RegPack(Buf, InData%UseInputFile) - call NWTC_Library_PackFileInfoType(Buf, InData%PassedPrimaryInputData) - call RegPack(Buf, InData%UseInputFile_PrescribeFrc) - call NWTC_Library_PackFileInfoType(Buf, InData%PassedPrescribeFrcData) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%InputFile) + call RegPack(RF, InData%RootName) + call RegPack(RF, InData%Gravity) + call RegPack(RF, InData%NumMeshPts) + call RegPackAlloc(RF, InData%InitRefPos) + call RegPackAlloc(RF, InData%InitTransDisp) + call RegPackAlloc(RF, InData%InitOrient) + call RegPackAlloc(RF, InData%InitRefOrient) + call RegPack(RF, InData%UseInputFile) + call NWTC_Library_PackFileInfoType(RF, InData%PassedPrimaryInputData) + call RegPack(RF, InData%UseInputFile_PrescribeFrc) + call NWTC_Library_PackFileInfoType(RF, InData%PassedPrescribeFrcData) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine StC_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(StC_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'StC_UnPackInitInput' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%InputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumMeshPts) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%InitRefPos)) deallocate(OutData%InitRefPos) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InitRefPos(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InitRefPos.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InitRefPos) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%InitTransDisp)) deallocate(OutData%InitTransDisp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InitTransDisp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InitTransDisp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InitTransDisp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%InitOrient)) deallocate(OutData%InitOrient) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InitOrient(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InitOrient.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InitOrient) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%InitRefOrient)) deallocate(OutData%InitRefOrient) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InitRefOrient(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InitRefOrient.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InitRefOrient) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%UseInputFile) - if (RegCheckErr(Buf, RoutineName)) return - call NWTC_Library_UnpackFileInfoType(Buf, OutData%PassedPrimaryInputData) ! PassedPrimaryInputData - call RegUnpack(Buf, OutData%UseInputFile_PrescribeFrc) - if (RegCheckErr(Buf, RoutineName)) return - call NWTC_Library_UnpackFileInfoType(Buf, OutData%PassedPrescribeFrcData) ! PassedPrescribeFrcData + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%InputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumMeshPts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%InitRefPos); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%InitTransDisp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%InitOrient); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%InitRefOrient); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UseInputFile); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackFileInfoType(RF, OutData%PassedPrimaryInputData) ! PassedPrimaryInputData + call RegUnpack(RF, OutData%UseInputFile_PrescribeFrc); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackFileInfoType(RF, OutData%PassedPrescribeFrcData) ! PassedPrescribeFrcData end subroutine subroutine StC_CopyCtrlChanInitInfoType(SrcCtrlChanInitInfoTypeData, DstCtrlChanInitInfoTypeData, CtrlCode, ErrStat, ErrMsg) @@ -988,155 +800,36 @@ subroutine StC_DestroyCtrlChanInitInfoType(CtrlChanInitInfoTypeData, ErrStat, Er end if end subroutine -subroutine StC_PackCtrlChanInitInfoType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_PackCtrlChanInitInfoType(RF, Indata) + type(RegFile), intent(inout) :: RF type(StC_CtrlChanInitInfoType), intent(in) :: InData character(*), parameter :: RoutineName = 'StC_PackCtrlChanInitInfoType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Requestor)) - if (allocated(InData%Requestor)) then - call RegPackBounds(Buf, 1, lbound(InData%Requestor, kind=B8Ki), ubound(InData%Requestor, kind=B8Ki)) - call RegPack(Buf, InData%Requestor) - end if - call RegPack(Buf, allocated(InData%InitStiff)) - if (allocated(InData%InitStiff)) then - call RegPackBounds(Buf, 2, lbound(InData%InitStiff, kind=B8Ki), ubound(InData%InitStiff, kind=B8Ki)) - call RegPack(Buf, InData%InitStiff) - end if - call RegPack(Buf, allocated(InData%InitDamp)) - if (allocated(InData%InitDamp)) then - call RegPackBounds(Buf, 2, lbound(InData%InitDamp, kind=B8Ki), ubound(InData%InitDamp, kind=B8Ki)) - call RegPack(Buf, InData%InitDamp) - end if - call RegPack(Buf, allocated(InData%InitBrake)) - if (allocated(InData%InitBrake)) then - call RegPackBounds(Buf, 2, lbound(InData%InitBrake, kind=B8Ki), ubound(InData%InitBrake, kind=B8Ki)) - call RegPack(Buf, InData%InitBrake) - end if - call RegPack(Buf, allocated(InData%InitForce)) - if (allocated(InData%InitForce)) then - call RegPackBounds(Buf, 2, lbound(InData%InitForce, kind=B8Ki), ubound(InData%InitForce, kind=B8Ki)) - call RegPack(Buf, InData%InitForce) - end if - call RegPack(Buf, allocated(InData%InitMeasDisp)) - if (allocated(InData%InitMeasDisp)) then - call RegPackBounds(Buf, 2, lbound(InData%InitMeasDisp, kind=B8Ki), ubound(InData%InitMeasDisp, kind=B8Ki)) - call RegPack(Buf, InData%InitMeasDisp) - end if - call RegPack(Buf, allocated(InData%InitMeasVel)) - if (allocated(InData%InitMeasVel)) then - call RegPackBounds(Buf, 2, lbound(InData%InitMeasVel, kind=B8Ki), ubound(InData%InitMeasVel, kind=B8Ki)) - call RegPack(Buf, InData%InitMeasVel) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%Requestor) + call RegPackAlloc(RF, InData%InitStiff) + call RegPackAlloc(RF, InData%InitDamp) + call RegPackAlloc(RF, InData%InitBrake) + call RegPackAlloc(RF, InData%InitForce) + call RegPackAlloc(RF, InData%InitMeasDisp) + call RegPackAlloc(RF, InData%InitMeasVel) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine StC_UnPackCtrlChanInitInfoType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_UnPackCtrlChanInitInfoType(RF, OutData) + type(RegFile), intent(inout) :: RF type(StC_CtrlChanInitInfoType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'StC_UnPackCtrlChanInitInfoType' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%Requestor)) deallocate(OutData%Requestor) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Requestor(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Requestor.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Requestor) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%InitStiff)) deallocate(OutData%InitStiff) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InitStiff(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InitStiff.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InitStiff) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%InitDamp)) deallocate(OutData%InitDamp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InitDamp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InitDamp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InitDamp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%InitBrake)) deallocate(OutData%InitBrake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InitBrake(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InitBrake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InitBrake) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%InitForce)) deallocate(OutData%InitForce) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InitForce(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InitForce.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InitForce) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%InitMeasDisp)) deallocate(OutData%InitMeasDisp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InitMeasDisp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InitMeasDisp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InitMeasDisp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%InitMeasVel)) deallocate(OutData%InitMeasVel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%InitMeasVel(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%InitMeasVel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%InitMeasVel) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%Requestor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%InitStiff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%InitDamp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%InitBrake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%InitForce); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%InitMeasDisp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%InitMeasVel); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine StC_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -1176,41 +869,24 @@ subroutine StC_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine StC_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(StC_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'StC_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%RelPosition)) - if (allocated(InData%RelPosition)) then - call RegPackBounds(Buf, 2, lbound(InData%RelPosition, kind=B8Ki), ubound(InData%RelPosition, kind=B8Ki)) - call RegPack(Buf, InData%RelPosition) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%RelPosition) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine StC_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(StC_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'StC_UnPackInitOutput' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%RelPosition)) deallocate(OutData%RelPosition) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RelPosition(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RelPosition.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RelPosition) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%RelPosition); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine StC_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -1250,41 +926,24 @@ subroutine StC_DestroyContState(ContStateData, ErrStat, ErrMsg) end if end subroutine -subroutine StC_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(StC_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'StC_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%StC_x)) - if (allocated(InData%StC_x)) then - call RegPackBounds(Buf, 2, lbound(InData%StC_x, kind=B8Ki), ubound(InData%StC_x, kind=B8Ki)) - call RegPack(Buf, InData%StC_x) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%StC_x) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine StC_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(StC_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'StC_UnPackContState' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%StC_x)) deallocate(OutData%StC_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StC_x(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StC_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StC_x) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%StC_x); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine StC_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -1308,22 +967,21 @@ subroutine StC_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine StC_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(StC_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'StC_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyDiscState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine StC_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(StC_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'StC_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyDiscState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine StC_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -1347,22 +1005,21 @@ subroutine StC_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine StC_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(StC_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'StC_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstrState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine StC_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(StC_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'StC_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstrState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine StC_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -1386,22 +1043,21 @@ subroutine StC_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine StC_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(StC_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'StC_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyOtherState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyOtherState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine StC_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(StC_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'StC_UnPackOtherState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyOtherState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyOtherState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine StC_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -1682,348 +1338,58 @@ subroutine StC_DestroyMisc(MiscData, ErrStat, ErrMsg) end if end subroutine -subroutine StC_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(StC_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'StC_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%F_stop)) - if (allocated(InData%F_stop)) then - call RegPackBounds(Buf, 2, lbound(InData%F_stop, kind=B8Ki), ubound(InData%F_stop, kind=B8Ki)) - call RegPack(Buf, InData%F_stop) - end if - call RegPack(Buf, allocated(InData%F_ext)) - if (allocated(InData%F_ext)) then - call RegPackBounds(Buf, 2, lbound(InData%F_ext, kind=B8Ki), ubound(InData%F_ext, kind=B8Ki)) - call RegPack(Buf, InData%F_ext) - end if - call RegPack(Buf, allocated(InData%F_fr)) - if (allocated(InData%F_fr)) then - call RegPackBounds(Buf, 2, lbound(InData%F_fr, kind=B8Ki), ubound(InData%F_fr, kind=B8Ki)) - call RegPack(Buf, InData%F_fr) - end if - call RegPack(Buf, allocated(InData%K)) - if (allocated(InData%K)) then - call RegPackBounds(Buf, 2, lbound(InData%K, kind=B8Ki), ubound(InData%K, kind=B8Ki)) - call RegPack(Buf, InData%K) - end if - call RegPack(Buf, allocated(InData%C_ctrl)) - if (allocated(InData%C_ctrl)) then - call RegPackBounds(Buf, 2, lbound(InData%C_ctrl, kind=B8Ki), ubound(InData%C_ctrl, kind=B8Ki)) - call RegPack(Buf, InData%C_ctrl) - end if - call RegPack(Buf, allocated(InData%C_Brake)) - if (allocated(InData%C_Brake)) then - call RegPackBounds(Buf, 2, lbound(InData%C_Brake, kind=B8Ki), ubound(InData%C_Brake, kind=B8Ki)) - call RegPack(Buf, InData%C_Brake) - end if - call RegPack(Buf, allocated(InData%F_table)) - if (allocated(InData%F_table)) then - call RegPackBounds(Buf, 2, lbound(InData%F_table, kind=B8Ki), ubound(InData%F_table, kind=B8Ki)) - call RegPack(Buf, InData%F_table) - end if - call RegPack(Buf, allocated(InData%F_k)) - if (allocated(InData%F_k)) then - call RegPackBounds(Buf, 2, lbound(InData%F_k, kind=B8Ki), ubound(InData%F_k, kind=B8Ki)) - call RegPack(Buf, InData%F_k) - end if - call RegPack(Buf, allocated(InData%a_G)) - if (allocated(InData%a_G)) then - call RegPackBounds(Buf, 2, lbound(InData%a_G, kind=B8Ki), ubound(InData%a_G, kind=B8Ki)) - call RegPack(Buf, InData%a_G) - end if - call RegPack(Buf, allocated(InData%rdisp_P)) - if (allocated(InData%rdisp_P)) then - call RegPackBounds(Buf, 2, lbound(InData%rdisp_P, kind=B8Ki), ubound(InData%rdisp_P, kind=B8Ki)) - call RegPack(Buf, InData%rdisp_P) - end if - call RegPack(Buf, allocated(InData%rdot_P)) - if (allocated(InData%rdot_P)) then - call RegPackBounds(Buf, 2, lbound(InData%rdot_P, kind=B8Ki), ubound(InData%rdot_P, kind=B8Ki)) - call RegPack(Buf, InData%rdot_P) - end if - call RegPack(Buf, allocated(InData%rddot_P)) - if (allocated(InData%rddot_P)) then - call RegPackBounds(Buf, 2, lbound(InData%rddot_P, kind=B8Ki), ubound(InData%rddot_P, kind=B8Ki)) - call RegPack(Buf, InData%rddot_P) - end if - call RegPack(Buf, allocated(InData%omega_P)) - if (allocated(InData%omega_P)) then - call RegPackBounds(Buf, 2, lbound(InData%omega_P, kind=B8Ki), ubound(InData%omega_P, kind=B8Ki)) - call RegPack(Buf, InData%omega_P) - end if - call RegPack(Buf, allocated(InData%alpha_P)) - if (allocated(InData%alpha_P)) then - call RegPackBounds(Buf, 2, lbound(InData%alpha_P, kind=B8Ki), ubound(InData%alpha_P, kind=B8Ki)) - call RegPack(Buf, InData%alpha_P) - end if - call RegPack(Buf, allocated(InData%F_P)) - if (allocated(InData%F_P)) then - call RegPackBounds(Buf, 2, lbound(InData%F_P, kind=B8Ki), ubound(InData%F_P, kind=B8Ki)) - call RegPack(Buf, InData%F_P) - end if - call RegPack(Buf, allocated(InData%M_P)) - if (allocated(InData%M_P)) then - call RegPackBounds(Buf, 2, lbound(InData%M_P, kind=B8Ki), ubound(InData%M_P, kind=B8Ki)) - call RegPack(Buf, InData%M_P) - end if - call RegPack(Buf, allocated(InData%Acc)) - if (allocated(InData%Acc)) then - call RegPackBounds(Buf, 2, lbound(InData%Acc, kind=B8Ki), ubound(InData%Acc, kind=B8Ki)) - call RegPack(Buf, InData%Acc) - end if - call RegPack(Buf, InData%PrescribedInterpIdx) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%F_stop) + call RegPackAlloc(RF, InData%F_ext) + call RegPackAlloc(RF, InData%F_fr) + call RegPackAlloc(RF, InData%K) + call RegPackAlloc(RF, InData%C_ctrl) + call RegPackAlloc(RF, InData%C_Brake) + call RegPackAlloc(RF, InData%F_table) + call RegPackAlloc(RF, InData%F_k) + call RegPackAlloc(RF, InData%a_G) + call RegPackAlloc(RF, InData%rdisp_P) + call RegPackAlloc(RF, InData%rdot_P) + call RegPackAlloc(RF, InData%rddot_P) + call RegPackAlloc(RF, InData%omega_P) + call RegPackAlloc(RF, InData%alpha_P) + call RegPackAlloc(RF, InData%F_P) + call RegPackAlloc(RF, InData%M_P) + call RegPackAlloc(RF, InData%Acc) + call RegPack(RF, InData%PrescribedInterpIdx) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine StC_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(StC_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'StC_UnPackMisc' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%F_stop)) deallocate(OutData%F_stop) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_stop(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_stop.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_stop) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_ext)) deallocate(OutData%F_ext) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_ext(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_ext.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_ext) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_fr)) deallocate(OutData%F_fr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_fr(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_fr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_fr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%K)) deallocate(OutData%K) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%K(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%K.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%K) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%C_ctrl)) deallocate(OutData%C_ctrl) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%C_ctrl(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%C_ctrl.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%C_ctrl) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%C_Brake)) deallocate(OutData%C_Brake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%C_Brake(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%C_Brake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%C_Brake) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_table)) deallocate(OutData%F_table) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_table(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_table.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_table) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_k)) deallocate(OutData%F_k) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_k(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_k.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_k) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%a_G)) deallocate(OutData%a_G) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%a_G(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%a_G.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%a_G) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rdisp_P)) deallocate(OutData%rdisp_P) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rdisp_P(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rdisp_P.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rdisp_P) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rdot_P)) deallocate(OutData%rdot_P) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rdot_P(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rdot_P.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rdot_P) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%rddot_P)) deallocate(OutData%rddot_P) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%rddot_P(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%rddot_P.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%rddot_P) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%omega_P)) deallocate(OutData%omega_P) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%omega_P(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%omega_P.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%omega_P) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%alpha_P)) deallocate(OutData%alpha_P) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%alpha_P(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%alpha_P.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%alpha_P) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_P)) deallocate(OutData%F_P) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_P(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_P.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_P) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%M_P)) deallocate(OutData%M_P) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%M_P(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%M_P.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%M_P) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Acc)) deallocate(OutData%Acc) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Acc(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Acc.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Acc) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%PrescribedInterpIdx) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%F_stop); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_ext); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_fr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%K); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%C_ctrl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%C_Brake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_table); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_k); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%a_G); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rdisp_P); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rdot_P); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%rddot_P); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%omega_P); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%alpha_P); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_P); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%M_P); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Acc); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PrescribedInterpIdx); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine StC_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -2141,223 +1507,124 @@ subroutine StC_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine StC_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(StC_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'StC_PackParam' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DT) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, InData%StC_DOF_MODE) - call RegPack(Buf, InData%StC_X_DOF) - call RegPack(Buf, InData%StC_Y_DOF) - call RegPack(Buf, InData%StC_Z_DOF) - call RegPack(Buf, InData%StC_Z_PreLd) - call RegPack(Buf, InData%M_X) - call RegPack(Buf, InData%M_Y) - call RegPack(Buf, InData%M_Z) - call RegPack(Buf, InData%M_XY) - call RegPack(Buf, InData%K_X) - call RegPack(Buf, InData%K_Y) - call RegPack(Buf, InData%K_Z) - call RegPack(Buf, InData%C_X) - call RegPack(Buf, InData%C_Y) - call RegPack(Buf, InData%C_Z) - call RegPack(Buf, InData%K_S) - call RegPack(Buf, InData%C_S) - call RegPack(Buf, InData%P_SP) - call RegPack(Buf, InData%N_SP) - call RegPack(Buf, InData%Gravity) - call RegPack(Buf, InData%StC_CMODE) - call RegPack(Buf, InData%StC_SA_MODE) - call RegPack(Buf, InData%StC_X_C_HIGH) - call RegPack(Buf, InData%StC_X_C_LOW) - call RegPack(Buf, InData%StC_Y_C_HIGH) - call RegPack(Buf, InData%StC_Y_C_LOW) - call RegPack(Buf, InData%StC_Z_C_HIGH) - call RegPack(Buf, InData%StC_Z_C_LOW) - call RegPack(Buf, InData%StC_X_C_BRAKE) - call RegPack(Buf, InData%StC_Y_C_BRAKE) - call RegPack(Buf, InData%StC_Z_C_BRAKE) - call RegPack(Buf, InData%L_X) - call RegPack(Buf, InData%B_X) - call RegPack(Buf, InData%area_X) - call RegPack(Buf, InData%area_ratio_X) - call RegPack(Buf, InData%headLossCoeff_X) - call RegPack(Buf, InData%rho_X) - call RegPack(Buf, InData%L_Y) - call RegPack(Buf, InData%B_Y) - call RegPack(Buf, InData%area_Y) - call RegPack(Buf, InData%area_ratio_Y) - call RegPack(Buf, InData%headLossCoeff_Y) - call RegPack(Buf, InData%rho_Y) - call RegPack(Buf, InData%Use_F_TBL) - call RegPack(Buf, allocated(InData%F_TBL)) - if (allocated(InData%F_TBL)) then - call RegPackBounds(Buf, 2, lbound(InData%F_TBL, kind=B8Ki), ubound(InData%F_TBL, kind=B8Ki)) - call RegPack(Buf, InData%F_TBL) - end if - call RegPack(Buf, InData%NumMeshPts) - call RegPack(Buf, InData%PrescribedForcesCoordSys) - call RegPack(Buf, allocated(InData%StC_PrescribedForce)) - if (allocated(InData%StC_PrescribedForce)) then - call RegPackBounds(Buf, 2, lbound(InData%StC_PrescribedForce, kind=B8Ki), ubound(InData%StC_PrescribedForce, kind=B8Ki)) - call RegPack(Buf, InData%StC_PrescribedForce) - end if - call RegPack(Buf, allocated(InData%StC_CChan)) - if (allocated(InData%StC_CChan)) then - call RegPackBounds(Buf, 1, lbound(InData%StC_CChan, kind=B8Ki), ubound(InData%StC_CChan, kind=B8Ki)) - call RegPack(Buf, InData%StC_CChan) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DT) + call RegPack(RF, InData%RootName) + call RegPack(RF, InData%StC_DOF_MODE) + call RegPack(RF, InData%StC_X_DOF) + call RegPack(RF, InData%StC_Y_DOF) + call RegPack(RF, InData%StC_Z_DOF) + call RegPack(RF, InData%StC_Z_PreLd) + call RegPack(RF, InData%M_X) + call RegPack(RF, InData%M_Y) + call RegPack(RF, InData%M_Z) + call RegPack(RF, InData%M_XY) + call RegPack(RF, InData%K_X) + call RegPack(RF, InData%K_Y) + call RegPack(RF, InData%K_Z) + call RegPack(RF, InData%C_X) + call RegPack(RF, InData%C_Y) + call RegPack(RF, InData%C_Z) + call RegPack(RF, InData%K_S) + call RegPack(RF, InData%C_S) + call RegPack(RF, InData%P_SP) + call RegPack(RF, InData%N_SP) + call RegPack(RF, InData%Gravity) + call RegPack(RF, InData%StC_CMODE) + call RegPack(RF, InData%StC_SA_MODE) + call RegPack(RF, InData%StC_X_C_HIGH) + call RegPack(RF, InData%StC_X_C_LOW) + call RegPack(RF, InData%StC_Y_C_HIGH) + call RegPack(RF, InData%StC_Y_C_LOW) + call RegPack(RF, InData%StC_Z_C_HIGH) + call RegPack(RF, InData%StC_Z_C_LOW) + call RegPack(RF, InData%StC_X_C_BRAKE) + call RegPack(RF, InData%StC_Y_C_BRAKE) + call RegPack(RF, InData%StC_Z_C_BRAKE) + call RegPack(RF, InData%L_X) + call RegPack(RF, InData%B_X) + call RegPack(RF, InData%area_X) + call RegPack(RF, InData%area_ratio_X) + call RegPack(RF, InData%headLossCoeff_X) + call RegPack(RF, InData%rho_X) + call RegPack(RF, InData%L_Y) + call RegPack(RF, InData%B_Y) + call RegPack(RF, InData%area_Y) + call RegPack(RF, InData%area_ratio_Y) + call RegPack(RF, InData%headLossCoeff_Y) + call RegPack(RF, InData%rho_Y) + call RegPack(RF, InData%Use_F_TBL) + call RegPackAlloc(RF, InData%F_TBL) + call RegPack(RF, InData%NumMeshPts) + call RegPack(RF, InData%PrescribedForcesCoordSys) + call RegPackAlloc(RF, InData%StC_PrescribedForce) + call RegPackAlloc(RF, InData%StC_CChan) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine StC_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(StC_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'StC_UnPackParam' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_DOF_MODE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_X_DOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Y_DOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_DOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_PreLd) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%M_X) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%M_Y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%M_Z) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%M_XY) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%K_X) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%K_Y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%K_Z) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_X) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_Y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_Z) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%K_S) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_S) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%P_SP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%N_SP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Gravity) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_CMODE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_SA_MODE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_X_C_HIGH) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_X_C_LOW) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Y_C_HIGH) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Y_C_LOW) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_C_HIGH) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_C_LOW) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_X_C_BRAKE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Y_C_BRAKE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%StC_Z_C_BRAKE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%L_X) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%B_X) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%area_X) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%area_ratio_X) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%headLossCoeff_X) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rho_X) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%L_Y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%B_Y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%area_Y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%area_ratio_Y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%headLossCoeff_Y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%rho_Y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Use_F_TBL) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%F_TBL)) deallocate(OutData%F_TBL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_TBL(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_TBL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_TBL) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NumMeshPts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%PrescribedForcesCoordSys) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%StC_PrescribedForce)) deallocate(OutData%StC_PrescribedForce) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StC_PrescribedForce(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StC_PrescribedForce.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StC_PrescribedForce) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%StC_CChan)) deallocate(OutData%StC_CChan) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%StC_CChan(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%StC_CChan.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%StC_CChan) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_DOF_MODE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_X_DOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Y_DOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_DOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_PreLd); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%M_X); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%M_Y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%M_Z); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%M_XY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%K_X); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%K_Y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%K_Z); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_X); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_Y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_Z); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%K_S); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_S); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%P_SP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%N_SP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Gravity); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_CMODE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_SA_MODE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_X_C_HIGH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_X_C_LOW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Y_C_HIGH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Y_C_LOW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_C_HIGH); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_C_LOW); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_X_C_BRAKE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Y_C_BRAKE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%StC_Z_C_BRAKE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%L_X); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%B_X); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%area_X); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%area_ratio_X); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%headLossCoeff_X); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rho_X); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%L_Y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%B_Y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%area_Y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%area_ratio_Y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%headLossCoeff_Y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%rho_Y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Use_F_TBL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_TBL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumMeshPts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%PrescribedForcesCoordSys); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StC_PrescribedForce); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%StC_CChan); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine StC_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -2473,125 +1740,55 @@ subroutine StC_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine StC_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(StC_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'StC_PackInput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Mesh)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%Mesh)) if (allocated(InData%Mesh)) then - call RegPackBounds(Buf, 1, lbound(InData%Mesh, kind=B8Ki), ubound(InData%Mesh, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Mesh, kind=B8Ki), ubound(InData%Mesh, kind=B8Ki)) LB(1:1) = lbound(InData%Mesh, kind=B8Ki) UB(1:1) = ubound(InData%Mesh, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%Mesh(i1)) + call MeshPack(RF, InData%Mesh(i1)) end do end if - call RegPack(Buf, allocated(InData%CmdStiff)) - if (allocated(InData%CmdStiff)) then - call RegPackBounds(Buf, 2, lbound(InData%CmdStiff, kind=B8Ki), ubound(InData%CmdStiff, kind=B8Ki)) - call RegPack(Buf, InData%CmdStiff) - end if - call RegPack(Buf, allocated(InData%CmdDamp)) - if (allocated(InData%CmdDamp)) then - call RegPackBounds(Buf, 2, lbound(InData%CmdDamp, kind=B8Ki), ubound(InData%CmdDamp, kind=B8Ki)) - call RegPack(Buf, InData%CmdDamp) - end if - call RegPack(Buf, allocated(InData%CmdBrake)) - if (allocated(InData%CmdBrake)) then - call RegPackBounds(Buf, 2, lbound(InData%CmdBrake, kind=B8Ki), ubound(InData%CmdBrake, kind=B8Ki)) - call RegPack(Buf, InData%CmdBrake) - end if - call RegPack(Buf, allocated(InData%CmdForce)) - if (allocated(InData%CmdForce)) then - call RegPackBounds(Buf, 2, lbound(InData%CmdForce, kind=B8Ki), ubound(InData%CmdForce, kind=B8Ki)) - call RegPack(Buf, InData%CmdForce) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%CmdStiff) + call RegPackAlloc(RF, InData%CmdDamp) + call RegPackAlloc(RF, InData%CmdBrake) + call RegPackAlloc(RF, InData%CmdForce) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine StC_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(StC_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'StC_UnPackInput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%Mesh)) deallocate(OutData%Mesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Mesh(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Mesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Mesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%Mesh(i1)) ! Mesh + call MeshUnpack(RF, OutData%Mesh(i1)) ! Mesh end do end if - if (allocated(OutData%CmdStiff)) deallocate(OutData%CmdStiff) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CmdStiff(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CmdStiff.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CmdStiff) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CmdDamp)) deallocate(OutData%CmdDamp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CmdDamp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CmdDamp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CmdDamp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CmdBrake)) deallocate(OutData%CmdBrake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CmdBrake(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CmdBrake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CmdBrake) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CmdForce)) deallocate(OutData%CmdForce) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CmdForce(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CmdForce.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CmdForce) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%CmdStiff); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CmdDamp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CmdBrake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CmdForce); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine StC_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -2677,87 +1874,51 @@ subroutine StC_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine StC_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(StC_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'StC_PackOutput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%Mesh)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%Mesh)) if (allocated(InData%Mesh)) then - call RegPackBounds(Buf, 1, lbound(InData%Mesh, kind=B8Ki), ubound(InData%Mesh, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%Mesh, kind=B8Ki), ubound(InData%Mesh, kind=B8Ki)) LB(1:1) = lbound(InData%Mesh, kind=B8Ki) UB(1:1) = ubound(InData%Mesh, kind=B8Ki) do i1 = LB(1), UB(1) - call MeshPack(Buf, InData%Mesh(i1)) + call MeshPack(RF, InData%Mesh(i1)) end do end if - call RegPack(Buf, allocated(InData%MeasDisp)) - if (allocated(InData%MeasDisp)) then - call RegPackBounds(Buf, 2, lbound(InData%MeasDisp, kind=B8Ki), ubound(InData%MeasDisp, kind=B8Ki)) - call RegPack(Buf, InData%MeasDisp) - end if - call RegPack(Buf, allocated(InData%MeasVel)) - if (allocated(InData%MeasVel)) then - call RegPackBounds(Buf, 2, lbound(InData%MeasVel, kind=B8Ki), ubound(InData%MeasVel, kind=B8Ki)) - call RegPack(Buf, InData%MeasVel) - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackAlloc(RF, InData%MeasDisp) + call RegPackAlloc(RF, InData%MeasVel) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine StC_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine StC_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(StC_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'StC_UnPackOutput' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%Mesh)) deallocate(OutData%Mesh) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%Mesh(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Mesh.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Mesh.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call MeshUnpack(Buf, OutData%Mesh(i1)) ! Mesh + call MeshUnpack(RF, OutData%Mesh(i1)) ! Mesh end do end if - if (allocated(OutData%MeasDisp)) deallocate(OutData%MeasDisp) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MeasDisp(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MeasDisp.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MeasDisp) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MeasVel)) deallocate(OutData%MeasVel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MeasVel(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MeasVel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MeasVel) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%MeasDisp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MeasVel); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine StC_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/subdyn/src/SubDyn_Types.f90 b/modules/subdyn/src/SubDyn_Types.f90 index f8f683f430..9ad5e7668a 100644 --- a/modules/subdyn/src/SubDyn_Types.f90 +++ b/modules/subdyn/src/SubDyn_Types.f90 @@ -380,41 +380,24 @@ subroutine SD_DestroyIList(IListData, ErrStat, ErrMsg) end if end subroutine -subroutine SD_PackIList(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_PackIList(RF, Indata) + type(RegFile), intent(inout) :: RF type(IList), intent(in) :: InData character(*), parameter :: RoutineName = 'SD_PackIList' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%List)) - if (allocated(InData%List)) then - call RegPackBounds(Buf, 1, lbound(InData%List, kind=B8Ki), ubound(InData%List, kind=B8Ki)) - call RegPack(Buf, InData%List) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%List) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SD_UnPackIList(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_UnPackIList(RF, OutData) + type(RegFile), intent(inout) :: RF type(IList), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SD_UnPackIList' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%List)) deallocate(OutData%List) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%List(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%List.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%List) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%List); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SD_CopyMeshAuxDataType(SrcMeshAuxDataTypeData, DstMeshAuxDataTypeData, CtrlCode, ErrStat, ErrMsg) @@ -546,161 +529,40 @@ subroutine SD_DestroyMeshAuxDataType(MeshAuxDataTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine SD_PackMeshAuxDataType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_PackMeshAuxDataType(RF, Indata) + type(RegFile), intent(inout) :: RF type(MeshAuxDataType), intent(in) :: InData character(*), parameter :: RoutineName = 'SD_PackMeshAuxDataType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%MemberID) - call RegPack(Buf, InData%NOutCnt) - call RegPack(Buf, allocated(InData%NodeCnt)) - if (allocated(InData%NodeCnt)) then - call RegPackBounds(Buf, 1, lbound(InData%NodeCnt, kind=B8Ki), ubound(InData%NodeCnt, kind=B8Ki)) - call RegPack(Buf, InData%NodeCnt) - end if - call RegPack(Buf, allocated(InData%NodeIDs)) - if (allocated(InData%NodeIDs)) then - call RegPackBounds(Buf, 1, lbound(InData%NodeIDs, kind=B8Ki), ubound(InData%NodeIDs, kind=B8Ki)) - call RegPack(Buf, InData%NodeIDs) - end if - call RegPack(Buf, allocated(InData%ElmIDs)) - if (allocated(InData%ElmIDs)) then - call RegPackBounds(Buf, 2, lbound(InData%ElmIDs, kind=B8Ki), ubound(InData%ElmIDs, kind=B8Ki)) - call RegPack(Buf, InData%ElmIDs) - end if - call RegPack(Buf, allocated(InData%ElmNds)) - if (allocated(InData%ElmNds)) then - call RegPackBounds(Buf, 2, lbound(InData%ElmNds, kind=B8Ki), ubound(InData%ElmNds, kind=B8Ki)) - call RegPack(Buf, InData%ElmNds) - end if - call RegPack(Buf, allocated(InData%Me)) - if (allocated(InData%Me)) then - call RegPackBounds(Buf, 4, lbound(InData%Me, kind=B8Ki), ubound(InData%Me, kind=B8Ki)) - call RegPack(Buf, InData%Me) - end if - call RegPack(Buf, allocated(InData%Ke)) - if (allocated(InData%Ke)) then - call RegPackBounds(Buf, 4, lbound(InData%Ke, kind=B8Ki), ubound(InData%Ke, kind=B8Ki)) - call RegPack(Buf, InData%Ke) - end if - call RegPack(Buf, allocated(InData%Fg)) - if (allocated(InData%Fg)) then - call RegPackBounds(Buf, 3, lbound(InData%Fg, kind=B8Ki), ubound(InData%Fg, kind=B8Ki)) - call RegPack(Buf, InData%Fg) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%MemberID) + call RegPack(RF, InData%NOutCnt) + call RegPackAlloc(RF, InData%NodeCnt) + call RegPackAlloc(RF, InData%NodeIDs) + call RegPackAlloc(RF, InData%ElmIDs) + call RegPackAlloc(RF, InData%ElmNds) + call RegPackAlloc(RF, InData%Me) + call RegPackAlloc(RF, InData%Ke) + call RegPackAlloc(RF, InData%Fg) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SD_UnPackMeshAuxDataType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_UnPackMeshAuxDataType(RF, OutData) + type(RegFile), intent(inout) :: RF type(MeshAuxDataType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SD_UnPackMeshAuxDataType' integer(B8Ki) :: LB(4), UB(4) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%MemberID) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NOutCnt) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%NodeCnt)) deallocate(OutData%NodeCnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NodeCnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NodeCnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NodeCnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%NodeIDs)) deallocate(OutData%NodeIDs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NodeIDs(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NodeIDs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NodeIDs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ElmIDs)) deallocate(OutData%ElmIDs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ElmIDs(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ElmIDs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ElmIDs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ElmNds)) deallocate(OutData%ElmNds) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ElmNds(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ElmNds.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ElmNds) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Me)) deallocate(OutData%Me) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Me(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Me.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Me) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Ke)) deallocate(OutData%Ke) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 4, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Ke(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Ke.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Ke) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Fg)) deallocate(OutData%Fg) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Fg(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fg.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Fg) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%MemberID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NOutCnt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NodeCnt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NodeIDs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ElmIDs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ElmNds); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Me); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Ke); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Fg); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SD_CopyCB_MatArrays(SrcCB_MatArraysData, DstCB_MatArraysData, CtrlCode, ErrStat, ErrMsg) @@ -815,136 +677,34 @@ subroutine SD_DestroyCB_MatArrays(CB_MatArraysData, ErrStat, ErrMsg) end if end subroutine -subroutine SD_PackCB_MatArrays(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_PackCB_MatArrays(RF, Indata) + type(RegFile), intent(inout) :: RF type(CB_MatArrays), intent(in) :: InData character(*), parameter :: RoutineName = 'SD_PackCB_MatArrays' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%MBB)) - if (allocated(InData%MBB)) then - call RegPackBounds(Buf, 2, lbound(InData%MBB, kind=B8Ki), ubound(InData%MBB, kind=B8Ki)) - call RegPack(Buf, InData%MBB) - end if - call RegPack(Buf, allocated(InData%MBM)) - if (allocated(InData%MBM)) then - call RegPackBounds(Buf, 2, lbound(InData%MBM, kind=B8Ki), ubound(InData%MBM, kind=B8Ki)) - call RegPack(Buf, InData%MBM) - end if - call RegPack(Buf, allocated(InData%KBB)) - if (allocated(InData%KBB)) then - call RegPackBounds(Buf, 2, lbound(InData%KBB, kind=B8Ki), ubound(InData%KBB, kind=B8Ki)) - call RegPack(Buf, InData%KBB) - end if - call RegPack(Buf, allocated(InData%PhiL)) - if (allocated(InData%PhiL)) then - call RegPackBounds(Buf, 2, lbound(InData%PhiL, kind=B8Ki), ubound(InData%PhiL, kind=B8Ki)) - call RegPack(Buf, InData%PhiL) - end if - call RegPack(Buf, allocated(InData%PhiR)) - if (allocated(InData%PhiR)) then - call RegPackBounds(Buf, 2, lbound(InData%PhiR, kind=B8Ki), ubound(InData%PhiR, kind=B8Ki)) - call RegPack(Buf, InData%PhiR) - end if - call RegPack(Buf, allocated(InData%OmegaL)) - if (allocated(InData%OmegaL)) then - call RegPackBounds(Buf, 1, lbound(InData%OmegaL, kind=B8Ki), ubound(InData%OmegaL, kind=B8Ki)) - call RegPack(Buf, InData%OmegaL) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%MBB) + call RegPackAlloc(RF, InData%MBM) + call RegPackAlloc(RF, InData%KBB) + call RegPackAlloc(RF, InData%PhiL) + call RegPackAlloc(RF, InData%PhiR) + call RegPackAlloc(RF, InData%OmegaL) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SD_UnPackCB_MatArrays(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_UnPackCB_MatArrays(RF, OutData) + type(RegFile), intent(inout) :: RF type(CB_MatArrays), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SD_UnPackCB_MatArrays' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%MBB)) deallocate(OutData%MBB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MBB(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MBB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MBB) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MBM)) deallocate(OutData%MBM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MBM(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MBM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MBM) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%KBB)) deallocate(OutData%KBB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%KBB(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%KBB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%KBB) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PhiL)) deallocate(OutData%PhiL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PhiL(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PhiL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PhiL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PhiR)) deallocate(OutData%PhiR) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PhiR(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PhiR.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PhiR) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%OmegaL)) deallocate(OutData%OmegaL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%OmegaL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OmegaL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%OmegaL) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%MBB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MBM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%KBB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PhiL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PhiR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%OmegaL); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SD_CopyElemPropType(SrcElemPropTypeData, DstElemPropTypeData, CtrlCode, ErrStat, ErrMsg) @@ -982,64 +742,49 @@ subroutine SD_DestroyElemPropType(ElemPropTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SD_PackElemPropType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_PackElemPropType(RF, Indata) + type(RegFile), intent(inout) :: RF type(ElemPropType), intent(in) :: InData character(*), parameter :: RoutineName = 'SD_PackElemPropType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%eType) - call RegPack(Buf, InData%Length) - call RegPack(Buf, InData%Ixx) - call RegPack(Buf, InData%Iyy) - call RegPack(Buf, InData%Jzz) - call RegPack(Buf, InData%Shear) - call RegPack(Buf, InData%Kappa_x) - call RegPack(Buf, InData%Kappa_y) - call RegPack(Buf, InData%YoungE) - call RegPack(Buf, InData%ShearG) - call RegPack(Buf, InData%D) - call RegPack(Buf, InData%Area) - call RegPack(Buf, InData%Rho) - call RegPack(Buf, InData%T0) - call RegPack(Buf, InData%DirCos) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%eType) + call RegPack(RF, InData%Length) + call RegPack(RF, InData%Ixx) + call RegPack(RF, InData%Iyy) + call RegPack(RF, InData%Jzz) + call RegPack(RF, InData%Shear) + call RegPack(RF, InData%Kappa_x) + call RegPack(RF, InData%Kappa_y) + call RegPack(RF, InData%YoungE) + call RegPack(RF, InData%ShearG) + call RegPack(RF, InData%D) + call RegPack(RF, InData%Area) + call RegPack(RF, InData%Rho) + call RegPack(RF, InData%T0) + call RegPack(RF, InData%DirCos) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SD_UnPackElemPropType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_UnPackElemPropType(RF, OutData) + type(RegFile), intent(inout) :: RF type(ElemPropType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SD_UnPackElemPropType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%eType) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Length) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Ixx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Iyy) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Jzz) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Shear) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Kappa_x) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Kappa_y) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YoungE) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%ShearG) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%D) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Area) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Rho) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%T0) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DirCos) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%eType); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Length); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ixx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Iyy); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Jzz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Shear); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Kappa_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Kappa_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YoungE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%ShearG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%D); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Area); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Rho); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%T0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DirCos); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SD_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -1094,64 +839,40 @@ subroutine SD_DestroyInitInput(InitInputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine SD_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SD_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SD_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%SDInputFile) - call RegPack(Buf, InData%RootName) - call RegPack(Buf, InData%g) - call RegPack(Buf, InData%WtrDpth) - call RegPack(Buf, InData%TP_RefPoint) - call RegPack(Buf, InData%SubRotateZ) - call RegPack(Buf, allocated(InData%SoilStiffness)) - if (allocated(InData%SoilStiffness)) then - call RegPackBounds(Buf, 3, lbound(InData%SoilStiffness, kind=B8Ki), ubound(InData%SoilStiffness, kind=B8Ki)) - call RegPack(Buf, InData%SoilStiffness) - end if - call MeshPack(Buf, InData%SoilMesh) - call RegPack(Buf, InData%Linearize) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%SDInputFile) + call RegPack(RF, InData%RootName) + call RegPack(RF, InData%g) + call RegPack(RF, InData%WtrDpth) + call RegPack(RF, InData%TP_RefPoint) + call RegPack(RF, InData%SubRotateZ) + call RegPackAlloc(RF, InData%SoilStiffness) + call MeshPack(RF, InData%SoilMesh) + call RegPack(RF, InData%Linearize) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SD_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SD_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SD_UnPackInitInput' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%SDInputFile) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%g) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WtrDpth) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TP_RefPoint) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SubRotateZ) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%SoilStiffness)) deallocate(OutData%SoilStiffness) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SoilStiffness(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SoilStiffness.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SoilStiffness) - if (RegCheckErr(Buf, RoutineName)) return - end if - call MeshUnpack(Buf, OutData%SoilMesh) ! SoilMesh - call RegUnpack(Buf, OutData%Linearize) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%SDInputFile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%g); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WtrDpth); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TP_RefPoint); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SubRotateZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SoilStiffness); if (RegCheckErr(RF, RoutineName)) return + call MeshUnpack(RF, OutData%SoilMesh) ! SoilMesh + call RegUnpack(RF, OutData%Linearize); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SD_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -1349,233 +1070,46 @@ subroutine SD_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) end if end subroutine -subroutine SD_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SD_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SD_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call RegPack(Buf, allocated(InData%LinNames_y)) - if (allocated(InData%LinNames_y)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_y, kind=B8Ki), ubound(InData%LinNames_y, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_y) - end if - call RegPack(Buf, allocated(InData%LinNames_x)) - if (allocated(InData%LinNames_x)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_x, kind=B8Ki), ubound(InData%LinNames_x, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_x) - end if - call RegPack(Buf, allocated(InData%LinNames_u)) - if (allocated(InData%LinNames_u)) then - call RegPackBounds(Buf, 1, lbound(InData%LinNames_u, kind=B8Ki), ubound(InData%LinNames_u, kind=B8Ki)) - call RegPack(Buf, InData%LinNames_u) - end if - call RegPack(Buf, allocated(InData%RotFrame_y)) - if (allocated(InData%RotFrame_y)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_y, kind=B8Ki), ubound(InData%RotFrame_y, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_y) - end if - call RegPack(Buf, allocated(InData%RotFrame_x)) - if (allocated(InData%RotFrame_x)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_x, kind=B8Ki), ubound(InData%RotFrame_x, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_x) - end if - call RegPack(Buf, allocated(InData%RotFrame_u)) - if (allocated(InData%RotFrame_u)) then - call RegPackBounds(Buf, 1, lbound(InData%RotFrame_u, kind=B8Ki), ubound(InData%RotFrame_u, kind=B8Ki)) - call RegPack(Buf, InData%RotFrame_u) - end if - call RegPack(Buf, allocated(InData%IsLoad_u)) - if (allocated(InData%IsLoad_u)) then - call RegPackBounds(Buf, 1, lbound(InData%IsLoad_u, kind=B8Ki), ubound(InData%IsLoad_u, kind=B8Ki)) - call RegPack(Buf, InData%IsLoad_u) - end if - call RegPack(Buf, allocated(InData%DerivOrder_x)) - if (allocated(InData%DerivOrder_x)) then - call RegPackBounds(Buf, 1, lbound(InData%DerivOrder_x, kind=B8Ki), ubound(InData%DerivOrder_x, kind=B8Ki)) - call RegPack(Buf, InData%DerivOrder_x) - end if - call RegPack(Buf, allocated(InData%CableCChanRqst)) - if (allocated(InData%CableCChanRqst)) then - call RegPackBounds(Buf, 1, lbound(InData%CableCChanRqst, kind=B8Ki), ubound(InData%CableCChanRqst, kind=B8Ki)) - call RegPack(Buf, InData%CableCChanRqst) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call RegPackAlloc(RF, InData%LinNames_y) + call RegPackAlloc(RF, InData%LinNames_x) + call RegPackAlloc(RF, InData%LinNames_u) + call RegPackAlloc(RF, InData%RotFrame_y) + call RegPackAlloc(RF, InData%RotFrame_x) + call RegPackAlloc(RF, InData%RotFrame_u) + call RegPackAlloc(RF, InData%IsLoad_u) + call RegPackAlloc(RF, InData%DerivOrder_x) + call RegPackAlloc(RF, InData%CableCChanRqst) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SD_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SD_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SD_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver - if (allocated(OutData%LinNames_y)) deallocate(OutData%LinNames_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_x)) deallocate(OutData%LinNames_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%LinNames_u)) deallocate(OutData%LinNames_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%LinNames_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%LinNames_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%LinNames_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_y)) deallocate(OutData%RotFrame_y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_x)) deallocate(OutData%RotFrame_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%RotFrame_u)) deallocate(OutData%RotFrame_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%RotFrame_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%RotFrame_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%RotFrame_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IsLoad_u)) deallocate(OutData%IsLoad_u) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IsLoad_u(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IsLoad_u.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IsLoad_u) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DerivOrder_x)) deallocate(OutData%DerivOrder_x) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DerivOrder_x(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DerivOrder_x.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DerivOrder_x) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CableCChanRqst)) deallocate(OutData%CableCChanRqst) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CableCChanRqst(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CableCChanRqst.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CableCChanRqst) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver + call RegUnpackAlloc(RF, OutData%LinNames_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%LinNames_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%RotFrame_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IsLoad_u); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DerivOrder_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CableCChanRqst); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SD_CopyInitType(SrcInitTypeData, DstInitTypeData, CtrlCode, ErrStat, ErrMsg) @@ -2015,699 +1549,198 @@ subroutine SD_DestroyInitType(InitTypeData, ErrStat, ErrMsg) end if end subroutine -subroutine SD_PackInitType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_PackInitType(RF, Indata) + type(RegFile), intent(inout) :: RF type(SD_InitType), intent(in) :: InData character(*), parameter :: RoutineName = 'SD_PackInitType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%RootName) - call RegPack(Buf, InData%TP_RefPoint) - call RegPack(Buf, InData%SubRotateZ) - call RegPack(Buf, InData%g) - call RegPack(Buf, InData%DT) - call RegPack(Buf, InData%NJoints) - call RegPack(Buf, InData%NPropSetsX) - call RegPack(Buf, InData%NPropSetsB) - call RegPack(Buf, InData%NPropSetsC) - call RegPack(Buf, InData%NPropSetsR) - call RegPack(Buf, InData%NCMass) - call RegPack(Buf, InData%NCOSMs) - call RegPack(Buf, InData%FEMMod) - call RegPack(Buf, InData%NDiv) - call RegPack(Buf, InData%CBMod) - call RegPack(Buf, allocated(InData%Joints)) - if (allocated(InData%Joints)) then - call RegPackBounds(Buf, 2, lbound(InData%Joints, kind=B8Ki), ubound(InData%Joints, kind=B8Ki)) - call RegPack(Buf, InData%Joints) - end if - call RegPack(Buf, allocated(InData%PropSetsB)) - if (allocated(InData%PropSetsB)) then - call RegPackBounds(Buf, 2, lbound(InData%PropSetsB, kind=B8Ki), ubound(InData%PropSetsB, kind=B8Ki)) - call RegPack(Buf, InData%PropSetsB) - end if - call RegPack(Buf, allocated(InData%PropSetsC)) - if (allocated(InData%PropSetsC)) then - call RegPackBounds(Buf, 2, lbound(InData%PropSetsC, kind=B8Ki), ubound(InData%PropSetsC, kind=B8Ki)) - call RegPack(Buf, InData%PropSetsC) - end if - call RegPack(Buf, allocated(InData%PropSetsR)) - if (allocated(InData%PropSetsR)) then - call RegPackBounds(Buf, 2, lbound(InData%PropSetsR, kind=B8Ki), ubound(InData%PropSetsR, kind=B8Ki)) - call RegPack(Buf, InData%PropSetsR) - end if - call RegPack(Buf, allocated(InData%PropSetsX)) - if (allocated(InData%PropSetsX)) then - call RegPackBounds(Buf, 2, lbound(InData%PropSetsX, kind=B8Ki), ubound(InData%PropSetsX, kind=B8Ki)) - call RegPack(Buf, InData%PropSetsX) - end if - call RegPack(Buf, allocated(InData%COSMs)) - if (allocated(InData%COSMs)) then - call RegPackBounds(Buf, 2, lbound(InData%COSMs, kind=B8Ki), ubound(InData%COSMs, kind=B8Ki)) - call RegPack(Buf, InData%COSMs) - end if - call RegPack(Buf, allocated(InData%CMass)) - if (allocated(InData%CMass)) then - call RegPackBounds(Buf, 2, lbound(InData%CMass, kind=B8Ki), ubound(InData%CMass, kind=B8Ki)) - call RegPack(Buf, InData%CMass) - end if - call RegPack(Buf, allocated(InData%JDampings)) - if (allocated(InData%JDampings)) then - call RegPackBounds(Buf, 1, lbound(InData%JDampings, kind=B8Ki), ubound(InData%JDampings, kind=B8Ki)) - call RegPack(Buf, InData%JDampings) - end if - call RegPack(Buf, InData%GuyanDampMod) - call RegPack(Buf, InData%RayleighDamp) - call RegPack(Buf, InData%GuyanDampMat) - call RegPack(Buf, allocated(InData%Members)) - if (allocated(InData%Members)) then - call RegPackBounds(Buf, 2, lbound(InData%Members, kind=B8Ki), ubound(InData%Members, kind=B8Ki)) - call RegPack(Buf, InData%Members) - end if - call RegPack(Buf, allocated(InData%SSOutList)) - if (allocated(InData%SSOutList)) then - call RegPackBounds(Buf, 1, lbound(InData%SSOutList, kind=B8Ki), ubound(InData%SSOutList, kind=B8Ki)) - call RegPack(Buf, InData%SSOutList) - end if - call RegPack(Buf, InData%OutCOSM) - call RegPack(Buf, InData%TabDelim) - call RegPack(Buf, allocated(InData%SSIK)) - if (allocated(InData%SSIK)) then - call RegPackBounds(Buf, 2, lbound(InData%SSIK, kind=B8Ki), ubound(InData%SSIK, kind=B8Ki)) - call RegPack(Buf, InData%SSIK) - end if - call RegPack(Buf, allocated(InData%SSIM)) - if (allocated(InData%SSIM)) then - call RegPackBounds(Buf, 2, lbound(InData%SSIM, kind=B8Ki), ubound(InData%SSIM, kind=B8Ki)) - call RegPack(Buf, InData%SSIM) - end if - call RegPack(Buf, allocated(InData%SSIfile)) - if (allocated(InData%SSIfile)) then - call RegPackBounds(Buf, 1, lbound(InData%SSIfile, kind=B8Ki), ubound(InData%SSIfile, kind=B8Ki)) - call RegPack(Buf, InData%SSIfile) - end if - call RegPack(Buf, allocated(InData%Soil_K)) - if (allocated(InData%Soil_K)) then - call RegPackBounds(Buf, 3, lbound(InData%Soil_K, kind=B8Ki), ubound(InData%Soil_K, kind=B8Ki)) - call RegPack(Buf, InData%Soil_K) - end if - call RegPack(Buf, allocated(InData%Soil_Points)) - if (allocated(InData%Soil_Points)) then - call RegPackBounds(Buf, 2, lbound(InData%Soil_Points, kind=B8Ki), ubound(InData%Soil_Points, kind=B8Ki)) - call RegPack(Buf, InData%Soil_Points) - end if - call RegPack(Buf, allocated(InData%Soil_Nodes)) - if (allocated(InData%Soil_Nodes)) then - call RegPackBounds(Buf, 1, lbound(InData%Soil_Nodes, kind=B8Ki), ubound(InData%Soil_Nodes, kind=B8Ki)) - call RegPack(Buf, InData%Soil_Nodes) - end if - call RegPack(Buf, InData%NElem) - call RegPack(Buf, InData%NPropB) - call RegPack(Buf, InData%NPropC) - call RegPack(Buf, InData%NPropR) - call RegPack(Buf, allocated(InData%Nodes)) - if (allocated(InData%Nodes)) then - call RegPackBounds(Buf, 2, lbound(InData%Nodes, kind=B8Ki), ubound(InData%Nodes, kind=B8Ki)) - call RegPack(Buf, InData%Nodes) - end if - call RegPack(Buf, allocated(InData%PropsB)) - if (allocated(InData%PropsB)) then - call RegPackBounds(Buf, 2, lbound(InData%PropsB, kind=B8Ki), ubound(InData%PropsB, kind=B8Ki)) - call RegPack(Buf, InData%PropsB) - end if - call RegPack(Buf, allocated(InData%PropsC)) - if (allocated(InData%PropsC)) then - call RegPackBounds(Buf, 2, lbound(InData%PropsC, kind=B8Ki), ubound(InData%PropsC, kind=B8Ki)) - call RegPack(Buf, InData%PropsC) - end if - call RegPack(Buf, allocated(InData%PropsR)) - if (allocated(InData%PropsR)) then - call RegPackBounds(Buf, 2, lbound(InData%PropsR, kind=B8Ki), ubound(InData%PropsR, kind=B8Ki)) - call RegPack(Buf, InData%PropsR) - end if - call RegPack(Buf, allocated(InData%K)) - if (allocated(InData%K)) then - call RegPackBounds(Buf, 2, lbound(InData%K, kind=B8Ki), ubound(InData%K, kind=B8Ki)) - call RegPack(Buf, InData%K) - end if - call RegPack(Buf, allocated(InData%M)) - if (allocated(InData%M)) then - call RegPackBounds(Buf, 2, lbound(InData%M, kind=B8Ki), ubound(InData%M, kind=B8Ki)) - call RegPack(Buf, InData%M) - end if - call RegPack(Buf, allocated(InData%ElemProps)) - if (allocated(InData%ElemProps)) then - call RegPackBounds(Buf, 2, lbound(InData%ElemProps, kind=B8Ki), ubound(InData%ElemProps, kind=B8Ki)) - call RegPack(Buf, InData%ElemProps) - end if - call RegPack(Buf, allocated(InData%MemberNodes)) - if (allocated(InData%MemberNodes)) then - call RegPackBounds(Buf, 2, lbound(InData%MemberNodes, kind=B8Ki), ubound(InData%MemberNodes, kind=B8Ki)) - call RegPack(Buf, InData%MemberNodes) - end if - call RegPack(Buf, allocated(InData%NodesConnN)) - if (allocated(InData%NodesConnN)) then - call RegPackBounds(Buf, 2, lbound(InData%NodesConnN, kind=B8Ki), ubound(InData%NodesConnN, kind=B8Ki)) - call RegPack(Buf, InData%NodesConnN) - end if - call RegPack(Buf, allocated(InData%NodesConnE)) - if (allocated(InData%NodesConnE)) then - call RegPackBounds(Buf, 2, lbound(InData%NodesConnE, kind=B8Ki), ubound(InData%NodesConnE, kind=B8Ki)) - call RegPack(Buf, InData%NodesConnE) - end if - call RegPack(Buf, InData%SSSum) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%RootName) + call RegPack(RF, InData%TP_RefPoint) + call RegPack(RF, InData%SubRotateZ) + call RegPack(RF, InData%g) + call RegPack(RF, InData%DT) + call RegPack(RF, InData%NJoints) + call RegPack(RF, InData%NPropSetsX) + call RegPack(RF, InData%NPropSetsB) + call RegPack(RF, InData%NPropSetsC) + call RegPack(RF, InData%NPropSetsR) + call RegPack(RF, InData%NCMass) + call RegPack(RF, InData%NCOSMs) + call RegPack(RF, InData%FEMMod) + call RegPack(RF, InData%NDiv) + call RegPack(RF, InData%CBMod) + call RegPackAlloc(RF, InData%Joints) + call RegPackAlloc(RF, InData%PropSetsB) + call RegPackAlloc(RF, InData%PropSetsC) + call RegPackAlloc(RF, InData%PropSetsR) + call RegPackAlloc(RF, InData%PropSetsX) + call RegPackAlloc(RF, InData%COSMs) + call RegPackAlloc(RF, InData%CMass) + call RegPackAlloc(RF, InData%JDampings) + call RegPack(RF, InData%GuyanDampMod) + call RegPack(RF, InData%RayleighDamp) + call RegPack(RF, InData%GuyanDampMat) + call RegPackAlloc(RF, InData%Members) + call RegPackAlloc(RF, InData%SSOutList) + call RegPack(RF, InData%OutCOSM) + call RegPack(RF, InData%TabDelim) + call RegPackAlloc(RF, InData%SSIK) + call RegPackAlloc(RF, InData%SSIM) + call RegPackAlloc(RF, InData%SSIfile) + call RegPackAlloc(RF, InData%Soil_K) + call RegPackAlloc(RF, InData%Soil_Points) + call RegPackAlloc(RF, InData%Soil_Nodes) + call RegPack(RF, InData%NElem) + call RegPack(RF, InData%NPropB) + call RegPack(RF, InData%NPropC) + call RegPack(RF, InData%NPropR) + call RegPackAlloc(RF, InData%Nodes) + call RegPackAlloc(RF, InData%PropsB) + call RegPackAlloc(RF, InData%PropsC) + call RegPackAlloc(RF, InData%PropsR) + call RegPackAlloc(RF, InData%K) + call RegPackAlloc(RF, InData%M) + call RegPackAlloc(RF, InData%ElemProps) + call RegPackAlloc(RF, InData%MemberNodes) + call RegPackAlloc(RF, InData%NodesConnN) + call RegPackAlloc(RF, InData%NodesConnE) + call RegPack(RF, InData%SSSum) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SD_UnPackInitType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_UnPackInitType(RF, OutData) + type(RegFile), intent(inout) :: RF type(SD_InitType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SD_UnPackInitType' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%RootName) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TP_RefPoint) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SubRotateZ) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%g) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NJoints) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NPropSetsX) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NPropSetsB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NPropSetsC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NPropSetsR) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NCMass) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NCOSMs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FEMMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NDiv) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%CBMod) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Joints)) deallocate(OutData%Joints) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Joints(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Joints.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Joints) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PropSetsB)) deallocate(OutData%PropSetsB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PropSetsB(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PropSetsB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PropSetsB) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PropSetsC)) deallocate(OutData%PropSetsC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PropSetsC(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PropSetsC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PropSetsC) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PropSetsR)) deallocate(OutData%PropSetsR) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PropSetsR(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PropSetsR.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PropSetsR) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PropSetsX)) deallocate(OutData%PropSetsX) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PropSetsX(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PropSetsX.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PropSetsX) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%COSMs)) deallocate(OutData%COSMs) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%COSMs(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%COSMs.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%COSMs) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CMass)) deallocate(OutData%CMass) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CMass(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CMass.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CMass) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%JDampings)) deallocate(OutData%JDampings) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%JDampings(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%JDampings.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%JDampings) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%GuyanDampMod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RayleighDamp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GuyanDampMat) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Members)) deallocate(OutData%Members) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Members(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Members.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Members) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SSOutList)) deallocate(OutData%SSOutList) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SSOutList(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SSOutList.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SSOutList) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%OutCOSM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TabDelim) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%SSIK)) deallocate(OutData%SSIK) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SSIK(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SSIK.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SSIK) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SSIM)) deallocate(OutData%SSIM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SSIM(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SSIM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SSIM) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SSIfile)) deallocate(OutData%SSIfile) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SSIfile(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SSIfile.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%RootName); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TP_RefPoint); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SubRotateZ); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%g); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NJoints); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NPropSetsX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NPropSetsB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NPropSetsC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NPropSetsR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NCMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NCOSMs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FEMMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NDiv); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%CBMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Joints); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PropSetsB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PropSetsC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PropSetsR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PropSetsX); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%COSMs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CMass); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%JDampings); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GuyanDampMod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RayleighDamp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GuyanDampMat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Members); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SSOutList); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutCOSM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TabDelim); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SSIK); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SSIM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SSIfile); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Soil_K); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Soil_Points); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Soil_Nodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NElem); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NPropB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NPropC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NPropR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Nodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PropsB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PropsC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PropsR); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%K); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%M); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ElemProps); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MemberNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NodesConnN); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NodesConnE); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SSSum); if (RegCheckErr(RF, RoutineName)) return +end subroutine + +subroutine SD_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) + type(SD_ContinuousStateType), intent(in) :: SrcContStateData + type(SD_ContinuousStateType), intent(inout) :: DstContStateData + integer(IntKi), intent(in ) :: CtrlCode + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + integer(B8Ki) :: LB(1), UB(1) + integer(IntKi) :: ErrStat2 + character(*), parameter :: RoutineName = 'SD_CopyContState' + ErrStat = ErrID_None + ErrMsg = '' + if (allocated(SrcContStateData%qm)) then + LB(1:1) = lbound(SrcContStateData%qm, kind=B8Ki) + UB(1:1) = ubound(SrcContStateData%qm, kind=B8Ki) + if (.not. allocated(DstContStateData%qm)) then + allocate(DstContStateData%qm(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstContStateData%qm.', ErrStat, ErrMsg, RoutineName) + return + end if end if - call RegUnpack(Buf, OutData%SSIfile) - if (RegCheckErr(Buf, RoutineName)) return + DstContStateData%qm = SrcContStateData%qm end if - if (allocated(OutData%Soil_K)) deallocate(OutData%Soil_K) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Soil_K(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Soil_K.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return + if (allocated(SrcContStateData%qmdot)) then + LB(1:1) = lbound(SrcContStateData%qmdot, kind=B8Ki) + UB(1:1) = ubound(SrcContStateData%qmdot, kind=B8Ki) + if (.not. allocated(DstContStateData%qmdot)) then + allocate(DstContStateData%qmdot(LB(1):UB(1)), stat=ErrStat2) + if (ErrStat2 /= 0) then + call SetErrStat(ErrID_Fatal, 'Error allocating DstContStateData%qmdot.', ErrStat, ErrMsg, RoutineName) + return + end if end if - call RegUnpack(Buf, OutData%Soil_K) - if (RegCheckErr(Buf, RoutineName)) return + DstContStateData%qmdot = SrcContStateData%qmdot end if - if (allocated(OutData%Soil_Points)) deallocate(OutData%Soil_Points) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Soil_Points(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Soil_Points.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Soil_Points) - if (RegCheckErr(Buf, RoutineName)) return +end subroutine + +subroutine SD_DestroyContState(ContStateData, ErrStat, ErrMsg) + type(SD_ContinuousStateType), intent(inout) :: ContStateData + integer(IntKi), intent( out) :: ErrStat + character(*), intent( out) :: ErrMsg + character(*), parameter :: RoutineName = 'SD_DestroyContState' + ErrStat = ErrID_None + ErrMsg = '' + if (allocated(ContStateData%qm)) then + deallocate(ContStateData%qm) end if - if (allocated(OutData%Soil_Nodes)) deallocate(OutData%Soil_Nodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Soil_Nodes(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Soil_Nodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Soil_Nodes) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NElem) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NPropB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NPropC) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NPropR) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Nodes)) deallocate(OutData%Nodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Nodes(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Nodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Nodes) - if (RegCheckErr(Buf, RoutineName)) return + if (allocated(ContStateData%qmdot)) then + deallocate(ContStateData%qmdot) end if - if (allocated(OutData%PropsB)) deallocate(OutData%PropsB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PropsB(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PropsB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PropsB) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PropsC)) deallocate(OutData%PropsC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PropsC(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PropsC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PropsC) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PropsR)) deallocate(OutData%PropsR) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PropsR(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PropsR.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PropsR) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%K)) deallocate(OutData%K) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%K(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%K.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%K) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%M)) deallocate(OutData%M) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%M(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%M.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%M) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ElemProps)) deallocate(OutData%ElemProps) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ElemProps(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ElemProps.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ElemProps) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MemberNodes)) deallocate(OutData%MemberNodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MemberNodes(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MemberNodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MemberNodes) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%NodesConnN)) deallocate(OutData%NodesConnN) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NodesConnN(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NodesConnN.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NodesConnN) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%NodesConnE)) deallocate(OutData%NodesConnE) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NodesConnE(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NodesConnE.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NodesConnE) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%SSSum) - if (RegCheckErr(Buf, RoutineName)) return end subroutine -subroutine SD_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) - type(SD_ContinuousStateType), intent(in) :: SrcContStateData - type(SD_ContinuousStateType), intent(inout) :: DstContStateData - integer(IntKi), intent(in ) :: CtrlCode - integer(IntKi), intent( out) :: ErrStat - character(*), intent( out) :: ErrMsg - integer(B8Ki) :: LB(1), UB(1) - integer(IntKi) :: ErrStat2 - character(*), parameter :: RoutineName = 'SD_CopyContState' - ErrStat = ErrID_None - ErrMsg = '' - if (allocated(SrcContStateData%qm)) then - LB(1:1) = lbound(SrcContStateData%qm, kind=B8Ki) - UB(1:1) = ubound(SrcContStateData%qm, kind=B8Ki) - if (.not. allocated(DstContStateData%qm)) then - allocate(DstContStateData%qm(LB(1):UB(1)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstContStateData%qm.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstContStateData%qm = SrcContStateData%qm - end if - if (allocated(SrcContStateData%qmdot)) then - LB(1:1) = lbound(SrcContStateData%qmdot, kind=B8Ki) - UB(1:1) = ubound(SrcContStateData%qmdot, kind=B8Ki) - if (.not. allocated(DstContStateData%qmdot)) then - allocate(DstContStateData%qmdot(LB(1):UB(1)), stat=ErrStat2) - if (ErrStat2 /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating DstContStateData%qmdot.', ErrStat, ErrMsg, RoutineName) - return - end if - end if - DstContStateData%qmdot = SrcContStateData%qmdot - end if -end subroutine - -subroutine SD_DestroyContState(ContStateData, ErrStat, ErrMsg) - type(SD_ContinuousStateType), intent(inout) :: ContStateData - integer(IntKi), intent( out) :: ErrStat - character(*), intent( out) :: ErrMsg - character(*), parameter :: RoutineName = 'SD_DestroyContState' - ErrStat = ErrID_None - ErrMsg = '' - if (allocated(ContStateData%qm)) then - deallocate(ContStateData%qm) - end if - if (allocated(ContStateData%qmdot)) then - deallocate(ContStateData%qmdot) - end if -end subroutine - -subroutine SD_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SD_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SD_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%qm)) - if (allocated(InData%qm)) then - call RegPackBounds(Buf, 1, lbound(InData%qm, kind=B8Ki), ubound(InData%qm, kind=B8Ki)) - call RegPack(Buf, InData%qm) - end if - call RegPack(Buf, allocated(InData%qmdot)) - if (allocated(InData%qmdot)) then - call RegPackBounds(Buf, 1, lbound(InData%qmdot, kind=B8Ki), ubound(InData%qmdot, kind=B8Ki)) - call RegPack(Buf, InData%qmdot) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%qm) + call RegPackAlloc(RF, InData%qmdot) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SD_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SD_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SD_UnPackContState' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%qm)) deallocate(OutData%qm) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%qm(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%qm.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%qm) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%qmdot)) deallocate(OutData%qmdot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%qmdot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%qmdot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%qmdot) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%qm); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%qmdot); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SD_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -2731,22 +1764,21 @@ subroutine SD_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SD_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SD_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SD_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyDiscState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SD_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SD_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SD_UnPackDiscState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyDiscState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyDiscState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SD_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -2770,22 +1802,21 @@ subroutine SD_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SD_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SD_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SD_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstrState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SD_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SD_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SD_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstrState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SD_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -2842,52 +1873,49 @@ subroutine SD_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) end if end subroutine -subroutine SD_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SD_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SD_PackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%xdot)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, allocated(InData%xdot)) if (allocated(InData%xdot)) then - call RegPackBounds(Buf, 1, lbound(InData%xdot, kind=B8Ki), ubound(InData%xdot, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%xdot, kind=B8Ki), ubound(InData%xdot, kind=B8Ki)) LB(1:1) = lbound(InData%xdot, kind=B8Ki) UB(1:1) = ubound(InData%xdot, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackContState(Buf, InData%xdot(i1)) + call SD_PackContState(RF, InData%xdot(i1)) end do end if - call RegPack(Buf, InData%n) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%n) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SD_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SD_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SD_UnPackOtherState' integer(B8Ki) :: i1 integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return + if (RF%ErrStat /= ErrID_None) return if (allocated(OutData%xdot)) deallocate(OutData%xdot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%xdot(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xdot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xdot.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SD_UnpackContState(Buf, OutData%xdot(i1)) ! xdot + call SD_UnpackContState(RF, OutData%xdot(i1)) ! xdot end do end if - call RegUnpack(Buf, OutData%n) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%n); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SD_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -3277,493 +2305,80 @@ subroutine SD_DestroyMisc(MiscData, ErrStat, ErrMsg) end if end subroutine -subroutine SD_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(SD_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'SD_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%qmdotdot)) - if (allocated(InData%qmdotdot)) then - call RegPackBounds(Buf, 1, lbound(InData%qmdotdot, kind=B8Ki), ubound(InData%qmdotdot, kind=B8Ki)) - call RegPack(Buf, InData%qmdotdot) - end if - call RegPack(Buf, InData%u_TP) - call RegPack(Buf, InData%udot_TP) - call RegPack(Buf, InData%udotdot_TP) - call RegPack(Buf, allocated(InData%F_L)) - if (allocated(InData%F_L)) then - call RegPackBounds(Buf, 1, lbound(InData%F_L, kind=B8Ki), ubound(InData%F_L, kind=B8Ki)) - call RegPack(Buf, InData%F_L) - end if - call RegPack(Buf, allocated(InData%F_L2)) - if (allocated(InData%F_L2)) then - call RegPackBounds(Buf, 1, lbound(InData%F_L2, kind=B8Ki), ubound(InData%F_L2, kind=B8Ki)) - call RegPack(Buf, InData%F_L2) - end if - call RegPack(Buf, allocated(InData%UR_bar)) - if (allocated(InData%UR_bar)) then - call RegPackBounds(Buf, 1, lbound(InData%UR_bar, kind=B8Ki), ubound(InData%UR_bar, kind=B8Ki)) - call RegPack(Buf, InData%UR_bar) - end if - call RegPack(Buf, allocated(InData%UR_bar_dot)) - if (allocated(InData%UR_bar_dot)) then - call RegPackBounds(Buf, 1, lbound(InData%UR_bar_dot, kind=B8Ki), ubound(InData%UR_bar_dot, kind=B8Ki)) - call RegPack(Buf, InData%UR_bar_dot) - end if - call RegPack(Buf, allocated(InData%UR_bar_dotdot)) - if (allocated(InData%UR_bar_dotdot)) then - call RegPackBounds(Buf, 1, lbound(InData%UR_bar_dotdot, kind=B8Ki), ubound(InData%UR_bar_dotdot, kind=B8Ki)) - call RegPack(Buf, InData%UR_bar_dotdot) - end if - call RegPack(Buf, allocated(InData%UL)) - if (allocated(InData%UL)) then - call RegPackBounds(Buf, 1, lbound(InData%UL, kind=B8Ki), ubound(InData%UL, kind=B8Ki)) - call RegPack(Buf, InData%UL) - end if - call RegPack(Buf, allocated(InData%UL_NS)) - if (allocated(InData%UL_NS)) then - call RegPackBounds(Buf, 1, lbound(InData%UL_NS, kind=B8Ki), ubound(InData%UL_NS, kind=B8Ki)) - call RegPack(Buf, InData%UL_NS) - end if - call RegPack(Buf, allocated(InData%UL_dot)) - if (allocated(InData%UL_dot)) then - call RegPackBounds(Buf, 1, lbound(InData%UL_dot, kind=B8Ki), ubound(InData%UL_dot, kind=B8Ki)) - call RegPack(Buf, InData%UL_dot) - end if - call RegPack(Buf, allocated(InData%UL_dotdot)) - if (allocated(InData%UL_dotdot)) then - call RegPackBounds(Buf, 1, lbound(InData%UL_dotdot, kind=B8Ki), ubound(InData%UL_dotdot, kind=B8Ki)) - call RegPack(Buf, InData%UL_dotdot) - end if - call RegPack(Buf, allocated(InData%DU_full)) - if (allocated(InData%DU_full)) then - call RegPackBounds(Buf, 1, lbound(InData%DU_full, kind=B8Ki), ubound(InData%DU_full, kind=B8Ki)) - call RegPack(Buf, InData%DU_full) - end if - call RegPack(Buf, allocated(InData%U_full)) - if (allocated(InData%U_full)) then - call RegPackBounds(Buf, 1, lbound(InData%U_full, kind=B8Ki), ubound(InData%U_full, kind=B8Ki)) - call RegPack(Buf, InData%U_full) - end if - call RegPack(Buf, allocated(InData%U_full_NS)) - if (allocated(InData%U_full_NS)) then - call RegPackBounds(Buf, 1, lbound(InData%U_full_NS, kind=B8Ki), ubound(InData%U_full_NS, kind=B8Ki)) - call RegPack(Buf, InData%U_full_NS) - end if - call RegPack(Buf, allocated(InData%U_full_dot)) - if (allocated(InData%U_full_dot)) then - call RegPackBounds(Buf, 1, lbound(InData%U_full_dot, kind=B8Ki), ubound(InData%U_full_dot, kind=B8Ki)) - call RegPack(Buf, InData%U_full_dot) - end if - call RegPack(Buf, allocated(InData%U_full_dotdot)) - if (allocated(InData%U_full_dotdot)) then - call RegPackBounds(Buf, 1, lbound(InData%U_full_dotdot, kind=B8Ki), ubound(InData%U_full_dotdot, kind=B8Ki)) - call RegPack(Buf, InData%U_full_dotdot) - end if - call RegPack(Buf, allocated(InData%U_full_elast)) - if (allocated(InData%U_full_elast)) then - call RegPackBounds(Buf, 1, lbound(InData%U_full_elast, kind=B8Ki), ubound(InData%U_full_elast, kind=B8Ki)) - call RegPack(Buf, InData%U_full_elast) - end if - call RegPack(Buf, allocated(InData%U_red)) - if (allocated(InData%U_red)) then - call RegPackBounds(Buf, 1, lbound(InData%U_red, kind=B8Ki), ubound(InData%U_red, kind=B8Ki)) - call RegPack(Buf, InData%U_red) - end if - call RegPack(Buf, allocated(InData%FC_unit)) - if (allocated(InData%FC_unit)) then - call RegPackBounds(Buf, 1, lbound(InData%FC_unit, kind=B8Ki), ubound(InData%FC_unit, kind=B8Ki)) - call RegPack(Buf, InData%FC_unit) - end if - call RegPack(Buf, allocated(InData%SDWrOutput)) - if (allocated(InData%SDWrOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%SDWrOutput, kind=B8Ki), ubound(InData%SDWrOutput, kind=B8Ki)) - call RegPack(Buf, InData%SDWrOutput) - end if - call RegPack(Buf, allocated(InData%AllOuts)) - if (allocated(InData%AllOuts)) then - call RegPackBounds(Buf, 1, lbound(InData%AllOuts, kind=B8Ki), ubound(InData%AllOuts, kind=B8Ki)) - call RegPack(Buf, InData%AllOuts) - end if - call RegPack(Buf, InData%LastOutTime) - call RegPack(Buf, InData%Decimat) - call RegPack(Buf, allocated(InData%Fext)) - if (allocated(InData%Fext)) then - call RegPackBounds(Buf, 1, lbound(InData%Fext, kind=B8Ki), ubound(InData%Fext, kind=B8Ki)) - call RegPack(Buf, InData%Fext) - end if - call RegPack(Buf, allocated(InData%Fext_red)) - if (allocated(InData%Fext_red)) then - call RegPackBounds(Buf, 1, lbound(InData%Fext_red, kind=B8Ki), ubound(InData%Fext_red, kind=B8Ki)) - call RegPack(Buf, InData%Fext_red) - end if - call RegPack(Buf, allocated(InData%UL_SIM)) - if (allocated(InData%UL_SIM)) then - call RegPackBounds(Buf, 1, lbound(InData%UL_SIM, kind=B8Ki), ubound(InData%UL_SIM, kind=B8Ki)) - call RegPack(Buf, InData%UL_SIM) - end if - call RegPack(Buf, allocated(InData%UL_0m)) - if (allocated(InData%UL_0m)) then - call RegPackBounds(Buf, 1, lbound(InData%UL_0m, kind=B8Ki), ubound(InData%UL_0m, kind=B8Ki)) - call RegPack(Buf, InData%UL_0m) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%qmdotdot) + call RegPack(RF, InData%u_TP) + call RegPack(RF, InData%udot_TP) + call RegPack(RF, InData%udotdot_TP) + call RegPackAlloc(RF, InData%F_L) + call RegPackAlloc(RF, InData%F_L2) + call RegPackAlloc(RF, InData%UR_bar) + call RegPackAlloc(RF, InData%UR_bar_dot) + call RegPackAlloc(RF, InData%UR_bar_dotdot) + call RegPackAlloc(RF, InData%UL) + call RegPackAlloc(RF, InData%UL_NS) + call RegPackAlloc(RF, InData%UL_dot) + call RegPackAlloc(RF, InData%UL_dotdot) + call RegPackAlloc(RF, InData%DU_full) + call RegPackAlloc(RF, InData%U_full) + call RegPackAlloc(RF, InData%U_full_NS) + call RegPackAlloc(RF, InData%U_full_dot) + call RegPackAlloc(RF, InData%U_full_dotdot) + call RegPackAlloc(RF, InData%U_full_elast) + call RegPackAlloc(RF, InData%U_red) + call RegPackAlloc(RF, InData%FC_unit) + call RegPackAlloc(RF, InData%SDWrOutput) + call RegPackAlloc(RF, InData%AllOuts) + call RegPack(RF, InData%LastOutTime) + call RegPack(RF, InData%Decimat) + call RegPackAlloc(RF, InData%Fext) + call RegPackAlloc(RF, InData%Fext_red) + call RegPackAlloc(RF, InData%UL_SIM) + call RegPackAlloc(RF, InData%UL_0m) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SD_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(SD_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SD_UnPackMisc' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%qmdotdot)) deallocate(OutData%qmdotdot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%qmdotdot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%qmdotdot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%qmdotdot) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%u_TP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%udot_TP) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%udotdot_TP) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%F_L)) deallocate(OutData%F_L) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_L(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_L.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_L) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%F_L2)) deallocate(OutData%F_L2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%F_L2(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%F_L2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%F_L2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%UR_bar)) deallocate(OutData%UR_bar) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%UR_bar(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UR_bar.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%UR_bar) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%UR_bar_dot)) deallocate(OutData%UR_bar_dot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%UR_bar_dot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UR_bar_dot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%UR_bar_dot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%UR_bar_dotdot)) deallocate(OutData%UR_bar_dotdot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%UR_bar_dotdot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UR_bar_dotdot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%UR_bar_dotdot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%UL)) deallocate(OutData%UL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%UL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%UL) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%UL_NS)) deallocate(OutData%UL_NS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%UL_NS(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UL_NS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%UL_NS) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%UL_dot)) deallocate(OutData%UL_dot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%UL_dot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UL_dot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%UL_dot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%UL_dotdot)) deallocate(OutData%UL_dotdot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%UL_dotdot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UL_dotdot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%UL_dotdot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DU_full)) deallocate(OutData%DU_full) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DU_full(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DU_full.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DU_full) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%U_full)) deallocate(OutData%U_full) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%U_full(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%U_full.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%U_full) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%U_full_NS)) deallocate(OutData%U_full_NS) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%U_full_NS(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%U_full_NS.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%U_full_NS) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%U_full_dot)) deallocate(OutData%U_full_dot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%U_full_dot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%U_full_dot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%U_full_dot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%U_full_dotdot)) deallocate(OutData%U_full_dotdot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%U_full_dotdot(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%U_full_dotdot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%U_full_dotdot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%U_full_elast)) deallocate(OutData%U_full_elast) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%U_full_elast(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%U_full_elast.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%U_full_elast) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%U_red)) deallocate(OutData%U_red) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%U_red(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%U_red.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%U_red) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%FC_unit)) deallocate(OutData%FC_unit) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FC_unit(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FC_unit.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FC_unit) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%SDWrOutput)) deallocate(OutData%SDWrOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%SDWrOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%SDWrOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%SDWrOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AllOuts)) deallocate(OutData%AllOuts) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AllOuts(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AllOuts.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AllOuts) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%LastOutTime) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Decimat) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Fext)) deallocate(OutData%Fext) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Fext(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fext.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Fext) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Fext_red)) deallocate(OutData%Fext_red) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Fext_red(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Fext_red.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Fext_red) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%UL_SIM)) deallocate(OutData%UL_SIM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%UL_SIM(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UL_SIM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%UL_SIM) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%UL_0m)) deallocate(OutData%UL_0m) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%UL_0m(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%UL_0m.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%UL_0m) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%qmdotdot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%u_TP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%udot_TP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%udotdot_TP); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_L); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%F_L2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%UR_bar); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%UR_bar_dot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%UR_bar_dotdot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%UL); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%UL_NS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%UL_dot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%UL_dotdot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DU_full); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%U_full); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%U_full_NS); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%U_full_dot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%U_full_dotdot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%U_full_elast); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%U_red); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%FC_unit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%SDWrOutput); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AllOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%LastOutTime); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Decimat); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Fext); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Fext_red); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%UL_SIM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%UL_0m); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SD_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -4793,1313 +3408,371 @@ subroutine SD_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine SD_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(SD_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'SD_PackParam' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%SDDeltaT) - call RegPack(Buf, InData%IntMethod) - call RegPack(Buf, InData%nDOF) - call RegPack(Buf, InData%nDOF_red) - call RegPack(Buf, InData%Nmembers) - call RegPack(Buf, allocated(InData%Elems)) - if (allocated(InData%Elems)) then - call RegPackBounds(Buf, 2, lbound(InData%Elems, kind=B8Ki), ubound(InData%Elems, kind=B8Ki)) - call RegPack(Buf, InData%Elems) - end if - call RegPack(Buf, allocated(InData%ElemProps)) + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%SDDeltaT) + call RegPack(RF, InData%IntMethod) + call RegPack(RF, InData%nDOF) + call RegPack(RF, InData%nDOF_red) + call RegPack(RF, InData%Nmembers) + call RegPackAlloc(RF, InData%Elems) + call RegPack(RF, allocated(InData%ElemProps)) if (allocated(InData%ElemProps)) then - call RegPackBounds(Buf, 1, lbound(InData%ElemProps, kind=B8Ki), ubound(InData%ElemProps, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%ElemProps, kind=B8Ki), ubound(InData%ElemProps, kind=B8Ki)) LB(1:1) = lbound(InData%ElemProps, kind=B8Ki) UB(1:1) = ubound(InData%ElemProps, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackElemPropType(Buf, InData%ElemProps(i1)) + call SD_PackElemPropType(RF, InData%ElemProps(i1)) end do end if - call RegPack(Buf, allocated(InData%FG)) - if (allocated(InData%FG)) then - call RegPackBounds(Buf, 1, lbound(InData%FG, kind=B8Ki), ubound(InData%FG, kind=B8Ki)) - call RegPack(Buf, InData%FG) - end if - call RegPack(Buf, allocated(InData%DP0)) - if (allocated(InData%DP0)) then - call RegPackBounds(Buf, 2, lbound(InData%DP0, kind=B8Ki), ubound(InData%DP0, kind=B8Ki)) - call RegPack(Buf, InData%DP0) - end if - call RegPack(Buf, allocated(InData%NodeID2JointID)) - if (allocated(InData%NodeID2JointID)) then - call RegPackBounds(Buf, 1, lbound(InData%NodeID2JointID, kind=B8Ki), ubound(InData%NodeID2JointID, kind=B8Ki)) - call RegPack(Buf, InData%NodeID2JointID) - end if - call RegPack(Buf, InData%reduced) - call RegPack(Buf, allocated(InData%T_red)) - if (allocated(InData%T_red)) then - call RegPackBounds(Buf, 2, lbound(InData%T_red, kind=B8Ki), ubound(InData%T_red, kind=B8Ki)) - call RegPack(Buf, InData%T_red) - end if - call RegPack(Buf, allocated(InData%T_red_T)) - if (allocated(InData%T_red_T)) then - call RegPackBounds(Buf, 2, lbound(InData%T_red_T, kind=B8Ki), ubound(InData%T_red_T, kind=B8Ki)) - call RegPack(Buf, InData%T_red_T) - end if - call RegPack(Buf, allocated(InData%NodesDOF)) + call RegPackAlloc(RF, InData%FG) + call RegPackAlloc(RF, InData%DP0) + call RegPackAlloc(RF, InData%NodeID2JointID) + call RegPack(RF, InData%reduced) + call RegPackAlloc(RF, InData%T_red) + call RegPackAlloc(RF, InData%T_red_T) + call RegPack(RF, allocated(InData%NodesDOF)) if (allocated(InData%NodesDOF)) then - call RegPackBounds(Buf, 1, lbound(InData%NodesDOF, kind=B8Ki), ubound(InData%NodesDOF, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%NodesDOF, kind=B8Ki), ubound(InData%NodesDOF, kind=B8Ki)) LB(1:1) = lbound(InData%NodesDOF, kind=B8Ki) UB(1:1) = ubound(InData%NodesDOF, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackIList(Buf, InData%NodesDOF(i1)) + call SD_PackIList(RF, InData%NodesDOF(i1)) end do end if - call RegPack(Buf, allocated(InData%NodesDOFred)) + call RegPack(RF, allocated(InData%NodesDOFred)) if (allocated(InData%NodesDOFred)) then - call RegPackBounds(Buf, 1, lbound(InData%NodesDOFred, kind=B8Ki), ubound(InData%NodesDOFred, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%NodesDOFred, kind=B8Ki), ubound(InData%NodesDOFred, kind=B8Ki)) LB(1:1) = lbound(InData%NodesDOFred, kind=B8Ki) UB(1:1) = ubound(InData%NodesDOFred, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackIList(Buf, InData%NodesDOFred(i1)) + call SD_PackIList(RF, InData%NodesDOFred(i1)) end do end if - call RegPack(Buf, allocated(InData%ElemsDOF)) - if (allocated(InData%ElemsDOF)) then - call RegPackBounds(Buf, 2, lbound(InData%ElemsDOF, kind=B8Ki), ubound(InData%ElemsDOF, kind=B8Ki)) - call RegPack(Buf, InData%ElemsDOF) - end if - call RegPack(Buf, allocated(InData%DOFred2Nodes)) - if (allocated(InData%DOFred2Nodes)) then - call RegPackBounds(Buf, 2, lbound(InData%DOFred2Nodes, kind=B8Ki), ubound(InData%DOFred2Nodes, kind=B8Ki)) - call RegPack(Buf, InData%DOFred2Nodes) - end if - call RegPack(Buf, allocated(InData%CtrlElem2Channel)) - if (allocated(InData%CtrlElem2Channel)) then - call RegPackBounds(Buf, 2, lbound(InData%CtrlElem2Channel, kind=B8Ki), ubound(InData%CtrlElem2Channel, kind=B8Ki)) - call RegPack(Buf, InData%CtrlElem2Channel) - end if - call RegPack(Buf, InData%nDOFM) - call RegPack(Buf, InData%SttcSolve) - call RegPack(Buf, InData%GuyanLoadCorrection) - call RegPack(Buf, InData%Floating) - call RegPack(Buf, allocated(InData%KMMDiag)) - if (allocated(InData%KMMDiag)) then - call RegPackBounds(Buf, 1, lbound(InData%KMMDiag, kind=B8Ki), ubound(InData%KMMDiag, kind=B8Ki)) - call RegPack(Buf, InData%KMMDiag) - end if - call RegPack(Buf, allocated(InData%CMMDiag)) - if (allocated(InData%CMMDiag)) then - call RegPackBounds(Buf, 1, lbound(InData%CMMDiag, kind=B8Ki), ubound(InData%CMMDiag, kind=B8Ki)) - call RegPack(Buf, InData%CMMDiag) - end if - call RegPack(Buf, allocated(InData%MMB)) - if (allocated(InData%MMB)) then - call RegPackBounds(Buf, 2, lbound(InData%MMB, kind=B8Ki), ubound(InData%MMB, kind=B8Ki)) - call RegPack(Buf, InData%MMB) - end if - call RegPack(Buf, allocated(InData%MBmmB)) - if (allocated(InData%MBmmB)) then - call RegPackBounds(Buf, 2, lbound(InData%MBmmB, kind=B8Ki), ubound(InData%MBmmB, kind=B8Ki)) - call RegPack(Buf, InData%MBmmB) - end if - call RegPack(Buf, allocated(InData%C1_11)) - if (allocated(InData%C1_11)) then - call RegPackBounds(Buf, 2, lbound(InData%C1_11, kind=B8Ki), ubound(InData%C1_11, kind=B8Ki)) - call RegPack(Buf, InData%C1_11) - end if - call RegPack(Buf, allocated(InData%C1_12)) - if (allocated(InData%C1_12)) then - call RegPackBounds(Buf, 2, lbound(InData%C1_12, kind=B8Ki), ubound(InData%C1_12, kind=B8Ki)) - call RegPack(Buf, InData%C1_12) - end if - call RegPack(Buf, allocated(InData%D1_141)) - if (allocated(InData%D1_141)) then - call RegPackBounds(Buf, 2, lbound(InData%D1_141, kind=B8Ki), ubound(InData%D1_141, kind=B8Ki)) - call RegPack(Buf, InData%D1_141) - end if - call RegPack(Buf, allocated(InData%D1_142)) - if (allocated(InData%D1_142)) then - call RegPackBounds(Buf, 2, lbound(InData%D1_142, kind=B8Ki), ubound(InData%D1_142, kind=B8Ki)) - call RegPack(Buf, InData%D1_142) - end if - call RegPack(Buf, allocated(InData%PhiM)) - if (allocated(InData%PhiM)) then - call RegPackBounds(Buf, 2, lbound(InData%PhiM, kind=B8Ki), ubound(InData%PhiM, kind=B8Ki)) - call RegPack(Buf, InData%PhiM) - end if - call RegPack(Buf, allocated(InData%C2_61)) - if (allocated(InData%C2_61)) then - call RegPackBounds(Buf, 2, lbound(InData%C2_61, kind=B8Ki), ubound(InData%C2_61, kind=B8Ki)) - call RegPack(Buf, InData%C2_61) - end if - call RegPack(Buf, allocated(InData%C2_62)) - if (allocated(InData%C2_62)) then - call RegPackBounds(Buf, 2, lbound(InData%C2_62, kind=B8Ki), ubound(InData%C2_62, kind=B8Ki)) - call RegPack(Buf, InData%C2_62) - end if - call RegPack(Buf, allocated(InData%PhiRb_TI)) - if (allocated(InData%PhiRb_TI)) then - call RegPackBounds(Buf, 2, lbound(InData%PhiRb_TI, kind=B8Ki), ubound(InData%PhiRb_TI, kind=B8Ki)) - call RegPack(Buf, InData%PhiRb_TI) - end if - call RegPack(Buf, allocated(InData%D2_63)) - if (allocated(InData%D2_63)) then - call RegPackBounds(Buf, 2, lbound(InData%D2_63, kind=B8Ki), ubound(InData%D2_63, kind=B8Ki)) - call RegPack(Buf, InData%D2_63) - end if - call RegPack(Buf, allocated(InData%D2_64)) - if (allocated(InData%D2_64)) then - call RegPackBounds(Buf, 2, lbound(InData%D2_64, kind=B8Ki), ubound(InData%D2_64, kind=B8Ki)) - call RegPack(Buf, InData%D2_64) - end if - call RegPack(Buf, allocated(InData%MBB)) - if (allocated(InData%MBB)) then - call RegPackBounds(Buf, 2, lbound(InData%MBB, kind=B8Ki), ubound(InData%MBB, kind=B8Ki)) - call RegPack(Buf, InData%MBB) - end if - call RegPack(Buf, allocated(InData%KBB)) - if (allocated(InData%KBB)) then - call RegPackBounds(Buf, 2, lbound(InData%KBB, kind=B8Ki), ubound(InData%KBB, kind=B8Ki)) - call RegPack(Buf, InData%KBB) - end if - call RegPack(Buf, allocated(InData%CBB)) - if (allocated(InData%CBB)) then - call RegPackBounds(Buf, 2, lbound(InData%CBB, kind=B8Ki), ubound(InData%CBB, kind=B8Ki)) - call RegPack(Buf, InData%CBB) - end if - call RegPack(Buf, allocated(InData%CMM)) - if (allocated(InData%CMM)) then - call RegPackBounds(Buf, 2, lbound(InData%CMM, kind=B8Ki), ubound(InData%CMM, kind=B8Ki)) - call RegPack(Buf, InData%CMM) - end if - call RegPack(Buf, allocated(InData%MBM)) - if (allocated(InData%MBM)) then - call RegPackBounds(Buf, 2, lbound(InData%MBM, kind=B8Ki), ubound(InData%MBM, kind=B8Ki)) - call RegPack(Buf, InData%MBM) - end if - call RegPack(Buf, allocated(InData%PhiL_T)) - if (allocated(InData%PhiL_T)) then - call RegPackBounds(Buf, 2, lbound(InData%PhiL_T, kind=B8Ki), ubound(InData%PhiL_T, kind=B8Ki)) - call RegPack(Buf, InData%PhiL_T) - end if - call RegPack(Buf, allocated(InData%PhiLInvOmgL2)) - if (allocated(InData%PhiLInvOmgL2)) then - call RegPackBounds(Buf, 2, lbound(InData%PhiLInvOmgL2, kind=B8Ki), ubound(InData%PhiLInvOmgL2, kind=B8Ki)) - call RegPack(Buf, InData%PhiLInvOmgL2) - end if - call RegPack(Buf, allocated(InData%KLLm1)) - if (allocated(InData%KLLm1)) then - call RegPackBounds(Buf, 2, lbound(InData%KLLm1, kind=B8Ki), ubound(InData%KLLm1, kind=B8Ki)) - call RegPack(Buf, InData%KLLm1) - end if - call RegPack(Buf, allocated(InData%AM2Jac)) - if (allocated(InData%AM2Jac)) then - call RegPackBounds(Buf, 2, lbound(InData%AM2Jac, kind=B8Ki), ubound(InData%AM2Jac, kind=B8Ki)) - call RegPack(Buf, InData%AM2Jac) - end if - call RegPack(Buf, allocated(InData%AM2JacPiv)) - if (allocated(InData%AM2JacPiv)) then - call RegPackBounds(Buf, 1, lbound(InData%AM2JacPiv, kind=B8Ki), ubound(InData%AM2JacPiv, kind=B8Ki)) - call RegPack(Buf, InData%AM2JacPiv) - end if - call RegPack(Buf, allocated(InData%TI)) - if (allocated(InData%TI)) then - call RegPackBounds(Buf, 2, lbound(InData%TI, kind=B8Ki), ubound(InData%TI, kind=B8Ki)) - call RegPack(Buf, InData%TI) - end if - call RegPack(Buf, allocated(InData%TIreact)) - if (allocated(InData%TIreact)) then - call RegPackBounds(Buf, 2, lbound(InData%TIreact, kind=B8Ki), ubound(InData%TIreact, kind=B8Ki)) - call RegPack(Buf, InData%TIreact) - end if - call RegPack(Buf, InData%nNodes) - call RegPack(Buf, InData%nNodes_I) - call RegPack(Buf, InData%nNodes_L) - call RegPack(Buf, InData%nNodes_C) - call RegPack(Buf, allocated(InData%Nodes_I)) - if (allocated(InData%Nodes_I)) then - call RegPackBounds(Buf, 2, lbound(InData%Nodes_I, kind=B8Ki), ubound(InData%Nodes_I, kind=B8Ki)) - call RegPack(Buf, InData%Nodes_I) - end if - call RegPack(Buf, allocated(InData%Nodes_L)) - if (allocated(InData%Nodes_L)) then - call RegPackBounds(Buf, 2, lbound(InData%Nodes_L, kind=B8Ki), ubound(InData%Nodes_L, kind=B8Ki)) - call RegPack(Buf, InData%Nodes_L) - end if - call RegPack(Buf, allocated(InData%Nodes_C)) - if (allocated(InData%Nodes_C)) then - call RegPackBounds(Buf, 2, lbound(InData%Nodes_C, kind=B8Ki), ubound(InData%Nodes_C, kind=B8Ki)) - call RegPack(Buf, InData%Nodes_C) - end if - call RegPack(Buf, InData%nDOFI__) - call RegPack(Buf, InData%nDOFI_Rb) - call RegPack(Buf, InData%nDOFI_F) - call RegPack(Buf, InData%nDOFL_L) - call RegPack(Buf, InData%nDOFC__) - call RegPack(Buf, InData%nDOFC_Rb) - call RegPack(Buf, InData%nDOFC_L) - call RegPack(Buf, InData%nDOFC_F) - call RegPack(Buf, InData%nDOFR__) - call RegPack(Buf, InData%nDOF__Rb) - call RegPack(Buf, InData%nDOF__L) - call RegPack(Buf, InData%nDOF__F) - call RegPack(Buf, allocated(InData%IDI__)) - if (allocated(InData%IDI__)) then - call RegPackBounds(Buf, 1, lbound(InData%IDI__, kind=B8Ki), ubound(InData%IDI__, kind=B8Ki)) - call RegPack(Buf, InData%IDI__) - end if - call RegPack(Buf, allocated(InData%IDI_Rb)) - if (allocated(InData%IDI_Rb)) then - call RegPackBounds(Buf, 1, lbound(InData%IDI_Rb, kind=B8Ki), ubound(InData%IDI_Rb, kind=B8Ki)) - call RegPack(Buf, InData%IDI_Rb) - end if - call RegPack(Buf, allocated(InData%IDI_F)) - if (allocated(InData%IDI_F)) then - call RegPackBounds(Buf, 1, lbound(InData%IDI_F, kind=B8Ki), ubound(InData%IDI_F, kind=B8Ki)) - call RegPack(Buf, InData%IDI_F) - end if - call RegPack(Buf, allocated(InData%IDL_L)) - if (allocated(InData%IDL_L)) then - call RegPackBounds(Buf, 1, lbound(InData%IDL_L, kind=B8Ki), ubound(InData%IDL_L, kind=B8Ki)) - call RegPack(Buf, InData%IDL_L) - end if - call RegPack(Buf, allocated(InData%IDC__)) - if (allocated(InData%IDC__)) then - call RegPackBounds(Buf, 1, lbound(InData%IDC__, kind=B8Ki), ubound(InData%IDC__, kind=B8Ki)) - call RegPack(Buf, InData%IDC__) - end if - call RegPack(Buf, allocated(InData%IDC_Rb)) - if (allocated(InData%IDC_Rb)) then - call RegPackBounds(Buf, 1, lbound(InData%IDC_Rb, kind=B8Ki), ubound(InData%IDC_Rb, kind=B8Ki)) - call RegPack(Buf, InData%IDC_Rb) - end if - call RegPack(Buf, allocated(InData%IDC_L)) - if (allocated(InData%IDC_L)) then - call RegPackBounds(Buf, 1, lbound(InData%IDC_L, kind=B8Ki), ubound(InData%IDC_L, kind=B8Ki)) - call RegPack(Buf, InData%IDC_L) - end if - call RegPack(Buf, allocated(InData%IDC_F)) - if (allocated(InData%IDC_F)) then - call RegPackBounds(Buf, 1, lbound(InData%IDC_F, kind=B8Ki), ubound(InData%IDC_F, kind=B8Ki)) - call RegPack(Buf, InData%IDC_F) - end if - call RegPack(Buf, allocated(InData%IDR__)) - if (allocated(InData%IDR__)) then - call RegPackBounds(Buf, 1, lbound(InData%IDR__, kind=B8Ki), ubound(InData%IDR__, kind=B8Ki)) - call RegPack(Buf, InData%IDR__) - end if - call RegPack(Buf, allocated(InData%ID__Rb)) - if (allocated(InData%ID__Rb)) then - call RegPackBounds(Buf, 1, lbound(InData%ID__Rb, kind=B8Ki), ubound(InData%ID__Rb, kind=B8Ki)) - call RegPack(Buf, InData%ID__Rb) - end if - call RegPack(Buf, allocated(InData%ID__L)) - if (allocated(InData%ID__L)) then - call RegPackBounds(Buf, 1, lbound(InData%ID__L, kind=B8Ki), ubound(InData%ID__L, kind=B8Ki)) - call RegPack(Buf, InData%ID__L) - end if - call RegPack(Buf, allocated(InData%ID__F)) - if (allocated(InData%ID__F)) then - call RegPackBounds(Buf, 1, lbound(InData%ID__F, kind=B8Ki), ubound(InData%ID__F, kind=B8Ki)) - call RegPack(Buf, InData%ID__F) - end if - call RegPack(Buf, InData%NMOutputs) - call RegPack(Buf, InData%NumOuts) - call RegPack(Buf, InData%OutSwtch) - call RegPack(Buf, InData%UnJckF) - call RegPack(Buf, InData%Delim) - call RegPack(Buf, InData%OutFmt) - call RegPack(Buf, InData%OutSFmt) - call RegPack(Buf, allocated(InData%MoutLst)) + call RegPackAlloc(RF, InData%ElemsDOF) + call RegPackAlloc(RF, InData%DOFred2Nodes) + call RegPackAlloc(RF, InData%CtrlElem2Channel) + call RegPack(RF, InData%nDOFM) + call RegPack(RF, InData%SttcSolve) + call RegPack(RF, InData%GuyanLoadCorrection) + call RegPack(RF, InData%Floating) + call RegPackAlloc(RF, InData%KMMDiag) + call RegPackAlloc(RF, InData%CMMDiag) + call RegPackAlloc(RF, InData%MMB) + call RegPackAlloc(RF, InData%MBmmB) + call RegPackAlloc(RF, InData%C1_11) + call RegPackAlloc(RF, InData%C1_12) + call RegPackAlloc(RF, InData%D1_141) + call RegPackAlloc(RF, InData%D1_142) + call RegPackAlloc(RF, InData%PhiM) + call RegPackAlloc(RF, InData%C2_61) + call RegPackAlloc(RF, InData%C2_62) + call RegPackAlloc(RF, InData%PhiRb_TI) + call RegPackAlloc(RF, InData%D2_63) + call RegPackAlloc(RF, InData%D2_64) + call RegPackAlloc(RF, InData%MBB) + call RegPackAlloc(RF, InData%KBB) + call RegPackAlloc(RF, InData%CBB) + call RegPackAlloc(RF, InData%CMM) + call RegPackAlloc(RF, InData%MBM) + call RegPackAlloc(RF, InData%PhiL_T) + call RegPackAlloc(RF, InData%PhiLInvOmgL2) + call RegPackAlloc(RF, InData%KLLm1) + call RegPackAlloc(RF, InData%AM2Jac) + call RegPackAlloc(RF, InData%AM2JacPiv) + call RegPackAlloc(RF, InData%TI) + call RegPackAlloc(RF, InData%TIreact) + call RegPack(RF, InData%nNodes) + call RegPack(RF, InData%nNodes_I) + call RegPack(RF, InData%nNodes_L) + call RegPack(RF, InData%nNodes_C) + call RegPackAlloc(RF, InData%Nodes_I) + call RegPackAlloc(RF, InData%Nodes_L) + call RegPackAlloc(RF, InData%Nodes_C) + call RegPack(RF, InData%nDOFI__) + call RegPack(RF, InData%nDOFI_Rb) + call RegPack(RF, InData%nDOFI_F) + call RegPack(RF, InData%nDOFL_L) + call RegPack(RF, InData%nDOFC__) + call RegPack(RF, InData%nDOFC_Rb) + call RegPack(RF, InData%nDOFC_L) + call RegPack(RF, InData%nDOFC_F) + call RegPack(RF, InData%nDOFR__) + call RegPack(RF, InData%nDOF__Rb) + call RegPack(RF, InData%nDOF__L) + call RegPack(RF, InData%nDOF__F) + call RegPackAlloc(RF, InData%IDI__) + call RegPackAlloc(RF, InData%IDI_Rb) + call RegPackAlloc(RF, InData%IDI_F) + call RegPackAlloc(RF, InData%IDL_L) + call RegPackAlloc(RF, InData%IDC__) + call RegPackAlloc(RF, InData%IDC_Rb) + call RegPackAlloc(RF, InData%IDC_L) + call RegPackAlloc(RF, InData%IDC_F) + call RegPackAlloc(RF, InData%IDR__) + call RegPackAlloc(RF, InData%ID__Rb) + call RegPackAlloc(RF, InData%ID__L) + call RegPackAlloc(RF, InData%ID__F) + call RegPack(RF, InData%NMOutputs) + call RegPack(RF, InData%NumOuts) + call RegPack(RF, InData%OutSwtch) + call RegPack(RF, InData%UnJckF) + call RegPack(RF, InData%Delim) + call RegPack(RF, InData%OutFmt) + call RegPack(RF, InData%OutSFmt) + call RegPack(RF, allocated(InData%MoutLst)) if (allocated(InData%MoutLst)) then - call RegPackBounds(Buf, 1, lbound(InData%MoutLst, kind=B8Ki), ubound(InData%MoutLst, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%MoutLst, kind=B8Ki), ubound(InData%MoutLst, kind=B8Ki)) LB(1:1) = lbound(InData%MoutLst, kind=B8Ki) UB(1:1) = ubound(InData%MoutLst, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackMeshAuxDataType(Buf, InData%MoutLst(i1)) + call SD_PackMeshAuxDataType(RF, InData%MoutLst(i1)) end do end if - call RegPack(Buf, allocated(InData%MoutLst2)) + call RegPack(RF, allocated(InData%MoutLst2)) if (allocated(InData%MoutLst2)) then - call RegPackBounds(Buf, 1, lbound(InData%MoutLst2, kind=B8Ki), ubound(InData%MoutLst2, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%MoutLst2, kind=B8Ki), ubound(InData%MoutLst2, kind=B8Ki)) LB(1:1) = lbound(InData%MoutLst2, kind=B8Ki) UB(1:1) = ubound(InData%MoutLst2, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackMeshAuxDataType(Buf, InData%MoutLst2(i1)) + call SD_PackMeshAuxDataType(RF, InData%MoutLst2(i1)) end do end if - call RegPack(Buf, allocated(InData%MoutLst3)) + call RegPack(RF, allocated(InData%MoutLst3)) if (allocated(InData%MoutLst3)) then - call RegPackBounds(Buf, 1, lbound(InData%MoutLst3, kind=B8Ki), ubound(InData%MoutLst3, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%MoutLst3, kind=B8Ki), ubound(InData%MoutLst3, kind=B8Ki)) LB(1:1) = lbound(InData%MoutLst3, kind=B8Ki) UB(1:1) = ubound(InData%MoutLst3, kind=B8Ki) do i1 = LB(1), UB(1) - call SD_PackMeshAuxDataType(Buf, InData%MoutLst3(i1)) + call SD_PackMeshAuxDataType(RF, InData%MoutLst3(i1)) end do end if - call RegPack(Buf, allocated(InData%OutParam)) + call RegPack(RF, allocated(InData%OutParam)) if (allocated(InData%OutParam)) then - call RegPackBounds(Buf, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) + call RegPackBounds(RF, 1, lbound(InData%OutParam, kind=B8Ki), ubound(InData%OutParam, kind=B8Ki)) LB(1:1) = lbound(InData%OutParam, kind=B8Ki) UB(1:1) = ubound(InData%OutParam, kind=B8Ki) do i1 = LB(1), UB(1) - call NWTC_Library_PackOutParmType(Buf, InData%OutParam(i1)) + call NWTC_Library_PackOutParmType(RF, InData%OutParam(i1)) end do end if - call RegPack(Buf, InData%OutAll) - call RegPack(Buf, InData%OutCBModes) - call RegPack(Buf, InData%OutFEMModes) - call RegPack(Buf, InData%OutReact) - call RegPack(Buf, InData%OutAllInt) - call RegPack(Buf, InData%OutAllDims) - call RegPack(Buf, InData%OutDec) - call RegPack(Buf, allocated(InData%Jac_u_indx)) - if (allocated(InData%Jac_u_indx)) then - call RegPackBounds(Buf, 2, lbound(InData%Jac_u_indx, kind=B8Ki), ubound(InData%Jac_u_indx, kind=B8Ki)) - call RegPack(Buf, InData%Jac_u_indx) - end if - call RegPack(Buf, allocated(InData%du)) - if (allocated(InData%du)) then - call RegPackBounds(Buf, 1, lbound(InData%du, kind=B8Ki), ubound(InData%du, kind=B8Ki)) - call RegPack(Buf, InData%du) - end if - call RegPack(Buf, InData%dx) - call RegPack(Buf, InData%Jac_ny) - call RegPack(Buf, InData%Jac_nx) - call RegPack(Buf, InData%RotStates) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%OutAll) + call RegPack(RF, InData%OutCBModes) + call RegPack(RF, InData%OutFEMModes) + call RegPack(RF, InData%OutReact) + call RegPack(RF, InData%OutAllInt) + call RegPack(RF, InData%OutAllDims) + call RegPack(RF, InData%OutDec) + call RegPackAlloc(RF, InData%Jac_u_indx) + call RegPackAlloc(RF, InData%du) + call RegPack(RF, InData%dx) + call RegPack(RF, InData%Jac_ny) + call RegPack(RF, InData%Jac_nx) + call RegPack(RF, InData%RotStates) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SD_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(SD_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SD_UnPackParam' integer(B8Ki) :: i1, i2 integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%SDDeltaT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%IntMethod) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nDOF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nDOF_red) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Nmembers) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Elems)) deallocate(OutData%Elems) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Elems(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Elems.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Elems) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%SDDeltaT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%IntMethod); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nDOF_red); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Nmembers); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Elems); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%ElemProps)) deallocate(OutData%ElemProps) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%ElemProps(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ElemProps.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ElemProps.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SD_UnpackElemPropType(Buf, OutData%ElemProps(i1)) ! ElemProps + call SD_UnpackElemPropType(RF, OutData%ElemProps(i1)) ! ElemProps end do end if - if (allocated(OutData%FG)) deallocate(OutData%FG) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%FG(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%FG.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%FG) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DP0)) deallocate(OutData%DP0) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DP0(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DP0.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DP0) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%NodeID2JointID)) deallocate(OutData%NodeID2JointID) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%NodeID2JointID(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NodeID2JointID.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%NodeID2JointID) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%reduced) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%T_red)) deallocate(OutData%T_red) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%T_red(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%T_red.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%T_red) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%T_red_T)) deallocate(OutData%T_red_T) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%T_red_T(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%T_red_T.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%T_red_T) - if (RegCheckErr(Buf, RoutineName)) return - end if + call RegUnpackAlloc(RF, OutData%FG); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DP0); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%NodeID2JointID); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%reduced); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%T_red); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%T_red_T); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%NodesDOF)) deallocate(OutData%NodesDOF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%NodesDOF(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NodesDOF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NodesDOF.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SD_UnpackIList(Buf, OutData%NodesDOF(i1)) ! NodesDOF + call SD_UnpackIList(RF, OutData%NodesDOF(i1)) ! NodesDOF end do end if if (allocated(OutData%NodesDOFred)) deallocate(OutData%NodesDOFred) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%NodesDOFred(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NodesDOFred.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%NodesDOFred.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SD_UnpackIList(Buf, OutData%NodesDOFred(i1)) ! NodesDOFred + call SD_UnpackIList(RF, OutData%NodesDOFred(i1)) ! NodesDOFred end do end if - if (allocated(OutData%ElemsDOF)) deallocate(OutData%ElemsDOF) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ElemsDOF(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ElemsDOF.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ElemsDOF) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%DOFred2Nodes)) deallocate(OutData%DOFred2Nodes) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%DOFred2Nodes(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%DOFred2Nodes.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%DOFred2Nodes) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CtrlElem2Channel)) deallocate(OutData%CtrlElem2Channel) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CtrlElem2Channel(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CtrlElem2Channel.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CtrlElem2Channel) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%nDOFM) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%SttcSolve) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%GuyanLoadCorrection) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Floating) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%KMMDiag)) deallocate(OutData%KMMDiag) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%KMMDiag(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%KMMDiag.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%KMMDiag) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CMMDiag)) deallocate(OutData%CMMDiag) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CMMDiag(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CMMDiag.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CMMDiag) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MMB)) deallocate(OutData%MMB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MMB(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MMB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MMB) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MBmmB)) deallocate(OutData%MBmmB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MBmmB(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MBmmB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MBmmB) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%C1_11)) deallocate(OutData%C1_11) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%C1_11(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%C1_11.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%C1_11) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%C1_12)) deallocate(OutData%C1_12) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%C1_12(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%C1_12.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%C1_12) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%D1_141)) deallocate(OutData%D1_141) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%D1_141(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%D1_141.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%D1_141) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%D1_142)) deallocate(OutData%D1_142) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%D1_142(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%D1_142.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%D1_142) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PhiM)) deallocate(OutData%PhiM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PhiM(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PhiM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PhiM) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%C2_61)) deallocate(OutData%C2_61) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%C2_61(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%C2_61.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%C2_61) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%C2_62)) deallocate(OutData%C2_62) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%C2_62(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%C2_62.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%C2_62) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PhiRb_TI)) deallocate(OutData%PhiRb_TI) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PhiRb_TI(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PhiRb_TI.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PhiRb_TI) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%D2_63)) deallocate(OutData%D2_63) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%D2_63(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%D2_63.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%D2_63) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%D2_64)) deallocate(OutData%D2_64) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%D2_64(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%D2_64.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%D2_64) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MBB)) deallocate(OutData%MBB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MBB(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MBB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MBB) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%KBB)) deallocate(OutData%KBB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%KBB(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%KBB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%KBB) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CBB)) deallocate(OutData%CBB) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CBB(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CBB.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CBB) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%CMM)) deallocate(OutData%CMM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CMM(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CMM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CMM) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%MBM)) deallocate(OutData%MBM) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%MBM(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MBM.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%MBM) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PhiL_T)) deallocate(OutData%PhiL_T) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PhiL_T(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PhiL_T.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PhiL_T) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%PhiLInvOmgL2)) deallocate(OutData%PhiLInvOmgL2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%PhiLInvOmgL2(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%PhiLInvOmgL2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%PhiLInvOmgL2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%KLLm1)) deallocate(OutData%KLLm1) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%KLLm1(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%KLLm1.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%KLLm1) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AM2Jac)) deallocate(OutData%AM2Jac) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AM2Jac(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AM2Jac.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AM2Jac) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%AM2JacPiv)) deallocate(OutData%AM2JacPiv) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%AM2JacPiv(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%AM2JacPiv.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%AM2JacPiv) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TI)) deallocate(OutData%TI) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TI(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TI.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TI) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TIreact)) deallocate(OutData%TIreact) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TIreact(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TIreact.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TIreact) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%nNodes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nNodes_I) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nNodes_L) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nNodes_C) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Nodes_I)) deallocate(OutData%Nodes_I) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Nodes_I(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Nodes_I.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Nodes_I) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Nodes_L)) deallocate(OutData%Nodes_L) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Nodes_L(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Nodes_L.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Nodes_L) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Nodes_C)) deallocate(OutData%Nodes_C) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Nodes_C(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Nodes_C.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Nodes_C) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%nDOFI__) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nDOFI_Rb) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nDOFI_F) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nDOFL_L) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nDOFC__) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nDOFC_Rb) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nDOFC_L) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nDOFC_F) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nDOFR__) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nDOF__Rb) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nDOF__L) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%nDOF__F) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%IDI__)) deallocate(OutData%IDI__) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IDI__(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IDI__.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IDI__) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IDI_Rb)) deallocate(OutData%IDI_Rb) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IDI_Rb(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IDI_Rb.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IDI_Rb) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IDI_F)) deallocate(OutData%IDI_F) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IDI_F(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IDI_F.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IDI_F) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IDL_L)) deallocate(OutData%IDL_L) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IDL_L(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IDL_L.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IDL_L) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IDC__)) deallocate(OutData%IDC__) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IDC__(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IDC__.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IDC__) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IDC_Rb)) deallocate(OutData%IDC_Rb) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IDC_Rb(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IDC_Rb.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IDC_Rb) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IDC_L)) deallocate(OutData%IDC_L) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IDC_L(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IDC_L.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IDC_L) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IDC_F)) deallocate(OutData%IDC_F) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IDC_F(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IDC_F.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IDC_F) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%IDR__)) deallocate(OutData%IDR__) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%IDR__(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%IDR__.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%IDR__) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ID__Rb)) deallocate(OutData%ID__Rb) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ID__Rb(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ID__Rb.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ID__Rb) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ID__L)) deallocate(OutData%ID__L) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ID__L(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ID__L.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ID__L) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%ID__F)) deallocate(OutData%ID__F) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%ID__F(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ID__F.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%ID__F) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%NMOutputs) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumOuts) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutSwtch) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%UnJckF) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Delim) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFmt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutSFmt) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ElemsDOF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%DOFred2Nodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CtrlElem2Channel); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nDOFM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%SttcSolve); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GuyanLoadCorrection); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Floating); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%KMMDiag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CMMDiag); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MMB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MBmmB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%C1_11); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%C1_12); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%D1_141); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%D1_142); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PhiM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%C2_61); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%C2_62); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PhiRb_TI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%D2_63); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%D2_64); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MBB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%KBB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CBB); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%CMM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%MBM); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PhiL_T); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%PhiLInvOmgL2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%KLLm1); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AM2Jac); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%AM2JacPiv); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TI); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TIreact); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nNodes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nNodes_I); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nNodes_L); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nNodes_C); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Nodes_I); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Nodes_L); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Nodes_C); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nDOFI__); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nDOFI_Rb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nDOFI_F); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nDOFL_L); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nDOFC__); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nDOFC_Rb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nDOFC_L); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nDOFC_F); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nDOFR__); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nDOF__Rb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nDOF__L); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%nDOF__F); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IDI__); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IDI_Rb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IDI_F); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IDL_L); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IDC__); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IDC_Rb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IDC_L); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IDC_F); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%IDR__); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ID__Rb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ID__L); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%ID__F); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NMOutputs); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumOuts); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutSwtch); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%UnJckF); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Delim); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFmt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutSFmt); if (RegCheckErr(RF, RoutineName)) return if (allocated(OutData%MoutLst)) deallocate(OutData%MoutLst) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%MoutLst(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MoutLst.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MoutLst.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SD_UnpackMeshAuxDataType(Buf, OutData%MoutLst(i1)) ! MoutLst + call SD_UnpackMeshAuxDataType(RF, OutData%MoutLst(i1)) ! MoutLst end do end if if (allocated(OutData%MoutLst2)) deallocate(OutData%MoutLst2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%MoutLst2(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MoutLst2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MoutLst2.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SD_UnpackMeshAuxDataType(Buf, OutData%MoutLst2(i1)) ! MoutLst2 + call SD_UnpackMeshAuxDataType(RF, OutData%MoutLst2(i1)) ! MoutLst2 end do end if if (allocated(OutData%MoutLst3)) deallocate(OutData%MoutLst3) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%MoutLst3(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MoutLst3.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%MoutLst3.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call SD_UnpackMeshAuxDataType(Buf, OutData%MoutLst3(i1)) ! MoutLst3 + call SD_UnpackMeshAuxDataType(RF, OutData%MoutLst3(i1)) ! MoutLst3 end do end if if (allocated(OutData%OutParam)) deallocate(OutData%OutParam) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, IsAllocAssoc); if (RegCheckErr(RF, RoutineName)) return if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpackBounds(RF, 1, LB, UB); if (RegCheckErr(RF, RoutineName)) return allocate(OutData%OutParam(LB(1):UB(1)),stat=stat) if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Fatal, 'Error allocating OutData%OutParam.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if do i1 = LB(1), UB(1) - call NWTC_Library_UnpackOutParmType(Buf, OutData%OutParam(i1)) ! OutParam + call NWTC_Library_UnpackOutParmType(RF, OutData%OutParam(i1)) ! OutParam end do end if - call RegUnpack(Buf, OutData%OutAll) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutCBModes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFEMModes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutReact) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutAllInt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutAllDims) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutDec) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Jac_u_indx)) deallocate(OutData%Jac_u_indx) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Jac_u_indx(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Jac_u_indx.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Jac_u_indx) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%du)) deallocate(OutData%du) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%du(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%du.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%du) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%dx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Jac_ny) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Jac_nx) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%RotStates) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%OutAll); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutCBModes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFEMModes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutReact); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutAllInt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutAllDims); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutDec); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Jac_u_indx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%du); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Jac_ny); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Jac_nx); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%RotStates); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SD_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -6152,45 +3825,28 @@ subroutine SD_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine SD_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SD_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SD_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%TPMesh) - call MeshPack(Buf, InData%LMesh) - call RegPack(Buf, allocated(InData%CableDeltaL)) - if (allocated(InData%CableDeltaL)) then - call RegPackBounds(Buf, 1, lbound(InData%CableDeltaL, kind=B8Ki), ubound(InData%CableDeltaL, kind=B8Ki)) - call RegPack(Buf, InData%CableDeltaL) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%TPMesh) + call MeshPack(RF, InData%LMesh) + call RegPackAlloc(RF, InData%CableDeltaL) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SD_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SD_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SD_UnPackInput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%TPMesh) ! TPMesh - call MeshUnpack(Buf, OutData%LMesh) ! LMesh - if (allocated(OutData%CableDeltaL)) deallocate(OutData%CableDeltaL) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%CableDeltaL(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%CableDeltaL.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%CableDeltaL) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%TPMesh) ! TPMesh + call MeshUnpack(RF, OutData%LMesh) ! LMesh + call RegUnpackAlloc(RF, OutData%CableDeltaL); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SD_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -6248,47 +3904,30 @@ subroutine SD_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine SD_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SD_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SD_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call MeshPack(Buf, InData%Y1Mesh) - call MeshPack(Buf, InData%Y2Mesh) - call MeshPack(Buf, InData%Y3Mesh) - call RegPack(Buf, allocated(InData%WriteOutput)) - if (allocated(InData%WriteOutput)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutput, kind=B8Ki), ubound(InData%WriteOutput, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutput) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call MeshPack(RF, InData%Y1Mesh) + call MeshPack(RF, InData%Y2Mesh) + call MeshPack(RF, InData%Y3Mesh) + call RegPackAlloc(RF, InData%WriteOutput) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SD_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SD_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SD_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SD_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call MeshUnpack(Buf, OutData%Y1Mesh) ! Y1Mesh - call MeshUnpack(Buf, OutData%Y2Mesh) ! Y2Mesh - call MeshUnpack(Buf, OutData%Y3Mesh) ! Y3Mesh - if (allocated(OutData%WriteOutput)) deallocate(OutData%WriteOutput) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutput(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutput.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutput) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call MeshUnpack(RF, OutData%Y1Mesh) ! Y1Mesh + call MeshUnpack(RF, OutData%Y2Mesh) ! Y2Mesh + call MeshUnpack(RF, OutData%Y3Mesh) ! Y3Mesh + call RegUnpackAlloc(RF, OutData%WriteOutput); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine SD_Input_ExtrapInterp(u, t, u_out, t_out, ErrStat, ErrMsg) diff --git a/modules/supercontroller/src/SCDataEx_Types.f90 b/modules/supercontroller/src/SCDataEx_Types.f90 index fcefcf10ab..1b5fd5b28e 100644 --- a/modules/supercontroller/src/SCDataEx_Types.f90 +++ b/modules/supercontroller/src/SCDataEx_Types.f90 @@ -119,34 +119,31 @@ subroutine SC_DX_DestroyInitInput(InitInputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SC_DX_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_DX_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SC_DX_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SC_DX_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, InData%NumSC2Ctrl) - call RegPack(Buf, InData%NumSC2CtrlGlob) - call RegPack(Buf, InData%NumCtrl2SC) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%NumSC2Ctrl) + call RegPack(RF, InData%NumSC2CtrlGlob) + call RegPack(RF, InData%NumCtrl2SC) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SC_DX_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_DX_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SC_DX_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SC_DX_UnPackInitInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%NumSC2Ctrl) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%NumSC2Ctrl); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NumSC2Ctrl = OutData%NumSC2Ctrl - call RegUnpack(Buf, OutData%NumSC2CtrlGlob) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NumSC2CtrlGlob); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NumSC2CtrlGlob = OutData%NumSC2CtrlGlob - call RegUnpack(Buf, OutData%NumCtrl2SC) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NumCtrl2SC); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NumCtrl2SC = OutData%NumCtrl2SC end subroutine @@ -219,25 +216,25 @@ subroutine SC_DX_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine SC_DX_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_DX_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SC_DX_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SC_DX_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - if (RegCheckErr(Buf, RoutineName)) return + call NWTC_Library_PackProgDesc(RF, InData%Ver) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SC_DX_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_DX_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SC_DX_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SC_DX_UnPackInitOutput' - if (Buf%ErrStat /= ErrID_None) return - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver + if (RF%ErrStat /= ErrID_None) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver end subroutine SUBROUTINE SC_DX_C2Fary_CopyInitOutput(InitOutputData, ErrStat, ErrMsg, SkipPointers) @@ -296,26 +293,25 @@ subroutine SC_DX_DestroyParam(ParamData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SC_DX_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_DX_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(SC_DX_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'SC_DX_PackParam' - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, InData%useSC) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%useSC) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SC_DX_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_DX_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(SC_DX_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SC_DX_UnPackParam' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%useSC) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%useSC); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%useSC = OutData%useSC end subroutine @@ -398,29 +394,22 @@ subroutine SC_DX_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine SC_DX_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_DX_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SC_DX_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SC_DX_PackInput' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, associated(InData%toSC)) - if (associated(InData%toSC)) then - call RegPackBounds(Buf, 1, lbound(InData%toSC, kind=B8Ki), ubound(InData%toSC, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%toSC), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%toSC) - end if - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackPtr(RF, InData%toSC) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SC_DX_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_DX_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SC_DX_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SC_DX_UnPackInput' integer(B8Ki) :: LB(1), UB(1) @@ -428,33 +417,8 @@ subroutine SC_DX_UnPackInput(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - if (associated(OutData%toSC)) deallocate(OutData%toSC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%toSC, UB(1:1)-LB(1:1)) - OutData%toSC(LB(1):) => OutData%toSC - else - allocate(OutData%toSC(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%toSC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%toSC) - OutData%C_obj%toSC_Len = size(OutData%toSC) - if (OutData%C_obj%toSC_Len > 0) OutData%C_obj%toSC = c_loc(OutData%toSC(LB(1))) - call RegUnpack(Buf, OutData%toSC) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%toSC => null() - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackPtr(RF, OutData%toSC); if (RegCheckErr(RF, RoutineName)) return end subroutine SUBROUTINE SC_DX_C2Fary_CopyInput(InputData, ErrStat, ErrMsg, SkipPointers) @@ -576,37 +540,23 @@ subroutine SC_DX_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine SC_DX_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_DX_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SC_DX_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SC_DX_PackOutput' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, associated(InData%fromSC)) - if (associated(InData%fromSC)) then - call RegPackBounds(Buf, 1, lbound(InData%fromSC, kind=B8Ki), ubound(InData%fromSC, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%fromSC), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%fromSC) - end if - end if - call RegPack(Buf, associated(InData%fromSCglob)) - if (associated(InData%fromSCglob)) then - call RegPackBounds(Buf, 1, lbound(InData%fromSCglob, kind=B8Ki), ubound(InData%fromSCglob, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%fromSCglob), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%fromSCglob) - end if - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackPtr(RF, InData%fromSC) + call RegPackPtr(RF, InData%fromSCglob) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SC_DX_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_DX_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SC_DX_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SC_DX_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) @@ -614,59 +564,9 @@ subroutine SC_DX_UnPackOutput(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - if (associated(OutData%fromSC)) deallocate(OutData%fromSC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%fromSC, UB(1:1)-LB(1:1)) - OutData%fromSC(LB(1):) => OutData%fromSC - else - allocate(OutData%fromSC(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fromSC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%fromSC) - OutData%C_obj%fromSC_Len = size(OutData%fromSC) - if (OutData%C_obj%fromSC_Len > 0) OutData%C_obj%fromSC = c_loc(OutData%fromSC(LB(1))) - call RegUnpack(Buf, OutData%fromSC) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%fromSC => null() - end if - if (associated(OutData%fromSCglob)) deallocate(OutData%fromSCglob) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%fromSCglob, UB(1:1)-LB(1:1)) - OutData%fromSCglob(LB(1):) => OutData%fromSCglob - else - allocate(OutData%fromSCglob(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fromSCglob.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%fromSCglob) - OutData%C_obj%fromSCglob_Len = size(OutData%fromSCglob) - if (OutData%C_obj%fromSCglob_Len > 0) OutData%C_obj%fromSCglob = c_loc(OutData%fromSCglob(LB(1))) - call RegUnpack(Buf, OutData%fromSCglob) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%fromSCglob => null() - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackPtr(RF, OutData%fromSC); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%fromSCglob); if (RegCheckErr(RF, RoutineName)) return end subroutine SUBROUTINE SC_DX_C2Fary_CopyOutput(OutputData, ErrStat, ErrMsg, SkipPointers) diff --git a/modules/supercontroller/src/SuperController_Types.f90 b/modules/supercontroller/src/SuperController_Types.f90 index dce6747bce..8da3781664 100644 --- a/modules/supercontroller/src/SuperController_Types.f90 +++ b/modules/supercontroller/src/SuperController_Types.f90 @@ -205,30 +205,28 @@ subroutine SC_DestroyInitInput(InitInputData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SC_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SC_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SC_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, InData%nTurbines) - call RegPack(Buf, InData%DLL_FileName) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%nTurbines) + call RegPack(RF, InData%DLL_FileName) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SC_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SC_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SC_UnPackInitInput' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%nTurbines) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%nTurbines); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%nTurbines = OutData%nTurbines - call RegUnpack(Buf, OutData%DLL_FileName) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%DLL_FileName); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%DLL_FileName = transfer(OutData%DLL_FileName, OutData%C_obj%DLL_FileName ) end subroutine @@ -307,40 +305,36 @@ subroutine SC_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine SC_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SC_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SC_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - call RegPack(Buf, InData%NumCtrl2SC) - call RegPack(Buf, InData%nInpGlobal) - call RegPack(Buf, InData%NumSC2Ctrl) - call RegPack(Buf, InData%NumSC2CtrlGlob) - if (RegCheckErr(Buf, RoutineName)) return + call NWTC_Library_PackProgDesc(RF, InData%Ver) + call RegPack(RF, InData%NumCtrl2SC) + call RegPack(RF, InData%nInpGlobal) + call RegPack(RF, InData%NumSC2Ctrl) + call RegPack(RF, InData%NumSC2CtrlGlob) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SC_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SC_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SC_UnPackInitOutput' - if (Buf%ErrStat /= ErrID_None) return - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver - call RegUnpack(Buf, OutData%NumCtrl2SC) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver + call RegUnpack(RF, OutData%NumCtrl2SC); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NumCtrl2SC = OutData%NumCtrl2SC - call RegUnpack(Buf, OutData%nInpGlobal) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%nInpGlobal); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%nInpGlobal = OutData%nInpGlobal - call RegUnpack(Buf, OutData%NumSC2Ctrl) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NumSC2Ctrl); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NumSC2Ctrl = OutData%NumSC2Ctrl - call RegUnpack(Buf, OutData%NumSC2CtrlGlob) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NumSC2CtrlGlob); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NumSC2CtrlGlob = OutData%NumSC2CtrlGlob end subroutine @@ -476,48 +470,34 @@ subroutine SC_DestroyParam(ParamData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine SC_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(SC_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'SC_PackParam' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, InData%DT) - call RegPack(Buf, InData%nTurbines) - call RegPack(Buf, InData%NumCtrl2SC) - call RegPack(Buf, InData%nInpGlobal) - call RegPack(Buf, InData%NumSC2Ctrl) - call RegPack(Buf, InData%NumSC2CtrlGlob) - call RegPack(Buf, InData%NumStatesGlobal) - call RegPack(Buf, InData%NumStatesTurbine) - call RegPack(Buf, InData%NumParamGlobal) - call RegPack(Buf, InData%NumParamTurbine) - call RegPack(Buf, associated(InData%ParamGlobal)) - if (associated(InData%ParamGlobal)) then - call RegPackBounds(Buf, 1, lbound(InData%ParamGlobal, kind=B8Ki), ubound(InData%ParamGlobal, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%ParamGlobal), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%ParamGlobal) - end if - end if - call RegPack(Buf, associated(InData%ParamTurbine)) - if (associated(InData%ParamTurbine)) then - call RegPackBounds(Buf, 1, lbound(InData%ParamTurbine, kind=B8Ki), ubound(InData%ParamTurbine, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%ParamTurbine), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%ParamTurbine) - end if - end if - call DLLTypePack(Buf, InData%DLL_Trgt) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%DT) + call RegPack(RF, InData%nTurbines) + call RegPack(RF, InData%NumCtrl2SC) + call RegPack(RF, InData%nInpGlobal) + call RegPack(RF, InData%NumSC2Ctrl) + call RegPack(RF, InData%NumSC2CtrlGlob) + call RegPack(RF, InData%NumStatesGlobal) + call RegPack(RF, InData%NumStatesTurbine) + call RegPack(RF, InData%NumParamGlobal) + call RegPack(RF, InData%NumParamTurbine) + call RegPackPtr(RF, InData%ParamGlobal) + call RegPackPtr(RF, InData%ParamTurbine) + call DLLTypePack(RF, InData%DLL_Trgt) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SC_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(SC_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SC_UnPackParam' integer(B8Ki) :: LB(1), UB(1) @@ -525,90 +505,30 @@ subroutine SC_UnPackParam(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DT) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DT); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%DT = OutData%DT - call RegUnpack(Buf, OutData%nTurbines) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%nTurbines); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%nTurbines = OutData%nTurbines - call RegUnpack(Buf, OutData%NumCtrl2SC) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NumCtrl2SC); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NumCtrl2SC = OutData%NumCtrl2SC - call RegUnpack(Buf, OutData%nInpGlobal) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%nInpGlobal); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%nInpGlobal = OutData%nInpGlobal - call RegUnpack(Buf, OutData%NumSC2Ctrl) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NumSC2Ctrl); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NumSC2Ctrl = OutData%NumSC2Ctrl - call RegUnpack(Buf, OutData%NumSC2CtrlGlob) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NumSC2CtrlGlob); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NumSC2CtrlGlob = OutData%NumSC2CtrlGlob - call RegUnpack(Buf, OutData%NumStatesGlobal) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NumStatesGlobal); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NumStatesGlobal = OutData%NumStatesGlobal - call RegUnpack(Buf, OutData%NumStatesTurbine) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NumStatesTurbine); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NumStatesTurbine = OutData%NumStatesTurbine - call RegUnpack(Buf, OutData%NumParamGlobal) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NumParamGlobal); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NumParamGlobal = OutData%NumParamGlobal - call RegUnpack(Buf, OutData%NumParamTurbine) - if (RegCheckErr(Buf, RoutineName)) return + call RegUnpack(RF, OutData%NumParamTurbine); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%NumParamTurbine = OutData%NumParamTurbine - if (associated(OutData%ParamGlobal)) deallocate(OutData%ParamGlobal) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%ParamGlobal, UB(1:1)-LB(1:1)) - OutData%ParamGlobal(LB(1):) => OutData%ParamGlobal - else - allocate(OutData%ParamGlobal(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ParamGlobal.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%ParamGlobal) - OutData%C_obj%ParamGlobal_Len = size(OutData%ParamGlobal) - if (OutData%C_obj%ParamGlobal_Len > 0) OutData%C_obj%ParamGlobal = c_loc(OutData%ParamGlobal(LB(1))) - call RegUnpack(Buf, OutData%ParamGlobal) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%ParamGlobal => null() - end if - if (associated(OutData%ParamTurbine)) deallocate(OutData%ParamTurbine) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%ParamTurbine, UB(1:1)-LB(1:1)) - OutData%ParamTurbine(LB(1):) => OutData%ParamTurbine - else - allocate(OutData%ParamTurbine(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%ParamTurbine.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%ParamTurbine) - OutData%C_obj%ParamTurbine_Len = size(OutData%ParamTurbine) - if (OutData%C_obj%ParamTurbine_Len > 0) OutData%C_obj%ParamTurbine = c_loc(OutData%ParamTurbine(LB(1))) - call RegUnpack(Buf, OutData%ParamTurbine) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%ParamTurbine => null() - end if - call DLLTypeUnpack(Buf, OutData%DLL_Trgt) ! DLL_Trgt + call RegUnpackPtr(RF, OutData%ParamGlobal); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%ParamTurbine); if (RegCheckErr(RF, RoutineName)) return + call DLLTypeUnpack(RF, OutData%DLL_Trgt) ! DLL_Trgt end subroutine SUBROUTINE SC_C2Fary_CopyParam(ParamData, ErrStat, ErrMsg, SkipPointers) @@ -771,37 +691,23 @@ subroutine SC_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) end if end subroutine -subroutine SC_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SC_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SC_PackDiscState' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, associated(InData%Global)) - if (associated(InData%Global)) then - call RegPackBounds(Buf, 1, lbound(InData%Global, kind=B8Ki), ubound(InData%Global, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%Global), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%Global) - end if - end if - call RegPack(Buf, associated(InData%Turbine)) - if (associated(InData%Turbine)) then - call RegPackBounds(Buf, 1, lbound(InData%Turbine, kind=B8Ki), ubound(InData%Turbine, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%Turbine), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%Turbine) - end if - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackPtr(RF, InData%Global) + call RegPackPtr(RF, InData%Turbine) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SC_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SC_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SC_UnPackDiscState' integer(B8Ki) :: LB(1), UB(1) @@ -809,59 +715,9 @@ subroutine SC_UnPackDiscState(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - if (associated(OutData%Global)) deallocate(OutData%Global) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%Global, UB(1:1)-LB(1:1)) - OutData%Global(LB(1):) => OutData%Global - else - allocate(OutData%Global(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Global.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%Global) - OutData%C_obj%Global_Len = size(OutData%Global) - if (OutData%C_obj%Global_Len > 0) OutData%C_obj%Global = c_loc(OutData%Global(LB(1))) - call RegUnpack(Buf, OutData%Global) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%Global => null() - end if - if (associated(OutData%Turbine)) deallocate(OutData%Turbine) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%Turbine, UB(1:1)-LB(1:1)) - OutData%Turbine(LB(1):) => OutData%Turbine - else - allocate(OutData%Turbine(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Turbine.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%Turbine) - OutData%C_obj%Turbine_Len = size(OutData%Turbine) - if (OutData%C_obj%Turbine_Len > 0) OutData%C_obj%Turbine = c_loc(OutData%Turbine(LB(1))) - call RegUnpack(Buf, OutData%Turbine) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%Turbine => null() - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackPtr(RF, OutData%Global); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%Turbine); if (RegCheckErr(RF, RoutineName)) return end subroutine SUBROUTINE SC_C2Fary_CopyDiscState(DiscStateData, ErrStat, ErrMsg, SkipPointers) @@ -962,26 +818,25 @@ subroutine SC_DestroyContState(ContStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SC_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SC_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SC_PackContState' - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, InData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%Dummy) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SC_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SC_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SC_UnPackContState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Dummy); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%Dummy = OutData%Dummy end subroutine @@ -1043,26 +898,25 @@ subroutine SC_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SC_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SC_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SC_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, InData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%Dummy) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SC_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SC_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SC_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Dummy); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%Dummy = OutData%Dummy end subroutine @@ -1124,26 +978,25 @@ subroutine SC_DestroyMisc(MiscData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SC_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(SC_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'SC_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, InData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%Dummy) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SC_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(SC_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SC_UnPackMisc' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Dummy); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%Dummy = OutData%Dummy end subroutine @@ -1205,26 +1058,25 @@ subroutine SC_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine SC_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(SC_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'SC_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, InData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + call RegPack(RF, InData%Dummy) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SC_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(SC_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SC_UnPackOtherState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%Dummy) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%Dummy); if (RegCheckErr(RF, RoutineName)) return OutData%C_obj%Dummy = OutData%Dummy end subroutine @@ -1328,37 +1180,23 @@ subroutine SC_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine SC_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SC_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SC_PackInput' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, associated(InData%toSCglob)) - if (associated(InData%toSCglob)) then - call RegPackBounds(Buf, 1, lbound(InData%toSCglob, kind=B8Ki), ubound(InData%toSCglob, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%toSCglob), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%toSCglob) - end if - end if - call RegPack(Buf, associated(InData%toSC)) - if (associated(InData%toSC)) then - call RegPackBounds(Buf, 1, lbound(InData%toSC, kind=B8Ki), ubound(InData%toSC, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%toSC), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%toSC) - end if - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackPtr(RF, InData%toSCglob) + call RegPackPtr(RF, InData%toSC) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SC_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SC_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SC_UnPackInput' integer(B8Ki) :: LB(1), UB(1) @@ -1366,59 +1204,9 @@ subroutine SC_UnPackInput(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - if (associated(OutData%toSCglob)) deallocate(OutData%toSCglob) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%toSCglob, UB(1:1)-LB(1:1)) - OutData%toSCglob(LB(1):) => OutData%toSCglob - else - allocate(OutData%toSCglob(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%toSCglob.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%toSCglob) - OutData%C_obj%toSCglob_Len = size(OutData%toSCglob) - if (OutData%C_obj%toSCglob_Len > 0) OutData%C_obj%toSCglob = c_loc(OutData%toSCglob(LB(1))) - call RegUnpack(Buf, OutData%toSCglob) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%toSCglob => null() - end if - if (associated(OutData%toSC)) deallocate(OutData%toSC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%toSC, UB(1:1)-LB(1:1)) - OutData%toSC(LB(1):) => OutData%toSC - else - allocate(OutData%toSC(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%toSC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%toSC) - OutData%C_obj%toSC_Len = size(OutData%toSC) - if (OutData%C_obj%toSC_Len > 0) OutData%C_obj%toSC = c_loc(OutData%toSC(LB(1))) - call RegUnpack(Buf, OutData%toSC) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%toSC => null() - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackPtr(RF, OutData%toSCglob); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%toSC); if (RegCheckErr(RF, RoutineName)) return end subroutine SUBROUTINE SC_C2Fary_CopyInput(InputData, ErrStat, ErrMsg, SkipPointers) @@ -1561,37 +1349,23 @@ subroutine SC_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine SC_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(SC_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'SC_PackOutput' logical :: PtrInIndex - if (Buf%ErrStat >= AbortErrLev) return + if (RF%ErrStat >= AbortErrLev) return if (c_associated(InData%C_obj%object)) then - call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', Buf%ErrStat, Buf%ErrMsg, RoutineName) + call SetErrStat(ErrID_Severe,'C_obj%object cannot be packed.', RF%ErrStat, RF%ErrMsg, RoutineName) return end if - call RegPack(Buf, associated(InData%fromSCglob)) - if (associated(InData%fromSCglob)) then - call RegPackBounds(Buf, 1, lbound(InData%fromSCglob, kind=B8Ki), ubound(InData%fromSCglob, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%fromSCglob), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%fromSCglob) - end if - end if - call RegPack(Buf, associated(InData%fromSC)) - if (associated(InData%fromSC)) then - call RegPackBounds(Buf, 1, lbound(InData%fromSC, kind=B8Ki), ubound(InData%fromSC, kind=B8Ki)) - call RegPackPointer(Buf, c_loc(InData%fromSC), PtrInIndex) - if (.not. PtrInIndex) then - call RegPack(Buf, InData%fromSC) - end if - end if - if (RegCheckErr(Buf, RoutineName)) return + call RegPackPtr(RF, InData%fromSCglob) + call RegPackPtr(RF, InData%fromSC) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine SC_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine SC_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(SC_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'SC_UnPackOutput' integer(B8Ki) :: LB(1), UB(1) @@ -1599,59 +1373,9 @@ subroutine SC_UnPackOutput(Buf, OutData) logical :: IsAllocAssoc integer(B8Ki) :: PtrIdx type(c_ptr) :: Ptr - if (Buf%ErrStat /= ErrID_None) return - if (associated(OutData%fromSCglob)) deallocate(OutData%fromSCglob) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%fromSCglob, UB(1:1)-LB(1:1)) - OutData%fromSCglob(LB(1):) => OutData%fromSCglob - else - allocate(OutData%fromSCglob(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fromSCglob.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%fromSCglob) - OutData%C_obj%fromSCglob_Len = size(OutData%fromSCglob) - if (OutData%C_obj%fromSCglob_Len > 0) OutData%C_obj%fromSCglob = c_loc(OutData%fromSCglob(LB(1))) - call RegUnpack(Buf, OutData%fromSCglob) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%fromSCglob => null() - end if - if (associated(OutData%fromSC)) deallocate(OutData%fromSC) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpackPointer(Buf, Ptr, PtrIdx) - if (RegCheckErr(Buf, RoutineName)) return - if (c_associated(Ptr)) then - call c_f_pointer(Ptr, OutData%fromSC, UB(1:1)-LB(1:1)) - OutData%fromSC(LB(1):) => OutData%fromSC - else - allocate(OutData%fromSC(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%fromSC.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - Buf%Pointers(PtrIdx) = c_loc(OutData%fromSC) - OutData%C_obj%fromSC_Len = size(OutData%fromSC) - if (OutData%C_obj%fromSC_Len > 0) OutData%C_obj%fromSC = c_loc(OutData%fromSC(LB(1))) - call RegUnpack(Buf, OutData%fromSC) - if (RegCheckErr(Buf, RoutineName)) return - end if - else - OutData%fromSC => null() - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackPtr(RF, OutData%fromSCglob); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackPtr(RF, OutData%fromSC); if (RegCheckErr(RF, RoutineName)) return end subroutine SUBROUTINE SC_C2Fary_CopyOutput(OutputData, ErrStat, ErrMsg, SkipPointers) diff --git a/modules/wakedynamics/src/WakeDynamics_Types.f90 b/modules/wakedynamics/src/WakeDynamics_Types.f90 index ea0d0bd9b8..54046decbb 100644 --- a/modules/wakedynamics/src/WakeDynamics_Types.f90 +++ b/modules/wakedynamics/src/WakeDynamics_Types.f90 @@ -282,115 +282,83 @@ subroutine WD_DestroyInputFileType(InputFileTypeData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine WD_PackInputFileType(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_PackInputFileType(RF, Indata) + type(RegFile), intent(inout) :: RF type(WD_InputFileType), intent(in) :: InData character(*), parameter :: RoutineName = 'WD_PackInputFileType' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%dr) - call RegPack(Buf, InData%NumRadii) - call RegPack(Buf, InData%NumPlanes) - call RegPack(Buf, InData%Mod_Wake) - call RegPack(Buf, InData%f_c) - call RegPack(Buf, InData%C_HWkDfl_O) - call RegPack(Buf, InData%C_HWkDfl_OY) - call RegPack(Buf, InData%C_HWkDfl_x) - call RegPack(Buf, InData%C_HWkDfl_xY) - call RegPack(Buf, InData%C_NearWake) - call RegPack(Buf, InData%k_vAmb) - call RegPack(Buf, InData%k_vShr) - call RegPack(Buf, InData%C_vAmb_DMin) - call RegPack(Buf, InData%C_vAmb_DMax) - call RegPack(Buf, InData%C_vAmb_FMin) - call RegPack(Buf, InData%C_vAmb_Exp) - call RegPack(Buf, InData%C_vShr_DMin) - call RegPack(Buf, InData%C_vShr_DMax) - call RegPack(Buf, InData%C_vShr_FMin) - call RegPack(Buf, InData%C_vShr_Exp) - call RegPack(Buf, InData%Mod_WakeDiam) - call RegPack(Buf, InData%C_WakeDiam) - call RegPack(Buf, InData%Swirl) - call RegPack(Buf, InData%k_VortexDecay) - call RegPack(Buf, InData%sigma_D) - call RegPack(Buf, InData%NumVortices) - call RegPack(Buf, InData%FilterInit) - call RegPack(Buf, InData%k_vCurl) - call RegPack(Buf, InData%OutAllPlanes) - call RegPack(Buf, InData%WAT) - call RegPack(Buf, InData%WAT_k_Def) - call RegPack(Buf, InData%WAT_k_Grad) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%dr) + call RegPack(RF, InData%NumRadii) + call RegPack(RF, InData%NumPlanes) + call RegPack(RF, InData%Mod_Wake) + call RegPack(RF, InData%f_c) + call RegPack(RF, InData%C_HWkDfl_O) + call RegPack(RF, InData%C_HWkDfl_OY) + call RegPack(RF, InData%C_HWkDfl_x) + call RegPack(RF, InData%C_HWkDfl_xY) + call RegPack(RF, InData%C_NearWake) + call RegPack(RF, InData%k_vAmb) + call RegPack(RF, InData%k_vShr) + call RegPack(RF, InData%C_vAmb_DMin) + call RegPack(RF, InData%C_vAmb_DMax) + call RegPack(RF, InData%C_vAmb_FMin) + call RegPack(RF, InData%C_vAmb_Exp) + call RegPack(RF, InData%C_vShr_DMin) + call RegPack(RF, InData%C_vShr_DMax) + call RegPack(RF, InData%C_vShr_FMin) + call RegPack(RF, InData%C_vShr_Exp) + call RegPack(RF, InData%Mod_WakeDiam) + call RegPack(RF, InData%C_WakeDiam) + call RegPack(RF, InData%Swirl) + call RegPack(RF, InData%k_VortexDecay) + call RegPack(RF, InData%sigma_D) + call RegPack(RF, InData%NumVortices) + call RegPack(RF, InData%FilterInit) + call RegPack(RF, InData%k_vCurl) + call RegPack(RF, InData%OutAllPlanes) + call RegPack(RF, InData%WAT) + call RegPack(RF, InData%WAT_k_Def) + call RegPack(RF, InData%WAT_k_Grad) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WD_UnPackInputFileType(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_UnPackInputFileType(RF, OutData) + type(RegFile), intent(inout) :: RF type(WD_InputFileType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WD_UnPackInputFileType' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%dr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumRadii) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumPlanes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Mod_Wake) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%f_c) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_HWkDfl_O) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_HWkDfl_OY) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_HWkDfl_x) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_HWkDfl_xY) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_NearWake) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k_vAmb) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k_vShr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_vAmb_DMin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_vAmb_DMax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_vAmb_FMin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_vAmb_Exp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_vShr_DMin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_vShr_DMax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_vShr_FMin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_vShr_Exp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Mod_WakeDiam) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_WakeDiam) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Swirl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k_VortexDecay) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%sigma_D) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumVortices) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FilterInit) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k_vCurl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutAllPlanes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WAT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WAT_k_Def) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WAT_k_Grad) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%dr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumRadii); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumPlanes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Mod_Wake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%f_c); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_HWkDfl_O); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_HWkDfl_OY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_HWkDfl_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_HWkDfl_xY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_NearWake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k_vAmb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k_vShr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_vAmb_DMin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_vAmb_DMax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_vAmb_FMin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_vAmb_Exp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_vShr_DMin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_vShr_DMax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_vShr_FMin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_vShr_Exp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Mod_WakeDiam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_WakeDiam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Swirl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k_VortexDecay); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%sigma_D); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumVortices); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FilterInit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k_vCurl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutAllPlanes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WAT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WAT_k_Def); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WAT_k_Grad); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine WD_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg) @@ -424,27 +392,25 @@ subroutine WD_DestroyInitInput(InitInputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine WD_PackInitInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_PackInitInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(WD_InitInputType), intent(in) :: InData character(*), parameter :: RoutineName = 'WD_PackInitInput' - if (Buf%ErrStat >= AbortErrLev) return - call WD_PackInputFileType(Buf, InData%InputFileData) - call RegPack(Buf, InData%TurbNum) - call RegPack(Buf, InData%OutFileRoot) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call WD_PackInputFileType(RF, InData%InputFileData) + call RegPack(RF, InData%TurbNum) + call RegPack(RF, InData%OutFileRoot) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WD_UnPackInitInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_UnPackInitInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(WD_InitInputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WD_UnPackInitInput' - if (Buf%ErrStat /= ErrID_None) return - call WD_UnpackInputFileType(Buf, OutData%InputFileData) ! InputFileData - call RegUnpack(Buf, OutData%TurbNum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFileRoot) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call WD_UnpackInputFileType(RF, OutData%InputFileData) ! InputFileData + call RegUnpack(RF, OutData%TurbNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFileRoot); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine WD_CopyInitOutput(SrcInitOutputData, DstInitOutputData, CtrlCode, ErrStat, ErrMsg) @@ -507,62 +473,28 @@ subroutine WD_DestroyInitOutput(InitOutputData, ErrStat, ErrMsg) call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName) end subroutine -subroutine WD_PackInitOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_PackInitOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(WD_InitOutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'WD_PackInitOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%WriteOutputHdr)) - if (allocated(InData%WriteOutputHdr)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputHdr, kind=B8Ki), ubound(InData%WriteOutputHdr, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputHdr) - end if - call RegPack(Buf, allocated(InData%WriteOutputUnt)) - if (allocated(InData%WriteOutputUnt)) then - call RegPackBounds(Buf, 1, lbound(InData%WriteOutputUnt, kind=B8Ki), ubound(InData%WriteOutputUnt, kind=B8Ki)) - call RegPack(Buf, InData%WriteOutputUnt) - end if - call NWTC_Library_PackProgDesc(Buf, InData%Ver) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%WriteOutputHdr) + call RegPackAlloc(RF, InData%WriteOutputUnt) + call NWTC_Library_PackProgDesc(RF, InData%Ver) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WD_UnPackInitOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_UnPackInitOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(WD_InitOutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WD_UnPackInitOutput' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%WriteOutputHdr)) deallocate(OutData%WriteOutputHdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputHdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputHdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputHdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WriteOutputUnt)) deallocate(OutData%WriteOutputUnt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WriteOutputUnt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WriteOutputUnt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WriteOutputUnt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call NWTC_Library_UnpackProgDesc(Buf, OutData%Ver) ! Ver + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%WriteOutputHdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WriteOutputUnt); if (RegCheckErr(RF, RoutineName)) return + call NWTC_Library_UnpackProgDesc(RF, OutData%Ver) ! Ver end subroutine subroutine WD_CopyContState(SrcContStateData, DstContStateData, CtrlCode, ErrStat, ErrMsg) @@ -586,22 +518,21 @@ subroutine WD_DestroyContState(ContStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine WD_PackContState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_PackContState(RF, Indata) + type(RegFile), intent(inout) :: RF type(WD_ContinuousStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'WD_PackContState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyContState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyContState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WD_UnPackContState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_UnPackContState(RF, OutData) + type(RegFile), intent(inout) :: RF type(WD_ContinuousStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WD_UnPackContState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyContState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyContState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine WD_CopyDiscState(SrcDiscStateData, DstDiscStateData, CtrlCode, ErrStat, ErrMsg) @@ -854,316 +785,58 @@ subroutine WD_DestroyDiscState(DiscStateData, ErrStat, ErrMsg) end if end subroutine -subroutine WD_PackDiscState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_PackDiscState(RF, Indata) + type(RegFile), intent(inout) :: RF type(WD_DiscreteStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'WD_PackDiscState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%xhat_plane)) - if (allocated(InData%xhat_plane)) then - call RegPackBounds(Buf, 2, lbound(InData%xhat_plane, kind=B8Ki), ubound(InData%xhat_plane, kind=B8Ki)) - call RegPack(Buf, InData%xhat_plane) - end if - call RegPack(Buf, allocated(InData%YawErr_filt)) - if (allocated(InData%YawErr_filt)) then - call RegPackBounds(Buf, 1, lbound(InData%YawErr_filt, kind=B8Ki), ubound(InData%YawErr_filt, kind=B8Ki)) - call RegPack(Buf, InData%YawErr_filt) - end if - call RegPack(Buf, InData%psi_skew_filt) - call RegPack(Buf, InData%chi_skew_filt) - call RegPack(Buf, allocated(InData%V_plane_filt)) - if (allocated(InData%V_plane_filt)) then - call RegPackBounds(Buf, 2, lbound(InData%V_plane_filt, kind=B8Ki), ubound(InData%V_plane_filt, kind=B8Ki)) - call RegPack(Buf, InData%V_plane_filt) - end if - call RegPack(Buf, allocated(InData%p_plane)) - if (allocated(InData%p_plane)) then - call RegPackBounds(Buf, 2, lbound(InData%p_plane, kind=B8Ki), ubound(InData%p_plane, kind=B8Ki)) - call RegPack(Buf, InData%p_plane) - end if - call RegPack(Buf, allocated(InData%x_plane)) - if (allocated(InData%x_plane)) then - call RegPackBounds(Buf, 1, lbound(InData%x_plane, kind=B8Ki), ubound(InData%x_plane, kind=B8Ki)) - call RegPack(Buf, InData%x_plane) - end if - call RegPack(Buf, allocated(InData%Vx_wake)) - if (allocated(InData%Vx_wake)) then - call RegPackBounds(Buf, 2, lbound(InData%Vx_wake, kind=B8Ki), ubound(InData%Vx_wake, kind=B8Ki)) - call RegPack(Buf, InData%Vx_wake) - end if - call RegPack(Buf, allocated(InData%Vr_wake)) - if (allocated(InData%Vr_wake)) then - call RegPackBounds(Buf, 2, lbound(InData%Vr_wake, kind=B8Ki), ubound(InData%Vr_wake, kind=B8Ki)) - call RegPack(Buf, InData%Vr_wake) - end if - call RegPack(Buf, allocated(InData%Vx_wake2)) - if (allocated(InData%Vx_wake2)) then - call RegPackBounds(Buf, 3, lbound(InData%Vx_wake2, kind=B8Ki), ubound(InData%Vx_wake2, kind=B8Ki)) - call RegPack(Buf, InData%Vx_wake2) - end if - call RegPack(Buf, allocated(InData%Vy_wake2)) - if (allocated(InData%Vy_wake2)) then - call RegPackBounds(Buf, 3, lbound(InData%Vy_wake2, kind=B8Ki), ubound(InData%Vy_wake2, kind=B8Ki)) - call RegPack(Buf, InData%Vy_wake2) - end if - call RegPack(Buf, allocated(InData%Vz_wake2)) - if (allocated(InData%Vz_wake2)) then - call RegPackBounds(Buf, 3, lbound(InData%Vz_wake2, kind=B8Ki), ubound(InData%Vz_wake2, kind=B8Ki)) - call RegPack(Buf, InData%Vz_wake2) - end if - call RegPack(Buf, allocated(InData%Vx_wind_disk_filt)) - if (allocated(InData%Vx_wind_disk_filt)) then - call RegPackBounds(Buf, 1, lbound(InData%Vx_wind_disk_filt, kind=B8Ki), ubound(InData%Vx_wind_disk_filt, kind=B8Ki)) - call RegPack(Buf, InData%Vx_wind_disk_filt) - end if - call RegPack(Buf, allocated(InData%TI_amb_filt)) - if (allocated(InData%TI_amb_filt)) then - call RegPackBounds(Buf, 1, lbound(InData%TI_amb_filt, kind=B8Ki), ubound(InData%TI_amb_filt, kind=B8Ki)) - call RegPack(Buf, InData%TI_amb_filt) - end if - call RegPack(Buf, allocated(InData%D_rotor_filt)) - if (allocated(InData%D_rotor_filt)) then - call RegPackBounds(Buf, 1, lbound(InData%D_rotor_filt, kind=B8Ki), ubound(InData%D_rotor_filt, kind=B8Ki)) - call RegPack(Buf, InData%D_rotor_filt) - end if - call RegPack(Buf, InData%Vx_rel_disk_filt) - call RegPack(Buf, allocated(InData%Ct_azavg_filt)) - if (allocated(InData%Ct_azavg_filt)) then - call RegPackBounds(Buf, 1, lbound(InData%Ct_azavg_filt, kind=B8Ki), ubound(InData%Ct_azavg_filt, kind=B8Ki)) - call RegPack(Buf, InData%Ct_azavg_filt) - end if - call RegPack(Buf, allocated(InData%Cq_azavg_filt)) - if (allocated(InData%Cq_azavg_filt)) then - call RegPackBounds(Buf, 1, lbound(InData%Cq_azavg_filt, kind=B8Ki), ubound(InData%Cq_azavg_filt, kind=B8Ki)) - call RegPack(Buf, InData%Cq_azavg_filt) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%xhat_plane) + call RegPackAlloc(RF, InData%YawErr_filt) + call RegPack(RF, InData%psi_skew_filt) + call RegPack(RF, InData%chi_skew_filt) + call RegPackAlloc(RF, InData%V_plane_filt) + call RegPackAlloc(RF, InData%p_plane) + call RegPackAlloc(RF, InData%x_plane) + call RegPackAlloc(RF, InData%Vx_wake) + call RegPackAlloc(RF, InData%Vr_wake) + call RegPackAlloc(RF, InData%Vx_wake2) + call RegPackAlloc(RF, InData%Vy_wake2) + call RegPackAlloc(RF, InData%Vz_wake2) + call RegPackAlloc(RF, InData%Vx_wind_disk_filt) + call RegPackAlloc(RF, InData%TI_amb_filt) + call RegPackAlloc(RF, InData%D_rotor_filt) + call RegPack(RF, InData%Vx_rel_disk_filt) + call RegPackAlloc(RF, InData%Ct_azavg_filt) + call RegPackAlloc(RF, InData%Cq_azavg_filt) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WD_UnPackDiscState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_UnPackDiscState(RF, OutData) + type(RegFile), intent(inout) :: RF type(WD_DiscreteStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WD_UnPackDiscState' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%xhat_plane)) deallocate(OutData%xhat_plane) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%xhat_plane(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xhat_plane.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%xhat_plane) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%YawErr_filt)) deallocate(OutData%YawErr_filt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%YawErr_filt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%YawErr_filt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%YawErr_filt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%psi_skew_filt) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%chi_skew_filt) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%V_plane_filt)) deallocate(OutData%V_plane_filt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%V_plane_filt(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%V_plane_filt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%V_plane_filt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%p_plane)) deallocate(OutData%p_plane) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%p_plane(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%p_plane.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%p_plane) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%x_plane)) deallocate(OutData%x_plane) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%x_plane(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_plane.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%x_plane) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vx_wake)) deallocate(OutData%Vx_wake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vx_wake(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vx_wake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vx_wake) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vr_wake)) deallocate(OutData%Vr_wake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vr_wake(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vr_wake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vr_wake) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vx_wake2)) deallocate(OutData%Vx_wake2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vx_wake2(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vx_wake2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vx_wake2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vy_wake2)) deallocate(OutData%Vy_wake2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vy_wake2(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vy_wake2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vy_wake2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vz_wake2)) deallocate(OutData%Vz_wake2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vz_wake2(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vz_wake2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vz_wake2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vx_wind_disk_filt)) deallocate(OutData%Vx_wind_disk_filt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vx_wind_disk_filt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vx_wind_disk_filt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vx_wind_disk_filt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%TI_amb_filt)) deallocate(OutData%TI_amb_filt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%TI_amb_filt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%TI_amb_filt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%TI_amb_filt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%D_rotor_filt)) deallocate(OutData%D_rotor_filt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%D_rotor_filt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%D_rotor_filt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%D_rotor_filt) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Vx_rel_disk_filt) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Ct_azavg_filt)) deallocate(OutData%Ct_azavg_filt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Ct_azavg_filt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Ct_azavg_filt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Ct_azavg_filt) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cq_azavg_filt)) deallocate(OutData%Cq_azavg_filt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cq_azavg_filt(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cq_azavg_filt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cq_azavg_filt) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%xhat_plane); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%YawErr_filt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%psi_skew_filt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%chi_skew_filt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%V_plane_filt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%p_plane); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%x_plane); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vx_wake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vr_wake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vx_wake2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vy_wake2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vz_wake2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vx_wind_disk_filt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%TI_amb_filt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%D_rotor_filt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Vx_rel_disk_filt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Ct_azavg_filt); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cq_azavg_filt); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine WD_CopyConstrState(SrcConstrStateData, DstConstrStateData, CtrlCode, ErrStat, ErrMsg) @@ -1187,22 +860,21 @@ subroutine WD_DestroyConstrState(ConstrStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine WD_PackConstrState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_PackConstrState(RF, Indata) + type(RegFile), intent(inout) :: RF type(WD_ConstraintStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'WD_PackConstrState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%DummyConstrState) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WD_UnPackConstrState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_UnPackConstrState(RF, OutData) + type(RegFile), intent(inout) :: RF type(WD_ConstraintStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WD_UnPackConstrState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%DummyConstrState) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%DummyConstrState); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine WD_CopyOtherState(SrcOtherStateData, DstOtherStateData, CtrlCode, ErrStat, ErrMsg) @@ -1226,22 +898,21 @@ subroutine WD_DestroyOtherState(OtherStateData, ErrStat, ErrMsg) ErrMsg = '' end subroutine -subroutine WD_PackOtherState(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_PackOtherState(RF, Indata) + type(RegFile), intent(inout) :: RF type(WD_OtherStateType), intent(in) :: InData character(*), parameter :: RoutineName = 'WD_PackOtherState' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%firstPass) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%firstPass) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WD_UnPackOtherState(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_UnPackOtherState(RF, OutData) + type(RegFile), intent(inout) :: RF type(WD_OtherStateType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WD_UnPackOtherState' - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%firstPass) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%firstPass); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine WD_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg) @@ -1583,427 +1254,68 @@ subroutine WD_DestroyMisc(MiscData, ErrStat, ErrMsg) end if end subroutine -subroutine WD_PackMisc(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_PackMisc(RF, Indata) + type(RegFile), intent(inout) :: RF type(WD_MiscVarType), intent(in) :: InData character(*), parameter :: RoutineName = 'WD_PackMisc' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%dvtdr)) - if (allocated(InData%dvtdr)) then - call RegPackBounds(Buf, 1, lbound(InData%dvtdr, kind=B8Ki), ubound(InData%dvtdr, kind=B8Ki)) - call RegPack(Buf, InData%dvtdr) - end if - call RegPack(Buf, allocated(InData%vt_tot)) - if (allocated(InData%vt_tot)) then - call RegPackBounds(Buf, 2, lbound(InData%vt_tot, kind=B8Ki), ubound(InData%vt_tot, kind=B8Ki)) - call RegPack(Buf, InData%vt_tot) - end if - call RegPack(Buf, allocated(InData%vt_amb)) - if (allocated(InData%vt_amb)) then - call RegPackBounds(Buf, 2, lbound(InData%vt_amb, kind=B8Ki), ubound(InData%vt_amb, kind=B8Ki)) - call RegPack(Buf, InData%vt_amb) - end if - call RegPack(Buf, allocated(InData%vt_shr)) - if (allocated(InData%vt_shr)) then - call RegPackBounds(Buf, 2, lbound(InData%vt_shr, kind=B8Ki), ubound(InData%vt_shr, kind=B8Ki)) - call RegPack(Buf, InData%vt_shr) - end if - call RegPack(Buf, allocated(InData%vt_tot2)) - if (allocated(InData%vt_tot2)) then - call RegPackBounds(Buf, 3, lbound(InData%vt_tot2, kind=B8Ki), ubound(InData%vt_tot2, kind=B8Ki)) - call RegPack(Buf, InData%vt_tot2) - end if - call RegPack(Buf, allocated(InData%vt_amb2)) - if (allocated(InData%vt_amb2)) then - call RegPackBounds(Buf, 3, lbound(InData%vt_amb2, kind=B8Ki), ubound(InData%vt_amb2, kind=B8Ki)) - call RegPack(Buf, InData%vt_amb2) - end if - call RegPack(Buf, allocated(InData%vt_shr2)) - if (allocated(InData%vt_shr2)) then - call RegPackBounds(Buf, 3, lbound(InData%vt_shr2, kind=B8Ki), ubound(InData%vt_shr2, kind=B8Ki)) - call RegPack(Buf, InData%vt_shr2) - end if - call RegPack(Buf, allocated(InData%dvx_dy)) - if (allocated(InData%dvx_dy)) then - call RegPackBounds(Buf, 3, lbound(InData%dvx_dy, kind=B8Ki), ubound(InData%dvx_dy, kind=B8Ki)) - call RegPack(Buf, InData%dvx_dy) - end if - call RegPack(Buf, allocated(InData%dvx_dz)) - if (allocated(InData%dvx_dz)) then - call RegPackBounds(Buf, 3, lbound(InData%dvx_dz, kind=B8Ki), ubound(InData%dvx_dz, kind=B8Ki)) - call RegPack(Buf, InData%dvx_dz) - end if - call RegPack(Buf, allocated(InData%nu_dvx_dy)) - if (allocated(InData%nu_dvx_dy)) then - call RegPackBounds(Buf, 2, lbound(InData%nu_dvx_dy, kind=B8Ki), ubound(InData%nu_dvx_dy, kind=B8Ki)) - call RegPack(Buf, InData%nu_dvx_dy) - end if - call RegPack(Buf, allocated(InData%nu_dvx_dz)) - if (allocated(InData%nu_dvx_dz)) then - call RegPackBounds(Buf, 2, lbound(InData%nu_dvx_dz, kind=B8Ki), ubound(InData%nu_dvx_dz, kind=B8Ki)) - call RegPack(Buf, InData%nu_dvx_dz) - end if - call RegPack(Buf, allocated(InData%dnuvx_dy)) - if (allocated(InData%dnuvx_dy)) then - call RegPackBounds(Buf, 2, lbound(InData%dnuvx_dy, kind=B8Ki), ubound(InData%dnuvx_dy, kind=B8Ki)) - call RegPack(Buf, InData%dnuvx_dy) - end if - call RegPack(Buf, allocated(InData%dnuvx_dz)) - if (allocated(InData%dnuvx_dz)) then - call RegPackBounds(Buf, 2, lbound(InData%dnuvx_dz, kind=B8Ki), ubound(InData%dnuvx_dz, kind=B8Ki)) - call RegPack(Buf, InData%dnuvx_dz) - end if - call RegPack(Buf, allocated(InData%a)) - if (allocated(InData%a)) then - call RegPackBounds(Buf, 1, lbound(InData%a, kind=B8Ki), ubound(InData%a, kind=B8Ki)) - call RegPack(Buf, InData%a) - end if - call RegPack(Buf, allocated(InData%b)) - if (allocated(InData%b)) then - call RegPackBounds(Buf, 1, lbound(InData%b, kind=B8Ki), ubound(InData%b, kind=B8Ki)) - call RegPack(Buf, InData%b) - end if - call RegPack(Buf, allocated(InData%c)) - if (allocated(InData%c)) then - call RegPackBounds(Buf, 1, lbound(InData%c, kind=B8Ki), ubound(InData%c, kind=B8Ki)) - call RegPack(Buf, InData%c) - end if - call RegPack(Buf, allocated(InData%d)) - if (allocated(InData%d)) then - call RegPackBounds(Buf, 1, lbound(InData%d, kind=B8Ki), ubound(InData%d, kind=B8Ki)) - call RegPack(Buf, InData%d) - end if - call RegPack(Buf, allocated(InData%r_wake)) - if (allocated(InData%r_wake)) then - call RegPackBounds(Buf, 1, lbound(InData%r_wake, kind=B8Ki), ubound(InData%r_wake, kind=B8Ki)) - call RegPack(Buf, InData%r_wake) - end if - call RegPack(Buf, allocated(InData%Vx_high)) - if (allocated(InData%Vx_high)) then - call RegPackBounds(Buf, 1, lbound(InData%Vx_high, kind=B8Ki), ubound(InData%Vx_high, kind=B8Ki)) - call RegPack(Buf, InData%Vx_high) - end if - call RegPack(Buf, allocated(InData%Vx_polar)) - if (allocated(InData%Vx_polar)) then - call RegPackBounds(Buf, 1, lbound(InData%Vx_polar, kind=B8Ki), ubound(InData%Vx_polar, kind=B8Ki)) - call RegPack(Buf, InData%Vx_polar) - end if - call RegPack(Buf, allocated(InData%Vt_wake)) - if (allocated(InData%Vt_wake)) then - call RegPackBounds(Buf, 1, lbound(InData%Vt_wake, kind=B8Ki), ubound(InData%Vt_wake, kind=B8Ki)) - call RegPack(Buf, InData%Vt_wake) - end if - call RegPack(Buf, InData%GammaCurl) - call RegPack(Buf, InData%Ct_avg) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%dvtdr) + call RegPackAlloc(RF, InData%vt_tot) + call RegPackAlloc(RF, InData%vt_amb) + call RegPackAlloc(RF, InData%vt_shr) + call RegPackAlloc(RF, InData%vt_tot2) + call RegPackAlloc(RF, InData%vt_amb2) + call RegPackAlloc(RF, InData%vt_shr2) + call RegPackAlloc(RF, InData%dvx_dy) + call RegPackAlloc(RF, InData%dvx_dz) + call RegPackAlloc(RF, InData%nu_dvx_dy) + call RegPackAlloc(RF, InData%nu_dvx_dz) + call RegPackAlloc(RF, InData%dnuvx_dy) + call RegPackAlloc(RF, InData%dnuvx_dz) + call RegPackAlloc(RF, InData%a) + call RegPackAlloc(RF, InData%b) + call RegPackAlloc(RF, InData%c) + call RegPackAlloc(RF, InData%d) + call RegPackAlloc(RF, InData%r_wake) + call RegPackAlloc(RF, InData%Vx_high) + call RegPackAlloc(RF, InData%Vx_polar) + call RegPackAlloc(RF, InData%Vt_wake) + call RegPack(RF, InData%GammaCurl) + call RegPack(RF, InData%Ct_avg) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WD_UnPackMisc(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_UnPackMisc(RF, OutData) + type(RegFile), intent(inout) :: RF type(WD_MiscVarType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WD_UnPackMisc' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%dvtdr)) deallocate(OutData%dvtdr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dvtdr(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dvtdr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dvtdr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%vt_tot)) deallocate(OutData%vt_tot) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%vt_tot(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%vt_tot.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%vt_tot) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%vt_amb)) deallocate(OutData%vt_amb) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%vt_amb(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%vt_amb.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%vt_amb) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%vt_shr)) deallocate(OutData%vt_shr) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%vt_shr(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%vt_shr.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%vt_shr) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%vt_tot2)) deallocate(OutData%vt_tot2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%vt_tot2(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%vt_tot2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%vt_tot2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%vt_amb2)) deallocate(OutData%vt_amb2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%vt_amb2(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%vt_amb2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%vt_amb2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%vt_shr2)) deallocate(OutData%vt_shr2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%vt_shr2(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%vt_shr2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%vt_shr2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dvx_dy)) deallocate(OutData%dvx_dy) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dvx_dy(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dvx_dy.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dvx_dy) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dvx_dz)) deallocate(OutData%dvx_dz) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dvx_dz(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dvx_dz.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dvx_dz) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%nu_dvx_dy)) deallocate(OutData%nu_dvx_dy) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%nu_dvx_dy(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%nu_dvx_dy.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%nu_dvx_dy) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%nu_dvx_dz)) deallocate(OutData%nu_dvx_dz) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%nu_dvx_dz(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%nu_dvx_dz.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%nu_dvx_dz) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dnuvx_dy)) deallocate(OutData%dnuvx_dy) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dnuvx_dy(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dnuvx_dy.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dnuvx_dy) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%dnuvx_dz)) deallocate(OutData%dnuvx_dz) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%dnuvx_dz(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%dnuvx_dz.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%dnuvx_dz) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%a)) deallocate(OutData%a) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%a(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%a.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%a) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%b)) deallocate(OutData%b) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%b(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%b.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%b) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%c)) deallocate(OutData%c) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%c(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%c.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%c) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%d)) deallocate(OutData%d) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%d(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%d.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%d) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%r_wake)) deallocate(OutData%r_wake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%r_wake(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%r_wake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%r_wake) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vx_high)) deallocate(OutData%Vx_high) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vx_high(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vx_high.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vx_high) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vx_polar)) deallocate(OutData%Vx_polar) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vx_polar(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vx_polar.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vx_polar) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vt_wake)) deallocate(OutData%Vt_wake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vt_wake(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vt_wake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vt_wake) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%GammaCurl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Ct_avg) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%dvtdr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%vt_tot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%vt_amb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%vt_shr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%vt_tot2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%vt_amb2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%vt_shr2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dvx_dy); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dvx_dz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%nu_dvx_dy); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%nu_dvx_dz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dnuvx_dy); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%dnuvx_dz); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%a); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%b); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%c); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%d); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%r_wake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vx_high); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vx_polar); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vt_wake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%GammaCurl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Ct_avg); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine WD_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg) @@ -2110,190 +1422,102 @@ subroutine WD_DestroyParam(ParamData, ErrStat, ErrMsg) end if end subroutine -subroutine WD_PackParam(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_PackParam(RF, Indata) + type(RegFile), intent(inout) :: RF type(WD_ParameterType), intent(in) :: InData character(*), parameter :: RoutineName = 'WD_PackParam' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%dt_low) - call RegPack(Buf, InData%NumPlanes) - call RegPack(Buf, InData%NumRadii) - call RegPack(Buf, InData%dr) - call RegPack(Buf, allocated(InData%r)) - if (allocated(InData%r)) then - call RegPackBounds(Buf, 1, lbound(InData%r, kind=B8Ki), ubound(InData%r, kind=B8Ki)) - call RegPack(Buf, InData%r) - end if - call RegPack(Buf, allocated(InData%y)) - if (allocated(InData%y)) then - call RegPackBounds(Buf, 1, lbound(InData%y, kind=B8Ki), ubound(InData%y, kind=B8Ki)) - call RegPack(Buf, InData%y) - end if - call RegPack(Buf, allocated(InData%z)) - if (allocated(InData%z)) then - call RegPackBounds(Buf, 1, lbound(InData%z, kind=B8Ki), ubound(InData%z, kind=B8Ki)) - call RegPack(Buf, InData%z) - end if - call RegPack(Buf, InData%Mod_Wake) - call RegPack(Buf, InData%Swirl) - call RegPack(Buf, InData%k_VortexDecay) - call RegPack(Buf, InData%sigma_D) - call RegPack(Buf, InData%NumVortices) - call RegPack(Buf, InData%filtParam) - call RegPack(Buf, InData%oneMinusFiltParam) - call RegPack(Buf, InData%C_HWkDfl_O) - call RegPack(Buf, InData%C_HWkDfl_OY) - call RegPack(Buf, InData%C_HWkDfl_x) - call RegPack(Buf, InData%C_HWkDfl_xY) - call RegPack(Buf, InData%C_NearWake) - call RegPack(Buf, InData%C_vAmb_DMin) - call RegPack(Buf, InData%C_vAmb_DMax) - call RegPack(Buf, InData%C_vAmb_FMin) - call RegPack(Buf, InData%C_vAmb_Exp) - call RegPack(Buf, InData%C_vShr_DMin) - call RegPack(Buf, InData%C_vShr_DMax) - call RegPack(Buf, InData%C_vShr_FMin) - call RegPack(Buf, InData%C_vShr_Exp) - call RegPack(Buf, InData%k_vAmb) - call RegPack(Buf, InData%k_vShr) - call RegPack(Buf, InData%Mod_WakeDiam) - call RegPack(Buf, InData%C_WakeDiam) - call RegPack(Buf, InData%FilterInit) - call RegPack(Buf, InData%k_vCurl) - call RegPack(Buf, InData%OutAllPlanes) - call RegPack(Buf, InData%OutFileRoot) - call RegPack(Buf, InData%OutFileVTKDir) - call RegPack(Buf, InData%TurbNum) - call RegPack(Buf, InData%WAT) - call RegPack(Buf, InData%WAT_k_Def) - call RegPack(Buf, InData%WAT_k_Grad) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%dt_low) + call RegPack(RF, InData%NumPlanes) + call RegPack(RF, InData%NumRadii) + call RegPack(RF, InData%dr) + call RegPackAlloc(RF, InData%r) + call RegPackAlloc(RF, InData%y) + call RegPackAlloc(RF, InData%z) + call RegPack(RF, InData%Mod_Wake) + call RegPack(RF, InData%Swirl) + call RegPack(RF, InData%k_VortexDecay) + call RegPack(RF, InData%sigma_D) + call RegPack(RF, InData%NumVortices) + call RegPack(RF, InData%filtParam) + call RegPack(RF, InData%oneMinusFiltParam) + call RegPack(RF, InData%C_HWkDfl_O) + call RegPack(RF, InData%C_HWkDfl_OY) + call RegPack(RF, InData%C_HWkDfl_x) + call RegPack(RF, InData%C_HWkDfl_xY) + call RegPack(RF, InData%C_NearWake) + call RegPack(RF, InData%C_vAmb_DMin) + call RegPack(RF, InData%C_vAmb_DMax) + call RegPack(RF, InData%C_vAmb_FMin) + call RegPack(RF, InData%C_vAmb_Exp) + call RegPack(RF, InData%C_vShr_DMin) + call RegPack(RF, InData%C_vShr_DMax) + call RegPack(RF, InData%C_vShr_FMin) + call RegPack(RF, InData%C_vShr_Exp) + call RegPack(RF, InData%k_vAmb) + call RegPack(RF, InData%k_vShr) + call RegPack(RF, InData%Mod_WakeDiam) + call RegPack(RF, InData%C_WakeDiam) + call RegPack(RF, InData%FilterInit) + call RegPack(RF, InData%k_vCurl) + call RegPack(RF, InData%OutAllPlanes) + call RegPack(RF, InData%OutFileRoot) + call RegPack(RF, InData%OutFileVTKDir) + call RegPack(RF, InData%TurbNum) + call RegPack(RF, InData%WAT) + call RegPack(RF, InData%WAT_k_Def) + call RegPack(RF, InData%WAT_k_Grad) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WD_UnPackParam(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_UnPackParam(RF, OutData) + type(RegFile), intent(inout) :: RF type(WD_ParameterType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WD_UnPackParam' integer(B8Ki) :: LB(1), UB(1) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%dt_low) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumPlanes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumRadii) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%dr) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%r)) deallocate(OutData%r) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%r(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%r.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%r) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%y)) deallocate(OutData%y) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%y(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%y.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%y) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%z)) deallocate(OutData%z) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%z(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%z.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%z) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Mod_Wake) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Swirl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k_VortexDecay) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%sigma_D) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%NumVortices) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%filtParam) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%oneMinusFiltParam) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_HWkDfl_O) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_HWkDfl_OY) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_HWkDfl_x) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_HWkDfl_xY) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_NearWake) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_vAmb_DMin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_vAmb_DMax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_vAmb_FMin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_vAmb_Exp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_vShr_DMin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_vShr_DMax) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_vShr_FMin) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_vShr_Exp) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k_vAmb) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k_vShr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Mod_WakeDiam) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%C_WakeDiam) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%FilterInit) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%k_vCurl) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutAllPlanes) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFileRoot) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%OutFileVTKDir) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TurbNum) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WAT) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WAT_k_Def) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%WAT_k_Grad) - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%dt_low); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumPlanes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumRadii); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%dr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%r); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%y); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%z); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Mod_Wake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Swirl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k_VortexDecay); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%sigma_D); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%NumVortices); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%filtParam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%oneMinusFiltParam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_HWkDfl_O); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_HWkDfl_OY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_HWkDfl_x); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_HWkDfl_xY); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_NearWake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_vAmb_DMin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_vAmb_DMax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_vAmb_FMin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_vAmb_Exp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_vShr_DMin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_vShr_DMax); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_vShr_FMin); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_vShr_Exp); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k_vAmb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k_vShr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Mod_WakeDiam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%C_WakeDiam); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%FilterInit); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%k_vCurl); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutAllPlanes); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFileRoot); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%OutFileVTKDir); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TurbNum); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WAT); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WAT_k_Def); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%WAT_k_Grad); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine WD_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg) @@ -2372,106 +1596,46 @@ subroutine WD_DestroyInput(InputData, ErrStat, ErrMsg) end if end subroutine -subroutine WD_PackInput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_PackInput(RF, Indata) + type(RegFile), intent(inout) :: RF type(WD_InputType), intent(in) :: InData character(*), parameter :: RoutineName = 'WD_PackInput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, InData%xhat_disk) - call RegPack(Buf, InData%YawErr) - call RegPack(Buf, InData%psi_skew) - call RegPack(Buf, InData%chi_skew) - call RegPack(Buf, InData%p_hub) - call RegPack(Buf, allocated(InData%V_plane)) - if (allocated(InData%V_plane)) then - call RegPackBounds(Buf, 2, lbound(InData%V_plane, kind=B8Ki), ubound(InData%V_plane, kind=B8Ki)) - call RegPack(Buf, InData%V_plane) - end if - call RegPack(Buf, InData%Vx_wind_disk) - call RegPack(Buf, InData%TI_amb) - call RegPack(Buf, InData%D_rotor) - call RegPack(Buf, InData%Vx_rel_disk) - call RegPack(Buf, allocated(InData%Ct_azavg)) - if (allocated(InData%Ct_azavg)) then - call RegPackBounds(Buf, 1, lbound(InData%Ct_azavg, kind=B8Ki), ubound(InData%Ct_azavg, kind=B8Ki)) - call RegPack(Buf, InData%Ct_azavg) - end if - call RegPack(Buf, allocated(InData%Cq_azavg)) - if (allocated(InData%Cq_azavg)) then - call RegPackBounds(Buf, 1, lbound(InData%Cq_azavg, kind=B8Ki), ubound(InData%Cq_azavg, kind=B8Ki)) - call RegPack(Buf, InData%Cq_azavg) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPack(RF, InData%xhat_disk) + call RegPack(RF, InData%YawErr) + call RegPack(RF, InData%psi_skew) + call RegPack(RF, InData%chi_skew) + call RegPack(RF, InData%p_hub) + call RegPackAlloc(RF, InData%V_plane) + call RegPack(RF, InData%Vx_wind_disk) + call RegPack(RF, InData%TI_amb) + call RegPack(RF, InData%D_rotor) + call RegPack(RF, InData%Vx_rel_disk) + call RegPackAlloc(RF, InData%Ct_azavg) + call RegPackAlloc(RF, InData%Cq_azavg) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WD_UnPackInput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_UnPackInput(RF, OutData) + type(RegFile), intent(inout) :: RF type(WD_InputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WD_UnPackInput' integer(B8Ki) :: LB(2), UB(2) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - call RegUnpack(Buf, OutData%xhat_disk) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%YawErr) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%psi_skew) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%chi_skew) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%p_hub) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%V_plane)) deallocate(OutData%V_plane) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%V_plane(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%V_plane.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%V_plane) - if (RegCheckErr(Buf, RoutineName)) return - end if - call RegUnpack(Buf, OutData%Vx_wind_disk) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%TI_amb) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%D_rotor) - if (RegCheckErr(Buf, RoutineName)) return - call RegUnpack(Buf, OutData%Vx_rel_disk) - if (RegCheckErr(Buf, RoutineName)) return - if (allocated(OutData%Ct_azavg)) deallocate(OutData%Ct_azavg) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Ct_azavg(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Ct_azavg.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Ct_azavg) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Cq_azavg)) deallocate(OutData%Cq_azavg) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Cq_azavg(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Cq_azavg.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Cq_azavg) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpack(RF, OutData%xhat_disk); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%YawErr); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%psi_skew); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%chi_skew); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%p_hub); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%V_plane); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Vx_wind_disk); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%TI_amb); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%D_rotor); if (RegCheckErr(RF, RoutineName)) return + call RegUnpack(RF, OutData%Vx_rel_disk); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Ct_azavg); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Cq_azavg); if (RegCheckErr(RF, RoutineName)) return end subroutine subroutine WD_CopyOutput(SrcOutputData, DstOutputData, CtrlCode, ErrStat, ErrMsg) @@ -2646,212 +1810,42 @@ subroutine WD_DestroyOutput(OutputData, ErrStat, ErrMsg) end if end subroutine -subroutine WD_PackOutput(Buf, Indata) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_PackOutput(RF, Indata) + type(RegFile), intent(inout) :: RF type(WD_OutputType), intent(in) :: InData character(*), parameter :: RoutineName = 'WD_PackOutput' - if (Buf%ErrStat >= AbortErrLev) return - call RegPack(Buf, allocated(InData%xhat_plane)) - if (allocated(InData%xhat_plane)) then - call RegPackBounds(Buf, 2, lbound(InData%xhat_plane, kind=B8Ki), ubound(InData%xhat_plane, kind=B8Ki)) - call RegPack(Buf, InData%xhat_plane) - end if - call RegPack(Buf, allocated(InData%p_plane)) - if (allocated(InData%p_plane)) then - call RegPackBounds(Buf, 2, lbound(InData%p_plane, kind=B8Ki), ubound(InData%p_plane, kind=B8Ki)) - call RegPack(Buf, InData%p_plane) - end if - call RegPack(Buf, allocated(InData%Vx_wake)) - if (allocated(InData%Vx_wake)) then - call RegPackBounds(Buf, 2, lbound(InData%Vx_wake, kind=B8Ki), ubound(InData%Vx_wake, kind=B8Ki)) - call RegPack(Buf, InData%Vx_wake) - end if - call RegPack(Buf, allocated(InData%Vr_wake)) - if (allocated(InData%Vr_wake)) then - call RegPackBounds(Buf, 2, lbound(InData%Vr_wake, kind=B8Ki), ubound(InData%Vr_wake, kind=B8Ki)) - call RegPack(Buf, InData%Vr_wake) - end if - call RegPack(Buf, allocated(InData%Vx_wake2)) - if (allocated(InData%Vx_wake2)) then - call RegPackBounds(Buf, 3, lbound(InData%Vx_wake2, kind=B8Ki), ubound(InData%Vx_wake2, kind=B8Ki)) - call RegPack(Buf, InData%Vx_wake2) - end if - call RegPack(Buf, allocated(InData%Vy_wake2)) - if (allocated(InData%Vy_wake2)) then - call RegPackBounds(Buf, 3, lbound(InData%Vy_wake2, kind=B8Ki), ubound(InData%Vy_wake2, kind=B8Ki)) - call RegPack(Buf, InData%Vy_wake2) - end if - call RegPack(Buf, allocated(InData%Vz_wake2)) - if (allocated(InData%Vz_wake2)) then - call RegPackBounds(Buf, 3, lbound(InData%Vz_wake2, kind=B8Ki), ubound(InData%Vz_wake2, kind=B8Ki)) - call RegPack(Buf, InData%Vz_wake2) - end if - call RegPack(Buf, allocated(InData%D_wake)) - if (allocated(InData%D_wake)) then - call RegPackBounds(Buf, 1, lbound(InData%D_wake, kind=B8Ki), ubound(InData%D_wake, kind=B8Ki)) - call RegPack(Buf, InData%D_wake) - end if - call RegPack(Buf, allocated(InData%x_plane)) - if (allocated(InData%x_plane)) then - call RegPackBounds(Buf, 1, lbound(InData%x_plane, kind=B8Ki), ubound(InData%x_plane, kind=B8Ki)) - call RegPack(Buf, InData%x_plane) - end if - call RegPack(Buf, allocated(InData%WAT_k_mt)) - if (allocated(InData%WAT_k_mt)) then - call RegPackBounds(Buf, 3, lbound(InData%WAT_k_mt, kind=B8Ki), ubound(InData%WAT_k_mt, kind=B8Ki)) - call RegPack(Buf, InData%WAT_k_mt) - end if - if (RegCheckErr(Buf, RoutineName)) return + if (RF%ErrStat >= AbortErrLev) return + call RegPackAlloc(RF, InData%xhat_plane) + call RegPackAlloc(RF, InData%p_plane) + call RegPackAlloc(RF, InData%Vx_wake) + call RegPackAlloc(RF, InData%Vr_wake) + call RegPackAlloc(RF, InData%Vx_wake2) + call RegPackAlloc(RF, InData%Vy_wake2) + call RegPackAlloc(RF, InData%Vz_wake2) + call RegPackAlloc(RF, InData%D_wake) + call RegPackAlloc(RF, InData%x_plane) + call RegPackAlloc(RF, InData%WAT_k_mt) + if (RegCheckErr(RF, RoutineName)) return end subroutine -subroutine WD_UnPackOutput(Buf, OutData) - type(PackBuffer), intent(inout) :: Buf +subroutine WD_UnPackOutput(RF, OutData) + type(RegFile), intent(inout) :: RF type(WD_OutputType), intent(inout) :: OutData character(*), parameter :: RoutineName = 'WD_UnPackOutput' integer(B8Ki) :: LB(3), UB(3) integer(IntKi) :: stat logical :: IsAllocAssoc - if (Buf%ErrStat /= ErrID_None) return - if (allocated(OutData%xhat_plane)) deallocate(OutData%xhat_plane) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%xhat_plane(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%xhat_plane.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%xhat_plane) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%p_plane)) deallocate(OutData%p_plane) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%p_plane(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%p_plane.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%p_plane) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vx_wake)) deallocate(OutData%Vx_wake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vx_wake(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vx_wake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vx_wake) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vr_wake)) deallocate(OutData%Vr_wake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 2, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vr_wake(LB(1):UB(1),LB(2):UB(2)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vr_wake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vr_wake) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vx_wake2)) deallocate(OutData%Vx_wake2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vx_wake2(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vx_wake2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vx_wake2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vy_wake2)) deallocate(OutData%Vy_wake2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vy_wake2(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vy_wake2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vy_wake2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%Vz_wake2)) deallocate(OutData%Vz_wake2) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%Vz_wake2(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%Vz_wake2.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%Vz_wake2) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%D_wake)) deallocate(OutData%D_wake) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%D_wake(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%D_wake.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%D_wake) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%x_plane)) deallocate(OutData%x_plane) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 1, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%x_plane(LB(1):UB(1)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%x_plane.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%x_plane) - if (RegCheckErr(Buf, RoutineName)) return - end if - if (allocated(OutData%WAT_k_mt)) deallocate(OutData%WAT_k_mt) - call RegUnpack(Buf, IsAllocAssoc) - if (RegCheckErr(Buf, RoutineName)) return - if (IsAllocAssoc) then - call RegUnpackBounds(Buf, 3, LB, UB) - if (RegCheckErr(Buf, RoutineName)) return - allocate(OutData%WAT_k_mt(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3)),stat=stat) - if (stat /= 0) then - call SetErrStat(ErrID_Fatal, 'Error allocating OutData%WAT_k_mt.', Buf%ErrStat, Buf%ErrMsg, RoutineName) - return - end if - call RegUnpack(Buf, OutData%WAT_k_mt) - if (RegCheckErr(Buf, RoutineName)) return - end if + if (RF%ErrStat /= ErrID_None) return + call RegUnpackAlloc(RF, OutData%xhat_plane); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%p_plane); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vx_wake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vr_wake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vx_wake2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vy_wake2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%Vz_wake2); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%D_wake); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%x_plane); if (RegCheckErr(RF, RoutineName)) return + call RegUnpackAlloc(RF, OutData%WAT_k_mt); if (RegCheckErr(RF, RoutineName)) return end subroutine END MODULE WakeDynamics_Types !ENDOFREGISTRYGENERATEDFILE From d99345909aabcf49bad62833fb49dd1f1cd44502 Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Tue, 16 Jan 2024 13:41:52 +0000 Subject: [PATCH 06/10] Update Generate_NWTC_Library_types.bat to match CMakeLists.txt The CMakeLists.txt now automatically generates modules based on the Registry_NWTC_Library_mesh.txt and Registry_NWTC_Library_base.txt files. It also concatenates these files to create the full Registry_NWTC_Library.txt which is included by other modules. The changes to Generate_NWTC_Library_types.bat replicate this behavior. --- modules/nwtc-library/src/Generate_NWTC_Library_Types.bat | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/nwtc-library/src/Generate_NWTC_Library_Types.bat b/modules/nwtc-library/src/Generate_NWTC_Library_Types.bat index 020b426a71..a55760e8bc 100644 --- a/modules/nwtc-library/src/Generate_NWTC_Library_Types.bat +++ b/modules/nwtc-library/src/Generate_NWTC_Library_Types.bat @@ -13,11 +13,13 @@ REM ---------------- RUN THE REGISTRY TO AUTO-GENERATE FILES ------------------- REM ---------------------------------------------------------------------------- ECHO on :mesh -%REGISTRY% Registry_NWTC_Library_mesh.txt -noextrap +%REGISTRY% Registry_NWTC_Library_mesh.txt -noextrap -subs +type Registry_NWTC_Library_base.txt Registry_NWTC_Library_mesh.txt > Registry_NWTC_Library.txt goto end :nomesh %REGISTRY% Registry_NWTC_Library_base.txt -noextrap +type Registry_NWTC_Library_base.txt Registry_NWTC_Library_mesh.txt > Registry_NWTC_Library.txt :end From 7337f5a6bba4871f5500edb917c126a565032217 Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Tue, 16 Jan 2024 18:06:02 +0000 Subject: [PATCH 07/10] Fix openfast-registry documentation for -subs option --- modules/openfast-registry/src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/openfast-registry/src/main.cpp b/modules/openfast-registry/src/main.cpp index 445fcc4700..fd5005e89d 100644 --- a/modules/openfast-registry/src/main.cpp +++ b/modules/openfast-registry/src/main.cpp @@ -13,7 +13,7 @@ Usage: openfast_registry registryfile [options] -or- -h this summary -I look for usefrom files in directory "dir" -O generate types files in directory "dir" - -inc generate types file to be included in another file + -subs generate only subroutines (to be included in another file) -noextrap do not generate ModName_Input_ExtrapInterp or ModName_Output_ExtrapInterp routines -D define symbol for conditional evaluation inside registry file -ccode generate additional code for interfacing with C/C++ From 6f53520e487424899b8b28b5b078a57fe08571bb Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Tue, 16 Jan 2024 18:06:33 +0000 Subject: [PATCH 08/10] Add ModVar.f90 to projects in vs-build --- vs-build/AeroDyn/AeroDyn_Driver.vfproj | 1 + .../AeroDyn_Inflow_c_binding/AeroDyn_Inflow_c_binding.vfproj | 1 + vs-build/BeamDyn/BeamDyn.vfproj | 1 + vs-build/FASTlib/FASTlib.vfproj | 1 + vs-build/HydroDyn/HydroDynDriver.vfproj | 1 + vs-build/HydroDyn_c_binding/HydroDyn_c_binding.vfproj | 1 + vs-build/InflowWind/InflowWind_driver.vfproj | 1 + vs-build/InflowWind_c_binding/InflowWind_c_binding.vfproj | 1 + vs-build/MoorDyn/MoorDynDriver.vfproj | 1 + vs-build/MoorDyn_c_binding/MoorDyn_c_binding.vfproj | 1 + vs-build/SeaState/SeaStateDriver.vfproj | 1 + vs-build/SubDyn/SubDyn.vfproj | 1 + vs-build/TurbSim/TurbSim.vfproj | 1 + vs-build/UnsteadyAero/UnsteadyAero.vfproj | 1 + 14 files changed, 14 insertions(+) diff --git a/vs-build/AeroDyn/AeroDyn_Driver.vfproj b/vs-build/AeroDyn/AeroDyn_Driver.vfproj index 98a04e0a8b..fc5edafe0d 100644 --- a/vs-build/AeroDyn/AeroDyn_Driver.vfproj +++ b/vs-build/AeroDyn/AeroDyn_Driver.vfproj @@ -930,6 +930,7 @@ + diff --git a/vs-build/AeroDyn_Inflow_c_binding/AeroDyn_Inflow_c_binding.vfproj b/vs-build/AeroDyn_Inflow_c_binding/AeroDyn_Inflow_c_binding.vfproj index e1b544cdf7..4f5a544cf0 100644 --- a/vs-build/AeroDyn_Inflow_c_binding/AeroDyn_Inflow_c_binding.vfproj +++ b/vs-build/AeroDyn_Inflow_c_binding/AeroDyn_Inflow_c_binding.vfproj @@ -1011,6 +1011,7 @@ + diff --git a/vs-build/BeamDyn/BeamDyn.vfproj b/vs-build/BeamDyn/BeamDyn.vfproj index e5a72c25eb..1e516287f6 100644 --- a/vs-build/BeamDyn/BeamDyn.vfproj +++ b/vs-build/BeamDyn/BeamDyn.vfproj @@ -201,6 +201,7 @@ + diff --git a/vs-build/FASTlib/FASTlib.vfproj b/vs-build/FASTlib/FASTlib.vfproj index 983b157bf4..854272c9bc 100644 --- a/vs-build/FASTlib/FASTlib.vfproj +++ b/vs-build/FASTlib/FASTlib.vfproj @@ -1975,6 +1975,7 @@ + diff --git a/vs-build/HydroDyn/HydroDynDriver.vfproj b/vs-build/HydroDyn/HydroDynDriver.vfproj index 961854b6bb..82488ba7a2 100644 --- a/vs-build/HydroDyn/HydroDynDriver.vfproj +++ b/vs-build/HydroDyn/HydroDynDriver.vfproj @@ -368,6 +368,7 @@ + diff --git a/vs-build/HydroDyn_c_binding/HydroDyn_c_binding.vfproj b/vs-build/HydroDyn_c_binding/HydroDyn_c_binding.vfproj index 7bcec48d49..4481a2cde7 100644 --- a/vs-build/HydroDyn_c_binding/HydroDyn_c_binding.vfproj +++ b/vs-build/HydroDyn_c_binding/HydroDyn_c_binding.vfproj @@ -257,6 +257,7 @@ + diff --git a/vs-build/InflowWind/InflowWind_driver.vfproj b/vs-build/InflowWind/InflowWind_driver.vfproj index 35ec74eefc..61993f00be 100644 --- a/vs-build/InflowWind/InflowWind_driver.vfproj +++ b/vs-build/InflowWind/InflowWind_driver.vfproj @@ -258,6 +258,7 @@ + diff --git a/vs-build/InflowWind_c_binding/InflowWind_c_binding.vfproj b/vs-build/InflowWind_c_binding/InflowWind_c_binding.vfproj index 49bd328500..28e5fcef81 100644 --- a/vs-build/InflowWind_c_binding/InflowWind_c_binding.vfproj +++ b/vs-build/InflowWind_c_binding/InflowWind_c_binding.vfproj @@ -218,6 +218,7 @@ + diff --git a/vs-build/MoorDyn/MoorDynDriver.vfproj b/vs-build/MoorDyn/MoorDynDriver.vfproj index 42279628c3..473ae204fa 100644 --- a/vs-build/MoorDyn/MoorDynDriver.vfproj +++ b/vs-build/MoorDyn/MoorDynDriver.vfproj @@ -171,6 +171,7 @@ + diff --git a/vs-build/MoorDyn_c_binding/MoorDyn_c_binding.vfproj b/vs-build/MoorDyn_c_binding/MoorDyn_c_binding.vfproj index 6d2f237551..8216ac5dd4 100644 --- a/vs-build/MoorDyn_c_binding/MoorDyn_c_binding.vfproj +++ b/vs-build/MoorDyn_c_binding/MoorDyn_c_binding.vfproj @@ -193,6 +193,7 @@ + diff --git a/vs-build/SeaState/SeaStateDriver.vfproj b/vs-build/SeaState/SeaStateDriver.vfproj index c9a4786e34..208b6ce568 100644 --- a/vs-build/SeaState/SeaStateDriver.vfproj +++ b/vs-build/SeaState/SeaStateDriver.vfproj @@ -147,6 +147,7 @@ + diff --git a/vs-build/SubDyn/SubDyn.vfproj b/vs-build/SubDyn/SubDyn.vfproj index 188f4cca03..b4d5eaf9c5 100644 --- a/vs-build/SubDyn/SubDyn.vfproj +++ b/vs-build/SubDyn/SubDyn.vfproj @@ -160,6 +160,7 @@ + diff --git a/vs-build/TurbSim/TurbSim.vfproj b/vs-build/TurbSim/TurbSim.vfproj index 1f07d1efd5..cbe8def283 100644 --- a/vs-build/TurbSim/TurbSim.vfproj +++ b/vs-build/TurbSim/TurbSim.vfproj @@ -55,6 +55,7 @@ + diff --git a/vs-build/UnsteadyAero/UnsteadyAero.vfproj b/vs-build/UnsteadyAero/UnsteadyAero.vfproj index afc6eb7f96..4cb89b2f83 100644 --- a/vs-build/UnsteadyAero/UnsteadyAero.vfproj +++ b/vs-build/UnsteadyAero/UnsteadyAero.vfproj @@ -186,6 +186,7 @@ + From f48f325f8977dc9ff92a32fc4198d50b256dd237 Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Tue, 16 Jan 2024 18:17:14 +0000 Subject: [PATCH 09/10] Use _IncSubs.90 for registry generated subroutines file --- modules/nwtc-library/CMakeLists.txt | 4 ++-- modules/nwtc-library/src/Generate_NWTC_Library_Types.bat | 2 +- modules/nwtc-library/src/ModMesh_Mapping.f90 | 2 +- .../src/{NWTC_Library_Subs.f90 => NWTC_Library_IncSubs.f90} | 0 modules/openfast-registry/src/main.cpp | 6 +++--- modules/openfast-registry/src/registry.hpp | 2 +- modules/openfast-registry/src/registry_gen_fortran.cpp | 6 +++--- 7 files changed, 11 insertions(+), 11 deletions(-) rename modules/nwtc-library/src/{NWTC_Library_Subs.f90 => NWTC_Library_IncSubs.f90} (100%) diff --git a/modules/nwtc-library/CMakeLists.txt b/modules/nwtc-library/CMakeLists.txt index dc0e51e50d..bad52c35ee 100644 --- a/modules/nwtc-library/CMakeLists.txt +++ b/modules/nwtc-library/CMakeLists.txt @@ -16,7 +16,7 @@ if (GENERATE_TYPES) generate_f90_types(src/Registry_NWTC_Library_base.txt ${CMAKE_CURRENT_SOURCE_DIR}/src/NWTC_Library_Types.f90 -noextrap) - generate_f90_types(src/Registry_NWTC_Library_mesh.txt ${CMAKE_CURRENT_SOURCE_DIR}/src/NWTC_Library_Subs.f90 -subs -noextrap) + generate_f90_types(src/Registry_NWTC_Library_mesh.txt ${CMAKE_CURRENT_SOURCE_DIR}/src/NWTC_Library_Subs.f90 -incsubs -noextrap) # Generate Registry_NWTC_Library.txt by concatenating _base.txt and _mesh.txt set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS src/Registry_NWTC_Library_mesh.txt @@ -149,7 +149,7 @@ if (CMAKE_BUILD_TYPE MATCHES Debug) endif() endif() -add_custom_target(nwtc_library_subs DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/NWTC_Library_Subs.f90) +add_custom_target(nwtc_library_subs DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/NWTC_Library_IncSubs.f90) # Create NWTC Library add_library(nwtclibs STATIC diff --git a/modules/nwtc-library/src/Generate_NWTC_Library_Types.bat b/modules/nwtc-library/src/Generate_NWTC_Library_Types.bat index a55760e8bc..772880fca3 100644 --- a/modules/nwtc-library/src/Generate_NWTC_Library_Types.bat +++ b/modules/nwtc-library/src/Generate_NWTC_Library_Types.bat @@ -13,7 +13,7 @@ REM ---------------- RUN THE REGISTRY TO AUTO-GENERATE FILES ------------------- REM ---------------------------------------------------------------------------- ECHO on :mesh -%REGISTRY% Registry_NWTC_Library_mesh.txt -noextrap -subs +%REGISTRY% Registry_NWTC_Library_mesh.txt -noextrap -incsubs type Registry_NWTC_Library_base.txt Registry_NWTC_Library_mesh.txt > Registry_NWTC_Library.txt goto end diff --git a/modules/nwtc-library/src/ModMesh_Mapping.f90 b/modules/nwtc-library/src/ModMesh_Mapping.f90 index c0ef92fbd9..69cec3db98 100644 --- a/modules/nwtc-library/src/ModMesh_Mapping.f90 +++ b/modules/nwtc-library/src/ModMesh_Mapping.f90 @@ -5761,7 +5761,7 @@ END SUBROUTINE WriteMappingTransferToFile !---------------------------------------------------------------------------------------------------------------------------------- ! Include the registry generated subroutines for mesh types -include "NWTC_Library_Subs.f90" +include "NWTC_Library_IncSubs.f90" !---------------------------------------------------------------------------------------------------------------------------------- END MODULE ModMesh_Mapping diff --git a/modules/nwtc-library/src/NWTC_Library_Subs.f90 b/modules/nwtc-library/src/NWTC_Library_IncSubs.f90 similarity index 100% rename from modules/nwtc-library/src/NWTC_Library_Subs.f90 rename to modules/nwtc-library/src/NWTC_Library_IncSubs.f90 diff --git a/modules/openfast-registry/src/main.cpp b/modules/openfast-registry/src/main.cpp index fd5005e89d..7f7250ae1b 100644 --- a/modules/openfast-registry/src/main.cpp +++ b/modules/openfast-registry/src/main.cpp @@ -13,7 +13,7 @@ Usage: openfast_registry registryfile [options] -or- -h this summary -I look for usefrom files in directory "dir" -O generate types files in directory "dir" - -subs generate only subroutines (to be included in another file) + -incsubs generate the pack/unpack/copy/destroy subroutines to be included in another file -noextrap do not generate ModName_Input_ExtrapInterp or ModName_Output_ExtrapInterp routines -D define symbol for conditional evaluation inside registry file -ccode generate additional code for interfacing with C/C++ @@ -86,9 +86,9 @@ int main(int argc, char *argv[]) reg.include_dirs.push_back(*it); } } - else if ((arg.compare("-subs")) == 0 || (arg.compare("/subs")) == 0) + else if ((arg.compare("-incsubs")) == 0 || (arg.compare("/incsubs")) == 0) { - reg.gen_subs = true; + reg.gen_inc_subs = true; } else if ((arg.compare("-template")) == 0 || (arg.compare("-registry")) == 0 || (arg.compare("/template")) == 0 || (arg.compare("/registry")) == 0) diff --git a/modules/openfast-registry/src/registry.hpp b/modules/openfast-registry/src/registry.hpp index 696f411c40..f615fb7a15 100644 --- a/modules/openfast-registry/src/registry.hpp +++ b/modules/openfast-registry/src/registry.hpp @@ -440,7 +440,7 @@ struct Registry std::map, ci_less> data_types; bool gen_c_code = false; bool no_extrap_interp = false; - bool gen_subs = false; + bool gen_inc_subs = false; Registry() { diff --git a/modules/openfast-registry/src/registry_gen_fortran.cpp b/modules/openfast-registry/src/registry_gen_fortran.cpp index 9a407c184d..221448dada 100644 --- a/modules/openfast-registry/src/registry_gen_fortran.cpp +++ b/modules/openfast-registry/src/registry_gen_fortran.cpp @@ -63,9 +63,9 @@ void Registry::gen_fortran_module(const Module &mod, const std::string &out_dir) { // Create file name and path auto file_name = mod.name + "_Types.f90"; - if (this->gen_subs) + if (this->gen_inc_subs) { - file_name = mod.name + "_Subs.f90"; + file_name = mod.name + "_IncSubs.f90"; } auto file_path = out_dir + "/" + file_name; std::cerr << "generating " << file_name << std::endl; @@ -81,7 +81,7 @@ void Registry::gen_fortran_module(const Module &mod, const std::string &out_dir) // If flag set to generate subroutines only (e.g. for inclusing in ModMesh_Mappings.f90) // write header, subs, and footer to file, then return - if (this->gen_subs) + if (this->gen_inc_subs) { w << std::regex_replace("!STARTOFREGISTRYGENERATEDFILE 'ModuleName_Subs.f90'\n", std::regex("ModuleName"), mod.name); w << "!\n! WARNING This file is generated automatically by the FAST registry.\n"; From bbcbf89cc3dada3ee09dcf7eacc464e05e3a0913 Mon Sep 17 00:00:00 2001 From: Derek Slaughter Date: Tue, 16 Jan 2024 19:24:00 +0000 Subject: [PATCH 10/10] Fix name of output file in generate_f90_types for Registry_NWTC_Library_mesh.txt and change custom target name --- modules/nwtc-library/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/nwtc-library/CMakeLists.txt b/modules/nwtc-library/CMakeLists.txt index bad52c35ee..de91776fea 100644 --- a/modules/nwtc-library/CMakeLists.txt +++ b/modules/nwtc-library/CMakeLists.txt @@ -16,7 +16,7 @@ if (GENERATE_TYPES) generate_f90_types(src/Registry_NWTC_Library_base.txt ${CMAKE_CURRENT_SOURCE_DIR}/src/NWTC_Library_Types.f90 -noextrap) - generate_f90_types(src/Registry_NWTC_Library_mesh.txt ${CMAKE_CURRENT_SOURCE_DIR}/src/NWTC_Library_Subs.f90 -incsubs -noextrap) + generate_f90_types(src/Registry_NWTC_Library_mesh.txt ${CMAKE_CURRENT_SOURCE_DIR}/src/NWTC_Library_IncSubs.f90 -incsubs -noextrap) # Generate Registry_NWTC_Library.txt by concatenating _base.txt and _mesh.txt set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS src/Registry_NWTC_Library_mesh.txt @@ -149,14 +149,14 @@ if (CMAKE_BUILD_TYPE MATCHES Debug) endif() endif() -add_custom_target(nwtc_library_subs DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/NWTC_Library_IncSubs.f90) +add_custom_target(nwtc_library_inc_subs DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/NWTC_Library_IncSubs.f90) # Create NWTC Library add_library(nwtclibs STATIC ${NWTC_SYS_FILE} ${NWTCLIBS_SOURCES} ) -add_dependencies(nwtclibs nwtc_library_subs) +add_dependencies(nwtclibs nwtc_library_inc_subs) target_link_libraries(nwtclibs PUBLIC ${LAPACK_LIBRARIES} ${CMAKE_DL_LIBS}