program main
    use TSFEMClass
    implicit none

    type(FEMDomain_) :: domain
    type(TSFEM_)     :: TSFEM

    call domain%create("Line1D",x_num=500)
    call domain%resize(x=50.0d0)
    call domain%vtk("Line1D")

    call TSFEM%init(femdomain=domain,density=2.50d0,YoungModulus=dble(1.0e+7),DOF=1)
    
    !call TSFEM%DirichletBoundary(NodeList=[1],direction="X")
    !call TSFEM%AbsorbingBoundary(NodeList=[1],spring=100000.0d0,damper=1.0d0,direction="X")
    call TSFEM%NeumannBoundary(NodeList=[domain%nn()],Force=dble(1.0e+3),direction="X")
    
    call TSFEM%Time(dt=dble(1.0e-4),t=0.0d0,timestep=0)

    do i_i=1,1200
        
        if(i_i>50)then
            call TSFEM%NeumannBoundary(NodeList=[domain%nn()],Force=0.0d0,direction="X")
        endif
        call TSFEM%update()
        call TSFEM%save(name="result")
    enddo

    call TSFEM%movie(name="result")
end program