myQuad = Quadrilateral(domainCorners) numElemU = 10 numElemV = 20 numGauss = 4 maxLevel = 3 phiRefThresh = 0.1 vertex = myQuad.genElemList(numElemU, numElemV) xPhys, yPhys, wgtsPhys = myQuad.getElemIntPts(vertex, numGauss) X_f = np.concatenate((xPhys, yPhys, wgtsPhys), axis=1) hist_f = np.transpose( np.array([np.zeros((X_f.shape[0]), dtype=np.float32)])) filename = 'Training_scatter' scatterPlot(X_f, figHeight, figWidth, filename) # Generating the prediction mesh nPred = np.array([[135, 45], [135, 45], [135, 45]]) offset = 2 * model['l'] secBound = np.array( [[0.0, 0.5 * model['W'] - offset], [0.5 * model['W'] - offset, 0.5 * model['W'] + offset], [0.5 * model['W'] + offset, model['W']]], dtype=np.float32) Grid, xGrid, yGrid, hist_grid = genGrid(nPred, model['L'], secBound) filename = 'Prediction_scatter' scatterPlot(Grid, figHeight, figWidth, filename) phi_pred_old = hist_grid #Initializing phi_pred_old to zero
numElemEdge = 80 numGaussEdge = 1 xEdge, yEdge, xNormEdge, yNormEdge, wgtsEdge = myAnnulus.getQuadEdgePts( numElemEdge, numGaussEdge, 4) trac_x = -model['P'] * xNormEdge trac_y = -model['P'] * yNormEdge xEdgePts = np.concatenate((xEdge, yEdge, wgtsEdge, trac_x, trac_y), axis=1) model_pts = dict() model_pts['X_int'] = X_f model_pts['X_bnd'] = xEdgePts modelNN = PINN_TC(model_data, xEdgePts, NN_param) filename = 'Training_scatter' scatterPlot(X_f, xEdgePts, figHeight, figWidth, filename) nPred = 40 withEdges = [1, 1, 1, 1] xGrid, yGrid = myAnnulus.getUnifIntPts(nPred, nPred, withEdges) Grid = np.concatenate((xGrid, yGrid), axis=1) num_train_its = 1000 numSteps = 4 # Number of refinement steps for i in range(numSteps): # Compute/training start_time = time.time() modelNN.train(X_f, num_train_its) elapsed = time.time() - start_time print('Training time: %.4f' % (elapsed))