项目场景:
在开发地球系统模式时候遇到了fortran编译问题。
问题描述
fortran 编译的时候出现错误
---------------------------------------------^
/data/chengxl/cas-esm/models/atm/iap/src/physics/pbl_iap.F90(1553): error #6512: A scalar-valued expression is required in this context.
if(cp_ustar<12_r8)then
---------------------------^
/data/chengxl/cas-esm/models/atm/iap/src/physics/pbl_iap.F90(1556): error #6512: A scalar-valued expression is required in this context.
else if (cp_ustar >= 12 .and.cp_ustar <30 )then
----------------------------------------^
/data/chengxl/cas-esm/models/atm/iap/src/physics/pbl_iap.F90(1559): error #6512: A scalar-valued expression is required in this context.
else if (cp_ustar>=30) then
原因分析:
中文意思是:在此上下文中需要标量值表达式。
在fortran中不能对数组和常数之间对比大小的。
解决方案:
第一种方案就是写成标量,分别进行对比。
第二种方法是对数组进行更高级的运算。
写循环分别来对比就可以解决这个问题