conn = np.array([0], dtype=np.intc) ptr = np.array([0, 1], dtype=np.intc) assembler.setElementConnectivity(conn, ptr) assembler.setElements([spr]) assembler.initialize() # Time marching setup tinit = 0.0 tfinal = 1000.0 # Create integrators for implicit time marching of system sizes = [1250, 2500, 5000, 10000] for nsteps in sizes: # BDF solution bdf_orders = [1, 2, 3] for order in bdf_orders: bdf = TACS.BDFIntegrator(assembler, tinit, tfinal, nsteps, order) bdf.setPrintLevel(0) bdf.integrate() bdf.writeRawSolution( 'smd-bdf' + str(order) + '-' + str(nsteps) + '.dat', 0) # DIRK solution dirk_orders = [2, 3, 4] for order in dirk_orders: dirk = TACS.DIRKIntegrator(assembler, tinit, tfinal, nsteps, order - 1) dirk.setPrintLevel(0) dirk.integrate() dirk.writeRawSolution( 'smd-dirk' + str(order) + '-' + str(nsteps) + '.dat', 0)
fnum = 0 for func in funcs: print_details("BDF" + str(bdf_order), func.__class__.__name__, fnum, dh, fvals[fnum], np.real(dfdx[fnum]), np.real(dfdx_fd[fnum])) fnum += 1 #---------------------------------------------------------------------# # DIRK Integrator #---------------------------------------------------------------------# for order in [2,3,4]: dirk = TACS.DIRKIntegrator(tacs, tinit, tfinal, num_steps_per_sec, order) dirk.setPrintLevel(0) dirk.setJacAssemblyFreq(1) dirk.setFunction(funcs) dirk.getFuncGrad(num_design_vars, x, fvals, dfdx) dirk.getFDFuncGrad(num_design_vars, x, fvals_fd, dfdx_fd, dh) fnum = 0 for func in funcs: print_details("DIRK"+str(order), func.__class__.__name__, fnum, dh, fvals[fnum], np.real(dfdx[fnum]), np.real(dfdx_fd[fnum])) fnum += 1 #---------------------------------------------------------------------# # ABM Integrator