gpt4 book ai didi

arrays - 定义派生类型数组

转载 作者:行者123 更新时间:2023-12-02 01:30:39 26 4
gpt4 key购买 nike

我正在尝试使用参数声明来初始化派生类型。编译时出现如下错误

Element in INTEGER(4) array constructor at (1) is CHARACTER(1).

用户定义的类型值 ipdp 可以在 fasst_global 中找到。它们是:

integer,parameter:: ip = selected_int_kind(8)
integer,parameter:: dp = selected_real_kind(15,307)

我曾尝试使用 1_ip 而不是 1 作为第一个元素,但没有任何区别。我做错了什么?

module fasst_derived_types
use fasst_global

implicit none

type fasst_default_soil
integer(ip):: sid
character(len=2):: ssname
real(dp):: dens,pors,ssemis,ssalb,shc,smin,smax,salpha,svgn
real(dp):: sspheat,sorgan,spsand,spsilt,spclay,spgravel
end type fasst_default_soil

type(fasst_default_soil),parameter:: fasst_soil(1) = fasst_default_soil( &

(/1, 'GW',1.947_dp,0.293_dp, 0.92_dp,0.40_dp,1.1197e-2_dp, &
0.01_dp,0.293_dp,22.6125_dp, 3.45_dp, 820.0_dp, &
0.0_dp, 5.0_dp, 2.0_dp, 2.0_dp,91.0_dp/))

end module fasst_derived_types

最佳答案

你试图在这里使用两个构造函数:

  • 一个数组构造函数;
  • 结构构造函数。

你对每一个都有正确的语法,但你没有正确使用它们。

数组构造器(/.../)就是构造一个数组。但是您需要一组派生类型值(好吧,一个值)而不是一个数组作为单个派生类型值的组件。语法错误来自于尝试创建具有各种不同/不兼容类型的数组。

所以,相反你想要

type(fasst_default_soil),parameter:: fasst_soil(1) = (/fasst_default_soil(1_ip,'GW', ...)/)

或者,由于您只需要一个元素数组,您甚至不需要构造该派生类型数组。

关于arrays - 定义派生类型数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34402630/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com