Plate bending, Method of Weighted Residual (MWR), Debugging Trial Function Calculation Method & Free Boundary Condition
Chang LiuRemarks

Solving trial function calculation problem. Visually reasonable results achieved with reasonable / faster calculation time. (The problem is when changing symbolic expression to double numerical value, numbers are cut to 17 digits, which is not accurate enough and cause more trouble. The current solution is to change number of digits to 100 and results are more reasonable. The calculation time is longer then using 17 digits, but significantly faster than using null(sym), I would say >95% increase.)

Check free boundary conditions, using the new / faster residual calculation method.
 Stress implemented.
Details
Dec 21, 2020 (Monday)

Weird results coming out of trial function calculation. null() function may be misused.

Problem: \(null(A_{symbolic})\) is not the same as \(null(A_{double})\). \(null(A_{symbolic}) * A = 0\) and \(null(A_{double}) * A = 0\). \(null(A_{symbolic})\) takes longer time but gives visually correct results. \(null(A_{double})\) is faster but gives visually incorrect results. Technically, we are trying to solve an overdetermined linear system, which means there are more equations than variables.
 Could not find solutions to this problem today, will try tomorrow.
Dec 22, 2020 (Tuesday)

Well, following what's left from yesterday, I need to find out why \(null(A_{double})\) doesn't work. (Maybe this is not the problem. Maybe it's somewhere else.) We need to find a solution since \(null(A_{symbolic})\) takes forever to calculate when \(N>11\).

The first thing I am trying to do is to check trial function(s) gotten from using \(null(A_{double})\) and \(null(A_{symbolic})\). The trial function(s) should satisfy all boundary conditions at least.

\(null(A_{double})\) never gives visually correct answers; \(null(A_{symbolic})\) gives visually correct answers for certain polynomial order; \(null(A_{double}, 'r')\) gives somehow visually correct answers.
 After some (actually, a lot of) debugging and searching online. I notice the cause for these wrong results may due to the loss of accuracy when converting symbolic numbers to numerical numbers using double() function. double() function only saves 17 digits, which may not be enough. Here are the three method that I tried to calculate trial function coefficients:
%% Method I, this method takes the longest time, but the most actuate
[A, B] = equationsToMatrix(eqn_sum, a); % note: A and B are symbolic value. Acutally A is symbolic expression (with equations, not results).
coefficient_solution = A \ B + null(A);
coefficient_solution = double(coefficient_solution);
%% Method II, the fastest, but no visually correct results
[A, B] = equationsToMatrix(eqn_sum, a);
A = double(A); % note: this cut the number to ONLY 17 digits, accuracy decreases significantly.
B = double(B);
coefficient_solution = A \ B + null(A, 'r'); % note: low accuracy result.
%% Method III,
[A, B] = equationsToMatrix(eqn_sum, a);
digits(100); % note: change numerical/symbolic expression to 100 useful digits.
A = double(A);
A = vpa(A); % note: result in symbolic matrix.
B = double(B);
B = vpa(B);
coefficient_solution = A \ B + null(A); % note: faster calculation than method I, but slower then method II, good accuracy.
coefficient_solution = double(coefficient_solution);

Checking random 4 edges ploygon, different BC combinations: CSF, CCCC, CSFS,
 SSSS, SCSC, CCSS, CCFC, SSFC, SCFC.
Number of edges  Boundary conditions  Polynomial order  Method I time cost (sec)  Method III time cost (sec)  Time increase precentage 

4 (random)  CSFS  13  1300  7.3  99.44% 
4 (random)  CCSS  14    9   
Dec 23, 2020 (Wednesday)
 Keep checking more ploygon, different BC combinations: SSF, CFS, SCFC, SCCF
Number of edges  Boundary conditions  Polynomial order  Method I time cost (sec)  Method III time cost (sec)  Time increase precentage 

3 (random)  SSF  8  66.78  N/A  N/A 
3 (random)  SSF  9  220.82  6.14  97.22% 
3 (random)  SSF  10  370  5.5  98.51% 
3 (random)  CFS  9  197.36  3.97  97.98% 
3 (random)  CFS  10  371.21  5.88  98.41% 
3 (random)  CFS  11  605.40  7.6  98.74% 
4 (random)  SCFC  13    11.34   
4 (random)  SCFC  14    15.49   
4 (random)  SCFC  15    21.48   
4 (random)  SCCF  13    10.22   
4 (random)  SCCF  14    14.95   
4 (random)  SCCF  15  >7200  20.97   
4 (random)  SCCF  16    28.47   
4 (random)  SCFF  13    11.3   
4 (random)  SCFF  14    15.92   
4 (random)  SCFF  15    22.75   

After making sure the trial function calculation is correct, I will move on checking free BCs. So far, using the supposedtobe correct trial function calculation, some examples show visually correct free BC deformation.
 An interesting but frustrating thing is, using simplysupported BC and free edge BC, results looks normal (positive deformation); using clamped BC and free edge BC, results looks normal (positive deformation); but when using combined simplysupported, clamped and free edge BCs, the results look weird (negative deformation).
Dec 24, 2020 (Thursday)

Check free boundary conditions, using the new / faster residual calculation method.
 Add strain and stress calculation to the code. The strain and stress variables are illustrated in the following figure (I will keep modifying this figure / adding new variables.)
 For stress expressions as functions of deformation \(\omega_{(x, y)}\):
Normal stress:
\(\delta_{xx} =  \frac{E}{1  \nu^2} z \big( \frac{\partial ^2 \omega}{\partial x ^2} + \nu \frac{\partial ^2 \omega}{\partial y ^2} \big)\)
\(\delta_{yy} =  \frac{E}{1  \nu^2} z \big( \frac{\partial ^2 \omega}{\partial y ^2} + \nu \frac{\partial ^2 \omega}{\partial x ^2} \big)\)
Inplane shear stress:
\(\delta_{xy} =  \frac{E}{1  \nu^2} z \frac{\partial ^2 \omega}{\partial x \partial y}\)
Other shear stress
\(\delta_{zx} =  \frac{3 V_x}{2 t} \big( 1  \big( \frac{z}{t/2} \big)^2 \big)\)
\(\delta_{zy} =  \frac{3 V_y}{2 t} \big( 1  \big( \frac{z}{t/2} \big)^2 \big)\)
Dec 25, 2020 (Friday)
 Merry Christmas!!
ToDo List

Comparison of two plates.
 The current implement works for convex polygons, and concave polygons with concaves vertically, but not horizontally. For a simple example:
 ANSYS installation useful links:
https://uasatucla.org/docs/mechanical/tutorials/ansys_setup