#include <stdio.h> #include <math.h>

void FNRS(double FNR[][4], double FNS[][4]) { double A = 1.0 / sqrt(3.0); for (int JO = 0; JO < 4; JO++) { double R, S; if (JO == 0) { R = A; S = A; } else if (JO == 1) { R = -A; S = A; } else if (JO == 2) { R = -A; S = -A; } else { R = A; S = -A; } FNR[0][JO] = 0.25 * (1.0 + S) * (2.0 * R + S); FNR[1][JO] = 0.25 * (1.0 + S) * (2.0 * R - S); FNR[2][JO] = 0.25 * (1.0 - S) * (2.0 * R + S); FNR[3][JO] = 0.25 * (1.0 - S) * (2.0 * R - S); FNR[4][JO] = -R * (1.0 + S); FNR[5][JO] = -0.5 * (1.0 - S * S); FNR[6][JO] = -R * (1.0 - S); FNR[7][JO] = 0.5 * (1.0 - S * S); FNS[0][JO] = 0.25 * (1.0 + R) * (2.0 * S + R); FNS[1][JO] = 0.25 * (1.0 - R) * (2.0 * S - R); FNS[2][JO] = 0.25 * (1.0 - R) * (2.0 * S + R); FNS[3][JO] = 0.25 * (1.0 + R) * (2.0 * S - R); FNS[4][JO] = 0.5 * (1.0 - R * R); FNS[5][JO] = -S * (1.0 - R); FNS[6][JO] = -0.5 * (1.0 - R * R); FNS[7][JO] = -S * (1.0 + R); } }

int main() { double FNR[8][4], FNS[8][4]; FNRS(FNR, FNS); for (int i = 0; i < 8; i++) { for (int j = 0; j < 4; j++) { printf("%f ", FNR[i][j]); } printf("\n"); } for (int i = 0; i < 8; i++) { for (int j = 0; j < 4; j++) { printf("%f ", FNS[i][j]); } printf("\n"); } return 0;

转化为C语言 SUBROUTINE FNRSFNRFNS IMPLICIT REAL8A-HO-Z DIMENSION FNR84FNS84 A=10D0DSQRT30D0 DO 100 JO=14 IFJOEQ1 THEN R=A S=A ENDIF IFJOEQ2 THEN

原文地址: https://www.cveoy.top/t/topic/g9hE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录