program f90_NUMasnt !**************************************************************** !Optimization of node numbers for ASNT !**************************************************************** implicit none integer::i,j,k,l,ne character::strcom*50 !Comment integer::NODT !Number of nodes integer::NELT !Number of elements integer::MATEL !Number of material sets integer::KOZ !Number of restricted nodes in z-direction integer::KOR !Number of restricted nodes in r-direction integer::NF !Number of loaded nodes integer::nt !Total degrees of freedom integer::nod=4 !Number of node of 1 element integer::nhen=2 !Degrees of freedom of 1 node integer,allocatable::kakom(:,:) !Element connectivity integer,allocatable::matno(:) !Material set number real(8),allocatable::wm(:,:) !work for material properties real(8),allocatable::z(:) !x-coordinate of element real(8),allocatable::r(:) !y-coordinate of element real(8),allocatable::deltaT(:) !Temperature change of node (positive: temperature rise) integer,allocatable::nokz(:) !Restricted node number in x-direction integer,allocatable::nokr(:) !Restricted node number in y-direction real(8),allocatable::f(:) !External load vector real(8),allocatable::rdis(:) !Displacements of restricted node integer,allocatable::nfd(:) !Node number of loaded node integer,allocatable::numr(:) !Original node number integer,allocatable::jnd(:) !Revised node number integer::IPR !Flag for outout of stress character :: linebuf*1000 character::fnameR*50,fnameW*50 !Input file name, output file name call getarg(1,fnameR) !Input file name call getarg(2,fnameW) !Output file name !*************************** !data input !*************************** open(11,file=fnameR,status='old') read(11,'(a)') strcom read(11,*) NODT,NELT,MATEL,KOZ,KOR,NF,IPR nt=NODT*nhen allocate(kakom(1:NELT,1:nod)) allocate(matno(1:NELT)) allocate(wm(1:NELT,1:6)) allocate(z(1:NODT)) allocate(r(1:NODT)) allocate(deltaT(1:NODT)) allocate(nokz(1:KOZ)) allocate(nokr(1:KOR)) allocate(f(1:nt)) allocate(rdis(1:nt)) allocate(nfd(1:NF)) allocate(numr(1:NODT)) allocate(jnd(1:NODT)) !材料特性(Em,po,gamma,gkv,alpha,ts) do i=1,MATEL read(11,*) (wm(i,j),j=1,6) end do do ne=1,NELT read(11,*) (kakom(ne,j),j=1,nod),matno(ne) end do do i=1,NODT read(11,*) z(i),r(i),deltaT(i) end do do i=1,nt rdis(i)=0.0D0 end do if(0