Po përpiqem të analizoj një skedar hyrës Abaqus dhe të lexoj nyjet e dëshiruara në një grup. Së pari përpiqem të krahasoj një varg dhe nëse përputhet, atëherë dua të lexoj në një numër të panjohur vlerash të plota nga rreshti tjetër.
Një shembull i skedarit të tekstit është paraqitur më poshtë. Dua të lexoj vlerat nën nset=bf1:
** PARTS
*Part, name=Beam
*Nset, nset=bf1, instance=Beam-1
1, 2, 5, 43, 45, 48, 49, 50, 105, 106, 1189, 1190, 1191, 1192, 1193, 1194
5275, 5276, 5277, 5278
*Elset, elset=_Surf-3_SNEG, internal, instance=Beam-1
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
Ajo që po bëj tani është kjo
program nset_parser
implicit none
integer, parameter :: rk = selected_real_kind(10,40)
real(kind=rk), dimension(:), allocatable :: values
integer :: ios,l,val, n, nlines
character(len=80) :: file_name = 'code_check.inp'
character (len=*), parameter :: search_str = "bf1"
character(len=5096) :: input_line, line
character(len=10) :: keyword, get_keyword
logical :: h_nset=.false.
l = len(search_str)
open(unit=10, file=file_name, status="old", action='read') ! open file
do
read(10, '(a)',iostat=ios) input_line ! read the lines
if (ios /=0) exit
input_line = adjustl(input_line)
if (input_line(1:1) == '*' .and. input_line(2:2) /= '*') then ! check if it is a comment line or data line
keyword=get_keyword(input_line)
if (trim(keyword) == 'Nset') then
read(input_line,'(a)') line
val = index(line, search_str)
if (val /= 0) then
h_nset=.true.
print*, line(val:val+l-1)
end if
end if
end if
end do
close(10)
end program nset_parser
por pas kësaj jam disi i trullosur.
nset=bf1
. (2) Ka numra të plotë në rreshta të shumtë dhe kodi juaj lexohet vetëm në një rresht. 29.11.2020*Elset
. 29.11.2020