找回密码
 注册
查看: 1609|回复: 3

[求助]版主和高手请看看:如何设置边界和初始条件。

[复制链接]
发表于 2005-4-14 22:57:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我现用非守恒形式的有限体积法计算浅水方程。底高程为:
b(x)=0.2-0.05(x-10)^2 当8<x<12时。其他时b(x)=0
初值为:
(1)给定入流单宽流量hu=1.53m/s。出流处z=h=0.4m
(2)给定入流单宽流量hu=0.18m/s。出流处z=h=0.33m
我的设置如下:但结果不对。其他部分没错
    subroutine boundary(u0,nx)
      implicit double precision (a-h,o-z)
      double precision u0(0:2,0:nx+1,3)
      
        h=0.4
        u=0.45
        u0(0,0,1)=h
         u0(0,0,2)=u
        h=0.33
        u=0.
        u0(0,nx+1,1)=h
        u0(0,nx+1,2)=u
        do l=1,2
          do m=1,2
            u0(l,0,m)=0.0
            u0(l,nx+1,m)=0.0
          enddo
        enddo  
      end
      
      subroutine initial(x,u0,nx,dx)
      implicit double precision (a-h,o-z)
      double precision u0(0:2,0:nx+1,3)
      double precision x(0:nx+1)
      
      xl=0
      xr=25.
      dx=(xr-xl)/nx
      do i=0,nx+1
        x(i)=i*dx
do  l=1,2
   if(x(i).ge.8.0.and.x(i).le.12.0) then
  u0(l,i,3)=0.2-0.05*(x(i)-10.0)**2
  else
  u0(l,i,3)=0.0
  endif
enddo
      enddo  
      do 10 i=0,nx+1  
        if(x(i).lt.10.0)then
  h=0.4
  u=0.45
  b=0.0
  else   
        h=0.33
  u=0
  b=0.0
  endif
        u0(0,i,1)=h
        u0(0,i,2)=u
  u0(0,i,3)=b
        do 10 l=1,2
          do 10 m=1,2
            u0(l,i,m)=0.0
   10   continue
      end
发表于 2005-4-16 21:29:04 | 显示全部楼层

[求助]版主和高手请看看:如何设置边界和初始条件。

[这个贴子最后由abcc在 2005/04/16 09:31pm 第 1 次编辑]

你的问题描述清楚了吗?我看了还不清楚具体是什么意思。
do l=1,2
         do m=1,2
           u0(l,0,m)=0.0
           u0(l,nx+1,m)=0.0
         enddo
       enddo
这段代码是什么意思?
发表于 2005-4-16 23:06:45 | 显示全部楼层

[求助]版主和高手请看看:如何设置边界和初始条件。

我看了及分钟,还是没有搞清楚问题
语句大致是对的
U(:,:,1),U(:,:,2),U(:,:,3) 分别指的是h,u,b??
x=0 是在入口处?
nx是x方向的网格数 ?
如果以上确是,那么程序均没问题
本人觉得把 子程序里的 两个do循环 前后调过来。
后面的do循环充掉了前面的do循环
 楼主| 发表于 2005-4-17 00:16:15 | 显示全部楼层

[求助]版主和高手请看看:如何设置边界和初始条件。

我的意思是在这种只给出了上游流量和下游水位的初值条件下,还要不要给出上游的水位和下游的流量,怎么给?!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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