程序代写代做代考 ShonCloud网站开发需求

ShonCloud网站开发需求

旺旺:wangxixjtu 时间:2017年2月15日

整体要求

代码精炼易懂,无冗余,对第三方代码依赖少。尽可能模块化设计,便于以后升级。

用户登录后的控制台界面是关键,要求是简约大方,有科技感。需要做前端的朋友提出一个大概的方案,双方沟通好后再开始制作。

网站是全英文的,但要提供多种语言接口,以后方便添加其他语言。

网站功能介绍

该网站是我们自主开发的一个C++数值并行计算软件shonDy的web界面,方便用户建模和管理算例,免去了安装、升级等烦恼,数值计算软件的运行是在服务器端。关于shonDy的介绍,可以访问http://www.shondynamics.com

这个web系统的主要功能是,用户通过网页界面的操作,例如新建项目,项目内添加模块或者节点,表单提交数据,文件上传等造作,最终在服务器端生成一个json文件。一个项目对应一个json文件和若干stl文件。用户登录后可以查看自己的每个项目。

需要的页面

主页,有个这种风格http://getbootstrap.com/的模板就行,内容可以留空,给用户留个注册和登录的链接。颜色与shonDy的logo搭配就行。

用户注册页面,需要收集用户的信息包括

Title
选项Mr. Ms. Dr. Prof.

First Name

Last Name

Email

Phone

Company/University

Description of your application field
文本框

其中邮件用于用户验证,无需手机验证。所有输入信息都需要前后端的校核,避免无效信息或安全问题。用户密码需要confirm。最后还要一个选框I agree to the Terms & Conditions.

3. 管理员系统

这个主要是对用户,及用户的项目进行管理。例如调整用户权限等。

4. 用户控制台Dashboard

这个是重点。用户登录后,左上方是logo预留,中间是卡片式切换Solver,一切换下面的整个项目列表全变成另外一套了。目前我们只有一个Solver,就是shonDy。这个切换只是为了将来OpenFOAM预留入口。右上方就是用户信息区,最好支持头像显示。下方是目前的已有项目及状态的列表,以及新建项目按钮。项目信息列表里也有一些按钮,包括一个没有画出来的下载按钮,就是把这个算例文件夹zip打包下载到浏览器端。

用户点击某个项目,或成功新建项目后,进入该项目的建模区域。用户新建项目,会弹出一个对话框,要求输入项目名称,并且有三种新建模式,一是新建空项目,二是加载一个项目模板(或者说别人的公开项目,这个功能可以等到二期再开展,目前留空即可),三是上传一个zip文件生产项目,这个zip文件包括json和stl文件。

建模区域分为三个frame,为了减少用户页面的切换和页面弹出。左边frame显示该项目名称,所有模块(名称与部分信息),以及添加模块,及子模块的按钮,当然模块也可删除。中间一栏,显示及编辑模块内的数据。最右边是一个3D显示区,可采用开源paraview web版,显示用户上传的stl文件,及计算生成的vtk文件。

模块信息:

固定模块解释

一级模块Control Data – 固定,必需,且唯一的模块

Parameter name
类型
默认值
单位
frame左
frame中

startTime
double
0
s
显示在模块里
都要显示可编辑

endTime
double
0.2
s
显示在模块里

deltaTime
double
0.0005
s
显示在模块里

writeInterval
double
0.1
s

particleRadius
double
0.01
m
显示在模块里

freeSurfacePressure
double
0
Pa

center
Vector3D,即(x,y,z)格式,xyz都是double
(0, 0, 0)
m

width
double
0
m

gravity
Vector3D,即(x,y,z)格式
(0, 0, -9.8)
m2/s

2DPlaneOffset
double
0
m

dimension
Vector3D,即(x,y,z)格式
(1, 0, 1)

这个table是要能扩展和修改的,因为我们还有些参数还在考虑是否需要让用户输入。所以需要成很精妙的函数或结构,也就是中frame里的表单是读前端里的某个结构体(也即是上面的表格),然后生成表单,结构体类似于上面的表格,可以增加新的参数,及修改或删除已有的参数。简单说,就是要做成灵活的。

其他可添加模块解释

一级模块Material Regions

这个模块在json文件中叫做particleRegions。该模块下面有4个以上的添加按钮,这里只列出4个,后期也要方便增加。所有添加按钮都可以多次添加。已添加的模块或子模块,也可以删除。

二级模块添加按钮名称
备注

solidWall
二级模块的添加按钮都在左侧一级模块下面。点击添加某按钮后,中frame填表,提交后,就出现一个用户给定名称的二级模块,该模块可删除,可在中frame里编辑。

isothermalFluid

thermalSolid

solidificationFluid

二级模块solidificationFluid

Parameter name
类型
默认值
单位
frame左
frame中

regionName
String
用户必须输入

内容显示在模块里

type
String
solidificationFluid固定值,只显示,不可输入和更改

内容显示在模块里

thermoProperties
Struct,可以理解为三级模块

仅名称显示在模块里,可以点击后在中frame修改
点击后其内容显示在中frame,可编辑

geometryDefinitionFiles
仅一个按钮

仅名称显示在模块里,可以点击后在中frame修改
点击后,显示浏览上传按钮,仅限提交stl文件。默认一个文件,用户可添加多个stl文件,文件名全称,作为一个string array进入json文件,文件本身存入服务器。

initialConditions
Struct,可以理解为三级模块
0.01

仅名称显示在模块里,可以点击后在中frame修改
点击后其内容显示在中frame,可编辑

三级模块thermoProperties

Parameter name
类型
默认值
单位
frame左
frame中

rho
double
1000
kg/m3
都不显示
都可显示编辑

speedOfSound
double
1500
m/s

surfaceTensionCoefficient
double
0
N/m

kinematicViscosity
double
0
m2/s

thermalConductivity
double
0
W/mK

heatCapacity
double
100
J/K

thermalExpansionCoefficient
double
0
1/K

referenceTemperature
double
300
K

volumeHeatSource
double
0
W/m3

latentHeat
double
100000
J/kg

liquidusTemperature
double
300
K

solidusTemperature
double
300
K

这个和前面的要求一样,就是要做成灵活的。

下面是这个thermalProperties对不同材料选择的支持,也就是不同的材料,不是所有的物性都需要让用户输入和生成到其json里。

Parameter name
solidWall
isothermalFluid
thermalSolid
solidificationFluid

rho



speedOfSound



surfaceTensionCoefficient

kinematicViscosity

thermalConductivity


heatCapacity


thermalExpansionCoefficient

referenceTemperature

volumeHeatSource


latentHeat

liquidusTemperature

solidusTemperature

三级模块initialCondition

Parameter name
类型
默认值
单位
frame左
frame中

temperature
double
300
K
不显示
显示,可修改

这个和前面的要求一样,就是要做成灵活的。

一级模块 inlets

初始只有个添加按钮,添加后可以显示添加的模块

Parameter name
类型
默认值
单位
frame左
frame中

inletName
String
0

内容显示在模块里
都要显示可编辑

fluidType
String
Optional: solidificationFluid或者isothermalFluid

内容显示在模块里

geomType
String
circle

geomNormalVector
Vector3D,即(x,y,z)格式,xyz都是double
(1, 0, 0)

geomCenterPoint
Vector3D,即(x,y,z)格式,xyz都是double
(0, 0, 0)
m

geomRadius
double
0.1
m

velocity
Vector3D,即(x,y,z)格式,xyz都是double
(0, 0, 0)
m/s

temperature
double
300
K

thermoProperties
Struct,可以理解为三级模块。

仅名称显示在模块里,可以点击后在中frame修改

一级模块 outlets

初始只有个添加按钮,添加后可以显示添加的模块

Parameter name
类型
默认值
单位
frame左
frame中

inletName
String
0

内容显示在模块里
都要显示可编辑

geomType
String
circle

geomNormalVector
Vector3D,即(x,y,z)格式,xyz都是double
(1, 0, 0)

geomCenterPoint
Vector3D,即(x,y,z)格式,xyz都是double
(0, 0, 0)
m

geomRadius
double
0.1
m

一级模块pointInVolumeProbes

初始也就是个添加按钮,添加后显示若干

Parameter name
类型
默认值
单位
frame左
frame中

ID
String+int
PS1, 自动生成,不可更改

内容显示在模块里
都要显示可编辑

position
Vector3D,即(x,y,z)格式,xyz都是double
(0, 0, 0)
m

一级模块lineProbes

初始也就是个添加按钮,添加后显示若干

Parameter name
类型
默认值
单位
frame左
frame中

ID
String+int
PS1, 自动生成,不可更改

内容显示在模块里
都要显示可编辑

startPoint
Vector3D,即(x,y,z)格式,xyz都是double
(0, 0, 0)
m

endPoint
Vector3D,即(x,y,z)格式,xyz都是double
(0, 0, 0)
m

参考效果,具体由前端设计,然后商议确定

还有几个模块例如rigidBody等,在这里没有列出,为了不给你们太大压力,其他模块留到二期项目里开发。但是一定要切记,不能作死了,要足够灵活,代码精炼高效。

数据库设计

用户的数据库在普通的基础上,增加以下

userType
免费用户,付费用户,企业用户

numCores
最大可使用的核数

maxCoreHours
最大的cpu计算时长乘核数

项目数据库,主要是项目创建时间,计算启动时间,粒子数(正整数),项目状态,计算结束时间,用户等,这个还需要设计。

后台计算

每个项目创建成功后,服务器端用户的文件夹下,会有一个json文件,以及若干stl文件,存储在striSurface文件夹下。然后可以通过前端控制,后台调用脚本文件启动或终止并行计算。