Reads from C81 file to C81 class
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(C81_class) | :: | this | ||||
character(len=*), | intent(in) | :: | C81filename |
subroutine readfile(this,C81filename)
!! Reads from C81 file to C81 class
class(C81_class) :: this
character(len=*), intent(in) :: C81filename
integer :: i, j
integer :: stat
character(len=10) :: formatChar
open(unit=10, file=C81filename, status='old', action='read', iostat=stat)
if (stat>0) error stop 'ERROR: File not found'
read(10,100) this%airfoilName,this%ML,this%NL,this%MD,this%ND,this%MM,this%NM
allocate(this%MaL(this%ML))
allocate(this%MaD(this%MD))
allocate(this%MaM(this%MM))
allocate(this%AL(this%NL))
allocate(this%AD(this%ND))
allocate(this%AM(this%NM))
allocate(this%CL(this%NL,this%ML))
allocate(this%CD(this%ND,this%MD))
allocate(this%CM(this%NM,this%MM))
! Lift
read(10,101) (this%MaL(i),i=1,min(9,this%ML))
if (this%ML>9) then
write(formatChar,'(A4,I1,A5)') '(7X,',this%ML-9,'F7.0)'
read(10,formatChar) (this%MaL(i),i=10,this%ML)
endif
do i=1,this%NL
read(10,102) this%AL(i), (this%CL(i,j),j=1,min(9,this%ML))
if (this%ML>9) read(10,formatChar) (this%CL(i,j),j=10,this%ML)
enddo
! Drag
read(10,101) (this%MaD(i),i=1,min(9,this%MD))
if (this%MD>9) then
write(formatChar,'(A4,I1,A5)') '(7X,',this%MD-9,'F7.0)'
read(10,formatChar) (this%MaD(i),i=10,this%MD)
endif
do i=1,this%ND
read(10,102) this%AD(i), (this%CD(i,j),j=1,min(9,this%MD))
if (this%MD>9) read(10,formatChar) (this%CD(i,j),j=10,this%MD)
enddo
! Moment
read(10,101) (this%MaM(i),i=1,min(9,this%MM))
if (this%MM>9) then
write(formatChar,'(A4,I1,A5)') '(7X,',this%MM-9,'F7.0)'
read(10,formatChar) (this%MaM(i),i=10,this%MM)
endif
do i=1,this%NM
read(10,102) this%AM(i), (this%CM(i,j),j=1,min(9,this%MM))
if (this%MM>9) read(10,formatChar) (this%CM(i,j),j=10,this%MM)
enddo
close(10)
100 format (A30,6I2)
101 format (7X,9F7.0)
102 format (10F7.0)
end subroutine readfile