# SADFinal **Repository Path**: xiezhx9/sadfinal ## Basic Information - **Project Name**: SADFinal - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-07-12 - **Last Updated**: 2021-07-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目说明 本次项目主要是在其中作业给定的代码的基础上进行了一定的函数修改以及替代; 同时尝试按照UP的对应阶段,分析该源代码如果从头设计应该如何思考,并完成相关的设计工作和目标,例如手写完整案例,系统操作约束等;相比较设计工作而言,代码方面没有太多的投入,大部分都是沿用了之前的代码文件 同时项目文件要求的愿景也没有全部实现,当然如果包括期中代码的话还是达成了比较多的内容;同时结合gmsh工具以及之前的函数完成了一个比较小型但有趣的功能 ## 设计介绍 本次使用的工件,也就是`Development Case`,主要包括`Vision`,`Glossary`,`Fully dressed use cases`,`Use case diagrams`,`Domain Model`,`SSD`,`System Operation Contracts`具体设计内容参考[另一份文件:设计报告](./report.pdf) ## 代码介绍 `loadMesh`,整合了期中代码的一些步骤,将相关的内容内合成一个函数,直接调用就可以得到可用mesh结构 ```cpp void loadMesh(FILE* fp, int nnode, int ncell, int nedge, int nbedge,real* x, int* cell, int* edge, int* ecell,int * cell2edge,int* bedge, int* bound, int* becell); //后面的相关参数就是mesh结构分别的数据,包括起来就是整个mesh结构 ``` `MeshDefine`根据要求,希望可以直接在代码里操作mesh结构,所以加上这两条函数可以添加自定义的节点以及cell ```cpp int addNode(double x, double y, double* points, int * nnode); int addCell(int node1, int node2, int node3, int node4, int* cell, int * ncell, int * nnode); ``` `Parachute`通过简单处理生成的vtk文件坐标,修改z坐标值可以让图形变得不一样;只需要将源码中的`WriteMeshToVTKAscii`函数修改为对应的`Parachute`函数,生成的坐标就会有不同了,然后使用gmsh工具就可以查看新生成坐标文件对应图像 ```cpp void Parachute(const char* filename, double* nodeCoords_data, int nnode,\ int* cellsToNodes_data, int ncell, double *values_data); ``` 参考图片如下: ![](img/para.png)