Fortran Coder

查看: 285|回复: 10
打印 上一主题 下一主题

[求助] 有偿求助点云曲面拟合函数接口

[复制链接]

14

帖子

3

主题

0

精华

入门

F 币
65 元
贡献
34 点
跳转到指定楼层
楼主
发表于 2024-6-16 09:59:31 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
现有曲面点云数据(Xi,Yi,Zi),曲面范围很小(投影面Xi,Yi)是一个局部有限的连续空间曲面,想求助可以根据点云数据,确定曲面拟合的接口函数(如NURBS曲面),多项式最小二乘法拟合效果不太好(已经尝试过了),采用IMSL库自带的Surface_Fitting函数调用提示Compliation Aborted,估计是编译器不兼容,请问有没有朋友做过类似的接口或者有相关的经验,可以提供对应的接口或者函数不?跪谢了,有偿求助,不胜感激! 我的编译器版本是IVF2013,IMSL7.0,后者可以解决imsl调用的问题也可以。 如果愿意提供帮助的,麻烦您联系:

QQ: 50604800

有偿求助,跪谢!
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

14

帖子

3

主题

0

精华

入门

F 币
65 元
贡献
34 点
11#
 楼主| 发表于 2024-6-27 09:39:26 | 只看该作者
fcode 发表于 2024-6-20 19:01
Module 编译出来的 .mod 文件就像是C语言的头文件。
但是不同编译器编译出来的 .mod 格式有些不同。
可能 ...

感谢版主,您辛苦了!
可以再麻烦您帮我看看另外一个函数
Surface_Constraints的接口函数如何编写呢?自己写了很久,感觉都调用不成功,谢谢您!

1992

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1463 元
贡献
630 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

10#
发表于 2024-6-20 19:01:42 | 只看该作者
天马行空 发表于 2024-6-20 17:34
堂主好,我亲自试验了,真的可以解决这个问题啊,重新编译没有报错了,直接通过!
堂主太伟大了,顺便请教 ...

Module 编译出来的 .mod 文件就像是C语言的头文件。
但是不同编译器编译出来的 .mod 格式有些不同。
可能是 IMSL 用的编译器和 intel 现在的编译器有些区别,就导致直接使用IMSL官方的 .mod 文件出错。

重新封装一个 Module ,然后用现在的 intel 编译器编译出自己的 .mod 文件,就没问题了。
但这样编译出来的 .mod 文件,只能使用这两个函数,并不是完整的。
如果要使用别的函数,也需要再复原其他函数的接口才行。

原则上,IMSL应该像其他一些函数库一样,公布这种接口 module 的源代码,但似乎并没有。

14

帖子

3

主题

0

精华

入门

F 币
65 元
贡献
34 点
9#
 楼主| 发表于 2024-6-20 17:34:16 | 只看该作者
堂主好,我亲自试验了,真的可以解决这个问题啊,重新编译没有报错了,直接通过!
堂主太伟大了,顺便请教下:为什么封装一下就可以编译通过呢?这是啥原因呢?谢谢!

14

帖子

3

主题

0

精华

入门

F 币
65 元
贡献
34 点
8#
 楼主| 发表于 2024-6-20 16:02:56 | 只看该作者
fcode 发表于 2024-6-20 11:38
大概就像这样,我只复原了 D_SURFACE_FITTING 和 DV_SURFACE_VALUES 两个函数。没有写其他接口。
某些版本 ...

堂主太伟大了,谢谢啦,我试试看看能否解决问题。

1992

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1463 元
贡献
630 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

7#
发表于 2024-6-20 11:38:52 | 只看该作者
大概就像这样,我只复原了 D_SURFACE_FITTING 和 DV_SURFACE_VALUES 两个函数。没有写其他接口。
某些版本的IMSL可能是 D_SURFACE_VALUES 而不是 DV_SURFACE_VALUES。

[Fortran] 纯文本查看 复制代码
Module surface_fitting_int
  USE norm_int
  implicit none
  interface surface_fitting
    function D_SURFACE_FITTING(DATA,KNOTSX,KNOTSY,CONSTRAINTS,COVARIANCE,IOPT,epack)
      import
      implicit none
      type (d_spline_knots) :: knotsx, knotsy
      real(kind(1d0)) :: DATA(:,:)
      type (d_SURFACE_CONSTRAINTS) , optional :: CONSTRAINTS(:)
      real(kind(1d0)) , optional :: COVARIANCE(:,:)
      type (d_options) , optional :: iopt(:)
      type (d_error) , optional :: epack
      real(kind(1d0)) :: D_SURFACE_FITTING(size(KNOTSX%D_KNOTS)-KNOTSX%SPLINE_DEGREE-1,size(KNOTSY%D_KNOTS)-KNOTSY%SPLINE_DEGREE-1)
    end function D_SURFACE_FITTING    
  end interface surface_fitting

  interface SURFACE_VALUES    
    function DV_SURFACE_VALUES(DERIVATIVE, VARIABLESX, VARIABLESY, KNOTSX, KNOTSY, COEFFS)
      import
      implicit none
      integer :: DERIVATIVE(2)
      real(kind(1d0)) :: VARIABLESX(:), VARIABLESY(:)
      type (d_spline_knots) :: knotsx, knotsy
      real(kind(1d0)) :: COEFFS(:,:)
      real(kind(1d0)) :: DV_SURFACE_VALUES(size(VARIABLESX),size(VARIABLESY))
    end function DV_SURFACE_VALUES
  end interface SURFACE_VALUES

End Module surface_fitting_int



14

帖子

3

主题

0

精华

入门

F 币
65 元
贡献
34 点
6#
 楼主| 发表于 2024-6-19 22:59:38 | 只看该作者
fcode 发表于 2024-6-19 15:09
你可以试图根据帮助文档,自己写一个同名的 Module Surface_fitting_int。
只需要包含你需要调用的函数即可 ...

谢谢堂主,本人愚钝,不明深意,写一个同名的Module,但是接口无法调用,又如何能够实现呢?

1992

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1463 元
贡献
630 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

5#
发表于 2024-6-19 15:09:14 | 只看该作者
你可以试图根据帮助文档,自己写一个同名的 Module Surface_fitting_int。
只需要包含你需要调用的函数即可,只写函数接口,不写函数内部实现过程。

14

帖子

3

主题

0

精华

入门

F 币
65 元
贡献
34 点
地板
 楼主| 发表于 2024-6-19 14:23:53 | 只看该作者
谢谢坛主,Surface_Fitting.Mod的文件损坏了,还有其他的调用方式可以实现吗?谢谢。

1992

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1463 元
贡献
630 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

板凳
发表于 2024-6-19 10:41:20 | 只看该作者
这个应该是 IMSL 的问题。surface_fitting_int.mod 文件损坏了,找找官方吧。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-7-7 08:59

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表