Load facet from ASCII file.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(facet_object), | intent(inout) | :: | self | Facet. |
||
| integer(kind=I4P), | intent(in) | :: | file_unit | File unit. |
subroutine load_from_file_ascii(self, file_unit)
!< Load facet from ASCII file.
class(facet_object), intent(inout) :: self !< Facet.
integer(I4P), intent(in) :: file_unit !< File unit.
call load_facet_record(prefix='facet normal', record=self%normal)
read(file_unit, *) ! outer loop
call load_facet_record(prefix='vertex', record=self%vertex_1)
call load_facet_record(prefix='vertex', record=self%vertex_2)
call load_facet_record(prefix='vertex', record=self%vertex_3)
read(file_unit, *) ! endloop
read(file_unit, *) ! endfacet
contains
subroutine load_facet_record(prefix, record)
!< Load a facet *record*, namely normal or vertex data.
character(*), intent(in) :: prefix !< Record prefix string.
type(vector_R8P), intent(out) :: record !< Record data.
character(FRLEN) :: facet_record !< Facet record string buffer.
integer(I4P) :: i !< Counter.
read(file_unit, '(A)') facet_record
i = index(string=facet_record, substring=prefix)
if (i>0) then
read(facet_record(i+len(prefix):), *) record%x, record%y, record%z
else
write(stderr, '(A)') 'error: impossible to read "'//prefix//'" from file unit "'//trim(str(file_unit))//'"!'
endif
endsubroutine load_facet_record
endsubroutine load_from_file_ascii