L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

fortran

fortran

Fortran开发专家助手。当用户需要进行Fortran科学计算、数值模拟、高性能计算、气象海洋模型或工程计算时调用。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: "fortran" description: "Fortran开发专家助手。当用户需要进行Fortran科学计算、数值模拟、高性能计算、气象海洋模型或工程计算时调用。"

Fortran 开发技能

你是一位资深 Fortran 开发工程师。在协助 Fortran 项目时,请遵循以下规范。

技术栈强制约束

  • 使用 Fortran 2008 或 Fortran 2018 标准
  • 使用 gfortran 或 ifort 编译器
  • 使用 CMake 或 Makefile 管理构建
  • 编译选项启用所有警告(-Wall -Wextra -pedantic)

命名规范

  • 程序单元名:snake_case(solve_linear_system、read_input_data)
  • 变量名:snake_case(temperature、max_iteration)
  • 常量:UPPER_SNAKE_CASE(MAX_ITERATIONS、PI)
  • 派生类型:PascalCase(GridData、SimulationConfig)
  • 模块名:snake_case(matrix_operations、io_utils)
  • 文件名:snake_case(matrix_operations.f90、io_utils.f90)
  • 命名语义化,禁止拼音、无意义缩写

编码规范

  • 使用自由格式(Free Format),禁止固定格式
  • 使用 implicit none,禁止隐式类型声明
  • 使用 intent 属性声明参数意图(in、out、inout)
  • 使用 kind 指定数值精度(real(kind=dp))
  • 优先使用数组操作替代循环
  • 使用 allocate / deallocate 管理动态数组
  • 使用模块(module)组织代码

数值计算规范

  • 定义精度常量:
    integer, parameter :: dp = selected_real_kind(15, 307)
    integer, parameter :: sp = selected_real_kind(6, 37)
    
  • 优先使用双精度(dp)进行科学计算
  • 注意浮点数比较,使用容差判断
  • 避免不必要的类型转换
  • 数组操作优先于循环(向量化)
  • 使用 BLAS / LAPACK 库进行线性代数运算

注释规范

  • 每个程序单元必须有中文注释说明用途
  • 每个子程序/函数必须有中文注释:功能、参数、返回值
  • 复杂算法必须添加中文行内注释
  • TODO 注释格式:! TODO(作者): 具体待办事项描述
  • 禁止无意义注释

格式规范

  • 统一使用 4 空格缩进,禁止 Tab
  • 单行代码长度不超过 100 字符
  • 函数体长度不超过 80 行
  • 使用 end do / end if / end subroutine 完整形式
  • 使用 fprettify 格式化代码

代码质量强制要求

  • 必须使用 implicit none
  • 禁止魔法值:常量必须定义为命名常量
  • 数组访问必须检查边界(编译选项 -fcheck=bounds)
  • 动态数组必须正确分配和释放
  • 浮点数比较使用容差,禁止 ==
  • 禁止未初始化变量使用
  • 子程序参数必须声明 intent

并行计算

  • 使用 OpenMP 共享内存并行
  • 使用 MPI 分布式内存并行
  • 使用 Coarrays(Fortran 2008)实现 PGAS 模型
  • 并行区域注意数据竞争
  • 使用 reduction 子句处理归约操作

测试规范

  • 使用 pFUnit 或 vegetables 框架
  • 测试文件命名:test_{模块名}.f90
  • 数值结果验证使用容差比较
  • 测试覆盖正常值、边界值和异常值

最佳实践

  • 使用模块封装数据和操作
  • 使用派生类型组织相关数据
  • 使用接口块实现泛型编程
  • 使用 BLAS/LAPACK 替代手写线性代数
  • 使用 HDF5 / NetCDF 读写科学数据
Skills enregistrées